483f158424098321c3e535d22c2c92729fe4b333
让老师傅能用起来: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>
geMoldInsight
geMoldInsight 是一个面向模具制造场景的综合系统,围绕 STEP/STP 模型分析、模具方案生成、分析结果沉淀、成品创建、BOM/库存/采购/销售闭环 展开。
当前实现状态:见 docs/STATUS.md 当前架构与边界:见 docs/ARCHITECTURE.md 本文是唯一文档导航入口:请按角色或主题跳转到对应主文档
项目概览
当前项目已经从早期单体演进为:
- moldinsight 模块:模具分析、几何处理、批量分析、成本估算、结果导出
- inventory 模块:产品、BOM、库存、采购、销售、财务
- frontend 模块:Vue 3 前端工程
- shared 平台层:配置、数据库、认证、日志、应用工厂
项目当前采用:
单仓库 + 单数据库 + 多模块 + 可独立部署
更详细的结构说明见 docs/ARCHITECTURE.md。
快速开始(三步)
1. 安装依赖
pip install -r requirements.txt
前端开发需要:
cd frontend
npm install
2. 配置环境变量
复制并编辑:
.env.example- 部署场景可参考 deploy/.env.example
3. 启动
推荐先查看部署入口:
本地常见方式:
docker compose --profile full up -d
如需直接运行:
uvicorn src.entrypoints.moldinsight:app --reload --host 0.0.0.0 --port 8000
uvicorn src.entrypoints.inventory:app --reload --host 0.0.0.0 --port 8001
如需 OCC 几何分析能力,请准备 PythonOCC 运行环境。项目中通常通过 conda 提供,而不是仅靠 pip 安装。
目录概览
geMoldInsight/
├── src/
│ ├── entrypoints/ # 独立部署入口
│ ├── shared/ # 当前共享平台层
│ ├── moldinsight/ # 模具分析模块
│ ├── inventory/ # 进销存模块
│ ├── celery_app.py # Celery app
│ └── celery_tasks.py # moldinsight 异步任务
├── frontend/ # 独立前端工程
├── migrations/ # 数据库迁移
├── deploy/ # 镜像、Nginx、部署辅助文件
├── docs/
├── tests/
├── requirements.txt
└── .env.example
文档导航(唯一入口)
按主题阅读
| 文档 | 解决什么问题 |
|---|---|
| AGENTS.md | 项目开发规范、硬约束、代码地图、文档同步要求 |
| docs/STATUS.md | 当前实现状态(日志体,唯一归属) |
| docs/ARCHITECTURE.md | 当前架构、模块边界、结构原则 |
| docs/OPERATIONS.md | 配置 / 启动 / 环境 / 运维硬性要求 |
| docs/API_CONTRACT.md | 前后端契约:端点总览、约定、OpenAPI 类型生成 |
| docs/ROADMAP.md | 后续演进路线与阶段计划 |
| docs/TECH_DEBT.md | 当前活跃技术债与治理计划 |
| docs/DEPLOYMENT.md | 部署主题入口与部署文档分工 |
| docs/deployment/LINUX_SETUP.md | Linux 环境下的详细部署步骤 |
| docs/archive/BACKEND_MODULARIZATION_BLUEPRINT.md | 模块化蓝图档案与补充设计讨论 |
按角色阅读
| 你是 | 建议阅读顺序 |
|---|---|
| 第一次了解项目 | 本文 → docs/STATUS.md → docs/ARCHITECTURE.md |
| 开发者 / 改代码 | AGENTS.md → docs/ARCHITECTURE.md → docs/API_CONTRACT.md → docs/TECH_DEBT.md |
| 运维 / 部署 | 本文 → docs/OPERATIONS.md → docs/DEPLOYMENT.md → docs/deployment/LINUX_SETUP.md |
| 规划 / 重构 | 本文 → docs/ROADMAP.md → docs/TECH_DEBT.md |
核心能力
| 模块 | 能力 |
|---|---|
| moldinsight | STEP/STP 上传、几何分析、特征识别、模具方案、批量分析、成本估算、结果导出 |
| inventory | 成品/物料、BOM、库存、库存流水、采购订单、销售订单、财务、采购建议 |
| integration | 分析结果一键创建成品,打通“模具分析 → 成品 → BOM → 销售/采购/库存” |
| platform | 用户、角色、权限、JWT 鉴权、数据库连接、日志、健康检查 |
技术栈
后端
- FastAPI
- SQLAlchemy 2.0
- PostgreSQL
- Alembic
- Redis
- Celery
- PythonOCC / trimesh / pyvista
- RustFS / MinIO 兼容对象存储
前端
- Vue 3
- Vite
- TypeScript
- Pinia
- Vue Router
- TDesign Vue Next
基础设施
- Docker / Docker Compose
- 结构化日志 / request_id
- OpenAPI → TypeScript 类型生成
当前代码入口
- moldinsight-only: src/entrypoints/moldinsight.py
- inventory-only: src/entrypoints/inventory.py
- 当前 Compose 入口: docker-compose.yml
开发建议
- 新增业务逻辑优先放入对应业务模块,不要继续堆进
shared - 新增 API 时优先考虑模块归属,而不是“能放就放”
- 文档状态统一维护在 docs/STATUS.md
- 部署方式变化统一更新 docs/DEPLOYMENT.md
许可证
本项目采用 MIT 许可证,详见 LICENSE。
Description
Languages
Python
67.3%
TypeScript
11.6%
Vue
11.3%
HTML
6.8%
CSS
2.5%
Other
0.5%