diff --git a/.claude/memory/MEMORY.md b/.claude/memory/MEMORY.md
index 30c3a99..685645d 100644
--- a/.claude/memory/MEMORY.md
+++ b/.claude/memory/MEMORY.md
@@ -1,11 +1,11 @@
-_Last synced: 2026-05-25 | Base commit: `0e2dcff`_
+_Last synced: 2026-05-26 | Base commit: `869d555`_
# 记忆索引
| 文件 | 描述 | 类型 | 最后更新 |
|------|------|------|----------|
| project_overview.md | 项目技术栈、架构与模块结构 | project | 2026-05-14 |
-| project_progress.md | 各模块原型开发进度 | project | 2026-05-25 |
+| project_progress.md | 各模块原型开发进度 | project | 2026-05-26 |
| decisions.md | 关键设计决策与架构约定 | project | 2026-04-21 |
| feedback.md | 协作规范与用户纠正记录 | feedback | 2026-05-15 |
| user_profile.md | 用户角色与偏好 | user | 2026-04-21 |
diff --git a/.claude/memory/project_progress.md b/.claude/memory/project_progress.md
index 1e6d04f..a64be69 100644
--- a/.claude/memory/project_progress.md
+++ b/.claude/memory/project_progress.md
@@ -2,8 +2,8 @@
name: 项目进度
description: 各模块原型开发进度与近期里程碑
type: project
-last_updated: 2026-05-25
-commit: 0e2dcff
+last_updated: 2026-05-26
+commit: 869d555
---
# 项目进度
@@ -23,10 +23,11 @@ commit: 0e2dcff
- `health-consult/` — 健康咨询(32 页)✅
- `emergency-medical/` — 应急就医(25+ 页)✅
- `health-checkup/` — 健康体检(20+ 页)✅
-- `health-monitor/` — 健康监测(25 页)🔨 设计中
+- `health-monitor/` — 健康监测(25+ 页)🔨 设计中
- `wearable/` — 穿戴设备监测(16 页:血氧/心率/压力/体温/步数/运动/睡眠/血压/心电+告警)
- `weight/` — 体重监测(3 页:主页/历史/报告详情)
- `health-screening/` — 健康筛查/每日打卡(5 页:首页/问卷填写/问卷设置/问卷详情/打卡记录)
+ - `environment/` — 环境监测(3 页:入口/设备详情/报警数据)
- `index.html` — 健康监测入口页
### Web 管理端(web-admin)
@@ -54,6 +55,8 @@ Web 管理端和员工端 APP 的其余模块(系统管理、运动管理、
- 覆盖模块:17 个(含三端+其他终端)
## 近期里程碑
+- 2026-05-26:卫生供应模块净菜内供/外售页面交互重构——列表去掉溯源码和仓库/出库区域列,新建弹窗包装批次号始终显示(非必填)并回显批次信息,备货完成改为补全备货信息弹窗(选择批次号),详情抽屉按净菜类型定制渲染(净菜包显示溯源码/餐品净菜包显示批次号+明细表),外售弹窗客户信息后置且改为输入框
+- 2026-05-25:员工端环境监测模块新增——地图/列表视图入口页、设备详情页、报警数据页
- 2026-05-22:味养创新交互完善——人工创新查看详情弹窗/审核双模/AI推演弹窗重构及侧边栏修复,功能说明9.5章节同步更新
- 2026-05-22:绿色种采模块全面重构——采供管理整页重构(采购单维度主表+子表、5种状态联动操作、配送/取消弹窗交互、详情抽屉动态信息),采收入库/供应商管理/种植监控/养殖监控多页面优化,功能说明文档9.4章节同步更新
- 2026-05-22:营养用餐模块多页面交互优化——数据分析页新增食堂切换栏/周选择器/餐品明细弹窗重构,食材效益页新增级联分类选择器,大模型管理新增API_KEY/API_URL列及接入/编辑弹窗,小模型管理新增新增模型弹窗,终端管理筛选栏/表格列精简,餐线管理操作列移除编辑按钮
diff --git a/CLAUDE.md b/CLAUDE.md
index b36dee1..7debfec 100644
--- a/CLAUDE.md
+++ b/CLAUDE.md
@@ -1,4 +1,4 @@
-
+
# 项目约束
diff --git a/web-admin/nutrition/doc/溯源总览优化方案.md b/web-admin/nutrition/doc/溯源总览优化方案.md
new file mode 100644
index 0000000..3999453
--- /dev/null
+++ b/web-admin/nutrition/doc/溯源总览优化方案.md
@@ -0,0 +1,161 @@
+# 溯源总览模块优化方案
+
+> 整理时间:2026-05-22 | 状态:待讨论 | 关联页面:trace-query.html、trace-timeline.html
+
+---
+
+## 一、核心问题诊断
+
+### 问题 1:模块定位与内容严重不匹配
+
+"溯源总览"作为营养管理的**第一个一级 Tab**,目前只有 2 个页面(查询 + 链路可视化)。对比其他模块(绿色种采 10+ 页、健康生产 10+ 页、营养用餐 8+ 页),内容极度单薄。更关键的是——**叫"总览"却没有总览 Dashboard**,用户进入后直接看到的是一个查询列表,完全没有全局视角。
+
+### 问题 2:trace-query 的数据粒度混乱(最致命)
+
+表格的每一行粒度定义混乱:
+
+| 列名 | 粒度 | 矛盾点 |
+|------|------|--------|
+| 餐品溯源码 / 菜品名称 | 餐品级 | 一道菜一个码 |
+| 来源类型 / 产地/供应商 / 种植批次 | **食材级** | 一道菜有多种食材,各有不同来源 |
+
+以"宫保鸡丁"为例,它包含 4 种食材(鸡胸肉=外采、花生=外采、辣椒=自种、葱姜蒜=自种),但表中只显示了一条记录,来源标记为"自产养殖"——这只对应了鸡胸肉一种食材,**其他 3 种食材的溯源信息完全丢失**。
+
+如果某天的花生检出黄曲霉毒素超标,从这个表里根本看不出来。
+
+### 问题 3:trace-timeline 的信息负荷过重
+
+鸡胸肉链路有 **14 个节点**,水平排列后管道极长。分支节点(如净菜加工 x4、按单烹制 x3)本质上是一个节点分裂出多条并行链路,但当前设计**只用角标数字表示**,点击后详情是把所有分支挤在一个卡片里(`分支A/B/C/D`),无法直观理解分支走向和收敛。
+
+### 问题 4:两个页面之间的衔接断裂
+
+trace-query 中每行的"查看食材链路"都指向同一个 `trace-timeline.html`(硬编码的宫保鸡丁数据),无论点哪道菜都看到同样的内容。作为原型,至少应该在页面状态上表达"跳转后应展示对应菜品"的意图。
+
+---
+
+## 二、重构优化方案
+
+建议将"溯源总览"模块从 2 页扩展为 **4~5 页**:
+
+```
+溯源总览(一级菜单)
+├── 溯源看板 trace-dashboard.html 【新增】总览 Dashboard
+├── 餐品溯源查询 trace-query.html 【重构】修正数据粒度
+├── 食材溯源查询 trace-ingredient.html 【新增】食材维度独立页
+├── 链路可视化 trace-timeline.html 【优化】交互减负
+└── 溯源码管理 trace-code.html 【新增,可选】溯源码规则配置
+```
+
+### 2.1 新增:溯源看板(trace-dashboard)
+
+作为模块的**入口页和默认页**,提供全局统计视角。
+
+**顶部统计卡片行(4~5 张):**
+- 今日溯源覆盖率(已溯源菜品数 / 总菜品数,如 95.2%)
+- 检测合格率(合格食材数 / 已检食材数,如 99.8%)
+- 自产食材占比(自种+自养数量 / 总食材数,如 42%)
+- 异常待处理数(检测不合格 + 链路断裂 + 数据缺失)
+- 可选:今日已完成溯源链路数
+
+**中部双列布局:**
+- 左:近 7 天溯源趋势折线图(溯源覆盖率 + 合格率双曲线)
+- 右:食材来源分布饼图(自产种植 / 自产养殖 / 外采占比)
+
+**底部:**
+- 近期异常事件列表(检测不合格的食材、链路中断记录、溯源码异常等)
+- 快捷入口卡片(跳转餐品查询、食材查询、链路可视化)
+
+### 2.2 重构:餐品溯源查询(trace-query)
+
+**核心改动:修正数据粒度为纯餐品级,食材信息下沉到展开行。**
+
+表格列重设计:
+
+| 餐品溯源码 | 菜品名称 | 就餐日期 | 餐次 | 食材数量 | 来源组成 | 检测结论 | 烹制厨师 | 上餐时间 | 操作 |
+|---|---|---|---|---|---|---|---|---|---|
+| TR-20260422-001 | 宫保鸡丁 | 2026-04-22 | 午餐 | 4种 | 自种2 外采2 | 全部合格 | 张厨师 | 11:30 | 展开 \| 查看链路 |
+
+关键变化:
+- **删除**原来的"来源类型""产地/供应商""种植/养殖批次"(食材级信息不应出现在餐品级表中)
+- **新增**"食材数量"列 + "来源组成"列(标签组合展示,如 `自种×2 外采×2`)
+- **新增**"展开"操作:点击后在行下方展开食材子表
+
+**展开后的食材子表示意:**
+
+```
+┌─────────────────────────────────────────────────────────────────┐
+│ 🥩 鸡胸肉 8.5kg 外采 鲜肉直供 批次:JXRJ-.. 检测:合格 │
+│ 🥜 花生 1.2kg 外采 华盛干货 批次:HS-.. 检测:合格 │
+│ 🌶️ 辣椒 0.8kg 自种 南郊基地 批次:LJ-.. 检测:合格 │
+│ 🧄 葱姜蒜 0.5kg 自种 南郊基地 批次:CJS-.. 检测:合格 │
+└─────────────────────────────────────────────────────────────────┘
+```
+
+**筛选栏补充:**
+- 新增"餐次"筛选(早餐/午餐/晚餐/加餐)
+- "就餐日期"改为日期范围选择(默认今天)
+- 新增"食堂"筛选(对应多食堂场景)
+
+### 2.3 新增:食材溯源查询(trace-ingredient)
+
+**独立的食材维度查询页**,从 trace-timeline 的"食材维度 Tab"中抽离为完整页面。
+
+表格列设计:
+
+| 食材溯源码 | 食材名称 | 来源类型 | 产地/供应商 | 入库日期 | 入库量 | 剩余库存 | 关联菜品数 | 检测结论 | 操作 |
+|---|---|---|---|---|---|---|---|---|---|
+| ST-EX-XR01-MT-... | 鸡胸肉 | 外采 | 鲜肉直供公司 | 04-15 | 80kg | 32kg | 4道 | 合格 | 查看链路 \| 关联菜品 |
+
+页面价值:
+- 追踪**一批食材被分配到了哪些菜品**(正向追溯)
+- 检测不合格时快速定位**受影响的所有菜品和订单**(反向召回)
+- 解决了 trace-query 中食材信息被压缩的问题
+
+### 2.4 优化:链路可视化(trace-timeline)
+
+**优化点 1:14 个节点太拥挤 → 分段折叠**
+
+将 19 种节点归类为 5 个阶段,默认展示阶段概要,点击展开看细节:
+
+```
+[采供阶段] ────→ [存储阶段] ────→ [加工阶段] ────→ [烹制上餐] ────→ [餐后追踪]
+ 采供入库 毛菜入库 净菜加工 按单烹制 余量处置
+ 卫生检测 毛菜存储 净菜入库 上餐监控 营养检验
+ 净菜内供 用户取餐
+ 净菜进柜
+ 净菜组配
+```
+
+每个阶段用"超级节点"表示(阶段名 + 节点数 + 整体状态),点击展开该阶段详细节点管道。
+
+**优化点 2:分支角标看不懂 → 分支卡片列表**
+
+点击分支节点时,详情区域从单卡片改为**分支卡片列表**,每条分支单独一张卡片,标注分支走向(如"→ 宫保鸡丁""→ 辣子鸡"),用颜色/线条标注"当前追踪的是哪条分支"。
+
+**优化点 3:食材维度数据不完整**
+
+- 提供食材搜索框,支持按食材名称/溯源码搜索
+- 展示该食材的完整溯源链路(从源头到所有去向菜品)
+- 或者:将食材维度移到 trace-ingredient 页面,trace-timeline 专注餐品维度
+
+### 2.5 可选新增:溯源码管理(trace-code)
+
+管理溯源码的编码规则、前缀配置、批次规则等系统配置页面。当前溯源码格式 `ST-{来源}-{供应商编号}-{分类}-{品名}-{重量}-{日期}-{序号}` 是隐含在数据中的,如果需要运维人员管理这些规则,可以做一个配置页。优先级较低。
+
+---
+
+## 三、与文档 8.5 节已有建议的关系
+
+文档 8.5 节的 8 条建议(导出筛选结果、快速预览浮层、PDF报告导出、数据一致性检查、视频播放器、食材历史链路、缩略图导航、分支收敛可视化)属于**细节优化**,可以在重构后的新页面中一并实现。但如果不先解决数据粒度混乱和模块定位不清的根本问题,单独做那些优化效果有限。
+
+---
+
+## 四、优先级
+
+| 优先级 | 页面 | 工作量 | 理由 |
+|--------|------|--------|------|
+| P0 | trace-dashboard 新建 | 中 | 模块入口必须有总览 |
+| P0 | trace-query 重构 | 中 | 数据粒度问题是硬伤 |
+| P1 | trace-ingredient 新建 | 中 | 食材维度是溯源核心能力 |
+| P1 | trace-timeline 优化 | 大 | 可视化体验提升 |
+| P2 | trace-code 新建 | 小 | 系统配置,可后期补 |
diff --git a/web-admin/nutrition/sup-in-clean.html b/web-admin/nutrition/sup-in-clean.html
index 0a31a95..c4681b0 100644
--- a/web-admin/nutrition/sup-in-clean.html
+++ b/web-admin/nutrition/sup-in-clean.html
@@ -198,29 +198,29 @@ tbody td.td-actions{white-space:nowrap;}
- | 加工批次号 | 关联单号 | 溯源码 | 食材名称 | 净菜类型 | 加工步骤 | 毛菜重量(kg) | 净菜重量(kg) | 出净率(%) | 加工人员 | 开始时间 | 结束时间 | 质检结果 | 入库状态 | 操作 |
+ 加工批次号 | 溯源码 | 食材名称 | 净菜类型 | 加工步骤 | 毛菜重量(kg) | 净菜重量(kg) | 出净率(%) | 加工人员 | 开始时间 | 结束时间 | 质检结果 | 入库状态 | 操作 |
- | PROC-001 | NC-IN-001 | NC-PROC-BOCA-20260415-01 | 土豆 | 土豆丝 | 去皮/切割 | 100 | 86 | 86.0 | 李加工 | 2026-04-15 08:00 | 2026-04-15 08:45 | 合格 | 已入库 | 查看视频 更多 ▾ |
+ PROC-001 | NC-PROC-BOCA-20260415-01 | 土豆 | 土豆丝 | 去皮/切割 | 100 | 86 | 86.0 | 李加工 | 2026-04-15 08:00 | 2026-04-15 08:45 | 合格 | 已入库 | 查看视频 更多 ▾ |
- | PROC-002 | — | NC-PROC-HLUB-20260415-01 | 土豆 | 土豆片 | 去皮/切割 | 140 | 120 | 85.7 | 王加工 | 2026-04-15 08:30 | 2026-04-15 09:20 | 合格 | 未入库 | 查看视频 生成入库单 更多 ▾ |
+ PROC-002 | NC-PROC-HLUB-20260415-01 | 土豆 | 土豆片 | 去皮/切割 | 140 | 120 | 85.7 | 王加工 | 2026-04-15 08:30 | 2026-04-15 09:20 | 合格 | 未入库 | 查看视频 生成入库单 更多 ▾ |
- | PROC-003 | — | NC-PROC-XGUO-20260415-01 | 土豆 | 土豆泥 | 去皮/切割 | 56 | 48 | 85.7 | 李加工 | 2026-04-15 09:00 | 2026-04-15 09:40 | 合格 | 未入库 | 查看视频 生成入库单 更多 ▾ |
+ PROC-003 | NC-PROC-XGUO-20260415-01 | 土豆 | 土豆泥 | 去皮/切割 | 56 | 48 | 85.7 | 李加工 | 2026-04-15 09:00 | 2026-04-15 09:40 | 合格 | 未入库 | 查看视频 生成入库单 更多 ▾ |
- | PROC-004 | — | NC-PROC-SJDOU-20260415-01 | 四季豆 | 段(5cm) | 清洗 | 60 | 52 | 86.7 | 张加工 | 2026-04-15 09:30 | 2026-04-15 10:00 | 待处理 | 未入库 | 查看视频 更多 ▾ |
+ PROC-004 | NC-PROC-SJDOU-20260415-01 | 四季豆 | 段(5cm) | 清洗 | 60 | 52 | 86.7 | 张加工 | 2026-04-15 09:30 | 2026-04-15 10:00 | 待处理 | 未入库 | 查看视频 更多 ▾ |
- | PROC-005 | NC-IN-004 | NC-PROC-BCAI-20260415-01 | 白菜 | 整棵 | 清洗 | 80 | 70 | 87.5 | 张加工 | 2026-04-15 07:30 | 2026-04-15 08:10 | 合格 | 未入库 | 查看视频 生成入库单 更多 ▾ |
+ PROC-005 | NC-PROC-BCAI-20260415-01 | 白菜 | 整棵 | 清洗 | 80 | 70 | 87.5 | 张加工 | 2026-04-15 07:30 | 2026-04-15 08:10 | 合格 | 未入库 | 查看视频 生成入库单 更多 ▾ |
- | PROC-006 | NC-IN-005 | NC-PROC-ZLRJ-20260415-01 | 猪里脊 | 丁(1.5cm) | 切割 | 80 | 76 | 95.0 | 王加工 | 2026-04-15 09:30 | 2026-04-15 09:55 | 合格 | 未入库 | 查看视频 生成入库单 更多 ▾ |
+ PROC-006 | NC-PROC-ZLRJ-20260415-01 | 猪里脊 | 丁(1.5cm) | 切割 | 80 | 76 | 95.0 | 王加工 | 2026-04-15 09:30 | 2026-04-15 09:55 | 合格 | 未入库 | 查看视频 生成入库单 更多 ▾ |
- | PROC-007 | — | NC-PROC-ZLRJ-20260415-02 | 猪里脊 | 条(4cm) | 切割 | 90 | 85 | 94.4 | 李加工 | 2026-04-15 10:00 | 2026-04-15 10:30 | 待处理 | 未入库 | 查看视频 更多 ▾ |
+ PROC-007 | NC-PROC-ZLRJ-20260415-02 | 猪里脊 | 条(4cm) | 切割 | 90 | 85 | 94.4 | 李加工 | 2026-04-15 10:00 | 2026-04-15 10:30 | 待处理 | 未入库 | 查看视频 更多 ▾ |
@@ -273,7 +273,7 @@ tbody td.td-actions{white-space:nowrap;}