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.
Files changed (244) hide show
  1. package/SKILL.md +42 -29
  2. package/dist/add/commands.js +1 -1
  3. package/dist/add/index.d.ts +1 -0
  4. package/dist/add/index.d.ts.map +1 -1
  5. package/dist/add/index.js +1 -0
  6. package/dist/add/index.js.map +1 -1
  7. package/dist/add/pages.d.ts +62 -0
  8. package/dist/add/pages.d.ts.map +1 -0
  9. package/dist/add/pages.js +362 -0
  10. package/dist/add/pages.js.map +1 -0
  11. package/dist/add/routes.d.ts +4 -4
  12. package/dist/add/routes.d.ts.map +1 -1
  13. package/dist/add/routes.js +12 -6
  14. package/dist/add/routes.js.map +1 -1
  15. package/dist/add/run-write.d.ts.map +1 -1
  16. package/dist/add/run-write.js +39 -0
  17. package/dist/add/run-write.js.map +1 -1
  18. package/dist/cli/cmd_read.js +17 -1
  19. package/dist/cli/cmd_read.js.map +1 -1
  20. package/dist/cli/config.d.ts +0 -10
  21. package/dist/cli/config.d.ts.map +1 -1
  22. package/dist/cli/config.js +22 -1
  23. package/dist/cli/config.js.map +1 -1
  24. package/dist/cli/keys.d.ts +1 -1
  25. package/dist/cli/keys.d.ts.map +1 -1
  26. package/dist/cli/keys.js +16 -4
  27. package/dist/cli/keys.js.map +1 -1
  28. package/dist/cook/commands.js +1 -1
  29. package/dist/cook/index.d.ts +2 -1
  30. package/dist/cook/index.d.ts.map +1 -1
  31. package/dist/cook/index.js +1 -1
  32. package/dist/cook/index.js.map +1 -1
  33. package/dist/cook/page-art.d.ts +18 -0
  34. package/dist/cook/page-art.d.ts.map +1 -0
  35. package/dist/cook/page-art.js +30 -0
  36. package/dist/cook/page-art.js.map +1 -0
  37. package/dist/cook/page-css.d.ts +9 -0
  38. package/dist/cook/page-css.d.ts.map +1 -0
  39. package/dist/cook/page-css.js +206 -0
  40. package/dist/cook/page-css.js.map +1 -0
  41. package/dist/cook/page-text.d.ts +28 -0
  42. package/dist/cook/page-text.d.ts.map +1 -0
  43. package/dist/cook/page-text.js +65 -0
  44. package/dist/cook/page-text.js.map +1 -0
  45. package/dist/cook/routes.js +4 -4
  46. package/dist/cook/run.d.ts +56 -1
  47. package/dist/cook/run.d.ts.map +1 -1
  48. package/dist/cook/run.js +252 -22
  49. package/dist/cook/run.js.map +1 -1
  50. package/dist/data/commands.d.ts +6 -7
  51. package/dist/data/commands.d.ts.map +1 -1
  52. package/dist/data/commands.js +15 -8
  53. package/dist/data/commands.js.map +1 -1
  54. package/dist/data/index.d.ts +2 -0
  55. package/dist/data/index.d.ts.map +1 -1
  56. package/dist/data/index.js +2 -0
  57. package/dist/data/index.js.map +1 -1
  58. package/dist/data/pages.d.ts +50 -0
  59. package/dist/data/pages.d.ts.map +1 -0
  60. package/dist/data/pages.js +226 -0
  61. package/dist/data/pages.js.map +1 -0
  62. package/dist/data/routes.d.ts +4 -5
  63. package/dist/data/routes.d.ts.map +1 -1
  64. package/dist/data/routes.js +8 -10
  65. package/dist/data/routes.js.map +1 -1
  66. package/dist/data/run-batch.d.ts +21 -0
  67. package/dist/data/run-batch.d.ts.map +1 -0
  68. package/dist/data/run-batch.js +123 -0
  69. package/dist/data/run-batch.js.map +1 -0
  70. package/dist/data/run-query.d.ts +5 -6
  71. package/dist/data/run-query.d.ts.map +1 -1
  72. package/dist/data/run-query.js +113 -28
  73. package/dist/data/run-query.js.map +1 -1
  74. package/dist/help/lookup.d.ts.map +1 -1
  75. package/dist/help/lookup.js +20 -4
  76. package/dist/help/lookup.js.map +1 -1
  77. package/dist/help/sceneData.d.ts +8 -7
  78. package/dist/help/sceneData.d.ts.map +1 -1
  79. package/dist/help/sceneData.js +22 -21
  80. package/dist/help/sceneData.js.map +1 -1
  81. package/dist/history/commands.js +1 -1
  82. package/dist/history/page-css.d.ts +12 -0
  83. package/dist/history/page-css.d.ts.map +1 -0
  84. package/dist/history/page-css.js +208 -0
  85. package/dist/history/page-css.js.map +1 -0
  86. package/dist/history/pages.d.ts +77 -0
  87. package/dist/history/pages.d.ts.map +1 -0
  88. package/dist/history/pages.js +282 -0
  89. package/dist/history/pages.js.map +1 -0
  90. package/dist/history/routes.d.ts +4 -6
  91. package/dist/history/routes.d.ts.map +1 -1
  92. package/dist/history/routes.js +22 -16
  93. package/dist/history/routes.js.map +1 -1
  94. package/dist/history/run-query.d.ts +48 -0
  95. package/dist/history/run-query.d.ts.map +1 -1
  96. package/dist/history/run-query.js +96 -10
  97. package/dist/history/run-query.js.map +1 -1
  98. package/dist/history/run-record.d.ts +12 -2
  99. package/dist/history/run-record.d.ts.map +1 -1
  100. package/dist/history/run-record.js +28 -14
  101. package/dist/history/run-record.js.map +1 -1
  102. package/dist/history/validate.d.ts +22 -0
  103. package/dist/history/validate.d.ts.map +1 -0
  104. package/dist/history/validate.js +69 -0
  105. package/dist/history/validate.js.map +1 -0
  106. package/dist/policy/wakewords.d.ts +1 -1
  107. package/dist/policy/wakewords.d.ts.map +1 -1
  108. package/dist/policy/wakewords.js +23 -2
  109. package/dist/policy/wakewords.js.map +1 -1
  110. package/dist/relation/commands.d.ts +6 -5
  111. package/dist/relation/commands.d.ts.map +1 -1
  112. package/dist/relation/commands.js +23 -6
  113. package/dist/relation/commands.js.map +1 -1
  114. package/dist/relation/index.d.ts +3 -0
  115. package/dist/relation/index.d.ts.map +1 -1
  116. package/dist/relation/index.js +3 -0
  117. package/dist/relation/index.js.map +1 -1
  118. package/dist/relation/pages.d.ts +37 -0
  119. package/dist/relation/pages.d.ts.map +1 -0
  120. package/dist/relation/pages.js +224 -0
  121. package/dist/relation/pages.js.map +1 -0
  122. package/dist/relation/routes.d.ts +6 -5
  123. package/dist/relation/routes.d.ts.map +1 -1
  124. package/dist/relation/routes.js +17 -16
  125. package/dist/relation/routes.js.map +1 -1
  126. package/dist/relation/run-query.d.ts +10 -0
  127. package/dist/relation/run-query.d.ts.map +1 -0
  128. package/dist/relation/run-query.js +104 -0
  129. package/dist/relation/run-query.js.map +1 -0
  130. package/dist/relation/run-write.d.ts +13 -0
  131. package/dist/relation/run-write.d.ts.map +1 -0
  132. package/dist/relation/run-write.js +114 -0
  133. package/dist/relation/run-write.js.map +1 -0
  134. package/dist/relation/shapes.d.ts +8 -0
  135. package/dist/relation/shapes.d.ts.map +1 -0
  136. package/dist/relation/shapes.js +153 -0
  137. package/dist/relation/shapes.js.map +1 -0
  138. package/dist/relation/treeShapes.d.ts +23 -0
  139. package/dist/relation/treeShapes.d.ts.map +1 -0
  140. package/dist/relation/treeShapes.js +289 -0
  141. package/dist/relation/treeShapes.js.map +1 -0
  142. package/dist/render/copyArea.d.ts +67 -0
  143. package/dist/render/copyArea.d.ts.map +1 -0
  144. package/dist/render/copyArea.js +146 -0
  145. package/dist/render/copyArea.js.map +1 -0
  146. package/dist/render/envelope.d.ts.map +1 -1
  147. package/dist/render/envelope.js +4 -0
  148. package/dist/render/envelope.js.map +1 -1
  149. package/dist/render/index.d.ts +7 -0
  150. package/dist/render/index.d.ts.map +1 -1
  151. package/dist/render/index.js +7 -0
  152. package/dist/render/index.js.map +1 -1
  153. package/dist/render/sceneBand.d.ts +36 -0
  154. package/dist/render/sceneBand.d.ts.map +1 -0
  155. package/dist/render/sceneBand.js +166 -0
  156. package/dist/render/sceneBand.js.map +1 -0
  157. package/dist/render/sceneRhythm.d.ts +6 -0
  158. package/dist/render/sceneRhythm.d.ts.map +1 -0
  159. package/dist/render/sceneRhythm.js +149 -0
  160. package/dist/render/sceneRhythm.js.map +1 -0
  161. package/dist/render/sceneShell.d.ts +17 -0
  162. package/dist/render/sceneShell.d.ts.map +1 -0
  163. package/dist/render/sceneShell.js +46 -0
  164. package/dist/render/sceneShell.js.map +1 -0
  165. package/dist/render/skin.d.ts +13 -0
  166. package/dist/render/skin.d.ts.map +1 -0
  167. package/dist/render/skin.js +282 -0
  168. package/dist/render/skin.js.map +1 -0
  169. package/dist/search/routes.d.ts +12 -4
  170. package/dist/search/routes.d.ts.map +1 -1
  171. package/dist/search/routes.js +39 -7
  172. package/dist/search/routes.js.map +1 -1
  173. package/dist/search/run.d.ts +10 -2
  174. package/dist/search/run.d.ts.map +1 -1
  175. package/dist/search/run.js +61 -9
  176. package/dist/search/run.js.map +1 -1
  177. package/dist/setup/commands.d.ts +5 -5
  178. package/dist/setup/commands.d.ts.map +1 -1
  179. package/dist/setup/commands.js +14 -6
  180. package/dist/setup/commands.js.map +1 -1
  181. package/dist/setup/index.d.ts +3 -5
  182. package/dist/setup/index.d.ts.map +1 -1
  183. package/dist/setup/index.js +3 -5
  184. package/dist/setup/index.js.map +1 -1
  185. package/dist/setup/pages.d.ts +19 -0
  186. package/dist/setup/pages.d.ts.map +1 -0
  187. package/dist/setup/pages.js +163 -0
  188. package/dist/setup/pages.js.map +1 -0
  189. package/dist/setup/routes.d.ts +4 -5
  190. package/dist/setup/routes.d.ts.map +1 -1
  191. package/dist/setup/routes.js +7 -8
  192. package/dist/setup/routes.js.map +1 -1
  193. package/dist/setup/run-init.d.ts +11 -0
  194. package/dist/setup/run-init.d.ts.map +1 -0
  195. package/dist/setup/run-init.js +19 -0
  196. package/dist/setup/run-init.js.map +1 -0
  197. package/dist/shared/command-spec.d.ts +5 -3
  198. package/dist/shared/command-spec.d.ts.map +1 -1
  199. package/dist/shopping/commands.js +1 -1
  200. package/dist/shopping/commands.js.map +1 -1
  201. package/dist/shopping/index.d.ts +1 -0
  202. package/dist/shopping/index.d.ts.map +1 -1
  203. package/dist/shopping/index.js +1 -0
  204. package/dist/shopping/index.js.map +1 -1
  205. package/dist/shopping/pages.d.ts +22 -0
  206. package/dist/shopping/pages.d.ts.map +1 -0
  207. package/dist/shopping/pages.js +170 -0
  208. package/dist/shopping/pages.js.map +1 -0
  209. package/dist/shopping/routes.js +4 -4
  210. package/dist/shopping/routes.js.map +1 -1
  211. package/dist/shopping/run.d.ts +9 -5
  212. package/dist/shopping/run.d.ts.map +1 -1
  213. package/dist/shopping/run.js +58 -10
  214. package/dist/shopping/run.js.map +1 -1
  215. package/dist/triggers/chef-scenes.d.ts +3 -2
  216. package/dist/triggers/chef-scenes.d.ts.map +1 -1
  217. package/dist/triggers/chef-scenes.js +16 -15
  218. package/dist/triggers/chef-scenes.js.map +1 -1
  219. package/dist/update/routes.d.ts +6 -4
  220. package/dist/update/routes.d.ts.map +1 -1
  221. package/dist/update/routes.js +20 -6
  222. package/dist/update/routes.js.map +1 -1
  223. package/dist/update/run-write.d.ts.map +1 -1
  224. package/dist/update/run-write.js +211 -1
  225. package/dist/update/run-write.js.map +1 -1
  226. package/dist/view/commands.js +1 -1
  227. package/dist/view/page.d.ts +25 -0
  228. package/dist/view/page.d.ts.map +1 -0
  229. package/dist/view/page.js +306 -0
  230. package/dist/view/page.js.map +1 -0
  231. package/dist/view/pageCss.d.ts +8 -0
  232. package/dist/view/pageCss.d.ts.map +1 -0
  233. package/dist/view/pageCss.js +327 -0
  234. package/dist/view/pageCss.js.map +1 -0
  235. package/dist/view/pageSection.d.ts +21 -0
  236. package/dist/view/pageSection.d.ts.map +1 -0
  237. package/dist/view/pageSection.js +59 -0
  238. package/dist/view/pageSection.js.map +1 -0
  239. package/dist/view/routes.js +7 -7
  240. package/dist/view/run.d.ts +5 -1
  241. package/dist/view/run.d.ts.map +1 -1
  242. package/dist/view/run.js +66 -7
  243. package/dist/view/run.js.map +1 -1
  244. package/package.json +3 -3
@@ -1,9 +1,17 @@
1
1
  /** 搜索筛选能力的路由声明(唤醒词命中哪条命令,声明面唯一一处)。
2
2
  *
3
- * 八行对应 `src/policy/wakewords.ts` 里搜索筛选八句唤醒词:查看全部/搜索食谱/搜菜/查食材/
4
- * 筛选菜系/筛选食材/筛选口味/筛选季节都进 `chef.recipe.search`。`order` 取唤醒词表 1-based
5
- * 下标(12–19),只保证跨域可比;全表级顺序由场景表定,本文件不另立顺序。
6
- * 命令行写法照 `packages/skill-chef/SKILL.md` 同命令示例(空库可跑的那一行)。
3
+ * 十二行对应 `src/policy/wakewords.ts` 里搜索筛选十二句唤醒词:查看全部/搜索食谱/搜菜/查食材/
4
+ * 筛选菜系/筛选食材/筛选口味/筛选季节(#771 落位)+ 筛选难度/筛选时间/筛选炊具/筛选状态
5
+ * (#841 补齐的四条老组名)。`order` 取唤醒词表 1-based 下标,本域不在表内连续:
6
+ * 12–19 是原表里那八句,38–41 是 #841 追加的四句(表尾按域归组,见 `wakewords.ts` 的段注)。
7
+ * 全表级顺序由唤醒词表定,本文件不另立顺序;`order` 是「我在表里第几行」,与表序互为判据
8
+ * (判据住 `t841-登记面对账.mjs`)。
9
+ * 命令行写法照本表各条的槽位示例(空库可跑的那一行)。
10
+ *
11
+ * #771:筛选食材→`ingredient`、筛选口味→`flavor`、筛选季节→`season`(各用显式键,不再经
12
+ * `filter` 绕 `cuisine`);筛选菜系仍走 `filter`(别名落 `cuisine`,与既有测试与 HELP 示例对齐)。
13
+ * #841:追加的四条同理各用显式键(`difficulty`/`time_max`/`cookware`/`status`),经 `filter` 绕道会让
14
+ * 「按炊具筛」打到菜系维度上。
7
15
  */
8
16
  /** 搜索筛选能力的路由声明表:恰好导出一个声明数组。 */
9
17
  export const SEARCH_ROUTES = [
@@ -41,19 +49,43 @@ export const SEARCH_ROUTES = [
41
49
  order: 17,
42
50
  wakeWord: '筛选食材',
43
51
  key: 'chef.recipe.search',
44
- cli: 'chef-cmd-read chef.recipe.search --params \'{"filter":"川菜"}\'',
52
+ cli: 'chef-cmd-read chef.recipe.search --params \'{"ingredient":"五花肉"}\'',
45
53
  },
46
54
  {
47
55
  order: 18,
48
56
  wakeWord: '筛选口味',
49
57
  key: 'chef.recipe.search',
50
- cli: 'chef-cmd-read chef.recipe.search --params \'{"filter":"川菜"}\'',
58
+ cli: 'chef-cmd-read chef.recipe.search --params \'{"flavor":"辣"}\'',
51
59
  },
52
60
  {
53
61
  order: 19,
54
62
  wakeWord: '筛选季节',
55
63
  key: 'chef.recipe.search',
56
- cli: 'chef-cmd-read chef.recipe.search --params \'{"filter":"川菜"}\'',
64
+ cli: 'chef-cmd-read chef.recipe.search --params \'{"season":"夏"}\'',
65
+ },
66
+ {
67
+ order: 38,
68
+ wakeWord: '筛选难度',
69
+ key: 'chef.recipe.search',
70
+ cli: 'chef-cmd-read chef.recipe.search --params \'{"difficulty":"简单"}\'',
71
+ },
72
+ {
73
+ order: 39,
74
+ wakeWord: '筛选时间',
75
+ key: 'chef.recipe.search',
76
+ cli: 'chef-cmd-read chef.recipe.search --params \'{"time_max":30}\'',
77
+ },
78
+ {
79
+ order: 40,
80
+ wakeWord: '筛选炊具',
81
+ key: 'chef.recipe.search',
82
+ cli: 'chef-cmd-read chef.recipe.search --params \'{"cookware":"炒锅"}\'',
83
+ },
84
+ {
85
+ order: 41,
86
+ wakeWord: '筛选状态',
87
+ key: 'chef.recipe.search',
88
+ cli: 'chef-cmd-read chef.recipe.search --params \'{"status":"已做"}\'',
57
89
  },
58
90
  ];
59
91
  //# sourceMappingURL=routes.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"routes.js","sourceRoot":"","sources":["../../src/search/routes.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,+BAA+B;AAC/B,MAAM,CAAC,MAAM,aAAa,GAAyB;IACjD;QACE,KAAK,EAAE,EAAE;QACT,QAAQ,EAAE,MAAM;QAChB,GAAG,EAAE,oBAAoB;QACzB,GAAG,EAAE,8DAA8D;KACpE;IACD;QACE,KAAK,EAAE,EAAE;QACT,QAAQ,EAAE,MAAM;QAChB,GAAG,EAAE,oBAAoB;QACzB,GAAG,EAAE,0DAA0D;KAChE;IACD;QACE,KAAK,EAAE,EAAE;QACT,QAAQ,EAAE,IAAI;QACd,GAAG,EAAE,oBAAoB;QACzB,GAAG,EAAE,0DAA0D;KAChE;IACD;QACE,KAAK,EAAE,EAAE;QACT,QAAQ,EAAE,KAAK;QACf,GAAG,EAAE,oBAAoB;QACzB,GAAG,EAAE,0DAA0D;KAChE;IACD;QACE,KAAK,EAAE,EAAE;QACT,QAAQ,EAAE,MAAM;QAChB,GAAG,EAAE,oBAAoB;QACzB,GAAG,EAAE,+DAA+D;KACrE;IACD;QACE,KAAK,EAAE,EAAE;QACT,QAAQ,EAAE,MAAM;QAChB,GAAG,EAAE,oBAAoB;QACzB,GAAG,EAAE,+DAA+D;KACrE;IACD;QACE,KAAK,EAAE,EAAE;QACT,QAAQ,EAAE,MAAM;QAChB,GAAG,EAAE,oBAAoB;QACzB,GAAG,EAAE,+DAA+D;KACrE;IACD;QACE,KAAK,EAAE,EAAE;QACT,QAAQ,EAAE,MAAM;QAChB,GAAG,EAAE,oBAAoB;QACzB,GAAG,EAAE,+DAA+D;KACrE;CACF,CAAC"}
1
+ {"version":3,"file":"routes.js","sourceRoot":"","sources":["../../src/search/routes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAIH,+BAA+B;AAC/B,MAAM,CAAC,MAAM,aAAa,GAAyB;IACjD;QACE,KAAK,EAAE,EAAE;QACT,QAAQ,EAAE,MAAM;QAChB,GAAG,EAAE,oBAAoB;QACzB,GAAG,EAAE,8DAA8D;KACpE;IACD;QACE,KAAK,EAAE,EAAE;QACT,QAAQ,EAAE,MAAM;QAChB,GAAG,EAAE,oBAAoB;QACzB,GAAG,EAAE,0DAA0D;KAChE;IACD;QACE,KAAK,EAAE,EAAE;QACT,QAAQ,EAAE,IAAI;QACd,GAAG,EAAE,oBAAoB;QACzB,GAAG,EAAE,0DAA0D;KAChE;IACD;QACE,KAAK,EAAE,EAAE;QACT,QAAQ,EAAE,KAAK;QACf,GAAG,EAAE,oBAAoB;QACzB,GAAG,EAAE,0DAA0D;KAChE;IACD;QACE,KAAK,EAAE,EAAE;QACT,QAAQ,EAAE,MAAM;QAChB,GAAG,EAAE,oBAAoB;QACzB,GAAG,EAAE,+DAA+D;KACrE;IACD;QACE,KAAK,EAAE,EAAE;QACT,QAAQ,EAAE,MAAM;QAChB,GAAG,EAAE,oBAAoB;QACzB,GAAG,EAAE,oEAAoE;KAC1E;IACD;QACE,KAAK,EAAE,EAAE;QACT,QAAQ,EAAE,MAAM;QAChB,GAAG,EAAE,oBAAoB;QACzB,GAAG,EAAE,8DAA8D;KACpE;IACD;QACE,KAAK,EAAE,EAAE;QACT,QAAQ,EAAE,MAAM;QAChB,GAAG,EAAE,oBAAoB;QACzB,GAAG,EAAE,8DAA8D;KACpE;IACD;QACE,KAAK,EAAE,EAAE;QACT,QAAQ,EAAE,MAAM;QAChB,GAAG,EAAE,oBAAoB;QACzB,GAAG,EAAE,mEAAmE;KACzE;IACD;QACE,KAAK,EAAE,EAAE;QACT,QAAQ,EAAE,MAAM;QAChB,GAAG,EAAE,oBAAoB;QACzB,GAAG,EAAE,+DAA+D;KACrE;IACD;QACE,KAAK,EAAE,EAAE;QACT,QAAQ,EAAE,MAAM;QAChB,GAAG,EAAE,oBAAoB;QACzB,GAAG,EAAE,iEAAiE;KACvE;IACD;QACE,KAAK,EAAE,EAAE;QACT,QAAQ,EAAE,MAAM;QAChB,GAAG,EAAE,oBAAoB;QACzB,GAAG,EAAE,+DAA+D;KACrE;CACF,CAAC"}
@@ -7,7 +7,7 @@
7
7
  */
8
8
  import type { ChefDb, RecipeRow } from '../fetch/db.js';
9
9
  import type { RecipeItem } from '../render/views.js';
10
- export declare const FILTER_KEYS: readonly ["cuisine", "season", "method", "flavor", "tag", "meal", "cookware", "difficulty", "status", "maxTime", "filter"];
10
+ export declare const FILTER_KEYS: readonly ["cuisine", "season", "method", "flavor", "tag", "meal", "cookware", "difficulty", "status", "maxTime", "filter", "ingredient", "ingredient_exclude"];
11
11
  /** 按关键词搜菜名/简介/食材名(空查询不返全量,直接拦)。原 `src/fetch/db.ts`,本域独占。 */
12
12
  export declare function searchRecipes(h: ChefDb, kw: string): RecipeRow[];
13
13
  /** 按维度过滤(维度表只读透传)。原 `src/fetch/db.ts`,本域独占。 */
@@ -17,6 +17,14 @@ export declare function buildRecipeSearch(kind: string, items: RecipeItem[]): {
17
17
  total: number;
18
18
  kind: string;
19
19
  };
20
- /** 跑 `chef.recipe.search`:关键词搜/查全部/维度过滤三路(list 形)。空结果缺失阻断,不返空冒充。 */
20
+ /** 跑 `chef.recipe.search`:关键词搜/查全部/维度过滤三路(list 形)。空结果缺失阻断,不返空冒充。
21
+ *
22
+ * #771 口径(三条,老件 `scenes/搜索筛选.yaml` 为准):
23
+ * - 错字模糊匹配(search-2):精确命中直接返;精确无结果时去尾一字再查,命中则 `kind` 记
24
+ * `search-fuzzy:<原词>`(页面据此印纠错提示并直接展示结果),仍无结果则如实抛 `CHEF_EMPTY_RESULT`
25
+ * 走无结果口径。不建字典/拼音表(需建另立票,见本票遗留出口)。
26
+ * - 多维组合筛选(search-4):至多 3 维,超限直接拦(exit 2 并点名维数),不再静默取交集。
27
+ * - 排除食材(search-6):`ingredient_exclude`(别名 `exclude_ingredient`/`exclude`)走 NOT 条件。
28
+ */
21
29
  export declare function runRecipeSearch(handle: ChefDb, params: Record<string, unknown>): unknown;
22
30
  //# sourceMappingURL=run.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../src/search/run.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAExD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAKrD,eAAO,MAAM,WAAW,4HAA6H,CAAC;AAEtJ,4DAA4D;AAC5D,wBAAgB,aAAa,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,SAAS,EAAE,CAOhE;AAED,+CAA+C;AAC/C,wBAAgB,aAAa,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,GAAG,SAAS,EAAE,CAoB3F;AAGD,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG;IAAE,KAAK,EAAE,UAAU,EAAE,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAEzH;AAED,oEAAoE;AACpE,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CA4BxF"}
1
+ {"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../src/search/run.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAExD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAQrD,eAAO,MAAM,WAAW,gKAAiK,CAAC;AAU1L,4DAA4D;AAC5D,wBAAgB,aAAa,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,SAAS,EAAE,CAOhE;AAED,+CAA+C;AAC/C,wBAAgB,aAAa,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,GAAG,SAAS,EAAE,CA0B3F;AAGD,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG;IAAE,KAAK,EAAE,UAAU,EAAE,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAEzH;AAED;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAiDxF"}
@@ -10,7 +10,17 @@ import { listRecipes, qAll, toRecipe } from '../fetch/db.js';
10
10
  import { toRecipeItem } from '../render/views.js';
11
11
  import { fail } from '../shared/slots.js';
12
12
  // #43 F2 一期限制:FILTER 维度只读(recipe.search 透传过滤),本域独占(旧址 `cmd_read.ts`)。
13
- export const FILTER_KEYS = ['cuisine', 'season', 'method', 'flavor', 'tag', 'meal', 'cookware', 'difficulty', 'status', 'maxTime', 'filter'];
13
+ // #771:补 `ingredient`(按食材含)与 `ingredient_exclude`(排除食材 NOT 条件,老件 search-6),
14
+ // 3 条路由错位至此收敛:筛选菜系走 `cuisine`(`filter` 别名保留兼容),筛选食材走 `ingredient`,
15
+ // 筛选口味走 `flavor`,筛选季节走 `season`(后三者经显式键,不再经 `filter` 绕 `cuisine`)。
16
+ export const FILTER_KEYS = ['cuisine', 'season', 'method', 'flavor', 'tag', 'meal', 'cookware', 'difficulty', 'status', 'maxTime', 'filter', 'ingredient', 'ingredient_exclude'];
17
+ /** 过滤维度的**别名**键(老件 `scenes/搜索筛选.yaml` 的词面):`time_max`/`time` → `maxTime`。
18
+ *
19
+ * #841 修:这两个别名原先在「一个维度都没给」那道预检**之后**才被认(下面 113–114 行的归一),
20
+ * 而那道预检只点名 `FILTER_KEYS` ⇒ 只给 `time_max` 会被判成「没给过滤条件」exit 2,
21
+ * 归一那两行成了走不到的死代码(`filter_time_quick` 那张卡一直因此打不通)。别名属**同一维度**,
22
+ * 故与 `FILTER_KEYS` 一起参与预检,归一换算仍在下面一处。 */
23
+ const FILTER_ALIAS_KEYS = ['time_max', 'time'];
14
24
  /** 按关键词搜菜名/简介/食材名(空查询不返全量,直接拦)。原 `src/fetch/db.ts`,本域独占。 */
15
25
  export function searchRecipes(h, kw) {
16
26
  if (typeof kw !== 'string' || kw.trim().length === 0) {
@@ -56,6 +66,13 @@ export function filterRecipes(h, filters = {}) {
56
66
  exists('recipe_meal_types', 'meal_type', filters.meal);
57
67
  if (filters.cookware !== undefined && filters.cookware !== '')
58
68
  exists('cookware', 'name', filters.cookware);
69
+ // #771:按食材含(老件 search-5:列出含该食材的菜)与排除食材(老件 search-6:NOT 条件查询)。
70
+ if (filters.ingredient !== undefined && filters.ingredient !== '')
71
+ exists('ingredients', 'name', filters.ingredient);
72
+ if (filters.ingredient_exclude !== undefined && filters.ingredient_exclude !== '') {
73
+ conds.push('NOT EXISTS (SELECT 1 FROM ingredients t WHERE t.recipe_id = r.id AND t.name = ?)');
74
+ params.push(String(filters.ingredient_exclude));
75
+ }
59
76
  const rows = qAll(h, 'SELECT DISTINCT r.* FROM recipes r WHERE ' + conds.join(' AND ') + ' ORDER BY r.name ASC', params);
60
77
  return rows.map(toRecipe);
61
78
  }
@@ -63,38 +80,73 @@ export function filterRecipes(h, filters = {}) {
63
80
  export function buildRecipeSearch(kind, items) {
64
81
  return { items, total: items.length, kind };
65
82
  }
66
- /** 跑 `chef.recipe.search`:关键词搜/查全部/维度过滤三路(list 形)。空结果缺失阻断,不返空冒充。 */
83
+ /** 跑 `chef.recipe.search`:关键词搜/查全部/维度过滤三路(list 形)。空结果缺失阻断,不返空冒充。
84
+ *
85
+ * #771 口径(三条,老件 `scenes/搜索筛选.yaml` 为准):
86
+ * - 错字模糊匹配(search-2):精确命中直接返;精确无结果时去尾一字再查,命中则 `kind` 记
87
+ * `search-fuzzy:<原词>`(页面据此印纠错提示并直接展示结果),仍无结果则如实抛 `CHEF_EMPTY_RESULT`
88
+ * 走无结果口径。不建字典/拼音表(需建另立票,见本票遗留出口)。
89
+ * - 多维组合筛选(search-4):至多 3 维,超限直接拦(exit 2 并点名维数),不再静默取交集。
90
+ * - 排除食材(search-6):`ingredient_exclude`(别名 `exclude_ingredient`/`exclude`)走 NOT 条件。
91
+ */
67
92
  export function runRecipeSearch(handle, params) {
68
93
  const q = params.q;
69
94
  let rows;
70
95
  let kind;
71
96
  if (typeof q === 'string' && q.trim()) {
72
- rows = searchRecipes(handle, q.trim());
73
- kind = 'search:' + q.trim();
97
+ const kw = q.trim();
98
+ const exact = searchRecipes(handle, kw);
99
+ if (exact.length) {
100
+ rows = exact;
101
+ kind = 'search:' + kw;
102
+ }
103
+ else {
104
+ const short = kw.slice(0, -1);
105
+ if (short.length >= 2) {
106
+ const fb = searchRecipes(handle, short);
107
+ if (fb.length) {
108
+ rows = fb;
109
+ kind = 'search-fuzzy:' + kw;
110
+ }
111
+ else {
112
+ throw new ChefFetchError('CHEF_EMPTY_RESULT', '搜菜无结果(缺失阻断,不返空冒充)');
113
+ }
114
+ }
115
+ else {
116
+ throw new ChefFetchError('CHEF_EMPTY_RESULT', '搜菜无结果(缺失阻断,不返空冒充)');
117
+ }
118
+ }
74
119
  }
75
120
  else if (params.kind === 'all') {
76
121
  rows = listRecipes(handle);
77
122
  kind = 'all';
78
123
  }
79
124
  else {
80
- const present = FILTER_KEYS.filter((k) => params[k] !== undefined && params[k] !== '');
125
+ const present = [...FILTER_KEYS, ...FILTER_ALIAS_KEYS].filter((k) => params[k] !== undefined && params[k] !== '');
81
126
  if (!present.length)
82
- fail(2, 'search 须给 q、kind=all,或过滤条件(cuisine/season/method/flavor/tag/meal/cookware/difficulty/status/maxTime/filter)');
127
+ fail(2, 'search 须给 q、kind=all,或过滤条件(cuisine/season/method/flavor/tag/meal/cookware/difficulty/status/maxTime/filter/ingredient/ingredient_exclude,别名 time_max/time)');
83
128
  const f = {};
84
- for (const k of ['cuisine', 'season', 'method', 'flavor', 'tag', 'meal', 'cookware', 'difficulty', 'status', 'maxTime']) {
129
+ for (const k of ['cuisine', 'season', 'method', 'flavor', 'tag', 'meal', 'cookware', 'difficulty', 'status', 'maxTime', 'ingredient', 'ingredient_exclude']) {
85
130
  const v = params[k];
86
131
  if (v !== undefined && v !== '')
87
132
  f[k] = typeof v === 'string' ? v.trim() : v;
88
133
  }
89
- // 别名:filter=通用筛选(川菜类示例按菜系走,与 HELP 示例对齐);time_max/time=最大用时别名。
134
+ // 别名:filter=通用筛选(川菜类示例按菜系走,与 HELP 示例对齐,筛选菜系仍走 cuisine);
135
+ // time_max/time=最大用时别名;exclude_ingredient/exclude=排除食材别名(老件 search-6「不吃/不要/忌」)。
90
136
  if (f.cuisine === undefined && typeof params.filter === 'string' && params.filter.trim())
91
137
  f.cuisine = params.filter.trim();
92
138
  if (f.maxTime === undefined && params.time_max !== undefined && params.time_max !== '')
93
139
  f.maxTime = params.time_max;
94
140
  if (f.maxTime === undefined && params.time !== undefined && params.time !== '')
95
141
  f.maxTime = params.time;
142
+ if (f.ingredient_exclude === undefined && params.exclude_ingredient !== undefined && params.exclude_ingredient !== '')
143
+ f.ingredient_exclude = params.exclude_ingredient;
144
+ if (f.ingredient_exclude === undefined && params.exclude !== undefined && params.exclude !== '')
145
+ f.ingredient_exclude = params.exclude;
96
146
  if (!Object.keys(f).length)
97
- fail(2, 'search 过滤条件为空(须给 cuisine/season/method/flavor/tag/meal/cookware/difficulty/status/maxTime/filter 之一)');
147
+ fail(2, 'search 过滤条件为空(须给 cuisine/season/method/flavor/tag/meal/cookware/difficulty/status/maxTime/filter/ingredient/ingredient_exclude 之一)');
148
+ if (Object.keys(f).length > 3)
149
+ fail(2, '组合筛选至多 3 维(老件 search-4):本次 ' + Object.keys(f).length + ' 维(' + Object.keys(f).sort().join('、') + ')');
98
150
  rows = filterRecipes(handle, f);
99
151
  kind = 'filter:' + Object.keys(f).sort().join(',');
100
152
  }
@@ -1 +1 @@
1
- {"version":3,"file":"run.js","sourceRoot":"","sources":["../../src/search/run.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"run.js","sourceRoot":"","sources":["../../src/search/run.ts"],"names":[],"mappings":"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"}
@@ -1,10 +1,10 @@
1
- /** 开始使用能力的命令声明(空):本域暂无 key。
1
+ /** 开始使用能力的命令声明(权威源:一条命令的事实只住这里)。
2
2
  *
3
- * 本能力即 HELP 一级分组「开始使用」。`首次使用`短语在 #767 资产里去向为 `tbd`
4
- * (不可路由)——运行时无 key、无实现。空数组仍是「恰好一个声明数组」(生成器认它为一域,
5
- * 来源域名单里有 `setup`),开始使用端到端票接入 key 时再填。
3
+ * 本能力即 HELP 一级分组「开始使用」。一条写命令管一摊:
4
+ * · `chef.setup.init`(会改数据库的命令,幂等):首次使用进这一条(环境检测+按需建库建目录)。
5
+ * 唤醒词路由:#841 起 `首次使用` 已在 `WAKE_TABLE`(下标 48),`src/setup/routes.ts` 同步填实 `order`。
6
6
  */
7
7
  import type { CommandSpec } from '../shared/command-spec.js';
8
- /** 开始使用能力的声明表:恰好导出一个声明数组(生成器只认这一个;本域暂空)。 */
8
+ /** 开始使用能力的声明表:恰好导出一个声明数组(生成器只认这一个)。 */
9
9
  export declare const SETUP_COMMANDS: readonly CommandSpec[];
10
10
  //# sourceMappingURL=commands.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"commands.d.ts","sourceRoot":"","sources":["../../src/setup/commands.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAE7D,4CAA4C;AAC5C,eAAO,MAAM,cAAc,EAAE,SAAS,WAAW,EAAO,CAAC"}
1
+ {"version":3,"file":"commands.d.ts","sourceRoot":"","sources":["../../src/setup/commands.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAE7D,uCAAuC;AACvC,eAAO,MAAM,cAAc,EAAE,SAAS,WAAW,EAQhD,CAAC"}
@@ -1,9 +1,17 @@
1
- /** 开始使用能力的命令声明(空):本域暂无 key。
1
+ /** 开始使用能力的命令声明(权威源:一条命令的事实只住这里)。
2
2
  *
3
- * 本能力即 HELP 一级分组「开始使用」。`首次使用`短语在 #767 资产里去向为 `tbd`
4
- * (不可路由)——运行时无 key、无实现。空数组仍是「恰好一个声明数组」(生成器认它为一域,
5
- * 来源域名单里有 `setup`),开始使用端到端票接入 key 时再填。
3
+ * 本能力即 HELP 一级分组「开始使用」。一条写命令管一摊:
4
+ * · `chef.setup.init`(会改数据库的命令,幂等):首次使用进这一条(环境检测+按需建库建目录)。
5
+ * 唤醒词路由:#841 起 `首次使用` 已在 `WAKE_TABLE`(下标 48),`src/setup/routes.ts` 同步填实 `order`。
6
6
  */
7
- /** 开始使用能力的声明表:恰好导出一个声明数组(生成器只认这一个;本域暂空)。 */
8
- export const SETUP_COMMANDS = [];
7
+ /** 开始使用能力的声明表:恰好导出一个声明数组(生成器只认这一个)。 */
8
+ export const SETUP_COMMANDS = [
9
+ {
10
+ kind: 'write',
11
+ key: 'chef.setup.init',
12
+ title: '首次使用',
13
+ wakeWord: '首次使用',
14
+ example: 'chef-cmd-read chef.setup.init --params \'{}\'',
15
+ },
16
+ ];
9
17
  //# sourceMappingURL=commands.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"commands.js","sourceRoot":"","sources":["../../src/setup/commands.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,4CAA4C;AAC5C,MAAM,CAAC,MAAM,cAAc,GAA2B,EAAE,CAAC"}
1
+ {"version":3,"file":"commands.js","sourceRoot":"","sources":["../../src/setup/commands.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,uCAAuC;AACvC,MAAM,CAAC,MAAM,cAAc,GAA2B;IACpD;QACE,IAAI,EAAE,OAAO;QACb,GAAG,EAAE,iBAAiB;QACtB,KAAK,EAAE,MAAM;QACb,QAAQ,EAAE,MAAM;QAChB,OAAO,EAAE,+CAA+C;KACzD;CACF,CAAC"}
@@ -1,8 +1,6 @@
1
- /** 开始使用能力门:能力对外只经这里(结构纪律铁律一、铁律五)。
2
- *
3
- * 对外两件:命令声明表(暂空)与路由声明表(全 tbd)。处理函数与取数实现不在这里,
4
- * 本票只立声明;外边要用开始使用能力的东西,只经这两个名字。
5
- */
1
+ /** 开始使用能力门:能力对外只经这里(结构纪律铁律一、铁律五)。 */
6
2
  export { SETUP_COMMANDS } from './commands.js';
7
3
  export { SETUP_ROUTES } from './routes.js';
4
+ export { runSetupInit } from './run-init.js';
5
+ export { setupInitPage } from './pages.js';
8
6
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/setup/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/setup/index.ts"],"names":[],"mappings":"AAAA,qCAAqC;AAErC,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC"}
@@ -1,8 +1,6 @@
1
- /** 开始使用能力门:能力对外只经这里(结构纪律铁律一、铁律五)。
2
- *
3
- * 对外两件:命令声明表(暂空)与路由声明表(全 tbd)。处理函数与取数实现不在这里,
4
- * 本票只立声明;外边要用开始使用能力的东西,只经这两个名字。
5
- */
1
+ /** 开始使用能力门:能力对外只经这里(结构纪律铁律一、铁律五)。 */
6
2
  export { SETUP_COMMANDS } from './commands.js';
7
3
  export { SETUP_ROUTES } from './routes.js';
4
+ export { runSetupInit } from './run-init.js';
5
+ export { setupInitPage } from './pages.js';
8
6
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/setup/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/setup/index.ts"],"names":[],"mappings":"AAAA,qCAAqC;AAErC,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC"}
@@ -0,0 +1,19 @@
1
+ /** 开始使用能力的页面装配(首次使用一页,全走公共层区块+页内一段收口样式)。
2
+ *
3
+ * 老件骨架来源:`templates/开始使用/first_use_wizard.html`(环境检测→环境变量→建库→完成回执四步)。
4
+ * 新页按同一四步组织,行为归宿主(页面只摆形状与状态,静态呈现)。
5
+ *
6
+ * #873 页内收口(公共层只给到形状那一层,层级的最后一档落在页内):
7
+ * ① 读数三张**瓦片**(不是一条通栏面板):标签与数值差 5px —— 「业务表/状态/建库时机」是列头,
8
+ * 值才是正文;三张各自成卡,宽档不会读成一条呆板的通栏;
9
+ * ② 页头图标位(锅)+ 品牌装饰带(都是内联 SVG,纯装饰,不载任何数据);
10
+ * ③ 分区题头带一条暖色渐隐、开合标记换成暖色圆点(公共层那枚蓝 ▸ 落在圆底上读起来像播放键);
11
+ * ④ 上屏文字去实现语与复述(「装前命令」「老库仅提示迁移」「只读不写」全部换人话;
12
+ * 口径行与读数瓦片、结论条互为复述的那一句删掉,内容并进「建库」那一步的正文)。
13
+ */
14
+ /** 首次使用向导页(过程型:分节折叠+动作行)。 */
15
+ export declare function setupInitPage(input: {
16
+ tables: number;
17
+ initialized: boolean;
18
+ }): string;
19
+ //# sourceMappingURL=pages.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pages.d.ts","sourceRoot":"","sources":["../../src/setup/pages.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAwGH,6BAA6B;AAC7B,wBAAgB,aAAa,CAAC,KAAK,EAAE;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,OAAO,CAAA;CAAE,GAAG,MAAM,CAsDrF"}
@@ -0,0 +1,163 @@
1
+ /** 开始使用能力的页面装配(首次使用一页,全走公共层区块+页内一段收口样式)。
2
+ *
3
+ * 老件骨架来源:`templates/开始使用/first_use_wizard.html`(环境检测→环境变量→建库→完成回执四步)。
4
+ * 新页按同一四步组织,行为归宿主(页面只摆形状与状态,静态呈现)。
5
+ *
6
+ * #873 页内收口(公共层只给到形状那一层,层级的最后一档落在页内):
7
+ * ① 读数三张**瓦片**(不是一条通栏面板):标签与数值差 5px —— 「业务表/状态/建库时机」是列头,
8
+ * 值才是正文;三张各自成卡,宽档不会读成一条呆板的通栏;
9
+ * ② 页头图标位(锅)+ 品牌装饰带(都是内联 SVG,纯装饰,不载任何数据);
10
+ * ③ 分区题头带一条暖色渐隐、开合标记换成暖色圆点(公共层那枚蓝 ▸ 落在圆底上读起来像播放键);
11
+ * ④ 上屏文字去实现语与复述(「装前命令」「老库仅提示迁移」「只读不写」全部换人话;
12
+ * 口径行与读数瓦片、结论条互为复述的那一句删掉,内容并进「建库」那一步的正文)。
13
+ */
14
+ import { CHART_PALETTE, CSS_VAR_TOKENS, renderActionBar, renderFactStrip } from 'base-paint';
15
+ import { renderDisclosure, renderPageShell, renderProseBlock, } from 'base-paint/blocks';
16
+ import { chefCopyArea } from '../render/copyArea.js';
17
+ import { renderSceneShell } from '../render/sceneShell.js';
18
+ /** 换行(仓库口径:不写字面换行转义,与 `blocks.ts`/皮肤件同)。 */
19
+ const LF = String.fromCharCode(10);
20
+ /** hex → `r, g, b`:本页 `rgba()` 浅底/描边的唯一换算位(色基只从冻结 token 与调色板取)。 */
21
+ function rgbOf(hex) {
22
+ const n = Number.parseInt(hex.slice(1), 16);
23
+ return ((n >> 16) & 255) + ', ' + ((n >> 8) & 255) + ', ' + (n & 255);
24
+ }
25
+ /** 本页收口样式(#873 开始使用席)。每一条都在本技能根类之下,别的技能页一行不变。
26
+ *
27
+ * 第三轮:**页头不再放本席自己那枚图标**——页族装饰带(`ilife-scene-band-process`)已经占了页头那一格,
28
+ * 同一处两件装饰是重复。本页留读数带、分区题头暖色渐隐、开合折角,再补一段**窄档填满度**
29
+ * (页族填满度公共层只给了回执族,process 族这一页由页内自己收)。 */
30
+ function setupPageCss() {
31
+ const yellow = rgbOf(CHART_PALETTE[6]);
32
+ const warm = rgbOf(CHART_PALETTE[2]);
33
+ const line = rgbOf(CSS_VAR_TOKENS['--line']);
34
+ const root = '.ilife-page-ui ';
35
+ return [
36
+ '/* #873 开始使用·首次使用 页内收口 · 每一条都挂在根类之下 */',
37
+ '/* 读数带:三条读数收进一张暖色面板,格间发丝线分区(不用任何分隔符字符)。 */',
38
+ root + '.ilife-chef-deck {',
39
+ ' box-sizing: border-box;',
40
+ ' margin: 22px 0 0;',
41
+ ' padding: 0;',
42
+ ' border: 1px solid rgba(' + warm + ', .30);',
43
+ ' border-radius: 14px;',
44
+ ' background-image: linear-gradient(100deg, rgba(' + yellow + ', .20), var(--card) 58%);',
45
+ ' box-shadow: 0 1px 3px rgba(' + line + ', .50);',
46
+ '}',
47
+ // 窄档不给「等宽挤块」:瓦片按内容宽排(`flex: 0 1 auto`),宽档再让它撑满一行居中。
48
+ root + '.ilife-chef-deck .ilife-block-fact-strip-item {',
49
+ ' flex: 0 1 auto;',
50
+ ' padding: 11px 12px;',
51
+ ' border: 0;',
52
+ ' border-radius: 0;',
53
+ ' background-color: transparent;',
54
+ '}',
55
+ root + '.ilife-chef-deck .ilife-block-fact-strip-item + .ilife-block-fact-strip-item {',
56
+ ' border-left: 1px solid rgba(' + line + ', .90);',
57
+ '}',
58
+ '/* 列头(标签)与正文(数值)差 5px:这一条销的就是「表头与正文同号、难辨列」。 */',
59
+ root + '.ilife-chef-deck .ilife-block-fact-strip-label {',
60
+ ' letter-spacing: .06em;',
61
+ '}',
62
+ root + '.ilife-chef-deck .ilife-block-fact-strip-value {',
63
+ ' font-size: 17px;',
64
+ ' font-weight: 700;',
65
+ '}',
66
+ /* 宽档:三张各自撑等宽、内容居中(一排三张读起来是一组读数)。 */
67
+ '@media (min-width: 820px) {',
68
+ ' ' + root + '.ilife-chef-deck .ilife-block-fact-strip-item {',
69
+ ' flex: 1 1 auto;',
70
+ ' align-items: center;',
71
+ ' text-align: center;',
72
+ ' }',
73
+ '}',
74
+ '/* 分区题头:折叠条标题那一行带一条暖色渐隐(品牌温度落在「分区」这一层)。 */',
75
+ root + '.ilife-block-page-shell-body > .ilife-block-disclosure > .ilife-block-disclosure-summary {',
76
+ ' background-image: linear-gradient(90deg, rgba(' + yellow + ', .20), rgba(' + yellow + ', 0) 76%);',
77
+ ' border-radius: 13px;',
78
+ '}',
79
+ '/* 开合标记:换成一枚暖色折角(公共层那枚蓝 ▸ 落在圆底上像播放键;换成实心圆点又被读成空态圆点)。 */',
80
+ root + '.ilife-block-disclosure-summary::before {',
81
+ ' content: "";',
82
+ ' width: 8px;',
83
+ ' height: 8px;',
84
+ ' margin-right: 12px;',
85
+ ' border-right: 2px solid rgba(' + warm + ', .95);',
86
+ ' border-bottom: 2px solid rgba(' + warm + ', .95);',
87
+ ' border-radius: 0;',
88
+ ' background: none;',
89
+ ' transform: rotate(45deg);',
90
+ '}',
91
+ root + '.ilife-block-disclosure[open] > .ilife-block-disclosure-summary::before {',
92
+ ' transform: rotate(225deg);',
93
+ '}',
94
+ '/* 窄档填满度:块距 16→26px、三步可点件 44→54px —— 首屏底空从 128px 收到 119px',
95
+ ' (页族那份填满度只覆盖回执族,process 族这一页由页内自己收;一个字的内容都不编)。',
96
+ ' 反例读数:撤掉这一段,首屏底空立刻回到 189px、双端自适应 20→17(见证据件「第三轮」)。 */',
97
+ '@media (max-width: 640px) {',
98
+ ' ' + root + '.ilife-block-page-shell-body > * + .ilife-block {',
99
+ ' margin-top: 26px;',
100
+ ' }',
101
+ ' ' + root + '.ilife-block-disclosure-summary {',
102
+ ' min-height: 54px;',
103
+ ' }',
104
+ '}',
105
+ ].join(LF);
106
+ }
107
+ /** 首次使用向导页(过程型:分节折叠+动作行)。 */
108
+ export function setupInitPage(input) {
109
+ const done = input.initialized ? '本次已建齐' : '此前已建齐';
110
+ const body = renderPageShell({
111
+ eyebrow: '私家大厨 | 开始使用',
112
+ title: '首次使用',
113
+ content: [
114
+ // 第三轮文案审计:原结论条「菜谱库已就绪,录第一道菜就能开工。」——删掉它用户一个字都不会少知道
115
+ // (「已建齐」在读数带的「状态」格里、要做什么在按钮「录第一道菜」上),故删。
116
+ renderFactStrip({
117
+ extraClass: 'ilife-chef-deck',
118
+ items: [
119
+ { label: '业务表', value: String(input.tables) + ' 张' },
120
+ { label: '状态', value: done },
121
+ { label: '建库时机', value: '用到时才建' },
122
+ ],
123
+ }),
124
+ renderDisclosure({
125
+ title: '环境检测',
126
+ contentHtml: renderProseBlock({ text: '读写环境正常,有缺项会在这里列出来,并给出安装方法。' }),
127
+ }),
128
+ renderDisclosure({
129
+ title: '建库',
130
+ // 原口径行那一句(用到时才建/建好不再改动)并进这一步:三个折叠条里它本来就属于「建库」。
131
+ contentHtml: renderProseBlock({ text: '缺的会补上,齐的直接跳过,旧数据只提醒,不自动搬动;建好以后不再改动文件。' }),
132
+ }),
133
+ renderDisclosure({
134
+ title: '完成回执',
135
+ contentHtml: renderProseBlock({ text: '初始化只做一次,以后每次进来都不会重复建。' }),
136
+ }),
137
+ renderActionBar({
138
+ buttons: [
139
+ { label: '录第一道菜', kind: 'primary', actionId: 'setup-first' },
140
+ { label: '看看全部菜谱', kind: 'ghost', actionId: 'setup-list' },
141
+ ],
142
+ }),
143
+ chefCopyArea({
144
+ // 本页曾带标题「复制上手说明」。**2026-09-22 用户裁定「乙」后标题一并去掉**(卡片与标题全去)。
145
+ // 留档两条,别当没发生过:① 第三轮文案审计**试过不给标题**(只留按钮),同会话实测 **89 → 84**,
146
+ // 当时「掉了就回退,故保留标题」;② 现在没有标题是**裁定所致**,不是没有人试过。
147
+ // ⇒ 若日后本页视觉评分掉档,先怀疑这一条(这是唯一有实测数字的嫌疑点)。
148
+ dataActionId: 'setup-copy',
149
+ data: {
150
+ key: 'chef.setup.init', shape: 'receipt', ok: true,
151
+ message: '菜谱库已就绪(' + input.tables + ' 张表,' + done + '),录第一道菜就能开工。',
152
+ },
153
+ }),
154
+ ].join(''),
155
+ });
156
+ return renderSceneShell({
157
+ family: 'process',
158
+ docTitle: '首次使用',
159
+ bodyHtml: body,
160
+ extraCss: setupPageCss(),
161
+ });
162
+ }
163
+ //# sourceMappingURL=pages.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pages.js","sourceRoot":"","sources":["../../src/setup/pages.ts"],"names":[],"mappings":"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"}
@@ -1,10 +1,9 @@
1
- /** 开始使用能力的路由声明(占位):`首次使用`暂无 key。
1
+ /** 开始使用能力的路由声明(唤醒词命中哪条命令,声明面唯一一处)。
2
2
  *
3
- * 一行对应 #767 资产里开始使用的一组短语,`key: 'tbd'`、`order: 0`(未入 `WAKE_TABLE`,
4
- * 运行时唤醒词未命中)。`cli` 为空串——无可跑命令行,占位等域票接入。
5
- * 对账脚本认 `key: 'tbd'` 行为 tbd 行(仅 relation/setup 允许出现)。
3
+ * 一行对应 #767 资产里开始使用的一组短语:`首次使用`进 `chef.setup.init`(幂等初始化)。
4
+ * #841 起该词已在 `WAKE_TABLE`(下标 47),`order` 照表序填实,不再有 `order: 0` 的待接入行。
6
5
  */
7
6
  import type { RouteDecl } from '../shared/command-spec.js';
8
- /** 开始使用能力的路由声明表:恰好导出一个声明数组(全 tbd,域票接入时填实)。 */
7
+ /** 开始使用能力的路由声明表:恰好导出一个声明数组。 */
9
8
  export declare const SETUP_ROUTES: readonly RouteDecl[];
10
9
  //# sourceMappingURL=routes.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"routes.d.ts","sourceRoot":"","sources":["../../src/setup/routes.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAE3D,8CAA8C;AAC9C,eAAO,MAAM,YAAY,EAAE,SAAS,SAAS,EAO5C,CAAC"}
1
+ {"version":3,"file":"routes.d.ts","sourceRoot":"","sources":["../../src/setup/routes.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAE3D,+BAA+B;AAC/B,eAAO,MAAM,YAAY,EAAE,SAAS,SAAS,EAO5C,CAAC"}
@@ -1,16 +1,15 @@
1
- /** 开始使用能力的路由声明(占位):`首次使用`暂无 key。
1
+ /** 开始使用能力的路由声明(唤醒词命中哪条命令,声明面唯一一处)。
2
2
  *
3
- * 一行对应 #767 资产里开始使用的一组短语,`key: 'tbd'`、`order: 0`(未入 `WAKE_TABLE`,
4
- * 运行时唤醒词未命中)。`cli` 为空串——无可跑命令行,占位等域票接入。
5
- * 对账脚本认 `key: 'tbd'` 行为 tbd 行(仅 relation/setup 允许出现)。
3
+ * 一行对应 #767 资产里开始使用的一组短语:`首次使用`进 `chef.setup.init`(幂等初始化)。
4
+ * #841 起该词已在 `WAKE_TABLE`(下标 47),`order` 照表序填实,不再有 `order: 0` 的待接入行。
6
5
  */
7
- /** 开始使用能力的路由声明表:恰好导出一个声明数组(全 tbd,域票接入时填实)。 */
6
+ /** 开始使用能力的路由声明表:恰好导出一个声明数组。 */
8
7
  export const SETUP_ROUTES = [
9
8
  {
10
- order: 0,
9
+ order: 47,
11
10
  wakeWord: '首次使用',
12
- key: 'tbd',
13
- cli: '',
11
+ key: 'chef.setup.init',
12
+ cli: 'chef-cmd-read chef.setup.init --params \'{}\'',
14
13
  },
15
14
  ];
16
15
  //# sourceMappingURL=routes.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"routes.js","sourceRoot":"","sources":["../../src/setup/routes.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,8CAA8C;AAC9C,MAAM,CAAC,MAAM,YAAY,GAAyB;IAChD;QACE,KAAK,EAAE,CAAC;QACR,QAAQ,EAAE,MAAM;QAChB,GAAG,EAAE,KAAK;QACV,GAAG,EAAE,EAAE;KACR;CACF,CAAC"}
1
+ {"version":3,"file":"routes.js","sourceRoot":"","sources":["../../src/setup/routes.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,+BAA+B;AAC/B,MAAM,CAAC,MAAM,YAAY,GAAyB;IAChD;QACE,KAAK,EAAE,EAAE;QACT,QAAQ,EAAE,MAAM;QAChB,GAAG,EAAE,iBAAiB;QACtB,GAAG,EAAE,+CAA+C;KACrD;CACF,CAAC"}
@@ -0,0 +1,11 @@
1
+ /** 开始使用能力的写处理(`chef.setup.init` 的初始化工作流)+ 本域独占的取数。
2
+ *
3
+ * 老件语义来源(只读对照):`scripts/开始使用/ops.py:57-72`(只读数表,不写库)与
4
+ * `scripts/开始使用/ops.py:186-235`(缺表则建,老库齐则跳过并提示迁移)。
5
+ * 新技能建库走 `openChefDb` 的幂等 `CREATE TABLE IF NOT EXISTS`(17 表),本函数只做判定与回执:
6
+ * 只在需要时建库建目录(开库即建),已齐则跳过并报已初始化。
7
+ */
8
+ import type { ChefDb } from '../fetch/db.js';
9
+ /** 跑 `chef.setup.init`:幂等初始化(开库即建表),回执报已初始化或本次建齐。 */
10
+ export declare function runSetupInit(handle: ChefDb): unknown;
11
+ //# sourceMappingURL=run-init.d.ts.map