skill-calorie 0.2.2 → 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 +1 -1
  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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setup.js","sourceRoot":"","sources":["../../src/profile/setup.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import type { CrudReceipt } from '../render/receipt.js';
2
+ /** 改档案写后回执整页:摘要 + 逐字段 改前→改后 + 写入字段 + M5 整行。
3
+ * `command` = AI 真跑那条写命令的原文(`cli/write.ts` 从分派处传进来),进「复制日志」第 4 段。 */
4
+ export declare function buildProfileUpdateReceiptDoc(receipt: CrudReceipt, command: string): string;
5
+ //# sourceMappingURL=update.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../src/profile/update.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAexD;sEACsE;AACtE,wBAAgB,4BAA4B,CAAC,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAuC1F"}
@@ -0,0 +1,65 @@
1
+ /** #179 · 「改资料」:改档案的写后回执页(改前→改后对照)。
2
+ *
3
+ * 对外 1 件:`buildProfileUpdateReceiptDoc`。与 `setup.ts` 的两条回执页(设置档案/设活动量)
4
+ * 逐字比对过:那一页出「摘要 + 写入字段」,本页多一整块**逐字段 改前→改后 对照区**
5
+ * (吃 `CrudReceipt.items`;回执没带对照时不编数据,只提示)。渲染分支不同,故不合并
6
+ * (设计 §八 第 3 条的裁法;若日后两条写命令的回执也带逐字段对照,这两页应当合并)。
7
+ *
8
+ * 写前页不在这里:三条写入词共用的一页住同目录 `setup.ts`,改档案直接取用
9
+ * (设计 §一:同一件事只留一处定义,铁律五不另起转手件)。
10
+ */
11
+ import { renderDataTable, renderKpiGrid, renderPreBlock } from 'base-paint/blocks';
12
+ import { assembleDocPage } from '../shared/docPage.js';
13
+ import { copyArea, copyLog } from '../shared/copyArea.js';
14
+ const DOC_VERSION = '0.1.0';
15
+ const DOC_SKILL = 'calorie';
16
+ const DOC_TITLE = '卡路里·档案预检';
17
+ /** items 里逐字段对照:`status`=字段名,`reason`=「改前 → 改后」(回执带不出对照时为空表)。 */
18
+ function diffRows(receipt) {
19
+ return receipt.items
20
+ .filter((it) => it.status !== '')
21
+ .map((it) => ({ field: it.status, change: it.reason === '' ? (it.detail ?? '—') : it.reason }));
22
+ }
23
+ /** 改档案写后回执整页:摘要 + 逐字段 改前→改后 + 写入字段 + M5 整行。
24
+ * `command` = AI 真跑那条写命令的原文(`cli/write.ts` 从分派处传进来),进「复制日志」第 4 段。 */
25
+ export function buildProfileUpdateReceiptDoc(receipt, command) {
26
+ const rows = diffRows(receipt);
27
+ const envelope = {
28
+ version: DOC_VERSION, skill: DOC_SKILL, shape: 'receipt', key: receipt.meta.wakeWord,
29
+ data: { ok: true, message: receipt.summary },
30
+ };
31
+ const content = [
32
+ renderKpiGrid([
33
+ { label: '动作', value: receipt.scene, detail: 'op=' + receipt.op },
34
+ { label: '影响行数', value: receipt.affectedRows + ' 行', detail: receipt.affectedRowsSource },
35
+ { label: '改动字段', value: rows.length + ' 项', detail: receipt.writtenFields.join('、') || '—' },
36
+ { label: '无变化', value: receipt.noChange ? '是' : '否', detail: receipt.noChange ? '值与改前一致' : '' },
37
+ ]),
38
+ renderDataTable({
39
+ columns: [{ key: 'field', label: '字段' }, { key: 'change', label: '改前 → 改后' }],
40
+ rows,
41
+ caption: '改档案 5 项:改前 → 改后对照',
42
+ emptyText: '本次回执未带逐字段对照(写入字段:' + (receipt.writtenFields.join('、') || '—') + ')',
43
+ }),
44
+ renderPreBlock({ label: 'M5 整行(旧版等价物)', command: receipt.m5Line }),
45
+ copyArea({
46
+ title: '复制数据',
47
+ data: { envelope },
48
+ log: {
49
+ envelope,
50
+ copyLog: copyLog({
51
+ command, source: receipt.meta.source, m5Line: receipt.m5Line,
52
+ actionAt: receipt.meta.actionAt, version: DOC_VERSION,
53
+ }),
54
+ },
55
+ }),
56
+ ].join('');
57
+ return assembleDocPage({
58
+ docTitle: DOC_TITLE,
59
+ title: receipt.scene + ' · 回执',
60
+ eyebrow: '基础信息 · 写后回执(M5 契约 v' + receipt.m5Contract + ',改前→改后对照)',
61
+ subtitle: receipt.summary,
62
+ content,
63
+ });
64
+ }
65
+ //# sourceMappingURL=update.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update.js","sourceRoot":"","sources":["../../src/profile/update.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,33 @@
1
+ /** #179 · 「看档案」:档案读链取数 + 结果页整页(HELP 一级分组「基础信息」→ 子功能「看档案」)。
2
+ *
3
+ * 取数唯一来源:`fetch/profile.getProfile`(单例 id=1,无行即 missing)+
4
+ * `fetch/nutritionGoal.getNutritionGoal`(可选)+ `weight_log` 最新一条(可选)。
5
+ * 原住 `src/render/profilePlate.ts`,#179 搬进本能力目录(同一个取数不留两处)。
6
+ *
7
+ * 目录内共用(`structure.md:94`「只有出这个目录才算对外」):`profileSnapshot` 那句
8
+ * 「档案现值 + 最新体重」的查询只写一份,写前页(同目录 `setup.ts`)从它取改前值,
9
+ * 不进对外清单。空档案即抛 `missing-data`(用户 2026-09-11 裁定不兜底)——写前页不
10
+ * 走它,故空库仍能开页。
11
+ */
12
+ import type { DatabaseSync } from 'node:sqlite';
13
+ import type { ProfileRow } from '../fetch/profile.js';
14
+ import type { NutritionGoalRow } from '../fetch/nutritionGoal.js';
15
+ export interface ProfileView {
16
+ profile: ProfileRow;
17
+ nutrition: NutritionGoalRow | null;
18
+ latestWeightKg: number | null;
19
+ hasGoal: boolean;
20
+ }
21
+ /** 本能力的读数据来源(「复制日志」第 3 段后半;写库回执那两页用 `receipt.meta.source` 同形)。
22
+ * 档案现值与最新体重同出一份查询(`profileSnapshot`),故两个只读页共用这一个说法。 */
23
+ export declare const PROFILE_SOURCE = "user_profile \uFF0B weight_log";
24
+ /** 档案现值(可缺)+ 最新体重:本目录只此一份查询,`buildProfileView` 与写前页共用。 */
25
+ export declare function profileSnapshot(db: DatabaseSync): {
26
+ profile: ProfileRow | null;
27
+ latestWeightKg: number | null;
28
+ };
29
+ /** ① 取数:档案(缺行即阻断,不返空)+ 营养目标(可选)+ 最新体重(可选)。 */
30
+ export declare function buildProfileView(db: DatabaseSync): ProfileView;
31
+ /** ② 结果页整页:档案五项 KPI + 逐字段表 + 复制区(完整文档,不是片段)。 */
32
+ export declare function buildProfileViewDoc(v: ProfileView): string;
33
+ //# sourceMappingURL=view.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"view.d.ts","sourceRoot":"","sources":["../../src/profile/view.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAIhD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEtD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAclE,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,UAAU,CAAC;IACpB,SAAS,EAAE,gBAAgB,GAAG,IAAI,CAAC;IACnC,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,OAAO,EAAE,OAAO,CAAC;CAClB;AAED;wDACwD;AACxD,eAAO,MAAM,cAAc,mCAA8B,CAAC;AAE1D,0DAA0D;AAC1D,wBAAgB,eAAe,CAAC,EAAE,EAAE,YAAY,GAAG;IAAE,OAAO,EAAE,UAAU,GAAG,IAAI,CAAC;IAAC,cAAc,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAW/G;AAED,8CAA8C;AAC9C,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,YAAY,GAAG,WAAW,CAK9D;AAED,gDAAgD;AAChD,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,WAAW,GAAG,MAAM,CAsD1D"}
@@ -0,0 +1,94 @@
1
+ import { renderKpiGrid, renderDisclosure, renderDataTable } from 'base-paint/blocks';
2
+ import { getProfile } from '../fetch/profile.js';
3
+ import { getNutritionGoal } from '../fetch/nutritionGoal.js';
4
+ import { assembleDocPage, metricsOf } from '../shared/docPage.js';
5
+ import { copyArea, copyLog } from '../shared/copyArea.js';
6
+ import { nowStamp } from '../render/receipt.js';
7
+ import { CalorieRenderError } from '../render/errors.js';
8
+ /** envelope 头(值对齐 `cli/keys.ts` ENVELOPE_VERSION/CALORIE_SKILL)。 */
9
+ const DOC_VERSION = '0.1.0';
10
+ const DOC_SKILL = 'calorie';
11
+ /** 本页 head 标题(整页模板住 `src/shared/docPage.ts`,标题走参数)。 */
12
+ const DOC_TITLE = '卡路里·档案';
13
+ /** 本页由哪条命令产出(写进「复制日志」第 4 段,可照抄重跑)。 */
14
+ const VIEW_KEY = 'calorie.view.profile';
15
+ /** 本能力的读数据来源(「复制日志」第 3 段后半;写库回执那两页用 `receipt.meta.source` 同形)。
16
+ * 档案现值与最新体重同出一份查询(`profileSnapshot`),故两个只读页共用这一个说法。 */
17
+ export const PROFILE_SOURCE = 'user_profile + weight_log';
18
+ /** 档案现值(可缺)+ 最新体重:本目录只此一份查询,`buildProfileView` 与写前页共用。 */
19
+ export function profileSnapshot(db) {
20
+ const profile = getProfile(db);
21
+ let latest;
22
+ try {
23
+ latest = db.prepare('SELECT weight_kg FROM weight_log ORDER BY date DESC, id DESC LIMIT 1').get();
24
+ }
25
+ catch {
26
+ latest = undefined;
27
+ }
28
+ return { profile, latestWeightKg: latest?.weight_kg ?? null };
29
+ }
30
+ /** ① 取数:档案(缺行即阻断,不返空)+ 营养目标(可选)+ 最新体重(可选)。 */
31
+ export function buildProfileView(db) {
32
+ const { profile, latestWeightKg } = profileSnapshot(db);
33
+ if (!profile)
34
+ throw new CalorieRenderError('missing-data', '未设档案(user_profile#1 缺失,先设置档案)');
35
+ const nutrition = getNutritionGoal(db);
36
+ return { profile, nutrition, latestWeightKg, hasGoal: nutrition !== null };
37
+ }
38
+ /** ② 结果页整页:档案五项 KPI + 逐字段表 + 复制区(完整文档,不是片段)。 */
39
+ export function buildProfileViewDoc(v) {
40
+ const p = v.profile;
41
+ const envelope = {
42
+ version: DOC_VERSION, skill: DOC_SKILL, shape: 'stat', key: VIEW_KEY,
43
+ data: {
44
+ metrics: metricsOf({
45
+ age: p.age, heightCm: p.height_cm, hasGoal: v.hasGoal ? 1 : 0,
46
+ latestWeightKg: v.latestWeightKg, calorieGoal: v.nutrition?.calorie_goal,
47
+ }),
48
+ },
49
+ };
50
+ const content = [
51
+ renderKpiGrid([
52
+ { label: '档案视图', value: (p.gender ?? '—') + ' ' + (p.age ?? '—') + '岁', detail: '身高 ' + (p.height_cm ?? '—') + ' cm' },
53
+ { label: '活动量', value: p.activity_level ?? '—' },
54
+ { label: '目标', value: v.hasGoal ? '已设' : '未设', detail: v.nutrition ? v.nutrition.calorie_goal + ' 卡' : '' },
55
+ { label: '最新体重', value: v.latestWeightKg === null ? '—' : v.latestWeightKg + ' kg' },
56
+ ]),
57
+ renderDataTable({
58
+ columns: [{ key: 'field', label: '字段' }, { key: 'value', label: '现值' }],
59
+ rows: [
60
+ { field: '身高(cm)', value: p.height_cm ?? '—' },
61
+ { field: '年龄', value: p.age ?? '—' },
62
+ { field: '性别', value: p.gender ?? '—' },
63
+ { field: '活动量', value: p.activity_level ?? '—' },
64
+ { field: '备注', value: p.note ?? '—' },
65
+ ],
66
+ caption: '档案现值(user_profile#1 单例行)',
67
+ }),
68
+ renderDisclosure({
69
+ title: '营养目标(' + (v.hasGoal ? '已设' : '未设') + ')',
70
+ contentHtml: v.nutrition
71
+ ? '热量 ' + v.nutrition.calorie_goal + ' 卡 · 蛋白 ' + v.nutrition.protein_goal + ' · 碳水 ' + v.nutrition.carbs_goal + ' · 脂肪 ' + v.nutrition.fat_goal
72
+ : '未设营养目标(定营养目标后可在此看到口径)',
73
+ }),
74
+ copyArea({
75
+ title: '复制数据',
76
+ data: { envelope },
77
+ log: {
78
+ envelope,
79
+ copyLog: copyLog({
80
+ command: 'calorie-cmd-read ' + VIEW_KEY, source: PROFILE_SOURCE,
81
+ actionAt: nowStamp(), version: DOC_VERSION,
82
+ }),
83
+ },
84
+ }),
85
+ ].join('');
86
+ return assembleDocPage({
87
+ docTitle: DOC_TITLE,
88
+ title: '档案视图',
89
+ eyebrow: '基础信息 · 看档案',
90
+ subtitle: '档案现值 + 最新体重(档案缺失即阻断,不返空页)',
91
+ content,
92
+ });
93
+ }
94
+ //# sourceMappingURL=view.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"view.js","sourceRoot":"","sources":["../../src/profile/view.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"dietDocs.d.ts","sourceRoot":"","sources":["../../src/render/dietDocs.ts"],"names":[],"mappings":"AAgCA,0CAA0C;AAC1C,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC/B;AACD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACnE,OAAO,KAAK,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAChE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAuDlE,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,YAAY,CAAC;IACvB,IAAI,EAAE,gBAAgB,CAAC;IACvB,KAAK,EAAE,WAAW,EAAE,CAAC;IACrB,KAAK,EAAE,UAAU,GAAG,IAAI,CAAC;CAC1B;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,iBAAiB,GAAG,MAAM,CAiElE;AAID,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,YAAY,CAAC;IACvB,IAAI,EAAE,gBAAgB,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,SAAS,EAAE,CAAC;IAClB,KAAK,EAAE,WAAW,EAAE,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,OAAO,CAAC;CACzB;AAcD,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,gBAAgB,GAAG,MAAM,CA+EhE;AAID,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,WAAW,GAAG,IAAI,GAAG,MAAM,CAiFlF;AAmBD,wBAAgB,eAAe,CAAC,CAAC,EAAE,WAAW,GAAG,MAAM,CAsCtD;AAED,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,WAAW,GAAG,MAAM,CAuC1D;AAeD,wBAAgB,cAAc,CAAC,CAAC,EAAE,aAAa,GAAG,MAAM,CAyBvD;AAED,wBAAgB,eAAe,CAAC,GAAG,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CA2B/E;AAWD,wBAAgB,cAAc,CAAC,CAAC,EAAE,WAAW,GAAG,MAAM,CA6DrD;AAID,wBAAgB,cAAc,CAAC,CAAC,EAAE,UAAU,GAAG,MAAM,CAwCpD"}
1
+ {"version":3,"file":"dietDocs.d.ts","sourceRoot":"","sources":["../../src/render/dietDocs.ts"],"names":[],"mappings":"AA8BA,0CAA0C;AAC1C,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC/B;AACD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACnE,OAAO,KAAK,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAChE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAsBlE,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,YAAY,CAAC;IACvB,IAAI,EAAE,gBAAgB,CAAC;IACvB,KAAK,EAAE,WAAW,EAAE,CAAC;IACrB,KAAK,EAAE,UAAU,GAAG,IAAI,CAAC;CAC1B;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,iBAAiB,GAAG,MAAM,CAwElE;AAID,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,YAAY,CAAC;IACvB,IAAI,EAAE,gBAAgB,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,SAAS,EAAE,CAAC;IAClB,KAAK,EAAE,WAAW,EAAE,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,OAAO,CAAC;CACzB;AAcD,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,gBAAgB,GAAG,MAAM,CAgFhE;AAID,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,WAAW,GAAG,IAAI,GAAG,MAAM,CAwFlF;AAmBD,wBAAgB,eAAe,CAAC,CAAC,EAAE,WAAW,GAAG,MAAM,CAuCtD;AAED,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,WAAW,GAAG,MAAM,CAwC1D;AAeD,wBAAgB,cAAc,CAAC,CAAC,EAAE,aAAa,GAAG,MAAM,CAgCvD;AAED,wBAAgB,eAAe,CAAC,GAAG,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAkC/E;AAWD,wBAAgB,cAAc,CAAC,CAAC,EAAE,WAAW,GAAG,MAAM,CAoErD;AAID,wBAAgB,cAAc,CAAC,CAAC,EAAE,UAAU,GAAG,MAAM,CA+CpD"}
@@ -16,41 +16,15 @@
16
16
  * 行级页(榜单/食品/明细/去重)走 list 投影(JSON 行,旧「复制榜单/复制回 AI」的数据等价物)。
17
17
  * 本层不做取数(数据由调用方 dispatch 备齐),不返空(缺失由数据层抛 missing-data)。
18
18
  */
19
- import { blocksCss, renderChartBlock, renderCopyBlock, renderDataTable, renderDisclosure, renderKpiGrid, renderListRows, renderPageShell, renderParamForm, } from 'base-paint/blocks';
20
- import { buildChartsHelpersJs, buildDataText, buildSharedHelpersJs, buildStyleSheet, fillTemplate } from 'base-paint';
19
+ import { renderChartBlock, renderDataTable, renderDisclosure, renderKpiGrid, renderListRows, renderParamForm, } from 'base-paint/blocks';
20
+ import { assembleDocPage } from '../shared/docPage.js';
21
+ import { dataCopyArea } from '../shared/copyArea.js';
21
22
  import { inferMealType } from '../fetch/diet.js';
22
23
  /** envelope 头(值冻结对齐 cli/keys.ts ENVELOPE_VERSION/CALORIE_SKILL;测试钉死一致)。 */
23
24
  const DOC_VERSION = '0.1.0';
24
25
  const DOC_SKILL = 'calorie';
25
- /** 内容页壳(裸标记+CONTENT 槽;包裹约定:资产裸文本+填充器包裹,标记不得预包裹)。
26
- * wrap ilife-page 兼容既有 --html 断言。 */
27
- const DOC_SHELL = '<!doctype html>\n<html lang="zh-CN">\n<head>\n<meta charset="utf-8">\n' +
28
- '<meta name="viewport" content="width=device-width,initial-scale=1">\n' +
29
- '<title>卡路里·饮食</title>\n<!--SHARED-CSS-->\n</head>\n<body>\n' +
30
- '<div class="wrap ilife-page">\n<!--CONTENT-->\n</div>\n<!--SHARED-HELPERS-->\n</body>\n</html>';
31
- /** 图表页壳(多一个 CHARTS-HELPERS 标记,图表 CSS 由 charts helpers 运行时注入)。 */
32
- const DOC_SHELL_CHARTS = '<!doctype html>\n<html lang="zh-CN">\n<head>\n<meta charset="utf-8">\n' +
33
- '<meta name="viewport" content="width=device-width,initial-scale=1">\n' +
34
- '<title>卡路里·饮食</title>\n<!--SHARED-CSS-->\n</head>\n<body>\n' +
35
- '<div class="wrap ilife-page">\n<!--CONTENT-->\n</div>\n<!--SHARED-HELPERS-->\n<!--CHARTS-HELPERS-->\n</body>\n</html>';
36
- function assemble(title, eyebrow, subtitle, content, charts) {
37
- const assets = {
38
- sharedCssText: buildStyleSheet().css + '\n' + blocksCss(),
39
- sharedHelpersJs: buildSharedHelpersJs(),
40
- };
41
- if (charts)
42
- assets.chartsHelpersJs = buildChartsHelpersJs();
43
- const body = renderPageShell({
44
- title,
45
- ...(eyebrow ? { eyebrow } : {}),
46
- ...(subtitle ? { subtitle } : {}),
47
- content,
48
- });
49
- return fillTemplate({ template: charts ? DOC_SHELL_CHARTS : DOC_SHELL, assets, content: body }).html;
50
- }
51
- function copyBlock(title, input) {
52
- return renderCopyBlock({ title, dataText: buildDataText(input) });
53
- }
26
+ /** 本文件各页共用的 head 标题(整页模板住 `src/shared/docPage.ts`,标题走参数)。 */
27
+ const DOC_TITLE = '卡路里·饮食';
54
28
  function fmt(n) {
55
29
  if (n === null || n === undefined)
56
30
  return '—';
@@ -112,7 +86,7 @@ export function buildTodayDietDoc(input) {
112
86
  caption: '今日明细(' + o.start + ',共 ' + meals.length + ' 条)',
113
87
  emptyText: '本日无明细',
114
88
  }));
115
- parts.push(copyBlock('复制数据', {
89
+ parts.push(dataCopyArea('复制数据', {
116
90
  envelope: {
117
91
  version: DOC_VERSION, skill: DOC_SKILL, shape: 'list', key: 'calorie.today',
118
92
  data: {
@@ -124,7 +98,14 @@ export function buildTodayDietDoc(input) {
124
98
  },
125
99
  },
126
100
  }));
127
- return assemble('今日饮食 ' + o.start, 'calorie.today · 饮食域', MEAL_NOTE, parts.join(''), charts);
101
+ return assembleDocPage({
102
+ docTitle: DOC_TITLE,
103
+ title: '今日饮食 ' + o.start,
104
+ eyebrow: 'calorie.today · 饮食域',
105
+ subtitle: MEAL_NOTE,
106
+ content: parts.join(''),
107
+ charts,
108
+ });
128
109
  }
129
110
  const MEAL_COLUMNS = [
130
111
  { key: 'date', label: '日期' },
@@ -199,7 +180,7 @@ export function buildViewDietDoc(input) {
199
180
  emptyText: '本窗无明细',
200
181
  }),
201
182
  }));
202
- parts.push(copyBlock('复制数据', {
183
+ parts.push(dataCopyArea('复制数据', {
203
184
  envelope: {
204
185
  version: DOC_VERSION, skill: DOC_SKILL, shape: 'stat', key: 'calorie.view.diet',
205
186
  data: {
@@ -210,7 +191,14 @@ export function buildViewDietDoc(input) {
210
191
  },
211
192
  },
212
193
  }));
213
- return assemble('饮食总览 ' + o.start + ' ~ ' + o.end, 'calorie.view.diet · 饮食域', '餐别分布 ' + distDate + '(' + MEAL_NOTE + ')', parts.join(''), charts);
194
+ return assembleDocPage({
195
+ docTitle: DOC_TITLE,
196
+ title: '饮食总览 ' + o.start + ' ~ ' + o.end,
197
+ eyebrow: 'calorie.view.diet · 饮食域',
198
+ subtitle: '餐别分布 ' + distDate + '(' + MEAL_NOTE + ')',
199
+ content: parts.join(''),
200
+ charts,
201
+ });
214
202
  }
215
203
  /* ── 饮食复盘(diet_review.html 对照:每日热量趋势+配比+高频 TOP+按餐汇总) ── */
216
204
  export function buildDietReviewDoc(r, top5) {
@@ -287,13 +275,20 @@ export function buildDietReviewDoc(r, top5) {
287
275
  caption: '按餐汇总(' + MEAL_NOTE + ')',
288
276
  emptyText: '本窗无按餐汇总',
289
277
  }));
290
- parts.push(copyBlock('复制数据', {
278
+ parts.push(dataCopyArea('复制数据', {
291
279
  envelope: {
292
280
  version: DOC_VERSION, skill: DOC_SKILL, shape: 'stat', key: 'calorie.view.diet-review',
293
281
  data: { metrics: { loggedDays: r.loggedDays } },
294
282
  },
295
283
  }));
296
- return assemble('饮食复盘 ' + r.start + ' ~ ' + r.end, 'calorie.view.diet-review · 饮食域', null, parts.join(''), charts);
284
+ return assembleDocPage({
285
+ docTitle: DOC_TITLE,
286
+ title: '饮食复盘 ' + r.start + ' ~ ' + r.end,
287
+ eyebrow: 'calorie.view.diet-review · 饮食域',
288
+ subtitle: null,
289
+ content: parts.join(''),
290
+ charts,
291
+ });
297
292
  }
298
293
  /* ── 食品排行(food_ranking.html 对照:榜单表+复制榜单;tab 交互归宿主,静态页逐榜/全榜直出) ── */
299
294
  const RANK_ZH = {
@@ -328,7 +323,7 @@ export function buildRankingDoc(r) {
328
323
  caption: r.title,
329
324
  emptyText: '本窗无排行数据',
330
325
  }));
331
- parts.push(copyBlock('复制榜单', {
326
+ parts.push(dataCopyArea('复制榜单', {
332
327
  envelope: {
333
328
  version: DOC_VERSION, skill: DOC_SKILL, shape: 'list', key: 'calorie.view.ranking',
334
329
  data: {
@@ -340,7 +335,14 @@ export function buildRankingDoc(r) {
340
335
  },
341
336
  },
342
337
  }));
343
- return assemble('排行 ' + (RANK_ZH[r.category] ?? r.category) + ' ' + r.start + ' ~ ' + r.end, 'calorie.view.ranking · 饮食域', 'tab 切换归宿主:单榜直出(' + r.title + ')', parts.join(''), false);
338
+ return assembleDocPage({
339
+ docTitle: DOC_TITLE,
340
+ title: '排行 ' + (RANK_ZH[r.category] ?? r.category) + ' ' + r.start + ' ~ ' + r.end,
341
+ eyebrow: 'calorie.view.ranking · 饮食域',
342
+ subtitle: 'tab 切换归宿主:单榜直出(' + r.title + ')',
343
+ content: parts.join(''),
344
+ charts: false,
345
+ });
344
346
  }
345
347
  export function buildAllRankingsDoc(a) {
346
348
  const cats = Object.keys(a.boards);
@@ -369,13 +371,20 @@ export function buildAllRankingsDoc(a) {
369
371
  }),
370
372
  }));
371
373
  }
372
- parts.push(copyBlock('复制数据', {
374
+ parts.push(dataCopyArea('复制数据', {
373
375
  envelope: {
374
376
  version: DOC_VERSION, skill: DOC_SKILL, shape: 'stat', key: 'calorie.view.ranking',
375
377
  data: { metrics: { okCount: a.okCount, topN: a.topN } },
376
378
  },
377
379
  }));
378
- return assemble('全部排行 ' + a.start + ' ~ ' + a.end, 'calorie.view.ranking · 饮食域', a.start + ' ~ ' + a.end + ' · ' + a.okCount + '/5 榜有数据', parts.join(''), false);
380
+ return assembleDocPage({
381
+ docTitle: DOC_TITLE,
382
+ title: '全部排行 ' + a.start + ' ~ ' + a.end,
383
+ eyebrow: 'calorie.view.ranking · 饮食域',
384
+ subtitle: a.start + ' ~ ' + a.end + ' · ' + a.okCount + '/5 榜有数据',
385
+ content: parts.join(''),
386
+ charts: false,
387
+ });
379
388
  }
380
389
  /* ── 查食品/食品库(food_search/food_library 对照:参数表单+结果表+复制) ── */
381
390
  const PRODUCT_COLUMNS = [
@@ -405,14 +414,21 @@ export function buildSearchDoc(s) {
405
414
  caption: '查食品 ' + s.keyword + '(共 ' + s.total + ' 条)',
406
415
  emptyText: '无命中',
407
416
  }),
408
- copyBlock('复制数据', {
417
+ dataCopyArea('复制数据', {
409
418
  envelope: {
410
419
  version: DOC_VERSION, skill: DOC_SKILL, shape: 'list', key: 'calorie.view.search',
411
420
  data: { items: rows, total: s.total },
412
421
  },
413
422
  }),
414
423
  ];
415
- return assemble('查食品 ' + s.keyword, 'calorie.view.search · 饮食域', null, parts.join(''), false);
424
+ return assembleDocPage({
425
+ docTitle: DOC_TITLE,
426
+ title: '查食品 ' + s.keyword,
427
+ eyebrow: 'calorie.view.search · 饮食域',
428
+ subtitle: null,
429
+ content: parts.join(''),
430
+ charts: false,
431
+ });
416
432
  }
417
433
  export function buildLibraryDoc(lib, statsTotal) {
418
434
  const rows = lib.items.map((p) => ({
@@ -433,14 +449,21 @@ export function buildLibraryDoc(lib, statsTotal) {
433
449
  caption: '食品库' + (lib.category ? '(' + lib.category + ')' : '(全量)') + '(共 ' + lib.total + ' 条)',
434
450
  emptyText: '该分类空库',
435
451
  }),
436
- copyBlock('复制数据', {
452
+ dataCopyArea('复制数据', {
437
453
  envelope: {
438
454
  version: DOC_VERSION, skill: DOC_SKILL, shape: 'list', key: 'calorie.view.library',
439
455
  data: { items: rows, total: lib.total },
440
456
  },
441
457
  }),
442
458
  ];
443
- return assemble('食品库' + (lib.category ? '(' + lib.category + ')' : ''), 'calorie.view.library · 饮食域', null, parts.join(''), false);
459
+ return assembleDocPage({
460
+ docTitle: DOC_TITLE,
461
+ title: '食品库' + (lib.category ? '(' + lib.category + ')' : ''),
462
+ eyebrow: 'calorie.view.library · 饮食域',
463
+ subtitle: null,
464
+ content: parts.join(''),
465
+ charts: false,
466
+ });
444
467
  }
445
468
  /* ── 健康盘(health_dashboard.html 对照:四维+今日该做什么+复制回 AI) ── */
446
469
  const HEALTH_DIMS = [
@@ -502,7 +525,7 @@ export function buildHealthDoc(h) {
502
525
  open: true,
503
526
  contentHtml: renderListRows({ items: actions }),
504
527
  }));
505
- parts.push(copyBlock('复制回 AI', {
528
+ parts.push(dataCopyArea('复制回 AI', {
506
529
  envelope: {
507
530
  version: DOC_VERSION, skill: DOC_SKILL, shape: 'stat', key: 'calorie.view.health',
508
531
  data: {
@@ -514,7 +537,14 @@ export function buildHealthDoc(h) {
514
537
  },
515
538
  },
516
539
  }));
517
- return assemble('健康盘 ' + h.start + ' ~ ' + h.end, 'calorie.view.health · 饮食域', h.dashboard.message, parts.join(''), false);
540
+ return assembleDocPage({
541
+ docTitle: DOC_TITLE,
542
+ title: '健康盘 ' + h.start + ' ~ ' + h.end,
543
+ eyebrow: 'calorie.view.health · 饮食域',
544
+ subtitle: h.dashboard.message,
545
+ content: parts.join(''),
546
+ charts: false,
547
+ });
518
548
  }
519
549
  /* ── 去重报告(dedupe_report.html 对照:KPI+重复组表+处理建议) ── */
520
550
  export function buildDedupeDoc(v) {
@@ -547,7 +577,7 @@ export function buildDedupeDoc(v) {
547
577
  ],
548
578
  }),
549
579
  }));
550
- parts.push(copyBlock('复制数据', {
580
+ parts.push(dataCopyArea('复制数据', {
551
581
  envelope: {
552
582
  version: DOC_VERSION, skill: DOC_SKILL, shape: 'list', key: 'calorie.view.dedupe',
553
583
  data: {
@@ -556,6 +586,13 @@ export function buildDedupeDoc(v) {
556
586
  },
557
587
  },
558
588
  }));
559
- return assemble('去重报告', 'calorie.view.dedupe · 饮食域', '数据来源:nutrition_products', parts.join(''), false);
589
+ return assembleDocPage({
590
+ docTitle: DOC_TITLE,
591
+ title: '去重报告',
592
+ eyebrow: 'calorie.view.dedupe · 饮食域',
593
+ subtitle: '数据来源:nutrition_products',
594
+ content: parts.join(''),
595
+ charts: false,
596
+ });
560
597
  }
561
598
  //# sourceMappingURL=dietDocs.js.map