feat(server): Web 服务化(FastAPI + SQLite + 内嵌零构建前端)
参赛成果物 03「交互界面 + 数据存储」落地:
- src/genesis/server/: store.py(SQLite 会话持久化)、service.py(会话化服务层:
上传→解析→确认→影响→确认→生成→QA)、app.py(api-design §2 核心端点 9 组)、
static/index.html(内嵌单页,零构建无 node_modules 依赖)
- scripts/serve.py 启动入口(--fake 离线引擎 / 默认真实 LLM)
- pyproject 加 fastapi/uvicorn/python-multipart
- 修复 qa_loop._build meta={} 导致真实模板 {{doc_title}} 等占位符残留 DocxInjectError
- README Web 服务说明 + service_url 登记指引;design.md §12.5 记录(含同步执行/
zip 既有系统/无 WebSocket 的诚实偏差标注)
- 测试:test_server_store/service/api 共 34 用例(TestClient 全链路 + zip 影响流程 + 错误分支)
全量 pytest 473 passed / 99.20%
This commit is contained in:
@@ -123,6 +123,27 @@ python scripts/run_trial.py `
|
||||
**中文场景注意**:若规则文档(作成说明书/记入规则)仍为日文,`auto` 推导会倾向日文——请显式
|
||||
`--output-language zh`,不要依赖 auto。
|
||||
|
||||
## Web 服务(交互界面,成果物 03)
|
||||
|
||||
Genesis 提供 **FastAPI Web 服务 + 内嵌零构建前端**(上传 → 解析确认 → 影响确认 → 生成 → QA → 预览/下载),
|
||||
会话/文件/结果持久化到 SQLite(`data/server/`)。
|
||||
|
||||
```powershell
|
||||
# 离线 Fake 引擎(无需 API key,适合演示)
|
||||
python scripts/serve.py --fake
|
||||
|
||||
# 真实 LLM 模式(需 .env 配置 GENESIS_INFERENCE__API_KEY)
|
||||
python scripts/serve.py
|
||||
```
|
||||
|
||||
- 访问 `http://127.0.0.1:8000/` 使用页面;API 文档 `http://127.0.0.1:8000/docs`
|
||||
- 主要端点:`POST /api/sessions`、`POST /api/sessions/{id}/files`(multipart)、
|
||||
`POST .../start-parse`、`POST .../confirm-parse`、`POST .../start-impact`、`POST .../confirm-impact`、
|
||||
`POST .../generate`(body `{"output_language":"auto|zh|ja"}`)、`POST .../run-qa`、
|
||||
`GET .../result/preview|download|impact-report|qa-report`
|
||||
- **既有系统**以 `.zip` 上传(追加/改修场景);不传则影响调查跳过
|
||||
- 部署到公网后登记 `service_url`(格式 `http://<域名或公网IP>:<端口>`)供评审系统 B 阶段黑盒冒烟
|
||||
|
||||
## 测试
|
||||
|
||||
```powershell
|
||||
|
||||
Reference in New Issue
Block a user