# 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 周 | --- **设计文档完成,等待用户批准后进入实现计划阶段。**