Commit Graph

10 Commits

Author SHA1 Message Date
lacerate551
90b915232a fix(security): 代码审查安全加固 — 三批次修复(6H/13M/12L)
第一批(快速修复):
- H6: main.py --debug 默认值 True→False,防止 Werkzeug RCE
- M2+M3: /search 增加 validate_query + top_k 范围限制(1-50)
- M4: context_count 范围限制(0-10) + 异常捕获
- L3: assert → raise RuntimeError(生产环境 API Key 检查)
- H1: SSE 错误事件移除 traceback 字段

第二批(安全加固):
- H2+H3: 文档接口路径遍历 realpath 校验 + 文件类型/大小限制
- H4+H5: 批量上传文件大小检查
- M6: LIKE 查询通配符转义
- M1: 37 处 str(e) 异常信息统一脱敏(6 文件)
- M5: CORS 生产环境限制来源
- M7: SESSION_MANAGER None 保护(503)
- M11: subprocess 参数注入防护(白名单 + -- 分隔符)

第三批(架构改进):
- M8+M9: 提取 JSON 解析共享工具(extract_json_object/list)
- M10: Prompt 注入检测防御(prompt_guard.py)
- M12: 解析器文件大小限制(Excel 50MB/TXT 20MB/PDF 100MB)
- M13: 全局单例竞态条件双重检查锁定(engine/bm25/intent_analyzer)
2026-06-05 15:26:32 +08:00
lacerate551
a7206377cc fix(exam): 批阅端点增加 answers 类型校验,非数组返回 400 而非 500 2026-06-05 14:17:01 +08:00
lacerate551
6f863ddfd7 docs(exam): 出题批卷接口变更说明及文档同步
- 新增《出题批阅接口变更说明(2026-06-05)》面向后端的迁移指南
- 同步更新 curl测试手册 和 后端对接规范 中的出题批卷章节
2026-06-05 14:06:17 +08:00
lacerate551
3f1980ba78 feat(exam): 出题批卷 API 增强 — 格式统一、校验、跨调用去重
- grader: 多策略 JSON 提取 + 3 次重试 + prompt 优化,修复 LLM 输出不稳定问题
- grader: question_content → content 统一字段名,与出题接口一致
- api: 新增入参校验(题型枚举、difficulty、总题数上限 20、grade question_type)
- api/generator/manager: 新增 exclude_stems 参数,支持跨调用去重
2026-06-05 14:06:11 +08:00
lacerate551
b6631c626b fix(exam): 修复出题批卷 API 契约一致性问题
P0:
- 修复 V2 降级路径响应格式,fallback 输出经过 enrich + dedup + balance
- 补充主观题 format example,要求 LLM 生成 scoring_points 评分标准

P1:
- 补充多选题、判断题 format example,明确 answer 为列表格式
- 统一批卷响应格式,所有题型增加 grading_status 字段
- 出题数量不足时返回 requested_types/actual_types/warnings
- 修复 _call_llm 未配置时抛异常而非静默返回 0 分

P2:
- API 层增加 question_types 和 difficulty 入参校验
- 修复 generate_questions_from_content 方法名和参数类型 bug
2026-06-05 12:06:49 +08:00
lacerate551
42434781f7 chore(deploy): docker-compose 添加源码挂载和 env_file 配置
- 挂载源码目录到容器,支持 git pull + restart 热更新代码
- 添加 env_file 引用项目根目录 .env,解决环境变量缺失问题
- 添加 data/ 目录挂载(SQLite 数据库)
2026-06-05 11:31:44 +08:00
lacerate551
d67a8ff50b docs(fix): 修正引用跳转文档错误及修复 fix_image_paths 脚本
- 修正 preview 接口路径(去掉多余的 /api 前缀)
- 修正响应示例中 chunk id 格式(文件名_序号,非 UUID)
- 补充 preview 响应中 status、version 字段
- 明确前端引用匹配方式为 chunk_id 查找而非数组下标
- fix_image_paths.py 改为遍历知识库子目录,避免生成空 chroma.sqlite3
2026-06-05 11:24:44 +08:00
lacerate551
cb75b9b274 fix(boundary): 修复多库边界问题、版本管理及删除清理
多库检索与存储修复:
- RRF 融合去重改用 (collection, chunk_id) 复合键,修复同名文件结果被吞
- DocStore 存储路径加 collection 前缀,修复跨库同名切片数据覆盖
- search_multiple 去重改用复合键
- chunk_id 解析改用 rsplit 兼容下划线文件名

上传与版本管理修复:
- 同名文件上传改为覆盖模式,自动清理旧切片
- 修复首次上传不创建版本记录
- 修复覆盖上传版本号回退到 v1
- sync ADDED 分支改用动态版本号生成
- _generate_version_id 改为基于全部版本递增
- 废止/恢复操作同步 SQLite 版本记录
- mark_document_as_superseded 改为仅更新 SQLite

删除清理修复:
- 删除文档时同步清理 SQLite 版本记录和变更日志
- 删除向量库时同步清理该库所有版本记录
- cleanup 改为清理 SQLite 记录而非 ChromaDB

测试:
- test_version_management.py: 27 条版本管理单元测试
- test_edge_cases.py: 28 条边界用例测试
- test_upload_dedup.py: 5 条上传去重测试
- e2e_risk_test.py: 27 条端到端风险测试

文档:
- 新增风险边界问题修复注意事项.md(面向后端的对接文档)
- 新增向量库边界风险分析.md
- 更新多篇现有文档
2026-06-04 23:58:44 +08:00
lacerate551
a1a0814633 docs(readme): 更新 README 至 v7.0.0,反映云端 Reranker、Docker 部署、性能优化等当前状态 2026-06-04 17:45:56 +08:00
lacerate551
100d1a06eb init: RAG 知识库服务初始提交
- 后端 API(Flask + Gunicorn)
- RAG 引擎(混合检索 + 云端 Reranker + 引用溯源)
- 文档解析(MinerU + 多格式支持)
- Docker 生产部署配置
- 排除前端项目、敏感配置、模型文件
2026-06-04 17:35:27 +08:00