ai-legal-assistant/docs/plans/2026-05-01-ai-legal-assistant-design.md
root cc3f539067 docs: add AI legal assistant system design document
- Define system architecture with FastAPI + SQLite + sqlite-vss
- Design 5 core modules: laws, analyses, cases, contracts, signatures
- Specify API design, data models, and permission system
- Outline deployment and security strategies

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-01 03:17:51 +08:00

607 lines
21 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# AI 法律助手系统设计文档
**版本**: 1.0
**日期**: 2026-05-01
**作者**: AI 开发团队
---
## 1. 背景与目标
### 1.1 背景
法律服务行业正经历数字化转型传统法律工作模式存在效率低、知识管理困难、合同流程繁琐等问题。AI 技术的发展为法律工作自动化提供了可能。
### 1.2 目标
构建一个 AI 法律助手系统,提供以下核心能力:
- 法律法规智能检索与问答
- 深度法律研判分析
- 案件评审辅助
- 合同全生命周期管理
- 电子签名服务
### 1.3 成功标准
| 指标 | 目标值 |
|------|--------|
| 法律检索响应时间 | < 3 |
| 合同审查效率提升 | > 50% |
| 系统可用性 | > 99% |
| 单机支持并发用户 | 20 人 |
---
## 2. 范围与非范围
### 2.1 范围MVP
- 法律法规检索与智能问答
- 基础法律研判(法条引用、案例分析)
- 案件信息管理与评审记录
- 合同模板管理与在线编辑
- 电子签名(简化版,无 CA 证书)
- 用户权限管理
### 2.2 非范围(二期)
- 多租户支持
- 高可用集群部署
- 移动端 APP
- 对接国家法律法规数据库 API
- CA 证书集成
- 语音交互
---
## 3. 系统架构
### 3.1 整体架构
```
┌────────────────────────────────────────────────────────────────┐
│ 前端层 (Vue 3 SPA) │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌────────┐│
│ │ 法律检索 │ │ 法律研判 │ │ 案件评审 │ │ 合同管理 │ │电子签名││
│ └──────────┘ └──────────┘ └──────────┘ └──────────┘ └────────┘│
└────────────────────────────────────────────────────────────────┘
│ HTTP/WebSocket
┌────────────────────────────────────────────────────────────────┐
│ API 网关层 (FastAPI) │
│ ┌──────────────────────────────────────────────────────────┐ │
│ │ 认证中间件 │ 请求限流 │ 日志记录 │ 异常处理 │ │
│ └──────────────────────────────────────────────────────────┘ │
└────────────────────────────────────────────────────────────────┘
┌────────────────────────────────────────────────────────────────┐
│ 业务服务层 │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
│ │ 法律服务 │ │ 研判服务 │ │ 案件服务 │ │ 合同服务 │ │
│ └──────────┘ └──────────┘ └──────────┘ └──────────┘ │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
│ │ 签名服务 │ │ 用户服务 │ │ 文件服务 │ │
│ └──────────┘ └──────────┘ └──────────┘ │
└────────────────────────────────────────────────────────────────┘
┌────────────────────────────────────────────────────────────────┐
│ AI 能力层 │
│ ┌──────────────────────┐ ┌──────────────────────────────┐ │
│ │ LLM 服务 (外部 API) │ │ Embedding 服务 (外部 API) │ │
│ │ - 对话补全 │ │ - 文本向量化 │ │
│ │ - 法律问答 │ │ - 相似度检索 │ │
│ └──────────────────────┘ └──────────────────────────────┘ │
└────────────────────────────────────────────────────────────────┘
┌────────────────────────────────────────────────────────────────┐
│ 数据存储层 │
│ ┌──────────────────────┐ ┌──────────────────────────────┐ │
│ │ SQLite (关系数据) │ │ sqlite-vss (向量检索) │ │
│ │ - 用户/权限 │ │ - 法律法规向量 │ │
│ │ - 合同/案件 │ │ - 案例向量 │ │
│ │ - 签名记录 │ │ - 合同条款向量 │ │
│ └──────────────────────┘ └──────────────────────────────┘ │
│ ┌──────────────────────────────────────────────────────────┐ │
│ │ 文件存储 (本地文件系统) │ │
│ │ - 合同 PDF/Word │ │
│ │ - 签名文件 │ │
│ └──────────────────────────────────────────────────────────┘ │
└────────────────────────────────────────────────────────────────┘
```
### 3.2 技术栈
| 层级 | 技术选型 | 版本 | 说明 |
|------|----------|------|------|
| 前端 | Vue 3 + TypeScript + Vite | 3.4+ | SPA 单页应用 |
| UI 组件 | Element Plus | 2.5+ | 企业级 UI 组件库 |
| 后端框架 | FastAPI | 0.110+ | 高性能异步 Python 框架 |
| ORM | SQLAlchemy | 2.0+ | 异步 ORM 支持 |
| 数据库 | SQLite | 3.40+ | 关系型数据库 |
| 向量检索 | sqlite-vss | 0.1+ | SQLite 向量扩展 |
| LLM | OpenAI API 兼容接口 | - | 支持多厂商切换 |
| Embedding | text-embedding-3-small | - | 或国内等效模型 |
| 文件存储 | 本地文件系统 | - | 可选 MinIO |
| 容器化 | Docker + docker-compose | - | 一键部署 |
---
## 4. 核心模块设计
### 4.1 法律法规引擎
#### 4.1.1 功能描述
- 法律法规数据导入与管理
- 智能检索(关键词 + 语义相似度)
- 法条问答
#### 4.1.2 数据模型
```python
class Law(Base):
"""法律法规表"""
id: int # 主键
title: str # 标题
law_type: str # 类型:法律/法规/规章/司法解释
promulgation_date: date # 颁布日期
effective_date: date # 生效日期
status: str # 状态:有效/废止/修订
issuing_authority: str # 颁布机关
content: str # 全文内容
embedding: List[float] # 向量嵌入(存储在向量表)
created_at: datetime
updated_at: datetime
class LawArticle(Base):
"""法条表"""
id: int
law_id: int # 所属法律
article_number: str # 条号
content: str # 条款内容
embedding: List[float] # 向量嵌入
```
#### 4.1.3 检索流程
```
用户查询 → 文本向量化 → 向量相似度检索 → Top-K 法条 → LLM 生成回答
```
### 4.2 法律研判引擎
#### 4.2.1 功能描述
- 基于法条的法律分析
- 案例参考推荐
- 研判报告生成
#### 4.2.2 数据模型
```python
class LegalAnalysis(Base):
"""法律研判记录"""
id: int
user_id: int
title: str # 研判主题
case_description: str # 案情描述
legal_basis: JSON # 法律依据(法条列表)
analysis_content: str # 研判内容
conclusion: str # 结论
created_at: datetime
class Case(Base):
"""案例库"""
id: int
title: str # 案例标题
case_number: str # 案号
court: str # 审理法院
case_type: str # 案由类型
judgment_date: date # 判决日期
facts: str # 事实认定
judgment: str # 判决结果
reasoning: str # 裁判理由
embedding: List[float] # 向量嵌入
```
### 4.3 案件评审系统
#### 4.3.1 功能描述
- 案件信息管理
- 评审意见记录
- 评审流程跟踪
#### 4.3.2 数据模型
```python
class CaseReview(Base):
"""案件评审"""
id: int
case_id: int # 关联案例
reviewer_id: int # 评审人
review_type: str # 类型:初审/复审/终审
opinion: str # 评审意见
score: int # 评分(可选)
status: str # 状态:待审/通过/驳回
created_at: datetime
class CaseReviewFlow(Base):
"""评审流程"""
id: int
case_id: int
current_step: int # 当前步骤
total_steps: int # 总步骤
status: str # 流程状态
```
### 4.4 合同管理系统
#### 4.4.1 功能描述
- 合同模板管理
- 合同创建与编辑
- 合同审批流程
- 合同归档与检索
#### 4.4.2 数据模型
```python
class ContractTemplate(Base):
"""合同模板"""
id: int
name: str
contract_type: str # 合同类型
content: str # 模板内容(支持变量占位符)
variables: JSON # 变量定义
created_by: int
created_at: datetime
class Contract(Base):
"""合同"""
id: int
template_id: int # 模板来源
title: str
contract_number: str # 合同编号
party_a: str # 甲方
party_b: str # 乙方
content: str # 合同内容
status: str # 状态:草稿/审批中/已签署/已归档
effective_date: date
expiry_date: date
file_path: str # 文件存储路径
created_by: int
created_at: datetime
class ContractApproval(Base):
"""合同审批"""
id: int
contract_id: int
approver_id: int
status: str # 待审/通过/驳回
comment: str
approved_at: datetime
```
### 4.5 电子签名服务
#### 4.5.1 功能描述
- 签名请求创建
- 签名验证(简化版)
- 签名记录审计
#### 4.5.2 数据模型
```python
class SignatureRequest(Base):
"""签名请求"""
id: int
contract_id: int
requester_id: int # 发起人
signer_name: str # 签署人姓名
signer_email: str # 签署人邮箱
status: str # 待签/已签/已拒绝/已过期
token: str # 签名令牌(唯一)
expires_at: datetime # 过期时间
created_at: datetime
class Signature(Base):
"""签名记录"""
id: int
request_id: int
signer_name: str
signature_data: str # 签名数据Base64 图片或坐标)
ip_address: str # 签署 IP
user_agent: str # 浏览器信息
signed_at: datetime
verification_hash: str # 验证哈希(文档指纹)
class SignatureAudit(Base):
"""签名审计日志"""
id: int
signature_id: int
action: str # 动作类型
details: JSON
created_at: datetime
```
#### 4.5.3 签名流程
```
发起签名请求 → 生成签名令牌 → 发送邮件通知 → 签署人打开链接 →
绘制签名 → 计算文档哈希 → 保存签名记录 → 通知发起人
```
---
## 5. API 设计
### 5.1 RESTful API 规范
基础路径:`/api/v1`
认证方式JWT Bearer Token
### 5.2 核心 API 列表
#### 法律法规模块
| 方法 | 路径 | 描述 |
|------|------|------|
| GET | `/laws` | 法律法规列表 |
| POST | `/laws` | 创建法律法规 |
| GET | `/laws/{id}` | 获取详情 |
| POST | `/laws/search` | 智能检索 |
| POST | `/laws/qa` | 法律问答 |
#### 法律研判模块
| 方法 | 路径 | 描述 |
|------|------|------|
| POST | `/analyses` | 创建研判 |
| GET | `/analyses` | 研判列表 |
| GET | `/analyses/{id}` | 研判详情 |
| POST | `/analyses/generate` | AI 生成研判 |
#### 案件评审模块
| 方法 | 路径 | 描述 |
|------|------|------|
| GET | `/cases` | 案件列表 |
| POST | `/cases` | 创建案件 |
| POST | `/cases/{id}/reviews` | 提交评审 |
| GET | `/cases/{id}/reviews` | 评审记录 |
#### 合同管理模块
| 方法 | 路径 | 描述 |
|------|------|------|
| GET | `/contracts` | 合同列表 |
| POST | `/contracts` | 创建合同 |
| PUT | `/contracts/{id}` | 更新合同 |
| POST | `/contracts/{id}/submit` | 提交审批 |
| POST | `/contracts/{id}/approve` | 审批合同 |
#### 电子签名模块
| 方法 | 路径 | 描述 |
|------|------|------|
| POST | `/signatures/request` | 发起签名 |
| GET | `/signatures/{token}` | 获取签名页 |
| POST | `/signatures/{token}/sign` | 执行签名 |
| GET | `/signatures/{id}/verify` | 验证签名 |
---
## 6. 用户权限设计
### 6.1 角色定义
| 角色 | 权限范围 |
|------|----------|
| admin | 系统管理员,全部权限 |
| lawyer | 律师,法律法规检索、研判、案件评审、合同管理 |
| reviewer | 评审人,仅案件评审 |
| client | 客户,查看自己的合同、执行签名 |
### 6.2 权限矩阵
| 功能模块 | admin | lawyer | reviewer | client |
|----------|-------|--------|----------|--------|
| 用户管理 | ✓ | ✗ | ✗ | ✗ |
| 法律检索 | ✓ | ✓ | ✓ | ✗ |
| 法律研判 | ✓ | ✓ | ✗ | ✗ |
| 案件管理 | ✓ | ✓ | ✓ | ✗ |
| 合同管理 | ✓ | ✓ | ✗ | 查看 |
| 电子签名 | ✓ | ✓ | ✗ | ✓ |
---
## 7. 错误处理
### 7.1 错误码规范
| 错误码 | 含义 |
|--------|------|
| 10001 | 参数校验失败 |
| 10002 | 资源不存在 |
| 20001 | 认证失败 |
| 20002 | 权限不足 |
| 30001 | LLM 服务异常 |
| 30002 | 向量检索异常 |
| 40001 | 签名已过期 |
| 40002 | 签名已失效 |
### 7.2 统一响应格式
```json
{
"code": 0,
"message": "success",
"data": { ... }
}
```
错误响应:
```json
{
"code": 20001,
"message": "认证失败,请重新登录",
"data": null
}
```
---
## 8. 测试策略
### 8.1 单元测试
- 覆盖所有业务逻辑层
- 使用 pytest + pytest-asyncio
- Mock 外部 API 调用
- 目标覆盖率 > 80%
### 8.2 集成测试(二期)
- API 端到端测试
- 数据库集成测试
### 8.3 测试命令
```bash
# 运行所有单元测试
pytest tests/unit -v
# 运行覆盖率报告
pytest tests/unit --cov=app --cov-report=html
```
---
## 9. 部署架构
### 9.1 单机部署
```
┌─────────────────────────────────────┐
│ 物理机/虚拟机 │
│ ┌───────────────────────────────┐ │
│ │ Nginx (反向代理) │ │
│ │ :80/:443 │ │
│ └───────────────────────────────┘ │
│ │ │
│ ┌───────────────────────────────┐ │
│ │ FastAPI 应用 (Uvicorn) │ │
│ │ :8000 │ │
│ └───────────────────────────────┘ │
│ │ │
│ ┌───────────────────────────────┐ │
│ │ SQLite + 向量扩展 + 文件存储 │ │
│ └───────────────────────────────┘ │
└─────────────────────────────────────┘
```
### 9.2 Docker 部署
```yaml
# docker-compose.yml
version: '3.8'
services:
web:
build: .
ports:
- "8000:8000"
volumes:
- ./data:/app/data
- ./uploads:/app/uploads
environment:
- DATABASE_URL=sqlite:///./data/legal_assistant.db
- LLM_API_KEY=${LLM_API_KEY}
- LLM_API_BASE=${LLM_API_BASE}
- EMBEDDING_API_KEY=${EMBEDDING_API_KEY}
```
---
## 10. 安全设计
### 10.1 认证与授权
- JWT Token 认证,有效期 24 小时
- Refresh Token 有效期 7 天
- 敏感操作需要二次验证
### 10.2 数据安全
- 密码使用 bcrypt 加密存储
- 敏感配置通过环境变量注入
- 文件上传类型白名单限制
### 10.3 API 安全
- 请求频率限制(每分钟 60 次)
- SQL 注入防护ORM 参数化查询)
- XSS 防护(输入过滤 + 输出编码)
---
## 11. 目录结构
```
legal-assistant/
├── backend/ # 后端代码
│ ├── app/
│ │ ├── api/ # API 路由
│ │ │ ├── v1/
│ │ │ │ ├── laws.py
│ │ │ │ ├── analyses.py
│ │ │ │ ├── cases.py
│ │ │ │ ├── contracts.py
│ │ │ │ └── signatures.py
│ │ ├── models/ # 数据模型
│ │ ├── schemas/ # Pydantic 模型
│ │ ├── services/ # 业务逻辑
│ │ ├── core/ # 核心配置
│ │ │ ├── config.py
│ │ │ ├── security.py
│ │ │ └── database.py
│ │ └── main.py # 应用入口
│ ├── tests/ # 测试代码
│ │ └── unit/
│ ├── alembic/ # 数据库迁移
│ ├── requirements.txt
│ └── Dockerfile
├── frontend/ # 前端代码
│ ├── src/
│ │ ├── views/
│ │ ├── components/
│ │ ├── api/
│ │ ├── stores/
│ │ └── router/
│ ├── package.json
│ └── Dockerfile
├── docker-compose.yml
├── .env.example
└── README.md
```
---
## 12. 风险与缓解
| 风险 | 影响 | 缓解措施 |
|------|------|----------|
| LLM API 不可用 | 法律问答功能不可用 | 增加重试机制和降级策略(返回检索结果) |
| 向量检索性能 | 检索响应慢 | 数据量增大后考虑迁移到专业向量库 |
| 签名法律效力 | 用户误解 | 明确告知用户本系统签名不具备法律效力 |
| 数据丢失 | 业务中断 | 定期备份 SQLite 数据库文件 |
---
## 13. 里程碑
| 阶段 | 内容 | 预计时间 |
|------|------|----------|
| MVP | 核心功能实现 + 单元测试 | 2 周 |
| 二期 | 高级功能 + 性能优化 | 2 周 |
---
**设计文档完成,等待用户批准后进入实现计划阶段。**