Files
RAG/docs/06-frontend-demo-runbook.md
YoVinchen c3bad0f186
Some checks failed
verify / verify (push) Has been cancelled
Make the offline RAG chain observable without widening credential access
Expose the verified synthetic retrieval path through a typed React client and a non-root Nginx edge while keeping database credentials and data-network reachability out of the browser tier. A fixed-origin gateway preserves request boundaries and now closes upstream streams even when downstream disconnects before body iteration. The deployment ADR and runbooks record the four-network topology and its accepted Web edge-egress risk.

Constraint: The previously exposed Bailian key must be revoked and no live provider credential may enter Git, images, logs, or the browser.
Rejected: Connect Web directly to the data network | expands lateral reach to PostgreSQL.
Rejected: Publish the database-aware API on the edge network | gives a credential-bearing process a public default route.
Rejected: Buffer streaming responses in either proxy | prevents incremental chat delivery in the future.
Confidence: high
Scope-risk: moderate
Reversibility: clean
Directive: Do not mark Stage 1 or Stage 2 complete until the rotated-key live smoke and remaining stage gates pass.
Tested: make verify; 65 backend tests; 14 frontend tests; Docker image build; container health and isolation probes; real HTTP demo/status/search/docs/OpenAPI checks.
Not-tested: Live Bailian models, real document ingestion, business chat SSE generation, and final browser screenshot automation because the browser skill runtime was unavailable.
2026-07-12 17:38:57 +08:00

3.3 KiB
Raw Permalink Blame History

React 离线检索演示运行手册

本手册用于启动 React + Nginx + gateway + FastAPI + PostgreSQL/pgvector 的同源离线演示。当前页面只展示合成数据的检索和重排结果,不调用百炼,不生成大模型答案,也不构成地质勘查结论。

1. 一键启动

首次运行先创建本地数据库 Secret

make setup-hooks
bash scripts/init-local-secrets.sh
docker compose up -d --build web
docker compose --profile tools run --rm seed-demo-offline

web 的依赖链会依次等待 db -> migrate -> api -> gateway。离线 seed 完成后刷新页面,即可看到 20/20/20 的演示数据状态。

访问入口:

2. 推荐演示流程

  1. 确认页面顶部持续显示“合成数据、离线模式、不调用云端模型”。
  2. 确认切片、向量和可检索计数均为 20。
  3. 选择示例问题或输入“花岗斑岩 铜矿化”,设置返回 3 条。
  4. 提交检索,查看合成标题、证据摘录、页码、演示排序分和不透明 citation ID。
  5. 说明 citation ID 尚不能打开真实报告页,当前没有 LLM 生成答案。
  6. 缩窄浏览器到移动宽度,验证表单和来源卡片仍可完整阅读。

3. 本地前端开发

先让 Docker Web/API 链保持运行,再启动 Vite

cd frontend
npm ci
npm run dev

Vite 只监听 127.0.0.1,并把 /api/health/openapi.json 代理到本机 Docker Web 入口。前端 API 基址保持同源,构建产物中不存在数据库地址或百炼凭证。

后端 OpenAPI 改变后重新生成类型:

cd frontend
npm run generate:api
npm run typecheck

生成脚本会检查 demo status/search 路径是否存在,然后覆盖 src/api/schema.generated.ts;生成结果必须随 API 契约变更一起提交。

4. 质量门禁

make verify
docker compose --env-file .env.example ps -a

统一门禁包括:

  • Secret、Markdown 链接和 Git diff 检查;
  • Ruff、严格 mypy 和 pytest
  • Prettier、ESLint、严格 TypeScript、Vitest 和 Vite production build
  • Compose 配置与网络/Secret 合同测试。

容器级验收还应确认:

  • 只有 web 发布 127.0.0.1:8000
  • webgateway 没有 Secret
  • api 只连接 internal data 网络,公网 socket 探测失败;
  • gateway 公网 socket 探测失败Web 因普通 edge 网络可技术性出网,但无 Secret、无数据网络和挂载此残余风险记录于 ADR-0004
  • /api、健康检查和 Swagger 经 Web 同源代理可用;
  • SSE 响应在 gateway 与 Nginx 均不被整体缓冲。

5. 停止与清理

停止容器但保留 PostgreSQL 数据:

docker compose down

不要在需要保留验收数据时使用 docker compose down -v。该命令会删除 PostgreSQL volume。

6. 当前边界

已实现的是可运行的离线检索演示尚未实现登录、真实知识库、文件上传、OCR、生成答案、可点击原文页、会话、反馈、正式评测面板和真实百炼模型探测。只有轮换后的新 Key 完成三模型 smoke 后Stage 1 才能标记为完成Stage 2 也不能因页面可见而提前标记为完成。