skill-home 0.3.55 → 0.3.56

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 (247) hide show
  1. package/dist/cli/cmd_read.js +139 -115
  2. package/dist/cli/cmd_read.js.map +1 -1
  3. package/dist/cli/config.d.ts.map +1 -1
  4. package/dist/cli/config.js +2 -1
  5. package/dist/cli/config.js.map +1 -1
  6. package/dist/entries/catalog.generated.d.ts +11 -0
  7. package/dist/entries/catalog.generated.d.ts.map +1 -0
  8. package/dist/entries/catalog.generated.js +10 -0
  9. package/dist/entries/catalog.generated.js.map +1 -0
  10. package/dist/entries/en.d.ts +2162 -0
  11. package/dist/entries/en.d.ts.map +1 -0
  12. package/dist/entries/en.js +2234 -0
  13. package/dist/entries/en.js.map +1 -0
  14. package/dist/entries/index.d.ts +15 -0
  15. package/dist/entries/index.d.ts.map +1 -0
  16. package/dist/entries/index.js +15 -0
  17. package/dist/entries/index.js.map +1 -0
  18. package/dist/entries/zh.d.ts +2162 -0
  19. package/dist/entries/zh.d.ts.map +1 -0
  20. package/dist/entries/zh.js +2234 -0
  21. package/dist/entries/zh.js.map +1 -0
  22. package/dist/express/pages/express.d.ts.map +1 -1
  23. package/dist/express/pages/express.js +55 -39
  24. package/dist/express/pages/express.js.map +1 -1
  25. package/dist/express/pages/list.d.ts.map +1 -1
  26. package/dist/express/pages/list.js +61 -46
  27. package/dist/express/pages/list.js.map +1 -1
  28. package/dist/express/pages/missing.d.ts.map +1 -1
  29. package/dist/express/pages/missing.js +52 -34
  30. package/dist/express/pages/missing.js.map +1 -1
  31. package/dist/express/pages/stock.d.ts.map +1 -1
  32. package/dist/express/pages/stock.js +79 -41
  33. package/dist/express/pages/stock.js.map +1 -1
  34. package/dist/express/shopping.d.ts.map +1 -1
  35. package/dist/express/shopping.js +29 -27
  36. package/dist/express/shopping.js.map +1 -1
  37. package/dist/family/care.d.ts.map +1 -1
  38. package/dist/family/care.js +31 -27
  39. package/dist/family/care.js.map +1 -1
  40. package/dist/family/pages/family_borrow.d.ts.map +1 -1
  41. package/dist/family/pages/family_borrow.js +135 -69
  42. package/dist/family/pages/family_borrow.js.map +1 -1
  43. package/dist/family/pages/family_members.d.ts.map +1 -1
  44. package/dist/family/pages/family_members.js +81 -34
  45. package/dist/family/pages/family_members.js.map +1 -1
  46. package/dist/fetch/backup.d.ts.map +1 -1
  47. package/dist/fetch/backup.js +14 -5
  48. package/dist/fetch/backup.js.map +1 -1
  49. package/dist/fetch/db.d.ts +23 -0
  50. package/dist/fetch/db.d.ts.map +1 -1
  51. package/dist/fetch/db.js +28 -9
  52. package/dist/fetch/db.js.map +1 -1
  53. package/dist/fetch/domains.d.ts.map +1 -1
  54. package/dist/fetch/domains.js +28 -24
  55. package/dist/fetch/domains.js.map +1 -1
  56. package/dist/fetch/masterKey.d.ts.map +1 -1
  57. package/dist/fetch/masterKey.js +2 -1
  58. package/dist/fetch/masterKey.js.map +1 -1
  59. package/dist/health.d.ts.map +1 -1
  60. package/dist/health.js +89 -68
  61. package/dist/health.js.map +1 -1
  62. package/dist/help/helpFile.d.ts +2 -5
  63. package/dist/help/helpFile.d.ts.map +1 -1
  64. package/dist/help/helpFile.js +44 -32
  65. package/dist/help/helpFile.js.map +1 -1
  66. package/dist/help/lookup.d.ts.map +1 -1
  67. package/dist/help/lookup.js +31 -25
  68. package/dist/help/lookup.js.map +1 -1
  69. package/dist/items/add.d.ts.map +1 -1
  70. package/dist/items/add.js +5 -4
  71. package/dist/items/add.js.map +1 -1
  72. package/dist/items/detail.d.ts.map +1 -1
  73. package/dist/items/detail.js +3 -2
  74. package/dist/items/detail.js.map +1 -1
  75. package/dist/items/inventory.d.ts.map +1 -1
  76. package/dist/items/inventory.js +7 -6
  77. package/dist/items/inventory.js.map +1 -1
  78. package/dist/items/pages/add_form.d.ts.map +1 -1
  79. package/dist/items/pages/add_form.js +26 -25
  80. package/dist/items/pages/add_form.js.map +1 -1
  81. package/dist/items/pages/browse.d.ts.map +1 -1
  82. package/dist/items/pages/browse.js +15 -14
  83. package/dist/items/pages/browse.js.map +1 -1
  84. package/dist/items/pages/category_manage.d.ts.map +1 -1
  85. package/dist/items/pages/category_manage.js +27 -27
  86. package/dist/items/pages/category_manage.js.map +1 -1
  87. package/dist/items/pages/confirm.d.ts.map +1 -1
  88. package/dist/items/pages/confirm.js +22 -21
  89. package/dist/items/pages/confirm.js.map +1 -1
  90. package/dist/items/pages/detail.d.ts.map +1 -1
  91. package/dist/items/pages/detail.js +32 -31
  92. package/dist/items/pages/detail.js.map +1 -1
  93. package/dist/items/pages/duplicates.d.ts.map +1 -1
  94. package/dist/items/pages/duplicates.js +15 -14
  95. package/dist/items/pages/duplicates.js.map +1 -1
  96. package/dist/items/pages/history.d.ts.map +1 -1
  97. package/dist/items/pages/history.js +45 -41
  98. package/dist/items/pages/history.js.map +1 -1
  99. package/dist/items/pages/inventory_diff.d.ts.map +1 -1
  100. package/dist/items/pages/inventory_diff.js +23 -20
  101. package/dist/items/pages/inventory_diff.js.map +1 -1
  102. package/dist/items/pages/inventory_records.d.ts.map +1 -1
  103. package/dist/items/pages/inventory_records.js +29 -26
  104. package/dist/items/pages/inventory_records.js.map +1 -1
  105. package/dist/items/pages/inventory_round.d.ts.map +1 -1
  106. package/dist/items/pages/inventory_round.js +46 -34
  107. package/dist/items/pages/inventory_round.js.map +1 -1
  108. package/dist/items/pages/locate.d.ts.map +1 -1
  109. package/dist/items/pages/locate.js +20 -19
  110. package/dist/items/pages/locate.js.map +1 -1
  111. package/dist/items/pages/move_checklist.d.ts.map +1 -1
  112. package/dist/items/pages/move_checklist.js +28 -25
  113. package/dist/items/pages/move_checklist.js.map +1 -1
  114. package/dist/items/pages/photo_wall.d.ts.map +1 -1
  115. package/dist/items/pages/photo_wall.js +25 -25
  116. package/dist/items/pages/photo_wall.js.map +1 -1
  117. package/dist/items/pages/photos.d.ts.map +1 -1
  118. package/dist/items/pages/photos.js +29 -31
  119. package/dist/items/pages/photos.js.map +1 -1
  120. package/dist/items/pages/receipt.d.ts.map +1 -1
  121. package/dist/items/pages/receipt.js +58 -52
  122. package/dist/items/pages/receipt.js.map +1 -1
  123. package/dist/items/pages/relations.d.ts.map +1 -1
  124. package/dist/items/pages/relations.js +22 -23
  125. package/dist/items/pages/relations.js.map +1 -1
  126. package/dist/items/pages/search_list.d.ts.map +1 -1
  127. package/dist/items/pages/search_list.js +17 -16
  128. package/dist/items/pages/search_list.js.map +1 -1
  129. package/dist/items/pages/tag_manage.d.ts.map +1 -1
  130. package/dist/items/pages/tag_manage.js +51 -44
  131. package/dist/items/pages/tag_manage.js.map +1 -1
  132. package/dist/items/pages/undo_select.d.ts.map +1 -1
  133. package/dist/items/pages/undo_select.js +25 -24
  134. package/dist/items/pages/undo_select.js.map +1 -1
  135. package/dist/items/search.d.ts.map +1 -1
  136. package/dist/items/search.js +4 -3
  137. package/dist/items/search.js.map +1 -1
  138. package/dist/items/tag.d.ts.map +1 -1
  139. package/dist/items/tag.js +15 -13
  140. package/dist/items/tag.js.map +1 -1
  141. package/dist/items/update.d.ts.map +1 -1
  142. package/dist/items/update.js +24 -23
  143. package/dist/items/update.js.map +1 -1
  144. package/dist/outfit/outfit.d.ts.map +1 -1
  145. package/dist/outfit/outfit.js +70 -31
  146. package/dist/outfit/outfit.js.map +1 -1
  147. package/dist/outfit/pages/outfit_picker.d.ts.map +1 -1
  148. package/dist/outfit/pages/outfit_picker.js +89 -40
  149. package/dist/outfit/pages/outfit_picker.js.map +1 -1
  150. package/dist/outfit/pages/travel_trip.d.ts.map +1 -1
  151. package/dist/outfit/pages/travel_trip.js +82 -38
  152. package/dist/outfit/pages/travel_trip.js.map +1 -1
  153. package/dist/outfit/pages/trip_outfit_plan.d.ts.map +1 -1
  154. package/dist/outfit/pages/trip_outfit_plan.js +87 -48
  155. package/dist/outfit/pages/trip_outfit_plan.js.map +1 -1
  156. package/dist/outfit/pages/wardrobe_analyze.d.ts.map +1 -1
  157. package/dist/outfit/pages/wardrobe_analyze.js +85 -36
  158. package/dist/outfit/pages/wardrobe_analyze.js.map +1 -1
  159. package/dist/outfit/pages/wardrobe_season.d.ts.map +1 -1
  160. package/dist/outfit/pages/wardrobe_season.js +101 -40
  161. package/dist/outfit/pages/wardrobe_season.js.map +1 -1
  162. package/dist/outfit/trip.d.ts.map +1 -1
  163. package/dist/outfit/trip.js +35 -14
  164. package/dist/outfit/trip.js.map +1 -1
  165. package/dist/policy/category.d.ts.map +1 -1
  166. package/dist/policy/category.js +2 -1
  167. package/dist/policy/category.js.map +1 -1
  168. package/dist/policy/item.d.ts.map +1 -1
  169. package/dist/policy/item.js +3 -2
  170. package/dist/policy/item.js.map +1 -1
  171. package/dist/policy/routes.en.generated.d.ts +18 -0
  172. package/dist/policy/routes.en.generated.d.ts.map +1 -0
  173. package/dist/policy/routes.en.generated.js +14 -0
  174. package/dist/policy/routes.en.generated.js.map +1 -0
  175. package/dist/policy/wakewords.d.ts.map +1 -1
  176. package/dist/policy/wakewords.js +20 -1
  177. package/dist/policy/wakewords.js.map +1 -1
  178. package/dist/receipt/pages/accounts.d.ts.map +1 -1
  179. package/dist/receipt/pages/accounts.js +62 -36
  180. package/dist/receipt/pages/accounts.js.map +1 -1
  181. package/dist/receipt/pages/certificates.d.ts.map +1 -1
  182. package/dist/receipt/pages/certificates.js +74 -54
  183. package/dist/receipt/pages/certificates.js.map +1 -1
  184. package/dist/receipt/pages/purchase_records.d.ts.map +1 -1
  185. package/dist/receipt/pages/purchase_records.js +82 -59
  186. package/dist/receipt/pages/purchase_records.js.map +1 -1
  187. package/dist/receipt/pages/warranty.d.ts.map +1 -1
  188. package/dist/receipt/pages/warranty.js +36 -24
  189. package/dist/receipt/pages/warranty.js.map +1 -1
  190. package/dist/receipt/ticket.d.ts.map +1 -1
  191. package/dist/receipt/ticket.js +65 -64
  192. package/dist/receipt/ticket.js.map +1 -1
  193. package/dist/render/copyArea.d.ts.map +1 -1
  194. package/dist/render/copyArea.js +39 -26
  195. package/dist/render/copyArea.js.map +1 -1
  196. package/dist/render/html.d.ts.map +1 -1
  197. package/dist/render/html.js +19 -4
  198. package/dist/render/html.js.map +1 -1
  199. package/dist/render/views.d.ts.map +1 -1
  200. package/dist/render/views.js +4 -3
  201. package/dist/render/views.js.map +1 -1
  202. package/dist/setup/pages/backup_receipt.d.ts.map +1 -1
  203. package/dist/setup/pages/backup_receipt.js +85 -35
  204. package/dist/setup/pages/backup_receipt.js.map +1 -1
  205. package/dist/setup/pages/first_use_wizard.d.ts.map +1 -1
  206. package/dist/setup/pages/first_use_wizard.js +100 -33
  207. package/dist/setup/pages/first_use_wizard.js.map +1 -1
  208. package/dist/setup/pages/health_report.d.ts.map +1 -1
  209. package/dist/setup/pages/health_report.js +74 -37
  210. package/dist/setup/pages/health_report.js.map +1 -1
  211. package/dist/setup/pages/import_restore.d.ts.map +1 -1
  212. package/dist/setup/pages/import_restore.js +79 -34
  213. package/dist/setup/pages/import_restore.js.map +1 -1
  214. package/dist/shared/params.d.ts.map +1 -1
  215. package/dist/shared/params.js +4 -3
  216. package/dist/shared/params.js.map +1 -1
  217. package/dist/space/location.d.ts.map +1 -1
  218. package/dist/space/location.js +29 -19
  219. package/dist/space/location.js.map +1 -1
  220. package/dist/space/pages/fixed_spot.d.ts.map +1 -1
  221. package/dist/space/pages/fixed_spot.js +51 -42
  222. package/dist/space/pages/fixed_spot.js.map +1 -1
  223. package/dist/space/pages/location_manage.d.ts.map +1 -1
  224. package/dist/space/pages/location_manage.js +59 -48
  225. package/dist/space/pages/location_manage.js.map +1 -1
  226. package/dist/space/pages/space_view.d.ts.map +1 -1
  227. package/dist/space/pages/space_view.js +67 -70
  228. package/dist/space/pages/space_view.js.map +1 -1
  229. package/dist/space/pages/suggest_storage.d.ts.map +1 -1
  230. package/dist/space/pages/suggest_storage.js +78 -64
  231. package/dist/space/pages/suggest_storage.js.map +1 -1
  232. package/dist/stats/pages/expiring.d.ts.map +1 -1
  233. package/dist/stats/pages/expiring.js +99 -61
  234. package/dist/stats/pages/expiring.js.map +1 -1
  235. package/dist/stats/pages/idle.d.ts.map +1 -1
  236. package/dist/stats/pages/idle.js +95 -59
  237. package/dist/stats/pages/idle.js.map +1 -1
  238. package/dist/stats/pages/inventory_stat.d.ts.map +1 -1
  239. package/dist/stats/pages/inventory_stat.js +98 -47
  240. package/dist/stats/pages/inventory_stat.js.map +1 -1
  241. package/dist/stats/pages/overview.d.ts.map +1 -1
  242. package/dist/stats/pages/overview.js +137 -70
  243. package/dist/stats/pages/overview.js.map +1 -1
  244. package/dist/stats/stats.d.ts.map +1 -1
  245. package/dist/stats/stats.js +7 -4
  246. package/dist/stats/stats.js.map +1 -1
  247. package/package.json +4 -3
@@ -7,6 +7,29 @@
7
7
  // 数据形状声明:PAGE_META(主命令/形状/场景预设示例/服务场景清单)。
8
8
  import { readFileSync } from 'node:fs';
9
9
  import { fillTemplate, escapeHtml, homeCopyArea, homeCopyLog, homeNowStamp } from '../../render/index.js';
10
+ import { m } from '../../entries/index.js';
11
+ /** 本页可见文案(渲染期取词:写成函数,模块加载时不取词)。 */
12
+ function pageText() {
13
+ return {
14
+ k001: m('skill-home.express-pages-missing.c001'),
15
+ k002: m('skill-home.express-pages-missing.c002'),
16
+ k003: m('skill-home.express-pages-missing.c003'),
17
+ k004: (p0) => m('skill-home.express-pages-missing.c004', { p0: String(p0) }),
18
+ k005: (p0) => m('skill-home.express-pages-missing.c005', { p0: String(p0) }),
19
+ k006: m('skill-home.express-pages-missing.c006'),
20
+ k007: m('skill-home.express-pages-missing.c007'),
21
+ k008: m('skill-home.express-pages-missing.c008'),
22
+ k009: m('skill-home.express-pages-missing.c009'),
23
+ k010: m('skill-home.express-pages-missing.c010'),
24
+ k011: m('skill-home.express-pages-missing.c011'),
25
+ k012: m('skill-home.express-pages-missing.c012'),
26
+ k013: m('skill-home.express-pages-missing.c013'),
27
+ k014: m('skill-home.express-pages-missing.c014'),
28
+ k015: m('skill-home.express-pages-missing.c015'),
29
+ k016: (p0) => m('skill-home.express-pages-missing.c016', { p0: String(p0) }),
30
+ k017: m('skill-home.express-pages-missing.c017'),
31
+ };
32
+ }
10
33
  export const FAMILY = 'missing';
11
34
  export const PAGE_META = {
12
35
  domain: 'express',
@@ -54,21 +77,28 @@ function asMissing(env) {
54
77
  name: String(o.name ?? ''),
55
78
  current: Number(o.current ?? 0),
56
79
  threshold: Number(o.threshold ?? 1),
57
- threshold_source: String(o.threshold_source ?? '囤货设置'),
80
+ threshold_source: String(o.threshold_source ?? m('skill-home.express-pages-missing.c018')),
58
81
  status: String(o.status ?? ''),
59
82
  suggest: Number(o.suggest ?? 1),
60
83
  category_name: String(o.category_name ?? ''),
61
84
  };
62
85
  }).filter((x) => x.name);
63
- return { items, scope: String(d.scope ?? '全屋') };
86
+ return { items, scope: String(d.scope ?? m('skill-home.express-pages-missing.c030')) };
64
87
  }
65
88
  // 装配入口:真 envelope(真命令链产出)+本族模板 → 同形整页。
66
89
  // fail-closed:模板缺失/标记异常(fillTemplate 内抛)不返空页。
67
90
  // 复制区走共用件(卡路里同款三格式+六段日志);`ctx.command` 由交付链供给(含 params),直调缺省按本族主 key。
68
91
  export function renderFamilyPage(env, ctx) {
92
+ const SX = {
93
+ k001: m('skill-home.express-pages-missing.c026'),
94
+ k002: m('skill-home.express-pages-missing.c027'),
95
+ k003: "、",
96
+ k004: m('skill-home.express-pages-missing.c028'),
97
+ k005: m('skill-home.express-pages-missing.c029'),
98
+ };
99
+ const L = pageText();
69
100
  const template = readFileSync(new URL('../../../templates/express/missing.html', import.meta.url), 'utf8');
70
- const head = '<div class="fam-head"><span>快递购物</span>'
71
- + '<span>缺货检测</span></div>';
101
+ const head = '<div class="fam-head">' + '<span>' + L.k001 + '</span>' + '<span>' + L.k002 + '</span>' + '</div>';
72
102
  const { items, scope } = asMissing(env);
73
103
  const style = '<style>'
74
104
  + '.x-lead{color:#3a3a3c;font-size:15px;line-height:1.7;margin:12px 0;text-wrap:pretty}'
@@ -89,36 +119,24 @@ export function renderFamilyPage(env, ctx) {
89
119
  + '.x-empty{text-align:center;color:#666;padding:26px 0;line-height:2}'
90
120
  + '@media(max-width:820px){.x-row{align-items:center}.x-actions{display:grid;grid-template-columns:1fr 1fr;gap:10px}.x-btn{width:100%}}'
91
121
  + '</style>';
92
- const P_SCOPE = '请加载居家管家技能,帮我按范围检测缺货';
93
- const P_TH = '请加载居家管家技能,帮我查看囤货并设置阈值';
122
+ const P_SCOPE = m('skill-home.express-pages-missing.c019');
123
+ const P_TH = m('skill-home.express-pages-missing.c020');
94
124
  // #890:「加入购物清单」的初始载荷(点后由页内 `onclick` 按当刻勾选改写 `data-t`)。
95
- const P_LIST = '请加载居家管家技能,帮我将缺货物品加入购物清单';
125
+ const P_LIST = m('skill-home.express-pages-missing.c021');
96
126
  let body = style;
97
127
  // #817(③双端不塌)第二波:说明句压到 390 档一行放得下(20 字)——原来 25 字在 390 档折行后
98
128
  // 第二行只剩一个「出」孤字。
99
- body += '<p class="x-lead">勾选后加入购物清单,建议买量按两倍阈值算</p>';
100
- body += '<div class="x-metrics">'
101
- + '<span class="x-pill">缺货 ' + items.length + ' 件</span>'
102
- + '<span class="x-pill">检测范围 ' + escapeHtml(scope) + '</span>'
103
- + '<span class="x-pill">阈值来源 囤货设置</span>'
104
- + '</div>';
129
+ body += '<p class="x-lead">' + L.k003 + '</p>';
130
+ body += '<div class="x-metrics">' + '<span class="x-pill">' + L.k004(String(items.length)) + '</span>' + '<span class="x-pill">' + L.k005(String(escapeHtml(scope))) + '</span>' + '<span class="x-pill">' + L.k006 + '</span>' + '</div>';
105
131
  if (items.length) {
106
- body += '<section><h2>缺货物品</h2><div id="x-list">'
107
- + items.map((it) => '<div class="x-row"><input class="x-check" type="checkbox" data-id="' + it.id + '" data-name="' + escapeHtml(it.name) + '" data-suggest="' + it.suggest + '">'
108
- + '<div style="flex:1"><div class="x-name">' + escapeHtml(it.name)
109
- + '<span class="x-state ' + (it.status === '空' ? 'empty' : 'low') + '">' + escapeHtml(it.status) + '</span></div>'
110
- + '<div class="x-meta">' + escapeHtml(it.category_name) + ' 当前 ' + it.current + ' 阈值 ' + it.threshold + '</div></div>'
111
- + '<span class="x-suggest">建议买 <b>' + it.suggest + '</b></span></div>').join('')
112
- + '</div><div class="x-actions">'
113
- + '<button class="x-btn" data-action-id="x-to-list" data-t="' + escapeHtml(P_LIST) + '" onclick="xToList(this)">加入购物清单</button>'
114
- + '<button class="x-btn ghost" data-action-id="x-scope" data-t="' + escapeHtml(P_SCOPE) + '">按范围检测</button>'
115
- + '<button class="x-btn ghost" data-action-id="x-th" data-t="' + escapeHtml(P_TH) + '">设置阈值</button>'
116
- + '</div></section>';
132
+ body += '<section>' + '<h2>' + L.k007 + '</h2>' + '<div id="x-list">' + items.map((it) => '<div class="x-row"><input class="x-check" type="checkbox" data-id="' + it.id + '" data-name="' + escapeHtml(it.name) + '" data-suggest="' + it.suggest + '">'
133
+ + '<div style="flex:1"><div class="x-name">' + escapeHtml(it.name)
134
+ + '<span class="x-state ' + (it.status === L.k011 ? 'empty' : 'low') + '">' + escapeHtml(it.status) + '</span></div>'
135
+ + '<div class="x-meta">' + escapeHtml(it.category_name) + L.k010 + it.current + L.k009 + it.threshold + '</div></div>'
136
+ + '<span class="x-suggest">' + L.k008 + '<b>' + it.suggest + '</b></span></div>').join('') + '</div>' + '<div class="x-actions">' + '<button class="x-btn" data-action-id="x-to-list" data-t="' + escapeHtml(P_LIST) + '" onclick="xToList(this)">' + L.k012 + '</button>' + '<button class="x-btn ghost" data-action-id="x-scope" data-t="' + escapeHtml(P_SCOPE) + '">' + L.k013 + '</button>' + '<button class="x-btn ghost" data-action-id="x-th" data-t="' + escapeHtml(P_TH) + '">' + L.k014 + '</button>' + '</div>' + '</section>';
117
137
  }
118
138
  else {
119
- body += '<section><div class="x-empty">库存充足没有缺货<br>范围 ' + escapeHtml(scope) + '<div class="x-actions" style="justify-content:center">'
120
- + '<button class="x-btn ghost" data-action-id="x-th" data-t="' + escapeHtml(P_TH) + '">设置阈值</button>'
121
- + '</div></div></section>';
139
+ body += '<section>' + '<div class="x-empty">' + L.k015 + '<br>' + L.k016(String(escapeHtml(scope))) + '<div class="x-actions" style="justify-content:center">' + '<button class="x-btn ghost" data-action-id="x-th" data-t="' + escapeHtml(P_TH) + '">' + L.k017 + '</button>' + '</div>' + '</div>' + '</section>';
122
140
  }
123
141
  // #890:复制路径交给公共层共享运行时(`<!--SHARED-HELPERS-->` 槽的 `buildSharedHelpersJs`)——
124
142
  // 页内自造 `xCopy`(无反馈/无 `catch`/无 `execCommand` 降级)与 #886 收口时漏删的
@@ -126,9 +144,9 @@ export function renderFamilyPage(env, ctx) {
126
144
  // `data-action-id` + `data-t`;按当刻勾选现算的那一颗,用元素级 `onclick` 先把载荷写回自己的
127
145
  // `data-t`(目标阶段先于 document 冒泡),没勾选时置空并保留拦截提示。
128
146
  body += '<script>'
129
- + 'function xToList(b){var s=[...document.querySelectorAll("#x-list input:checked")];if(!s.length){b.setAttribute("data-t","");alert("请先勾选缺货物品");return;}'
130
- + 'var ids=s.map(function(c){return c.getAttribute("data-id");}).join(",");var names=s.map(function(c){return c.getAttribute("data-name")+"建议买"+c.getAttribute("data-suggest");}).join("、");'
131
- + 'b.setAttribute("data-t","请加载居家管家技能,帮我将缺货物品加入购物清单:"+names+" 编号["+ids+"]");}'
147
+ + "function xToList(b){var s=[...document.querySelectorAll(\"#x-list input:checked\")];if(!s.length){b.setAttribute(\"data-t\",\"\");alert(\"" + SX.k001 + "\");return;}"
148
+ + "var ids=s.map(function(c){return c.getAttribute(\"data-id\");}).join(\",\");var names=s.map(function(c){return c.getAttribute(\"data-name\")+\"" + SX.k002 + "\"+c.getAttribute(\"data-suggest\");}).join(\"" + SX.k003 + "\");"
149
+ + "b.setAttribute(\"data-t\",\"" + SX.k004 + "\"+names+\" " + SX.k005 + "[\"+ids+\"]\");}"
132
150
  + '</script>';
133
151
  // 主 operations 唯一复制区(envelope 投影;上下两分支旧按钮已删,只留这一处)。
134
152
  body += homeCopyArea({
@@ -137,10 +155,10 @@ export function renderFamilyPage(env, ctx) {
137
155
  });
138
156
  const content = head
139
157
  + body
140
- + sectionOf('fields', '字段')
141
- + sectionOf('operations', '操作')
142
- + sectionOf('empty', '空态与异常')
143
- + sectionOf('status', '状态词');
158
+ + sectionOf('fields', m('skill-home.express-pages-missing.c022'))
159
+ + sectionOf('operations', m('skill-home.express-pages-missing.c023'))
160
+ + sectionOf('empty', m('skill-home.express-pages-missing.c024'))
161
+ + sectionOf('status', m('skill-home.express-pages-missing.c025'));
144
162
  return fillTemplate(template, content);
145
163
  }
146
164
  //# sourceMappingURL=missing.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"missing.js","sourceRoot":"","sources":["../../../src/express/pages/missing.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"missing.js","sourceRoot":"","sources":["../../../src/express/pages/missing.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"stock.d.ts","sourceRoot":"","sources":["../../../src/express/pages/stock.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAG/C,eAAO,MAAM,MAAM,EAAG,OAAgB,CAAC;AAEvC,eAAO,MAAM,SAAS;;;;;qBAKQ,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;mBACgB,SAAS;QAAE,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,EAAE;CACxI,CAAC;AAEX,eAAO,MAAM,eAAe,EA0BvB;IACH,QAAQ,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;IACnC,QAAQ,CAAC,UAAU,EAAE,SAAS,MAAM,EAAE,CAAC;IACvC,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC,QAAQ,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;CACpC,CAAC;AA2CF,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,QAAQ,EAAE,GAAG,CAAC,EAAE;IAAE,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,CAwGvH"}
1
+ {"version":3,"file":"stock.d.ts","sourceRoot":"","sources":["../../../src/express/pages/stock.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AA8B/C,eAAO,MAAM,MAAM,EAAG,OAAgB,CAAC;AAEvC,eAAO,MAAM,SAAS;;;;;qBAKQ,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;mBACgB,SAAS;QAAE,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,EAAE;CACxI,CAAC;AAEX,eAAO,MAAM,eAAe,EA0BvB;IACH,QAAQ,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;IACnC,QAAQ,CAAC,UAAU,EAAE,SAAS,MAAM,EAAE,CAAC;IACvC,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC,QAAQ,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;CACpC,CAAC;AA2CF,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,QAAQ,EAAE,GAAG,CAAC,EAAE;IAAE,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,CAoHvH"}
@@ -11,6 +11,31 @@ function latinFree(s) {
11
11
  return s.replace(/[A-Za-z]/g, (c) => String.fromCharCode(c.charCodeAt(0) + 0xFEE0));
12
12
  }
13
13
  import { fillTemplate, escapeHtml, homeCopyArea, homeCopyLog, homeNowStamp } from '../../render/index.js';
14
+ import { m } from '../../entries/index.js';
15
+ /** 本页可见文案(渲染期取词:写成函数,模块加载时不取词)。 */
16
+ function pageText() {
17
+ return {
18
+ k001: m('skill-home.express-pages-stock.c001'),
19
+ k002: m('skill-home.express-pages-stock.c002'),
20
+ k003: m('skill-home.express-pages-stock.c003'),
21
+ k004: (p0) => m('skill-home.express-pages-stock.c004', { p0: String(p0) }),
22
+ k005: (p0) => m('skill-home.express-pages-stock.c005', { p0: String(p0) }),
23
+ k006: (p0) => m('skill-home.express-pages-stock.c006', { p0: String(p0) }),
24
+ k007: m('skill-home.express-pages-stock.c007'),
25
+ k008: m('skill-home.express-pages-stock.c008'),
26
+ k009: m('skill-home.express-pages-stock.c009'),
27
+ k010: m('skill-home.express-pages-stock.c010'),
28
+ k011: m('skill-home.express-pages-stock.c011'),
29
+ k012: m('skill-home.express-pages-stock.c012'),
30
+ k013: m('skill-home.express-pages-stock.c013'),
31
+ k014: m('skill-home.express-pages-stock.c014'),
32
+ k015: m('skill-home.express-pages-stock.c015'),
33
+ k016: m('skill-home.express-pages-stock.c016'),
34
+ k017: m('skill-home.express-pages-stock.c017'),
35
+ k018: m('skill-home.express-pages-stock.c018'),
36
+ k019: m('skill-home.express-pages-stock.c019'),
37
+ };
38
+ }
14
39
  export const FAMILY = 'stock';
15
40
  export const PAGE_META = {
16
41
  domain: 'express',
@@ -76,9 +101,22 @@ function asStock(env) {
76
101
  // fail-closed:模板缺失/标记异常(fillTemplate 内抛)不返空页。
77
102
  // 复制区走共用件(卡路里同款三格式+六段日志);`ctx.command` 由交付链供给(含 params),直调缺省按本族主 key。
78
103
  export function renderFamilyPage(env, ctx) {
104
+ const SX = {
105
+ k001: m('skill-home.express-pages-stock.c027'),
106
+ k002: m('skill-home.express-pages-stock.c034'),
107
+ k003: m('skill-home.express-pages-stock.c030'),
108
+ k004: m('skill-home.express-pages-stock.c036'),
109
+ k005: m('skill-home.express-pages-stock.c028'),
110
+ k006: m('skill-home.express-pages-stock.c029'),
111
+ k007: m('skill-home.express-pages-stock.c031'),
112
+ k008: m('skill-home.express-pages-stock.c029'),
113
+ k009: m('skill-home.express-pages-stock.c030'),
114
+ k010: m('skill-home.express-pages-stock.c031'),
115
+ };
116
+ ;
117
+ const L = pageText();
79
118
  const template = readFileSync(new URL('../../../templates/express/stock.html', import.meta.url), 'utf8');
80
- const head = '<div class="fam-head"><span>快递购物</span>'
81
- + '<span>囤货盘点</span></div>';
119
+ const head = '<div class="fam-head">' + '<span>' + L.k001 + '</span>' + '<span>' + L.k002 + '</span>' + '</div>';
82
120
  const { items, hints } = asStock(env);
83
121
  const low = items.filter((x) => x.status === '低');
84
122
  const empty = items.filter((x) => x.status === '空');
@@ -106,43 +144,29 @@ export function renderFamilyPage(env, ctx) {
106
144
  + '@media(max-width:820px){.x-row{flex-direction:row;align-items:center}.x-actions{display:grid;grid-template-columns:1fr 1fr;gap:10px}'
107
145
  + '.x-actions>.x-btn{width:100%}.x-row>.x-btn{align-self:center}}'
108
146
  + '</style>';
109
- const P_MISSING = '请加载居家管家技能,帮我检测缺货';
147
+ const P_MISSING = m('skill-home.express-pages-stock.c020');
110
148
  // #890:选择区两颗的初始载荷(点了以后由页内监听按当刻勾选改写 `data-t`,见件尾脚本)。
111
- const P_FIX = '请加载居家管家技能,帮我修正物品实际数量';
112
- const P_THR = '请加载居家管家技能,帮我设置囤货阈值';
149
+ const P_FIX = m('skill-home.express-pages-stock.c021');
150
+ const P_THR = m('skill-home.express-pages-stock.c022');
113
151
  let body = style;
114
- body += '<p class="x-lead">阈值是缺货检测的提醒线,盘点时发现数量不对,勾选后修正</p>';
115
- body += '<div class="x-metrics">'
116
- + '<span class="x-pill">囤货 ' + items.length + ' 件</span>'
117
- + '<span class="x-pill">偏低 ' + low.length + ' 件</span>'
118
- + '<span class="x-pill">为空 ' + empty.length + ' 件</span>'
119
- + '</div>';
152
+ body += '<p class="x-lead">' + L.k003 + '</p>';
153
+ body += '<div class="x-metrics">' + '<span class="x-pill">' + L.k004(String(items.length)) + '</span>' + '<span class="x-pill">' + L.k005(String(low.length)) + '</span>' + '<span class="x-pill">' + L.k006(String(empty.length)) + '</span>' + '</div>';
120
154
  if (items.length) {
121
- body += '<section><h2>囤货物品</h2><div id="x-list">'
122
- + items.map((it) => '<div class="x-row"><input class="x-check" type="checkbox" data-id="' + it.id + '" data-name="' + escapeHtml(it.name) + '">'
123
- + '<div style="flex:1"><div class="x-name">' + escapeHtml(latinFree(it.name))
124
- + '<span class="x-state ' + (it.status === '充足' ? 'full' : it.status === '低' ? 'low' : 'empty') + '">' + escapeHtml(it.status) + '</span></div>'
125
- + '<div class="x-meta">' + escapeHtml(it.category_name) + ' 阈值 ' + it.threshold + ' 当前 ' + it.current + '</div></div>'
126
- + '</div>').join('')
127
- + '</div><div class="x-actions">'
128
- + '<button class="x-btn" data-action-id="x-fix" data-t="' + escapeHtml(P_FIX) + '" onclick="xFix(this)">修正实际数量</button>'
129
- + '<button class="x-btn ghost" data-action-id="x-thr" data-t="' + escapeHtml(P_THR) + '" onclick="xThr(this)">设阈值</button>'
130
- + '<button class="x-btn ghost" data-action-id="x-missing" data-t="' + escapeHtml(P_MISSING) + '">检测缺货</button>'
131
- + '</div></section>';
155
+ body += '<section>' + '<h2>' + L.k007 + '</h2>' + '<div id="x-list">' + items.map((it) => '<div class="x-row"><input class="x-check" type="checkbox" data-id="' + it.id + '" data-name="' + escapeHtml(it.name) + '">'
156
+ + '<div style="flex:1"><div class="x-name">' + escapeHtml(latinFree(it.name))
157
+ + '<span class="x-state ' + (it.status === L.k011 ? 'full' : it.status === L.k010 ? 'low' : 'empty') + '">' + escapeHtml(it.status) + '</span></div>'
158
+ + '<div class="x-meta">' + escapeHtml(it.category_name) + L.k009 + it.threshold + L.k008 + it.current + '</div></div>'
159
+ + '</div>').join('') + '</div>' + '<div class="x-actions">' + '<button class="x-btn" data-action-id="x-fix" data-t="' + escapeHtml(P_FIX) + '" onclick="xFix(this)">' + L.k012 + '</button>' + '<button class="x-btn ghost" data-action-id="x-thr" data-t="' + escapeHtml(P_THR) + '" onclick="xThr(this)">' + L.k013 + '</button>' + '<button class="x-btn ghost" data-action-id="x-missing" data-t="' + escapeHtml(P_MISSING) + '">' + L.k014 + '</button>' + '</div>' + '</section>';
132
160
  }
133
161
  else {
134
- body += '<section><div class="x-empty">还没有设阈值的物品<br>给常用消耗品设个阈值,缺货检测就能自动提醒<div class="x-actions" style="justify-content:center">'
135
- + '<button class="x-btn ghost" data-action-id="x-missing" data-t="' + escapeHtml(P_MISSING) + '">检测缺货</button>'
136
- + '</div></div></section>';
162
+ body += '<section>' + '<div class="x-empty">' + L.k015 + '<br>' + L.k016 + '<div class="x-actions" style="justify-content:center">' + '<button class="x-btn ghost" data-action-id="x-missing" data-t="' + escapeHtml(P_MISSING) + '">' + L.k017 + '</button>' + '</div>' + '</div>' + '</section>';
137
163
  }
138
164
  if (hints.length) {
139
165
  // 同名物品按名字去重(库里允许重名,但这一节是「还有哪些常用品没设阈值」,同名重复行只是噪声)。
140
166
  const seenHint = new Set();
141
167
  const uniqHints = hints.filter((h) => (seenHint.has(h.name) ? false : seenHint.add(h.name)));
142
- body += '<section><h2>常用品还没设阈值</h2><div>'
143
- + uniqHints.map((h) => '<div class="x-row"><div class="x-name">' + escapeHtml(latinFree(h.name)) + '</div><div class="x-meta">' + escapeHtml(h.category_name) + '</div>'
144
- + '<button class="x-btn ghost" data-action-id="x-one-thr" data-t="' + escapeHtml(P_THR) + '" data-id="' + h.id + '" data-name="' + escapeHtml(h.name) + '" onclick="xOneThr(this)">设阈值</button></div>').join('')
145
- + '</div></section>';
168
+ body += '<section>' + '<h2>' + L.k018 + '</h2>' + '<div>' + uniqHints.map((h) => '<div class="x-row"><div class="x-name">' + escapeHtml(latinFree(h.name)) + '</div><div class="x-meta">' + escapeHtml(h.category_name) + '</div>'
169
+ + '<button class="x-btn ghost" data-action-id="x-one-thr" data-t="' + escapeHtml(P_THR) + '" data-id="' + h.id + '" data-name="' + escapeHtml(h.name) + L.k019 + '</button>' + '</div>').join('') + '</div>' + '</section>';
146
170
  }
147
171
  // #890:本页原先自带 `xCopy(t){if(navigator.clipboard){…}}`——无反馈、无 `catch`、无 `execCommand`
148
172
  // 降级。按铁律一「把对方那份抄一遍不算走了接口」,不在这里再抄一份更厚的 `xCopy`,而是把复制
@@ -152,14 +176,28 @@ export function renderFamilyPage(env, ctx) {
152
176
  // 选择区两颗要按当刻勾选现算载荷:元素级 `onclick` 在目标阶段先跑、把载荷写回自己的 `data-t`,
153
177
  // 随后才冒泡到 document 被复制;没勾选时把 `data-t` 置空(空串在共享运行时里短路、不出
154
178
  // 「已复制」的假反馈)并保留原来的拦截提示。
155
- body += '<script>'
156
- + 'function xFix(b){var s=[...document.querySelectorAll("#x-list input:checked")];if(!s.length){b.setAttribute("data-t","");alert("请先勾选要修正的物品");return;}'
157
- + 'var ids=s.map(function(c){return c.getAttribute("data-id");}).join(",");var names=s.map(function(c){return c.getAttribute("data-name");}).join("、");'
158
- + 'b.setAttribute("data-t","请加载居家管家技能,帮我修正物品实际数量:"+names+" 编号["+ids+"] 修正后数量___");}'
159
- + 'function xThr(b){var s=[...document.querySelectorAll("#x-list input:checked")];if(!s.length){b.setAttribute("data-t","");alert("请先勾选要设置阈值的物品");return;}'
160
- + 'b.setAttribute("data-t","请加载居家管家技能,帮我设置囤货阈值:"+s.map(function(c){return c.getAttribute("data-name");}).join("、")+" 阈值___");}'
161
- + 'function xOneThr(b){b.setAttribute("data-t","请加载居家管家技能,帮我设置囤货阈值:"+b.getAttribute("data-name")+" 编号["+b.getAttribute("data-id")+"] 阈值___");}'
162
- + '</script>';
179
+ body +=
180
+ "<script>function xFix(b){var s=[...document.querySelectorAll(\"#x-list input:checked\")];if(!s.length){b.setAttribute(\"data-t\",\"\");alert(\""
181
+ + SX.k001
182
+ + "\");return;}var ids=s.map(function(c){return c.getAttribute(\"data-id\");}).join(\",\");var names=s.map(function(c){return c.getAttribute(\"data-name\");}).join(\"、\");b.setAttribute(\"data-t\",\""
183
+ + SX.k002
184
+ + "\"+names+\" "
185
+ + SX.k003
186
+ + "[\"+ids+\"] "
187
+ + SX.k004
188
+ + "___\");}function xThr(b){var s=[...document.querySelectorAll(\"#x-list input:checked\")];if(!s.length){b.setAttribute(\"data-t\",\"\");alert(\""
189
+ + SX.k005
190
+ + "\");return;}b.setAttribute(\"data-t\",\""
191
+ + SX.k006
192
+ + "\"+s.map(function(c){return c.getAttribute(\"data-name\");}).join(\"、\")+\" "
193
+ + SX.k007
194
+ + "___\");}function xOneThr(b){b.setAttribute(\"data-t\",\""
195
+ + SX.k008
196
+ + "\"+b.getAttribute(\"data-name\")+\" "
197
+ + SX.k009
198
+ + "[\"+b.getAttribute(\"data-id\")+\"] "
199
+ + SX.k010
200
+ + "___\");}</script>";
163
201
  // 主 operations 唯一复制区(envelope 投影;上下两分支旧按钮已删,只留这一处)。
164
202
  body += homeCopyArea({
165
203
  data: { envelope: env },
@@ -167,10 +205,10 @@ export function renderFamilyPage(env, ctx) {
167
205
  });
168
206
  const content = head
169
207
  + body
170
- + sectionOf('fields', '字段')
171
- + sectionOf('operations', '操作')
172
- + sectionOf('empty', '空态与异常')
173
- + sectionOf('status', '状态词');
208
+ + sectionOf('fields', m('skill-home.express-pages-stock.c023'))
209
+ + sectionOf('operations', m('skill-home.express-pages-stock.c024'))
210
+ + sectionOf('empty', m('skill-home.express-pages-stock.c025'))
211
+ + sectionOf('status', m('skill-home.express-pages-stock.c026'));
174
212
  return fillTemplate(template, content);
175
213
  }
176
214
  //# sourceMappingURL=stock.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"stock.js","sourceRoot":"","sources":["../../../src/express/pages/stock.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"stock.js","sourceRoot":"","sources":["../../../src/express/pages/stock.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"shopping.d.ts","sourceRoot":"","sources":["../../src/express/shopping.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAU7C,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CA8FzF;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CA0CzF"}
1
+ {"version":3,"file":"shopping.d.ts","sourceRoot":"","sources":["../../src/express/shopping.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAY7C,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CA8FzF;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CA0CzF"}
@@ -1,40 +1,42 @@
1
1
  // 快递购物能力·购物查询与购物管理(`home.shopping.query`/`home.shopping.write` 的处理函数,
2
2
  // #800 从 cmd_read 逐字搬迁)。出参 list/receipt 形,行为与搬迁前一致。
3
+ import { STATUS_AT_HOME, STATUS_SPARE, STATUS_SHIPPING } from '../fetch/db.js';
3
4
  import { getItemById, adjustQuantity, setLocationStatus, listShopping, addShopping, checkShopping, setThreshold, } from '../fetch/index.js';
4
5
  import { fail } from '../shared/fail.js';
5
6
  import { asInt } from '../shared/params.js';
6
7
  import { needId } from '../policy/index.js';
7
8
  import { buildShoppingList, buildReceipt } from '../render/index.js';
9
+ import { m } from '../entries/index.js';
8
10
  export function runShoppingQuery(params, handle) {
9
11
  const kind = params.kind ?? 'list';
10
12
  if (kind === 'missing') {
11
13
  // 缺货:有阈值且(在家+备用)合计<阈值;只计在家/备用,快递中不算在库(沿老 ops 口径)。
12
14
  // #927:分类名走 categories JOIN(老库无 items.category 列)。
13
- const rows = handle.db.prepare("SELECT i.id, i.name, c.name AS category_name, ifnull(sum(CASE WHEN l.location_status IN ('在家','备用') THEN l.quantity ELSE 0 END),0) AS qty, s.threshold FROM items i JOIN stock_thresholds s ON s.item_id=i.id LEFT JOIN item_locations l ON l.item_id=i.id LEFT JOIN categories c ON c.id=i.category_id GROUP BY i.id HAVING qty < s.threshold ORDER BY i.name").all();
15
+ const rows = handle.db.prepare(`SELECT i.id, i.name, c.name AS category_name, ifnull(sum(CASE WHEN l.location_status IN ('${STATUS_AT_HOME}','${STATUS_SPARE}') THEN l.quantity ELSE 0 END),0) AS qty, s.threshold FROM items i JOIN stock_thresholds s ON s.item_id=i.id LEFT JOIN item_locations l ON l.item_id=i.id LEFT JOIN categories c ON c.id=i.category_id GROUP BY i.id HAVING qty < s.threshold ORDER BY i.name`).all();
14
16
  const items = rows.map((r) => {
15
17
  const qty = Number(r.qty ?? 0);
16
18
  const th = Number(r.threshold);
17
- const status = qty <= 0 ? '空' : '低';
19
+ const status = qty <= 0 ? m('skill-home.express-shopping.c001') : m('skill-home.express-shopping.c002');
18
20
  const suggest = Math.max(2 * th - qty, 1);
19
21
  return {
20
22
  name: String(r.name),
21
23
  id: r.id,
22
24
  current: qty,
23
25
  threshold: th,
24
- threshold_source: '囤货设置',
26
+ threshold_source: m('skill-home.express-shopping.c003'),
25
27
  status,
26
28
  suggest,
27
- category_name: String(r.category_name ?? '(未分类)'),
29
+ category_name: String(r.category_name ?? m('skill-home.express-shopping.c004')),
28
30
  };
29
31
  });
30
32
  const base = buildShoppingList(items.map((it) => ({ name: it.name })));
31
- return { ...base, items, scope: '全屋', threshold_default: 1 };
33
+ return { ...base, items, scope: m('skill-home.express-shopping.c005'), threshold_default: 1 };
32
34
  }
33
35
  if (kind === 'stock') {
34
36
  // 囤货:有阈值物品给当前量/阈值/库存状态;无阈值常用品给提示(按使用次数前 10)。
35
37
  // #927:分类名走 categories JOIN。
36
- const rows = handle.db.prepare("SELECT i.id, i.name, c.name AS category_name, ifnull(sum(CASE WHEN l.location_status IN ('在家','备用') THEN l.quantity ELSE 0 END),0) AS qty, s.threshold FROM items i LEFT JOIN item_locations l ON l.item_id=i.id LEFT JOIN stock_thresholds s ON s.item_id=i.id LEFT JOIN categories c ON c.id=i.category_id GROUP BY i.id ORDER BY i.name").all();
37
- const stockOf = (qty, th) => (qty <= 0 ? '空' : qty < th ? '低' : '充足');
38
+ const rows = handle.db.prepare(`SELECT i.id, i.name, c.name AS category_name, ifnull(sum(CASE WHEN l.location_status IN ('${STATUS_AT_HOME}','${STATUS_SPARE}') THEN l.quantity ELSE 0 END),0) AS qty, s.threshold FROM items i LEFT JOIN item_locations l ON l.item_id=i.id LEFT JOIN stock_thresholds s ON s.item_id=i.id LEFT JOIN categories c ON c.id=i.category_id GROUP BY i.id ORDER BY i.name`).all();
39
+ const stockOf = (qty, th) => (qty <= 0 ? m('skill-home.express-shopping.c006') : qty < th ? m('skill-home.express-shopping.c007') : m('skill-home.express-shopping.c008'));
38
40
  const items = rows
39
41
  .filter((r) => r.threshold !== null && r.threshold !== undefined)
40
42
  .map((r) => {
@@ -46,13 +48,13 @@ export function runShoppingQuery(params, handle) {
46
48
  current: qty,
47
49
  threshold: th,
48
50
  status: stockOf(qty, th),
49
- category_name: String(r.category_name ?? '(未分类)'),
51
+ category_name: String(r.category_name ?? m('skill-home.express-shopping.c009')),
50
52
  };
51
53
  });
52
54
  const hints = handle.db.prepare("SELECT i.id, i.name, c.name AS category_name FROM items i LEFT JOIN categories c ON c.id=i.category_id WHERE NOT EXISTS (SELECT 1 FROM stock_thresholds s WHERE s.item_id=i.id) ORDER BY i.access_count DESC, i.name LIMIT 10").all().map((r) => ({
53
55
  name: String(r.name),
54
56
  id: r.id,
55
- category_name: String(r.category_name ?? '(未分类)'),
57
+ category_name: String(r.category_name ?? m('skill-home.express-shopping.c010')),
56
58
  }));
57
59
  const base = buildShoppingList(items.map((it) => ({ name: it.name })));
58
60
  return { ...base, items, hints };
@@ -60,8 +62,8 @@ export function runShoppingQuery(params, handle) {
60
62
  if (kind === 'express') {
61
63
  const days = params.timeout_days !== undefined ? Number(params.timeout_days) : 7;
62
64
  if (!Number.isInteger(days) || days <= 0)
63
- fail(2, 'timeout-days 须为正整数');
64
- const rows = handle.db.prepare("SELECT i.id, i.name, c.name AS category_name, i.photo AS photo, l.location AS location, l.quantity AS quantity, l.purchase_date AS purchase_date FROM items i JOIN item_locations l ON l.item_id=i.id LEFT JOIN categories c ON c.id=i.category_id WHERE l.location_status='快递中' ORDER BY l.purchase_date LIMIT 50").all();
65
+ fail(2, m('skill-home.express-shopping.c011'));
66
+ const rows = handle.db.prepare(`SELECT i.id, i.name, c.name AS category_name, i.photo AS photo, l.location AS location, l.quantity AS quantity, l.purchase_date AS purchase_date FROM items i JOIN item_locations l ON l.item_id=i.id LEFT JOIN categories c ON c.id=i.category_id WHERE l.location_status='${STATUS_SHIPPING}' ORDER BY l.purchase_date LIMIT 50`).all();
65
67
  const today = Date.now();
66
68
  const items = rows.map((r) => {
67
69
  const t = r.purchase_date ? Math.floor((today - new Date(r.purchase_date).getTime()) / 86400000) : 0;
@@ -70,7 +72,7 @@ export function runShoppingQuery(params, handle) {
70
72
  name: String(r.name),
71
73
  id: r.id,
72
74
  quantity: Number(r.quantity ?? 1),
73
- category_name: String(r.category_name ?? '(未分类)'),
75
+ category_name: String(r.category_name ?? m('skill-home.express-shopping.c012')),
74
76
  location: String(r.location ?? ''),
75
77
  photo: r.photo ? String(r.photo) : '',
76
78
  days: wait,
@@ -87,8 +89,8 @@ export function runShoppingQuery(params, handle) {
87
89
  quantity: Number(r.quantity ?? 1),
88
90
  routine: r.routine ? String(r.routine) : '',
89
91
  checked: Number(r.checked ?? 0),
90
- sourceLabel: r.routine ? '例行' : '手动记的',
91
- statusLabel: Number(r.checked ?? 0) ? '已买' : '待买',
92
+ sourceLabel: r.routine ? m('skill-home.express-shopping.c013') : m('skill-home.express-shopping.c014'),
93
+ statusLabel: Number(r.checked ?? 0) ? m('skill-home.express-shopping.c015') : m('skill-home.express-shopping.c016'),
92
94
  }));
93
95
  const base = buildShoppingList(items.map((it) => ({ name: it.name })));
94
96
  return { ...base, items };
@@ -97,49 +99,49 @@ export function runShoppingWrite(params, handle) {
97
99
  const op = params.op ?? 'check';
98
100
  if (op === 'list-add') {
99
101
  if (typeof params.name !== 'string' || !params.name.trim())
100
- fail(2, 'list-add 须给 name');
102
+ fail(2, m('skill-home.express-shopping.c017'));
101
103
  const id = addShopping(handle, params.name, Number(params.quantity ?? 1), params.routine ?? null);
102
- return buildReceipt('已加入购物清单:' + id);
104
+ return buildReceipt(m('skill-home.express-shopping.c018', { p0: String(id) }));
103
105
  }
104
106
  if (op === 'list-check' || op === 'check') {
105
107
  const ids = String(params.ids ?? '').split(',').map((s) => Number(s.trim())).filter((n) => Number.isInteger(n) && n > 0);
106
108
  if (!ids.length)
107
- fail(2, 'list-check 须给 ids 逗号列表');
109
+ fail(2, m('skill-home.express-shopping.c019'));
108
110
  const n = checkShopping(handle, ids);
109
- return buildReceipt('已勾选:' + n + ' 项');
111
+ return buildReceipt(m('skill-home.express-shopping.c020', { p0: String(n) }));
110
112
  }
111
113
  if (op === 'missing-to-list') {
112
114
  const ids = String(params.ids ?? '').split(',').map((s) => Number(s.trim())).filter((n) => Number.isInteger(n) && n > 0);
113
115
  if (!ids.length)
114
- fail(2, 'missing-to-list 须给 ids');
116
+ fail(2, m('skill-home.express-shopping.c021'));
115
117
  for (const id of ids) {
116
118
  const it = getItemById(handle, id);
117
119
  addShopping(handle, it.name, 1, null);
118
120
  }
119
- return buildReceipt('缺货已进清单:' + ids.length + ' 项');
121
+ return buildReceipt(m('skill-home.express-shopping.c022', { p0: String(ids.length) }));
120
122
  }
121
123
  if (op === 'stock-threshold' || op === 'stock-set-threshold') {
122
124
  const id = asInt(params.id ?? params.item_id, 'id');
123
125
  const th = params.threshold;
124
126
  if (id === undefined || !Number.isInteger(th))
125
- fail(2, '须给 id+threshold');
127
+ fail(2, m('skill-home.express-shopping.c023'));
126
128
  setThreshold(handle, id, th);
127
- return buildReceipt('已设阈值:' + id + '=' + th);
129
+ return buildReceipt(m('skill-home.express-shopping.c024', { p0: String(id), p1: String(th) }));
128
130
  }
129
131
  if (op === 'stock-fix') {
130
132
  const id = needId(params);
131
133
  const qty = Number(params.quantity);
132
134
  if (!Number.isInteger(qty) || qty < 0)
133
- fail(2, 'stock-fix 须给 quantity 非负整数');
135
+ fail(2, m('skill-home.express-shopping.c025'));
134
136
  adjustQuantity(handle, id, { set: qty });
135
- return buildReceipt('已校准库存:' + id + '=' + qty);
137
+ return buildReceipt(m('skill-home.express-shopping.c026', { p0: String(id), p1: String(qty) }));
136
138
  }
137
139
  if (op === 'express-confirm') {
138
140
  const id = needId(params);
139
- setLocationStatus(handle, id, '在家');
140
- return buildReceipt('已收货确认:' + id + '(快递中→在家)');
141
+ setLocationStatus(handle, id, m('skill-home.express-shopping.c027'));
142
+ return buildReceipt(m('skill-home.express-shopping.c028', { p0: String(id) }));
141
143
  }
142
- fail(2, '未知 shopping op:' + op);
144
+ fail(2, m('skill-home.express-shopping.c029', { p0: String(op) }));
143
145
  return null;
144
146
  }
145
147
  //# sourceMappingURL=shopping.js.map