skill-calorie 0.2.0 → 0.2.2

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 (130) hide show
  1. package/SKILL.md +54 -26
  2. package/dist/analysis/anomaly/common.d.ts.map +1 -1
  3. package/dist/analysis/anomaly/common.js +2 -1
  4. package/dist/analysis/anomaly/common.js.map +1 -1
  5. package/dist/analysis/cross.d.ts.map +1 -1
  6. package/dist/analysis/cross.js +3 -2
  7. package/dist/analysis/cross.js.map +1 -1
  8. package/dist/analysis/deficit.d.ts.map +1 -1
  9. package/dist/analysis/deficit.js +4 -0
  10. package/dist/analysis/deficit.js.map +1 -1
  11. package/dist/analysis/diet.js +2 -2
  12. package/dist/analysis/diet.js.map +1 -1
  13. package/dist/analysis/exercise.js +5 -5
  14. package/dist/analysis/exercise.js.map +1 -1
  15. package/dist/analysis/review.js +2 -2
  16. package/dist/analysis/review.js.map +1 -1
  17. package/dist/analysis/series.d.ts +7 -1
  18. package/dist/analysis/series.d.ts.map +1 -1
  19. package/dist/analysis/series.js +22 -6
  20. package/dist/analysis/series.js.map +1 -1
  21. package/dist/analysis/utils.d.ts +7 -0
  22. package/dist/analysis/utils.d.ts.map +1 -1
  23. package/dist/analysis/utils.js +7 -0
  24. package/dist/analysis/utils.js.map +1 -1
  25. package/dist/analysis/weightCompare3.js +2 -2
  26. package/dist/analysis/weightCompare3.js.map +1 -1
  27. package/dist/cli/cmd_read.d.ts +21 -3
  28. package/dist/cli/cmd_read.d.ts.map +1 -1
  29. package/dist/cli/cmd_read.js +460 -54
  30. package/dist/cli/cmd_read.js.map +1 -1
  31. package/dist/cli/keys.d.ts +89 -1
  32. package/dist/cli/keys.d.ts.map +1 -1
  33. package/dist/cli/keys.js +30 -0
  34. package/dist/cli/keys.js.map +1 -1
  35. package/dist/cli/write.d.ts +12 -9
  36. package/dist/cli/write.d.ts.map +1 -1
  37. package/dist/cli/write.js +133 -48
  38. package/dist/cli/write.js.map +1 -1
  39. package/dist/output.d.ts +55 -1
  40. package/dist/output.d.ts.map +1 -1
  41. package/dist/output.js +203 -5
  42. package/dist/output.js.map +1 -1
  43. package/dist/render/dietDocs.d.ts +45 -0
  44. package/dist/render/dietDocs.d.ts.map +1 -0
  45. package/dist/render/dietDocs.js +561 -0
  46. package/dist/render/dietDocs.js.map +1 -0
  47. package/dist/render/envelope.d.ts +32 -6
  48. package/dist/render/envelope.d.ts.map +1 -1
  49. package/dist/render/envelope.js +71 -0
  50. package/dist/render/envelope.js.map +1 -1
  51. package/dist/render/exercisePort.d.ts +161 -0
  52. package/dist/render/exercisePort.d.ts.map +1 -0
  53. package/dist/render/exercisePort.js +395 -0
  54. package/dist/render/exercisePort.js.map +1 -0
  55. package/dist/render/goal.d.ts.map +1 -1
  56. package/dist/render/goal.js +13 -2
  57. package/dist/render/goal.js.map +1 -1
  58. package/dist/render/goalPlate.d.ts +1 -1
  59. package/dist/render/goalPlate.d.ts.map +1 -1
  60. package/dist/render/goalPlate.js +5 -1
  61. package/dist/render/goalPlate.js.map +1 -1
  62. package/dist/render/helpCenter.d.ts +104 -0
  63. package/dist/render/helpCenter.d.ts.map +1 -0
  64. package/dist/render/helpCenter.js +386 -0
  65. package/dist/render/helpCenter.js.map +1 -0
  66. package/dist/render/html.d.ts.map +1 -1
  67. package/dist/render/html.js +2 -1
  68. package/dist/render/html.js.map +1 -1
  69. package/dist/render/index.d.ts +3 -0
  70. package/dist/render/index.d.ts.map +1 -1
  71. package/dist/render/index.js +2 -0
  72. package/dist/render/index.js.map +1 -1
  73. package/dist/render/nutritionPort.d.ts +89 -0
  74. package/dist/render/nutritionPort.d.ts.map +1 -0
  75. package/dist/render/nutritionPort.js +183 -0
  76. package/dist/render/nutritionPort.js.map +1 -0
  77. package/dist/render/nutritionPortDocs.d.ts +6 -0
  78. package/dist/render/nutritionPortDocs.d.ts.map +1 -0
  79. package/dist/render/nutritionPortDocs.js +317 -0
  80. package/dist/render/nutritionPortDocs.js.map +1 -0
  81. package/dist/render/photo.d.ts.map +1 -1
  82. package/dist/render/photo.js +5 -1
  83. package/dist/render/photo.js.map +1 -1
  84. package/dist/render/planPlate.d.ts +2 -1
  85. package/dist/render/planPlate.d.ts.map +1 -1
  86. package/dist/render/planPlate.js +6 -1
  87. package/dist/render/planPlate.js.map +1 -1
  88. package/dist/render/receipt.d.ts +47 -1
  89. package/dist/render/receipt.d.ts.map +1 -1
  90. package/dist/render/receipt.js +67 -3
  91. package/dist/render/receipt.js.map +1 -1
  92. package/dist/render/sportDocs.d.ts +14 -0
  93. package/dist/render/sportDocs.d.ts.map +1 -0
  94. package/dist/render/sportDocs.js +540 -0
  95. package/dist/render/sportDocs.js.map +1 -0
  96. package/dist/render/sportPortDocs.d.ts +8 -0
  97. package/dist/render/sportPortDocs.d.ts.map +1 -0
  98. package/dist/render/sportPortDocs.js +468 -0
  99. package/dist/render/sportPortDocs.js.map +1 -0
  100. package/dist/render/trendDocs.d.ts +11 -0
  101. package/dist/render/trendDocs.d.ts.map +1 -0
  102. package/dist/render/trendDocs.js +445 -0
  103. package/dist/render/trendDocs.js.map +1 -0
  104. package/dist/render/trendMiscPort.d.ts +127 -0
  105. package/dist/render/trendMiscPort.d.ts.map +1 -0
  106. package/dist/render/trendMiscPort.js +277 -0
  107. package/dist/render/trendMiscPort.js.map +1 -0
  108. package/dist/render/trendMiscPortDocs.d.ts +10 -0
  109. package/dist/render/trendMiscPortDocs.d.ts.map +1 -0
  110. package/dist/render/trendMiscPortDocs.js +397 -0
  111. package/dist/render/trendMiscPortDocs.js.map +1 -0
  112. package/dist/render/wizardPort.d.ts +125 -0
  113. package/dist/render/wizardPort.d.ts.map +1 -0
  114. package/dist/render/wizardPort.js +393 -0
  115. package/dist/render/wizardPort.js.map +1 -0
  116. package/dist/render/wizardPortDocs.d.ts +6 -0
  117. package/dist/render/wizardPortDocs.d.ts.map +1 -0
  118. package/dist/render/wizardPortDocs.js +274 -0
  119. package/dist/render/wizardPortDocs.js.map +1 -0
  120. package/dist/triggers/routing.d.ts +21 -21
  121. package/dist/triggers/routing.d.ts.map +1 -1
  122. package/dist/triggers/routing.js +60 -30
  123. package/dist/triggers/routing.js.map +1 -1
  124. package/package.json +2 -2
  125. package/templates/diet.html +2 -2
  126. package/templates/exercise.html +2 -2
  127. package/templates/goal.html +2 -2
  128. package/templates/help.html +2 -2
  129. package/templates/home.html +2 -2
  130. package/templates/photo-gallery.html +2 -2
@@ -0,0 +1,274 @@
1
+ /** #86 · wizard 4 页 HTML 填充器(D1 静态 HTML + copyText)。
2
+ *
3
+ * 包裹约定(沿 #111/#112/#113,不新增):
4
+ * sharedCss = buildStyleSheet().css + blocksCss(),不走 extraCss;
5
+ * 复制文本 metrics 块一律 buildDataText(#77 契约):stat 投影只收确定数字。
6
+ * 用户路径的复制=prompt 预览(renderPreBlock)+复制按钮(render/copy.ts 的
7
+ * copyActionHtml,走 Base P0 双通道,禁本地改写)——旧模板 btn-copy+copyText
8
+ * 的新架构同形(B-11 复制区;行为归宿主 B7,本层零 JS)。
9
+ * 表单=renderParamForm 预填值(B-09 静态 label+input,零 JS;无 select 控件,
10
+ * 来源/性别等以下拉候选写进 hint,B7 边界)。
11
+ * 本层不做取数(数据由 render/wizardPort.ts 备齐),空库不返空页(recent 为空即空态行)。
12
+ */
13
+ import { blocksCss, renderCopyBlock, renderDataTable, renderDisclosure, renderEmptyBlock, renderKpiGrid, renderPageShell, renderParamForm, renderPreBlock, } from 'base-paint/blocks';
14
+ import { buildDataText, buildSharedHelpersJs, buildStyleSheet, fillTemplate } from 'base-paint';
15
+ import { PHOTO_LOG_TAGS } from './wizardPort.js';
16
+ import { WIZARD_MEASURE_CAMEL, WIZARD_MEASURE_LABELS } from './wizardPort.js';
17
+ import { copyActionHtml } from './copy.js';
18
+ /** envelope 头(值冻结对齐 cli/keys.ts ENVELOPE_VERSION/CALORIE_SKILL;测试钉死一致)。 */
19
+ const DOC_VERSION = '0.1.0';
20
+ const DOC_SKILL = 'calorie';
21
+ /** 内容页壳(裸标记+CONTENT 槽;包裹约定:资产裸文本+填充器包裹,标记不得预包裹)。
22
+ * wrap 带 ilife-page 兼容既有 --html 断言。 */
23
+ const DOC_SHELL = '<!doctype html>\n<html lang="zh-CN">\n<head>\n<meta charset="utf-8">\n' +
24
+ '<meta name="viewport" content="width=device-width,initial-scale=1">\n' +
25
+ '<title>卡路里·配置向导</title>\n<!--SHARED-CSS-->\n</head>\n<body>\n' +
26
+ '<div class="wrap ilife-page">\n<!--CONTENT-->\n</div>\n<!--SHARED-HELPERS-->\n</body>\n</html>';
27
+ function assemble(title, eyebrow, subtitle, content) {
28
+ const body = renderPageShell({
29
+ title,
30
+ ...(eyebrow ? { eyebrow } : {}),
31
+ ...(subtitle ? { subtitle } : {}),
32
+ content,
33
+ });
34
+ return fillTemplate({
35
+ template: DOC_SHELL,
36
+ assets: { sharedCssText: buildStyleSheet().css + '\n' + blocksCss(), sharedHelpersJs: buildSharedHelpersJs() },
37
+ content: body,
38
+ }).html;
39
+ }
40
+ /** 复制投影 stat-metrics 只收确定数字(冻结口径:null/undefined 不进投影)。 */
41
+ function metricsOf(obj) {
42
+ const out = {};
43
+ for (const [k, v] of Object.entries(obj)) {
44
+ if (v !== null && v !== undefined)
45
+ out[k] = v;
46
+ }
47
+ return out;
48
+ }
49
+ function copyBlock(key, title, input) {
50
+ void key;
51
+ return renderCopyBlock({ title, dataText: buildDataText(input) });
52
+ }
53
+ /** prompt 预览+复制按钮(旧模板 prompt-box+btn-copy 的同形;复制执行走共享委派)。 */
54
+ function promptCopy(prompt) {
55
+ return renderPreBlock({ label: '复制 prompt(必走)', command: prompt }) + copyActionHtml(prompt);
56
+ }
57
+ function fmtDate(d) {
58
+ return d;
59
+ }
60
+ /* ── 1. 记围度 wizard ── */
61
+ const MEASURE_GROUPS = [
62
+ { title: '上身围度(5 项)', fields: ['chestCm', 'waistCm', 'abdomenCm', 'hipCm', 'shoulderCm'] },
63
+ { title: '下身围度(4 项)', fields: ['leftThighCm', 'rightThighCm', 'leftCalfCm', 'rightCalfCm'] },
64
+ { title: '手臂围度(4 项)', fields: ['leftArmCm', 'rightArmCm', 'leftForearmCm', 'rightForearmCm'] },
65
+ ];
66
+ function measureForm(v) {
67
+ const valOf = (camel) => {
68
+ const hit = v.filled.find((f) => f.camel === camel);
69
+ return hit ? String(hit.value) : '';
70
+ };
71
+ const head = renderParamForm({
72
+ description: '测量日期(默认今天;补记历史日期同样适用)+备注(可选)',
73
+ fields: [
74
+ { name: 'date', label: '测量日期', value: v.date, hint: 'YYYY-MM-DD', required: true },
75
+ { name: 'note', label: '备注', value: v.note ?? '', hint: '如:早上空腹 / 减脂期第 30 天' },
76
+ ],
77
+ });
78
+ const groups = MEASURE_GROUPS.map((g) => renderDisclosure({
79
+ title: g.title + '(已填 ' + g.fields.filter((f) => valOf(f) !== '').length + '/' + g.fields.length + ')',
80
+ contentHtml: renderParamForm({
81
+ fields: g.fields.map((camel) => ({
82
+ name: WIZARD_MEASURE_CAMEL[camel],
83
+ label: WIZARD_MEASURE_LABELS[camel] + '(cm)',
84
+ value: valOf(camel),
85
+ hint: '如 95.0',
86
+ })),
87
+ }),
88
+ })).join('');
89
+ return head + groups;
90
+ }
91
+ function measureRecent(v) {
92
+ if (!v.recent)
93
+ return renderEmptyBlock({ text: '暂无围度记录(首次记录:填好上方至少 1 项后复制 prompt)' });
94
+ const cells = Object.entries(v.recent.values)
95
+ .filter(([, n]) => n !== null)
96
+ .map(([camel, n]) => WIZARD_MEASURE_LABELS[camel] + ' ' + n + 'cm');
97
+ return renderDisclosure({
98
+ title: '最近一次:' + fmtDate(v.recent.date),
99
+ contentHtml: cells.length > 0 ? cells.join(' · ') : '(该记录无围度明细)',
100
+ });
101
+ }
102
+ export function buildMeasureWizardDoc(v) {
103
+ const content = [
104
+ renderKpiGrid([
105
+ { label: '已填', value: v.filledCount + '/13 项', detail: '至少 1 项必填' },
106
+ { label: '日期', value: fmtDate(v.date) },
107
+ { label: '最近', value: v.recent ? fmtDate(v.recent.date) : '无记录' },
108
+ ]),
109
+ measureRecent(v),
110
+ measureForm(v),
111
+ promptCopy(v.prompt),
112
+ copyBlock('x', '复制数据', {
113
+ envelope: {
114
+ version: DOC_VERSION, skill: DOC_SKILL, shape: 'stat', key: 'calorie.view.measure-wizard',
115
+ data: { metrics: metricsOf({ filledCount: v.filledCount, hasRecent: v.recent ? 1 : 0 }) },
116
+ },
117
+ }),
118
+ ].join('');
119
+ return assemble('记围度', '配置型 wizard · 填表→复制 prompt→AI 写库', '13 部位分 3 组,量了哪项填哪项', content);
120
+ }
121
+ /* ── 2. 记体脂 wizard ── */
122
+ function compositionForm(v) {
123
+ const calVal = (f) => {
124
+ const hit = v.calipers.find((c) => c.field === f);
125
+ return hit ? String(hit.value) : '';
126
+ };
127
+ const caliperFields = [
128
+ { f: 'caliper_chest_mm', label: '胸部(mm)' }, { f: 'caliper_abdominal_mm', label: '腹部(mm)' },
129
+ { f: 'caliper_thigh_mm', label: '大腿(mm)' }, { f: 'caliper_tricep_mm', label: '三头肌(mm)' },
130
+ { f: 'caliper_subscapular_mm', label: '肩胛下(mm)' }, { f: 'caliper_suprailiac_mm', label: '髂上(mm)' },
131
+ { f: 'caliper_midaxillary_mm', label: '腋中线(mm)' },
132
+ ];
133
+ return renderParamForm({
134
+ description: '日期+来源(必填)+体脂率实测值(必填,换算未移植,直传实测值)',
135
+ fields: [
136
+ { name: 'date', label: '日期', value: v.date, hint: 'YYYY-MM-DD', required: true },
137
+ { name: 'source', label: '来源', value: v.source ?? '', hint: 'home_caliper / hospital / gym(皮褶钳/医院/健身房)', required: true },
138
+ { name: 'age', label: '年龄', value: v.age === null ? '' : String(v.age), hint: '体脂率公式需要,如 30' },
139
+ { name: 'sex', label: '性别', value: v.sex ?? '', hint: 'male / female(男/女)' },
140
+ { name: 'body_fat_pct', label: '体脂率 %', value: v.bodyFatPct === null ? '' : String(v.bodyFatPct), hint: '(0, 60),如 18.5', required: true },
141
+ { name: 'note', label: '备注', value: v.note ?? '', hint: '如:早上空腹 / Jackson-Pollock 7 点法' },
142
+ ],
143
+ }) + renderDisclosure({
144
+ title: '皮褶钳 7 点(仅来源=home_caliper,已填 ' + v.calipers.length + '/7)',
145
+ contentHtml: renderParamForm({
146
+ fields: caliperFields.map((c) => ({ name: c.f, label: c.label, value: calVal(c.f), hint: '(0, 100) mm' })),
147
+ }),
148
+ });
149
+ }
150
+ function compositionRecent(v) {
151
+ if (!v.recent)
152
+ return renderEmptyBlock({ text: '暂无体脂记录(首次记录:填好上方必填后复制 prompt)' });
153
+ return renderDisclosure({
154
+ title: '最近一次:' + fmtDate(v.recent.date),
155
+ contentHtml: '体脂率 ' + (v.recent.bodyFatPct === null ? '—' : v.recent.bodyFatPct + '%') + ' · 来源 ' + (v.recent.source ?? '—'),
156
+ });
157
+ }
158
+ export function buildCompositionWizardDoc(v) {
159
+ const content = [
160
+ renderKpiGrid([
161
+ { label: '来源', value: v.sourceLabel ?? '未选', detail: v.source ?? '' },
162
+ { label: '体脂率', value: v.bodyFatPct === null ? '—' : v.bodyFatPct + '%', detail: v.sum7 === null ? '' : '7 点总和 ' + v.sum7 + ' mm' },
163
+ { label: '最近', value: v.recent ? fmtDate(v.recent.date) : '无记录' },
164
+ ]),
165
+ compositionRecent(v),
166
+ compositionForm(v),
167
+ promptCopy(v.prompt),
168
+ copyBlock('x', '复制数据', {
169
+ envelope: {
170
+ version: DOC_VERSION, skill: DOC_SKILL, shape: 'stat', key: 'calorie.view.composition-wizard',
171
+ data: {
172
+ metrics: metricsOf({
173
+ filledCount: (v.source ? 1 : 0) + (v.bodyFatPct === null ? 0 : 1) + v.calipers.length,
174
+ caliperCount: v.calipers.length, sum7: v.sum7, hasRecent: v.recent ? 1 : 0,
175
+ }),
176
+ },
177
+ },
178
+ }),
179
+ ].join('');
180
+ return assemble('记体脂', '配置型 wizard · 填表→复制 prompt→AI 写库', '皮褶钳 7 点先换算成体脂率(换算未移植,调用方算好直传)', content);
181
+ }
182
+ /* ── 3. 记身材照 wizard(纯配置) ── */
183
+ export function buildPhotoLogWizardDoc(v) {
184
+ const content = [
185
+ renderKpiGrid([
186
+ { label: '照片', value: v.srcPaths.length + ' 张', detail: '至多 20 张' },
187
+ { label: 'tag', value: v.tag ?? '未填', detail: '同一类用同一 tag' },
188
+ ]),
189
+ renderDisclosure({
190
+ title: '常用 tag(8 个,填 tag 栏其一)',
191
+ contentHtml: PHOTO_LOG_TAGS.join(' · '),
192
+ }),
193
+ renderParamForm({
194
+ description: '照片源文件路径(每行 1 个,或逗号分隔)+ tag +备注',
195
+ fields: [
196
+ { name: 'srcPaths', label: '照片文件路径', value: v.srcPaths.join('\n'), hint: '如:/path/a.jpg(多张换行或逗号分隔)', required: true },
197
+ { name: 'tag', label: 'tag', value: v.tag ?? '', hint: '≤20 字符,如:正面', required: true },
198
+ { name: 'note', label: '备注', value: v.note ?? '', hint: '如:早上空腹 / 减脂期第 30 天' },
199
+ ],
200
+ }),
201
+ promptCopy(v.prompt),
202
+ copyBlock('x', '复制数据', {
203
+ envelope: {
204
+ version: DOC_VERSION, skill: DOC_SKILL, shape: 'stat', key: 'calorie.view.photo-log-wizard',
205
+ data: { metrics: metricsOf({ fileCount: v.srcPaths.length, hasTag: v.tag ? 1 : 0 }) },
206
+ },
207
+ }),
208
+ ].join('');
209
+ return assemble('记身材照', '配置型 wizard · 纯配置,填好后复制 prompt 给 AI', '选本地照片 → 选 tag → 加备注 → 复制 prompt', content);
210
+ }
211
+ /* ── 4. GIF 框选器 ── */
212
+ function gifTable(v) {
213
+ if (v.photos.length === 0) {
214
+ return renderEmptyBlock({ text: '该标签/窗口下无可用照片(换 tag 或扩大窗口)' });
215
+ }
216
+ return renderDataTable({
217
+ columns: [
218
+ { key: 'id', label: 'ID' }, { key: 'date', label: '日期' },
219
+ { key: 'tag', label: '标签' }, { key: 'file', label: '文件' },
220
+ { key: 'exists', label: '存在' }, { key: 'crop', label: '裁剪 x,y,w,h' },
221
+ ],
222
+ rows: v.photos.map((p) => ({
223
+ id: '#' + p.id + (p.selected ? ' ✓' : ''),
224
+ date: p.date,
225
+ tag: p.tagList.join('、') || '—',
226
+ file: p.photoPath,
227
+ exists: p.fileExists === null ? '未校验' : (p.fileExists ? '存在' : '缺失'),
228
+ crop: p.crop ? p.crop.join(',') : '整图',
229
+ })),
230
+ });
231
+ }
232
+ function gifForm(v) {
233
+ return renderParamForm({
234
+ description: '框选(photoIds 逗号分隔,空=全选)+每张单独裁剪(crops JSON {id:[x1,y1,x2,y2]},空=整图)+ GIF 细节',
235
+ fields: [
236
+ { name: 'tag', label: '标签', value: v.tag ?? '', hint: '如:正面(空=全部标签)' },
237
+ { name: 'photoIds', label: '框选照片 ID', value: v.selectedIds.join(','), hint: '逗号分隔,如 12,15,22;空=全选' },
238
+ { name: 'crops', label: '单独裁剪 JSON', value: '', hint: '{"12":[x1,y1,x2,y2]}(像素,左上原点)' },
239
+ { name: 'duration', label: '速度(单帧 ms)', value: String(v.duration), hint: '50..5000,默认 500' },
240
+ { name: 'loop', label: '循环', value: String(v.loop), hint: '0/1/3/5(0=无限)' },
241
+ { name: 'width', label: '宽度(像素)', value: String(v.width), hint: '100..2000' },
242
+ { name: 'height', label: '高度(像素)', value: String(v.height), hint: '100..2000' },
243
+ { name: 'watermark', label: '水印文字(可选)', value: v.watermark ?? '', hint: '右下角,如:减脂 30 天' },
244
+ { name: 'transition', label: '过渡效果', value: v.transition, hint: 'cut / fade / dissolve' },
245
+ { name: 'output', label: '输出文件名(可选)', value: v.output ?? '', hint: '如:front_30days.gif' },
246
+ ],
247
+ });
248
+ }
249
+ export function buildGifPlannerDoc(v) {
250
+ const content = [
251
+ renderKpiGrid([
252
+ { label: '已选', value: v.selectedIds.length + ' 张', detail: '共 ' + v.photos.length + ' 张可用' },
253
+ { label: '文件丢失', value: v.missingIds.length + ' 张', detail: v.missingIds.length > 0 ? '已跳过 ID ' + v.missingIds.join(',') : '无' },
254
+ { label: '尺寸', value: v.width + '×' + v.height, detail: v.duration + 'ms/帧 · ' + (v.loop === 0 ? '无限循环' : v.loop + ' 次') },
255
+ ]),
256
+ gifTable(v),
257
+ gifForm(v),
258
+ promptCopy(v.prompt),
259
+ copyBlock('x', '复制数据', {
260
+ envelope: {
261
+ version: DOC_VERSION, skill: DOC_SKILL, shape: 'stat', key: 'calorie.view.gif-planner',
262
+ data: {
263
+ metrics: metricsOf({
264
+ photoCount: v.photos.length, selectedCount: v.selectedIds.length,
265
+ missingCount: v.missingIds.length,
266
+ cropCount: v.photos.filter((p) => p.crop).length,
267
+ }),
268
+ },
269
+ },
270
+ }),
271
+ ].join('');
272
+ return assemble('身材照 GIF 规划器', 'GIF 框选器 · 无 cropper.js,手动 4 数字坐标', '框选照片 → 填裁剪与细节 → 复制 prompt 给 AI', content);
273
+ }
274
+ //# sourceMappingURL=wizardPortDocs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wizardPortDocs.js","sourceRoot":"","sources":["../../src/render/wizardPortDocs.ts"],"names":[],"mappings":"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"}
@@ -1,11 +1,11 @@
1
- /** #81 · 唤醒词路由层(436 条 SoT 逐条恰一次 + 34 键新增入口)。
1
+ /** #81 · 唤醒词路由层(436 条 SoT 逐条恰一次 + 56 键新增入口)。
2
2
  *
3
3
  * 裁定 D-1(parity 与路由分家):`src/triggers/scene-*.ts` 唤醒词表原样冻结——它的 `main_prompt.cli` 是
4
4
  * 19 字段 sha 的 parity 证据,不是路由;本票全部新能力落在本文件。本文件**只做路由**,不复制唤醒词表的
5
5
  * 其它字段(category/desc/main_prompt.text/variants…),唤醒词集合与冻结表的相等性由断言钉死。
6
6
  *
7
7
  * 裁定 D-2(形态):每条路由记录以唤醒词为键,436 条逐条恰一次;顺序与 `TRIGGERS` 逐位对齐。
8
- * - `kind: 'exec'` → 可执行桶,带 `key`(必在 77 键内)与 `cli`(唯一出口形态)
8
+ * - `kind: 'exec'` → 可执行桶,带 `key`(必在 99 键内)与 `cli`(唯一出口形态)
9
9
  * - `kind: 'non-exec'` → 命中但不执行桶,带 `bucket` 与 `reason`
10
10
  *
11
11
  * 裁定 D-3(两个桶):
@@ -19,18 +19,18 @@
19
19
  * (同 key + 参数,实跑 `exit 0`),就必须进 `exec` 桶。逐条映射(旧词 → 键 + 参数 → 实跑 exit)
20
20
  * 见 `docs/research/t81-route-evidence.md` §2.3;实跑快照见 `docs/research/t81-exec-smoke.md`。
21
21
  * - `non-exec` 细分 `bucket`:`'out-of-scope'`=架构规格 `docs/calorie-architecture.md:60`
22
- * 的明确不做(定时复盘/训记/营养表/落地);`'legacy-chain'`=该词所述能力在 77 键内无同形可执行
22
+ * 的明确不做(定时复盘/训记/营养表/落地);`'legacy-chain'`=该词所述能力在 99 键内无同形可执行
23
23
  * 入口(缺参数/缺形态/缺写键)或语义上必须多步交互(wizard)——逐条理由见 §2.3 右列。
24
24
  * - t71 O1–O6 与规格的口径差异逐条登记在 `T71_DIFFS`(两处出处都给)。
25
25
  *
26
- * 裁定 D-4(34/77 无入口的键):`NEW_KEY_ROUTES` 补入口,唤醒词新拟(清单见
26
+ * 裁定 D-4(56/99 无入口的键):`NEW_KEY_ROUTES` 补入口,唤醒词新拟(清单见
27
27
  * `docs/research/t81-route-evidence.md`),**不写入冻结表**。
28
28
  *
29
29
  * 零 py 命令引用(含本注释):本文件不含任何 py 起头的命令,exec `cli` 一律 `calorie-cmd-read calorie.*` 形态;
30
30
  * 断言见 `test/calorie-routing-81.test.mjs`。
31
31
  */
32
32
  import type { CalorieComboKey, CalorieWriteKey } from '../cli/keys.js';
33
- /** 77 键内的路由键(读 42 + 写 35;两 registry 无重叠) */
33
+ /** 99 键内的路由键(读 64 + 写 35;两 registry 无重叠) */
34
34
  export type RouteKey = CalorieComboKey | CalorieWriteKey;
35
35
  /** 场景号(与 SoT 10 场景一致) */
36
36
  export type SceneNo = '01' | '02' | '03' | '04' | '05' | '06' | '07' | '08' | '09' | '10';
@@ -41,7 +41,7 @@ export interface ExecWakeRoute {
41
41
  readonly wakeWord: string;
42
42
  readonly scene: SceneNo;
43
43
  readonly kind: 'exec';
44
- /** 必须在 77 键内(编译期由 RouteKey 约束,运行期由测试断言) */
44
+ /** 必须在 99 键内(编译期由 RouteKey 约束,运行期由测试断言) */
45
45
  readonly key: RouteKey;
46
46
  /** 唯一出口形态:calorie-cmd-read calorie.* */
47
47
  readonly cli: string;
@@ -60,29 +60,29 @@ export type WakeRoute = ExecWakeRoute | NonExecWakeRoute;
60
60
  *
61
61
  * FX-81-7 复核:一个旧唤醒词,只要存在一条能达成其所述能力的单命令(同 key + 参数,实跑 exit 0),
62
62
  * 就必须进 exec 桶(逐条映射与实跑见 docs/research/t81-route-evidence.md §2.3 + t81-exec-smoke.md)。
63
- * 仍留在本桶的词只有两类:① 语义上必须多步交互(wizard,归 #86);② 77 键内无同形可执行入口
63
+ * 仍留在本桶的词只有两类:① 语义上必须多步交互(wizard,归 #86);② 99 键内无同形可执行入口
64
64
  * (缺参数/缺形态/缺写键,逐条理由见 §2.3 右列)。
65
65
  */
66
66
  export declare const NON_EXEC_REASONS: {
67
67
  readonly wizard: "命中但不执行:需多步交互(wizard)——先预览/确认再写库,非单条命令可达成(归 #86)。";
68
- readonly noNoteFilter: "命中但不执行:77 键无「备注」筛选参数(饮食/体重/运动三面的备注均非任何键的筛选维度),单命令不可达成(逐条见 docs/research/t81-route-evidence.md §2.3)。";
69
- readonly noNutrientDetail: "命中但不执行:77 键无钠/糖/纤维等营养素明细维度(view.diet-review 的 macro 只有蛋白/碳水/脂肪配比),单命令不可达成。";
70
- readonly noNutritionAdvice: "命中但不执行:77 键无营养建议形态(view.diet-review/view.health 给数据盘,不给建议条目)。";
68
+ readonly noNoteFilter: "命中但不执行:95 键无「备注」筛选参数(饮食/体重/运动三面的备注均非任何键的筛选维度),单命令不可达成(逐条见 docs/research/t81-route-evidence.md §2.3)。";
69
+ readonly noNutrientDetail: "命中但不执行:95 键出现前无钠/糖/纤维趋势/综合报告形态(#113 起 nutrition-analysis 给窗内配比+微量+规则建议,看钠糖纤维趋势/综合两词已翻转;view.diet-review 的 macro 只有蛋白/碳水/脂肪配比)。";
70
+ readonly noNutritionAdvice: "命中但不执行:95 键无营养建议形态(view.diet-review/view.health 给数据盘,不给建议条目)。";
71
71
  readonly compoundCurve: "命中但不执行:该词要的是「曲线+标注」(目标线/里程碑/异常点)复合形态;view.weight-history 只给历史点与变化量,view.anomaly 只给异常点,无单键同形。";
72
72
  readonly anchorCompare: "命中但不执行:该词需先派生锚点日期(平台期首日/历史最低/历史最高/里程碑日/季节最低/极端月)再对比;view.weight-compare 的四个参数皆为调用方给出的日期段,无锚点派生参数,单命令不可达成。";
73
73
  readonly reviewWindowOnly: "命中但不执行:view.weight-review 只吃 today/date(复核形态),无期间窗口参数;view.weight-history 为历史点+变化量,非复盘形态 → 期间复盘无单命令同形。";
74
74
  readonly milestoneForwardOnly: "命中但不执行:view.weight-review 的 milestone 是「目标达成预测」(estDays/estDate 前向),不是里程碑回溯列表 → 无单命令同形。";
75
- readonly recordFilterMissing: "命中但不执行:77 键无运动记录级列表/筛选参数(view.exercise 是汇总盘:byType/byCategory 为分项统计,不含逐条记录与备注筛选)。";
75
+ readonly recordFilterMissing: "命中但不执行:95 键无运动记录级列表/筛选参数(view.exercise 是汇总盘:byType/byCategory 为分项统计,不含逐条记录与备注筛选)。";
76
76
  readonly categoryOverviewMissing: "命中但不执行:view.exercise 无 category 参数(分项统计按运动类型 byType 渲染 TOP4,byCategory 未渲染,力量/有氧非独立形态),无单命令同形。";
77
77
  readonly planFilterMissing: "命中但不执行:view.plan 无周/日/动作筛选参数(返回全计划),与词的周/日/动作粒度不同 → 无单命令同形。";
78
- readonly planWriteMissing: "命中但不执行:77 键无训练计划写键(旧链 --live-plan-* 系列),本仓执行层不承接计划写入。";
79
- readonly planReviewMissing: "命中但不执行:77 键无计划完成率/未完成训练/动作完成率入口(view.exercise-goal 只对照运动目标,不对照训练计划)→ 无单命令同形。";
78
+ readonly planWriteMissing: "命中但不执行:95 键无训练计划写键(旧链 --live-plan-* 系列),本仓执行层不承接计划写入。";
79
+ readonly planReviewMissing: "命中但不执行:95 键无计划完成率/未完成训练/动作完成率入口(view.exercise-goal 只对照运动目标,不对照训练计划)→ 无单命令同形。";
80
80
  readonly bodyCompareMissing: "命中但不执行:view.body-composition/view.body-measure 只有 days/source/limit/metric 等参数,无两期对比参数 → 无单命令同形(渲染层已有 buildBodyCompositionCompare/buildBodyMeasureCompare:render/bodyPlate.ts:49/:112,经 render/index.ts:25 导出,但 CLI 侧未接线)。";
81
- readonly reportKindMissing: "命中但不执行:旧链 report --kind 的 BMI/TDEE/BMR/蛋白/水分/评分/趋势/对比属「报告子形态」,77 键内无同形报告键(view.health 只有 full 健康盘;TDEE/BMR 仅作为 view.goal-recommend 推荐盘的依据字段出现,非报告产物)。";
82
- readonly multiTrendMissing: "命中但不执行:77 键无多指标趋势键(view.combined 只吃两指标配对,旧链 trend --group g1–g11 为 2–4 指标组合)→ 无单命令同形。";
81
+ readonly reportKindMissing: "命中但不执行:旧链 report --kind 的 BMI/TDEE/BMR/蛋白/水分/评分/趋势/对比属「报告子形态」,95 键内无同形报告键(view.health 只有 full 健康盘;TDEE/BMR 仅作为 view.goal-recommend 推荐盘的依据字段出现,非报告产物)。";
82
+ readonly multiTrendMissing: "命中但不执行:95 键无多指标趋势键(view.combined 只吃两指标配对,旧链 trend --group g1–g11 为 2–4 指标组合)→ 无单命令同形。";
83
83
  readonly predictParamMissing: "命中但不执行:view.predict 只有 start/end/horizonDays(体重外推),无 target(目标体重)/deficit(每日缺口)/摄入速率参数 → 无单命令同形。";
84
- readonly sixFactorsMissing: "命中但不执行:77 键无「每日 6 因素综合」形态(view.home 为当日总览,不含旧链 six 6 因素评分)。";
85
- readonly lintMissing: "命中但不执行:77 键无数据质量/lint 形态(旧链 render_lint_health.py 为数据体检)。";
84
+ readonly sixFactorsMissing: "命中但不执行:95 键出现前无「每日 6 因素综合」形态(#113 six-factors 给热量/蛋白/饮水/运动/称重/三餐六因素评分,看每日 6 因素综合已翻转;view.home 为当日总览,不含评分)。";
85
+ readonly lintMissing: "命中但不执行:95 键出现前无数据质量/lint 形态(#113 起 lint-health 给未匹配库/零负热量/未来日期/疑似重复四项体检,查卡路里数据已翻转;旧链 render_lint_health.py 为数据体检)。";
86
86
  readonly oosCron: "明确不做(架构规格 docs/calorie-architecture.md:60:定时复盘);词只保证命中与文案,执行层不承接(t71 O1 同项)。";
87
87
  readonly oosXunji: "明确不做(架构规格 docs/calorie-architecture.md:60:训记);词只保证命中与文案,执行层不承接(t71 O3 同项)。";
88
88
  readonly oosLabel: "明确不做(架构规格 docs/calorie-architecture.md:60:营养表);词只保证命中与文案,执行层不承接(t71 O4 同项)。";
@@ -98,15 +98,15 @@ export declare const WAKE_ROUTES: readonly WakeRoute[];
98
98
  * FX-81-7 复核后:`看目标预测达成` 已改 exec(≥14 天窗口实跑 exit 0)→ 其键
99
99
  * `calorie.view.goal-predict` 由该词自身承接,原修复入口 `看目标达成预测` 删除(不再需要)。
100
100
  * `定营养目标(自动算)`/`定饮水目标(自动算)`/`一键定全套目标` 三条链式词保留 non-exec(wizard),
101
- * 其键 `calorie.view.goal-recommend` 由本条承接(D2③「77 键全部有可执行入口」不放宽)。 */
101
+ * 其键 `calorie.view.goal-recommend` 由本条承接(D2③「99 键全部有可执行入口」不放宽)。 */
102
102
  export declare const COVERAGE_REPAIR_ROUTES: readonly ExecWakeRoute[];
103
- /** D-4:34 个无入口键的新拟入口(唤醒词新拟,不写入冻结表) */
103
+ /** D-4:52 个无入口键的新拟入口(唤醒词新拟,不写入冻结表) */
104
104
  export declare const NEW_KEY_ROUTES: readonly ExecWakeRoute[];
105
- /** 全量路由(436 条 SoT + 34 条新拟入口 + 1 条覆盖修复入口) */
105
+ /** 全量路由(436 条 SoT + 56 条新拟入口 + 1 条覆盖修复入口) */
106
106
  export declare const ALL_ROUTES: readonly WakeRoute[];
107
107
  /** 唤醒词 → 路由(记身材照 3 条,故值为数组) */
108
108
  export declare const ROUTES_BY_WAKE_WORD: Readonly<Record<string, readonly WakeRoute[]>>;
109
- /** calorie key → 首条可执行路由(77 键全可达的索引) */
109
+ /** calorie key → 首条可执行路由(99 键全可达的索引) */
110
110
  export declare const EXEC_ROUTE_BY_KEY: Readonly<Record<string, ExecWakeRoute>>;
111
111
  /** t71 O1–O4 与架构规格 :60 的口径差异(逐条登记,两处出处都给) */
112
112
  export interface T71Diff {
@@ -1 +1 @@
1
- {"version":3,"file":"routing.d.ts","sourceRoot":"","sources":["../../src/triggers/routing.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"routing.d.ts","sourceRoot":"","sources":["../../src/triggers/routing.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,OAAO,KAAK,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAGvE,4CAA4C;AAC5C,MAAM,MAAM,QAAQ,GAAG,eAAe,GAAG,eAAe,CAAC;AAEzD,yBAAyB;AACzB,MAAM,MAAM,OAAO,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAE1F,2BAA2B;AAC3B,MAAM,MAAM,aAAa,GAAG,cAAc,GAAG,cAAc,CAAC;AAE5D,kBAAkB;AAClB,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,2CAA2C;IAC3C,QAAQ,CAAC,GAAG,EAAE,QAAQ,CAAC;IACvB,wCAAwC;IACxC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;CACtB;AAED,qBAAqB;AACrB,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC;IAC/B,uCAAuC;IACvC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,MAAM,SAAS,GAAG,aAAa,GAAG,gBAAgB,CAAC;AAEzD;;;;;;GAMG;AACH,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;CA4CnB,CAAC;AAEX;4EAC4E;AAC5E,eAAO,MAAM,eAAe,EAAE,SAAS,MAAM,EAyB5C,CAAC;AAEF,yCAAyC;AACzC,eAAO,MAAM,WAAW,EAAE,SAAS,SAAS,EAmc3C,CAAC;AAEF;;;;;mEAKmE;AACnE,eAAO,MAAM,sBAAsB,EAAE,SAAS,aAAa,EAE1D,CAAC;AAEF,sCAAsC;AACtC,eAAO,MAAM,cAAc,EAAE,SAAS,aAAa,EA6DlD,CAAC;AAIF,6CAA6C;AAC7C,eAAO,MAAM,UAAU,EAAE,SAAS,SAAS,EAAmE,CAAC;AAE/G,+BAA+B;AAC/B,eAAO,MAAM,mBAAmB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,SAAS,EAAE,CAAC,CAM9E,CAAC;AAEF,wCAAwC;AACxC,eAAO,MAAM,iBAAiB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAQrE,CAAC;AAEF,6CAA6C;AAC7C,MAAM,WAAW,OAAO;IACtB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,SAAS,EAAE,SAAS,MAAM,EAAE,CAAC;IACtC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAED,eAAO,MAAM,SAAS,EAAE,SAAS,OAAO,EAkDvC,CAAC;AAEF,4CAA4C;AAC5C,eAAO,MAAM,mBAAmB,EAAE,SAAS,gBAAgB,EAE1D,CAAC;AAEF,gBAAgB;AAChB,eAAO,MAAM,mBAAmB,EAAE,SAAS,gBAAgB,EAE1D,CAAC;AAEF,aAAa;AACb,eAAO,MAAM,WAAW,EAAE,SAAS,aAAa,EAE/C,CAAC;AAEF,sCAAsC;AACtC,wBAAgB,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,SAAS,EAAE,CAEhE;AAED,uCAAuC;AACvC,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAGxD;AAED,iBAAiB;AACjB,wBAAgB,cAAc,IAAI;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;CACrB,CAWA"}