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.
- package/SKILL.md +54 -26
- 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 +460 -54
- 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 +12 -9
- package/dist/cli/write.d.ts.map +1 -1
- package/dist/cli/write.js +133 -48
- package/dist/cli/write.js.map +1 -1
- package/dist/output.d.ts +55 -1
- package/dist/output.d.ts.map +1 -1
- package/dist/output.js +203 -5
- package/dist/output.js.map +1 -1
- 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.map +1 -1
- package/dist/render/html.js +2 -1
- package/dist/render/html.js.map +1 -1
- package/dist/render/index.d.ts +3 -0
- package/dist/render/index.d.ts.map +1 -1
- package/dist/render/index.js +2 -0
- 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.map +1 -1
- package/dist/render/photo.js +5 -1
- 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/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 +21 -21
- package/dist/triggers/routing.d.ts.map +1 -1
- package/dist/triggers/routing.js +60 -30
- package/dist/triggers/routing.js.map +1 -1
- package/package.json +2 -2
- package/templates/diet.html +2 -2
- package/templates/exercise.html +2 -2
- package/templates/goal.html +2 -2
- package/templates/help.html +2 -2
- package/templates/home.html +2 -2
- package/templates/photo-gallery.html +2 -2
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"helpCenter.d.ts","sourceRoot":"","sources":["../../src/render/helpCenter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,386 @@
|
|
|
1
|
+
/** #88 · HELP 速查台(取 F3 并回补 F1/F2 独有能力)· 数据模型 + 壳落地。
|
|
2
|
+
*
|
|
3
|
+
* 三条口径(逐条对齐 `docs/research/t88-plan.md` v2 + `.scratch/orchestrator/t88-acceptance.md`):
|
|
4
|
+
* 1. **运行期派生,不做 codegen**:唯一权威是 `TRIGGERS`(436 条,`triggers/index.ts:48`),
|
|
5
|
+
* 本模块只把它**投影**成 `SceneData`(10 分组/54 子功能/436 场景),落盘 JSON 会构成
|
|
6
|
+
* 第二真相源,故不产。
|
|
7
|
+
* 2. **零 base-render 改动**:壳恒走 `renderHelpShell`(`base-render/src/help.ts:675`,冻结签名),
|
|
8
|
+
* 本模块只提供 `sceneData` + `assets`,不新增契约面、不自造第二份模板/样式/运行时。
|
|
9
|
+
* 3. **展示面常量取 F3 逐字**:分组 label/图标序取 `render_help_center.py:44-53`(F3 十组),
|
|
10
|
+
* 子功能序取 `:61-69`;SoT `CATEGORIES`(`triggers/index.ts:19-33`)是**13 条**且 diet 展示名
|
|
11
|
+
* 为「饮食记录」——差异已登记台账 **L-18**(`docs/research/t88-impl-a.md` §5),故不写
|
|
12
|
+
* 「label ⊆ CATEGORIES」这类会自红的守卫。
|
|
13
|
+
*
|
|
14
|
+
* 逐场景 CLI 形态文本(Q11/R17/R32):壳的 `cliText(scene) = scene.id`(`help.ts:391-393`)恒读
|
|
15
|
+
* `Scene.id`,故 **id 就是卡面展示面**:
|
|
16
|
+
* - 414 条新场景取 `key`(=真实键,与 F3 逐字相等);
|
|
17
|
+
* - **22 条 legacy 取 `main_prompt.cli` 原文**(R1-7 解耦):F3 的 `legacy_{wake_word}` 会让卡面
|
|
18
|
+
* 显示并复制一条**不存在的命令**(`help.ts` 侧无该键),差异已登记台账 **L-19**。
|
|
19
|
+
*
|
|
20
|
+
* **#106 回补(Q11 第二半:「F3 丢了逐场景 CLI 展示」)**:卡面 id 之外,另在**详情层**
|
|
21
|
+
* (壳的 Sheet)逐场景发一条 `editable_fields` 行「可执行命令」=**#81 路由层的 exec CLI**
|
|
22
|
+
* (`calorie-cmd-read calorie.*`,341/436;见 `helpSceneCli`)。三点口径:
|
|
23
|
+
* 1. **槽位**=冻结面既有的 `SceneEditableField`(`{name,label,value}`),**不新增契约面**;
|
|
24
|
+
* 落点对齐旧 ADR-0008 实施规范「`data_source` → ✅ cli 块 → L4 直接显示」。
|
|
25
|
+
* 2. **内容取路由层、不取 `main_prompt.cli` 原文**:后者 **376/436** 是已不存在的
|
|
26
|
+
* `python scripts/render_*.py`(370)/`mavis`(3)/`mmx`(2)/裸键(1)命令,展示它
|
|
27
|
+
* 违背 ADR-0008「必须遵守 3」(可一键复制执行)。
|
|
28
|
+
* 3. **非 exec 的 95 条不发该行**(#81 裁定:out-of-scope 10/legacy-chain 85,无单命令入口),
|
|
29
|
+
* 不造占位文案;`text` 态不加该行(纯文本索引,且 #88 D-3 锁「text 尖括号集恒 {<N>}」)。
|
|
30
|
+
*/
|
|
31
|
+
import { ASSET_WRAPPERS, HELP_SHELL_ID, buildStyleSheet, escapeHtml, renderHelpShell } from 'base-paint';
|
|
32
|
+
import { TRIGGERS } from '../triggers/index.js';
|
|
33
|
+
import { routesFor } from '../triggers/routing.js';
|
|
34
|
+
import { COPY_RUNTIME_JS } from './copy.js';
|
|
35
|
+
import { CalorieRenderError } from './errors.js';
|
|
36
|
+
import { CALORIE_TEMPLATES, loadTemplate } from './templates.js';
|
|
37
|
+
/** 换行(仓库口径:`String.fromCharCode(10)`,不写字面 `\n`)。 */
|
|
38
|
+
const LF = String.fromCharCode(10);
|
|
39
|
+
/** 速查台标题面(F3 `卡路里.html` payload 逐字:`skill_name`/`title`)。 */
|
|
40
|
+
export const HELP_SKILL_NAME = '卡路里';
|
|
41
|
+
export const HELP_TITLE = '唤醒词速查台';
|
|
42
|
+
/** 10 分组(**F3 序 + F3 逐字 label/图标**,`render_help_center.py:44-53`)。
|
|
43
|
+
*
|
|
44
|
+
* 与 SoT `CATEGORIES`(13 条)的差异:① 本表只含**有场景落点**的 10 组;② diet 展示名 F3 是
|
|
45
|
+
* 「饮食」而 SoT 是「饮食记录」(L-18);③ 图标 `⚙️ profile`(F3)vs `🛠 profile`(SoT)。
|
|
46
|
+
* 台账见 `docs/research/t88-impl-a.md` §5。
|
|
47
|
+
*/
|
|
48
|
+
export const HELP_GROUPS = Object.freeze([
|
|
49
|
+
{ id: 'home', icon: '🏠', label: '主页' },
|
|
50
|
+
{ id: 'diet', icon: '🍚', label: '饮食' },
|
|
51
|
+
{ id: 'weight', icon: '⚖️', label: '体重' },
|
|
52
|
+
{ id: 'exercise', icon: '🏃', label: '运动' },
|
|
53
|
+
{ id: 'workout', icon: '💪', label: '健身计划' },
|
|
54
|
+
{ id: 'goal', icon: '🎯', label: '目标管理' },
|
|
55
|
+
{ id: 'body_detail', icon: '🧬', label: '身体细节' },
|
|
56
|
+
{ id: 'body_photo', icon: '📸', label: '身材照片' },
|
|
57
|
+
{ id: 'profile', icon: '⚙️', label: '基础信息' },
|
|
58
|
+
{ id: 'analysis', icon: '📊', label: '分析' },
|
|
59
|
+
]);
|
|
60
|
+
/** 7 个分组的**子功能显式顺序**(逐字照抄 `render_help_center.py:61-69`;未列出的子功能按首次
|
|
61
|
+
* 出现序,`既有唤醒词` 恒最后)。 */
|
|
62
|
+
export const HELP_SUBFUNC_ORDER = Object.freeze({
|
|
63
|
+
'基础信息': ['设置资料', '看档案', '改资料'],
|
|
64
|
+
'目标管理': ['定目标', '看目标', '改目标'],
|
|
65
|
+
'身体细节': ['记身体细节', '看身体细节', '比身体细节', '删身体细节'],
|
|
66
|
+
'运动': ['记运动', '改运动', '看运动', '运动分析', '运动复盘'],
|
|
67
|
+
'身材照片': ['存身材照', '看身材照', '比身材照', '管身材照'],
|
|
68
|
+
'饮食': ['记饮食', '改饮食', '看饮食', '查食品', '看营养', '看排行', '饮食复盘', '餐别分布'],
|
|
69
|
+
'健身计划': ['定训练计划', '看训练计划', '改训练计划', '落地训练', '计划复盘', '安全检查'],
|
|
70
|
+
});
|
|
71
|
+
/** legacy 分组收口:`复盘` → `分析`(`render_help_center.py:56-58`)。 */
|
|
72
|
+
export const HELP_LEGACY_CATEGORY = Object.freeze({ '复盘': '分析' });
|
|
73
|
+
/** legacy 子功能名(F3 恒把旧版条目收在「既有唤醒词」子功能下)。 */
|
|
74
|
+
export const HELP_LEGACY_SUBGROUP = '既有唤醒词';
|
|
75
|
+
/* ── #106 · 逐场景「可执行命令」回补(Q11 第二半) ────────────────────────────────
|
|
76
|
+
*
|
|
77
|
+
* 数据来源=**#81 路由层**(`triggers/routing.ts` 的 `WAKE_ROUTES`;exec 桶 341 条,
|
|
78
|
+
* `docs/research/t81-exec-smoke.md` 全量实跑 exit 0)。单一真相:本模块不自造键、
|
|
79
|
+
* 不读 `main_prompt.cli` 原文、不做 `python → calorie-cmd-read` 的二次翻译。
|
|
80
|
+
*/
|
|
81
|
+
/** 字段名(`data-field` 承载值);**恒本模块常量**,不写第二份字面量。 */
|
|
82
|
+
export const HELP_CLI_FIELD_NAME = 'cli';
|
|
83
|
+
/** 对外文案(对齐 ADR-0008「可一键复制执行」口径)。 */
|
|
84
|
+
export const HELP_CLI_FIELD_LABEL = '可执行命令';
|
|
85
|
+
/** 唤醒词 → 该场景的**可执行 CLI**;无 exec 路由(#81 的 95 条 non-exec)→ `null`。
|
|
86
|
+
*
|
|
87
|
+
* 记身材照一词三命中(`body_photo_add_single`/`_note`/`_batch`):路由层按唤醒词给键,
|
|
88
|
+
* 三条同唤醒词场景取到同一条 CLI——如实照搬路由层口径,差异见 `t106-*.md` 台账。
|
|
89
|
+
*/
|
|
90
|
+
export function helpSceneCli(wakeWord) {
|
|
91
|
+
for (const route of routesFor(wakeWord)) {
|
|
92
|
+
if (route.kind === 'exec')
|
|
93
|
+
return route.cli;
|
|
94
|
+
}
|
|
95
|
+
return null;
|
|
96
|
+
}
|
|
97
|
+
/** 该唤醒词的 `editable_fields`(无 exec CLI 时返空数组=**不发字段**,不造空值行)。 */
|
|
98
|
+
function cliFields(wakeWord) {
|
|
99
|
+
const cli = helpSceneCli(wakeWord);
|
|
100
|
+
return cli === null ? [] : [{ name: HELP_CLI_FIELD_NAME, label: HELP_CLI_FIELD_LABEL, value: cli }];
|
|
101
|
+
}
|
|
102
|
+
/** `output_type` → 徽章(**必须发 `SceneTypeBadge{text,bg,fg}`**,E-2)。
|
|
103
|
+
*
|
|
104
|
+
* 三档配色逐字取 F3 运行时 `TYPE_DEFAULT`(`卡路里.html` 的 `var TYPE_DEFAULT`,脚本段;
|
|
105
|
+
* 本 session 复算:`结果/回执 → #e8f2ff/#0a63ce`、`过程 → #e2f7f5/#00897b`)。
|
|
106
|
+
* 只发字符串会走 CSS 默认色=丢三档色(`help.ts:451-459`),故恒发对象。
|
|
107
|
+
* H-01 禁色表(`#0a84ff/#af52de/#ff375f/#0071e3`)**不含**本表两色(P-3 白名单断言)。
|
|
108
|
+
*/
|
|
109
|
+
export const HELP_TYPE_BADGES = Object.freeze({
|
|
110
|
+
process: { text: '过程', bg: '#e2f7f5', fg: '#00897b' },
|
|
111
|
+
result: { text: '结果', bg: '#e8f2ff', fg: '#0a63ce' },
|
|
112
|
+
receipt: { text: '回执', bg: '#e8f2ff', fg: '#0a63ce' },
|
|
113
|
+
});
|
|
114
|
+
/** 联系作者(F3 payload 的 `contact.items` 逐字,含 Issues 一条)。 */
|
|
115
|
+
export const HELP_CONTACT = Object.freeze({
|
|
116
|
+
items: Object.freeze([
|
|
117
|
+
Object.freeze({ label: 'GitHub', value: 'https://github.com/FeatherHunter/SKILLS' }),
|
|
118
|
+
Object.freeze({ label: 'Issues', value: 'https://github.com/FeatherHunter/SKILLS/issues' }),
|
|
119
|
+
]),
|
|
120
|
+
});
|
|
121
|
+
/** 新场景条目判定(与 SoT 结构一致:`SceneTrigger` 独有 `output_type` + `prompt_template`)。 */
|
|
122
|
+
function isSceneTrigger(trigger) {
|
|
123
|
+
return 'output_type' in trigger && 'prompt_template' in trigger;
|
|
124
|
+
}
|
|
125
|
+
/** 子功能排序键(F3 规则:显式序 → 未列出 → `既有唤醒词` 恒最后)。 */
|
|
126
|
+
function subfuncKey(category, subfunction) {
|
|
127
|
+
const order = HELP_SUBFUNC_ORDER[category];
|
|
128
|
+
if (order !== undefined && order.includes(subfunction))
|
|
129
|
+
return [0, order.indexOf(subfunction), subfunction];
|
|
130
|
+
if (subfunction === HELP_LEGACY_SUBGROUP)
|
|
131
|
+
return [2, 0, subfunction];
|
|
132
|
+
return [1, 0, subfunction];
|
|
133
|
+
}
|
|
134
|
+
function compareKey(a, b) {
|
|
135
|
+
if (a[0] !== b[0])
|
|
136
|
+
return a[0] - b[0];
|
|
137
|
+
if (a[1] !== b[1])
|
|
138
|
+
return a[1] - b[1];
|
|
139
|
+
return a[2] < b[2] ? -1 : a[2] > b[2] ? 1 : 0;
|
|
140
|
+
}
|
|
141
|
+
/** 运行期派生:`TRIGGERS` → `SceneData`(10 分组/54 子功能/436 场景)。
|
|
142
|
+
*
|
|
143
|
+
* 纯函数、零 I/O、零缓存;两次同参调用逐字相等(P-2 口径)。
|
|
144
|
+
*/
|
|
145
|
+
export function buildHelpSceneData(opts = {}) {
|
|
146
|
+
const updatedAt = typeof opts.updatedAt === 'string' && opts.updatedAt !== '' ? opts.updatedAt : undefined;
|
|
147
|
+
const groups = HELP_GROUPS.map((group) => ({
|
|
148
|
+
id: group.id,
|
|
149
|
+
icon: group.icon,
|
|
150
|
+
label: group.label,
|
|
151
|
+
subgroups: [],
|
|
152
|
+
}));
|
|
153
|
+
const byLabel = new Map(groups.map((group) => [group.label, group]));
|
|
154
|
+
const push = (scene, category, subfunction) => {
|
|
155
|
+
const group = byLabel.get(category);
|
|
156
|
+
if (group === undefined)
|
|
157
|
+
return; // 非 10 组的 SoT 分类(食品库/综合等)不入速查台(F3 同口径)
|
|
158
|
+
let subgroup = group.subgroups.find((item) => item.label === subfunction);
|
|
159
|
+
if (subgroup === undefined) {
|
|
160
|
+
subgroup = { id: group.id + '_' + (group.subgroups.length + 1), label: subfunction, scenes: [] };
|
|
161
|
+
group.subgroups.push(subgroup);
|
|
162
|
+
}
|
|
163
|
+
subgroup.scenes.push(scene);
|
|
164
|
+
};
|
|
165
|
+
/* ── 414 条新场景:按(子功能序,order,name)排序;`id` = key ── */
|
|
166
|
+
const newTriggers = TRIGGERS.filter(isSceneTrigger).slice().sort((a, b) => {
|
|
167
|
+
const cmp = compareKey(subfuncKey(a.category, a.subfunction), subfuncKey(b.category, b.subfunction));
|
|
168
|
+
if (cmp !== 0)
|
|
169
|
+
return cmp;
|
|
170
|
+
if (a.order !== b.order)
|
|
171
|
+
return a.order - b.order;
|
|
172
|
+
return a.name < b.name ? -1 : a.name > b.name ? 1 : 0;
|
|
173
|
+
});
|
|
174
|
+
for (const trigger of newTriggers) {
|
|
175
|
+
const badge = HELP_TYPE_BADGES[trigger.output_type];
|
|
176
|
+
const fields = cliFields(trigger.wake_word);
|
|
177
|
+
const scene = {
|
|
178
|
+
id: trigger.key,
|
|
179
|
+
title: trigger.name,
|
|
180
|
+
wake_word: trigger.wake_word,
|
|
181
|
+
status: '',
|
|
182
|
+
prompt_template: trigger.prompt_template,
|
|
183
|
+
...(badge === undefined ? {} : { types: [badge] }),
|
|
184
|
+
...(fields.length === 0 ? {} : { editable_fields: fields }),
|
|
185
|
+
};
|
|
186
|
+
push(scene, trigger.category, trigger.subfunction !== '' ? trigger.subfunction : HELP_LEGACY_SUBGROUP);
|
|
187
|
+
}
|
|
188
|
+
/* ── 22 条 legacy:按唤醒词排序;`id` = `main_prompt.cli` 原文(R1-7,台账 L-19) ── */
|
|
189
|
+
const legacyTriggers = TRIGGERS.filter((trigger) => !isSceneTrigger(trigger))
|
|
190
|
+
.slice()
|
|
191
|
+
.sort((a, b) => (a.wake_word < b.wake_word ? -1 : a.wake_word > b.wake_word ? 1 : 0));
|
|
192
|
+
for (const trigger of legacyTriggers) {
|
|
193
|
+
const fields = cliFields(trigger.wake_word);
|
|
194
|
+
const scene = {
|
|
195
|
+
id: trigger.main_prompt.cli,
|
|
196
|
+
title: trigger.wake_word,
|
|
197
|
+
wake_word: trigger.wake_word,
|
|
198
|
+
status: '',
|
|
199
|
+
prompt_template: trigger.main_prompt.text,
|
|
200
|
+
...(fields.length === 0 ? {} : { editable_fields: fields }),
|
|
201
|
+
};
|
|
202
|
+
const category = HELP_LEGACY_CATEGORY[trigger.category] ?? trigger.category;
|
|
203
|
+
push(scene, category, HELP_LEGACY_SUBGROUP);
|
|
204
|
+
}
|
|
205
|
+
/* ── 子功能排序(F3:显式序 → 首次出现序 → 既有唤醒词最后) ── */
|
|
206
|
+
for (const group of groups) {
|
|
207
|
+
group.subgroups.sort((a, b) => compareKey(subfuncKey(group.label, a.label), subfuncKey(group.label, b.label)));
|
|
208
|
+
}
|
|
209
|
+
const rendered = groups.filter((group) => group.subgroups.length > 0);
|
|
210
|
+
const sceneCount = rendered.reduce((total, group) => total + group.subgroups.reduce((sub, item) => sub + item.scenes.length, 0), 0);
|
|
211
|
+
const subtitle = String(rendered.length) + ' 分类 · ' + String(sceneCount) + ' 场景'
|
|
212
|
+
+ (updatedAt === undefined ? '' : ' · 更新于 ' + updatedAt);
|
|
213
|
+
return {
|
|
214
|
+
skill_name: HELP_SKILL_NAME,
|
|
215
|
+
title: HELP_TITLE,
|
|
216
|
+
subtitle,
|
|
217
|
+
contact: HELP_CONTACT,
|
|
218
|
+
groups: rendered,
|
|
219
|
+
};
|
|
220
|
+
}
|
|
221
|
+
/* ── S3 · 看板页入口(#107):6 个 view 页模板 → 速查台「看板页入口」块 ──────────────
|
|
222
|
+
*
|
|
223
|
+
* 背景(#107/地图 #63 D4「6 个死模板并入 HELP」):`templates/*.html` 6 件此前只被
|
|
224
|
+
* 装载器与发布门读,**生产渲染链零消费=死文件**。本模块是它们的**唯一消费者**:
|
|
225
|
+
* 逐件经 `loadTemplate` 读盘 → 抽取三个锚点(`<h1>` 页名/`<p class="lead">` 一句说明/
|
|
226
|
+
* `<pre class="view-cli">` 取数命令)→ 走 `SceneData.meta_blocks`(base-paint 契约
|
|
227
|
+
* 既有槽位,`html` 原样透传)渲染进速查台。**改模板一个字,速查台产物即变**——
|
|
228
|
+
* 「被真正使用」由此可机械验证(`test/skill-t11.test.mjs`)。
|
|
229
|
+
*
|
|
230
|
+
* 锚点口径:每件**恰 1 处**,缺失/重复/空值即抛(`missing-data`;命令非 `calorie-cmd-read`
|
|
231
|
+
* 开头即 `bad-input`),不返空、不静默跳过(仓库「缺失阻断不返空」口径)。
|
|
232
|
+
*/
|
|
233
|
+
export const HELP_VIEW_ENTRIES_META_ID = 'view-entries';
|
|
234
|
+
export const HELP_VIEW_ENTRIES_META_TITLE = '看板页入口';
|
|
235
|
+
/** 抽取锚点(**字面量恒此处一份**;模板侧只负责出现恰 1 次)。 */
|
|
236
|
+
const VIEW_ENTRY_ANCHORS = {
|
|
237
|
+
title: '<h1>([^<]*)</h1>',
|
|
238
|
+
lead: '<p class="lead">([^<]*)</p>',
|
|
239
|
+
cli: '<pre class="view-cli">([^<]*)</pre>',
|
|
240
|
+
};
|
|
241
|
+
function pickAnchor(html, pattern, name, label) {
|
|
242
|
+
const hits = [...html.matchAll(new RegExp(pattern, 'g'))].map((match) => match[1].trim());
|
|
243
|
+
if (hits.length !== 1) {
|
|
244
|
+
throw new CalorieRenderError('missing-data', '模板 ' + name + ' 的 ' + label + ' 必须恰 1 处,实测 ' + String(hits.length));
|
|
245
|
+
}
|
|
246
|
+
if (hits[0] === '')
|
|
247
|
+
throw new CalorieRenderError('missing-data', '模板 ' + name + ' 的 ' + label + ' 为空');
|
|
248
|
+
return hits[0];
|
|
249
|
+
}
|
|
250
|
+
/** 6 件模板 → 看板页入口(顺序恒 `CALORIE_TEMPLATES`;逐件真读盘,缺件即抛)。 */
|
|
251
|
+
export function buildHelpViewEntries() {
|
|
252
|
+
return CALORIE_TEMPLATES.map((name) => {
|
|
253
|
+
const html = loadTemplate(name);
|
|
254
|
+
const cli = pickAnchor(html, VIEW_ENTRY_ANCHORS.cli, name, '<pre class="view-cli">');
|
|
255
|
+
if (!cli.startsWith('calorie-cmd-read ')) {
|
|
256
|
+
throw new CalorieRenderError('bad-input', '模板 ' + name + ' 的取数命令非 calorie-cmd-read 开头:' + cli);
|
|
257
|
+
}
|
|
258
|
+
return {
|
|
259
|
+
name,
|
|
260
|
+
title: pickAnchor(html, VIEW_ENTRY_ANCHORS.title, name, '<h1>'),
|
|
261
|
+
lead: pickAnchor(html, VIEW_ENTRY_ANCHORS.lead, name, '<p class="lead">'),
|
|
262
|
+
cli,
|
|
263
|
+
};
|
|
264
|
+
});
|
|
265
|
+
}
|
|
266
|
+
/** 入口块 HTML(`meta_blocks[].html` **原样透传** ⇒ 本函数自负转义)。 */
|
|
267
|
+
export function renderViewEntriesHtml(entries = buildHelpViewEntries()) {
|
|
268
|
+
const items = entries.map((entry) => '<li data-view-entry="' + escapeHtml(entry.name) + '">'
|
|
269
|
+
+ '<b>' + escapeHtml(entry.title) + '</b> ' + escapeHtml(entry.lead) + '<br>'
|
|
270
|
+
+ '<code style="white-space:pre-wrap;word-break:break-all">' + escapeHtml(entry.cli) + '</code>'
|
|
271
|
+
+ '</li>');
|
|
272
|
+
return '<ol class="view-entries">' + items.join(LF) + '</ol>';
|
|
273
|
+
}
|
|
274
|
+
/** 速查台「看板页入口」块(`meta_blocks` 槽位;`id`/`title` 恒本模块常量)。 */
|
|
275
|
+
export function helpViewEntriesMetaBlock(entries = buildHelpViewEntries()) {
|
|
276
|
+
return { id: HELP_VIEW_ENTRIES_META_ID, title: HELP_VIEW_ENTRIES_META_TITLE, html: renderViewEntriesHtml(entries) };
|
|
277
|
+
}
|
|
278
|
+
/* ── S2 · 壳落地:三态同源(file/inline/text),恒走 `renderHelpShell` ───────── */
|
|
279
|
+
/** 交付形态(P-5:默认 `file`;`inline` 供宿主页面内嵌;`text` 为纯文本索引接缝)。 */
|
|
280
|
+
export const HELP_CENTER_MODES = ['file', 'inline', 'text'];
|
|
281
|
+
/** 壳的共享资产(**唯一产出者恒为 base-paint**:helpers 取 `COPY_RUNTIME_JS`=
|
|
282
|
+
* `buildSharedHelpersJs()` 的逐字产出,样式取 `buildStyleSheet().css`;技能侧零自产)。 */
|
|
283
|
+
export function helpCenterAssets() {
|
|
284
|
+
return { sharedHelpersJs: COPY_RUNTIME_JS, sharedCssText: buildStyleSheet().css };
|
|
285
|
+
}
|
|
286
|
+
/** 取 `<section id="ilife-help-shell">…</section>` 片段(**按深度配对**,不靠正则贪婪)。 */
|
|
287
|
+
function sectionFragment(html) {
|
|
288
|
+
const anchor = 'id="' + HELP_SHELL_ID + '"';
|
|
289
|
+
const anchorIndex = html.indexOf(anchor);
|
|
290
|
+
if (anchorIndex < 0)
|
|
291
|
+
throw new CalorieRenderError('missing-data', 'HELP 壳产物缺锚点 ' + anchor);
|
|
292
|
+
const start = html.lastIndexOf('<section', anchorIndex);
|
|
293
|
+
if (start < 0)
|
|
294
|
+
throw new CalorieRenderError('missing-data', 'HELP 壳产物锚点前无 <section>');
|
|
295
|
+
const open = /<section\b/g;
|
|
296
|
+
const close = /<\/section>/g;
|
|
297
|
+
let depth = 0;
|
|
298
|
+
let cursor = start;
|
|
299
|
+
while (cursor < html.length) {
|
|
300
|
+
open.lastIndex = cursor;
|
|
301
|
+
close.lastIndex = cursor;
|
|
302
|
+
const nextOpen = open.exec(html);
|
|
303
|
+
const nextClose = close.exec(html);
|
|
304
|
+
if (nextClose === null)
|
|
305
|
+
break;
|
|
306
|
+
if (nextOpen !== null && nextOpen.index < nextClose.index) {
|
|
307
|
+
depth += 1;
|
|
308
|
+
cursor = nextOpen.index + nextOpen[0].length;
|
|
309
|
+
}
|
|
310
|
+
else {
|
|
311
|
+
depth -= 1;
|
|
312
|
+
cursor = nextClose.index + nextClose[0].length;
|
|
313
|
+
if (depth === 0)
|
|
314
|
+
return html.slice(start, cursor);
|
|
315
|
+
}
|
|
316
|
+
}
|
|
317
|
+
throw new CalorieRenderError('missing-data', 'HELP 壳产物 <section> 未闭合');
|
|
318
|
+
}
|
|
319
|
+
/** `inline` 态:**片段自带 `<style>`(钉死落点=片段最前)+ helpers(片段最后)**。
|
|
320
|
+
*
|
|
321
|
+
* 片段无 `<head>`,若不带 `<style>` 则整页无样式(P-5 蓝队补充);包裹标签恒读
|
|
322
|
+
* `ASSET_WRAPPERS`(不写第二份字面量)。
|
|
323
|
+
*/
|
|
324
|
+
function inlineFragment(html, assets) {
|
|
325
|
+
const fragment = sectionFragment(html);
|
|
326
|
+
const style = ASSET_WRAPPERS.sharedCssText.openTag + assets.sharedCssText + ASSET_WRAPPERS.sharedCssText.closeTag;
|
|
327
|
+
const helpers = ASSET_WRAPPERS.sharedHelpersJs.openTag + assets.sharedHelpersJs
|
|
328
|
+
+ ASSET_WRAPPERS.sharedHelpersJs.closeTag;
|
|
329
|
+
return style + LF + fragment + LF + helpers;
|
|
330
|
+
}
|
|
331
|
+
/** `text` 态:同一 `SceneData` 的纯文本索引(无标签、无脚本;供 CLI/日志面复用)。
|
|
332
|
+
*
|
|
333
|
+
* 末尾追加同一份「看板页入口」(#107):与 `file`/`inline` 的 `meta_blocks` 块**同源同序**,
|
|
334
|
+
* 使三态在内容上仍是一份数据换三个载体。入口行缩进 2 空格(场景行恒 4 空格,
|
|
335
|
+
* `help-center-91` 的 `textSceneIds` 只认 4 空格行,故不污染 436 条场景序)。
|
|
336
|
+
*/
|
|
337
|
+
function renderTextIndex(data, entries) {
|
|
338
|
+
const lines = [data.skill_name + ' ' + data.title];
|
|
339
|
+
if (typeof data.subtitle === 'string')
|
|
340
|
+
lines.push(data.subtitle);
|
|
341
|
+
for (const group of data.groups) {
|
|
342
|
+
lines.push('');
|
|
343
|
+
lines.push('[' + group.label + ']');
|
|
344
|
+
for (const subgroup of group.subgroups) {
|
|
345
|
+
lines.push(' ' + subgroup.label + ' (' + subgroup.id + ')');
|
|
346
|
+
for (const scene of subgroup.scenes) {
|
|
347
|
+
lines.push(' ' + scene.wake_word + ' · ' + scene.id);
|
|
348
|
+
}
|
|
349
|
+
}
|
|
350
|
+
}
|
|
351
|
+
lines.push('');
|
|
352
|
+
lines.push('[' + HELP_VIEW_ENTRIES_META_TITLE + ']');
|
|
353
|
+
for (const entry of entries)
|
|
354
|
+
lines.push(' ' + entry.title + ' · ' + entry.cli);
|
|
355
|
+
return lines.join(LF) + LF;
|
|
356
|
+
}
|
|
357
|
+
/** HELP 速查台渲染(三态同源:同一 `SceneData` + 同一资产 + 同一 `renderHelpShell`)。
|
|
358
|
+
*
|
|
359
|
+
* - `file`:完整 HTML 文档(`<!DOCTYPE html>`…),落盘/`file://` 打开;
|
|
360
|
+
* - `inline`:`<style>` + `<section id="ilife-help-shell">` 片段 + helpers `<script>`;
|
|
361
|
+
* - `text`:纯文本索引(数据同源,只换载体)。
|
|
362
|
+
*
|
|
363
|
+
* 三态**都先过 `renderHelpShell`**(同一 schema 校验与同一填充器),故不存在第二套数据路径。
|
|
364
|
+
* #107:三态各自**同一份**「看板页入口」(6 件模板派生)——`file`/`inline` 走 `meta_blocks`,
|
|
365
|
+
* `text` 走文本段;签名与三态语义不变。
|
|
366
|
+
*/
|
|
367
|
+
export function renderHelpCenterHtml(opts = {}) {
|
|
368
|
+
const mode = opts.mode === undefined ? 'file' : opts.mode;
|
|
369
|
+
if (!HELP_CENTER_MODES.includes(mode)) {
|
|
370
|
+
throw new CalorieRenderError('bad-input', 'HELP 交付形态非法:' + String(mode));
|
|
371
|
+
}
|
|
372
|
+
const baseData = opts.sceneData ?? buildHelpSceneData(opts.updatedAt === undefined ? {} : { updatedAt: opts.updatedAt });
|
|
373
|
+
const entries = buildHelpViewEntries();
|
|
374
|
+
const sceneData = {
|
|
375
|
+
...baseData,
|
|
376
|
+
meta_blocks: [...(baseData.meta_blocks ?? []), helpViewEntriesMetaBlock(entries)],
|
|
377
|
+
};
|
|
378
|
+
const assets = helpCenterAssets();
|
|
379
|
+
const output = renderHelpShell({ sceneData, assets, strict: opts.strict === true });
|
|
380
|
+
if (mode === 'file')
|
|
381
|
+
return { mode, html: output.html, report: output.report };
|
|
382
|
+
if (mode === 'inline')
|
|
383
|
+
return { mode, html: inlineFragment(output.html, assets), report: output.report };
|
|
384
|
+
return { mode, html: renderTextIndex(sceneData, entries), report: output.report };
|
|
385
|
+
}
|
|
386
|
+
//# sourceMappingURL=helpCenter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"helpCenter.js","sourceRoot":"","sources":["../../src/render/helpCenter.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"html.d.ts","sourceRoot":"","sources":["../../src/render/html.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"html.d.ts","sourceRoot":"","sources":["../../src/render/html.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,KAAK,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAChE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE3F,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC9D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAE9C,OAAO,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACtG,OAAO,KAAK,EAAE,iBAAiB,EAAE,eAAe,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAChI,OAAO,KAAK,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAC3E,OAAO,KAAK,EAAE,gBAAgB,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AACjF,OAAO,KAAK,EAAE,gBAAgB,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAC1F,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAC1F,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,KAAK,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACvE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAmChF,wBAAgB,cAAc,CAAC,CAAC,EAAE,QAAQ,GAAG,MAAM,CAgBlD;AAED,wBAAgB,cAAc,CAAC,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,gBAAgB,GAAG,MAAM,CAgB9E;AAED,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,YAAY,GAAG,MAAM,CAa1D;AAED,wBAAgB,cAAc,CAAC,CAAC,EAAE,QAAQ,GAAG,MAAM,CAalD;AAaD,yCAAyC;AACzC,wBAAgB,aAAa,CAAC,CAAC,EAAE,SAAS,GAAG,MAAM,CAOlD;AAED,wBAAgB,sBAAsB,CAAC,CAAC,EAAE,WAAW,GAAG,MAAM,CAgB7D;AAED,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,WAAW,GAAG,MAAM,CASxD;AAED,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,WAAW,GAAG,MAAM,CAQxD;AAED,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,UAAU,GAAG,MAAM,CAItD;AAED,wBAAgB,aAAa,CAAC,CAAC,EAAE,OAAO,GAAG,MAAM,CAQhD;AAED,+DAA+D;AAC/D,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAUD;6DAC6D;AAC7D,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,YAAY,EAAE,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAOhF;AAED,2DAA2D;AAC3D,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,SAAS,aAAa,EAAE,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAQ1F;AAED,wBAAgB,eAAe,CAAC,CAAC,EAAE,YAAY,GAAG,MAAM,CAOvD;AAED,wBAAgB,oBAAoB,CAAC,CAAC,EAAE,UAAU,GAAG,MAAM,CAe1D;AAED,wBAAgB,uBAAuB,CAAC,CAAC,EAAE,aAAa,GAAG,MAAM,CAgBhE;AAED,wBAAgB,oBAAoB,CAAC,CAAC,EAAE,UAAU,GAAG,MAAM,CAQ1D;AAED,wBAAgB,sBAAsB,CAAC,CAAC,EAAE,YAAY,GAAG,MAAM,CAa9D;AAED,wBAAgB,oBAAoB,CAAC,CAAC,EAAE,UAAU,GAAG,MAAM,CAW1D;AAED,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,gBAAgB,GAAG,MAAM,CAa9D;AAED,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,WAAW,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CASxE;AAED,wBAAgB,oBAAoB,CAAC,CAAC,EAAE,UAAU,GAAG,MAAM,CAe1D;AAED,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,WAAW,GAAG,MAAM,CAYvD;AAED,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,WAAW,GAAG,MAAM,CASxD;AAED,wBAAgB,qBAAqB,CAAC,CAAC,EAAE,WAAW,GAAG,MAAM,CAY5D;AAED,wBAAgB,uBAAuB,CAAC,CAAC,EAAE,aAAa,GAAG,MAAM,CAShE;AAED,wBAAgB,wBAAwB,CAAC,CAAC,EAAE,cAAc,GAAG,MAAM,CASlE;AAED,wBAAgB,sBAAsB,CAAC,CAAC,EAAE,YAAY,GAAG,MAAM,CAM9D;AACD,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,eAAe,GAAG,MAAM,CAW3D;AAED,wBAAgB,uBAAuB,CAAC,CAAC,EAAE,iBAAiB,GAAG,MAAM,CAOpE;AAED,wBAAgB,uBAAuB,CAAC,CAAC,EAAE,iBAAiB,GAAG,MAAM,CAUpE;AAED,wBAAgB,sBAAsB,CAAC,CAAC,EAAE,gBAAgB,GAAG,MAAM,CAWlE;AAED,wBAAgB,oBAAoB,CAAC,CAAC,EAAE,cAAc,GAAG,MAAM,CAU9D;AAED,wBAAgB,yBAAyB,CAAC,CAAC,EAAE,mBAAmB,GAAG,MAAM,CAYxE;AAED,wBAAgB,qBAAqB,CAAC,CAAC,EAAE,eAAe,GAAG,MAAM,CAYhE;AAED,wBAAgB,cAAc,CAAC,CAAC,EAAE,QAAQ,GAAG,MAAM,CAQlD;AAED,wBAAgB,oBAAoB,CAAC,CAAC,EAAE,cAAc,GAAG,MAAM,CAU9D;AAED,wBAAgB,sBAAsB,CAAC,CAAC,EAAE,gBAAgB,GAAG,MAAM,CASlE;AAED,wBAAgB,sBAAsB,CAAC,CAAC,EAAE,gBAAgB,GAAG,MAAM,CASlE;AAED,wBAAgB,qBAAqB,CAAC,CAAC,EAAE,eAAe,GAAG,MAAM,CAShE;AAED,wBAAgB,sBAAsB,CAAC,CAAC,EAAE,gBAAgB,GAAG,MAAM,CASlE;AAED,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,WAAW,GAAG,MAAM,CAQxD;AAED,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,WAAW,GAAG,MAAM,CAQxD;AAED,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,UAAU,GAAG,MAAM,CAUtD;AAED,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,UAAU,GAAG,MAAM,CAOtD;AAED,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,WAAW,GAAG,MAAM,CAWxD"}
|
package/dist/render/html.js
CHANGED
|
@@ -438,7 +438,8 @@ export function renderPlanWizardHtml(v) {
|
|
|
438
438
|
const warns = v.warnings.slice(0, 5).map((e) => '<div>' + escapeHtml(e) + '</div>').join('');
|
|
439
439
|
const body = '<div class="' + cx('grid') + '">' +
|
|
440
440
|
kpi('构建向导', v.errorCount === 0 ? '可落地' : '有硬止', '错误 ' + v.errorCount + ' 警告 ' + v.warningCount) +
|
|
441
|
-
|
|
441
|
+
// G15 #102 · 已检查≠已通过:坏计划也计 N,通过与否看 errorCount;错误态追加(X硬止)与首 KPI 的“有硬止”呼应。
|
|
442
|
+
kpi('纯校验', '不写库', '已检查 ' + v.checkedSessions + ' 个会话' + (v.errorCount > 0 ? '(' + v.errorCount + '硬止)' : '')) +
|
|
442
443
|
'</div><div>' + errs + warns + '</div>';
|
|
443
444
|
return pageShell('calorie', 'ilife:calorie:plan-wizard', '构建向导', body);
|
|
444
445
|
}
|