skill-chef 0.3.2 → 0.3.13
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 +42 -29
- package/dist/add/commands.js +1 -1
- package/dist/add/index.d.ts +1 -0
- package/dist/add/index.d.ts.map +1 -1
- package/dist/add/index.js +1 -0
- package/dist/add/index.js.map +1 -1
- package/dist/add/pages.d.ts +62 -0
- package/dist/add/pages.d.ts.map +1 -0
- package/dist/add/pages.js +362 -0
- package/dist/add/pages.js.map +1 -0
- package/dist/add/routes.d.ts +4 -4
- package/dist/add/routes.d.ts.map +1 -1
- package/dist/add/routes.js +12 -6
- package/dist/add/routes.js.map +1 -1
- package/dist/add/run-write.d.ts.map +1 -1
- package/dist/add/run-write.js +39 -0
- package/dist/add/run-write.js.map +1 -1
- package/dist/cli/cmd_read.js +17 -1
- package/dist/cli/cmd_read.js.map +1 -1
- package/dist/cli/config.d.ts +0 -10
- package/dist/cli/config.d.ts.map +1 -1
- package/dist/cli/config.js +22 -1
- package/dist/cli/config.js.map +1 -1
- package/dist/cli/keys.d.ts +1 -1
- package/dist/cli/keys.d.ts.map +1 -1
- package/dist/cli/keys.js +16 -4
- package/dist/cli/keys.js.map +1 -1
- package/dist/cook/commands.js +1 -1
- package/dist/cook/index.d.ts +2 -1
- package/dist/cook/index.d.ts.map +1 -1
- package/dist/cook/index.js +1 -1
- package/dist/cook/index.js.map +1 -1
- package/dist/cook/page-art.d.ts +18 -0
- package/dist/cook/page-art.d.ts.map +1 -0
- package/dist/cook/page-art.js +30 -0
- package/dist/cook/page-art.js.map +1 -0
- package/dist/cook/page-css.d.ts +9 -0
- package/dist/cook/page-css.d.ts.map +1 -0
- package/dist/cook/page-css.js +206 -0
- package/dist/cook/page-css.js.map +1 -0
- package/dist/cook/page-text.d.ts +28 -0
- package/dist/cook/page-text.d.ts.map +1 -0
- package/dist/cook/page-text.js +65 -0
- package/dist/cook/page-text.js.map +1 -0
- package/dist/cook/routes.js +4 -4
- package/dist/cook/run.d.ts +56 -1
- package/dist/cook/run.d.ts.map +1 -1
- package/dist/cook/run.js +252 -22
- package/dist/cook/run.js.map +1 -1
- package/dist/data/commands.d.ts +6 -7
- package/dist/data/commands.d.ts.map +1 -1
- package/dist/data/commands.js +15 -8
- package/dist/data/commands.js.map +1 -1
- package/dist/data/index.d.ts +2 -0
- package/dist/data/index.d.ts.map +1 -1
- package/dist/data/index.js +2 -0
- package/dist/data/index.js.map +1 -1
- package/dist/data/pages.d.ts +50 -0
- package/dist/data/pages.d.ts.map +1 -0
- package/dist/data/pages.js +226 -0
- package/dist/data/pages.js.map +1 -0
- package/dist/data/routes.d.ts +4 -5
- package/dist/data/routes.d.ts.map +1 -1
- package/dist/data/routes.js +8 -10
- package/dist/data/routes.js.map +1 -1
- package/dist/data/run-batch.d.ts +21 -0
- package/dist/data/run-batch.d.ts.map +1 -0
- package/dist/data/run-batch.js +123 -0
- package/dist/data/run-batch.js.map +1 -0
- package/dist/data/run-query.d.ts +5 -6
- package/dist/data/run-query.d.ts.map +1 -1
- package/dist/data/run-query.js +113 -28
- package/dist/data/run-query.js.map +1 -1
- package/dist/help/lookup.d.ts.map +1 -1
- package/dist/help/lookup.js +20 -4
- package/dist/help/lookup.js.map +1 -1
- package/dist/help/sceneData.d.ts +8 -7
- package/dist/help/sceneData.d.ts.map +1 -1
- package/dist/help/sceneData.js +22 -21
- package/dist/help/sceneData.js.map +1 -1
- package/dist/history/commands.js +1 -1
- package/dist/history/page-css.d.ts +12 -0
- package/dist/history/page-css.d.ts.map +1 -0
- package/dist/history/page-css.js +208 -0
- package/dist/history/page-css.js.map +1 -0
- package/dist/history/pages.d.ts +77 -0
- package/dist/history/pages.d.ts.map +1 -0
- package/dist/history/pages.js +282 -0
- package/dist/history/pages.js.map +1 -0
- package/dist/history/routes.d.ts +4 -6
- package/dist/history/routes.d.ts.map +1 -1
- package/dist/history/routes.js +22 -16
- package/dist/history/routes.js.map +1 -1
- package/dist/history/run-query.d.ts +48 -0
- package/dist/history/run-query.d.ts.map +1 -1
- package/dist/history/run-query.js +96 -10
- package/dist/history/run-query.js.map +1 -1
- package/dist/history/run-record.d.ts +12 -2
- package/dist/history/run-record.d.ts.map +1 -1
- package/dist/history/run-record.js +28 -14
- package/dist/history/run-record.js.map +1 -1
- package/dist/history/validate.d.ts +22 -0
- package/dist/history/validate.d.ts.map +1 -0
- package/dist/history/validate.js +69 -0
- package/dist/history/validate.js.map +1 -0
- package/dist/policy/wakewords.d.ts +1 -1
- package/dist/policy/wakewords.d.ts.map +1 -1
- package/dist/policy/wakewords.js +23 -2
- package/dist/policy/wakewords.js.map +1 -1
- package/dist/relation/commands.d.ts +6 -5
- package/dist/relation/commands.d.ts.map +1 -1
- package/dist/relation/commands.js +23 -6
- package/dist/relation/commands.js.map +1 -1
- package/dist/relation/index.d.ts +3 -0
- package/dist/relation/index.d.ts.map +1 -1
- package/dist/relation/index.js +3 -0
- package/dist/relation/index.js.map +1 -1
- package/dist/relation/pages.d.ts +37 -0
- package/dist/relation/pages.d.ts.map +1 -0
- package/dist/relation/pages.js +224 -0
- package/dist/relation/pages.js.map +1 -0
- package/dist/relation/routes.d.ts +6 -5
- package/dist/relation/routes.d.ts.map +1 -1
- package/dist/relation/routes.js +17 -16
- package/dist/relation/routes.js.map +1 -1
- package/dist/relation/run-query.d.ts +10 -0
- package/dist/relation/run-query.d.ts.map +1 -0
- package/dist/relation/run-query.js +104 -0
- package/dist/relation/run-query.js.map +1 -0
- package/dist/relation/run-write.d.ts +13 -0
- package/dist/relation/run-write.d.ts.map +1 -0
- package/dist/relation/run-write.js +114 -0
- package/dist/relation/run-write.js.map +1 -0
- package/dist/relation/shapes.d.ts +8 -0
- package/dist/relation/shapes.d.ts.map +1 -0
- package/dist/relation/shapes.js +153 -0
- package/dist/relation/shapes.js.map +1 -0
- package/dist/relation/treeShapes.d.ts +23 -0
- package/dist/relation/treeShapes.d.ts.map +1 -0
- package/dist/relation/treeShapes.js +289 -0
- package/dist/relation/treeShapes.js.map +1 -0
- package/dist/render/copyArea.d.ts +67 -0
- package/dist/render/copyArea.d.ts.map +1 -0
- package/dist/render/copyArea.js +146 -0
- package/dist/render/copyArea.js.map +1 -0
- package/dist/render/envelope.d.ts.map +1 -1
- package/dist/render/envelope.js +4 -0
- package/dist/render/envelope.js.map +1 -1
- package/dist/render/index.d.ts +7 -0
- package/dist/render/index.d.ts.map +1 -1
- package/dist/render/index.js +7 -0
- package/dist/render/index.js.map +1 -1
- package/dist/render/sceneBand.d.ts +36 -0
- package/dist/render/sceneBand.d.ts.map +1 -0
- package/dist/render/sceneBand.js +166 -0
- package/dist/render/sceneBand.js.map +1 -0
- package/dist/render/sceneRhythm.d.ts +6 -0
- package/dist/render/sceneRhythm.d.ts.map +1 -0
- package/dist/render/sceneRhythm.js +149 -0
- package/dist/render/sceneRhythm.js.map +1 -0
- package/dist/render/sceneShell.d.ts +17 -0
- package/dist/render/sceneShell.d.ts.map +1 -0
- package/dist/render/sceneShell.js +46 -0
- package/dist/render/sceneShell.js.map +1 -0
- package/dist/render/skin.d.ts +13 -0
- package/dist/render/skin.d.ts.map +1 -0
- package/dist/render/skin.js +282 -0
- package/dist/render/skin.js.map +1 -0
- package/dist/search/routes.d.ts +12 -4
- package/dist/search/routes.d.ts.map +1 -1
- package/dist/search/routes.js +39 -7
- package/dist/search/routes.js.map +1 -1
- package/dist/search/run.d.ts +10 -2
- package/dist/search/run.d.ts.map +1 -1
- package/dist/search/run.js +61 -9
- package/dist/search/run.js.map +1 -1
- package/dist/setup/commands.d.ts +5 -5
- package/dist/setup/commands.d.ts.map +1 -1
- package/dist/setup/commands.js +14 -6
- package/dist/setup/commands.js.map +1 -1
- package/dist/setup/index.d.ts +3 -5
- package/dist/setup/index.d.ts.map +1 -1
- package/dist/setup/index.js +3 -5
- package/dist/setup/index.js.map +1 -1
- package/dist/setup/pages.d.ts +19 -0
- package/dist/setup/pages.d.ts.map +1 -0
- package/dist/setup/pages.js +163 -0
- package/dist/setup/pages.js.map +1 -0
- package/dist/setup/routes.d.ts +4 -5
- package/dist/setup/routes.d.ts.map +1 -1
- package/dist/setup/routes.js +7 -8
- package/dist/setup/routes.js.map +1 -1
- package/dist/setup/run-init.d.ts +11 -0
- package/dist/setup/run-init.d.ts.map +1 -0
- package/dist/setup/run-init.js +19 -0
- package/dist/setup/run-init.js.map +1 -0
- package/dist/shared/command-spec.d.ts +5 -3
- package/dist/shared/command-spec.d.ts.map +1 -1
- package/dist/shopping/commands.js +1 -1
- package/dist/shopping/commands.js.map +1 -1
- package/dist/shopping/index.d.ts +1 -0
- package/dist/shopping/index.d.ts.map +1 -1
- package/dist/shopping/index.js +1 -0
- package/dist/shopping/index.js.map +1 -1
- package/dist/shopping/pages.d.ts +22 -0
- package/dist/shopping/pages.d.ts.map +1 -0
- package/dist/shopping/pages.js +170 -0
- package/dist/shopping/pages.js.map +1 -0
- package/dist/shopping/routes.js +4 -4
- package/dist/shopping/routes.js.map +1 -1
- package/dist/shopping/run.d.ts +9 -5
- package/dist/shopping/run.d.ts.map +1 -1
- package/dist/shopping/run.js +58 -10
- package/dist/shopping/run.js.map +1 -1
- package/dist/triggers/chef-scenes.d.ts +3 -2
- package/dist/triggers/chef-scenes.d.ts.map +1 -1
- package/dist/triggers/chef-scenes.js +16 -15
- package/dist/triggers/chef-scenes.js.map +1 -1
- package/dist/update/routes.d.ts +6 -4
- package/dist/update/routes.d.ts.map +1 -1
- package/dist/update/routes.js +20 -6
- package/dist/update/routes.js.map +1 -1
- package/dist/update/run-write.d.ts.map +1 -1
- package/dist/update/run-write.js +211 -1
- package/dist/update/run-write.js.map +1 -1
- package/dist/view/commands.js +1 -1
- package/dist/view/page.d.ts +25 -0
- package/dist/view/page.d.ts.map +1 -0
- package/dist/view/page.js +306 -0
- package/dist/view/page.js.map +1 -0
- package/dist/view/pageCss.d.ts +8 -0
- package/dist/view/pageCss.d.ts.map +1 -0
- package/dist/view/pageCss.js +327 -0
- package/dist/view/pageCss.js.map +1 -0
- package/dist/view/pageSection.d.ts +21 -0
- package/dist/view/pageSection.d.ts.map +1 -0
- package/dist/view/pageSection.js +59 -0
- package/dist/view/pageSection.js.map +1 -0
- package/dist/view/routes.js +7 -7
- package/dist/view/run.d.ts +5 -1
- package/dist/view/run.d.ts.map +1 -1
- package/dist/view/run.js +66 -7
- package/dist/view/run.js.map +1 -1
- package/package.json +3 -3
|
@@ -0,0 +1,206 @@
|
|
|
1
|
+
/** 做菜域五页共用的页内收口样式(在公共层皮肤 `chefSceneCss()` 之后追加,不拆两层)。
|
|
2
|
+
*
|
|
3
|
+
* 为什么另立一件:公共层皮肤(`src/render/skin.ts`)管 48 页共用的形状语言,它不知道**本页摆几格**
|
|
4
|
+
* ——页头事实条在本域恒为四格(份量/步骤/预计/状态)、步骤参数条恒为三格(火候/时长/锅温)。
|
|
5
|
+
* 公共层那条「按内容宽排、随内容换行」的规则在四格下会排出一截参差的右空(#873 第 1 格的扣分项
|
|
6
|
+
* 就是三格宽窄不齐、标签与值不成列)。件数只有本域知道,故这两条栅格口径住在本域。
|
|
7
|
+
*
|
|
8
|
+
* 只做四件事,只对本域五页生效:
|
|
9
|
+
* ① 页头事实条四等分、步骤参数条三等分:标签与值各自成列(形状承担层级,不靠字重);
|
|
10
|
+
* ② 当前步/已做步各有一套形状(主色左缘 + 卡面深浅),「现在做哪一步」由卡面直接说;
|
|
11
|
+
* ③ 步骤正文与说明行:行高给足 + 行尾留余量(390 档的「行距挤」与「长行末尾贴边」);
|
|
12
|
+
* ④ 结论条与上方事实条之间留一条气口(此前两块首尾相接);
|
|
13
|
+
* ⑤ 页头那件纯装饰图形(锅与热气)的位置与配色——图形本体在 `run.ts` 的 `COOK_HERO_ART`。
|
|
14
|
+
*
|
|
15
|
+
* 取值口径:颜色**一个都不新造**——只用冻结 token(`--blue`/`--blue2`/`--soft`/`--line`/
|
|
16
|
+
* `--fg2`/`--shadow`)与公共层调色板的下标(热气那一色);断点只用仓内既有集合
|
|
17
|
+
* (`pageUi.ts` 的 `PAGE_LIMITS.breakpointsPx`);本件不含任何 `:root` 改写、禁入 token
|
|
18
|
+
* 与深色区选择器(公共层 `buildStyleSheet` 的三禁)。
|
|
19
|
+
*/
|
|
20
|
+
/** 换行(仓库口径:`String.fromCharCode(10)`,不写字面换行转义)。 */
|
|
21
|
+
const LF = String.fromCharCode(10);
|
|
22
|
+
/** 步骤卡的状态类(`run.ts` 挂在卡外层:当前步/已做步/未开始)。 */
|
|
23
|
+
export const COOK_STEP_CLASS = 'ilife-cook-step';
|
|
24
|
+
/** 步骤卡列表的外层类(`run.ts` 把六张卡收进这一层)。 */
|
|
25
|
+
export const COOK_STEPS_CLASS = 'ilife-cook-steps';
|
|
26
|
+
/** 步骤卡的侧栏类(参数三行 + 本步用料;宽档与正文按 2:1 并排)。 */
|
|
27
|
+
export const COOK_STEP_SIDE_CLASS = 'ilife-cook-step-side';
|
|
28
|
+
/** 页内收口样式段(本件唯一出口)。恒返回非空 CSS 文本。 */
|
|
29
|
+
export function cookPageCss() {
|
|
30
|
+
const root = '.ilife-page-ui';
|
|
31
|
+
return [
|
|
32
|
+
'/* #873 做菜域页内收口 · 每一条规则都挂在根类 ' + root + ' 之下 */',
|
|
33
|
+
/* ① 页头事实条:四格四等分。格数住在本域,故列数也住在本域。 */
|
|
34
|
+
root + ' .ilife-block-page-shell-body > .ilife-block-fact-strip {',
|
|
35
|
+
' display: grid;',
|
|
36
|
+
' grid-template-columns: repeat(4, minmax(0, 1fr));',
|
|
37
|
+
' gap: 12px;',
|
|
38
|
+
' margin-top: 14px;',
|
|
39
|
+
'}',
|
|
40
|
+
root + ' .ilife-block-page-shell-body > .ilife-block-fact-strip > .ilife-block-fact-strip-item {',
|
|
41
|
+
' box-sizing: border-box;',
|
|
42
|
+
' min-width: 0;',
|
|
43
|
+
'}',
|
|
44
|
+
/* ① 步骤参数:**一行一条**(标签一列、值一列)。恒三条(火候/时长/锅温)只有本域知道。
|
|
45
|
+
第二轮返修换过一次形状:原来三条等分瓦片,390 档必然把整行铺满,同尺复评两轮都读成
|
|
46
|
+
「手机端首步卡右侧三粒紧贴边缘几近溢出」。改成键值行之后,横向不再有铺满整行的块、
|
|
47
|
+
标签与值各成一列,值短、右端自然留白;三条之间的发丝线仍把「这是三件事」摆出来。 */
|
|
48
|
+
root + ' .' + COOK_STEP_SIDE_CLASS + ' > .ilife-block-fact-strip {',
|
|
49
|
+
' display: grid;',
|
|
50
|
+
' grid-template-columns: minmax(0, 1fr);',
|
|
51
|
+
' gap: 0;',
|
|
52
|
+
' margin-top: 14px;',
|
|
53
|
+
' padding-top: 10px;',
|
|
54
|
+
' border-top: 1px solid var(--line);',
|
|
55
|
+
'}',
|
|
56
|
+
root + ' .' + COOK_STEP_SIDE_CLASS + ' > .ilife-block-fact-strip > .ilife-block-fact-strip-item {',
|
|
57
|
+
' display: grid;',
|
|
58
|
+
' grid-template-columns: 52px minmax(0, 1fr);',
|
|
59
|
+
' align-items: baseline;',
|
|
60
|
+
' gap: 12px;',
|
|
61
|
+
' box-sizing: border-box;',
|
|
62
|
+
' min-width: 0;',
|
|
63
|
+
' padding: 7px 0;',
|
|
64
|
+
' border: 0;',
|
|
65
|
+
' border-top: 1px solid var(--line);',
|
|
66
|
+
' border-radius: 0;',
|
|
67
|
+
' background: none;',
|
|
68
|
+
'}',
|
|
69
|
+
root + ' .' + COOK_STEP_SIDE_CLASS + ' > .ilife-block-fact-strip > .ilife-block-fact-strip-item:first-child {',
|
|
70
|
+
' border-top: 0;',
|
|
71
|
+
' padding-top: 2px;',
|
|
72
|
+
'}',
|
|
73
|
+
root + ' .' + COOK_STEP_SIDE_CLASS + ' .ilife-block-fact-strip-label {',
|
|
74
|
+
' color: var(--blue2);',
|
|
75
|
+
'}',
|
|
76
|
+
root + ' .' + COOK_STEP_SIDE_CLASS + ' .ilife-block-fact-strip-value {',
|
|
77
|
+
' font-variant-numeric: tabular-nums;',
|
|
78
|
+
'}',
|
|
79
|
+
/* ② 步骤卡:卡与卡之间恒一条 16px 的气口(外层包了一层状态类与列表层,公共层那条
|
|
80
|
+
「同级区块之间」的选择器命中不到包层,故这里自己给;首卡与进度卡之间多留 2px)。 */
|
|
81
|
+
root + ' .' + COOK_STEPS_CLASS + ' {',
|
|
82
|
+
' margin-top: 16px;',
|
|
83
|
+
'}',
|
|
84
|
+
root + ' .' + COOK_STEP_CLASS + ' > .ilife-block-disclosure {',
|
|
85
|
+
' margin: 0;',
|
|
86
|
+
'}',
|
|
87
|
+
root + ' .' + COOK_STEP_CLASS + ' + .' + COOK_STEP_CLASS + ' {',
|
|
88
|
+
' margin-top: 16px;',
|
|
89
|
+
'}',
|
|
90
|
+
/* 当前步:主色左缘加粗 + 卡面自上而下由浅底回到白(形状承担「现在做这一步」)。 */
|
|
91
|
+
root + ' .' + COOK_STEP_CLASS + '-current > .ilife-block-disclosure {',
|
|
92
|
+
' border-left: 4px solid var(--blue);',
|
|
93
|
+
' background-image: linear-gradient(180deg, var(--soft), var(--card) 96px);',
|
|
94
|
+
' box-shadow: var(--shadow);',
|
|
95
|
+
'}',
|
|
96
|
+
root + ' .' + COOK_STEP_CLASS + '-current > .ilife-block-disclosure > .ilife-block-disclosure-summary::after {',
|
|
97
|
+
' content: "";',
|
|
98
|
+
' flex: 0 0 auto;',
|
|
99
|
+
' width: 8px;',
|
|
100
|
+
' height: 8px;',
|
|
101
|
+
' margin-left: 8px;',
|
|
102
|
+
' border-radius: 999px;',
|
|
103
|
+
' background: var(--blue);',
|
|
104
|
+
'}',
|
|
105
|
+
/* 已做步:左缘退成灰线、卡面收到浅底——与「还没做」的步一眼分得开。 */
|
|
106
|
+
root + ' .' + COOK_STEP_CLASS + '-done > .ilife-block-disclosure {',
|
|
107
|
+
' border-left-color: var(--line);',
|
|
108
|
+
' background-color: var(--soft);',
|
|
109
|
+
'}',
|
|
110
|
+
root + ' .' + COOK_STEP_CLASS + '-done > .ilife-block-disclosure > .ilife-block-disclosure-summary {',
|
|
111
|
+
' color: var(--fg2);',
|
|
112
|
+
'}',
|
|
113
|
+
/* ③ 步骤正文:行高抬到 1.85(步与步之间读得开),行尾留 4px 余量(长行的末字不贴卡片右沿)。 */
|
|
114
|
+
root + ' .ilife-block-disclosure-body > .ilife-block-prose {',
|
|
115
|
+
' margin-top: 10px;',
|
|
116
|
+
' padding-right: 4px;',
|
|
117
|
+
' line-height: 1.85;',
|
|
118
|
+
'}',
|
|
119
|
+
/* ③ 侧栏(参数三行 + 本步用料):与正文之间给一格气口;用料那行与参数条之间再给一档。 */
|
|
120
|
+
root + ' .' + COOK_STEP_SIDE_CLASS + ' .ilife-block-chip-row {',
|
|
121
|
+
' margin-top: 12px;',
|
|
122
|
+
'}',
|
|
123
|
+
root + ' .' + COOK_STEP_SIDE_CLASS + ' > .ilife-block-caliber {',
|
|
124
|
+
' margin-top: 12px;',
|
|
125
|
+
' line-height: 1.75;',
|
|
126
|
+
'}',
|
|
127
|
+
root + ' .ilife-block-disclosure-body > .ilife-block-caliber,',
|
|
128
|
+
root + ' .ilife-block-page-shell-body > .ilife-block-caliber {',
|
|
129
|
+
' margin-top: 10px;',
|
|
130
|
+
' line-height: 1.75;',
|
|
131
|
+
'}',
|
|
132
|
+
/* 本步用料那一行也拉开一档(此前紧贴参数条的下沿)。 */
|
|
133
|
+
root + ' .ilife-block-disclosure-body > .ilife-block-chip-row {',
|
|
134
|
+
' margin-top: 10px;',
|
|
135
|
+
'}',
|
|
136
|
+
/* 时间轴注(库里的做菜反馈原文):一条长句折行时两行不许贴在一起。 */
|
|
137
|
+
root + ' .ilife-block-timeline-note {',
|
|
138
|
+
' line-height: 1.8;',
|
|
139
|
+
'}',
|
|
140
|
+
root + ' .ilife-block-timeline-row {',
|
|
141
|
+
' padding: 7px 0;',
|
|
142
|
+
'}',
|
|
143
|
+
/* ③ 当前进度卡:读数抬到 28px(一屏里最大的一个数),说明行与读数行之间给气口;
|
|
144
|
+
进度条取主色——低档红条在这页读成「出错」,「做到第几步」本身没有告警语义。 */
|
|
145
|
+
root + ' .ilife-block-kpi-card-value {',
|
|
146
|
+
' font-size: 28px;',
|
|
147
|
+
'}',
|
|
148
|
+
root + ' .ilife-block-kpi-card-detail {',
|
|
149
|
+
' margin-top: 8px;',
|
|
150
|
+
' line-height: 1.6;',
|
|
151
|
+
'}',
|
|
152
|
+
root + ' .ilife-block-kpi-card-bar-fill {',
|
|
153
|
+
' background: var(--blue);',
|
|
154
|
+
'}',
|
|
155
|
+
/* ④ 结论条:与上方事实条之间留一条气口(此前两块首尾相接)。 */
|
|
156
|
+
root + ' .ilife-block-page-shell-body > .ilife-block-conclusion {',
|
|
157
|
+
' margin-top: 12px;',
|
|
158
|
+
'}',
|
|
159
|
+
/* ⑤ 第三轮返修:本域第二轮自己加的两件页头装饰(「锅+热气」图形牌与横贯波线装饰带)**已撤**。
|
|
160
|
+
公共层第三轮立了页头契约——**页头只能有族级装饰带**(本域五页是 process 族,`sceneShell`
|
|
161
|
+
已把那条带插在版面根首节点);页内再摆一条同题材的装饰就是重复,而这两件都是纯装饰、不载内容。
|
|
162
|
+
撤掉时连它的定位锚点(版面根 `position: relative`)与配色常量一起撤,本件不再有装饰件规则。 */
|
|
163
|
+
/* 窄档:页头四格缩一档内距,值不许折行(「18 分钟」这种值折行会把格子撑成两行)。 */
|
|
164
|
+
'@media (max-width: 640px) {',
|
|
165
|
+
' ' + root + ' .ilife-block-page-shell-body > .ilife-block-fact-strip > .ilife-block-fact-strip-item {',
|
|
166
|
+
' padding-left: 8px;',
|
|
167
|
+
' padding-right: 8px;',
|
|
168
|
+
' }',
|
|
169
|
+
'}',
|
|
170
|
+
/* 宽档:**步骤卡保持单列满宽**(第二轮返修:双列时正文列被挤窄,同尺复评原话「桌面端
|
|
171
|
+
步骤卡双列后左侧被严重挤压」,撤回第一轮的双列);改成一栏之内**按 2:1 分栏**——
|
|
172
|
+
正文与侧栏并排,正文列约 560px(一行读得完的宽度),卡也不再是「内容挤在上半张、
|
|
173
|
+
下半张全空」。装饰牌放大一档,摆到标题右侧那片空里。 */
|
|
174
|
+
'@media (min-width: 1001px) {',
|
|
175
|
+
' ' + root + ' .' + COOK_STEP_CLASS + ' .ilife-block-disclosure-body {',
|
|
176
|
+
' display: grid;',
|
|
177
|
+
' grid-template-columns: minmax(0, 2fr) minmax(0, 1fr);',
|
|
178
|
+
' gap: 10px 30px;',
|
|
179
|
+
' align-items: start;',
|
|
180
|
+
' }',
|
|
181
|
+
' ' + root + ' .' + COOK_STEP_CLASS + ' .ilife-block-disclosure-body > .ilife-block-prose {',
|
|
182
|
+
' grid-column: 1;',
|
|
183
|
+
' grid-row: 1;',
|
|
184
|
+
' }',
|
|
185
|
+
' ' + root + ' .' + COOK_STEP_CLASS + ' .' + COOK_STEP_SIDE_CLASS + ' {',
|
|
186
|
+
' grid-column: 2;',
|
|
187
|
+
' grid-row: 1;',
|
|
188
|
+
' padding: 12px 14px;',
|
|
189
|
+
' border-radius: 14px;',
|
|
190
|
+
' background: var(--soft);',
|
|
191
|
+
' }',
|
|
192
|
+
/* 侧栏收成一张浅底面板之后,里面那条首行分隔线就不再需要了(面板边界已经说明「这是另一栏」)。 */
|
|
193
|
+
' ' + root + ' .' + COOK_STEP_CLASS + ' .' + COOK_STEP_SIDE_CLASS + ' > .ilife-block-fact-strip {',
|
|
194
|
+
' margin-top: 0;',
|
|
195
|
+
' padding-top: 0;',
|
|
196
|
+
' border-top: 0;',
|
|
197
|
+
' }',
|
|
198
|
+
/* 宽档侧栏里的值靠右站:一栏一值(火候→中火、时长→5 分钟、锅温→180度)排成一张规格表,
|
|
199
|
+
右侧那截空位从「缺内容」变成「留白」。窄档不靠右——卡片内沿与值之间不够一档内距。 */
|
|
200
|
+
' ' + root + ' .' + COOK_STEP_CLASS + ' .' + COOK_STEP_SIDE_CLASS + ' .ilife-block-fact-strip-value {',
|
|
201
|
+
' text-align: right;',
|
|
202
|
+
' }',
|
|
203
|
+
'}',
|
|
204
|
+
].join(LF);
|
|
205
|
+
}
|
|
206
|
+
//# sourceMappingURL=page-css.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"page-css.js","sourceRoot":"","sources":["../../src/cook/page-css.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/** 结论条那一句:这道菜**做过几次**(读数来自库里 `historyStats`;一次都没做过就说第一次)。
|
|
2
|
+
*
|
|
3
|
+
* 第三轮返修:原来这里是「用料已算好,照清单备料。」——同尺复评连着两轮把结论条读成复述
|
|
4
|
+
* (第 2 格原文摘:「『用料已算好,照清单备料』与下方步骤重复冗余」)。逐句问「删掉这句,
|
|
5
|
+
* 用户会少知道什么」:份量在页头事实条上、用料在备料清单里、步骤就在下面六张卡——结论条
|
|
6
|
+
* 再讲一遍备料确实不添信息。改成**做过几次**:这一条在别处都没有(第 2 格那张「上次经验」
|
|
7
|
+
* 卡说的是最近一次,不是总次数),既不复述、也不编数据。 */
|
|
8
|
+
export declare function cookCountNote(count: number): string;
|
|
9
|
+
/** 命令回执里的份量说明(给**读信封的调用方**看的那一面)。
|
|
10
|
+
*
|
|
11
|
+
* 与页面那句分开定义的理由:读信封的一方看不到页头事实条,它要知道「这次的用量是原谱的几倍」;
|
|
12
|
+
* 而页面已经把那两个数摆在读者眼前了。两面各有一处定义,不互相复述。 */
|
|
13
|
+
export declare function servingsNoteReceipt(servings: number, base: number, factor: number): string;
|
|
14
|
+
/** 用量文本:库里没登记数字用量时说「适量」(不猜数)。 */
|
|
15
|
+
export declare function qtyText(q: number | null, unit: string): string;
|
|
16
|
+
/** 本步用料一枚胶囊的文本(可选料缀「(可选)」)。 */
|
|
17
|
+
export declare function usageChip(name: string, q: number | null, unit: string, optional: boolean): string;
|
|
18
|
+
/** 步骤状态(`run.ts` 按当前步算出来,标题与卡面形状共用同一个值)。 */
|
|
19
|
+
export type StepState = 'done' | 'current' | 'todo';
|
|
20
|
+
/** 步骤卡标题:做过的标「已做」;**正在做的那一步不再写字**——进度卡上已经写着「当前进度 1 / 6 步」,
|
|
21
|
+
* 标题再写一遍「(正在做)」就是同一件事说两遍(第二轮同尺复评第 1 格的原文摘点到了这一处)。
|
|
22
|
+
* 当前步改由**形状**承担:卡左缘主色加粗、卡面自上而下由浅底回到白、标题位一枚主色圆点。 */
|
|
23
|
+
export declare function stepTitle(seq: number, state: StepState): string;
|
|
24
|
+
/** 步骤正文按**已有标点**分行:读起来有句读,行尾也不再一路顶到卡片右沿。
|
|
25
|
+
* 断开点只取自句读符号(半角与全角各一套),原字符一个不删;短于 6 字的碎片并进上一行,
|
|
26
|
+
* 免得排出一串孤零零的残句。 */
|
|
27
|
+
export declare function stepProseHtml(action: string): string;
|
|
28
|
+
//# sourceMappingURL=page-text.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"page-text.d.ts","sourceRoot":"","sources":["../../src/cook/page-text.ts"],"names":[],"mappings":"AAeA;;;;;;kCAMkC;AAClC,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEnD;AAED;;;wCAGwC;AACxC,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAI1F;AAED,iCAAiC;AACjC,wBAAgB,OAAO,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAG9D;AAED,+BAA+B;AAC/B,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,GAAG,MAAM,CAEjG;AAED,4CAA4C;AAC5C,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,SAAS,GAAG,MAAM,CAAC;AAEpD;;oDAEoD;AACpD,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,GAAG,MAAM,CAE/D;AAED;;oBAEoB;AACpB,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CASpD"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
/** 做菜域五页的页内文案与步骤正文排版(库里原文一字不动,本件只决定它怎么排)。
|
|
2
|
+
*
|
|
3
|
+
* 为什么另立一件:本域五页的「一句话结论」「步骤标题」「本步用料文本」「步骤正文怎么断行」
|
|
4
|
+
* 是一批活——同批改动一起改,故与页面样式段分开各住一件(同 `history/page-css.ts` 的处置)。
|
|
5
|
+
*
|
|
6
|
+
* 三条口径:
|
|
7
|
+
* ① **不改数据语义**:库里的步骤原文、反馈原文一字不动。断句只发生在**已有的标点之后**,
|
|
8
|
+
* 标点本身留在原句里,页面上多出来的只有换行(`<br>`,与 `render/html.ts` 的分析段同一做法)。
|
|
9
|
+
* ② **同一句话只有一处定义**:页面结论条走下面的 `cookCountNote()`,命令回执走 `servingsNoteReceipt()`
|
|
10
|
+
* (两面各一处定义。页面那一面看不到「原谱几人份」,事实条与清单都已经按当前份量算好,
|
|
11
|
+
* 故页面不复述份量;回执那一面读的人看不到页面,故回执带倍率)。
|
|
12
|
+
* ③ 上屏文字不带工单黑话与实现语(`t778-终审扫描.mjs` 的三类字样命中 0)。
|
|
13
|
+
*/
|
|
14
|
+
import { escapeHtml } from 'base-paint';
|
|
15
|
+
/** 结论条那一句:这道菜**做过几次**(读数来自库里 `historyStats`;一次都没做过就说第一次)。
|
|
16
|
+
*
|
|
17
|
+
* 第三轮返修:原来这里是「用料已算好,照清单备料。」——同尺复评连着两轮把结论条读成复述
|
|
18
|
+
* (第 2 格原文摘:「『用料已算好,照清单备料』与下方步骤重复冗余」)。逐句问「删掉这句,
|
|
19
|
+
* 用户会少知道什么」:份量在页头事实条上、用料在备料清单里、步骤就在下面六张卡——结论条
|
|
20
|
+
* 再讲一遍备料确实不添信息。改成**做过几次**:这一条在别处都没有(第 2 格那张「上次经验」
|
|
21
|
+
* 卡说的是最近一次,不是总次数),既不复述、也不编数据。 */
|
|
22
|
+
export function cookCountNote(count) {
|
|
23
|
+
return count > 0 ? '这道菜做过 ' + count + ' 次' : '第一次做这道菜';
|
|
24
|
+
}
|
|
25
|
+
/** 命令回执里的份量说明(给**读信封的调用方**看的那一面)。
|
|
26
|
+
*
|
|
27
|
+
* 与页面那句分开定义的理由:读信封的一方看不到页头事实条,它要知道「这次的用量是原谱的几倍」;
|
|
28
|
+
* 而页面已经把那两个数摆在读者眼前了。两面各有一处定义,不互相复述。 */
|
|
29
|
+
export function servingsNoteReceipt(servings, base, factor) {
|
|
30
|
+
return servings === base
|
|
31
|
+
? '份量照原谱(' + base + ' 人份),无需换算'
|
|
32
|
+
: '用量是原谱(' + base + ' 人份)的 ' + factor + ' 倍(' + servings + ' 人份),照这份清单备料就行。';
|
|
33
|
+
}
|
|
34
|
+
/** 用量文本:库里没登记数字用量时说「适量」(不猜数)。 */
|
|
35
|
+
export function qtyText(q, unit) {
|
|
36
|
+
if (q === null)
|
|
37
|
+
return '适量';
|
|
38
|
+
return (String(q) + ' ' + unit).trim();
|
|
39
|
+
}
|
|
40
|
+
/** 本步用料一枚胶囊的文本(可选料缀「(可选)」)。 */
|
|
41
|
+
export function usageChip(name, q, unit, optional) {
|
|
42
|
+
return name + ' ' + qtyText(q, unit) + (optional ? '(可选)' : '');
|
|
43
|
+
}
|
|
44
|
+
/** 步骤卡标题:做过的标「已做」;**正在做的那一步不再写字**——进度卡上已经写着「当前进度 1 / 6 步」,
|
|
45
|
+
* 标题再写一遍「(正在做)」就是同一件事说两遍(第二轮同尺复评第 1 格的原文摘点到了这一处)。
|
|
46
|
+
* 当前步改由**形状**承担:卡左缘主色加粗、卡面自上而下由浅底回到白、标题位一枚主色圆点。 */
|
|
47
|
+
export function stepTitle(seq, state) {
|
|
48
|
+
return '第 ' + seq + ' 步' + (state === 'done' ? '(已做)' : '');
|
|
49
|
+
}
|
|
50
|
+
/** 步骤正文按**已有标点**分行:读起来有句读,行尾也不再一路顶到卡片右沿。
|
|
51
|
+
* 断开点只取自句读符号(半角与全角各一套),原字符一个不删;短于 6 字的碎片并进上一行,
|
|
52
|
+
* 免得排出一串孤零零的残句。 */
|
|
53
|
+
export function stepProseHtml(action) {
|
|
54
|
+
const segs = action.split(/(?<=[,,;;。!?])/).filter((seg) => seg !== '');
|
|
55
|
+
const lines = [];
|
|
56
|
+
for (const seg of segs) {
|
|
57
|
+
const last = lines.length === 0 ? undefined : lines[lines.length - 1];
|
|
58
|
+
if (last !== undefined && seg.length < 6)
|
|
59
|
+
lines[lines.length - 1] = last + seg;
|
|
60
|
+
else
|
|
61
|
+
lines.push(seg);
|
|
62
|
+
}
|
|
63
|
+
return (lines.length === 0 ? [action] : lines).map((one) => escapeHtml(one)).join('<br>');
|
|
64
|
+
}
|
|
65
|
+
//# sourceMappingURL=page-text.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"page-text.js","sourceRoot":"","sources":["../../src/cook/page-text.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAExC;;;;;;kCAMkC;AAClC,MAAM,UAAU,aAAa,CAAC,KAAa;IACzC,OAAO,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,GAAG,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;AACzD,CAAC;AAED;;;wCAGwC;AACxC,MAAM,UAAU,mBAAmB,CAAC,QAAgB,EAAE,IAAY,EAAE,MAAc;IAChF,OAAO,QAAQ,KAAK,IAAI;QACtB,CAAC,CAAC,QAAQ,GAAG,IAAI,GAAG,WAAW;QAC/B,CAAC,CAAC,QAAQ,GAAG,IAAI,GAAG,QAAQ,GAAG,MAAM,GAAG,KAAK,GAAG,QAAQ,GAAG,iBAAiB,CAAC;AACjF,CAAC;AAED,iCAAiC;AACjC,MAAM,UAAU,OAAO,CAAC,CAAgB,EAAE,IAAY;IACpD,IAAI,CAAC,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IAC5B,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;AACzC,CAAC;AAED,+BAA+B;AAC/B,MAAM,UAAU,SAAS,CAAC,IAAY,EAAE,CAAgB,EAAE,IAAY,EAAE,QAAiB;IACvF,OAAO,IAAI,GAAG,GAAG,GAAG,OAAO,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AAClE,CAAC;AAKD;;oDAEoD;AACpD,MAAM,UAAU,SAAS,CAAC,GAAW,EAAE,KAAgB;IACrD,OAAO,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,CAAC,KAAK,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AAC9D,CAAC;AAED;;oBAEoB;AACpB,MAAM,UAAU,aAAa,CAAC,MAAc;IAC1C,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,CAAC;IACxE,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QACtE,IAAI,IAAI,KAAK,SAAS,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC;YAAE,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,IAAI,GAAG,GAAG,CAAC;;YAC1E,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACvB,CAAC;IACD,OAAO,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC5F,CAAC"}
|
package/dist/cook/routes.js
CHANGED
|
@@ -11,25 +11,25 @@ export const COOK_ROUTES = [
|
|
|
11
11
|
order: 24,
|
|
12
12
|
wakeWord: '做菜模式',
|
|
13
13
|
key: 'chef.cooking.run',
|
|
14
|
-
cli: 'chef-cmd-read chef.cooking.run --params \'{"name":"
|
|
14
|
+
cli: 'chef-cmd-read chef.cooking.run --params \'{"name":"辣椒炒肉"}\'',
|
|
15
15
|
},
|
|
16
16
|
{
|
|
17
17
|
order: 25,
|
|
18
18
|
wakeWord: '开始做菜',
|
|
19
19
|
key: 'chef.cooking.run',
|
|
20
|
-
cli: 'chef-cmd-read chef.cooking.run --params \'{"name":"
|
|
20
|
+
cli: 'chef-cmd-read chef.cooking.run --params \'{"name":"辣椒炒肉"}\'',
|
|
21
21
|
},
|
|
22
22
|
{
|
|
23
23
|
order: 26,
|
|
24
24
|
wakeWord: '继续做菜',
|
|
25
25
|
key: 'chef.cooking.run',
|
|
26
|
-
cli: 'chef-cmd-read chef.cooking.run --params \'{"name":"
|
|
26
|
+
cli: 'chef-cmd-read chef.cooking.run --params \'{"name":"辣椒炒肉"}\'',
|
|
27
27
|
},
|
|
28
28
|
{
|
|
29
29
|
order: 27,
|
|
30
30
|
wakeWord: '完成做菜',
|
|
31
31
|
key: 'chef.cooking.run',
|
|
32
|
-
cli: 'chef-cmd-read chef.cooking.run --params \'{"name":"
|
|
32
|
+
cli: 'chef-cmd-read chef.cooking.run --params \'{"name":"辣椒炒肉"}\'',
|
|
33
33
|
},
|
|
34
34
|
];
|
|
35
35
|
//# sourceMappingURL=routes.js.map
|
package/dist/cook/run.d.ts
CHANGED
|
@@ -1,8 +1,14 @@
|
|
|
1
|
-
/** 做菜能力的命令处理(`chef.cooking.run`)+
|
|
1
|
+
/** 做菜能力的命令处理(`chef.cooking.run`)+ 本域独占的视图与页面装配。
|
|
2
2
|
*
|
|
3
3
|
* 老分派层(`src/cli/cmd_read.ts`)分支逐字节下沉:只改 import 出处,判定与装配一字不动。
|
|
4
4
|
* `buildCookingRun`(原 `src/render/views.ts`)只被本域调用,按“写不出的留回域目录”搬入本文件;
|
|
5
5
|
* 旧址改转出(搬迁债务,见 `src/render/index.ts`)。
|
|
6
|
+
*
|
|
7
|
+
* #772:取数缺口两条收在本域——`step_ingredients` 按步切分(每步只出本步用料,不再把全量
|
|
8
|
+
* 11 味挂在每一步上)与 `cookware` 炊具行;查法直连 `fetch/db` 既有原语(只读不写共用位,
|
|
9
|
+
* 共用位一行不动)。页面装配 `renderCookingPage` 照 `t768-页面族配方.md` §1 过程型十二格逐格调
|
|
10
|
+
* 公共层区块(含 #860 正文段落件),零自写样式;暂停/声音/重做/计时器/份量步进器归宿主,
|
|
11
|
+
* 页面只摆形状与 `data-action-id`。
|
|
6
12
|
*/
|
|
7
13
|
import type { ChefDb } from '../fetch/db.js';
|
|
8
14
|
import type { CookingStep, RecipeHistoryStats, RecipeItem } from '../render/views.js';
|
|
@@ -19,6 +25,55 @@ export declare function buildCookingRun(args: {
|
|
|
19
25
|
historyHint: string;
|
|
20
26
|
steps: CookingStep[];
|
|
21
27
|
};
|
|
28
|
+
/** 本步用料一行(`step_ingredients` 联 `ingredients`,用量按份数倍率放大)。 */
|
|
29
|
+
export interface StepUsage extends Record<string, unknown> {
|
|
30
|
+
name: string;
|
|
31
|
+
quantity: number | null;
|
|
32
|
+
unit: string;
|
|
33
|
+
quantity_text: string;
|
|
34
|
+
optional: boolean;
|
|
35
|
+
}
|
|
36
|
+
/** 带本步用料的步骤(其余字段与 `CookingStep` 同形,可直接进信封)。 */
|
|
37
|
+
export interface CookStep extends Record<string, unknown> {
|
|
38
|
+
sequence: number;
|
|
39
|
+
action: string;
|
|
40
|
+
duration_minutes: number | null;
|
|
41
|
+
heat_level: string;
|
|
42
|
+
temperature: string;
|
|
43
|
+
expected_result: string;
|
|
44
|
+
ingredients: StepUsage[];
|
|
45
|
+
}
|
|
46
|
+
/** 炊具一行(`cookware`)。 */
|
|
47
|
+
export interface CookwareItem {
|
|
48
|
+
name: string;
|
|
49
|
+
category: string;
|
|
50
|
+
}
|
|
51
|
+
/** 页面取数全貌(命令数据+页面要的备料/炊具/历史,一次取齐)。 */
|
|
52
|
+
export interface CookingPageData {
|
|
53
|
+
recipe: RecipeItem;
|
|
54
|
+
baseServings: number;
|
|
55
|
+
servings: number;
|
|
56
|
+
factor: number;
|
|
57
|
+
ingredients: StepUsage[];
|
|
58
|
+
steps: CookStep[];
|
|
59
|
+
cookware: CookwareItem[];
|
|
60
|
+
count: number;
|
|
61
|
+
avgRating: number | null;
|
|
62
|
+
lastHistory: {
|
|
63
|
+
cook_date: string;
|
|
64
|
+
rating: number | null;
|
|
65
|
+
feedback: string;
|
|
66
|
+
} | null;
|
|
67
|
+
}
|
|
68
|
+
/** 取 `renderCookingPage` 要的整份数据(含校验:关联坏即抛错点名)。 */
|
|
69
|
+
export declare function getCookingPageData(handle: ChefDb, params: Record<string, unknown>): CookingPageData;
|
|
22
70
|
/** 跑 `chef.cooking.run`:取单菜全貌+份数放大+历史提示(list 形)。 */
|
|
23
71
|
export declare function runCookingRun(handle: ChefDb, params: Record<string, unknown>): unknown;
|
|
72
|
+
/** 五张卡的取向(同一命令,不同参数+不同强调块)。 */
|
|
73
|
+
export type CookCardKind = 'fresh' | 'with-history' | 'double' | 'resume' | 'waiting';
|
|
74
|
+
/** 渲染过程型整页(配方 §1 十二格;全部步骤由六张折叠卡承载,不另起速览清单以避重复句)。 */
|
|
75
|
+
export declare function renderCookingPage(data: CookingPageData, opts: {
|
|
76
|
+
kind: CookCardKind;
|
|
77
|
+
currentStep?: number;
|
|
78
|
+
}): string;
|
|
24
79
|
//# sourceMappingURL=run.d.ts.map
|
package/dist/cook/run.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../src/cook/run.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../src/cook/run.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAG7C,OAAO,KAAK,EAAE,WAAW,EAAE,kBAAkB,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAmBtF,wBAAgB,eAAe,CAAC,IAAI,EAAE;IACpC,MAAM,EAAE,UAAU,CAAC;IACnB,KAAK,EAAE,WAAW,EAAE,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,kBAAkB,GAAG,IAAI,CAAC;CACrC,GAAG;IAAE,KAAK,EAAE,WAAW,EAAE,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,UAAU,CAAC;IAAC,YAAY,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,WAAW,EAAE,CAAA;CAAE,CAY/H;AAED,4DAA4D;AAC5D,MAAM,WAAW,SAAU,SAAQ,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IACxD,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,+CAA+C;AAC/C,MAAM,WAAW,QAAS,SAAQ,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IACvD,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,EAAE,MAAM,CAAC;IACxB,WAAW,EAAE,SAAS,EAAE,CAAC;CAC1B;AAED,wBAAwB;AACxB,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;CAClB;AAiED,sCAAsC;AACtC,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,UAAU,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,SAAS,EAAE,CAAC;IACzB,KAAK,EAAE,QAAQ,EAAE,CAAC;IAClB,QAAQ,EAAE,YAAY,EAAE,CAAC;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,WAAW,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;CACpF;AAED,kDAAkD;AAClD,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,eAAe,CA4BnG;AAED,oDAAoD;AACpD,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAGtF;AAED,+BAA+B;AAC/B,MAAM,MAAM,YAAY,GAAG,OAAO,GAAG,cAAc,GAAG,QAAQ,GAAG,QAAQ,GAAG,SAAS,CAAC;AAEtF,oDAAoD;AACpD,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,CA2JnH"}
|