worker 侧从 Mock 替换为真实算法: - face_analysis 包:detector(MediaPipe 478点) / pose(solvePnP 姿态) / calibration(虹膜直径法) / hair_segmenter+bisenet_model(方案B 头发分割) / measure(方案A兜底+B/A决策+七眼+换算) / annotation(numpy渐变线+中文标注) - app.py:/api/v1/face/measure 接真实实现,返回 annotated_image_base64 (不落盘不拼URL,落盘由网关做);加 X-Internal-Token 鉴权、/health 就绪态、 可配置分辨率门槛、异常兜底 - 部署:start.sh/run_worker.sh/hair-worker.service 监听 8187;worker_config 示例 - 测试 tests/:Tier1合成真值<1e-6 + Tier2缩放不变 + Tier3叠加 + 错误码集成 + 数值回归,pytest 24 项全绿 - 文档补实测基线表 + RTX5090/torch 说明 注:worker 为 RTX 5090(sm_120),pinned torch 2.2.2(cu121) 只到 sm_90, BiSeNet 已自动回退 CPU(方案B 正常);要用 GPU 需换 torch cu128(≥2.7)。 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
文档索引(按开发机器划分)
系统拆分为两台机器开发:外网网关 和 高性能 worker(GPU)。下面标清每台机器该读哪些文档。
🌐 两端共享(都要读)
| 文档 | 作用 |
|---|---|
| 系统架构-网关与高性能后端.md | 两层拆分的总设计与契约:拓扑、职责、配置、鉴权、base64→URL、错误处理。两端的接口约定,先读。 |
| 接口文档.md | 对外 API 契约(字段/错误码)。拆分后保持不变,是字段命名的唯一权威。 |
| 旷视具体需求.md | 原始需求 |
🖥️ 高性能 worker 机(GPU)
跑完整 app.py + face_analysis,做真正的算法。
| 文档 | 作用 |
|---|---|
| 接口1-四庭七眼测量-技术实现方案.md | 四庭七眼算法方案(MediaPipe / BiSeNet / 标定 / 标注图 / 误差) |
| 接口1-四庭七眼测量-开发任务书.md | worker 侧开发任务书(阶段一~十 + 精度验证),AI agent 执行 |
| ../OFFLINE_ASSETS.md | 离线模型权重/字体清单(内网部署)。worker 需要这些权重 |
🚪 外网网关机
薄反向代理,不跑算法。
| 文档 | 作用 |
|---|---|
| 网关-开发任务书.md | 网关侧开发任务书(健康检查 / 派发 / 鉴权 / base64→URL / 部署),AI agent 执行 |
开发顺序建议:worker 先跑通(本机即可开发验证)→ worker 部署到 GPU 机 → 网关接入联调。网关在 worker 就绪前可用本地 stub worker 独立开发。