# SmartContractGuard
**Repository Path**: hanzhi-code/smart-contract-sentinel
## Basic Information
- **Project Name**: SmartContractGuard
- **Description**: 一个专注于智能合同审查与风险控制的开源系统,提供自动化审查、风险评估与合规检测功能,助力企业高效管理合同风险。
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 1
- **Created**: 2026-03-26
- **Last Updated**: 2026-03-26
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# 智能法律助手系统
基于大语言模型和法律知识库的智能合同审查与法律咨询平台
[](https://vuejs.org/)
[](https://www.djangoproject.com/)
[](https://www.python.org/)
[](https://www.typescriptlang.org/)
[](LICENSE)
---
## 📖 目录
- [项目简介](#项目简介)
- [核心功能](#核心功能)
- [技术架构](#技术架构)
- [技术栈](#技术栈)
- [快速开始](#快速开始)
- [项目结构](#项目结构)
- [核心模块](#核心模块)
- [API文档](#api文档)
- [配置说明](#配置说明)
- [部署指南](#部署指南)
- [开发指南](#开发指南)
- [常见问题](#常见问题)
- [贡献指南](#贡献指南)
- [许可证](#许可证)
- [联系方式](#联系方式)
---
## 项目简介
智能法律助手系统是一款面向企业法务部门的智能化法律服务平台,利用大语言模型(LLM)和法律知识库技术,提供合同审查、法律咨询、知识管理等一站式解决方案。
### 背景与痛点
传统法务工作面临以下挑战:
- **效率低下**:人工审查一份合同需要数小时甚至数天
- **风险遗漏**:人工审查容易疏忽细节,导致法律风险
- **知识更新滞后**:法律法规频繁更新,难以实时掌握
- **成本高昂**:聘请专业法务团队成本巨大
- **标准不统一**:不同审查人员标准不一,质量参差不齐
### 解决方案
本项目通过AI技术赋能法律行业,实现:
- **智能化审查**:AI自动识别合同风险点,审查时间缩短至数分钟
- **精准化咨询**:基于法律知识库提供专业法律建议,确保有法可依
- **高效化流程**:自动化程度超过80%,大幅提升工作效率
- **标准化输出**:生成结构化审查报告,便于决策参考
- **知识化管理**:构建企业专属法律知识库,形成知识资产
---
## 核心功能
### 1. 👤 用户管理系统
- 用户注册/登录(邮箱验证码、账号密码)
- JWT Token认证
- 角色权限管理(管理员、法务总监、法务专员、业务人员、法律顾问)
- 登录日志记录
- 用户批量导入/导出
### 2. 📄 合同智能审查(核心)
- 支持PDF、Word、TXT等多种格式
- OCR文字识别(扫描件处理)
- **LangGraph工作流引擎**:
- 文本标准化 → 条款分片 → 并行审查 → 风险评估 → 结果聚合 → 报告生成
- 多维度风险评估(高/中/低风险)
- 风险点定位(页码、段落)
- 法律依据引用(RAG检索)
- 审查报告导出(PDF/JSON)
- 审查进度实时跟踪
### 3. 💬 AI法律对话
- 智能法律咨询
- 流式响应输出
- 引用法规功能
- 多轮对话支持
- 对话历史管理
- 文件上传分析
- 常用指令快捷操作
### 4. 📚 法律知识库
- 法律法规上传与管理
- 法规分类(合同、劳动、公司、知识产权、金融)
- **向量化存储**(Milvus向量数据库)
- 法规版本管理
- 条文级检索
- 智能语义搜索
### 5. 🔄 合同对比
- 两份合同差异对比
- 智能识别新增、删除、修改条款
- 差异可视化展示
- 相似度分析
### 6. 📋 合同模板库
- 标准合同模板库
- 模板分类管理
- 模板预览/下载
- 自定义模板创建
### 7. 📁 我的合同
- 合同版本管理
- 合同状态跟踪
- 历史审查记录
- 合同归档管理
### 8. ⚙️ 管理后台
- 用户管理
- 角色权限配置
- 系统设置
- 数据统计
---
## 技术架构
### 整体架构图
```
┌─────────────────────────────────────────────────────────────────┐
│ 表现层 (Presentation Layer) │
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
│ │ Web前端 │ │ 移动端H5 │ │ 管理后台 │ │
│ │ (Vue 3) │ │ (Vue 3) │ │ (Vue 3) │ │
│ └──────────────┘ └──────────────┘ └──────────────┘ │
└────────────────────────────┬────────────────────────────────────┘
│ HTTP/WebSocket
┌────────────────────────────┴────────────────────────────────────┐
│ 应用层 (Application Layer) │
│ ┌──────────────────────────────────────────────────────────┐ │
│ │ Django REST Framework API │ │
│ │ ┌────────┐ ┌────────┐ ┌────────┐ ┌────────┐ ┌────────┐ │ │
│ │ │ User │ │Contract│ │Analytics│ │Chat │ │Knowledge│ │ │
│ │ │ Module │ │ Module │ │ Module │ │ Module │ │ Module │ │ │
│ │ └────────┘ └────────┘ └────────┘ └────────┘ └────────┘ │ │
│ └──────────────────────────────────────────────────────────┘ │
└────────────────────────────┬────────────────────────────────────┘
│
┌────────────────────────────┴────────────────────────────────────┐
│ 业务逻辑层 (Business Layer) │
│ ┌──────────────────────────────────────────────────────────┐ │
│ │ LangGraph + LangChain 工作流引擎 │ │
│ │ ┌────────────┐ ┌────────────┐ ┌────────────┐ │ │
│ │ │ 合同审查 │ │ 智能对话 │ │ 风险分析 │ │ │
│ │ │ 工作流 │ │ Agent │ │ 引擎 │ │ │
│ │ └────────────┘ └────────────┘ └────────────┘ │ │
│ │ ┌────────────┐ ┌────────────┐ ┌────────────┐ │ │
│ │ │ RAG检索 │ │ 文档解析 │ │ 报告生成 │ │ │
│ │ │ 工具 │ │ 引擎 │ │ 引擎 │ │ │
│ │ └────────────┘ └────────────┘ └────────────┘ │ │
│ └──────────────────────────────────────────────────────────┘ │
└────────────────────────────┬────────────────────────────────────┘
│
┌────────────────────────────┴────────────────────────────────────┐
│ 数据层 (Data Layer) │
│ ┌────────────┐ ┌────────────┐ ┌────────────┐ │
│ │ MySQL │ │ Milvus │ │ 阿里云OSS │ │
│ │ 业务数据 │ │ 向量存储 │ │ 文件存储 │ │
│ └────────────┘ └────────────┘ └────────────┘ │
└─────────────────────────────────────────────────────────────────┘
```
### 核心技术亮点
#### 1. LangGraph工作流引擎
合同审查采用LangGraph工作流编排,实现复杂流程的可视化管理:
```
文本标准化 → 条款分片 → 并行审查 → 风险评估 → 结果聚合 → 报告生成
```
#### 2. RAG检索增强生成
结合向量检索和大语言模型,确保AI回答有法可依:
```
用户提问 → 向量检索 → 获取法律条文 → LLM生成回答 → 引用法律依据
```
#### 3. 多维度风险评估
从多个维度全面分析合同风险:
- 风险等级:高/中/低
- 风险位置:页码、段落
- 法律依据:相关法律条文
- 修改建议:针对性的修改建议
---
## 技术栈
### 前端技术栈
| 技术 | 版本 | 说明 |
|------|------|------|
| [Vue 3](https://vuejs.org/) | 3.5.x | 渐进式JavaScript框架 |
| [TypeScript](https://www.typescriptlang.org/) | 5.9.x | JavaScript超集 |
| [Element Plus](https://element-plus.org/) | 2.13.x | Vue 3组件库 |
| [Pinia](https://pinia.vuejs.org/) | 3.0.x | 状态管理 |
| [Vue Router](https://router.vuejs.org/) | 4.6.x | 路由管理 |
| [Vite](https://vitejs.dev/) | 7.3.x | 构建工具 |
| [Axios](https://axios-http.com/) | 1.13.x | HTTP客户端 |
| [PDF.js](https://mozilla.github.io/pdf.js/) | 5.4.x | PDF渲染 |
| [Markdown-it](https://github.com/markdown-it/markdown-it) | 14.1.x | Markdown解析 |
### 后端技术栈
| 技术 | 版本 | 说明 |
|------|------|------|
| [Django](https://www.djangoproject.com/) | 5.2.x | Python Web框架 |
| [Django REST Framework](https://www.django-rest-framework.org/) | 3.16.x | RESTful API框架 |
| [LangChain](https://python.langchain.com/) | 1.2.x | LLM应用框架 |
| [LangGraph](https://langchain-ai.github.io/langgraph/) | 1.0.x | 工作流编排引擎 |
| [MySQL](https://www.mysql.com/) | 8.0+ | 关系型数据库 |
| [Milvus](https://milvus.io/) | 2.3+ | 向量数据库 |
| [OpenAI/DeepSeek](https://www.deepseek.com/) | - | 大语言模型 |
| [Redis](https://redis.io/) | - | 缓存/消息队列 |
### AI/ML技术
| 技术 | 说明 |
|------|------|
| RAG (检索增强生成) | 结合检索和生成,确保回答准确 |
| Embeddings | 文本向量化,语义相似度计算 |
| Agent | 智能代理,工具调用与任务规划 |
| OCR | 光学字符识别,扫描件处理 |
---
## 快速开始
### 环境要求
- **Node.js**: >= 20.19.0 或 >= 22.12.0
- **Python**: >= 3.10
- **MySQL**: >= 8.0
- **Milvus**: >= 2.3
- **Redis**: >= 6.0(可选)
### 后端安装
1. **克隆项目**
```bash
git clone https://github.com/your-username/AgentProject.git
cd AgentProject
```
2. **创建虚拟环境**
```bash
cd backend
python -m venv venv
source venv/bin/activate # Linux/Mac
# 或
venv\Scripts\activate # Windows
```
3. **安装依赖**
```bash
pip install -r requirements.txt
```
4. **配置环境变量**
创建 `.env` 文件:
```env
# Django配置
SECRET_KEY=your-secret-key
DEBUG=True
# 数据库配置
MYSQL_DATABASE=MyAgentDB
MYSQL_USER=root
MYSQL_PASSWORD=your-password
# AI配置
DEEPSEEK_API_KEY=your-deepseek-api-key
OPENAI_API_KEY=your-openai-api-key
LLM_BASE_URL=https://api.deepseek.com
# OSS配置(可选)
OSS_ACCESS_KEY_ID=your-access-key-id
OSS_ACCESS_KEY_SECRET=your-access-key-secret
OSS_BUCKET_NAME=your-bucket-name
OSS_ENDPOINT=your-endpoint
# 邮箱配置(可选)
EMAIL_HOST=smtp.qq.com
EMAIL_PORT=587
EMAIL_HOST_USER=your-email@qq.com
EMAIL_HOST_PASSWORD=your-email-password
```
5. **数据库迁移**
```bash
python manage.py makemigrations
python manage.py migrate
```
6. **创建超级用户**
```bash
python manage.py createsuperuser
```
7. **启动后端服务**
```bash
python manage.py runserver 0.0.0.0:8000
```
### 前端安装
1. **进入前端目录**
```bash
cd frontend
```
2. **安装依赖**
```bash
npm install
```
3. **启动开发服务器**
```bash
npm run dev
```
4. **访问应用**
打开浏览器访问:http://localhost:5173
### 生产环境构建
```bash
npm run build
```
构建产物位于 `dist` 目录。
---
## 项目结构
```
AgentProject/
├── backend/ # 后端项目
│ ├── agent/ # Agent模块
│ ├── analytics/ # 分析模块(合同审查)
│ │ ├── models.py # 审查模型
│ │ ├── review_graph.py # LangGraph工作流
│ │ ├── views.py # 视图
│ │ └── urls.py # 路由
│ ├── backend/ # Django配置
│ │ ├── settings.py # 配置文件
│ │ ├── urls.py # 主路由
│ │ └── wsgi.py # WSGI配置
│ ├── chat/ # 对话模块
│ │ ├── chat_graph.py # 对话Agent
│ │ ├── models.py # 对话模型
│ │ └── views.py # 视图
│ ├── contract/ # 合同模块
│ │ ├── models.py # 合同模型
│ │ ├── views.py # 视图
│ │ └── permissions.py # 权限
│ ├── knowledge/ # 知识库模块
│ │ ├── models.py # 法规模型
│ │ └── views.py # 视图
│ ├── user/ # 用户模块
│ │ ├── models.py # 用户模型
│ │ ├── views.py # 视图
│ │ └── permissions.py # 权限
│ ├── tools/ # 工具
│ │ └── rag_tools.py # RAG检索工具
│ ├── utils/ # 工具类
│ │ ├── ragSetting/ # RAG配置
│ │ │ ├── embeddings.py # 向量化
│ │ │ └── vector_store.py # 向量存储
│ │ ├── OCR.py # OCR工具
│ │ └── pdf_processor.py # PDF处理
│ ├── manage.py # Django管理脚本
│ └── requirements.txt # Python依赖
│
├── frontend/ # 前端项目
│ ├── public/ # 静态资源
│ ├── src/
│ │ ├── assets/ # 资源文件
│ │ ├── components/ # 组件
│ │ ├── layout/ # 布局组件
│ │ ├── router/ # 路由配置
│ │ ├── stores/ # 状态管理
│ │ ├── utils/ # 工具函数
│ │ ├── views/ # 页面组件
│ │ │ ├── admin/ # 管理后台
│ │ │ ├── chat/ # AI对话
│ │ │ ├── contract/ # 合同审查
│ │ │ ├── contract-compare/ # 合同对比
│ │ │ ├── contract-template/ # 合同模板
│ │ │ ├── knowledge/ # 知识库
│ │ │ └── profile/ # 用户中心
│ │ ├── App.vue # 根组件
│ │ └── main.ts # 入口文件
│ ├── index.html # HTML模板
│ ├── package.json # Node依赖
│ ├── vite.config.ts # Vite配置
│ └── tsconfig.json # TypeScript配置
│
└── README.md # 项目说明文档
```
---
## 核心模块
### 1. 合同审查模块
**文件位置**: `backend/analytics/`
**核心文件**:
- `review_graph.py`: LangGraph工作流定义
- `models.py`: Review模型
- `views.py`: 审查API接口
**工作流程**:
```python
# 文本标准化
def normalize_text_node(state: ReviewState) -> dict:
# 标准化合同文本
pass
# 条款分片
def chunk_node(state: ReviewState) -> dict:
# 按条款分片
pass
# 并行审查
def review_node(state: ReviewState) -> dict:
# 并发审查各个条款
pass
# 结果聚合
def aggregate_node(state: ReviewState) -> dict:
# 汇总审查结果
pass
```
### 2. AI对话模块
**文件位置**: `backend/chat/`
**核心文件**:
- `chat_graph.py`: 对话Agent
- `models.py`: Conversation、Message模型
- `views.py`: 对话API接口
**核心功能**:
```python
# 流式对话
def stream_chat(state: dict):
# 流式生成回答
for chunk in llm.stream(messages):
yield content
# RAG检索
@tool
def rag_search(query: str, collection_name: str) -> str:
# 向量检索法律条文
return result
```
### 3. 知识库模块
**文件位置**: `backend/knowledge/`
**核心文件**:
- `models.py`: Law、LawVersion、LawArticle模型
- `views.py`: 法规API接口
**数据模型**:
```python
class Law(models.Model):
name = models.CharField(max_length=200) # 法规名称
category = models.CharField(max_length=50) # 分类
content = models.TextField() # 内容
collection_name = models.CharField(max_length=100) # 向量库名称
status = models.CharField(max_length=20) # 状态
class LawArticle(models.Model):
law = models.ForeignKey(Law)
article_no = models.CharField(max_length=50) # 条号
content = models.TextField() # 条文内容
is_vectorized = models.BooleanField() # 是否已向量化
```
---
## API文档
### 用户认证
| 接口 | 方法 | 说明 |
|------|------|------|
| `/api/auth/register/` | POST | 用户注册 |
| `/api/auth/login/` | POST | 用户登录 |
| `/api/auth/logout/` | POST | 用户登出 |
| `/api/auth/refresh/` | POST | 刷新Token |
| `/api/send_code/` | POST | 发送验证码 |
### 合同管理
| 接口 | 方法 | 说明 |
|------|------|------|
| `/api/contracts/` | GET/POST | 合同列表/创建 |
| `/api/contracts/{id}/` | GET/PUT/DELETE | 合同详情/更新/删除 |
| `/api/contracts/{id}/versions/` | GET | 合同版本列表 |
| `/api/contracts/{id}/review/` | POST | 发起审查 |
### 审查管理
| 接口 | 方法 | 说明 |
|------|------|------|
| `/api/analytics/reviews/` | GET | 审查记录列表 |
| `/api/analytics/reviews/{id}/` | GET | 审查详情 |
| `/api/analytics/reviews/{id}/progress/` | GET | 审查进度 |
| `/api/analytics/reviews/{id}/report/` | GET | 审查报告 |
### 对话管理
| 接口 | 方法 | 说明 |
|------|------|------|
| `/api/chat/conversations/` | GET/POST | 对话列表/创建 |
| `/api/chat/conversations/{id}/` | GET/DELETE | 对话详情/删除 |
| `/api/chat/stream/` | POST | 流式对话 |
| `/api/chat/messages/` | GET | 消息列表 |
### 知识库管理
| 接口 | 方法 | 说明 |
|------|------|------|
| `/api/knowledge/laws/` | GET/POST | 法规列表/上传 |
| `/api/knowledge/laws/{id}/` | GET | 法规详情 |
| `/api/knowledge/laws/{id}/articles/` | GET | 法规条文 |
---
## 配置说明
### 后端配置
**数据库配置** (`backend/backend/settings.py`):
```python
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': os.getenv("MYSQL_DATABASE"),
'USER': os.getenv("MYSQL_USER"),
'PASSWORD': os.getenv("MYSQL_PASSWORD"),
'HOST': '127.0.0.1',
'PORT': '3306',
}
}
```
**JWT配置**:
```python
SIMPLE_JWT = {
"ACCESS_TOKEN_LIFETIME": timedelta(days=7),
"REFRESH_TOKEN_LIFETIME": timedelta(days=7),
"AUTH_HEADER_TYPES": ("Bearer",),
}
```
**跨域配置**:
```python
CORS_ALLOW_ALL_ORIGINS = True # 开发环境
# 生产环境建议指定具体域名
CORS_ALLOWED_ORIGINS = [
"http://localhost:5173",
"https://your-domain.com",
]
```
### 前端配置
**API基础路径** (`frontend/src/utils/http-axios.ts`):
```typescript
const request = axios.create({
baseURL: 'http://localhost:8000/api',
timeout: 30000,
})
```
**路由配置** (`frontend/src/router/index.ts`):
```typescript
const router = createRouter({
history: createWebHistory(),
routes: [
// 路由配置
]
})
```
---
## 部署指南
### Docker部署(推荐)
1. **构建镜像**
```bash
# 后端
docker build -t legal-assistant-backend ./backend
# 前端
docker build -t legal-assistant-frontend ./frontend
```
2. **使用Docker Compose**
```yaml
version: '3.8'
services:
mysql:
image: mysql:8.0
environment:
MYSQL_ROOT_PASSWORD: root123
MYSQL_DATABASE: MyAgentDB
volumes:
- mysql_data:/var/lib/mysql
milvus:
image: milvusdb/milvus:latest
ports:
- "19530:19530"
backend:
image: legal-assistant-backend
ports:
- "8000:8000"
depends_on:
- mysql
- milvus
frontend:
image: legal-assistant-frontend
ports:
- "80:80"
depends_on:
- backend
volumes:
mysql_data:
```
3. **启动服务**
```bash
docker-compose up -d
```
### 传统部署
#### 后端部署
1. **安装依赖**
```bash
pip install -r requirements.txt
pip install gunicorn
```
2. **收集静态文件**
```bash
python manage.py collectstatic
```
3. **使用Gunicorn启动**
```bash
gunicorn backend.wsgi:application -w 4 -b 0.0.0.0:8000
```
#### 前端部署
1. **构建生产版本**
```bash
npm run build
```
2. **使用Nginx托管**
```nginx
server {
listen 80;
server_name your-domain.com;
location / {
root /path/to/dist;
try_files $uri $uri/ /index.html;
}
location /api {
proxy_pass http://localhost:8000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
```
---
## 开发指南
### 代码规范
**Python代码规范**:
- 遵循PEP 8规范
- 使用Black格式化代码
- 使用isort排序导入
**TypeScript代码规范**:
- 使用ESLint检查代码
- 使用Prettier格式化代码
- 遵循Vue官方风格指南
### Git提交规范
```
feat: 新功能
fix: 修复bug
docs: 文档更新
style: 代码格式调整
refactor: 代码重构
test: 测试相关
chore: 构建/工具相关
```
### 分支管理
```
main: 主分支(生产环境)
develop: 开发分支
feature/*: 功能分支
hotfix/*: 紧急修复分支
release/*: 发布分支
```
---
## 常见问题
### 1. 数据库连接失败
**问题**: `Can't connect to MySQL server`
**解决方案**:
- 检查MySQL服务是否启动
- 检查数据库配置是否正确
- 检查数据库用户权限
### 2. 向量数据库连接失败
**问题**: `Milvus connection failed`
**解决方案**:
- 确保Milvus服务已启动
- 检查Milvus连接配置
- 检查防火墙设置
### 3. AI模型调用失败
**问题**: `API request failed`
**解决方案**:
- 检查API Key是否正确
- 检查API配额是否充足
- 检查网络连接
### 4. 前端跨域问题
**问题**: `CORS policy error`
**解决方案**:
- 后端配置CORS允许的域名
- 开发环境使用代理
- 生产环境使用Nginx反向代理
### 5. 文件上传失败
**问题**: `File upload failed`
**解决方案**:
- 检查文件大小限制
- 检查文件格式是否支持
- 检查OSS配置(如使用)
---
## 贡献指南
我们欢迎所有形式的贡献!
### 如何贡献
1. Fork本项目
2. 创建功能分支 (`git checkout -b feature/AmazingFeature`)
3. 提交更改 (`git commit -m 'Add some AmazingFeature'`)
4. 推送到分支 (`git push origin feature/AmazingFeature`)
5. 提交Pull Request
### 贡献类型
- 🐛 Bug修复
- ✨ 新功能开发
- 📝 文档改进
- 🎨 UI/UX优化
- ⚡️ 性能优化
- 🔧 代码重构
---
## 许可证
本项目采用 [MIT License](LICENSE) 许可证。
---
## 联系方式
- **项目地址**: [GitHub](https://github.com/your-username/AgentProject)
- **问题反馈**: [Issues](https://github.com/your-username/AgentProject/issues)
- **邮箱**: your-email@example.com
---
## 致谢
感谢以下开源项目:
- [Vue.js](https://vuejs.org/)
- [Django](https://www.djangoproject.com/)
- [LangChain](https://python.langchain.com/)
- [LangGraph](https://langchain-ai.github.io/langgraph/)
- [Element Plus](https://element-plus.org/)
- [Milvus](https://milvus.io/)
---
**⭐ 如果这个项目对你有帮助,请给一个Star支持一下!⭐**
Made with ❤️ by Your Team