12 KiB
共同开发任务板
实名分工见 团队工作计划。每项任务仍须在 Gitea Issue 中补充预计完成时间、验收记录和关联合并请求。
| 编号 | 模块 | 任务 | 负责人 | 状态 |
|---|---|---|---|---|
| T01 | 前端 | 验证 Vue 页面启动、补充截图 | 吉海燕 | 进行中(生产构建已通过,待浏览器启动验证) |
| T02 | 后端 | 验证 FastAPI /docs、/api/health |
范涵宇 | 进行中(/api/health 已通过,待数据库就绪后验证完整启动和 /docs) |
| T03 | 数据库 | 启动 PostgreSQL 并验证知识入库 | 范涵宇 | 受阻(Docker Desktop/WSL 引擎尚未就绪) |
| T04 | 文档 | 明确接口字段、知识来源审核规则 | 杨星萱 | 待办 |
| T05 | 知识库 | 设计 sources/documents/chunks/version 表 | 范涵宇 | 待办 |
| T06 | 检索 | 实现关键词检索基线 | 范涵宇 | 待办 |
| T07 | 向量 | 评估 Embedding 并实现 pgvector | 范涵宇 | 待办 |
| T08 | RAG | 集成 LLM 与来源展示 | 范涵宇 | 待办 |
| T09 | 实验 | 构建可核验问题集及评分规范 | 杨星萱 | 待办 |
| T10 | 工程 | 补充测试、Alembic、鉴权与部署 | 范涵宇(主)、全员 | 待办 |
2026-10-15 首次联调记录
- 已创建本机
backend/.venv(Python 3.12)并安装后端依赖;该目录由 Git 忽略。 - 已安装前端依赖,
npm run build通过。构建中发现并修复了问答来源 URL 可为null时的 TypeScript 类型不一致。 - 已使用临时 Uvicorn 服务(关闭数据库生命周期初始化)验证
GET /api/health返回200和预期状态数据,验证后服务已关闭。 - 本机 Docker CLI 已安装,但 Docker Desktop 引擎无法启动,且 WSL 尚未处于可用状态。因此尚未执行 PostgreSQL 容器启动、知识条目新增/读取、默认生命周期启动和浏览器端联调。
- 后续操作:重启 Windows 后启动 Docker Desktop;确认
docker version能显示 Server 信息,再在项目根目录运行docker compose up -d db,随后继续 T02、T03 和 T01 的剩余验收。
2026-10-15 后端阶段 1–2 分支验收
分支:feat/backend-knowledge-management。以下为分支验收结果,须经既定审阅流程合入后再关闭任务;不覆盖前述其他环境的历史记录。
| 范围 | 已完成的验证 | 剩余事项 |
|---|---|---|
| T02 | 默认生命周期真实启动 Uvicorn;HTTP /docs、健康检查、数据库就绪检查通过 |
合并请求审阅、团队环境复核 |
| T03 | 真实 PostgreSQL 16 测试实例完成迁移、知识录入和读取;后端进程重启后数据仍可读取 | 当前主机 Docker 守护进程未运行,启动需管理员权限;Compose 容器与浏览器端联调待复核 |
| T05(阶段 2 范围) | 来源、文档、知识关联、版本、人工审核、软删除和历史快照;验证旧基础表迁移保留数据 | chunks 和索引版本留到检索阶段;字段与前端、资料负责人共同确认 |
| T10(部分) | Alembic 迁移、并发版本检查、PostgreSQL 自动化测试、启动说明 | 登录鉴权、限流、生产部署留到后续工程阶段 |
验证环境:Python 3.11;使用可选 pgserver 启动独立 PostgreSQL 16.2 测试实例并启用 pgvector。该方式用于验证 SQL 和接口,不等同于 Docker 容器验收。
实际命令与结果(在 backend/ 执行):
ruff check .:通过。ruff format --check .:通过。pytest -q:22 passed;依赖库产生一条 TestClient 弃用提示,不影响本轮用例。- 覆盖:新库迁移、已有基础表接管、重复升级、阶段 2 降级后基础正文保留、ORM 与迁移结构一致、审核前置条件、正文/来源/文档变更后重新审核、历史快照、软删除引用保护、筛选与分页、并发写入冲突、跨域预检、真实 HTTP 与服务重启持久化。
所有测试正文、来源和审核人均为占位数据,临时数据库不入库。当前问答仍是占位接口,未开展论文对照实验。Issue、合并请求和最终批准结论须补入 Gitea 后按团队规则归档。
2026-10-15 合并后续开发:关键词检索基线
- 阶段 2 后端功能已通过普通功能分支的 PR #4 合入
dev(合并提交4d437ca),包含测试客户端依赖修正。旧 AGit PR #2 仍打开,不作为该批功能是否已合入的唯一判据。 - 从最新
dev创建feat/backend-keyword-retrieval,推进 T06 的独立关键词接口与检索记录。T05 的持久化切分/索引版本、T07 的模型评估和向量检索仍待后续实现。 - 当前主机 Docker 服务仍未运行;本轮继续使用隔离 PostgreSQL 做接口与迁移测试,不把容器或浏览器端联调标记为完成。独立任务 Issue 仍须补齐。
- 新增检索接口、中文分词和 BM25 基线、有效审核筛选、原文片段、来源与版本、语料指纹及检索历史;前端调用层同步类型与接口,页面接入由前端继续联调。
- 分支验证:
ruff check .、ruff format --check .、pytest -q;本轮 42 项 PostgreSQL/单元/真实 HTTP 测试通过,覆盖手算分数、标题权重、排序复现、审核边界、来源失效、容量拒绝、迁移兼容和服务重启后的检索历史。前端npm run build通过,包含新增检索调用类型的检查。全部使用占位资料,不是论文实验结果。
2026-10-16 Issue #5:认证与角色权限
- 按继续开发的授权,在
feat/backend-auth-sessions推进 T10 的认证部分;叠加 PR #6(8ac9dca),不等待其合并,不自行批准或合并。PR #6 与本分支分别保持可追踪记录。 - 实现注册、登录、退出、当前会话、本人资料修改、改密及管理员用户列表;注册拒绝角色字段,知识/来源/文档管理及检索历史均由服务端要求 admin。
- 新增
0004_auth_sessions,保存 Argon2id 密码哈希、会话摘要与到期/凭据版本、共享认证请求预算;不预置用户,提供本机隐藏密码输入的管理员初始化命令。迁移和回滚保留知识及检索记录。 - 默认 Secure/HttpOnly/SameSite Cookie;写操作校验明确 Origin 及当前会话 CSRF。改密使所有旧会话失效,退出持久化撤销;参数错误不回显密码。字段、来源、CSRF 和前端交接见 认证接口契约。
- 实际验证:
ruff check .、ruff format --check .通过;pytest -q70 passed,包含认证、授权、CSRF、输入越权、过期/轮换/撤销、限额、迁移及既有知识/检索回归;真实 HTTP 服务重启验证会话恢复和退出后不再有效。前端npm run build通过。 - 当前仍使用隔离 PostgreSQL 做自动化验证;Docker 容器、前端登录/角色页面及真实浏览器端流程仍待验收。远程 main 的注册原型最低密码提示需要按本契约同步到 15 字符,并接入带 Cookie/CSRF 的调用层。没有宣称已完成前端集成或生产部署。
2026-10-16 T05:持久化 chunks 与索引版本
- 分支
feat/backend-chunk-index-versions叠加待审 PR #7(f9827fe),继承 #6;不等待合并继续后端阶段,同时保留各 PR 的审阅记录。 - 新增
0005_chunk_indexes:版本、原文切分及出处、发布状态单例、逐次发布记录。构建 ready 快照与发布分开,保留字符偏移、内容哈希、知识/来源/文档版本和语料指纹。 - 知识、来源、文档写入与构建/发布共用数据库行锁;目录修订与实际语料指纹一起决定当前性,旧构建/旧代数拒绝发布。构建或发布失败完整回滚,旧发布指针及历史不丢失。
- 管理接口统一要求 admin 与写入 CSRF;前端只同步类型和调用层,页面仍待联调。现有关键词基线行为不变,向量、ANN、RRF 与 RAG 未在本阶段实现。
- 实际验证:
ruff check .、ruff format --check .通过;pytest -q91 passed(隔离 PostgreSQL 16 + pgvector),包含真实锁竞争、失败构建/发布的数据库约束回滚、迁移保留账号/知识/检索记录、原文重建与来源快照、真实 HTTP 重启后的发布指针和 chunks 持久化。修正了发布时间在 UTC 与数据库时区之间表示不一致的问题,索引接口统一 UTC 输出。前端npm run build通过。 - 完整请求/响应、切分/容量、失效策略及回滚说明见 INDEX_API.md。本阶段仍是有限语料的同步文本快照;Docker/浏览器验收、独立 T05 Issue 补建及后续 Embedding 方案选择仍有待完成。
2026-10-16 T07:本地 Embedding 与资源评估
-
用户选择先评估本地开源模型与本机资源;从最新
dev独立创建feat/backend-local-embedding-evaluation,不依赖仍待审的 #6/#7/#8。 -
实现不在普通启动流程加载模型的 Provider、固定 revision 与空间身份、维度/有限数/L2 校验、真实 token 上限拒绝及独立 CPU 评估 CLI。可选依赖和模型缓存与默认后端环境分开。
-
固定 BGE small/base 中文模型,CPU 线程 2、batch 8、各输入形状预热一次后重复 5 次。单查询中位数分别 8.927/52.912 ms,独立进程峰值 RSS 531.2/865.5 MiB;两者实际运行、向量校验与超限拒绝通过。
-
项目资料台账目前只有占位行,本轮采用事先固定的 12 文本/10 问题合成样本,仅验证流程。small 的合成 Hit@1/Recall@3/MRR@3 为 0.90,base 为 1.00;不是实际文旅质量或论文结论,保留 small 的错误案例,不据此冻结正式默认模型。
-
固定配置、完整指标定义、输入哈希、复现命令和限制见 本地模型评估。原始运行报告、权重、虚拟环境只保存在本机 Git 元数据目录,不入库。
-
向量数据库/空间隔离、索引构建、向量/RRF 检索、真实已核验问题集和浏览器/部署验收仍待后续推进;本轮没有把这些标记为完成。
-
本独立分支实际验证:
ruff check .、ruff format --check .通过;pytest -q49 passed,包含当前 dev 的 PostgreSQL/HTTP 基线与新增轻量契约/指标用例。small/base 另由独立模型环境真实执行;可选依赖在新建空环境中完成 CPU wheel 安装与后续依赖解析验证。先前 #7/#8 的 70/91 项结果属于各自分支,不混同为本独立分支的测试计数。
2026-10-16 T07:向量存储与精确检索集成
- 新分支
feat/backend-vector-retrieval组合待审 #8 与 #9,继承 #7/#6,不等待合并、不覆盖其分支。已保留双方全部阶段文档,依赖组合基线为bd0b738,本阶段差异从其后查看。 - 新增
0006_vectors:固定空间、向量版本、chunk 向量、向量状态与发布历史;复合外键限定文本版本/空间/维度,数据库检查实际维度及单位范数。迁移/降级保留目录、文本 chunks/发布、账号和检索日志。 - 仅对当前有效的文本发布构建完整向量快照。加载/编码不占目录发布锁,完成后重新核对审核指纹、修订、文本代数和 chunks;模型/token/数据库/竞争失败均不留下半成品。向量发布有独立乐观代数和历史,过期资料拒绝用于当前查询。
- 增加管理员构建/发布/空间/历史接口、公开精确余弦检索、keyword/vector 历史判别联合和前端类型调用层。运行离线优先、默认关闭、延迟加载,单进程编码忙时立即 503;最多 2000 chunks,不静默截断 token 或语料。
- 实际验证:常规
pytest -q153 passed, 1 skipped;该 skip 是须显式启用的真实模型用例,另在独立 CPU 环境执行并 1 passed。真实固定 small 完成 HTTP 构建/发布、512 维 pgvector 入库、检索与后端进程重启后的指针/结果/历史一致。轻量测试使用坐标 fixture 验证 SQL、同宽/不同宽空间、版本竞争、锁外推理、失败回滚、权限和迁移,不冒充实际模型评测。ruff check、ruff format --check与前端npm run build通过。 - 完整字段与运行/回滚步骤见 VECTOR_API.md。RRF、ANN、RAG、真实已核验领域问题集、Docker 容器与前端浏览器验收仍待后续推进,本轮不把合成文字测试当作领域质量结论。