D17 批 3:前端按钮 + Dialog + 经验角标——闭环可视
让老师傅能用起来:ResultView 加按钮组 + HumanFeedbackDialog 组件 +
经验角标渲染 + 接口变更三件套随批完成,admin / process_engineer 可在
分析结果页标记采纳 / 建议调整 / 拒绝,下次同指纹产品分析自动消费。
变更内容:
- frontend/src/modules/moldinsight/components/HumanFeedbackDialog.vue(new)
新组件:t-dialog + t-form + t-radio-group 三选一(采纳 / 建议调整 /
拒绝)+ t-textarea 原因 + t-textarea 调整建议(仅 adjust 模式显隐);
走 moldinsightApi.submitExperienceFeedback,提交成功后 emit 'submitted'
让父组件重新拉 hints 刷新角标;表单打开时 watch 重置;loading 态 /
error 通知复用 shared/notification
- frontend/src/modules/moldinsight/ResultView.vue
- import moldinsightApi 与 HumanFeedbackDialog
- state 增加 feedbackDialogVisible / hintsFingerprint / hints
- Scheme interface 扩展 axis / confidence_score / method 顶层字段
(前端 TS 类型与后端 Pydantic 字段对齐)
- computed taskId / hintsByAxis / currentAxisHint(避免 undefined index
TS 报错)/ canGiveFeedback(is_superuser || roles 含 process_engineer)
- function loadExperienceHints(onMounted + 提交后各调一次;失败静默
退化,按钮仍可点)/ openFeedbackDialog / onFeedbackSubmitted
- 模板:
* 推荐方案卡片 summary-header 加 t-tag theme="success" variant="light"
经验角标("📚 历史经验 N 条",title 提示采纳/拒绝计数)
* export-buttons-bar 加 👍 老师傅反馈 按钮(v-if="canGiveFeedback"
角色门控;theme="default" size="small" 与既有 6 个 t-button 视觉一致)
* </t-loading> 之后挂 HumanFeedbackDialog(v-model:visible + 11 个 props
透传 scheme_id / axis / fingerprint / score_at_submit / 等)
- frontend/src/shared/api-client.ts moldinsightApi 加两个方法:
getExperienceHints(taskId) / submitExperienceFeedback(taskId, data)
(返回类型由 openapi-typescript 自动生成,无需手维护)
接口变更三件套随批完成:
- openapi.json 重导出(unified app,含 ExperienceFeedbackCreate /
ExperienceFeedbackResponse / ExperienceHintItem / ExperienceHintsResponse
四个新 schema,2 个新 path 出现)
- npm run gen:api 再生 frontend/src/types/api.ts(生成物,禁止手改)
- npm run build 通过(vue-tsc + vite,ResultView 包 37.18 kB / 11.91 kB
gzip)
- docs/STATUS.md 顶部加 2026-09-24 批 3 日志条目
- docs/TECH_DEBT.md D17 追加批 3 已完成描述 + 缩减剩余工作(仅剩批 4
按需排期)
设计要点:
- canGiveFeedback 借 (appStore.user as any).roles 临时绕过 AppUser
类型不含 roles 的限制(前端硬规则:"不要硬编码 'admin' 字符串"——
按 role.code === 'process_engineer' 匹配)
- currentAxisHint 解决 selectedScheme.axis 可能 undefined 的索引报错
- onFeedbackSubmitted 提交后立即 loadExperienceHints 触发角标刷新,
实现"写入即消费"前端可见
后端基线:192 passed, 13 skipped(批 3 纯前端,不动后端)。
D17 闭环端到端可用:admin / process_engineer 在 ResultView 点反馈
按钮 → Dialog 提交 → 角标即时刷新 + 下次同指纹产品分析算法加成。
Co-Authored-By: Claude Code <noreply@anthropic.com>
This commit is contained in:
+8
-2
@@ -235,8 +235,14 @@
|
||||
- [occ_worker.py](src/moldinsight/core/occ_worker.py) `_op_generate_cavity`:`payload.get("experience_hints") or {}` 透传给 `planner.generate_plan`,普通 dict 跨进程 pickle 安全
|
||||
- 测试基线:192 passed, 13 skipped(批 2 净增 7 通过 + 4 OCC-gated skip)
|
||||
|
||||
**剩余工作(按依赖顺序)**:
|
||||
- 批 3:前端按钮组(ResultView.vue `export-buttons-bar` 内联)+ `HumanFeedbackDialog.vue` 组件 + `moldinsightApi.getExperienceHints` / `submitExperienceFeedback` + 经验提示角标渲染(`applied_hints` 按 scheme_axis 索引)
|
||||
**批 3 已完成(前端按钮 + Dialog + 经验角标)—— 闭环可视**:
|
||||
- [ResultView.vue:35-47](frontend/src/modules/moldinsight/ResultView.vue#L35-L47) 方案卡片 summary-header 加 `t-tag` 经验角标(`currentAxisHint` computed 按 scheme_axis 索引 hintsByAxis,无 hints 不渲染)
|
||||
- [ResultView.vue:131-138](frontend/src/modules/moldinsight/ResultView.vue#L131-L138) `export-buttons-bar` 加 `👍 老师傅反馈` 按钮(`v-if="canGiveFeedback"` 角色门控:admin 或 process_engineer)
|
||||
- [HumanFeedbackDialog.vue](frontend/src/modules/moldinsight/components/HumanFeedbackDialog.vue) 新组件:t-dialog + t-form + t-radio-group 三选一 + t-textarea;走 `moldinsightApi.submitExperienceFeedback`,成功后 emit `submitted` 让父组件重拉 hints
|
||||
- [shared/api-client.ts:407-444](frontend/src/shared/api-client.ts#L407-L444) `moldinsightApi` 新增 `getExperienceHints` / `submitExperienceFeedback`
|
||||
- 接口变更三件套随批完成:openapi.json 重导出(2 新 path)→ `npm run gen:api` → `npm run build` 通过
|
||||
|
||||
**剩余工作(按需排期)**:
|
||||
- 批 4:衰减机制完善(与 DB 一致性定期核查)+ DFM 规则库独立模块化 + 经验冲突仲裁 UI
|
||||
|
||||
~~原现状 / 影响~~:算法生成的方案与真实工程决策有差距,老师傅每次都要推翻系统建议重来,沉淀经验无结构化路径。
|
||||
|
||||
Reference in New Issue
Block a user