10 KiB
阶段 1 详细开发计划:环境联调与需求冻结
计划周期:2026 年 10 月 16 日—10 月 18 日
阶段目标:让团队三人都能按 README 启动项目,并完成“前端 → API → PostgreSQL”的一次真实知识条目持久化闭环。
本阶段不实现 Embedding、向量检索、RAG、联网搜索或真实大模型调用。
1. 阶段完成标准
全部满足才可将阶段 1 标记为完成:
- Docker Desktop 引擎正常,
docker version同时显示 Client 和 Server;nalati-postgres容器健康运行。 - 后端可通过默认生命周期启动,
http://127.0.0.1:8000/docs可访问,GET /api/health返回 200。 POST /api/knowledge新增一条测试知识,GET /api/knowledge能读取该条目;重启后端后数据仍存在。- 前端
npm run build通过,http://localhost:5173可访问,页面显示 API 已连接。 - 在浏览器完成“新增知识 → 保存 → 列表刷新 → 重新打开页面仍存在”的完整流程。
- 三人分别在 Gitea Issue 中留下命令、结果、截图或日志位置;未提交真实密钥、真实密码和未授权资料。
2. 当前基线与阻塞
| 项目 | 当前状态 | 负责人 | 下一步 |
|---|---|---|---|
Git 仓库、main、dev |
已准备 | 全员 | 每次工作从最新 dev 拉分支 |
| 前端依赖与生产构建 | 已通过 | 吉海燕 | 启动 Vite,做浏览器端验收 |
| 后端虚拟环境与依赖 | 已准备 | 范涵宇 | 数据库就绪后按默认生命周期启动 |
/api/health 路由 |
已验证 | 范涵宇 | 数据库就绪后复验默认启动 |
| Docker Desktop/WSL | 受阻 | 范涵宇 | 在管理员 PowerShell 完成 WSL 前置、重启后启动 Docker Desktop |
| 资料台账、审核规则 | 待创建 | 杨星萱 | 建立模板并明确状态含义 |
Docker/WSL 未恢复前,可以完成前端构建、资料模板和文档工作;不得把数据库、新增知识持久化或“API 已连接”写成已通过。
3. 每日安排
10 月 16 日:环境恢复与单服务启动
| 成员 | 必做工作 | 交付物 | 验收证据 |
|---|---|---|---|
| 范涵宇 | 处理 Docker Desktop/WSL;启动 PostgreSQL;检查后端 .env 和 Python 环境 |
运行中的数据库容器、后端启动记录 | docker compose ps、docker logs nalati-postgres、后端启动日志 |
| 吉海燕 | 从 dev 拉前端分支;执行依赖安装、构建和 Vite 启动;检查四个页面切换 |
前端启动记录、四页初始截图 | npm run build 输出、浏览器截图 |
| 杨星萱 | 建立资料台账字段和审核规则;建立联调验收记录模板 | 台账模板、审核规则、验收记录模板 | 文档提交与 Issue 链接 |
10 月 17 日:API 与浏览器端持久化闭环
| 成员 | 必做工作 | 交付物 | 验收证据 |
|---|---|---|---|
| 范涵宇 | 复验 /docs、健康检查、知识新增/读取;记录 API 请求和响应 |
T02/T03 验收记录 | 201 创建响应、列表读取响应、数据库容器日志 |
| 吉海燕 | 按后端真实 Schema 调用新增与列表 API;处理加载、保存失败、API 未连接状态 | 前端联调截图或缺陷清单 | 新增后列表可见、刷新后仍存在的截图 |
| 杨星萱 | 用非敏感测试资料完成一条待审核知识的登记;核对前端字段是否满足资料追溯需要 | 测试条目内容、字段反馈 | 测试条目 ID、字段核对记录 |
10 月 18 日:复现验收、问题冻结与交接
| 成员 | 必做工作 | 交付物 | 验收证据 |
|---|---|---|---|
| 范涵宇 | 重启后端或容器后复验数据;汇总未解决环境/接口问题 | 后端验收结论、遗留问题列表 | 重启后 GET /api/knowledge 结果 |
| 吉海燕 | 在干净浏览器会话复验问答页、知识管理页和错误状态;整理可用于软著的阶段截图 | 前端验收结论、截图清单 | 浏览器操作步骤和截图 |
| 杨星萱 | 汇总资料台账、审核规则与测试记录;确认阶段 2 所需字段和资料数量 | 阶段 2 知识收集清单 | Issue 中的验收记录与待办 |
4. 范涵宇执行清单:后端、数据库
4.1 Docker 与 PostgreSQL
在管理员完成 WSL/重启后,先执行:
cd E:\边疆红驿\border-red-post-nalati-ready
docker version
docker compose up -d db
docker compose ps
docker logs nalati-postgres
通过条件:docker version 存在 Server 信息;docker compose ps 显示 nalati-postgres 运行且健康检查通过。若失败,只在 T03 Issue 记录完整错误,不删除 Docker 卷或重置数据。
4.2 后端启动与接口验证
cd E:\边疆红驿\border-red-post-nalati-ready\backend
if (-not (Test-Path .env)) { Copy-Item .env.example .env }
.\.venv\Scripts\Activate.ps1
uvicorn app.main:app --reload
另开 PowerShell 验证:
Invoke-RestMethod http://127.0.0.1:8000/api/health
Invoke-RestMethod http://127.0.0.1:8000/api/knowledge
$body = @{ title = '阶段1联调测试条目'; category = '其他'; content = '仅用于验证知识新增与持久化,不是正式事实资料。' } | ConvertTo-Json
Invoke-RestMethod http://127.0.0.1:8000/api/knowledge -Method Post -ContentType 'application/json' -Body $body
通过条件:健康检查返回 status: ok;新增请求返回 201;列表能看到返回的 ID 和标题。将测试条目保留并标注为测试,不作为正式检索资料。
4.3 给前端的交接内容
在 T02/T03 Issue 粘贴以下内容后再通知吉海燕联调:
- 后端地址、启动命令和
/docs地址; - 最终确认的知识条目请求/响应 JSON;
- 可用的
verification_status状态值; - 当前已知限制与错误响应格式。
5. 吉海燕执行清单:前端与浏览器联调
5.1 拉取、构建与启动
cd E:\边疆红驿\border-red-post-nalati-ready
git switch dev
git pull --ff-only origin dev
git switch -c feat/frontend-phase1-validation
cd frontend
npm ci
npm run build
npm run dev
通过条件:构建命令退出码为 0;Vite 显示本地访问地址;浏览器可打开四个导航页。
5.2 浏览器检查顺序
- 打开
http://localhost:5173,检查顶部/侧边导航能切换“智能问答、知识库管理、来源与更新、实验评估”。 - 后端未启动时,确认界面显示“API 未连接”或明确错误提示;不要修改前端来伪造连接成功。
- 后端启动后刷新页面,确认状态变为“API 已连接”。
- 在“知识库管理”点击“新增知识”,填写后端给出的测试条目,保存并确认列表出现该条目。
- 刷新浏览器页面,确认条目仍然存在;记录浏览器、时间和截图。
- 在“智能问答”发送一个测试问题,确认基础占位回答或后端错误能在页面被清楚展示,不白屏、不无限加载。
5.3 前端缺陷处理边界
- 请求、响应类型和错误信息统一维护在
frontend/src/api.ts;页面中不复制fetch逻辑。 - 只按范涵宇确认的 API 字段改动;发现字段不一致时开 Issue,不在前端猜测字段或拼接数据库连接。
- 每个修复独立提交,提交信息如
fix: handle knowledge api error;合并请求附构建结果与前后截图。 - 当前阶段不实现检索模式选择、LLM 配置、真实实验图表或自动抓取来源,它们属于后续阶段。
6. 杨星萱执行清单:资料、审核与验收记录
6.1 资料台账字段
在 docs/ 下的个人工作分支建立台账模板(Markdown、CSV 或学校统一表格均可),每条候选资料至少填写:
| 字段 | 要求 |
|---|---|
| 标题、类别 | 可识别且分类明确,如红色文化、旅游资源、民宿服务、交通出行 |
| 来源名称、URL | 可回访来源;无 URL 时注明线下材料出处 |
| 获取日期、更新时间 | 使用 YYYY-MM-DD |
| 正文摘要 | 保留原意,不编造无法核实的具体事实 |
| 核验状态 | pending、verified 或 rejected |
| 核验依据、核验人、核验日期 | 说明为什么可以使用或拒绝使用 |
6.2 审核与测试资料规则
pending:已收集但未完成核验;可用于界面演示,不得进入正式检索。verified:来源可定位、信息完整且已人工核验;可交给范涵宇入库。rejected:来源不明、过期、重复或不可靠;保留记录但不入库。- 阶段 1 的测试条目必须写明“测试”,不得伪装为那拉提真实资料。
6.3 联调验收记录
每次测试至少记录:测试日期、测试人、Git 提交、运行环境、操作步骤、预期结果、实际结果、截图/日志、结论和待处理问题。阶段 1 最少记录一次“知识新增—读取—页面刷新”测试。
7. Issue、提交与审阅顺序
| 任务 | 建议分支 | 提交/合并目标 | 审阅与批准 |
|---|---|---|---|
| T01 前端启动与浏览器验收 | feat/frontend-phase1-validation |
合并请求 → dev |
吉海燕提交;Codex 审阅并明确回复“批准合并”后由吉海燕合并 |
| T02 健康检查与后端启动 | feat/backend-phase1-api-validation |
合并请求 → dev |
范涵宇提交;吉海燕审阅批准后合并 |
| T03 Docker 与知识持久化 | feat/backend-phase1-database |
合并请求 → dev |
范涵宇提交;吉海燕审阅批准后合并 |
| T04 审核规则与验收模板 | docs/phase1-knowledge-governance |
合并请求 → dev |
杨星萱提交;吉海燕审阅批准后合并 |
阶段 1 的 dev → main 合并请求只能在本文件第 1 节全部满足后创建,由吉海燕发起并确认。若 Docker/WSL 仍受阻,保留阶段状态为“进行中”,先记录阻塞和恢复动作,不跳过持久化验收。
8. 阶段结束交接包
阶段 1 结束时,三人共同整理以下内容到 Issue 或 docs/:
- 经过验证的启动命令与版本信息;
- 前端四页和知识新增闭环截图;
- API 请求/响应样例与已知限制;
- 测试资料与正式资料的区分说明;
- 未解决问题清单、负责人和预计恢复日期;
- 阶段 2 可直接开始的接口字段与资料台账模板。