skill-calorie 0.1.1 → 0.2.1
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.
- package/SKILL.md +207 -0
- package/dist/analysis/anomaly/common.d.ts.map +1 -1
- package/dist/analysis/anomaly/common.js +2 -1
- package/dist/analysis/anomaly/common.js.map +1 -1
- package/dist/analysis/cross.d.ts.map +1 -1
- package/dist/analysis/cross.js +3 -2
- package/dist/analysis/cross.js.map +1 -1
- package/dist/analysis/deficit.d.ts.map +1 -1
- package/dist/analysis/deficit.js +4 -0
- package/dist/analysis/deficit.js.map +1 -1
- package/dist/analysis/diet.js +2 -2
- package/dist/analysis/diet.js.map +1 -1
- package/dist/analysis/exercise.js +5 -5
- package/dist/analysis/exercise.js.map +1 -1
- package/dist/analysis/review.js +2 -2
- package/dist/analysis/review.js.map +1 -1
- package/dist/analysis/series.d.ts +7 -1
- package/dist/analysis/series.d.ts.map +1 -1
- package/dist/analysis/series.js +22 -6
- package/dist/analysis/series.js.map +1 -1
- package/dist/analysis/utils.d.ts +7 -0
- package/dist/analysis/utils.d.ts.map +1 -1
- package/dist/analysis/utils.js +7 -0
- package/dist/analysis/utils.js.map +1 -1
- package/dist/analysis/weightCompare3.js +2 -2
- package/dist/analysis/weightCompare3.js.map +1 -1
- package/dist/cli/cmd_read.d.ts +21 -3
- package/dist/cli/cmd_read.d.ts.map +1 -1
- package/dist/cli/cmd_read.js +480 -53
- package/dist/cli/cmd_read.js.map +1 -1
- package/dist/cli/keys.d.ts +89 -1
- package/dist/cli/keys.d.ts.map +1 -1
- package/dist/cli/keys.js +30 -0
- package/dist/cli/keys.js.map +1 -1
- package/dist/cli/write.d.ts +19 -1
- package/dist/cli/write.d.ts.map +1 -1
- package/dist/cli/write.js +148 -52
- package/dist/cli/write.js.map +1 -1
- package/dist/db/readonly.d.ts +3 -0
- package/dist/db/readonly.d.ts.map +1 -0
- package/dist/db/readonly.js +22 -0
- package/dist/db/readonly.js.map +1 -0
- package/dist/output.d.ts +82 -0
- package/dist/output.d.ts.map +1 -0
- package/dist/output.js +305 -0
- package/dist/output.js.map +1 -0
- package/dist/render/copy.d.ts +20 -0
- package/dist/render/copy.d.ts.map +1 -0
- package/dist/render/copy.js +36 -0
- package/dist/render/copy.js.map +1 -0
- package/dist/render/dietDocs.d.ts +45 -0
- package/dist/render/dietDocs.d.ts.map +1 -0
- package/dist/render/dietDocs.js +561 -0
- package/dist/render/dietDocs.js.map +1 -0
- package/dist/render/envelope.d.ts +32 -6
- package/dist/render/envelope.d.ts.map +1 -1
- package/dist/render/envelope.js +71 -0
- package/dist/render/envelope.js.map +1 -1
- package/dist/render/exercisePort.d.ts +161 -0
- package/dist/render/exercisePort.d.ts.map +1 -0
- package/dist/render/exercisePort.js +395 -0
- package/dist/render/exercisePort.js.map +1 -0
- package/dist/render/goal.d.ts.map +1 -1
- package/dist/render/goal.js +13 -2
- package/dist/render/goal.js.map +1 -1
- package/dist/render/goalPlate.d.ts +1 -1
- package/dist/render/goalPlate.d.ts.map +1 -1
- package/dist/render/goalPlate.js +5 -1
- package/dist/render/goalPlate.js.map +1 -1
- package/dist/render/helpCenter.d.ts +104 -0
- package/dist/render/helpCenter.d.ts.map +1 -0
- package/dist/render/helpCenter.js +386 -0
- package/dist/render/helpCenter.js.map +1 -0
- package/dist/render/html.d.ts +12 -0
- package/dist/render/html.d.ts.map +1 -1
- package/dist/render/html.js +21 -5
- package/dist/render/html.js.map +1 -1
- package/dist/render/index.d.ts +8 -1
- package/dist/render/index.d.ts.map +1 -1
- package/dist/render/index.js +5 -1
- package/dist/render/index.js.map +1 -1
- package/dist/render/nutritionPort.d.ts +89 -0
- package/dist/render/nutritionPort.d.ts.map +1 -0
- package/dist/render/nutritionPort.js +183 -0
- package/dist/render/nutritionPort.js.map +1 -0
- package/dist/render/nutritionPortDocs.d.ts +6 -0
- package/dist/render/nutritionPortDocs.d.ts.map +1 -0
- package/dist/render/nutritionPortDocs.js +317 -0
- package/dist/render/nutritionPortDocs.js.map +1 -0
- package/dist/render/photo.d.ts +6 -1
- package/dist/render/photo.d.ts.map +1 -1
- package/dist/render/photo.js +13 -4
- package/dist/render/photo.js.map +1 -1
- package/dist/render/planPlate.d.ts +2 -1
- package/dist/render/planPlate.d.ts.map +1 -1
- package/dist/render/planPlate.js +6 -1
- package/dist/render/planPlate.js.map +1 -1
- package/dist/render/receipt.d.ts +47 -1
- package/dist/render/receipt.d.ts.map +1 -1
- package/dist/render/receipt.js +67 -3
- package/dist/render/receipt.js.map +1 -1
- package/dist/render/sportDocs.d.ts +14 -0
- package/dist/render/sportDocs.d.ts.map +1 -0
- package/dist/render/sportDocs.js +540 -0
- package/dist/render/sportDocs.js.map +1 -0
- package/dist/render/sportPortDocs.d.ts +8 -0
- package/dist/render/sportPortDocs.d.ts.map +1 -0
- package/dist/render/sportPortDocs.js +468 -0
- package/dist/render/sportPortDocs.js.map +1 -0
- package/dist/render/templates.d.ts +4 -0
- package/dist/render/templates.d.ts.map +1 -0
- package/dist/render/templates.js +29 -0
- package/dist/render/templates.js.map +1 -0
- package/dist/render/trendDocs.d.ts +11 -0
- package/dist/render/trendDocs.d.ts.map +1 -0
- package/dist/render/trendDocs.js +445 -0
- package/dist/render/trendDocs.js.map +1 -0
- package/dist/render/trendMiscPort.d.ts +127 -0
- package/dist/render/trendMiscPort.d.ts.map +1 -0
- package/dist/render/trendMiscPort.js +277 -0
- package/dist/render/trendMiscPort.js.map +1 -0
- package/dist/render/trendMiscPortDocs.d.ts +10 -0
- package/dist/render/trendMiscPortDocs.d.ts.map +1 -0
- package/dist/render/trendMiscPortDocs.js +397 -0
- package/dist/render/trendMiscPortDocs.js.map +1 -0
- package/dist/render/wizardPort.d.ts +125 -0
- package/dist/render/wizardPort.d.ts.map +1 -0
- package/dist/render/wizardPort.js +393 -0
- package/dist/render/wizardPort.js.map +1 -0
- package/dist/render/wizardPortDocs.d.ts +6 -0
- package/dist/render/wizardPortDocs.d.ts.map +1 -0
- package/dist/render/wizardPortDocs.js +274 -0
- package/dist/render/wizardPortDocs.js.map +1 -0
- package/dist/triggers/routing.d.ts +141 -0
- package/dist/triggers/routing.d.ts.map +1 -0
- package/dist/triggers/routing.js +678 -0
- package/dist/triggers/routing.js.map +1 -0
- package/package.json +5 -3
- package/templates/diet.html +40 -0
- package/templates/exercise.html +40 -0
- package/templates/goal.html +40 -0
- package/templates/help.html +40 -0
- package/templates/home.html +40 -0
- package/templates/photo-gallery.html +40 -0
|
@@ -1,9 +1,3 @@
|
|
|
1
|
-
/** T8 #27 + T9 #28 + T10 #29 + #41 · 主视图 + 目标分析盘 + 身体照片 + 读链补齐 envelope 键表(T11 出口复用同一命名;仅 type-only 消费 link-core)。
|
|
2
|
-
*
|
|
3
|
-
* T8 四主视图 key 另立 view 域:calorie.view_home / calorie.view_diet / calorie.view_exercise / calorie.view_goal(一律 stat)。
|
|
4
|
-
* T9 目标分析盘:goal_config / goal_recommend / goal_weight / goal_progress / goal_status / combined / deficit / diet_review / health / ranking / library / search(一律 stat)。
|
|
5
|
-
* T10 照片视图 key 挂 calorie.photo_*(gallery/compare/viewer/gif/help/receipt 六键,就近形状)。
|
|
6
|
-
*/
|
|
7
1
|
import type { EnvelopeShape } from 'base-link-core';
|
|
8
2
|
export declare const VIEW_KEYS: {
|
|
9
3
|
readonly home: string;
|
|
@@ -57,4 +51,36 @@ export declare const PHOTO_VIEW_KEYS: {
|
|
|
57
51
|
export type PhotoViewName = keyof typeof PHOTO_VIEW_KEYS;
|
|
58
52
|
export declare const PHOTO_VIEW_SHAPES: Record<PhotoViewName, EnvelopeShape>;
|
|
59
53
|
export declare function photoShapeFor(key: string): EnvelopeShape;
|
|
54
|
+
export declare const DELIVERY_MODES: readonly ["file", "inline", "text"];
|
|
55
|
+
export type DeliveryMode = (typeof DELIVERY_MODES)[number];
|
|
56
|
+
/** 产物族(**结构判定**,非配置表):描述该产物由哪一类模板/壳产出,供调用方选渲染宿主。 */
|
|
57
|
+
export declare const DELIVERY_TEMPLATES: readonly ["help-shell", "doc-shell", "receipt", "fragment", "text"];
|
|
58
|
+
export type DeliveryTemplate = (typeof DELIVERY_TEMPLATES)[number];
|
|
59
|
+
export interface Delivery {
|
|
60
|
+
/** 交付通道(必填):`file` 落盘绝对路径/`inline` 产物随 envelope 回传/`text` 结构化文本。 */
|
|
61
|
+
readonly mode: DeliveryMode;
|
|
62
|
+
/** 落盘绝对路径(仅 `file` 态,或落盘成功的 `text` 态如 `help.center` 的 text 交付)。 */
|
|
63
|
+
readonly path?: string;
|
|
64
|
+
/** 产物族。 */
|
|
65
|
+
readonly template?: DeliveryTemplate;
|
|
66
|
+
/** 产物 UTF-8 字节数。 */
|
|
67
|
+
readonly bytes?: number;
|
|
68
|
+
}
|
|
69
|
+
/** 产物族判定(首命中即定,纯结构、零配置、零取数):
|
|
70
|
+
* 空/无标签 → `text`;含 #88 速查台壳标记 → `help-shell`;`<!DOCTYPE` → `doc-shell`;
|
|
71
|
+
* `receipt` 形 → `receipt`;其余 → `fragment`。 */
|
|
72
|
+
export declare function deliveryTemplateOf(shape: EnvelopeShape, html: string): DeliveryTemplate;
|
|
73
|
+
/** 交付信号构造(唯一入口):`mode` 闭集校验、`path` 只许绝对路径、`bytes` 非负整数。
|
|
74
|
+
* `template` 缺省按产物结构判定;文本交付由调用方显式给 `'text'`(文本里可能出现 `<N>` 之类
|
|
75
|
+
* 非标签串,结构判定对文本不可靠,故不猜)。 */
|
|
76
|
+
export declare function buildDelivery(input: {
|
|
77
|
+
mode: DeliveryMode;
|
|
78
|
+
path?: string;
|
|
79
|
+
shape: EnvelopeShape;
|
|
80
|
+
html?: string;
|
|
81
|
+
bytes?: number;
|
|
82
|
+
template?: DeliveryTemplate;
|
|
83
|
+
}): Delivery;
|
|
84
|
+
/** 顶层追加 `delivery`(**只追加**:既有五字段 `version/skill/shape/key/data` 一字不改、序不变)。 */
|
|
85
|
+
export declare function withDelivery(env: Record<string, unknown>, delivery: Delivery): Record<string, unknown>;
|
|
60
86
|
//# sourceMappingURL=envelope.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"envelope.d.ts","sourceRoot":"","sources":["../../src/render/envelope.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"envelope.d.ts","sourceRoot":"","sources":["../../src/render/envelope.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAIpD,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmCZ,CAAC;AACX,MAAM,MAAM,QAAQ,GAAG,MAAM,OAAO,SAAS,CAAC;AAE9C,eAAO,MAAM,WAAW,EAAE,MAAM,CAAC,QAAQ,EAAE,aAAa,CAmCvD,CAAC;AAEF,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,aAAa,CAIvD;AAED,6DAA6D;AAC7D,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAM7G;AAED,eAAO,MAAM,eAAe;;;;;;;CAOlB,CAAC;AACX,MAAM,MAAM,aAAa,GAAG,MAAM,OAAO,eAAe,CAAC;AAEzD,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,aAAa,EAAE,aAAa,CAOlE,CAAC;AAEF,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,aAAa,CAIxD;AAcD,eAAO,MAAM,cAAc,qCAAsC,CAAC;AAClE,MAAM,MAAM,YAAY,GAAG,CAAC,OAAO,cAAc,CAAC,CAAC,MAAM,CAAC,CAAC;AAE3D,oDAAoD;AACpD,eAAO,MAAM,kBAAkB,qEAAsE,CAAC;AACtG,MAAM,MAAM,gBAAgB,GAAG,CAAC,OAAO,kBAAkB,CAAC,CAAC,MAAM,CAAC,CAAC;AAEnE,MAAM,WAAW,QAAQ;IACvB,oEAAoE;IACpE,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC;IAC5B,mEAAmE;IACnE,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,WAAW;IACX,QAAQ,CAAC,QAAQ,CAAC,EAAE,gBAAgB,CAAC;IACrC,oBAAoB;IACpB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;CACzB;AAED;;+CAE+C;AAC/C,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,aAAa,EAAE,IAAI,EAAE,MAAM,GAAG,gBAAgB,CAOvF;AAED;;4BAE4B;AAC5B,wBAAgB,aAAa,CAAC,KAAK,EAAE;IACnC,IAAI,EAAE,YAAY,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,aAAa,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,gBAAgB,CAAC;CAC7B,GAAG,QAAQ,CAwBX;AAED,8EAA8E;AAC9E,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,QAAQ,EAAE,QAAQ,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAEtG"}
|
package/dist/render/envelope.js
CHANGED
|
@@ -1,3 +1,10 @@
|
|
|
1
|
+
/** T8 #27 + T9 #28 + T10 #29 + #41 · 主视图 + 目标分析盘 + 身体照片 + 读链补齐 envelope 键表(T11 出口复用同一命名;仅 type-only 消费 link-core)。
|
|
2
|
+
*
|
|
3
|
+
* T8 四主视图 key 另立 view 域:calorie.view_home / calorie.view_diet / calorie.view_exercise / calorie.view_goal(一律 stat)。
|
|
4
|
+
* T9 目标分析盘:goal_config / goal_recommend / goal_weight / goal_progress / goal_status / combined / deficit / diet_review / health / ranking / library / search(一律 stat)。
|
|
5
|
+
* T10 照片视图 key 挂 calorie.photo_*(gallery/compare/viewer/gif/help/receipt 六键,就近形状)。
|
|
6
|
+
*/
|
|
7
|
+
import { isAbsolute } from 'node:path';
|
|
1
8
|
import { calorieKey } from '../fetch/shapes.js';
|
|
2
9
|
import { CalorieRenderError } from './errors.js';
|
|
3
10
|
export const VIEW_KEYS = {
|
|
@@ -108,4 +115,68 @@ export function photoShapeFor(key) {
|
|
|
108
115
|
throw new CalorieRenderError('bad-input', '未知照片视图 key:' + key);
|
|
109
116
|
return PHOTO_VIEW_SHAPES[hit[0]];
|
|
110
117
|
}
|
|
118
|
+
/* ── #83 · 三态交付契约(M4 HTML-First 铁则 + 渲染失败回执) ────────────────────────────────
|
|
119
|
+
*
|
|
120
|
+
* 旧铁则正本(只读基线 `D:\2Study\StudyNotes\SKILLS\卡路里\SKILL.md:18-19`):
|
|
121
|
+
* 4. HTML-First:唤醒词命中后**只要模板表列出对应 HTML,AI 必须 invoke HTML 工作流(渲染 → 打开),严禁文字答**;
|
|
122
|
+
* 渲染失败处理契约(v2.4.19 增 · #242):render 脚本**必须** invoke,**不得手写 HTML 兜底**;
|
|
123
|
+
* 判定成功 = 退出码 0 且产物 HTML 文件存在;渲染失败(退出码非 0/产物缺失)→ 输出**错误回执**
|
|
124
|
+
* (说明失败原因 + 建议命令),**严禁**手写 HTML 代替渲染产物。
|
|
125
|
+
*
|
|
126
|
+
* 新架构落点(维护者 2026-09-08 拍定**方案 A**):`delivery` 作为 envelope 的**追加字段**
|
|
127
|
+
* (`{mode,path?,template?,bytes?}`,六形状与既有五字段一字不改),stdout 仍守 P9「一行 JSON」。
|
|
128
|
+
* 三态同源:同一个 key、同一份 `data`,绝不各自取数(②③ 的载荷都由该次 envelope 派生)。
|
|
129
|
+
*/
|
|
130
|
+
export const DELIVERY_MODES = ['file', 'inline', 'text'];
|
|
131
|
+
/** 产物族(**结构判定**,非配置表):描述该产物由哪一类模板/壳产出,供调用方选渲染宿主。 */
|
|
132
|
+
export const DELIVERY_TEMPLATES = ['help-shell', 'doc-shell', 'receipt', 'fragment', 'text'];
|
|
133
|
+
/** 产物族判定(首命中即定,纯结构、零配置、零取数):
|
|
134
|
+
* 空/无标签 → `text`;含 #88 速查台壳标记 → `help-shell`;`<!DOCTYPE` → `doc-shell`;
|
|
135
|
+
* `receipt` 形 → `receipt`;其余 → `fragment`。 */
|
|
136
|
+
export function deliveryTemplateOf(shape, html) {
|
|
137
|
+
const s = typeof html === 'string' ? html : '';
|
|
138
|
+
if (s.trim() === '' || !/<[a-zA-Z!/]/.test(s))
|
|
139
|
+
return 'text';
|
|
140
|
+
if (s.includes('id="ilife-help-shell"'))
|
|
141
|
+
return 'help-shell';
|
|
142
|
+
if (/^\s*<!DOCTYPE/i.test(s))
|
|
143
|
+
return 'doc-shell';
|
|
144
|
+
if (shape === 'receipt')
|
|
145
|
+
return 'receipt';
|
|
146
|
+
return 'fragment';
|
|
147
|
+
}
|
|
148
|
+
/** 交付信号构造(唯一入口):`mode` 闭集校验、`path` 只许绝对路径、`bytes` 非负整数。
|
|
149
|
+
* `template` 缺省按产物结构判定;文本交付由调用方显式给 `'text'`(文本里可能出现 `<N>` 之类
|
|
150
|
+
* 非标签串,结构判定对文本不可靠,故不猜)。 */
|
|
151
|
+
export function buildDelivery(input) {
|
|
152
|
+
if (!DELIVERY_MODES.includes(input.mode)) {
|
|
153
|
+
throw new CalorieRenderError('bad-input', '交付通道非法:' + String(input.mode) + '(须为 ' + DELIVERY_MODES.join('/') + ')');
|
|
154
|
+
}
|
|
155
|
+
const out = { mode: input.mode };
|
|
156
|
+
if (input.path !== undefined) {
|
|
157
|
+
if (!isAbsolute(input.path))
|
|
158
|
+
throw new CalorieRenderError('bad-input', 'delivery.path 须为绝对路径:' + input.path);
|
|
159
|
+
out.path = input.path;
|
|
160
|
+
}
|
|
161
|
+
if (input.template !== undefined) {
|
|
162
|
+
if (!DELIVERY_TEMPLATES.includes(input.template)) {
|
|
163
|
+
throw new CalorieRenderError('bad-input', '交付产物族非法:' + String(input.template));
|
|
164
|
+
}
|
|
165
|
+
out.template = input.template;
|
|
166
|
+
}
|
|
167
|
+
else {
|
|
168
|
+
out.template = deliveryTemplateOf(input.shape, input.html ?? '');
|
|
169
|
+
}
|
|
170
|
+
if (input.bytes !== undefined) {
|
|
171
|
+
if (!Number.isInteger(input.bytes) || input.bytes < 0) {
|
|
172
|
+
throw new CalorieRenderError('bad-input', 'delivery.bytes 须为非负整数:' + String(input.bytes));
|
|
173
|
+
}
|
|
174
|
+
out.bytes = input.bytes;
|
|
175
|
+
}
|
|
176
|
+
return out;
|
|
177
|
+
}
|
|
178
|
+
/** 顶层追加 `delivery`(**只追加**:既有五字段 `version/skill/shape/key/data` 一字不改、序不变)。 */
|
|
179
|
+
export function withDelivery(env, delivery) {
|
|
180
|
+
return { ...env, delivery };
|
|
181
|
+
}
|
|
111
182
|
//# sourceMappingURL=envelope.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"envelope.js","sourceRoot":"","sources":["../../src/render/envelope.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"envelope.js","sourceRoot":"","sources":["../../src/render/envelope.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
/** #111 · 运动移植 6 键取数(t71 需移植 exercise_* 六模板的数据面)。
|
|
2
|
+
*
|
|
3
|
+
* 行源一律 T3 `listWindow`(软删除已排除);分类口径=**库内实填优先、缺失回退
|
|
4
|
+
* `inferCategory`**(旧模板按入库 category 过滤,本层沿旧口径;view.exercise 的纯
|
|
5
|
+
* 推断口径不动,两处差异见证据 R2)。
|
|
6
|
+
* 缺失阻断不返空:窗内无行即 `missing-data`(G5 #100 口径);日期非法即 `bad-input`。
|
|
7
|
+
* 本层只做取数+聚合,不组 HTML(组装归 `render/sportPortDocs.ts`)。
|
|
8
|
+
*/
|
|
9
|
+
import type { DatabaseSync } from 'node:sqlite';
|
|
10
|
+
import type { ExerciseRow } from '../fetch/exercise.js';
|
|
11
|
+
/** 库内实填分类优先(去空格),空串/缺失回退按名推断。 */
|
|
12
|
+
export declare function effectiveCategory(r: ExerciseRow): string;
|
|
13
|
+
export interface PortRow {
|
|
14
|
+
date: string;
|
|
15
|
+
time: string | null;
|
|
16
|
+
type: string;
|
|
17
|
+
minutes: number | null;
|
|
18
|
+
burned: number;
|
|
19
|
+
category: string;
|
|
20
|
+
distanceKm: number | null;
|
|
21
|
+
avgHr: number | null;
|
|
22
|
+
loadKg: number | null;
|
|
23
|
+
reps: number | null;
|
|
24
|
+
setIndex: number | null;
|
|
25
|
+
note: string;
|
|
26
|
+
}
|
|
27
|
+
/** 窗内全部行(无行即 missing-data;调用方再按类过滤——过滤致空亦 missing)。 */
|
|
28
|
+
export declare function listPortRows(db: DatabaseSync, start: string, end: string): PortRow[];
|
|
29
|
+
export interface StrengthByMovement {
|
|
30
|
+
movement: string;
|
|
31
|
+
sets: number;
|
|
32
|
+
volumeKg: number | null;
|
|
33
|
+
reps: number | null;
|
|
34
|
+
}
|
|
35
|
+
export interface StrengthView {
|
|
36
|
+
start: string;
|
|
37
|
+
end: string;
|
|
38
|
+
rows: PortRow[];
|
|
39
|
+
movementCount: number;
|
|
40
|
+
totalSets: number;
|
|
41
|
+
totalVolumeKg: number | null;
|
|
42
|
+
totalReps: number | null;
|
|
43
|
+
byMovement: StrengthByMovement[];
|
|
44
|
+
/** 重量轨迹(近 10 个训练日;单侧口径=旧模板:Σ load×reps)。 */
|
|
45
|
+
trail: {
|
|
46
|
+
date: string;
|
|
47
|
+
volumeKg: number | null;
|
|
48
|
+
}[];
|
|
49
|
+
}
|
|
50
|
+
export declare function buildStrengthView(db: DatabaseSync, start: string, end: string): StrengthView;
|
|
51
|
+
export interface CardioByType {
|
|
52
|
+
type: string;
|
|
53
|
+
sessions: number;
|
|
54
|
+
minutes: number | null;
|
|
55
|
+
distanceKm: number | null;
|
|
56
|
+
paceMinPerKm: number | null;
|
|
57
|
+
}
|
|
58
|
+
export interface CardioView {
|
|
59
|
+
start: string;
|
|
60
|
+
end: string;
|
|
61
|
+
rows: PortRow[];
|
|
62
|
+
sessions: number;
|
|
63
|
+
totalMinutes: number | null;
|
|
64
|
+
totalDistanceKm: number | null;
|
|
65
|
+
avgPaceMinPerKm: number | null;
|
|
66
|
+
byType: CardioByType[];
|
|
67
|
+
}
|
|
68
|
+
export declare function buildCardioView(db: DatabaseSync, start: string, end: string): CardioView;
|
|
69
|
+
export interface DistributionBucket {
|
|
70
|
+
category: string;
|
|
71
|
+
sessions: number;
|
|
72
|
+
burned: number;
|
|
73
|
+
minutes: number | null;
|
|
74
|
+
shareByBurned: number | null;
|
|
75
|
+
shareBySessions: number | null;
|
|
76
|
+
}
|
|
77
|
+
export interface DistributionView {
|
|
78
|
+
start: string;
|
|
79
|
+
end: string;
|
|
80
|
+
days: number;
|
|
81
|
+
activeDays: number;
|
|
82
|
+
sessions: number;
|
|
83
|
+
totalBurned: number;
|
|
84
|
+
buckets: DistributionBucket[];
|
|
85
|
+
intakeCal: number | null;
|
|
86
|
+
tdeeTotal: number | null;
|
|
87
|
+
/** 缺口=TDEE×天+运动−摄入(series ADR-0013 口径;缺摄入即 null)。 */
|
|
88
|
+
deficit: number | null;
|
|
89
|
+
}
|
|
90
|
+
export declare function buildDistributionView(db: DatabaseSync, start: string, end: string): DistributionView;
|
|
91
|
+
export interface RecapView {
|
|
92
|
+
start: string;
|
|
93
|
+
end: string;
|
|
94
|
+
sessions: number;
|
|
95
|
+
totalMinutes: number | null;
|
|
96
|
+
totalBurned: number;
|
|
97
|
+
activeDays: number;
|
|
98
|
+
days: number;
|
|
99
|
+
byCategory: {
|
|
100
|
+
category: string;
|
|
101
|
+
sessions: number;
|
|
102
|
+
burned: number;
|
|
103
|
+
}[];
|
|
104
|
+
top5: {
|
|
105
|
+
type: string;
|
|
106
|
+
sessions: number;
|
|
107
|
+
burned: number;
|
|
108
|
+
}[];
|
|
109
|
+
daily: {
|
|
110
|
+
date: string;
|
|
111
|
+
burned: number | null;
|
|
112
|
+
}[];
|
|
113
|
+
summary: string;
|
|
114
|
+
}
|
|
115
|
+
export declare function buildRecapView(db: DatabaseSync, start: string, end: string): RecapView;
|
|
116
|
+
export interface PlannedSession {
|
|
117
|
+
date: string;
|
|
118
|
+
label: string;
|
|
119
|
+
movements: string[];
|
|
120
|
+
plannedSets: number | null;
|
|
121
|
+
hit: boolean;
|
|
122
|
+
actualTypes: string[];
|
|
123
|
+
}
|
|
124
|
+
export interface ReviewView {
|
|
125
|
+
start: string;
|
|
126
|
+
end: string;
|
|
127
|
+
planTitle: string;
|
|
128
|
+
plannedSessions: number;
|
|
129
|
+
hitSessions: number;
|
|
130
|
+
completionPct: number | null;
|
|
131
|
+
plannedMovements: number;
|
|
132
|
+
hitMovements: number;
|
|
133
|
+
movementPct: number | null;
|
|
134
|
+
sessions: PlannedSession[];
|
|
135
|
+
unhit: PlannedSession[];
|
|
136
|
+
}
|
|
137
|
+
export declare function buildReviewView(db: DatabaseSync, start: string, end: string): ReviewView;
|
|
138
|
+
export interface TrendView {
|
|
139
|
+
start: string;
|
|
140
|
+
end: string;
|
|
141
|
+
days: {
|
|
142
|
+
date: string;
|
|
143
|
+
minutes: number | null;
|
|
144
|
+
burned: number | null;
|
|
145
|
+
sessions: number;
|
|
146
|
+
}[];
|
|
147
|
+
weekly: {
|
|
148
|
+
weekStart: string;
|
|
149
|
+
sessions: number;
|
|
150
|
+
burned: number;
|
|
151
|
+
}[];
|
|
152
|
+
activeDays: number;
|
|
153
|
+
totalMinutes: number | null;
|
|
154
|
+
totalBurned: number;
|
|
155
|
+
peak: {
|
|
156
|
+
date: string;
|
|
157
|
+
burned: number;
|
|
158
|
+
} | null;
|
|
159
|
+
}
|
|
160
|
+
export declare function buildTrendView(db: DatabaseSync, start: string, end: string): TrendView;
|
|
161
|
+
//# sourceMappingURL=exercisePort.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"exercisePort.d.ts","sourceRoot":"","sources":["../../src/render/exercisePort.ts"],"names":[],"mappings":"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"}
|