skill-calorie 0.2.1 → 0.2.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (117) hide show
  1. package/SKILL.md +15 -12
  2. package/dist/analysis/cross.js +3 -3
  3. package/dist/analysis/cross.js.map +1 -1
  4. package/dist/analysis/series.js +3 -3
  5. package/dist/analysis/series.js.map +1 -1
  6. package/dist/analysis/utils.d.ts +11 -0
  7. package/dist/analysis/utils.d.ts.map +1 -1
  8. package/dist/analysis/utils.js +11 -0
  9. package/dist/analysis/utils.js.map +1 -1
  10. package/dist/cli/cmd_read.d.ts +5 -0
  11. package/dist/cli/cmd_read.d.ts.map +1 -1
  12. package/dist/cli/cmd_read.js +47 -11
  13. package/dist/cli/cmd_read.js.map +1 -1
  14. package/dist/cli/keys.d.ts +5 -1
  15. package/dist/cli/keys.d.ts.map +1 -1
  16. package/dist/cli/keys.js +3 -0
  17. package/dist/cli/keys.js.map +1 -1
  18. package/dist/cli/write.d.ts +3 -1
  19. package/dist/cli/write.d.ts.map +1 -1
  20. package/dist/cli/write.js +51 -7
  21. package/dist/cli/write.js.map +1 -1
  22. package/dist/fetch/body.js +7 -7
  23. package/dist/fetch/body.js.map +1 -1
  24. package/dist/fetch/exercise.d.ts.map +1 -1
  25. package/dist/fetch/exercise.js +7 -3
  26. package/dist/fetch/exercise.js.map +1 -1
  27. package/dist/fetch/nutritionGoal.d.ts.map +1 -1
  28. package/dist/fetch/nutritionGoal.js +15 -4
  29. package/dist/fetch/nutritionGoal.js.map +1 -1
  30. package/dist/output.d.ts +15 -10
  31. package/dist/output.d.ts.map +1 -1
  32. package/dist/output.js +69 -27
  33. package/dist/output.js.map +1 -1
  34. package/dist/profile/setup.d.ts +48 -0
  35. package/dist/profile/setup.d.ts.map +1 -0
  36. package/dist/profile/setup.js +290 -0
  37. package/dist/profile/setup.js.map +1 -0
  38. package/dist/profile/update.d.ts +5 -0
  39. package/dist/profile/update.d.ts.map +1 -0
  40. package/dist/profile/update.js +65 -0
  41. package/dist/profile/update.js.map +1 -0
  42. package/dist/profile/view.d.ts +33 -0
  43. package/dist/profile/view.d.ts.map +1 -0
  44. package/dist/profile/view.js +94 -0
  45. package/dist/profile/view.js.map +1 -0
  46. package/dist/render/dietDocs.d.ts.map +1 -1
  47. package/dist/render/dietDocs.js +86 -49
  48. package/dist/render/dietDocs.js.map +1 -1
  49. package/dist/render/helpCenter.d.ts.map +1 -1
  50. package/dist/render/helpCenter.js +4 -2
  51. package/dist/render/helpCenter.js.map +1 -1
  52. package/dist/render/helpFile.d.ts +26 -0
  53. package/dist/render/helpFile.d.ts.map +1 -0
  54. package/dist/render/helpFile.js +60 -0
  55. package/dist/render/helpFile.js.map +1 -0
  56. package/dist/render/helpPaths.d.ts +22 -0
  57. package/dist/render/helpPaths.d.ts.map +1 -0
  58. package/dist/render/helpPaths.js +22 -0
  59. package/dist/render/helpPaths.js.map +1 -0
  60. package/dist/render/helpShell.d.ts +16 -0
  61. package/dist/render/helpShell.d.ts.map +1 -0
  62. package/dist/render/helpShell.js +27 -0
  63. package/dist/render/helpShell.js.map +1 -0
  64. package/dist/render/html.d.ts +1 -1
  65. package/dist/render/html.d.ts.map +1 -1
  66. package/dist/render/index.d.ts +2 -2
  67. package/dist/render/index.d.ts.map +1 -1
  68. package/dist/render/index.js +3 -1
  69. package/dist/render/index.js.map +1 -1
  70. package/dist/render/nutritionPortDocs.d.ts.map +1 -1
  71. package/dist/render/nutritionPortDocs.js +41 -48
  72. package/dist/render/nutritionPortDocs.js.map +1 -1
  73. package/dist/render/receipt.d.ts +4 -0
  74. package/dist/render/receipt.d.ts.map +1 -1
  75. package/dist/render/receipt.js +4 -1
  76. package/dist/render/receipt.js.map +1 -1
  77. package/dist/render/sportDocs.d.ts.map +1 -1
  78. package/dist/render/sportDocs.js +86 -58
  79. package/dist/render/sportDocs.js.map +1 -1
  80. package/dist/render/sportPortDocs.d.ts.map +1 -1
  81. package/dist/render/sportPortDocs.js +59 -52
  82. package/dist/render/sportPortDocs.js.map +1 -1
  83. package/dist/render/trendDocs.d.ts.map +1 -1
  84. package/dist/render/trendDocs.js +59 -52
  85. package/dist/render/trendDocs.js.map +1 -1
  86. package/dist/render/trendMiscPortDocs.d.ts.map +1 -1
  87. package/dist/render/trendMiscPortDocs.js +77 -56
  88. package/dist/render/trendMiscPortDocs.js.map +1 -1
  89. package/dist/render/wizardPortDocs.d.ts.map +1 -1
  90. package/dist/render/wizardPortDocs.js +41 -51
  91. package/dist/render/wizardPortDocs.js.map +1 -1
  92. package/dist/schema.d.ts.map +1 -1
  93. package/dist/schema.js +11 -0
  94. package/dist/schema.js.map +1 -1
  95. package/dist/shared/copyArea.d.ts +54 -0
  96. package/dist/shared/copyArea.d.ts.map +1 -0
  97. package/dist/shared/copyArea.js +89 -0
  98. package/dist/shared/copyArea.js.map +1 -0
  99. package/dist/shared/docPage.d.ts +20 -0
  100. package/dist/shared/docPage.d.ts.map +1 -0
  101. package/dist/shared/docPage.js +55 -0
  102. package/dist/shared/docPage.js.map +1 -0
  103. package/dist/triggers/routing.d.ts +9 -7
  104. package/dist/triggers/routing.d.ts.map +1 -1
  105. package/dist/triggers/routing.js +27 -25
  106. package/dist/triggers/routing.js.map +1 -1
  107. package/dist/triggers/scene-07-profile.js +3 -3
  108. package/dist/triggers/scene-07-profile.js.map +1 -1
  109. package/dist/triggers/wake-assets.d.ts +47 -0
  110. package/dist/triggers/wake-assets.d.ts.map +1 -0
  111. package/dist/triggers/wake-assets.js +4715 -0
  112. package/dist/triggers/wake-assets.js.map +1 -0
  113. package/package.json +2 -2
  114. package/dist/render/profilePlate.d.ts +0 -17
  115. package/dist/render/profilePlate.d.ts.map +0 -1
  116. package/dist/render/profilePlate.js +0 -18
  117. package/dist/render/profilePlate.js.map +0 -1
package/SKILL.md CHANGED
@@ -1,20 +1,20 @@
1
1
  ---
2
2
  name: skill-calorie
3
- description: "「卡路里HELP」→calorie.help.center 出完整速查台;唯一出口 calorie-cmd-read。触发词:看今日主页、看今日热量预算、记一餐、拍营养表记一餐、看今日饮食、记喝水、补记饮食、复制昨日饮食、改饮食记录、删饮食记录、看本周饮食、查食品、存食品、改食品、下架食品、批量导入食品、看营养结构、看今日营养、看饮食总览、看营养素深度、看高热量榜、看低热量榜、看频繁吃榜、看高碳水榜、看高蛋白榜、饮食复盘(本周)、看全部餐别分布(最近 7 天)、记体重、补录体重、看今日体重、看体重曲线、对比体重:最近 30 天 vs 之前 30 天、体重复盘(本周)、记运动、记力量训练、记有氧运动、补记运动、看今日运动、看运动趋势、运动复盘(本周)、看计划概览、看完整计划、看某天练什么、看某动作安排、定训练计划、落地训练、同步到训记、定营养目标、定体重目标、定饮水目标、看今日目标进度、记体脂(皮褶钳)、记围度、看体脂趋势、看围度趋势、记身材照、查身材照、生成身材照GIF、对比两张照片、设置档案、改档案、查档案、查健康报告、查热量趋势、查热量缺口、复盘、开启定时复盘、本周复盘、本月复盘"
3
+ description: "「卡路里HELP」→calorie.help.center 出老技能同款 HELP 文件(V4 三级目录壳);唯一出口 calorie-cmd-read。触发词:看今日主页、看今日热量预算、记一餐、拍营养表记一餐、看今日饮食、记喝水、补记饮食、复制昨日饮食、改饮食记录、删饮食记录、看本周饮食、查食品、存食品、改食品、下架食品、批量导入食品、看营养结构、看今日营养、看饮食总览、看营养素深度、看高热量榜、看低热量榜、看频繁吃榜、看高碳水榜、看高蛋白榜、饮食复盘(本周)、看全部餐别分布(最近 7 天)、记体重、补录体重、看今日体重、看体重曲线、对比体重:最近 30 天 vs 之前 30 天、体重复盘(本周)、记运动、记力量训练、记有氧运动、补记运动、看今日运动、看运动趋势、运动复盘(本周)、看计划概览、看完整计划、看某天练什么、看某动作安排、定训练计划、落地训练、同步到训记、定营养目标、定体重目标、定饮水目标、看今日目标进度、记体脂(皮褶钳)、记围度、看体脂趋势、看围度趋势、记身材照、查身材照、生成身材照GIF、对比两张照片、设置档案、改档案、查档案、查健康报告、查热量趋势、查热量缺口、复盘、开启定时复盘、本周复盘、本月复盘"
4
4
  ---
5
5
 
6
6
  # 卡路里(calorie)SKILL
7
7
 
8
8
  饮食/体重/运动/身体/目标/照片/分析/复盘一期全量:13 表(终态 11 张持久表)+ 10 场景 436 唤醒词 + 取数/口径/渲染全 TS。唯一出口 `calorie-cmd-read <calorie.key>`,argv+JSON(stdout)+exit,非 0 走 stderr。
9
9
 
10
- - 用户说「**卡路里HELP**」→ 跑 `calorie-cmd-read calorie.help.center`(缺省 `mode=file`)出**完整能力速查台**;另两态与照片 10 键见下文 HELP 节。
11
- - **配置型写词**(记体脂/记围度/定训练计划类)命中,先按「Wizard Verify 铁则」分流再调写键。
10
+ - 用户说「**卡路里HELP**」→ 跑 `calorie-cmd-read calorie.help.center`(缺省)出**老技能同款 HELP 文件**(`卡路里_HELP_<时间戳>.html`,V4 三级目录壳);速查台与另两态、照片 10 键见下文 HELP 节。
11
+ - **配置型写词**(记体脂/记围度/定训练计划/设置档案/设活动量/改档案类)命中,先按「Wizard Verify 铁则」分流再调会改数据库的命令。
12
12
  - 唤醒词 → key 对照表见下方「联动速查」(构建期注入 99 键)。
13
13
 
14
14
  ## 快速开始
15
15
 
16
16
  ```sh
17
- calorie-cmd-read calorie.help.center # 卡路里HELP:完整能力速查台(缺省 file 态)
17
+ calorie-cmd-read calorie.help.center # 卡路里HELP:老技能同款 HELP 文件(缺省;速查台加 --params '{"mode":"file"}')
18
18
  calorie-cmd-read calorie.diet.add --params '{"foodName":"鸡胸","calories":200,"protein":35}'
19
19
  calorie-cmd-read calorie.weight.log --params '{"kg":70.5}'
20
20
  calorie-cmd-read calorie.view.home --params '{"date":"2026-09-07"}'
@@ -54,13 +54,14 @@ calorie-cmd-read calorie.help.lookup --params '{"q":"看今日主页"}'
54
54
 
55
55
  **前置:先问测量方式,再进表**。只说「记体脂」时**先问**是皮褶钳还是外部设备/健身房测量,答完再进表——路由层没有裸「记体脂」唤醒词,实际词见下表(`triggers/routing.ts` `WAKE_ROUTES` 场景 08 的 exec 项)。`记体脂(皮褶钳)` 须带算好的 `bodyFatPct`:`cli/write.ts` 缺 `bodyFatPct` 即 `fail(2, '缺参数 bodyFatPct(皮褶→体脂自动换算未移植,直传实测值)')`。
56
56
 
57
- **词 → verify 页映射**(页面文件本体归 #86,本票只定映射与前置):
57
+ **词 → verify 页映射**(页面文件本体归 #86/#179,本票只定映射与前置):
58
58
 
59
59
  | 唤醒词 | verify 页 | 备注 |
60
60
  |---|---|---|
61
61
  | `记体脂(皮褶钳)`/`记体脂(外部测量)`/`补记体脂` | `body_composition_wizard.html` | 皮褶钳 7 点须先换算成 `bodyFatPct`(换算未移植,调用方算) |
62
62
  | `记围度`/`补记围度` | `body_measurements_wizard.html` | 13 围度 3 分组;记录级至少 1 项 |
63
63
  | `定训练计划` | `plan_builder_wizard.html` | **当前不可写**:95 键无训练计划写键(见下) |
64
+ | `设置档案`/`设活动量`/`改档案` | `calorie.view.profile-wizard`(页面装配在 `src/profile/setup.ts`) | 场景 07 三条写入词共用一页(改前值 + 待写项 + 活动量五档);改前值取自库内现值,写入仍走 `calorie.profile.set`/`calorie.profile.activity`/`calorie.profile.update` |
64
65
 
65
66
  | 场景 | 触发 | 行为 | CLI 落点(符号锚,可验) |
66
67
  |---|---|---|---|
@@ -68,7 +69,7 @@ calorie-cmd-read calorie.help.lookup --params '{"q":"看今日主页"}'
68
69
  | 2 预填 verify ⭐ | 同一类词**给了数据** | 出预填 wizard → 用户核对 → 复制 prompt → AI 调写键 | 预填键限白名单:非 `MEASURE_CAMEL` 字段即 `fail(2,'不支持字段: ')`(`cli/write.ts` `MEASURE_CAMEL` 白名单循环);皮褶钳缺 `bodyFatPct` 即 `fail(2,…)`;计划类先跑 `calorie.view.plan-wizard` 纯校验(`render/planPlate.ts` `buildPlanWizardView` → `fetch/plan.ts` `validatePlan`,返 `dryRun:true`/`checkedSessions:N`(输入含 N 个会话的已检查计数;≠通过数:坏计划也计 N,通过与否看 `errorCount`,只校验不写库)) |
69
70
  | 3 直接录 | 用户**明确**说「直接录」「我信你」 | 跳过 wizard,直接调写键,回 `receipt` 形 | 35 写键一律 `receipt`(`cli/write.ts` 模块头契约 + `out()` 组装 `{ok,message,receipt}`) |
70
71
 
71
- - **fallback(#86 落地前)**:verify 页当前**不存在**(#86 在途)。配置型 wizard 词命中且用户已给数据 → **不得直写**;改为**文字 verify**:逐字复述待写字段并请求确认,确认后再调写键;无确认则停在确认步。页面本体归 #86(3 个配置型 wizard 1 个 GIF 框选器;静态 HTML + `copyText`)——**本侧已引用,#86 落地后回引**:`calorie.view.measure-wizard`(记围度/补记围度;场景 1 空页/场景 2 预填)/`calorie.view.composition-wizard`(记体脂三词;来源+体脂率+皮褶钳 7 点)/`calorie.view.photo-log-wizard`(记身材照;纯配置)/`calorie.view.gif-planner`(查身材照/生成身材照GIF;照片框选+4 数字裁剪)。未落地前本 fallback 继续有效。
72
+ - **页面已落地(#86 四页 #179 档案预检页)**:verify 页**存在**,配置型 wizard 词命中即先出页,不再走文字 verify:`calorie.view.measure-wizard`(记围度/补记围度;场景 1 空页/场景 2 预填)/`calorie.view.composition-wizard`(记体脂三词;来源+体脂率+皮褶钳 7 点)/`calorie.view.photo-log-wizard`(记身材照;纯配置)/`calorie.view.gif-planner`(查身材照/生成身材照GIF;照片框选+4 数字裁剪)/`calorie.view.profile-wizard`(设置档案/改档案/设活动量;三条写入词共用一页,改前值取自库内现值,写入仍走三条写命令)。页面=静态 HTML + `copyText`,出页后由用户复制 prompt 回给 AI,再按场景调写键。四页实跑证据见 `docs/research/t163-precheck-precedent.md` §3。
72
73
  - 需多步交互的配置写词在路由层落 `non-exec` 桶,`reason` 逐字 `NON_EXEC_REASONS.wizard`(`triggers/routing.ts` `NON_EXEC_REASONS` 及其词表项);**训练计划 95 键无写键,当前不可写**——`NON_EXEC_REASONS.planWriteMissing` 逐字「命中但不执行:95 键无训练计划写键(旧链 --live-plan-* 系列),本仓执行层不承接计划写入。」,命中回 `non-exec` 并告知用户属二期,**不得**承诺 verify 后写入。
73
74
  - AUTO 块(本文件下方「联动速查」)列出的单命令写键只证明**写键可达**,**不豁免**本表的 verify 前置;分流仍按本表:有数据走场景 2,明确授权才走场景 3。
74
75
  - **禁止**:用户给了数据仍跳过 verify 直接调写键(数据看起来对也不例外)——v2.4.2 → v2.4.3 的根因就是这条。正解=按场景分流。
@@ -162,6 +163,7 @@ calorie-cmd-read calorie.help.lookup --params '{"q":"看今日主页"}'
162
163
  | calorie.view.predict | calorie.view.predict | stat | `calorie-cmd-read calorie.view.predict --params '{"start":"2026-08-23","end":"2026-09-07","horizonDays":30}'` |
163
164
  | 看落地训练进度 | calorie.view.process-progress | stat | `calorie-cmd-read calorie.view.process-progress` |
164
165
  | calorie.view.profile | calorie.view.profile | stat | `calorie-cmd-read calorie.view.profile` |
166
+ | 看档案预检 | calorie.view.profile-wizard | stat | `calorie-cmd-read calorie.view.profile-wizard` |
165
167
  | 查高热量排行 | calorie.view.ranking | stat | `calorie-cmd-read calorie.view.ranking --params '{"start":"2026-09-05","end":"2026-09-07"}'` |
166
168
  | 看复盘报告 | calorie.view.review-template | stat | `calorie-cmd-read calorie.view.review-template --params '{"start":"2026-09-01","end":"2026-09-07"}'` |
167
169
  | 查食品 | calorie.view.search | stat | `calorie-cmd-read calorie.view.search --params '{"keyword":"鸡胸"}'` |
@@ -179,13 +181,14 @@ calorie-cmd-read calorie.help.lookup --params '{"q":"看今日主页"}'
179
181
  | 删体重记录 | calorie.weight.remove | receipt | `calorie-cmd-read calorie.weight.remove --params '{"id":1}'` |
180
182
  | 改体重记录 | calorie.weight.update | receipt | `calorie-cmd-read calorie.weight.update --params '{"id":1,"kg":70.2}'` |
181
183
 
182
- 相关场景:calorie.body.composition-add、calorie.body.composition-remove、calorie.body.measure-add、calorie.body.measure-remove、calorie.diet.add、calorie.diet.batch、calorie.diet.copy、calorie.diet.remove、calorie.diet.remove-by-date、calorie.diet.remove-by-range、calorie.diet.remove-by-type、calorie.diet.update、calorie.diet.update-by-date、calorie.exercise.add、calorie.exercise.remove、calorie.exercise.update、calorie.goal.pause、calorie.goal.resume、calorie.goal.set、calorie.goal.water、calorie.goal.weight、calorie.help.center、calorie.help.lookup、calorie.history、calorie.photo.add、calorie.photo.compare、calorie.photo.detail、calorie.photo.gif、calorie.photo.list、calorie.photo.remove、calorie.photo.tag、calorie.product.add、calorie.product.deprecate、calorie.product.update、calorie.profile.activity、calorie.profile.set、calorie.profile.update、calorie.today、calorie.view.anomaly、calorie.view.batch-import-preview、calorie.view.body-composition、calorie.view.body-measure、calorie.view.calorie-trend、calorie.view.combined、calorie.view.composition-wizard、calorie.view.contraindication、calorie.view.dedupe、calorie.view.deficit、calorie.view.diet、calorie.view.diet-review、calorie.view.exercise、calorie.view.exercise-cardio、calorie.view.exercise-distribution、calorie.view.exercise-goal、calorie.view.exercise-recap、calorie.view.exercise-review、calorie.view.exercise-strength、calorie.view.exercise-trend、calorie.view.gif-planner、calorie.view.goal、calorie.view.goal-config、calorie.view.goal-expiring、calorie.view.goal-predict、calorie.view.goal-progress、calorie.view.goal-recommend、calorie.view.goal-status、calorie.view.goal-vs-actual、calorie.view.goal-weight、calorie.view.health、calorie.view.home、calorie.view.library、calorie.view.lint-health、calorie.view.long-trend、calorie.view.measure-wizard、calorie.view.nutrition-analysis、calorie.view.nutrition-detail、calorie.view.nutrition-ratio、calorie.view.photo-log-wizard、calorie.view.plan、calorie.view.plan-wizard、calorie.view.predict、calorie.view.process-progress、calorie.view.profile、calorie.view.ranking、calorie.view.review-template、calorie.view.search、calorie.view.six-factors、calorie.view.source-stats、calorie.view.today-water、calorie.view.volatility、calorie.view.weight、calorie.view.weight-compare、calorie.view.weight-history、calorie.view.weight-review、calorie.water.log、calorie.weight.batch、calorie.weight.log、calorie.weight.remove、calorie.weight.update(99 组合,key 字符串 skilllink 登记时冻结;内部 VIEW 下划线键仅渲染复用)。
184
+ 相关场景:calorie.body.composition-add、calorie.body.composition-remove、calorie.body.measure-add、calorie.body.measure-remove、calorie.diet.add、calorie.diet.batch、calorie.diet.copy、calorie.diet.remove、calorie.diet.remove-by-date、calorie.diet.remove-by-range、calorie.diet.remove-by-type、calorie.diet.update、calorie.diet.update-by-date、calorie.exercise.add、calorie.exercise.remove、calorie.exercise.update、calorie.goal.pause、calorie.goal.resume、calorie.goal.set、calorie.goal.water、calorie.goal.weight、calorie.help.center、calorie.help.lookup、calorie.history、calorie.photo.add、calorie.photo.compare、calorie.photo.detail、calorie.photo.gif、calorie.photo.list、calorie.photo.remove、calorie.photo.tag、calorie.product.add、calorie.product.deprecate、calorie.product.update、calorie.profile.activity、calorie.profile.set、calorie.profile.update、calorie.today、calorie.view.anomaly、calorie.view.batch-import-preview、calorie.view.body-composition、calorie.view.body-measure、calorie.view.calorie-trend、calorie.view.combined、calorie.view.composition-wizard、calorie.view.contraindication、calorie.view.dedupe、calorie.view.deficit、calorie.view.diet、calorie.view.diet-review、calorie.view.exercise、calorie.view.exercise-cardio、calorie.view.exercise-distribution、calorie.view.exercise-goal、calorie.view.exercise-recap、calorie.view.exercise-review、calorie.view.exercise-strength、calorie.view.exercise-trend、calorie.view.gif-planner、calorie.view.goal、calorie.view.goal-config、calorie.view.goal-expiring、calorie.view.goal-predict、calorie.view.goal-progress、calorie.view.goal-recommend、calorie.view.goal-status、calorie.view.goal-vs-actual、calorie.view.goal-weight、calorie.view.health、calorie.view.home、calorie.view.library、calorie.view.lint-health、calorie.view.long-trend、calorie.view.measure-wizard、calorie.view.nutrition-analysis、calorie.view.nutrition-detail、calorie.view.nutrition-ratio、calorie.view.photo-log-wizard、calorie.view.plan、calorie.view.plan-wizard、calorie.view.predict、calorie.view.process-progress、calorie.view.profile、calorie.view.profile-wizard、calorie.view.ranking、calorie.view.review-template、calorie.view.search、calorie.view.six-factors、calorie.view.source-stats、calorie.view.today-water、calorie.view.volatility、calorie.view.weight、calorie.view.weight-compare、calorie.view.weight-history、calorie.view.weight-review、calorie.water.log、calorie.weight.batch、calorie.weight.log、calorie.weight.remove、calorie.weight.update(100 组合,key 字符串 skilllink 登记时冻结;内部 VIEW 下划线键仅渲染复用)。
183
185
  身材照片 HELP 模块:skill-calorie/dist/render/photo.js(gallery/compare/viewer/gif + buildPhotoHelp/lookupPhotoHelp,现找直达可执行 exec)。
184
186
  <!-- HELP-AUTO-END -->
185
187
 
186
- ## HELP 现找与「卡路里HELP」速查台
188
+ ## HELP 交付与速查台
187
189
 
188
- - **「卡路里HELP」速查台**(Q9):`calorie-cmd-read calorie.help.center` 缺省 `mode=file` 出**完整 HTML 速查台**(436 场景/54 子功能/10 分组,卡级复制按钮;落 `data.output`,约 1 MB **只落盘**、不进 envelope);`--params '{"mode":"inline"}'` 出内嵌片段/`{"mode":"text"}'` 出纯文本索引;非法 `mode` 与 `q`+`mode` 同给一律 exit 2。
190
+ - **「卡路里HELP」=老技能同款 HELP 文件**(#139 起):`calorie-cmd-read calorie.help.center` 缺省即出 `卡路里_HELP_<时间戳>.html`(老命名,V4 三级目录壳,与老技能视觉一致;落 `data.output`,约 300 KB **只落盘**、不进 envelope)。**别再给它加参数**——缺省就是目的地交付物。
191
+ - **速查台(#88,须显式要)**:`--params '{"mode":"file"}'` 出完整 HTML 速查台(436 场景/54 子功能/10 分组,卡级复制按钮,约 1 MB,落 `卡路里_速查台_<时间戳>.html`);`{"mode":"inline"}` 出内嵌片段/`{"mode":"text"}` 出纯文本索引;非法 `mode` 与 `q`+`mode` 同给一律 exit 2。
189
192
  - **照片 10 键走 `q`**(不是 `mode`):`--params '{"q":"记身材照"}'` 现找、`{"q":""}` 全表,顺序跟 SCENE_09_PHOTO SoT 序;每条命中自带 `exec`(node 一行式,读 SKILLS_DB_PATH 库)+`legacyCli`(老家 python 原命令备查);模块 `skill-calorie/dist/render/photo.js`,函数须存在(单测逐条 import 断言)。
190
193
  - **通用唤醒词现找**:`calorie.help.lookup --params '{"q":"<唤醒词/分类/描述子串>"}'`(436 唤醒词全量,10 场景,空串抛,不返全表冒充命中)。
191
194
  - 二进制原样:照片只 render 文件名 <img> 引用 + fileExists 位,不嵌 base64;GIF 只出任务描述不碰二进制。
@@ -197,11 +200,11 @@ calorie-cmd-read calorie.help.lookup --params '{"q":"看今日主页"}'
197
200
 
198
201
  ## 公共安装器运行时(skills-cli 装完必读,#47)
199
202
 
200
- - 本仓库 `dist/` 不进 git:skills-cli 只把本目录(含本文件)装进 agent,不带可执行文件;“不走 npm”的只是 skill 发现这一步,运行时走 npm(`skill-calorie@0.2.0` 已发布)。
201
- - 取运行时二选一:`npm install -g skill-calorie@0.2.0`(一劳永逸),或免安装 `npx -p skill-calorie@0.2.0 calorie-cmd-read …`(每次现拉)。若 npm 报 EUNSUPPORTEDPROTOCOL(workspace:),说明已发布包待重发(发版流修,见 docs/public-installer-47.md「已发布包阻塞」),先用本仓构建产物验证链路。
203
+ - 本仓库 `dist/` 不进 git:skills-cli 只把本目录(含本文件)装进 agent,不带可执行文件;“不走 npm”的只是 skill 发现这一步,运行时走 npm(`skill-calorie@0.2.3` 已发布)。
204
+ - 取运行时二选一:`npm install -g skill-calorie@0.2.3`(一劳永逸),或免安装 `npx -p skill-calorie@0.2.3 calorie-cmd-read …`(每次现拉)。若 npm 报 EUNSUPPORTEDPROTOCOL(workspace:),说明已发布包待重发(发版流修,见 docs/public-installer-47.md「已发布包阻塞」),先用本仓构建产物验证链路。
202
205
  - HELP 现找→cmd_read→envelope→HTML 验证(sh 先 `export SKILLS_DB_PATH="$(mktemp -d)"`;Windows PowerShell 先 `$env:SKILLS_DB_PATH = "$env:TEMP\sk-test"`;node>=22.13;完整口径见 docs/public-installer-47.md):
203
206
  ```sh
204
207
  calorie-cmd-read calorie.help.lookup --params '{"q":"看今日主页"}'
205
208
  ```
206
209
  - stdout/落盘契约与「唯一出口(T11)」节同源(成功只一行 envelope JSON;HTML 落点见 `data.output`)。
207
- - 版本钉死登记:本节版本硬编码现为 `@0.2.0`(已随 #44 发版流同步;历史登记见 docs/public-installer-47.md「版本钉死登记」)。
210
+ - 版本钉死登记:本节版本硬编码现为 `@0.2.3`(已随 #44 发版流同步;历史登记见 docs/public-installer-47.md「版本钉死登记」)。
@@ -1,5 +1,5 @@
1
1
  import { FetchError } from '../fetch/errors.js';
2
- import { EX_ALIVE } from './utils.js';
2
+ import { BODY_ALIVE, EX_ALIVE } from './utils.js';
3
3
  const round = (n) => Math.round(n);
4
4
  const round2 = (n) => Math.round(n * 100) / 100;
5
5
  const round3 = (n) => Math.round(n * 1000) / 1000;
@@ -150,8 +150,8 @@ function strat(series, mode, a, b, db) {
150
150
  const end = series[series.length - 1].date;
151
151
  const deltas = [];
152
152
  for (const [col, label] of cols) {
153
- const first = db.prepare('SELECT ' + col + ' AS v FROM body_measurements WHERE date BETWEEN ? AND ? AND ' + col + ' IS NOT NULL AND is_deprecated = 0 ORDER BY date, id LIMIT 1').get(start, end);
154
- const last = db.prepare('SELECT ' + col + ' AS v FROM body_measurements WHERE date BETWEEN ? AND ? AND ' + col + ' IS NOT NULL AND is_deprecated = 0 ORDER BY date DESC, id DESC LIMIT 1').get(start, end);
153
+ const first = db.prepare('SELECT ' + col + ' AS v FROM body_measurements WHERE date BETWEEN ? AND ? AND ' + col + ' IS NOT NULL AND ' + BODY_ALIVE + ' ORDER BY date, id LIMIT 1').get(start, end);
154
+ const last = db.prepare('SELECT ' + col + ' AS v FROM body_measurements WHERE date BETWEEN ? AND ? AND ' + col + ' IS NOT NULL AND ' + BODY_ALIVE + ' ORDER BY date DESC, id DESC LIMIT 1').get(start, end);
155
155
  if (first?.v !== null && first?.v !== undefined && last?.v !== null && last?.v !== undefined) {
156
156
  deltas.push([label, round1(last.v - first.v)]);
157
157
  }
@@ -1 +1 @@
1
- {"version":3,"file":"cross.js","sourceRoot":"","sources":["../../src/analysis/cross.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cross.js","sourceRoot":"","sources":["../../src/analysis/cross.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { FetchError } from '../fetch/errors.js';
2
- import { EX_ALIVE, calcTdee, shiftISODate, todayISO } from './utils.js';
2
+ import { BODY_ALIVE, EX_ALIVE, calcTdee, shiftISODate, todayISO } from './utils.js';
3
3
  export const WATER_NAME = '💧水';
4
4
  const round1 = (n) => Math.round(n * 10) / 10;
5
5
  /** 窗口选择器:Nd / 本周/上周/今年…(老家别名 week_cur 等一并支持)/ custom / 默认 30d。
@@ -71,8 +71,8 @@ export function buildSeries(db, start, end) {
71
71
  const water = db.prepare('SELECT date, SUM(grams) AS v FROM food_log WHERE date BETWEEN ? AND ? AND food_name = ? GROUP BY date').all(start, end, WATER_NAME);
72
72
  const ex = db.prepare('SELECT date, SUM(calories_burned) AS v FROM exercise_log WHERE date BETWEEN ? AND ? AND ' + EX_ALIVE + ' GROUP BY date').all(start, end);
73
73
  const wrows = db.prepare('SELECT date, weight_kg AS v FROM weight_log WHERE date BETWEEN ? AND ? ORDER BY date, time ASC, id ASC').all(start, end);
74
- const bfrows = db.prepare('SELECT date, body_fat_pct AS v FROM body_composition WHERE date BETWEEN ? AND ? AND is_deprecated = 0 ORDER BY date, id ASC').all(start, end);
75
- const bmrows = db.prepare('SELECT date, waist_cm AS waist, hip_cm AS hip FROM body_measurements WHERE date BETWEEN ? AND ? AND is_deprecated = 0 ORDER BY date, id ASC').all(start, end);
74
+ const bfrows = db.prepare('SELECT date, body_fat_pct AS v FROM body_composition WHERE date BETWEEN ? AND ? AND ' + BODY_ALIVE + ' ORDER BY date, id ASC').all(start, end);
75
+ const bmrows = db.prepare('SELECT date, waist_cm AS waist, hip_cm AS hip FROM body_measurements WHERE date BETWEEN ? AND ? AND ' + BODY_ALIVE + ' ORDER BY date, id ASC').all(start, end);
76
76
  const goal = db.prepare('SELECT calorie_goal, water_goal FROM daily_goal WHERE id = 1').get();
77
77
  const dietBy = new Map(diet.map((r) => [r.date, r]));
78
78
  const waterBy = new Map(water.map((r) => [r.date, r.v]));
@@ -1 +1 @@
1
- {"version":3,"file":"series.js","sourceRoot":"","sources":["../../src/analysis/series.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"series.js","sourceRoot":"","sources":["../../src/analysis/series.ts"],"names":[],"mappings":"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"}
@@ -12,6 +12,17 @@
12
12
  * 口径依据:`docs/research/t120-softdelete-filter.md`(编排者裁定方向 1)。
13
13
  */
14
14
  export declare const EX_ALIVE = "COALESCE(is_deleted, 0) = 0";
15
+ /** #126 · 体脂/围度存活谓词(唯一来源):`body_composition`/`body_measurements`
16
+ * 软删行(`is_deprecated=1`)不计入任何用户可见统计。
17
+ *
18
+ * 与 #120 的 `EX_ALIVE` 同构:两表 `is_deprecated` 列可空(历史行可为 NULL),
19
+ * 故用 `COALESCE` 而非 `is_deprecated = 0`(后者会静默排除 NULL 活行)。
20
+ * 与 `nutrition_products` 口径对齐:该列 `NOT NULL`,`= 0` ≡ `COALESCE(...) = 0`。
21
+ * analysis 层(`series.ts`/`cross.ts`)统一内联本谓词;fetch 层
22
+ * (`fetch/body.ts`)内联同字面(fetch 不反向依赖 analysis,沿 `fetch/exercise.ts`
23
+ * `listWindow` 的内联惯例)。口径依据:`docs/research/t126-deprecated-null.md`。
24
+ */
25
+ export declare const BODY_ALIVE = "COALESCE(is_deprecated, 0) = 0";
15
26
  export declare const TDEE_ACTIVITY_FACTORS: Record<string, number>;
16
27
  export declare const ACTIVITY_LEVEL_LABELS: Record<string, string>;
17
28
  export declare function getActivityFactor(level?: string | null): number;
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/analysis/utils.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;;;;GAKG;AACH,eAAO,MAAM,QAAQ,gCAAgC,CAAC;AAEtD,eAAO,MAAM,qBAAqB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAMxD,CAAC;AAEF,eAAO,MAAM,qBAAqB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAMxD,CAAC;AAEF,wBAAgB,iBAAiB,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,CAG/D;AAED,sDAAsD;AACtD,wBAAgB,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EAAE,MAAM,GAAE,MAAe,EAAE,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,CAIjM;AAED,wBAAgB,QAAQ,IAAI,MAAM,CAEjC;AAED,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAInE;AAED,qDAAqD;AACrD,wBAAgB,SAAS,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,GAAG,IAAI,CAKrE"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/analysis/utils.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;;;;GAKG;AACH,eAAO,MAAM,QAAQ,gCAAgC,CAAC;AAEtD;;;;;;;;;GASG;AACH,eAAO,MAAM,UAAU,mCAAmC,CAAC;AAE3D,eAAO,MAAM,qBAAqB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAMxD,CAAC;AAEF,eAAO,MAAM,qBAAqB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAMxD,CAAC;AAEF,wBAAgB,iBAAiB,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,CAG/D;AAED,sDAAsD;AACtD,wBAAgB,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EAAE,MAAM,GAAE,MAAe,EAAE,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,CAIjM;AAED,wBAAgB,QAAQ,IAAI,MAAM,CAEjC;AAED,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAInE;AAED,qDAAqD;AACrD,wBAAgB,SAAS,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,GAAG,IAAI,CAKrE"}
@@ -12,6 +12,17 @@
12
12
  * 口径依据:`docs/research/t120-softdelete-filter.md`(编排者裁定方向 1)。
13
13
  */
14
14
  export const EX_ALIVE = 'COALESCE(is_deleted, 0) = 0';
15
+ /** #126 · 体脂/围度存活谓词(唯一来源):`body_composition`/`body_measurements`
16
+ * 软删行(`is_deprecated=1`)不计入任何用户可见统计。
17
+ *
18
+ * 与 #120 的 `EX_ALIVE` 同构:两表 `is_deprecated` 列可空(历史行可为 NULL),
19
+ * 故用 `COALESCE` 而非 `is_deprecated = 0`(后者会静默排除 NULL 活行)。
20
+ * 与 `nutrition_products` 口径对齐:该列 `NOT NULL`,`= 0` ≡ `COALESCE(...) = 0`。
21
+ * analysis 层(`series.ts`/`cross.ts`)统一内联本谓词;fetch 层
22
+ * (`fetch/body.ts`)内联同字面(fetch 不反向依赖 analysis,沿 `fetch/exercise.ts`
23
+ * `listWindow` 的内联惯例)。口径依据:`docs/research/t126-deprecated-null.md`。
24
+ */
25
+ export const BODY_ALIVE = 'COALESCE(is_deprecated, 0) = 0';
15
26
  export const TDEE_ACTIVITY_FACTORS = {
16
27
  sedentary: 1.2,
17
28
  light: 1.375,
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/analysis/utils.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;;;;GAKG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG,6BAA6B,CAAC;AAEtD,MAAM,CAAC,MAAM,qBAAqB,GAA2B;IAC3D,SAAS,EAAE,GAAG;IACd,KAAK,EAAE,KAAK;IACZ,QAAQ,EAAE,IAAI;IACd,MAAM,EAAE,KAAK;IACb,WAAW,EAAE,GAAG;CACjB,CAAC;AAEF,MAAM,CAAC,MAAM,qBAAqB,GAA2B;IAC3D,SAAS,EAAE,IAAI;IACf,KAAK,EAAE,MAAM;IACb,QAAQ,EAAE,MAAM;IAChB,MAAM,EAAE,IAAI;IACZ,WAAW,EAAE,MAAM;CACpB,CAAC;AAEF,MAAM,UAAU,iBAAiB,CAAC,KAAqB;IACrD,IAAI,CAAC,KAAK;QAAE,OAAO,qBAAqB,CAAC,QAAkB,CAAC;IAC5D,OAAO,qBAAqB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC,IAAK,qBAAqB,CAAC,QAAmB,CAAC;AAC1G,CAAC;AAED,sDAAsD;AACtD,MAAM,UAAU,QAAQ,CAAC,QAAmC,EAAE,QAAmC,EAAE,GAA8B,EAAE,SAAiB,MAAM,EAAE,aAA6B;IACvL,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ;QAAE,OAAO,IAAI,CAAC;IACxC,MAAM,GAAG,GAAG,EAAE,GAAG,QAAQ,GAAG,IAAI,GAAG,QAAQ,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC,GAAG,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IAC/F,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,iBAAiB,CAAC,aAAa,IAAI,UAAU,CAAC,CAAC,CAAC;AAC1E,CAAC;AAED,MAAM,UAAU,QAAQ;IACtB,OAAO,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AAC/C,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,GAAW,EAAE,SAAiB;IACzD,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,YAAY,CAAC,CAAC;IACzC,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,kBAAkB,GAAG,GAAG,CAAC,CAAC;IAC/D,OAAO,IAAI,IAAI,CAAC,CAAC,GAAG,SAAS,GAAG,QAAQ,CAAC,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AACvE,CAAC;AAED,qDAAqD;AACrD,MAAM,UAAU,SAAS,CAAC,CAA4B;IACpD,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC;IAC/C,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAC3B,IAAI,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;QAAE,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACxF,OAAO,CAAC,CAAC;AACX,CAAC"}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/analysis/utils.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;;;;GAKG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG,6BAA6B,CAAC;AAEtD;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,gCAAgC,CAAC;AAE3D,MAAM,CAAC,MAAM,qBAAqB,GAA2B;IAC3D,SAAS,EAAE,GAAG;IACd,KAAK,EAAE,KAAK;IACZ,QAAQ,EAAE,IAAI;IACd,MAAM,EAAE,KAAK;IACb,WAAW,EAAE,GAAG;CACjB,CAAC;AAEF,MAAM,CAAC,MAAM,qBAAqB,GAA2B;IAC3D,SAAS,EAAE,IAAI;IACf,KAAK,EAAE,MAAM;IACb,QAAQ,EAAE,MAAM;IAChB,MAAM,EAAE,IAAI;IACZ,WAAW,EAAE,MAAM;CACpB,CAAC;AAEF,MAAM,UAAU,iBAAiB,CAAC,KAAqB;IACrD,IAAI,CAAC,KAAK;QAAE,OAAO,qBAAqB,CAAC,QAAkB,CAAC;IAC5D,OAAO,qBAAqB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC,IAAK,qBAAqB,CAAC,QAAmB,CAAC;AAC1G,CAAC;AAED,sDAAsD;AACtD,MAAM,UAAU,QAAQ,CAAC,QAAmC,EAAE,QAAmC,EAAE,GAA8B,EAAE,SAAiB,MAAM,EAAE,aAA6B;IACvL,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ;QAAE,OAAO,IAAI,CAAC;IACxC,MAAM,GAAG,GAAG,EAAE,GAAG,QAAQ,GAAG,IAAI,GAAG,QAAQ,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC,GAAG,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IAC/F,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,iBAAiB,CAAC,aAAa,IAAI,UAAU,CAAC,CAAC,CAAC;AAC1E,CAAC;AAED,MAAM,UAAU,QAAQ;IACtB,OAAO,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AAC/C,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,GAAW,EAAE,SAAiB;IACzD,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,YAAY,CAAC,CAAC;IACzC,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,kBAAkB,GAAG,GAAG,CAAC,CAAC;IAC/D,OAAO,IAAI,IAAI,CAAC,CAAC,GAAG,SAAS,GAAG,QAAQ,CAAC,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AACvE,CAAC;AAED,qDAAqD;AACrD,MAAM,UAAU,SAAS,CAAC,CAA4B;IACpD,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC;IAC/C,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAC3B,IAAI,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;QAAE,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACxF,OAAO,CAAC,CAAC;AACX,CAAC"}
@@ -1,5 +1,6 @@
1
1
  #!/usr/bin/env node
2
2
  import type { DatabaseSync } from 'node:sqlite';
3
+ import type { HtmlLanding } from 'base-paint/save-html';
3
4
  import type { EnvelopeShape } from 'base-link-core';
4
5
  /** #83 · 该次分发的产物种类:`html`=HTML 产物(模板/壳渲染),`text`=结构化文本(渲染层已定文本交付)。 */
5
6
  export type DeliveryKind = 'html' | 'text';
@@ -7,6 +8,10 @@ export interface DispatchOut {
7
8
  data: Record<string, unknown>;
8
9
  html: string;
9
10
  deliveryKind?: DeliveryKind;
11
+ /** #139 · 该次产物的落点**意图**(目录 + 文件名主体):给定时绕过 `<中文command>` 命名(`output.ts:deliverHtml`),
12
+ * 仍走 `wx` 独占+同秒递补(#237 起由共用件 `base-paint/save-html` 仲裁);一个 key 出多种产物
13
+ * (HELP 文件/速查台/回执)时用它分开命名。 */
14
+ target?: HtmlLanding;
10
15
  }
11
16
  /** #41 · 测试直调出口(纯 CLI 同逻辑,不经过 argv/spawn;CLI 唯一出口仍为 main)。 */
12
17
  export declare function dispatch(key: string, params: Record<string, unknown>, db: DatabaseSync): DispatchOut;
@@ -1 +1 @@
1
- {"version":3,"file":"cmd_read.d.ts","sourceRoot":"","sources":["../../src/cli/cmd_read.ts"],"names":[],"mappings":";AAoBA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAiGhD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAIpD,sEAAsE;AACtE,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,MAAM,CAAC;AAC3C,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,CAAC,EAAE,YAAY,CAAC;CAC7B;AA0LD,8DAA8D;AAC9D,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,EAAE,EAAE,YAAY,GAAG,WAAW,CA+qBpG;AAuBD;;;;;yEAKyE;AACzE,wBAAgB,sBAAsB,CAAC,KAAK,EAAE;IAC5C,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,aAAa,CAAC;IACrB,GAAG,EAAE,WAAW,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;CAC9B,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CA+B1B"}
1
+ {"version":3,"file":"cmd_read.d.ts","sourceRoot":"","sources":["../../src/cli/cmd_read.ts"],"names":[],"mappings":";AAoBA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAiGhD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAIxD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAIpD,sEAAsE;AACtE,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,MAAM,CAAC;AAC3C,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B;;mCAE+B;IAC/B,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AA0LD,8DAA8D;AAC9D,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,EAAE,EAAE,YAAY,GAAG,WAAW,CA+sBpG;AAuBD;;;;;yEAKyE;AACzE,wBAAgB,sBAAsB,CAAC,KAAK,EAAE;IAC5C,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,aAAa,CAAC;IACrB,GAAG,EAAE,WAAW,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;CAC9B,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CA+B1B"}
@@ -19,7 +19,7 @@
19
19
  import { existsSync } from 'node:fs';
20
20
  import { join } from 'node:path';
21
21
  import { openDb } from '../schema.js';
22
- import { DB_FILENAME } from '../paths.js';
22
+ import { DB_FILENAME, resolveDbDir } from '../paths.js';
23
23
  import { listMeals } from '../fetch/diet.js';
24
24
  import { getCalorieHistory } from '../fetch/history.js';
25
25
  import { FetchError } from '../fetch/errors.js';
@@ -33,7 +33,9 @@ import { buildBodyCompositionView, buildBodyMeasureView } from '../render/bodyPl
33
33
  import { buildPlanView, buildPlanWizardView, buildExerciseGoalView } from '../render/planPlate.js';
34
34
  import { buildGoalExpiringView, buildGoalPredictView, buildGoalVsActualView } from '../render/goalExtra.js';
35
35
  import { buildPredictView, buildAnomalyView, buildContraView, buildDedupeView } from '../render/insightPlate.js';
36
- import { buildProfileView } from '../render/profilePlate.js';
36
+ // #179 · 档案读链取数搬进能力目录 `src/profile/`(同一个取数不留两处)。
37
+ import { buildProfileView, buildProfileViewDoc } from '../profile/view.js';
38
+ import { buildProfileSettingDoc, buildProfileSettingView } from '../profile/setup.js';
37
39
  import { buildCombinedAnalysis, buildDeficitPlate, buildDietReview } from '../render/analysisPlate.js';
38
40
  import { dietFoodRanking, dietMacroRatio } from '../analysis/diet.js';
39
41
  import { buildAllRankingsDoc, buildDedupeDoc, buildDietReviewDoc, buildHealthDoc, buildLibraryDoc, buildRankingDoc, buildSearchDoc, buildTodayDietDoc, buildViewDietDoc, } from '../render/dietDocs.js';
@@ -54,7 +56,9 @@ import { buildCompareData, buildGalleryData, buildGifTask, buildViewerData } fro
54
56
  import { buildPhotoHelp, lookupPhotoHelp } from '../render/help.js';
55
57
  // #91 · 全量速查台(Q9):只读消费 #88 的 `render/helpCenter.js`(三态同源,零改动)。
56
58
  import { HELP_CENTER_MODES, buildHelpSceneData, renderHelpCenterHtml } from '../render/helpCenter.js';
57
- import { renderGalleryHtml, renderCompareHtml, renderViewerHtml, renderGifHtml, renderPhotoHelpHtml, renderHelpLookupHtml, renderErrorHtml, renderGoalConfigHtml, renderGoalRecommendHtml, renderGoalWeightHtml, renderGoalProgressHtml, renderGoalStatusHtml, renderGoalHtml, renderHomeHtml, renderPlanHtml, renderPlanWizardHtml, renderGoalExpiringHtml, renderGoalVsActualHtml, renderProfileHtml, } from '../render/html.js';
59
+ import { HELP_FILE_STEM, buildHelpFileData, renderHelpFileHtml } from '../render/helpFile.js';
60
+ import { SHEET_FILE_STEM, HELP_HTML_DIR_NAME } from '../render/helpPaths.js';
61
+ import { renderGalleryHtml, renderCompareHtml, renderViewerHtml, renderGifHtml, renderPhotoHelpHtml, renderHelpLookupHtml, renderErrorHtml, renderGoalConfigHtml, renderGoalRecommendHtml, renderGoalWeightHtml, renderGoalProgressHtml, renderGoalStatusHtml, renderGoalHtml, renderHomeHtml, renderPlanHtml, renderPlanWizardHtml, renderGoalExpiringHtml, renderGoalVsActualHtml, } from '../render/html.js';
58
62
  import { assertStatMetrics, buildDelivery, withDelivery } from '../render/envelope.js';
59
63
  import { buildErrorReceipt } from '../render/receipt.js';
60
64
  import { buildDataText } from 'base-paint';
@@ -509,6 +513,14 @@ export function dispatch(key, params, db) {
509
513
  });
510
514
  return { data: { metrics }, html: buildGifPlannerDoc(v) };
511
515
  }
516
+ case 'calorie.view.profile-wizard': {
517
+ const v = buildProfileSettingView(db, params);
518
+ const metrics = nums({
519
+ filledCount: v.filledCount, hasProfile: v.before ? 1 : 0,
520
+ latestWeightKg: v.latestWeightKg, activityLevels: v.activityChoices.length,
521
+ });
522
+ return { data: { metrics }, html: buildProfileSettingDoc(v) };
523
+ }
512
524
  case 'calorie.view.lint-health': {
513
525
  const v = buildLintHealthView(db);
514
526
  const metrics = nums({
@@ -729,8 +741,13 @@ export function dispatch(key, params, db) {
729
741
  return { data: { summary: 'GIF 任务:标签 ' + gif.tag + ' 共 ' + gif.photoCount + ' 张(' + (gif.firstDate ?? '—') + ' ~ ' + (gif.lastDate ?? '—') + ')· ' + gif.note }, html: renderGifHtml(gif) };
730
742
  }
731
743
  case 'calorie.help.center': {
732
- // #91 · Q9:本键承载**全量速查台**(#88 壳,三态同源);**照片 10 键兼容走 `q`**(既有语义逐字不变)。
733
- // D6:交付形态**显式** `mode`(`file`/`inline`/`text`),不靠猜、不从别的参数推;非法值即 exit 2。
744
+ // #139 · 本键出**两种产物**,靠 `mode` 分流(旧地图口径「缺省=速查台」已被 #131 新图准则覆盖:
745
+ // Q2「整个卡路里只有一个 HELP」+ Q17「比对以老实物为准」):
746
+ // 缺省(不给 `mode`)=「卡路里help」的交付物:老实物同款 V4 三级目录 HELP 文件
747
+ // (`卡路里_HELP_<TS>.html`,与老技能同名同视觉——地图目的地①②就落在这一支);
748
+ // 显式 `mode`=#88 全量速查台三态(`file`/`inline`/`text`,内容与语义逐字不变),
749
+ // 落 `卡路里_速查台_<TS>.html`(与 HELP 文件分名,两份产物不撞车)。
750
+ // D6:`mode` 不靠猜、不从别的参数推,非法值即 exit 2;`q`=照片 10 键现找(既有语义逐字不变)。
734
751
  const q = optStr(params, 'q') ?? optStr(params, 'keyword') ?? undefined;
735
752
  const modeRaw = optStr(params, 'mode');
736
753
  const photoLookup = q !== undefined && q !== '';
@@ -746,8 +763,23 @@ export function dispatch(key, params, db) {
746
763
  const items = hits.map((h) => ({ wakeWord: h.wakeWord, key: h.key, desc: h.desc, exec: h.exec }));
747
764
  return { data: { items, total: items.length }, html: renderPhotoHelpHtml(hits, q) };
748
765
  }
749
- // 全量速查台:缺省 `file`(#88 的缺省同值);`text` 态把文本一并回传(file/inline 只回落点,不塞 1 MB)。
750
- const mode = (modeRaw ?? 'file');
766
+ const now = new Date();
767
+ if (modeRaw === undefined) {
768
+ // 缺省:老实物同款 HELP 文件(5 键 JSON → V4 三级目录壳)。落点走 `target`——本键的
769
+ // <中文command>(注册表 title)另有其物,不能拿来命名这份产物。
770
+ const html = renderHelpFileHtml(buildHelpFileData(now));
771
+ const data = {
772
+ ...helpCenterIndex(buildHelpSceneData()),
773
+ mode: 'file',
774
+ bytes: Buffer.byteLength(html, 'utf8'),
775
+ };
776
+ return {
777
+ data, html,
778
+ target: { dir: join(resolveDbDir(), HELP_HTML_DIR_NAME), stem: HELP_FILE_STEM },
779
+ };
780
+ }
781
+ // 全量速查台:须显式 `mode`;`text` 态把文本一并回传(file/inline 只回落点,不塞 1 MB)。
782
+ const mode = modeRaw;
751
783
  if (!HELP_CENTER_MODES.includes(mode)) {
752
784
  fail(2, '参数 mode 非法(' + String(mode) + '):须为 ' + HELP_CENTER_MODES.join('/'));
753
785
  }
@@ -761,7 +793,10 @@ export function dispatch(key, params, db) {
761
793
  if (mode === 'text')
762
794
  data['text'] = rendered.html;
763
795
  // #83 · 渲染层已定文本交付:产物即文本(③ 文本态之一),交付装配层据此走文本通道。
764
- return { data, html: rendered.html, deliveryKind: mode === 'text' ? 'text' : 'html' };
796
+ return {
797
+ data, html: rendered.html, deliveryKind: mode === 'text' ? 'text' : 'html',
798
+ target: { dir: join(resolveDbDir(), HELP_HTML_DIR_NAME), stem: SHEET_FILE_STEM },
799
+ };
765
800
  }
766
801
  case 'calorie.help.lookup': {
767
802
  const q = needStr(params, 'q');
@@ -953,7 +988,8 @@ export function dispatch(key, params, db) {
953
988
  hasGoal: v.hasGoal ? 1 : 0, latestWeightKg: v.latestWeightKg,
954
989
  calorieGoal: v.nutrition?.calorie_goal,
955
990
  });
956
- return { data: { metrics }, html: renderProfileHtml(v) };
991
+ // #179 · 结果页换整页装配(原 `renderProfileHtml` 只出 `<section>` 片段,双击打不开)。
992
+ return { data: { metrics }, html: buildProfileViewDoc(v) };
957
993
  }
958
994
  default:
959
995
  fail(3, '未知 calorie key:' + key);
@@ -997,7 +1033,7 @@ export function buildDeliveredEnvelope(input) {
997
1033
  // 渲染层已定文本交付的键(#91 `help.center` text 态)**保留既有落盘**(`data.output` 指向该文本文件);
998
1034
  // 其余键的文本态只走 envelope(③ 产物=结构化文本,不落 HTML 文件)。
999
1035
  if (out.deliveryKind === 'text') {
1000
- const d = deliverHtml({ key, params, explicit: input.explicit, html: text });
1036
+ const d = deliverHtml({ key, params, explicit: input.explicit, target: out.target, html: text });
1001
1037
  if (d.mode === 'file')
1002
1038
  data['output'] = d.path;
1003
1039
  return withDelivery(buildEnvelope(key, shape, data), buildDelivery({
@@ -1008,7 +1044,7 @@ export function buildDeliveredEnvelope(input) {
1008
1044
  mode: 'text', shape, html: text, bytes: Buffer.byteLength(text, 'utf8'), template: 'text',
1009
1045
  }));
1010
1046
  }
1011
- const d = deliverHtml({ key, params, explicit: input.explicit, html });
1047
+ const d = deliverHtml({ key, params, explicit: input.explicit, target: out.target, html });
1012
1048
  const data = d.mode === 'file'
1013
1049
  ? { ...out.data, output: d.path }
1014
1050
  : { ...out.data, html };