2025-10-29 15:31:01 +08:00
|
|
|
|
# LawRisk Backend
|
|
|
|
|
|
|
|
|
|
|
|
智能法律风险检索系统 - Flask后端服务
|
|
|
|
|
|
|
|
|
|
|
|
## 项目简介
|
|
|
|
|
|
|
|
|
|
|
|
LawRisk是一个基于Flask的Python后端服务,为政务许可和风险提示提供智能检索功能。使用向量嵌入和LLM匹配技术,帮助用户根据自然语言查询找到相关的许可证、执照和法律风险信息。
|
|
|
|
|
|
|
|
|
|
|
|
## 技术栈
|
|
|
|
|
|
|
|
|
|
|
|
- **框架**: Flask 2.3+
|
|
|
|
|
|
- **数据库**: PostgreSQL (pg8000驱动)
|
|
|
|
|
|
- **AI服务**: 阿里云DashScope
|
|
|
|
|
|
- 嵌入模型: text-embedding-v4
|
|
|
|
|
|
- 对话模型: qwen-plus-latest
|
|
|
|
|
|
- **开发工具**: Black, Ruff, Pytest
|
|
|
|
|
|
|
|
|
|
|
|
## 项目结构
|
|
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
市监局-lawRisk-backend/
|
|
|
|
|
|
├── app.py # Flask应用入口
|
|
|
|
|
|
├── requirements.txt # Python依赖
|
|
|
|
|
|
├── .env # 环境配置
|
|
|
|
|
|
│
|
|
|
|
|
|
├── lawrisk/ # 主应用包
|
|
|
|
|
|
│ ├── __init__.py
|
|
|
|
|
|
│ ├── api/ # API路由层
|
|
|
|
|
|
│ │ ├── v1.py # V1 API (legacy)
|
|
|
|
|
|
│ │ └── v2.py # V2 API (current)
|
|
|
|
|
|
│ ├── services/ # 业务逻辑层
|
|
|
|
|
|
│ │ ├── lawrisk_service.py # 核心检索服务
|
|
|
|
|
|
│ │ ├── lawrisk_v2_service.py # V2增强服务
|
|
|
|
|
|
│ │ └── licensing_repo.py # 数据仓库
|
|
|
|
|
|
│ ├── middleware/ # 中间件
|
|
|
|
|
|
│ │ └── smart_cors_middleware.py
|
|
|
|
|
|
│ └── utils/ # 工具模块
|
|
|
|
|
|
│ ├── env_loader.py
|
|
|
|
|
|
│ ├── export_risk_json.py
|
|
|
|
|
|
│ └── ingest_lawrisk.py
|
|
|
|
|
|
│
|
|
|
|
|
|
├── static/ # 静态资源
|
|
|
|
|
|
│ └── v2_tester.html # API测试页面
|
|
|
|
|
|
│
|
|
|
|
|
|
├── tests/ # 测试套件 (计划中)
|
|
|
|
|
|
│ └── __init__.py
|
|
|
|
|
|
│
|
|
|
|
|
|
├── data/ # 数据文件
|
|
|
|
|
|
│ ├── risk_tables_export.json
|
|
|
|
|
|
│ └── licensing_risks_dump.sql
|
|
|
|
|
|
│
|
|
|
|
|
|
└── docs/ # 项目文档
|
|
|
|
|
|
├── PRD.md
|
|
|
|
|
|
├── API.md
|
|
|
|
|
|
├── V2_API文档.md
|
|
|
|
|
|
├── AGENTS.md
|
|
|
|
|
|
├── DB_GUIDE.md
|
|
|
|
|
|
└── CLAUDE.md
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
## 快速开始
|
|
|
|
|
|
|
|
|
|
|
|
### 1. 安装依赖
|
|
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
|
pip install -r requirements.txt
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
### 2. 配置环境变量
|
|
|
|
|
|
|
|
|
|
|
|
复制`.env`文件并配置数据库和API密钥:
|
|
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
|
# 数据库配置
|
|
|
|
|
|
PG_HOST=your_db_host
|
|
|
|
|
|
PG_PORT=5432
|
|
|
|
|
|
PG_USER=postgres
|
|
|
|
|
|
PG_PASSWORD=your_password
|
|
|
|
|
|
PG_DATABASE=fs_law_risk
|
|
|
|
|
|
|
|
|
|
|
|
LIC_PG_HOST=your_db_host
|
|
|
|
|
|
LIC_PG_DATABASE=licensing_risks
|
|
|
|
|
|
|
|
|
|
|
|
# DashScope API
|
|
|
|
|
|
DASHSCOPE_API_KEY=your_api_key
|
|
|
|
|
|
DASHSCOPE_BASE_URL=https://dashscope.aliyuncs.com/compatible-mode/v1
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
### 3. 运行应用
|
|
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
|
python app.py
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
应用将在 http://localhost:8000 启动
|
|
|
|
|
|
|
|
|
|
|
|
### 4. 测试API
|
|
|
|
|
|
|
|
|
|
|
|
访问 http://localhost:8000/static/v2_tester.html 进行API测试
|
|
|
|
|
|
|
|
|
|
|
|
或使用curl:
|
|
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
|
curl http://localhost:8000/healthz
|
|
|
|
|
|
curl -X POST "http://localhost:8000/fs-ai-asistant/api/workflow/lawrisk/v2" \
|
|
|
|
|
|
-H "Content-Type: application/x-www-form-urlencoded" \
|
|
|
|
|
|
-d "query=我要办一家电影院&debug=1"
|
|
|
|
|
|
```
|
|
|
|
|
|
|
2025-11-17 15:07:14 +08:00
|
|
|
|
## 身份认证
|
|
|
|
|
|
|
2025-12-21 17:26:04 +08:00
|
|
|
|
- 设置 `FLASK_SECRET_KEY` 保护会话 Cookie,同时通过 `LAWRISK_ADMIN_USERNAME` 和 `LAWRISK_ADMIN_PASSWORD` 注入首个管理员账号。
|
2025-11-17 15:07:14 +08:00
|
|
|
|
- 首次启动会自动创建 `auth_users` 表,用于存储用户名、哈希密码、角色(role)和级别(grade)。
|
2025-12-21 17:26:04 +08:00
|
|
|
|
- 登录页位于 `/fs-ai-asistant/lawrisk/login`,API 客户端可以调用 `/auth/me` 获取当前登录信息。
|
|
|
|
|
|
|
|
|
|
|
|
## 数据备份与恢复 (Checkpoint)
|
|
|
|
|
|
|
|
|
|
|
|
- 系统提供 Checkpoint 功能,可对数据库全表进行 JSON 序列化备份。
|
|
|
|
|
|
- 支持二进制数据(如 `bytes`, `memoryview`)的 Base64 自动转换,确保 Excel 原始文件等资产的完整备份。
|
|
|
|
|
|
- 管理员可通过管理后台 `/db_admin` 手动创建、列出或恢复检查点。
|
2025-11-17 15:07:14 +08:00
|
|
|
|
|
2025-10-29 15:31:01 +08:00
|
|
|
|
## API文档
|
|
|
|
|
|
|
|
|
|
|
|
- **V1 API**: 查看 `docs/API.md`
|
|
|
|
|
|
- **V2 API**: 查看 `docs/V2_API文档.md`
|
|
|
|
|
|
- **数据库指南**: 查看 `docs/DB_GUIDE.md`
|
|
|
|
|
|
|
|
|
|
|
|
## 开发
|
|
|
|
|
|
|
|
|
|
|
|
### 代码格式化
|
|
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
|
black .
|
|
|
|
|
|
ruff .
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
### 运行测试 (计划中)
|
|
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
|
pytest
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
## 许可证
|
|
|
|
|
|
|
|
|
|
|
|
内部使用
|