skill-chef 0.3.1 → 0.3.12
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.d.ts +15 -0
- package/dist/add/commands.d.ts.map +1 -0
- package/dist/add/commands.js +22 -0
- package/dist/add/commands.js.map +1 -0
- package/dist/add/index.d.ts +11 -0
- package/dist/add/index.d.ts.map +1 -0
- package/dist/add/index.js +11 -0
- package/dist/add/index.js.map +1 -0
- 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 +11 -0
- package/dist/add/routes.d.ts.map +1 -0
- package/dist/add/routes.js +29 -0
- package/dist/add/routes.js.map +1 -0
- package/dist/add/run-write.d.ts +37 -0
- package/dist/add/run-write.d.ts.map +1 -0
- package/dist/add/run-write.js +226 -0
- package/dist/add/run-write.js.map +1 -0
- package/dist/cli/cmd_read.js +48 -289
- package/dist/cli/cmd_read.js.map +1 -1
- package/dist/cli/keys.d.ts +2 -1
- package/dist/cli/keys.d.ts.map +1 -1
- package/dist/cli/keys.js +49 -1
- package/dist/cli/keys.js.map +1 -1
- package/dist/cook/commands.d.ts +13 -0
- package/dist/cook/commands.d.ts.map +1 -0
- package/dist/cook/commands.js +21 -0
- package/dist/cook/commands.js.map +1 -0
- package/dist/cook/index.d.ts +10 -0
- package/dist/cook/index.d.ts.map +1 -0
- package/dist/cook/index.js +9 -0
- package/dist/cook/index.js.map +1 -0
- 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.d.ts +11 -0
- package/dist/cook/routes.d.ts.map +1 -0
- package/dist/cook/routes.js +35 -0
- package/dist/cook/routes.js.map +1 -0
- package/dist/cook/run.d.ts +79 -0
- package/dist/cook/run.d.ts.map +1 -0
- package/dist/cook/run.js +276 -0
- package/dist/cook/run.js.map +1 -0
- package/dist/data/commands.d.ts +11 -0
- package/dist/data/commands.d.ts.map +1 -0
- package/dist/data/commands.js +18 -0
- package/dist/data/commands.js.map +1 -0
- package/dist/data/index.d.ts +11 -0
- package/dist/data/index.d.ts.map +1 -0
- package/dist/data/index.js +11 -0
- package/dist/data/index.js.map +1 -0
- 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 +11 -0
- package/dist/data/routes.d.ts.map +1 -0
- package/dist/data/routes.js +17 -0
- package/dist/data/routes.js.map +1 -0
- 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 +14 -0
- package/dist/data/run-query.d.ts.map +1 -0
- package/dist/data/run-query.js +158 -0
- package/dist/data/run-query.js.map +1 -0
- package/dist/fetch/db.d.ts +11 -31
- package/dist/fetch/db.d.ts.map +1 -1
- package/dist/fetch/db.js +39 -328
- package/dist/fetch/db.js.map +1 -1
- package/dist/fetch/index.d.ts +7 -1
- package/dist/fetch/index.d.ts.map +1 -1
- package/dist/fetch/index.js +9 -1
- package/dist/fetch/index.js.map +1 -1
- package/dist/fetch/schema.d.ts +7 -0
- package/dist/fetch/schema.d.ts.map +1 -0
- package/dist/fetch/schema.js +53 -0
- package/dist/fetch/schema.js.map +1 -0
- 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/index.d.ts +3 -2
- package/dist/history/index.d.ts.map +1 -1
- package/dist/history/index.js +3 -2
- package/dist/history/index.js.map +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 +61 -0
- package/dist/history/run-query.d.ts.map +1 -0
- package/dist/history/run-query.js +130 -0
- package/dist/history/run-query.js.map +1 -0
- package/dist/history/run-record.d.ts +31 -0
- package/dist/history/run-record.d.ts.map +1 -0
- package/dist/history/run-record.js +85 -0
- package/dist/history/run-record.js.map +1 -0
- 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 +11 -0
- package/dist/relation/commands.d.ts.map +1 -0
- package/dist/relation/commands.js +26 -0
- package/dist/relation/commands.js.map +1 -0
- package/dist/relation/index.d.ts +11 -0
- package/dist/relation/index.d.ts.map +1 -0
- package/dist/relation/index.js +11 -0
- package/dist/relation/index.js.map +1 -0
- 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 +11 -0
- package/dist/relation/routes.d.ts.map +1 -0
- package/dist/relation/routes.js +29 -0
- package/dist/relation/routes.js.map +1 -0
- 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 +14 -1
- package/dist/render/index.d.ts.map +1 -1
- package/dist/render/index.js +16 -1
- 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/render/views.d.ts +1 -39
- package/dist/render/views.d.ts.map +1 -1
- package/dist/render/views.js +6 -56
- package/dist/render/views.js.map +1 -1
- package/dist/search/commands.d.ts +14 -0
- package/dist/search/commands.d.ts.map +1 -0
- package/dist/search/commands.js +22 -0
- package/dist/search/commands.js.map +1 -0
- package/dist/search/index.d.ts +9 -0
- package/dist/search/index.d.ts.map +1 -0
- package/dist/search/index.js +9 -0
- package/dist/search/index.js.map +1 -0
- package/dist/search/routes.d.ts +19 -0
- package/dist/search/routes.d.ts.map +1 -0
- package/dist/search/routes.js +91 -0
- package/dist/search/routes.js.map +1 -0
- package/dist/search/run.d.ts +30 -0
- package/dist/search/run.d.ts.map +1 -0
- package/dist/search/run.js +157 -0
- package/dist/search/run.js.map +1 -0
- package/dist/setup/commands.d.ts +10 -0
- package/dist/setup/commands.d.ts.map +1 -0
- package/dist/setup/commands.js +17 -0
- package/dist/setup/commands.js.map +1 -0
- package/dist/setup/index.d.ts +6 -0
- package/dist/setup/index.d.ts.map +1 -0
- package/dist/setup/index.js +6 -0
- package/dist/setup/index.js.map +1 -0
- 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 +9 -0
- package/dist/setup/routes.d.ts.map +1 -0
- package/dist/setup/routes.js +15 -0
- package/dist/setup/routes.js.map +1 -0
- 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 +44 -0
- package/dist/shared/command-spec.d.ts.map +1 -0
- package/dist/shared/command-spec.js +15 -0
- package/dist/shared/command-spec.js.map +1 -0
- package/dist/shared/slots.d.ts +24 -0
- package/dist/shared/slots.d.ts.map +1 -0
- package/dist/shared/slots.js +63 -0
- package/dist/shared/slots.js.map +1 -0
- package/dist/shopping/commands.d.ts +13 -0
- package/dist/shopping/commands.d.ts.map +1 -0
- package/dist/shopping/commands.js +21 -0
- package/dist/shopping/commands.js.map +1 -0
- package/dist/shopping/index.d.ts +10 -0
- package/dist/shopping/index.d.ts.map +1 -0
- package/dist/shopping/index.js +10 -0
- package/dist/shopping/index.js.map +1 -0
- 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.d.ts +11 -0
- package/dist/shopping/routes.d.ts.map +1 -0
- package/dist/shopping/routes.js +35 -0
- package/dist/shopping/routes.js.map +1 -0
- package/dist/shopping/run.d.ts +28 -0
- package/dist/shopping/run.d.ts.map +1 -0
- package/dist/shopping/run.js +122 -0
- package/dist/shopping/run.js.map +1 -0
- 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/commands.d.ts +12 -0
- package/dist/update/commands.d.ts.map +1 -0
- package/dist/update/commands.js +11 -0
- package/dist/update/commands.js.map +1 -0
- package/dist/update/index.d.ts +9 -0
- package/dist/update/index.d.ts.map +1 -0
- package/dist/update/index.js +9 -0
- package/dist/update/index.js.map +1 -0
- package/dist/update/routes.d.ts +14 -0
- package/dist/update/routes.d.ts.map +1 -0
- package/dist/update/routes.js +38 -0
- package/dist/update/routes.js.map +1 -0
- package/dist/update/run-write.d.ts +19 -0
- package/dist/update/run-write.d.ts.map +1 -0
- package/dist/update/run-write.js +309 -0
- package/dist/update/run-write.js.map +1 -0
- package/dist/view/commands.d.ts +14 -0
- package/dist/view/commands.d.ts.map +1 -0
- package/dist/view/commands.js +22 -0
- package/dist/view/commands.js.map +1 -0
- package/dist/view/index.d.ts +9 -0
- package/dist/view/index.d.ts.map +1 -0
- package/dist/view/index.js +9 -0
- package/dist/view/index.js.map +1 -0
- 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.d.ts +11 -0
- package/dist/view/routes.d.ts.map +1 -0
- package/dist/view/routes.js +53 -0
- package/dist/view/routes.js.map +1 -0
- package/dist/view/run.d.ts +17 -0
- package/dist/view/run.d.ts.map +1 -0
- package/dist/view/run.js +93 -0
- package/dist/view/run.js.map +1 -0
- package/package.json +3 -3
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pages.js","sourceRoot":"","sources":["../../src/history/pages.ts"],"names":[],"mappings":"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"}
|
package/dist/history/routes.d.ts
CHANGED
|
@@ -1,11 +1,9 @@
|
|
|
1
1
|
/** 历史能力的路由声明(唤醒词命中哪条命令,声明面唯一一处)。
|
|
2
2
|
*
|
|
3
|
-
*
|
|
4
|
-
* 进 `chef.history.record
|
|
5
|
-
* `order`
|
|
6
|
-
*
|
|
7
|
-
* 命令行写法照 `packages/skill-chef/SKILL.md` 同命令示例:需菜名的带菜名,
|
|
8
|
-
* 查统计与体检带 `kind`(空库可跑的那一行)。
|
|
3
|
+
* 七行对应 `src/policy/wakewords.ts` 里归历史的七句唤醒词:记录做菜/补录做菜/改评分
|
|
4
|
+
* 进 `chef.history.record`,查看历史/查看统计/体检/备份进 `chef.history.query`。
|
|
5
|
+
* `order` 取唤醒词表 1-based 下标(32–37),与全表同序;表序是唯一顺序事实源,本文件不另立顺序。
|
|
6
|
+
* 命令行写法照本表各条的槽位示例:需菜名的带菜名,查统计/体检/备份带 `kind`(空库可跑的那一行)。
|
|
9
7
|
*/
|
|
10
8
|
/** 历史能力一条路由声明。 */
|
|
11
9
|
export interface HistoryRouteDecl {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"routes.d.ts","sourceRoot":"","sources":["../../src/history/routes.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"routes.d.ts","sourceRoot":"","sources":["../../src/history/routes.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,kBAAkB;AAClB,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;CACtB;AAED,6BAA6B;AAC7B,eAAO,MAAM,cAAc,EAAE,SAAS,gBAAgB,EA6CrD,CAAC"}
|
package/dist/history/routes.js
CHANGED
|
@@ -1,49 +1,55 @@
|
|
|
1
1
|
/** 历史能力的路由声明(唤醒词命中哪条命令,声明面唯一一处)。
|
|
2
2
|
*
|
|
3
|
-
*
|
|
4
|
-
* 进 `chef.history.record
|
|
5
|
-
* `order`
|
|
6
|
-
*
|
|
7
|
-
* 命令行写法照 `packages/skill-chef/SKILL.md` 同命令示例:需菜名的带菜名,
|
|
8
|
-
* 查统计与体检带 `kind`(空库可跑的那一行)。
|
|
3
|
+
* 七行对应 `src/policy/wakewords.ts` 里归历史的七句唤醒词:记录做菜/补录做菜/改评分
|
|
4
|
+
* 进 `chef.history.record`,查看历史/查看统计/体检/备份进 `chef.history.query`。
|
|
5
|
+
* `order` 取唤醒词表 1-based 下标(32–37),与全表同序;表序是唯一顺序事实源,本文件不另立顺序。
|
|
6
|
+
* 命令行写法照本表各条的槽位示例:需菜名的带菜名,查统计/体检/备份带 `kind`(空库可跑的那一行)。
|
|
9
7
|
*/
|
|
10
8
|
/** 历史能力的路由声明表:恰好导出一个声明数组。 */
|
|
11
9
|
export const HISTORY_ROUTES = [
|
|
12
10
|
{
|
|
13
|
-
order:
|
|
11
|
+
order: 32,
|
|
14
12
|
wakeWord: '记录做菜',
|
|
15
13
|
key: 'chef.history.record',
|
|
16
|
-
cli: 'chef-cmd-read chef.history.record --params \'{"name":"
|
|
14
|
+
cli: 'chef-cmd-read chef.history.record --params \'{"name":"辣椒炒肉"}\'',
|
|
17
15
|
},
|
|
18
16
|
{
|
|
19
|
-
order:
|
|
17
|
+
order: 33,
|
|
20
18
|
wakeWord: '补录做菜',
|
|
21
19
|
key: 'chef.history.record',
|
|
22
|
-
cli: 'chef-cmd-read chef.history.record --params \'{"name":"
|
|
20
|
+
cli: 'chef-cmd-read chef.history.record --params \'{"name":"辣椒炒肉"}\'',
|
|
23
21
|
},
|
|
24
22
|
{
|
|
25
|
-
order:
|
|
23
|
+
order: 34,
|
|
26
24
|
wakeWord: '改评分',
|
|
27
25
|
key: 'chef.history.record',
|
|
28
|
-
cli: 'chef-cmd-read chef.history.record --params \'{"name":"
|
|
26
|
+
cli: 'chef-cmd-read chef.history.record --params \'{"name":"辣椒炒肉"}\'',
|
|
29
27
|
},
|
|
30
28
|
{
|
|
31
|
-
order:
|
|
29
|
+
order: 35,
|
|
32
30
|
wakeWord: '查看历史',
|
|
33
31
|
key: 'chef.history.query',
|
|
34
|
-
cli: 'chef-cmd-read chef.history.query --params \'{"name":"
|
|
32
|
+
cli: 'chef-cmd-read chef.history.query --params \'{"name":"辣椒炒肉"}\'',
|
|
35
33
|
},
|
|
36
34
|
{
|
|
37
|
-
order:
|
|
35
|
+
order: 36,
|
|
38
36
|
wakeWord: '查看统计',
|
|
39
37
|
key: 'chef.history.query',
|
|
40
38
|
cli: 'chef-cmd-read chef.history.query --params \'{"kind":"stats"}\'',
|
|
41
39
|
},
|
|
42
40
|
{
|
|
43
|
-
order:
|
|
41
|
+
order: 37,
|
|
44
42
|
wakeWord: '体检',
|
|
45
43
|
key: 'chef.history.query',
|
|
46
44
|
cli: 'chef-cmd-read chef.history.query --params \'{"kind":"quality"}\'',
|
|
47
45
|
},
|
|
46
|
+
{
|
|
47
|
+
// #841 追加:`备份`沿用本命令 `kind: 'backup'`(页面装配住数据管理域,事实是本技能的查询语义;
|
|
48
|
+
// 故这条只在本域声明一处,`src/data/routes.ts` 不再重复一行——一份事实一个落点)。
|
|
49
|
+
order: 50,
|
|
50
|
+
wakeWord: '备份',
|
|
51
|
+
key: 'chef.history.query',
|
|
52
|
+
cli: 'chef-cmd-read chef.history.query --params \'{"kind":"backup"}\'',
|
|
53
|
+
},
|
|
48
54
|
];
|
|
49
55
|
//# sourceMappingURL=routes.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"routes.js","sourceRoot":"","sources":["../../src/history/routes.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"routes.js","sourceRoot":"","sources":["../../src/history/routes.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAUH,6BAA6B;AAC7B,MAAM,CAAC,MAAM,cAAc,GAAgC;IACzD;QACE,KAAK,EAAE,EAAE;QACT,QAAQ,EAAE,MAAM;QAChB,GAAG,EAAE,qBAAqB;QAC1B,GAAG,EAAE,gEAAgE;KACtE;IACD;QACE,KAAK,EAAE,EAAE;QACT,QAAQ,EAAE,MAAM;QAChB,GAAG,EAAE,qBAAqB;QAC1B,GAAG,EAAE,gEAAgE;KACtE;IACD;QACE,KAAK,EAAE,EAAE;QACT,QAAQ,EAAE,KAAK;QACf,GAAG,EAAE,qBAAqB;QAC1B,GAAG,EAAE,gEAAgE;KACtE;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,gEAAgE;KACtE;IACD;QACE,KAAK,EAAE,EAAE;QACT,QAAQ,EAAE,IAAI;QACd,GAAG,EAAE,oBAAoB;QACzB,GAAG,EAAE,kEAAkE;KACxE;IACD;QACE,6DAA6D;QAC7D,sDAAsD;QACtD,KAAK,EAAE,EAAE;QACT,QAAQ,EAAE,IAAI;QACd,GAAG,EAAE,oBAAoB;QACzB,GAAG,EAAE,iEAAiE;KACvE;CACF,CAAC"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
/** 历史能力的查处理(`chef.history.query` 的 timeline/stats 两 kind)+ 本域独占的行装配。
|
|
2
|
+
*
|
|
3
|
+
* 老分派层(`src/cli/cmd_read.ts`)`chef.history.query` 分支中 timeline/stats 两路逐字节下沉:
|
|
4
|
+
* 只改 import 出处,判定与装配一字不动。quality/backup 两路住数据管理域
|
|
5
|
+
* (`src/data/run-query.ts`);kind 路由由入口注册表做(非法 kind 入口已拦,落不到这里)。
|
|
6
|
+
* `toHistoryItem`(原 `src/render/views.ts`)只被本域调用,随行搬入;旧址改转出(搬迁债务)。
|
|
7
|
+
*
|
|
8
|
+
* 本票新增(仍本域独占,不碰 `src/fetch/db.ts`):
|
|
9
|
+
* · 时间线按 `cook_date` 倒序(老件 `history_manager.py list` 的 `ORDER BY cook_date DESC`;
|
|
10
|
+
* 同日按 `cook_sequence` 倒序);
|
|
11
|
+
* · 单菜统计全指标(老件 `stats`:总次数/均分/最高/最低/最近日期);
|
|
12
|
+
* · 全局画像(老件 `global_stats` 单查询口径:做过几道/总次数/最爱均分最高与做得最多/
|
|
13
|
+
* 最近 5/没做过;本票定案:歧义已与老件对账消除,不另立裁定票)。
|
|
14
|
+
*/
|
|
15
|
+
import type { ChefDb, HistoryRow } from '../fetch/db.js';
|
|
16
|
+
/** 历史行+菜名拼条目。原 `src/render/views.ts`,本域独占。 */
|
|
17
|
+
export declare function toHistoryItem(h: HistoryRow, recipeName?: string): Record<string, unknown>;
|
|
18
|
+
/** 单菜统计全指标(老件 `stats` 口径:总次数/均分/最高/最低/最近日期;无记录则后四项为 null)。 */
|
|
19
|
+
export interface HistorySingleStats {
|
|
20
|
+
readonly count: number;
|
|
21
|
+
readonly avgRating: number | null;
|
|
22
|
+
readonly maxRating: number | null;
|
|
23
|
+
readonly minRating: number | null;
|
|
24
|
+
readonly lastDate: string | null;
|
|
25
|
+
}
|
|
26
|
+
/** 取一道菜的统计全指标(单 SQL 聚合,与老件 `stats` 同口径)。 */
|
|
27
|
+
export declare function historySingleStats(handle: ChefDb, recipeId: string): HistorySingleStats;
|
|
28
|
+
/** 全局画像(老件 `global_stats` 画像版口径:做过几道/总次数/菜总数/最爱两项/最近 5/没做过)。 */
|
|
29
|
+
export interface HistoryGlobalPortrait {
|
|
30
|
+
readonly cookedCount: number;
|
|
31
|
+
readonly neverCookedCount: number;
|
|
32
|
+
readonly totalCooks: number;
|
|
33
|
+
readonly recipeTotal: number;
|
|
34
|
+
readonly favoriteAvg: {
|
|
35
|
+
name: string;
|
|
36
|
+
avgRating: number;
|
|
37
|
+
times: number;
|
|
38
|
+
} | null;
|
|
39
|
+
readonly favoriteMost: {
|
|
40
|
+
name: string;
|
|
41
|
+
times: number;
|
|
42
|
+
avgRating: number | null;
|
|
43
|
+
} | null;
|
|
44
|
+
readonly recent: ReadonlyArray<{
|
|
45
|
+
name: string;
|
|
46
|
+
lastDate: string;
|
|
47
|
+
avgRating: number | null;
|
|
48
|
+
}>;
|
|
49
|
+
readonly neverCooked: ReadonlyArray<string>;
|
|
50
|
+
readonly perRecipe: ReadonlyArray<{
|
|
51
|
+
id: string;
|
|
52
|
+
name: string;
|
|
53
|
+
count: number;
|
|
54
|
+
avgRating: number | null;
|
|
55
|
+
}>;
|
|
56
|
+
}
|
|
57
|
+
/** 取全局画像(单查询聚合 `recipes` 全表+`recipe_history`,与老件 `global-stats` 同口径)。 */
|
|
58
|
+
export declare function historyGlobalPortrait(handle: ChefDb): HistoryGlobalPortrait;
|
|
59
|
+
/** 跑 `chef.history.query` 的 timeline/stats:`kind` 由入口注册表算好下传,本函数只做本域两路分支。 */
|
|
60
|
+
export declare function runHistoryQuery(handle: ChefDb, params: Record<string, unknown>, kind: string): unknown;
|
|
61
|
+
//# sourceMappingURL=run-query.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run-query.d.ts","sourceRoot":"","sources":["../../src/history/run-query.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAMzD,8CAA8C;AAC9C,wBAAgB,aAAa,CAAC,CAAC,EAAE,UAAU,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAIzF;AAED,8DAA8D;AAC9D,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;CAClC;AAED,4CAA4C;AAC5C,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,kBAAkB,CAgBvF;AAWD,gEAAgE;AAChE,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,WAAW,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IAChF,QAAQ,CAAC,YAAY,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,GAAG,IAAI,CAAC;IACxF,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAC,CAAC;IAC7F,QAAQ,CAAC,WAAW,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IAC5C,QAAQ,CAAC,SAAS,EAAE,aAAa,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAC,CAAC;CAC1G;AAED,yEAAyE;AACzE,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG,qBAAqB,CAkD3E;AAQD,6EAA6E;AAC7E,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAiCtG"}
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
/** 历史能力的查处理(`chef.history.query` 的 timeline/stats 两 kind)+ 本域独占的行装配。
|
|
2
|
+
*
|
|
3
|
+
* 老分派层(`src/cli/cmd_read.ts`)`chef.history.query` 分支中 timeline/stats 两路逐字节下沉:
|
|
4
|
+
* 只改 import 出处,判定与装配一字不动。quality/backup 两路住数据管理域
|
|
5
|
+
* (`src/data/run-query.ts`);kind 路由由入口注册表做(非法 kind 入口已拦,落不到这里)。
|
|
6
|
+
* `toHistoryItem`(原 `src/render/views.ts`)只被本域调用,随行搬入;旧址改转出(搬迁债务)。
|
|
7
|
+
*
|
|
8
|
+
* 本票新增(仍本域独占,不碰 `src/fetch/db.ts`):
|
|
9
|
+
* · 时间线按 `cook_date` 倒序(老件 `history_manager.py list` 的 `ORDER BY cook_date DESC`;
|
|
10
|
+
* 同日按 `cook_sequence` 倒序);
|
|
11
|
+
* · 单菜统计全指标(老件 `stats`:总次数/均分/最高/最低/最近日期);
|
|
12
|
+
* · 全局画像(老件 `global_stats` 单查询口径:做过几道/总次数/最爱均分最高与做得最多/
|
|
13
|
+
* 最近 5/没做过;本票定案:歧义已与老件对账消除,不另立裁定票)。
|
|
14
|
+
*/
|
|
15
|
+
import { getRecipeDetail, mustRecipe, qAll, qGet, queryHistory } from '../fetch/db.js';
|
|
16
|
+
import { ChefPolicyError } from '../fetch/errors.js';
|
|
17
|
+
import { buildHistoryQuery } from '../render/index.js';
|
|
18
|
+
import { needName } from '../policy/index.js';
|
|
19
|
+
/** 历史行+菜名拼条目。原 `src/render/views.ts`,本域独占。 */
|
|
20
|
+
export function toHistoryItem(h, recipeName) {
|
|
21
|
+
const out = { ...h };
|
|
22
|
+
if (recipeName !== undefined)
|
|
23
|
+
out.recipe_name = recipeName;
|
|
24
|
+
return out;
|
|
25
|
+
}
|
|
26
|
+
/** 取一道菜的统计全指标(单 SQL 聚合,与老件 `stats` 同口径)。 */
|
|
27
|
+
export function historySingleStats(handle, recipeId) {
|
|
28
|
+
const recipe = mustRecipe(handle, recipeId);
|
|
29
|
+
const row = qGet(handle, 'SELECT COUNT(*) AS c, AVG(rating) AS a, MAX(rating) AS hi, MIN(rating) AS lo, MAX(cook_date) AS last FROM recipe_history WHERE recipe_id = ?', [recipe.id]);
|
|
30
|
+
const numOrNull = (v) => v === null || v === undefined ? null : Number(v);
|
|
31
|
+
return {
|
|
32
|
+
count: Number(row?.c ?? 0),
|
|
33
|
+
avgRating: numOrNull(row?.a),
|
|
34
|
+
maxRating: numOrNull(row?.hi),
|
|
35
|
+
minRating: numOrNull(row?.lo),
|
|
36
|
+
lastDate: row?.last ?? null,
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
/** 取全局画像(单查询聚合 `recipes` 全表+`recipe_history`,与老件 `global-stats` 同口径)。 */
|
|
40
|
+
export function historyGlobalPortrait(handle) {
|
|
41
|
+
const rows = qAll(handle, 'SELECT r.id AS recipe_id, r.name AS recipe_name, COUNT(h.id) AS cook_count, AVG(h.rating) AS avg_rating, MAX(h.cook_date) AS last_date ' +
|
|
42
|
+
'FROM recipes r LEFT JOIN recipe_history h ON h.recipe_id = r.id GROUP BY r.id ORDER BY r.name ASC');
|
|
43
|
+
const cooked = [];
|
|
44
|
+
const neverCooked = [];
|
|
45
|
+
for (const r of rows) {
|
|
46
|
+
const count = Number(r.cook_count ?? 0);
|
|
47
|
+
if (count > 0) {
|
|
48
|
+
cooked.push({
|
|
49
|
+
recipeId: String(r.recipe_id),
|
|
50
|
+
recipeName: String(r.recipe_name),
|
|
51
|
+
cookCount: count,
|
|
52
|
+
avgRating: r.avg_rating === null || r.avg_rating === undefined ? null : Number(r.avg_rating),
|
|
53
|
+
lastDate: r.last_date ?? null,
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
else {
|
|
57
|
+
neverCooked.push(String(r.recipe_name));
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
const round2 = (v) => Math.round(v * 100) / 100;
|
|
61
|
+
const totalCooks = cooked.reduce((s, r) => s + r.cookCount, 0);
|
|
62
|
+
const rated = cooked.filter((r) => r.avgRating !== null);
|
|
63
|
+
const topAvg = rated.length ? rated.reduce((a, b) => b.avgRating > a.avgRating ? b : a) : null;
|
|
64
|
+
const topMost = cooked.length ? cooked.reduce((a, b) => (b.cookCount > a.cookCount ? b : a)) : null;
|
|
65
|
+
const recent = [...cooked]
|
|
66
|
+
.sort((a, b) => String(b.lastDate ?? '').localeCompare(String(a.lastDate ?? '')))
|
|
67
|
+
.slice(0, 5)
|
|
68
|
+
.map((r) => ({ name: r.recipeName, lastDate: r.lastDate, avgRating: r.avgRating === null ? null : round2(r.avgRating) }));
|
|
69
|
+
return {
|
|
70
|
+
cookedCount: cooked.length,
|
|
71
|
+
neverCookedCount: neverCooked.length,
|
|
72
|
+
totalCooks,
|
|
73
|
+
recipeTotal: rows.length,
|
|
74
|
+
favoriteAvg: topAvg
|
|
75
|
+
? { name: topAvg.recipeName, avgRating: round2(topAvg.avgRating), times: topAvg.cookCount }
|
|
76
|
+
: null,
|
|
77
|
+
favoriteMost: topMost
|
|
78
|
+
? {
|
|
79
|
+
name: topMost.recipeName,
|
|
80
|
+
times: topMost.cookCount,
|
|
81
|
+
avgRating: topMost.avgRating === null ? null : round2(topMost.avgRating),
|
|
82
|
+
}
|
|
83
|
+
: null,
|
|
84
|
+
recent,
|
|
85
|
+
neverCooked: [...neverCooked].sort((a, b) => (a < b ? -1 : a > b ? 1 : 0)),
|
|
86
|
+
perRecipe: cooked.map((r) => ({ id: r.recipeId, name: r.recipeName, count: r.cookCount, avgRating: r.avgRating })),
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
/** 按时间倒序排历史行(`cook_date` 倒序,同日按 `cook_sequence` 倒序;老件 timeline 口径)。 */
|
|
90
|
+
function byTimeDesc(a, b) {
|
|
91
|
+
if (a.cook_date !== b.cook_date)
|
|
92
|
+
return a.cook_date < b.cook_date ? 1 : -1;
|
|
93
|
+
return b.cook_sequence - a.cook_sequence;
|
|
94
|
+
}
|
|
95
|
+
/** 跑 `chef.history.query` 的 timeline/stats:`kind` 由入口注册表算好下传,本函数只做本域两路分支。 */
|
|
96
|
+
export function runHistoryQuery(handle, params, kind) {
|
|
97
|
+
if (kind === 'timeline') {
|
|
98
|
+
const name = needName(params);
|
|
99
|
+
const detail = getRecipeDetail(handle, name);
|
|
100
|
+
const rows = queryHistory(handle, detail.recipe.id).sort(byTimeDesc);
|
|
101
|
+
return buildHistoryQuery('timeline:' + detail.recipe.name, rows.map((h) => toHistoryItem(h, detail.recipe.name)));
|
|
102
|
+
}
|
|
103
|
+
if (kind === 'stats') {
|
|
104
|
+
const name = params.name;
|
|
105
|
+
if (typeof name === 'string' && name.trim()) {
|
|
106
|
+
const detail = getRecipeDetail(handle, name.trim());
|
|
107
|
+
const st = historySingleStats(handle, detail.recipe.id);
|
|
108
|
+
return buildHistoryQuery('stats:' + detail.recipe.name, [
|
|
109
|
+
{ name: detail.recipe.name, count: st.count, avgRating: st.avgRating, maxRating: st.maxRating, minRating: st.minRating, lastDate: st.lastDate },
|
|
110
|
+
]);
|
|
111
|
+
}
|
|
112
|
+
const portrait = historyGlobalPortrait(handle);
|
|
113
|
+
return buildHistoryQuery('stats:all', [
|
|
114
|
+
{
|
|
115
|
+
cookedCount: portrait.cookedCount,
|
|
116
|
+
neverCookedCount: portrait.neverCookedCount,
|
|
117
|
+
totalCooks: portrait.totalCooks,
|
|
118
|
+
recipeTotal: portrait.recipeTotal,
|
|
119
|
+
favoriteAvg: portrait.favoriteAvg,
|
|
120
|
+
favoriteMost: portrait.favoriteMost,
|
|
121
|
+
recent: portrait.recent,
|
|
122
|
+
neverCooked: portrait.neverCooked,
|
|
123
|
+
perRecipe: portrait.perRecipe,
|
|
124
|
+
},
|
|
125
|
+
]);
|
|
126
|
+
}
|
|
127
|
+
// 不可达:入口注册表已拦过非法 kind(原文分支尾 fail(2) 同报文,归用法错 exit 2)。
|
|
128
|
+
throw new ChefPolicyError('POLICY_BAD_INPUT', 'history.query 只接受 kind=timeline/stats/quality/backup');
|
|
129
|
+
}
|
|
130
|
+
//# sourceMappingURL=run-query.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run-query.js","sourceRoot":"","sources":["../../src/history/run-query.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/** 历史能力的写处理(`chef.history.record`)+ 本域独占的取数与回执装配。
|
|
2
|
+
*
|
|
3
|
+
* 老分派层(`src/cli/cmd_read.ts`)分支逐字节下沉:只改 import 出处,判定与装配一字不动。
|
|
4
|
+
* `recordHistory`(原 `src/fetch/db.ts`)与 `buildHistoryRecord`(原 `src/render/views.ts`)
|
|
5
|
+
* 只被本域调用,按“写不出的留回域目录”搬入本文件;旧址改转出(搬迁债务,见对应 index)。
|
|
6
|
+
*/
|
|
7
|
+
import type { ChefDb, HistoryRow } from '../fetch/db.js';
|
|
8
|
+
/** 记一次做菜(评分必填+反馈必填禁占位:老库 rating NOT NULL,缺值直接拦)。原 `src/fetch/db.ts`,本域独占。
|
|
9
|
+
*
|
|
10
|
+
* 反馈口径见 `./validate.ts`(老仓 `scenes/历史.yaml:56`:必填真实内容、禁「无」占位)。
|
|
11
|
+
* 日期缺省今天(同 `./validate.ts` 的 `validateCookDate`,本文件不再自备 today)。
|
|
12
|
+
*/
|
|
13
|
+
export declare function recordHistory(h: ChefDb, input: {
|
|
14
|
+
recipe_id: string;
|
|
15
|
+
rating?: number | null;
|
|
16
|
+
feedback?: string;
|
|
17
|
+
cook_date?: string;
|
|
18
|
+
}): HistoryRow;
|
|
19
|
+
export declare function buildHistoryRecord(message: string): {
|
|
20
|
+
ok: boolean;
|
|
21
|
+
message: string;
|
|
22
|
+
};
|
|
23
|
+
/** 跑 `chef.history.record`:定位母菜+评分校验+反馈校验+落历史(receipt 形)。
|
|
24
|
+
*
|
|
25
|
+
* 参数:`name` 必填;`rating` 0-5 数字(818 定案甲:缺评分不写历史,取数层抛
|
|
26
|
+
* `CHEF_BAD_QUERY` 即 CLI exit 4);`feedback` 必填真实内容禁占位(口径错 exit 2);
|
|
27
|
+
* 补录日期 `date`(`cook_date` 作兼容别名,老件 `--cook_date` 同名),缺省今天。
|
|
28
|
+
* 「改评分」唤醒词走同一条记录路径(路由见 `./routes.ts:33-38`):记一次新的做菜记录。
|
|
29
|
+
*/
|
|
30
|
+
export declare function runHistoryRecord(handle: ChefDb, params: Record<string, unknown>): unknown;
|
|
31
|
+
//# sourceMappingURL=run-record.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run-record.d.ts","sourceRoot":"","sources":["../../src/history/run-record.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAKzD;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,UAAU,CA8BhJ;AAGD,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG;IAAE,EAAE,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAEpF;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAiBzF"}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
/** 历史能力的写处理(`chef.history.record`)+ 本域独占的取数与回执装配。
|
|
2
|
+
*
|
|
3
|
+
* 老分派层(`src/cli/cmd_read.ts`)分支逐字节下沉:只改 import 出处,判定与装配一字不动。
|
|
4
|
+
* `recordHistory`(原 `src/fetch/db.ts`)与 `buildHistoryRecord`(原 `src/render/views.ts`)
|
|
5
|
+
* 只被本域调用,按“写不出的留回域目录”搬入本文件;旧址改转出(搬迁债务,见对应 index)。
|
|
6
|
+
*/
|
|
7
|
+
import { randomUUID } from 'node:crypto';
|
|
8
|
+
import { ChefFetchError } from '../fetch/errors.js';
|
|
9
|
+
import { getRecipeDetail, mustRecipe, now, qGet, qRun, toHistory } from '../fetch/db.js';
|
|
10
|
+
import { needName, validateRating } from '../policy/index.js';
|
|
11
|
+
import { validateCookDate, validateFeedback } from './validate.js';
|
|
12
|
+
/** 记一次做菜(评分必填+反馈必填禁占位:老库 rating NOT NULL,缺值直接拦)。原 `src/fetch/db.ts`,本域独占。
|
|
13
|
+
*
|
|
14
|
+
* 反馈口径见 `./validate.ts`(老仓 `scenes/历史.yaml:56`:必填真实内容、禁「无」占位)。
|
|
15
|
+
* 日期缺省今天(同 `./validate.ts` 的 `validateCookDate`,本文件不再自备 today)。
|
|
16
|
+
*/
|
|
17
|
+
export function recordHistory(h, input) {
|
|
18
|
+
const rid = typeof input?.recipe_id === 'string' ? input.recipe_id.trim() : '';
|
|
19
|
+
if (!rid)
|
|
20
|
+
throw new ChefFetchError('CHEF_BAD_QUERY', '记录做菜须给 recipe_id');
|
|
21
|
+
const recipe = mustRecipe(h, rid);
|
|
22
|
+
let rating = null;
|
|
23
|
+
const rawRt = input.rating;
|
|
24
|
+
// 818 定案(甲):老库 rating REAL NOT NULL,本次不改 schema;卡面“选填”暂改“必填”,缺评分不写历史,直接拦下。
|
|
25
|
+
if (rawRt === undefined || rawRt === null || rawRt === '')
|
|
26
|
+
throw new ChefFetchError('CHEF_BAD_QUERY', '记录做菜须给评分 rating(0-5 数字;老库 NOT NULL,未评分请先问用户要分)');
|
|
27
|
+
{
|
|
28
|
+
// 空串/纯空白同样按「没给」处理(与 `recordHistory` 同口径:一份缺值只认一个定义地)。
|
|
29
|
+
const n = typeof rawRt === 'string' ? (rawRt.trim() === '' ? rawRt : Number(rawRt.trim())) : rawRt;
|
|
30
|
+
if (typeof n !== 'number' || !Number.isFinite(n))
|
|
31
|
+
throw new ChefFetchError('CHEF_BAD_QUERY', '记录做菜须给评分 rating(0-5 数字;老库 NOT NULL,未评分请先问用户要分)');
|
|
32
|
+
if (n < 0 || n > 5)
|
|
33
|
+
throw new ChefFetchError('CHEF_HISTORY_CORRUPT', '评分须在 0-5 内');
|
|
34
|
+
rating = n;
|
|
35
|
+
}
|
|
36
|
+
const cookDate = validateCookDate(input.cook_date);
|
|
37
|
+
const feedback = validateFeedback(input.feedback);
|
|
38
|
+
const maxRow = qGet(h, 'SELECT MAX(cook_sequence) AS m FROM recipe_history WHERE recipe_id = ?', [recipe.id]);
|
|
39
|
+
const seq = (maxRow?.m ?? 0) + 1;
|
|
40
|
+
const id = randomUUID();
|
|
41
|
+
try {
|
|
42
|
+
qRun(h, 'INSERT INTO recipe_history (id, recipe_id, cook_date, cook_sequence, rating, feedback) VALUES (?, ?, ?, ?, ?, ?)', [id, recipe.id, cookDate, seq, rating, feedback]);
|
|
43
|
+
if (recipe.status === '未做')
|
|
44
|
+
qRun(h, 'UPDATE recipes SET status = ?, updated_at = ? WHERE id = ?', ['已做', now(), recipe.id]);
|
|
45
|
+
}
|
|
46
|
+
catch (e) {
|
|
47
|
+
if (e instanceof ChefFetchError)
|
|
48
|
+
throw e;
|
|
49
|
+
throw new ChefFetchError('CHEF_DB_UNREADABLE', '历史写盘失败', { cause: e });
|
|
50
|
+
}
|
|
51
|
+
const row = qGet(h, 'SELECT * FROM recipe_history WHERE id = ?', [id]);
|
|
52
|
+
if (!row)
|
|
53
|
+
throw new ChefFetchError('CHEF_HISTORY_CORRUPT', '历史写后读回失败');
|
|
54
|
+
return toHistory(row);
|
|
55
|
+
}
|
|
56
|
+
// 记做菜回执 receipt。原 `src/render/views.ts`,本域独占。
|
|
57
|
+
export function buildHistoryRecord(message) {
|
|
58
|
+
return { ok: true, message };
|
|
59
|
+
}
|
|
60
|
+
/** 跑 `chef.history.record`:定位母菜+评分校验+反馈校验+落历史(receipt 形)。
|
|
61
|
+
*
|
|
62
|
+
* 参数:`name` 必填;`rating` 0-5 数字(818 定案甲:缺评分不写历史,取数层抛
|
|
63
|
+
* `CHEF_BAD_QUERY` 即 CLI exit 4);`feedback` 必填真实内容禁占位(口径错 exit 2);
|
|
64
|
+
* 补录日期 `date`(`cook_date` 作兼容别名,老件 `--cook_date` 同名),缺省今天。
|
|
65
|
+
* 「改评分」唤醒词走同一条记录路径(路由见 `./routes.ts:33-38`):记一次新的做菜记录。
|
|
66
|
+
*/
|
|
67
|
+
export function runHistoryRecord(handle, params) {
|
|
68
|
+
const name = needName(params);
|
|
69
|
+
const detail = getRecipeDetail(handle, name);
|
|
70
|
+
let rating = null;
|
|
71
|
+
if (params.rating !== undefined) {
|
|
72
|
+
const raw = params.rating;
|
|
73
|
+
// 空串/纯空白=「用户啥也没填」,与「键不传」同义(#853 契约:缺评分 → 取数失败档 4 且点名 rating)。
|
|
74
|
+
// 不这么归一,`rating: ''` 会先撞口径校验(`validateRating` 只认数字 ⇒ exit 2「缺槽位」),
|
|
75
|
+
// 同一个场景因「空串 vs 不传」分叉成两种错误档——同一件事两个定义地。
|
|
76
|
+
const blank = typeof raw === 'string' && raw.trim() === '';
|
|
77
|
+
rating = blank ? null : validateRating(typeof raw === 'string' ? Number(raw.trim()) : raw);
|
|
78
|
+
}
|
|
79
|
+
const feedback = validateFeedback(params.feedback);
|
|
80
|
+
const dateRaw = params.date === undefined ? params.cook_date : params.date;
|
|
81
|
+
const cookDate = validateCookDate(dateRaw);
|
|
82
|
+
const h = recordHistory(handle, { recipe_id: detail.recipe.id, rating, feedback, cook_date: cookDate });
|
|
83
|
+
return buildHistoryRecord('已记录做菜:' + detail.recipe.name + '(' + h.cook_date + (rating !== null ? ',评分 ' + rating : '') + ')');
|
|
84
|
+
}
|
|
85
|
+
//# sourceMappingURL=run-record.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run-record.js","sourceRoot":"","sources":["../../src/history/run-record.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/** 历史域独占的写参校验(反馈必填禁占位+补录日期)。
|
|
2
|
+
*
|
|
3
|
+
* 本域独占:只有 `chef.history.record` 一条写路径在用(`run-record.ts` 的
|
|
4
|
+
* 入口校验与落库门)。第二个用法出现前不进共用位(结构标准:共用位从
|
|
5
|
+
* 第二个用法里长出来)。
|
|
6
|
+
*
|
|
7
|
+
* 口径出处:
|
|
8
|
+
* · 反馈必填真实内容、禁「无」占位:老仓 `scenes/历史.yaml:56`
|
|
9
|
+
* (`feedback: 一句话反馈(必填真实内容,禁「无」占位)`)+ 本票验收
|
|
10
|
+
* 反例(`feedback` 为「无」必须拦下并 exit≠0)。
|
|
11
|
+
* · 占位词表:老件 `scripts/validators.py` 的 `PLACEHOLDER_STRINGS`
|
|
12
|
+
* 13 种 + 本域加 1 种「无」(精确匹配,不做子串判断——
|
|
13
|
+
* 「无敌好吃」这类真反馈必须放行)。
|
|
14
|
+
* · 日期:老件 `history_manager.py add` 的 `--cook_date`(`YYYY-MM-DD`,
|
|
15
|
+
* 缺省今天);新命令面收 `date`(见本域 `routes.ts` 与 `SKILL.md`),
|
|
16
|
+
* `cook_date` 作兼容别名由调用方归一后传入。
|
|
17
|
+
*/
|
|
18
|
+
/** 校验一条做菜反馈:非空真实内容、禁占位词。非法一律抛口径错(CLI exit 2)。 */
|
|
19
|
+
export declare function validateFeedback(raw: unknown): string;
|
|
20
|
+
/** 校验补录日期:`YYYY-MM-DD` 真日期;缺省(`undefined`/空串)即今天。 */
|
|
21
|
+
export declare function validateCookDate(raw: unknown): string;
|
|
22
|
+
//# sourceMappingURL=validate.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../../src/history/validate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAuBH,iDAAiD;AACjD,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,CASrD;AAOD,qDAAqD;AACrD,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,CAgBrD"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
/** 历史域独占的写参校验(反馈必填禁占位+补录日期)。
|
|
2
|
+
*
|
|
3
|
+
* 本域独占:只有 `chef.history.record` 一条写路径在用(`run-record.ts` 的
|
|
4
|
+
* 入口校验与落库门)。第二个用法出现前不进共用位(结构标准:共用位从
|
|
5
|
+
* 第二个用法里长出来)。
|
|
6
|
+
*
|
|
7
|
+
* 口径出处:
|
|
8
|
+
* · 反馈必填真实内容、禁「无」占位:老仓 `scenes/历史.yaml:56`
|
|
9
|
+
* (`feedback: 一句话反馈(必填真实内容,禁「无」占位)`)+ 本票验收
|
|
10
|
+
* 反例(`feedback` 为「无」必须拦下并 exit≠0)。
|
|
11
|
+
* · 占位词表:老件 `scripts/validators.py` 的 `PLACEHOLDER_STRINGS`
|
|
12
|
+
* 13 种 + 本域加 1 种「无」(精确匹配,不做子串判断——
|
|
13
|
+
* 「无敌好吃」这类真反馈必须放行)。
|
|
14
|
+
* · 日期:老件 `history_manager.py add` 的 `--cook_date`(`YYYY-MM-DD`,
|
|
15
|
+
* 缺省今天);新命令面收 `date`(见本域 `routes.ts` 与 `SKILL.md`),
|
|
16
|
+
* `cook_date` 作兼容别名由调用方归一后传入。
|
|
17
|
+
*/
|
|
18
|
+
import { ChefPolicyError } from '../fetch/errors.js';
|
|
19
|
+
/** 反馈占位词(精确匹配,调用方先去首尾空白):老件 13 种 + 本域「无」系 3 种。 */
|
|
20
|
+
const FEEDBACK_PLACEHOLDERS = [
|
|
21
|
+
'未知',
|
|
22
|
+
'未提供',
|
|
23
|
+
'不详',
|
|
24
|
+
'未填',
|
|
25
|
+
'n/a',
|
|
26
|
+
'N/A',
|
|
27
|
+
'null',
|
|
28
|
+
'None',
|
|
29
|
+
'暂时不知道',
|
|
30
|
+
'不知道',
|
|
31
|
+
'我没数据',
|
|
32
|
+
'-',
|
|
33
|
+
'无',
|
|
34
|
+
'无反馈',
|
|
35
|
+
'(无反馈)',
|
|
36
|
+
];
|
|
37
|
+
/** 校验一条做菜反馈:非空真实内容、禁占位词。非法一律抛口径错(CLI exit 2)。 */
|
|
38
|
+
export function validateFeedback(raw) {
|
|
39
|
+
if (typeof raw !== 'string' || !raw.trim()) {
|
|
40
|
+
throw new ChefPolicyError('POLICY_BAD_INPUT', '记录做菜须给反馈 feedback(一句话真实反馈,禁「无」占位)');
|
|
41
|
+
}
|
|
42
|
+
const text = raw.trim();
|
|
43
|
+
if (FEEDBACK_PLACEHOLDERS.includes(text)) {
|
|
44
|
+
throw new ChefPolicyError('POLICY_BAD_INPUT', '反馈须填真实内容,「' + text + '」是占位词(请向用户要一句真实反馈后重试)');
|
|
45
|
+
}
|
|
46
|
+
return text;
|
|
47
|
+
}
|
|
48
|
+
/** 当日日期(`YYYY-MM-DD`):本域落历史默认 cook_date 的唯一定义地。 */
|
|
49
|
+
function todayStr() {
|
|
50
|
+
return new Date().toISOString().slice(0, 10);
|
|
51
|
+
}
|
|
52
|
+
/** 校验补录日期:`YYYY-MM-DD` 真日期;缺省(`undefined`/空串)即今天。 */
|
|
53
|
+
export function validateCookDate(raw) {
|
|
54
|
+
if (raw === undefined || raw === null || (typeof raw === 'string' && !raw.trim()))
|
|
55
|
+
return todayStr();
|
|
56
|
+
if (typeof raw !== 'string' || !/^\d{4}-\d{2}-\d{2}$/.test(raw.trim())) {
|
|
57
|
+
throw new ChefPolicyError('POLICY_BAD_INPUT', '补录日期须为 YYYY-MM-DD(实际 ' + JSON.stringify(raw) + ')');
|
|
58
|
+
}
|
|
59
|
+
const text = raw.trim();
|
|
60
|
+
const dt = new Date(text + 'T00:00:00Z');
|
|
61
|
+
if (Number.isNaN(dt.getTime()) ||
|
|
62
|
+
dt.getUTCFullYear() !== Number(text.slice(0, 4)) ||
|
|
63
|
+
dt.getUTCMonth() + 1 !== Number(text.slice(5, 7)) ||
|
|
64
|
+
dt.getUTCDate() !== Number(text.slice(8, 10))) {
|
|
65
|
+
throw new ChefPolicyError('POLICY_BAD_INPUT', '补录日期不是真日期(实际 ' + text + ')');
|
|
66
|
+
}
|
|
67
|
+
return text;
|
|
68
|
+
}
|
|
69
|
+
//# sourceMappingURL=validate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validate.js","sourceRoot":"","sources":["../../src/history/validate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAErD,kDAAkD;AAClD,MAAM,qBAAqB,GAAsB;IAC/C,IAAI;IACJ,KAAK;IACL,IAAI;IACJ,IAAI;IACJ,KAAK;IACL,KAAK;IACL,MAAM;IACN,MAAM;IACN,OAAO;IACP,KAAK;IACL,MAAM;IACN,GAAG;IACH,GAAG;IACH,KAAK;IACL,OAAO;CACR,CAAC;AAEF,iDAAiD;AACjD,MAAM,UAAU,gBAAgB,CAAC,GAAY;IAC3C,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC;QAC3C,MAAM,IAAI,eAAe,CAAC,kBAAkB,EAAE,mCAAmC,CAAC,CAAC;IACrF,CAAC;IACD,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;IACxB,IAAK,qBAA2C,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QAChE,MAAM,IAAI,eAAe,CAAC,kBAAkB,EAAE,YAAY,GAAG,IAAI,GAAG,uBAAuB,CAAC,CAAC;IAC/F,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,mDAAmD;AACnD,SAAS,QAAQ;IACf,OAAO,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AAC/C,CAAC;AAED,qDAAqD;AACrD,MAAM,UAAU,gBAAgB,CAAC,GAAY;IAC3C,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,IAAI,IAAI,CAAC,OAAO,GAAG,KAAK,QAAQ,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;QAAE,OAAO,QAAQ,EAAE,CAAC;IACrG,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC;QACvE,MAAM,IAAI,eAAe,CAAC,kBAAkB,EAAE,uBAAuB,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC;IACrG,CAAC;IACD,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;IACxB,MAAM,EAAE,GAAG,IAAI,IAAI,CAAC,IAAI,GAAG,YAAY,CAAC,CAAC;IACzC,IACE,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC;QAC1B,EAAE,CAAC,cAAc,EAAE,KAAK,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAChD,EAAE,CAAC,WAAW,EAAE,GAAG,CAAC,KAAK,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACjD,EAAE,CAAC,UAAU,EAAE,KAAK,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAC7C,CAAC;QACD,MAAM,IAAI,eAAe,CAAC,kBAAkB,EAAE,eAAe,GAAG,IAAI,GAAG,GAAG,CAAC,CAAC;IAC9E,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export type ChefKey = 'chef.recipe.view' | 'chef.recipe.search' | 'chef.recipe.write' | 'chef.cooking.run' | 'chef.shopping.query' | 'chef.history.record' | 'chef.history.query' | 'chef.help.lookup';
|
|
1
|
+
export type ChefKey = 'chef.recipe.view' | 'chef.recipe.search' | 'chef.recipe.write' | 'chef.cooking.run' | 'chef.shopping.query' | 'chef.history.record' | 'chef.history.query' | 'chef.help.lookup' | 'chef.relation.write' | 'chef.relation.query' | 'chef.setup.init' | 'chef.data.batch';
|
|
2
2
|
export interface WakeRoute {
|
|
3
3
|
key: ChefKey;
|
|
4
4
|
params: Record<string, unknown>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wakewords.d.ts","sourceRoot":"","sources":["../../src/policy/wakewords.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"wakewords.d.ts","sourceRoot":"","sources":["../../src/policy/wakewords.ts"],"names":[],"mappings":"AAMA,MAAM,MAAM,OAAO,GACf,kBAAkB,GAAG,oBAAoB,GAAG,mBAAmB,GAAG,kBAAkB,GACpF,qBAAqB,GAAG,qBAAqB,GAAG,oBAAoB,GAAG,kBAAkB,GAGzF,qBAAqB,GAAG,qBAAqB,GAAG,iBAAiB,GAAG,iBAAiB,CAAC;AAE1F,MAAM,WAAW,SAAS;IAAG,GAAG,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAAE;AAC7E,MAAM,WAAW,SAAS;IAAG,MAAM,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAAE;AAEhH,eAAO,MAAM,UAAU,EAAE,SAAS,EAyDjC,CAAC;AAIF,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,GAAG,SAAS,CAmBxF"}
|