FE 批次任务契约(F1~F4)与协作规程 v1.3
This commit is contained in:
@@ -0,0 +1,31 @@
|
||||
# F3 · 报告流(提交 → 轮询 → 32 维结果展示)
|
||||
|
||||
> 分支:`task/f3-fe` | worktree:`G:\meida-app-f3` | 只改:`pages/ReportCreatePage.ets`、`pages/ReportResultPage.ets`(填桩)、`ets/components/f3/`(自建)
|
||||
> 先读《README-FE批次.md》,严格遵守(diagnosis 结构见其 §4,**恒 32 项、skipped 显式**)。
|
||||
|
||||
## ReportCreatePage(问卷 + 模拟照片 + 提交轮询)
|
||||
|
||||
1. **问卷表单**(必填项做前端校验):性别(单选 女/男/不便告知)、身高 cm(TextInput 数字)、体重 kg、生日(DatePicker)、核心诉求(多选:显高/显瘦/显白/显气质/遮肉/修饰肩颈,至少 1 项)、心理风格(9 型单选:戏剧/睿智/自然/古典/优雅/浪漫/前卫/少女/少年)
|
||||
2. **照片(模拟)**:TextInput 填 `photo_object_key`,输入框上方显式灰字说明"V1 骨架:COS 直传未接入,此处模拟对象键"(键格式提示 `report_photo/...jpg`;留空时自动生成 `report_photo/{userId}/{随机}.jpg`)
|
||||
3. 提交:组装 `questionnaire` Record(键名对齐:`gender,height_cm,weight_kg,birthday,core_goals[],psych_style`)+ `photo_object_key` + `request_key`(随机 hex)→ `POST /api/v1/reports`
|
||||
- 40920(本期已生成)→ 对话框提示并给「查看我的报告」按钮跳结果页(携带最近 reportId——无则提示稍后在任务中心看)
|
||||
- 成功 → 进入**轮询态**:`GET /api/v1/tasks/{task_id}` 每 3s 一次(`setInterval` 或递归 setTimeout,页面销毁清理),进度条 + stage_text 展示;SUCCEEDED → `router.replaceUrl` 结果页(params 带 reportId);FAILED → ErrorView + 重试(重新提交同 request_key 即幂等重放,注释说明)
|
||||
4. 轮询期间允许返回(清定时器)
|
||||
|
||||
## ReportResultPage(结果展示)
|
||||
|
||||
1. `GET /api/v1/reports/{id}`(reportId 从 `router.getParams()` 取)
|
||||
2. **文案区**:`result.copy.summary` + sections 渲染(title + paragraphs);`result.validation.degraded === true` 时顶部黄条提示"本报告由规则引擎直接生成"(透明化降级)
|
||||
3. **32 维诊断区**(核心):`result.diagnosis.dimensions`
|
||||
- 按 `basic_coverage` 分组思路简化为:**已分析**(status=ok)与**未覆盖**(skipped,灰色 + evidence 作为原因文案)两组
|
||||
- 每维卡片:name_cn + value(数组 join '、')+ 来源标签(中文映射:questionnaire=你填写/vision=照片分析/rule=规则推导/derived=推导/kb=知识库)+ 置信度(百分比);confidence < 0.7 加"仅供参考"小标(NFR-UX-05)
|
||||
- rule_hits 非空时折叠显示"依据规则 N 条"
|
||||
4. 顶部状态:version、status、completed_at;「重新生成」按钮 → `POST /api/v1/reports/{id}/regenerate` → 成功后拿新 task_id 回到轮询态(同页复用轮询逻辑或跳回 Create 页携带参数——选实现简单者,注释说明)
|
||||
5. 加载态 LoadingView / 失败态 ErrorView(含重试)
|
||||
|
||||
## 验收
|
||||
|
||||
1. 构建门禁 `BUILD SUCCESSFUL`
|
||||
2. 32 维渲染对空值/skipped/数组 value/低置信度四种形态都有处理(本地构造假数据自查 UI 分支,不依赖后端也能看——用临时默认 @State 假数据再删,提交里不留假数据)
|
||||
3. 轮询有清理、40920/FAILED/降级三条异常路径有 UI
|
||||
4. 单次提交:`feat(app): report flow with polling and 32-dimension result view(F3)`
|
||||
Reference in New Issue
Block a user