# 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" ``` ## 身份认证 - 设置 `FLASK_SECRET_KEY` 保护会话 Cookie,同时通过 `LAWRISK_ADMIN_USERNAME` 和 `LAWRISK_ADMIN_PASSWORD` 注入首个管理员账号。 - 首次启动会自动创建 `auth_users` 表,用于存储用户名、哈希密码、角色(role)和级别(grade)。 - 登录页位于 `/fs-ai-asistant/lawrisk/login`,API 客户端可以调用 `/auth/me` 获取当前登录信息。 ## 数据备份与恢复 (Checkpoint) - 系统提供 Checkpoint 功能,可对数据库全表进行 JSON 序列化备份。 - 支持二进制数据(如 `bytes`, `memoryview`)的 Base64 自动转换,确保 Excel 原始文件等资产的完整备份。 - 管理员可通过管理后台 `/db_admin` 手动创建、列出或恢复检查点。 ## API文档 - **V1 API**: 查看 `docs/API.md` - **V2 API**: 查看 `docs/V2_API文档.md` - **数据库指南**: 查看 `docs/DB_GUIDE.md` ## 开发 ### 代码格式化 ```bash black . ruff . ``` ### 运行测试 (计划中) ```bash pytest ``` ## 许可证 内部使用