skill-bill 0.1.0 → 0.2.0

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 (298) hide show
  1. package/SKILL.md +127 -0
  2. package/dist/.gen-inputs.json +14 -0
  3. package/dist/cli/cmd_read.js +133 -142
  4. package/dist/cli/cmd_read.js.map +1 -1
  5. package/dist/cli/registry.d.ts +15 -0
  6. package/dist/cli/registry.d.ts.map +1 -0
  7. package/dist/cli/registry.js +22 -0
  8. package/dist/cli/registry.js.map +1 -0
  9. package/dist/fetch/db.d.ts +4 -0
  10. package/dist/fetch/db.d.ts.map +1 -1
  11. package/dist/fetch/db.js +12 -0
  12. package/dist/fetch/db.js.map +1 -1
  13. package/dist/fetch/index.d.ts +1 -1
  14. package/dist/fetch/index.d.ts.map +1 -1
  15. package/dist/fetch/index.js +1 -1
  16. package/dist/fetch/index.js.map +1 -1
  17. package/dist/help/index.d.ts +1 -0
  18. package/dist/help/index.d.ts.map +1 -1
  19. package/dist/help/index.js +1 -0
  20. package/dist/help/index.js.map +1 -1
  21. package/dist/help/lookup.d.ts.map +1 -1
  22. package/dist/help/lookup.js +3 -2
  23. package/dist/help/lookup.js.map +1 -1
  24. package/dist/help/writeWire.d.ts +16 -0
  25. package/dist/help/writeWire.d.ts.map +1 -0
  26. package/dist/help/writeWire.js +109 -0
  27. package/dist/help/writeWire.js.map +1 -0
  28. package/dist/output.d.ts +21 -0
  29. package/dist/output.d.ts.map +1 -0
  30. package/dist/output.js +48 -0
  31. package/dist/output.js.map +1 -0
  32. package/dist/policy/category.d.ts +5 -0
  33. package/dist/policy/category.d.ts.map +1 -1
  34. package/dist/policy/category.js +9 -2
  35. package/dist/policy/category.js.map +1 -1
  36. package/dist/policy/index.d.ts +1 -1
  37. package/dist/policy/index.d.ts.map +1 -1
  38. package/dist/policy/index.js +1 -1
  39. package/dist/policy/index.js.map +1 -1
  40. package/dist/policy/record.d.ts +12 -0
  41. package/dist/policy/record.d.ts.map +1 -1
  42. package/dist/policy/record.js +27 -0
  43. package/dist/policy/record.js.map +1 -1
  44. package/dist/policy/wakewords.d.ts +4 -0
  45. package/dist/policy/wakewords.d.ts.map +1 -1
  46. package/dist/policy/wakewords.js +12 -7
  47. package/dist/policy/wakewords.js.map +1 -1
  48. package/dist/query/commands.d.ts +19 -0
  49. package/dist/query/commands.d.ts.map +1 -0
  50. package/dist/query/commands.js +40 -0
  51. package/dist/query/commands.js.map +1 -0
  52. package/dist/query/detail.d.ts +26 -0
  53. package/dist/query/detail.d.ts.map +1 -0
  54. package/dist/query/detail.js +115 -0
  55. package/dist/query/detail.js.map +1 -0
  56. package/dist/query/index.d.ts +13 -0
  57. package/dist/query/index.d.ts.map +1 -0
  58. package/dist/query/index.js +12 -0
  59. package/dist/query/index.js.map +1 -0
  60. package/dist/query/list.d.ts +78 -0
  61. package/dist/query/list.d.ts.map +1 -0
  62. package/dist/query/list.js +110 -0
  63. package/dist/query/list.js.map +1 -0
  64. package/dist/query/read.d.ts +21 -0
  65. package/dist/query/read.d.ts.map +1 -0
  66. package/dist/query/read.js +301 -0
  67. package/dist/query/read.js.map +1 -0
  68. package/dist/record/collect.d.ts +18 -0
  69. package/dist/record/collect.d.ts.map +1 -0
  70. package/dist/record/collect.js +15 -0
  71. package/dist/record/collect.js.map +1 -0
  72. package/dist/record/collectBody.d.ts +29 -0
  73. package/dist/record/collectBody.d.ts.map +1 -0
  74. package/dist/record/collectBody.js +196 -0
  75. package/dist/record/collectBody.js.map +1 -0
  76. package/dist/record/commands.d.ts +11 -0
  77. package/dist/record/commands.d.ts.map +1 -0
  78. package/dist/record/commands.js +22 -0
  79. package/dist/record/commands.js.map +1 -0
  80. package/dist/record/index.d.ts +14 -0
  81. package/dist/record/index.d.ts.map +1 -0
  82. package/dist/record/index.js +12 -0
  83. package/dist/record/index.js.map +1 -0
  84. package/dist/record/receipt.d.ts +16 -0
  85. package/dist/record/receipt.d.ts.map +1 -0
  86. package/dist/record/receipt.js +11 -0
  87. package/dist/record/receipt.js.map +1 -0
  88. package/dist/record/receiptBody.d.ts +5 -0
  89. package/dist/record/receiptBody.d.ts.map +1 -0
  90. package/dist/record/receiptBody.js +112 -0
  91. package/dist/record/receiptBody.js.map +1 -0
  92. package/dist/record/scene-batch.d.ts +3 -0
  93. package/dist/record/scene-batch.d.ts.map +1 -0
  94. package/dist/record/scene-batch.js +211 -0
  95. package/dist/record/scene-batch.js.map +1 -0
  96. package/dist/record/scene-borrow.d.ts +3 -0
  97. package/dist/record/scene-borrow.d.ts.map +1 -0
  98. package/dist/record/scene-borrow.js +285 -0
  99. package/dist/record/scene-borrow.js.map +1 -0
  100. package/dist/record/scene-collect.d.ts +3 -0
  101. package/dist/record/scene-collect.d.ts.map +1 -0
  102. package/dist/record/scene-collect.js +294 -0
  103. package/dist/record/scene-collect.js.map +1 -0
  104. package/dist/record/scene-expense.d.ts +3 -0
  105. package/dist/record/scene-expense.d.ts.map +1 -0
  106. package/dist/record/scene-expense.js +21 -0
  107. package/dist/record/scene-expense.js.map +1 -0
  108. package/dist/record/scene-income.d.ts +3 -0
  109. package/dist/record/scene-income.d.ts.map +1 -0
  110. package/dist/record/scene-income.js +219 -0
  111. package/dist/record/scene-income.js.map +1 -0
  112. package/dist/record/scene-installment.d.ts +3 -0
  113. package/dist/record/scene-installment.d.ts.map +1 -0
  114. package/dist/record/scene-installment.js +248 -0
  115. package/dist/record/scene-installment.js.map +1 -0
  116. package/dist/record/scene-lend.d.ts +3 -0
  117. package/dist/record/scene-lend.d.ts.map +1 -0
  118. package/dist/record/scene-lend.js +273 -0
  119. package/dist/record/scene-lend.js.map +1 -0
  120. package/dist/record/scene-photo.d.ts +3 -0
  121. package/dist/record/scene-photo.d.ts.map +1 -0
  122. package/dist/record/scene-photo.js +262 -0
  123. package/dist/record/scene-photo.js.map +1 -0
  124. package/dist/record/scene-plain.d.ts +3 -0
  125. package/dist/record/scene-plain.d.ts.map +1 -0
  126. package/dist/record/scene-plain.js +221 -0
  127. package/dist/record/scene-plain.js.map +1 -0
  128. package/dist/record/scene-refund.d.ts +3 -0
  129. package/dist/record/scene-refund.d.ts.map +1 -0
  130. package/dist/record/scene-refund.js +281 -0
  131. package/dist/record/scene-refund.js.map +1 -0
  132. package/dist/record/scene-reimburse-done.d.ts +3 -0
  133. package/dist/record/scene-reimburse-done.d.ts.map +1 -0
  134. package/dist/record/scene-reimburse-done.js +288 -0
  135. package/dist/record/scene-reimburse-done.js.map +1 -0
  136. package/dist/record/scene-reimburse.d.ts +3 -0
  137. package/dist/record/scene-reimburse.d.ts.map +1 -0
  138. package/dist/record/scene-reimburse.js +224 -0
  139. package/dist/record/scene-reimburse.js.map +1 -0
  140. package/dist/record/scene-repay.d.ts +3 -0
  141. package/dist/record/scene-repay.d.ts.map +1 -0
  142. package/dist/record/scene-repay.js +294 -0
  143. package/dist/record/scene-repay.js.map +1 -0
  144. package/dist/record/scene-restore.d.ts +3 -0
  145. package/dist/record/scene-restore.d.ts.map +1 -0
  146. package/dist/record/scene-restore.js +250 -0
  147. package/dist/record/scene-restore.js.map +1 -0
  148. package/dist/record/scene-undo.d.ts +3 -0
  149. package/dist/record/scene-undo.d.ts.map +1 -0
  150. package/dist/record/scene-undo.js +262 -0
  151. package/dist/record/scene-undo.js.map +1 -0
  152. package/dist/record/scene-update.d.ts +3 -0
  153. package/dist/record/scene-update.d.ts.map +1 -0
  154. package/dist/record/scene-update.js +249 -0
  155. package/dist/record/scene-update.js.map +1 -0
  156. package/dist/record/scene.d.ts +79 -0
  157. package/dist/record/scene.d.ts.map +1 -0
  158. package/dist/record/scene.js +39 -0
  159. package/dist/record/scene.js.map +1 -0
  160. package/dist/record/slots.d.ts +16 -0
  161. package/dist/record/slots.d.ts.map +1 -0
  162. package/dist/record/slots.js +72 -0
  163. package/dist/record/slots.js.map +1 -0
  164. package/dist/record/write.d.ts +9 -0
  165. package/dist/record/write.d.ts.map +1 -0
  166. package/dist/record/write.js +186 -0
  167. package/dist/record/write.js.map +1 -0
  168. package/dist/render/envelope.d.ts.map +1 -1
  169. package/dist/render/envelope.js +21 -8
  170. package/dist/render/envelope.js.map +1 -1
  171. package/dist/render/errors.d.ts +1 -1
  172. package/dist/render/errors.d.ts.map +1 -1
  173. package/dist/render/errors.js.map +1 -1
  174. package/dist/render/helpFile.d.ts +85 -0
  175. package/dist/render/helpFile.d.ts.map +1 -0
  176. package/dist/render/helpFile.js +110 -0
  177. package/dist/render/helpFile.js.map +1 -0
  178. package/dist/render/helpPaths.d.ts +19 -0
  179. package/dist/render/helpPaths.d.ts.map +1 -0
  180. package/dist/render/helpPaths.js +19 -0
  181. package/dist/render/helpPaths.js.map +1 -0
  182. package/dist/render/html.js +1 -1
  183. package/dist/render/html.js.map +1 -1
  184. package/dist/render/index.d.ts +5 -1
  185. package/dist/render/index.d.ts.map +1 -1
  186. package/dist/render/index.js +4 -1
  187. package/dist/render/index.js.map +1 -1
  188. package/dist/render/templates.js +1 -1
  189. package/dist/render/templates.js.map +1 -1
  190. package/dist/render/views.d.ts +0 -22
  191. package/dist/render/views.d.ts.map +1 -1
  192. package/dist/render/views.js +1 -16
  193. package/dist/render/views.js.map +1 -1
  194. package/dist/shared/blockedSlots.d.ts +39 -0
  195. package/dist/shared/blockedSlots.d.ts.map +1 -0
  196. package/dist/shared/blockedSlots.js +105 -0
  197. package/dist/shared/blockedSlots.js.map +1 -0
  198. package/dist/shared/candidatePick.d.ts +50 -0
  199. package/dist/shared/candidatePick.d.ts.map +1 -0
  200. package/dist/shared/candidatePick.js +115 -0
  201. package/dist/shared/candidatePick.js.map +1 -0
  202. package/dist/shared/collectFrame.d.ts +15 -0
  203. package/dist/shared/collectFrame.d.ts.map +1 -0
  204. package/dist/shared/collectFrame.js +34 -0
  205. package/dist/shared/collectFrame.js.map +1 -0
  206. package/dist/shared/commandSpec.d.ts +72 -0
  207. package/dist/shared/commandSpec.d.ts.map +1 -0
  208. package/dist/shared/commandSpec.js +2 -0
  209. package/dist/shared/commandSpec.js.map +1 -0
  210. package/dist/shared/copyArea.d.ts +51 -0
  211. package/dist/shared/copyArea.d.ts.map +1 -0
  212. package/dist/shared/copyArea.js +122 -0
  213. package/dist/shared/copyArea.js.map +1 -0
  214. package/dist/shared/diffTable.d.ts +26 -0
  215. package/dist/shared/diffTable.d.ts.map +1 -0
  216. package/dist/shared/diffTable.js +77 -0
  217. package/dist/shared/diffTable.js.map +1 -0
  218. package/dist/shared/docPage.d.ts +17 -0
  219. package/dist/shared/docPage.d.ts.map +1 -0
  220. package/dist/shared/docPage.js +111 -0
  221. package/dist/shared/docPage.js.map +1 -0
  222. package/dist/shared/duplicateNote.d.ts +40 -0
  223. package/dist/shared/duplicateNote.d.ts.map +1 -0
  224. package/dist/shared/duplicateNote.js +96 -0
  225. package/dist/shared/duplicateNote.js.map +1 -0
  226. package/dist/shared/emptyNote.d.ts +15 -0
  227. package/dist/shared/emptyNote.d.ts.map +1 -0
  228. package/dist/shared/emptyNote.js +27 -0
  229. package/dist/shared/emptyNote.js.map +1 -0
  230. package/dist/shared/errorReceipt.d.ts +21 -0
  231. package/dist/shared/errorReceipt.d.ts.map +1 -0
  232. package/dist/shared/errorReceipt.js +37 -0
  233. package/dist/shared/errorReceipt.js.map +1 -0
  234. package/dist/shared/flowSteps.d.ts +25 -0
  235. package/dist/shared/flowSteps.d.ts.map +1 -0
  236. package/dist/shared/flowSteps.js +49 -0
  237. package/dist/shared/flowSteps.js.map +1 -0
  238. package/dist/shared/installmentPreview.d.ts +23 -0
  239. package/dist/shared/installmentPreview.d.ts.map +1 -0
  240. package/dist/shared/installmentPreview.js +144 -0
  241. package/dist/shared/installmentPreview.js.map +1 -0
  242. package/dist/shared/outsideScan.d.ts +34 -0
  243. package/dist/shared/outsideScan.d.ts.map +1 -0
  244. package/dist/shared/outsideScan.js +116 -0
  245. package/dist/shared/outsideScan.js.map +1 -0
  246. package/dist/shared/pageIdentity.d.ts +30 -0
  247. package/dist/shared/pageIdentity.d.ts.map +1 -0
  248. package/dist/shared/pageIdentity.js +33 -0
  249. package/dist/shared/pageIdentity.js.map +1 -0
  250. package/dist/shared/pageShell.d.ts +24 -0
  251. package/dist/shared/pageShell.d.ts.map +1 -0
  252. package/dist/shared/pageShell.js +42 -0
  253. package/dist/shared/pageShell.js.map +1 -0
  254. package/dist/shared/photoEscape.d.ts +53 -0
  255. package/dist/shared/photoEscape.d.ts.map +1 -0
  256. package/dist/shared/photoEscape.js +139 -0
  257. package/dist/shared/photoEscape.js.map +1 -0
  258. package/dist/shared/prefillNote.d.ts +21 -0
  259. package/dist/shared/prefillNote.d.ts.map +1 -0
  260. package/dist/shared/prefillNote.js +78 -0
  261. package/dist/shared/prefillNote.js.map +1 -0
  262. package/dist/shared/receiptParts.d.ts +12 -0
  263. package/dist/shared/receiptParts.d.ts.map +1 -0
  264. package/dist/shared/receiptParts.js +38 -0
  265. package/dist/shared/receiptParts.js.map +1 -0
  266. package/dist/shared/recentPicks.d.ts +26 -0
  267. package/dist/shared/recentPicks.d.ts.map +1 -0
  268. package/dist/shared/recentPicks.js +41 -0
  269. package/dist/shared/recentPicks.js.map +1 -0
  270. package/dist/shared/recordPicker.d.ts +32 -0
  271. package/dist/shared/recordPicker.d.ts.map +1 -0
  272. package/dist/shared/recordPicker.js +201 -0
  273. package/dist/shared/recordPicker.js.map +1 -0
  274. package/dist/shared/rowEditorTable.d.ts +31 -0
  275. package/dist/shared/rowEditorTable.d.ts.map +1 -0
  276. package/dist/shared/rowEditorTable.js +103 -0
  277. package/dist/shared/rowEditorTable.js.map +1 -0
  278. package/dist/shared/summaryRow.d.ts +44 -0
  279. package/dist/shared/summaryRow.d.ts.map +1 -0
  280. package/dist/shared/summaryRow.js +82 -0
  281. package/dist/shared/summaryRow.js.map +1 -0
  282. package/dist/shared/typeBadge.d.ts +21 -0
  283. package/dist/shared/typeBadge.d.ts.map +1 -0
  284. package/dist/shared/typeBadge.js +68 -0
  285. package/dist/shared/typeBadge.js.map +1 -0
  286. package/dist/shared/userWording.d.ts +54 -0
  287. package/dist/shared/userWording.d.ts.map +1 -0
  288. package/dist/shared/userWording.js +131 -0
  289. package/dist/shared/userWording.js.map +1 -0
  290. package/dist/shared/writeParts.d.ts +62 -0
  291. package/dist/shared/writeParts.d.ts.map +1 -0
  292. package/dist/shared/writeParts.js +39 -0
  293. package/dist/shared/writeParts.js.map +1 -0
  294. package/dist/triggers/wake-assets.d.ts +37 -0
  295. package/dist/triggers/wake-assets.d.ts.map +1 -0
  296. package/dist/triggers/wake-assets.js +951 -0
  297. package/dist/triggers/wake-assets.js.map +1 -0
  298. package/package.json +10 -4
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/render/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AACpG,OAAO,EAAE,mBAAmB,EAAE,UAAU,EAAE,kBAAkB,EAAE,aAAa,EAAE,cAAc,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,cAAc,EAAE,UAAU,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACnN,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE3E,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,aAAa,EAAE,YAAY,EAAE,UAAU,EAAE,cAAc,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/render/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AACpG,OAAO,EAAE,mBAAmB,EAAE,UAAU,EAAE,kBAAkB,EAAE,aAAa,EAAE,cAAc,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,cAAc,EAAE,UAAU,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACnN,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE3E,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,aAAa,EAAE,YAAY,EAAE,UAAU,EAAE,cAAc,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEjL,OAAO,EACL,cAAc,EAAE,oBAAoB,EAAE,eAAe,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,YAAY,EAC1G,gBAAgB,EAAE,iBAAiB,EAAE,eAAe,EAAE,eAAe,EAAE,iBAAiB,EAAE,kBAAkB,EAC5G,cAAc,GACf,MAAM,eAAe,CAAC;AAEvB,oEAAoE;AACpE,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC"}
@@ -1,4 +1,4 @@
1
- // 渲染层·模板装载:16 模板随包发布;未知/缺失大声失败。
1
+ // 页面交付·模板装载:16 模板随包发布;未知/缺失大声失败。
2
2
  import { readFileSync } from 'node:fs';
3
3
  import { dirname, join } from 'node:path';
4
4
  import { fileURLToPath } from 'node:url';
@@ -1 +1 @@
1
- {"version":3,"file":"templates.js","sourceRoot":"","sources":["../../src/render/templates.ts"],"names":[],"mappings":"AAAA,gCAAgC;AAChC,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAE9C,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,YAAY;IACZ,eAAe;IACf,cAAc;IACd,cAAc;IACd,eAAe;IACf,eAAe;IACf,mBAAmB;IACnB,kBAAkB;IAClB,gBAAgB;IAChB,YAAY;IACZ,YAAY;IACZ,eAAe;IACf,eAAe;IACf,aAAa;IACb,WAAW;IACX,MAAM;CACE,CAAC;AAGX,sBAAsB;AACtB,MAAM,UAAU,WAAW,CAAC,GAAW;IACrC,QAAQ,GAAG,EAAE,CAAC;QACZ,KAAK,iBAAiB,CAAC,CAAC,OAAO,YAAY,CAAC;QAC5C,KAAK,oBAAoB,CAAC,CAAC,OAAO,eAAe,CAAC;QAClD,KAAK,mBAAmB,CAAC,CAAC,OAAO,cAAc,CAAC;QAChD,KAAK,mBAAmB,CAAC,CAAC,OAAO,cAAc,CAAC;QAChD,KAAK,oBAAoB,CAAC,CAAC,OAAO,eAAe,CAAC;QAClD,KAAK,oBAAoB,CAAC,CAAC,OAAO,eAAe,CAAC;QAClD,KAAK,wBAAwB,CAAC,CAAC,OAAO,mBAAmB,CAAC;QAC1D,KAAK,uBAAuB,CAAC,CAAC,OAAO,kBAAkB,CAAC;QACxD,KAAK,qBAAqB,CAAC,CAAC,OAAO,gBAAgB,CAAC;QACpD,KAAK,iBAAiB,CAAC,CAAC,OAAO,YAAY,CAAC;QAC5C,KAAK,iBAAiB,CAAC,CAAC,OAAO,YAAY,CAAC;QAC5C,KAAK,oBAAoB,CAAC,CAAC,OAAO,eAAe,CAAC;QAClD,KAAK,oBAAoB,CAAC,CAAC,OAAO,eAAe,CAAC;QAClD,KAAK,kBAAkB,CAAC,CAAC,OAAO,aAAa,CAAC;QAC9C,KAAK,gBAAgB,CAAC,CAAC,OAAO,WAAW,CAAC;QAC1C,KAAK,kBAAkB,CAAC,CAAC,OAAO,MAAM,CAAC;QACvC,OAAO,CAAC,CAAC,MAAM,IAAI,eAAe,CAAC,kBAAkB,EAAE,QAAQ,GAAG,GAAG,CAAC,CAAC;IACzE,CAAC;AACH,CAAC;AAED,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,CAAC,CAAC;AAE5F,MAAM,UAAU,YAAY,CAAC,IAAY;IACvC,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,IAAoB,CAAC,EAAE,CAAC;QACnD,MAAM,IAAI,eAAe,CAAC,uBAAuB,EAAE,OAAO,GAAG,IAAI,CAAC,CAAC;IACrE,CAAC;IACD,IAAI,CAAC;QAAC,OAAO,YAAY,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,GAAG,OAAO,CAAC,EAAE,MAAM,CAAC,CAAC;IAAC,CAAC;IACxE,OAAO,CAAC,EAAE,CAAC;QAAC,MAAM,IAAI,eAAe,CAAC,uBAAuB,EAAE,OAAO,GAAG,IAAI,CAAC,CAAC;IAAC,CAAC;AACnF,CAAC"}
1
+ {"version":3,"file":"templates.js","sourceRoot":"","sources":["../../src/render/templates.ts"],"names":[],"mappings":"AAAA,iCAAiC;AACjC,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAE9C,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,YAAY;IACZ,eAAe;IACf,cAAc;IACd,cAAc;IACd,eAAe;IACf,eAAe;IACf,mBAAmB;IACnB,kBAAkB;IAClB,gBAAgB;IAChB,YAAY;IACZ,YAAY;IACZ,eAAe;IACf,eAAe;IACf,aAAa;IACb,WAAW;IACX,MAAM;CACE,CAAC;AAGX,sBAAsB;AACtB,MAAM,UAAU,WAAW,CAAC,GAAW;IACrC,QAAQ,GAAG,EAAE,CAAC;QACZ,KAAK,iBAAiB,CAAC,CAAC,OAAO,YAAY,CAAC;QAC5C,KAAK,oBAAoB,CAAC,CAAC,OAAO,eAAe,CAAC;QAClD,KAAK,mBAAmB,CAAC,CAAC,OAAO,cAAc,CAAC;QAChD,KAAK,mBAAmB,CAAC,CAAC,OAAO,cAAc,CAAC;QAChD,KAAK,oBAAoB,CAAC,CAAC,OAAO,eAAe,CAAC;QAClD,KAAK,oBAAoB,CAAC,CAAC,OAAO,eAAe,CAAC;QAClD,KAAK,wBAAwB,CAAC,CAAC,OAAO,mBAAmB,CAAC;QAC1D,KAAK,uBAAuB,CAAC,CAAC,OAAO,kBAAkB,CAAC;QACxD,KAAK,qBAAqB,CAAC,CAAC,OAAO,gBAAgB,CAAC;QACpD,KAAK,iBAAiB,CAAC,CAAC,OAAO,YAAY,CAAC;QAC5C,KAAK,iBAAiB,CAAC,CAAC,OAAO,YAAY,CAAC;QAC5C,KAAK,oBAAoB,CAAC,CAAC,OAAO,eAAe,CAAC;QAClD,KAAK,oBAAoB,CAAC,CAAC,OAAO,eAAe,CAAC;QAClD,KAAK,kBAAkB,CAAC,CAAC,OAAO,aAAa,CAAC;QAC9C,KAAK,gBAAgB,CAAC,CAAC,OAAO,WAAW,CAAC;QAC1C,KAAK,kBAAkB,CAAC,CAAC,OAAO,MAAM,CAAC;QACvC,OAAO,CAAC,CAAC,MAAM,IAAI,eAAe,CAAC,kBAAkB,EAAE,QAAQ,GAAG,GAAG,CAAC,CAAC;IACzE,CAAC;AACH,CAAC;AAED,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,CAAC,CAAC;AAE5F,MAAM,UAAU,YAAY,CAAC,IAAY;IACvC,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,IAAoB,CAAC,EAAE,CAAC;QACnD,MAAM,IAAI,eAAe,CAAC,uBAAuB,EAAE,OAAO,GAAG,IAAI,CAAC,CAAC;IACrE,CAAC;IACD,IAAI,CAAC;QAAC,OAAO,YAAY,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,GAAG,OAAO,CAAC,EAAE,MAAM,CAAC,CAAC;IAAC,CAAC;IACxE,OAAO,CAAC,EAAE,CAAC;QAAC,MAAM,IAAI,eAAe,CAAC,uBAAuB,EAAE,OAAO,GAAG,IAAI,CAAC,CAAC;IAAC,CAAC;AACnF,CAAC"}
@@ -21,28 +21,6 @@ export declare function calcCategories(records: BillRow[]): {
21
21
  total: number;
22
22
  count: number;
23
23
  }[];
24
- export declare function buildRecordToday(date: string, records: BillRow[]): {
25
- items: BillItem[];
26
- total: number;
27
- date: string;
28
- kpi: ReturnType<typeof calcKpi>;
29
- };
30
- export declare function buildRecordRange(start: string, end: string, records: BillRow[]): {
31
- items: BillItem[];
32
- total: number;
33
- start: string;
34
- end: string;
35
- kpi: ReturnType<typeof calcKpi>;
36
- };
37
- export declare function buildRecordSearch(kind: string, records: BillRow[]): {
38
- items: BillItem[];
39
- total: number;
40
- kind: string;
41
- kpi: ReturnType<typeof calcKpi>;
42
- };
43
- export declare function buildRecordDetail(record: BillRow): {
44
- item: Record<string, unknown>;
45
- };
46
24
  export declare function buildRecordReceipt(message: string): {
47
25
  ok: boolean;
48
26
  message: string;
@@ -1 +1 @@
1
- {"version":3,"file":"views.d.ts","sourceRoot":"","sources":["../../src/render/views.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"views.d.ts","sourceRoot":"","sources":["../../src/render/views.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAG9C,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAC3D,OAAO,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;CACjE;AAED,wBAAgB,UAAU,CAAC,CAAC,EAAE,OAAO,GAAG,QAAQ,CAK/C;AAOD,wBAAgB,OAAO,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAU3G;AAGD,wBAAgB,cAAc,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,EAAE,CAavG;AAGD,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG;IAAE,EAAE,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAEpF;AAGD,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG;IAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAAE,CAcpG;AAGD,wBAAgB,YAAY,CAAC,IAAI,EAAE;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,OAAO,EAAE,CAAC;IAAC,CAAC,EAAE,OAAO,EAAE,CAAA;CAAE,GAAG;IAAE,OAAO,EAAE,MAAM,CAAA;CAAE,CAStH;AAGD,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,IAAI,GAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAA;CAAO,GAAG;IAAE,OAAO,EAAE,MAAM,CAAA;CAAE,CAoB/G;AAGD,wBAAgB,cAAc,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,CAE5I;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAEvH;AAGD,MAAM,WAAW,QAAQ;IAAG,MAAM,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;CAAE;AAEpG,wBAAgB,cAAc,CAAC,GAAG,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAC,EAAE,MAAM,GAAG;IAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAGhG"}
@@ -40,22 +40,7 @@ export function calcCategories(records) {
40
40
  it.total = Math.round(it.total * 100) / 100;
41
41
  return out;
42
42
  }
43
- // 单日/区间/搜索:items + total + kpi(供模板主卡)。
44
- export function buildRecordToday(date, records) {
45
- const items = records.map(toBillItem);
46
- return { items, total: items.length, date, kpi: calcKpi(records) };
47
- }
48
- export function buildRecordRange(start, end, records) {
49
- const items = records.map(toBillItem);
50
- return { items, total: items.length, start, end, kpi: calcKpi(records) };
51
- }
52
- export function buildRecordSearch(kind, records) {
53
- const items = records.map(toBillItem);
54
- return { items, total: items.length, kind, kpi: calcKpi(records) };
55
- }
56
- export function buildRecordDetail(record) {
57
- return { item: { ...toBillItem(record) } };
58
- }
43
+ // 单条/回执:items 与 total 由查询域与分析域各自装配,本件只留回执那一条的载荷形状。
59
44
  export function buildRecordReceipt(message) {
60
45
  return { ok: true, message };
61
46
  }
@@ -1 +1 @@
1
- {"version":3,"file":"views.js","sourceRoot":"","sources":["../../src/render/views.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"views.js","sourceRoot":"","sources":["../../src/render/views.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAC;AAO7C,MAAM,UAAU,UAAU,CAAC,CAAU;IACnC,OAAO;QACL,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM;QAC9D,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI;KACzE,CAAC;AACJ,CAAC;AAED,SAAS,UAAU,CAAC,CAAU;IAC5B,OAAO,CAAC,CAAC,MAAM,KAAK,IAAI,IAAI,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;AAC3D,CAAC;AAED,+CAA+C;AAC/C,MAAM,UAAU,OAAO,CAAC,OAAkB;IACxC,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;IACnD,IAAI,OAAO,GAAG,CAAC,CAAC;IAAC,IAAI,MAAM,GAAG,CAAC,CAAC;IAChC,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;QACrB,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC;YAAE,OAAO,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;;YAC3C,MAAM,IAAI,CAAC,CAAC,MAAM,CAAC;IAC1B,CAAC;IACD,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;IAC1C,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;IACxC,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,OAAO,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,EAAE,CAAC;AAClG,CAAC;AAED,uBAAuB;AACvB,MAAM,UAAU,cAAc,CAAC,OAAkB;IAC/C,MAAM,GAAG,GAAG,IAAI,GAAG,EAA8D,CAAC;IAClF,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;QACxB,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC;YAAE,SAAS;QAC7C,MAAM,GAAG,GAAG,CAAC,CAAC,QAAQ,IAAI,IAAI,CAAC;QAC/B,MAAM,EAAE,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;QACjE,EAAE,CAAC,KAAK,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;QAC/B,EAAE,CAAC,KAAK,IAAI,CAAC,CAAC;QACd,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IACnB,CAAC;IACD,MAAM,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;IAChE,KAAK,MAAM,EAAE,IAAI,GAAG;QAAE,EAAE,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;IAClE,OAAO,GAAG,CAAC;AACb,CAAC;AAED,mDAAmD;AACnD,MAAM,UAAU,kBAAkB,CAAC,OAAe;IAChD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;AAC/B,CAAC;AAED,oEAAoE;AACpE,MAAM,UAAU,aAAa,CAAC,KAAa,EAAE,OAAkB;IAC7D,MAAM,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC7B,MAAM,OAAO,GAA2B,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC;IACrH,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;QACxB,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;QAC9B,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;YACnC,MAAM,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;YACnC,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;QAChF,CAAC;IACH,CAAC;IACD,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;IACzB,KAAK,KAAK,CAAC;IACX,OAAO,EAAE,OAAO,EAAE,CAAC;AACrB,CAAC;AAED,0CAA0C;AAC1C,MAAM,UAAU,YAAY,CAAC,IAAoE;IAC/F,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAAC,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACvD,MAAM,GAAG,GAAG,CAAC,CAAS,EAAU,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IAC7C,MAAM,KAAK,GAAG;QACZ,GAAG,IAAI,CAAC,MAAM,OAAO,IAAI,CAAC,MAAM,OAAO,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,KAAK,OAAO,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,OAAO,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,OAAO,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG;KAChL,CAAC;IACF,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,OAAO,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;IAC5D,KAAK,CAAC,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC;IACpD,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;AACvC,CAAC;AAED,2DAA2D;AAC3D,MAAM,UAAU,UAAU,CAAC,IAAY,EAAE,OAAkB,EAAE,OAA2B,EAAE;IACxF,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC;IAC9B,MAAM,OAAO,GAAG,IAAI,GAAG,EAAkB,CAAC;IAC1C,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;QACxB,IAAI,UAAU,CAAC,CAAC,CAAC;YAAE,SAAS;QAC5B,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAC7B,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC;IACvF,CAAC;IACD,MAAM,MAAM,GAAG,CAAC,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC/E,MAAM,KAAK,GAAG,CAAC,GAAG,IAAI,MAAM,OAAO,CAAC,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC;IACvG,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;QACvC,MAAM,GAAG,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;QAC3H,KAAK,MAAM,CAAC,IAAI,GAAG;YAAE,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC;IACvG,CAAC;IACD,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QAC7C,MAAM,IAAI,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACjD,IAAI,IAAI,CAAC,MAAM;YAAE,KAAK,CAAC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC;;YAC9F,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IACjC,CAAC;IACD,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;AACvC,CAAC;AAED,+CAA+C;AAC/C,MAAM,UAAU,cAAc,CAAC,EAAU,EAAE,KAAgC;IACzE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,MAAM,EAAE,EAAE,EAAE,CAAC;AAC5C,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,KAAgC;IAChE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC;AACxC,CAAC;AAKD,MAAM,UAAU,cAAc,CAAC,GAAe,EAAE,CAAU;IACxD,MAAM,KAAK,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAE,CAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAE,CAAY,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IACrI,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC;AACxC,CAAC"}
@@ -0,0 +1,39 @@
1
+ /** 一个阻断项:哪个槽位/中文名/为什么挡住。 */
2
+ export interface BlockedItem {
3
+ readonly name: string;
4
+ readonly label: string;
5
+ readonly why: string;
6
+ }
7
+ /** 判定入参:本次参数 + 必需槽位里缺的那些 + 本型(`params.kind`,空串=本支不判方向)。 */
8
+ interface BlockedProbe {
9
+ readonly params: Record<string, unknown>;
10
+ readonly missing: readonly {
11
+ readonly name: string;
12
+ readonly label: string;
13
+ }[];
14
+ /** 录入路径给这一型(`expense`/`income`);其余支不给=本支不管方向。 */
15
+ readonly kind: string;
16
+ }
17
+ /** 判定:缺的必需槽位 + 方向不符的金额(**方向只服务录入路径**,见件头)。**空数组=可以往下走写库那一步**。 */
18
+ export declare function blockedItems(input: BlockedProbe): BlockedItem[];
19
+ /** 阻断条那一句文案(**唯一定义地**):envelope 载荷与采集页副标题都引它(两处各写一遍就会改一处漏一处)。
20
+ * 两岔:纯缺槽位那一句照旧(与兄弟票同一句,测试逐字钉着);只有方向不符时说方向。
21
+ *
22
+ * **中文名不进这一句**(本轮整改):缺项清单写用户看得懂的中文名,库列名只留在字段表那一列的中文标签里
23
+ * (照 `docs/skills/skill-bill/t407-文字审查.md` 第 34 条的判法:`还缺 N 项:分类(category)` 里
24
+ * `category` 是内部标识,不上屏)。 */
25
+ export declare function blockedMessage(missing: readonly {
26
+ readonly name: string;
27
+ }[], blocked: readonly BlockedItem[]): string;
28
+ /** 阻断条的入参:判定结果 + 那条「补齐后可重跑」的写库指令原文。 */
29
+ interface BlockedBarInput {
30
+ readonly items: readonly BlockedItem[];
31
+ /** 写库指令原文(补齐后照抄重跑那条);带尖括号占位符。 */
32
+ readonly command: string;
33
+ /** 补齐之后会发生什么(缺省一句)。 */
34
+ readonly note?: string;
35
+ }
36
+ /** 缺项阻断条:错误回执 + 缺项明示表 + 不可复制的写库指令 + 置灰的写库按钮。空判定=不出这一段(返回空串)。 */
37
+ export declare function blockedBar(input: BlockedBarInput): string;
38
+ export {};
39
+ //# sourceMappingURL=blockedSlots.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"blockedSlots.d.ts","sourceRoot":"","sources":["../../src/shared/blockedSlots.ts"],"names":[],"mappings":"AA6BA,4BAA4B;AAC5B,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;CACtB;AAED,2DAA2D;AAC3D,UAAU,YAAY;IACpB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACzC,QAAQ,CAAC,OAAO,EAAE,SAAS;QAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAC/E,iDAAiD;IACjD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AASD,iEAAiE;AACjE,wBAAgB,YAAY,CAAC,KAAK,EAAE,YAAY,GAAG,WAAW,EAAE,CAW/D;AAED;;;;;6BAK6B;AAC7B,wBAAgB,cAAc,CAC5B,OAAO,EAAE,SAAS;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE,EAAE,EAC7C,OAAO,EAAE,SAAS,WAAW,EAAE,GAC9B,MAAM,CAOR;AAED,uCAAuC;AACvC,UAAU,eAAe;IACvB,QAAQ,CAAC,KAAK,EAAE,SAAS,WAAW,EAAE,CAAC;IACvC,iCAAiC;IACjC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,uBAAuB;IACvB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;CACxB;AAgBD,gEAAgE;AAChE,wBAAgB,UAAU,CAAC,KAAK,EAAE,eAAe,GAAG,MAAM,CA4BzD"}
@@ -0,0 +1,105 @@
1
+ /** 缺项阻断条(缺口块之一,**唯一定义地**):缺哪些槽位就明示,并把写库按钮置灰——真阻断,不是提示。
2
+ *
3
+ * 谁在用(两个调用点,指名):
4
+ * ① `src/record/collect.ts`——过程型采集页:判定 + 阻断条都在这里出;
5
+ * ② `src/record/write.ts`——两条写命令的处理体:判定为「有阻断项」时不进写库那一步(拿 `blockedItems` 的空/非空当闸门)。
6
+ * 第二个消费者:`src/query/`(随兄弟图 #403 的查询域一起到位,同一套采集页/回执页/复制区要同一条判定)。
7
+ * 本票实测:本包 `src/` 下真引用本件的就是上面两个调用点,再无第三处。
8
+ *
9
+ * 真阻断**怎么真**(三处,缺一处就是提示而不是阻断):
10
+ * ① 写库那一半由 `src/record/write.ts` 拦:判定非空即不进 `addBill`/`updateBill`,库里行数一行不变;
11
+ * ② 页上不给可复制的写库指令:`renderPreBlock` 只给 `command`、**不给** `copyText`(本仓复制按钮靠元素自带
12
+ * `data-t` 才拷得走,不给就是拷不走);
13
+ * ③ 写库那枚按钮置灰(`kind: 'ghost'`)且**不带** `data-t`——base 的点击委派读到 `data-t` 为空即早退
14
+ * (`packages/base-render/src/controls.ts` 的 `onClick`:`text === null` 直接 return),点了既不复制也不写库。
15
+ *
16
+ * 判定两件事(都住本件,一处定义):**槽位没给** + **金额符号与这一型的方向不符**(记支出要负数、记收入要正数)。
17
+ * 分类三级未填=`category` 没给,已含在第一件里;方向不符那种「值给了但方向反了」不算缺槽位,故单列一件。
18
+ *
19
+ * **方向判定只服务录入路径**(`bill.record.add`;记支出/记收入这两条命令的采集页):
20
+ * 调用方只在录入那一支传 `kind`;`bill.record.update` 的改字段/撤销/恢复三支**不传**方向(`write.ts:178`)。
21
+ * 带 `kind`+`amount` 的撤销/恢复本来也可能被这条判定拦下、改出采集页,收窄后不再管它们。
22
+ * 方向那句话的取值(要负数/要正数)不在这里另写一份:走 `./summaryRow.ts` 的 `directionOf`。
23
+ */
24
+ import { renderActionBar } from 'base-paint';
25
+ import { renderCaliberLine, renderDataTable, renderPreBlock } from 'base-paint/blocks';
26
+ import { directionOf, money2 } from './summaryRow.js';
27
+ import { errorReceipt } from './errorReceipt.js';
28
+ import { fieldLabelOf } from './userWording.js';
29
+ /** 金额解析:认数字与非空数字串;解析不了就不在这里判方向(那是 `src/policy` 的活,报错不静默)。 */
30
+ function amountOf(raw) {
31
+ const n = typeof raw === 'string' && raw.trim() !== '' ? Number(raw.trim()) : raw;
32
+ if (typeof n !== 'number' || !Number.isFinite(n))
33
+ return null;
34
+ return n;
35
+ }
36
+ /** 判定:缺的必需槽位 + 方向不符的金额(**方向只服务录入路径**,见件头)。**空数组=可以往下走写库那一步**。 */
37
+ export function blockedItems(input) {
38
+ const items = input.missing.map((s) => ({ name: s.name, label: s.label, why: '没给' }));
39
+ const d = directionOf(input.kind);
40
+ const amount = amountOf(input.params['amount']);
41
+ if (d !== undefined && amount !== null && amount !== 0 && Math.sign(amount) !== d.sign) {
42
+ items.push({
43
+ name: 'amount', label: '金额',
44
+ why: '方向和这一型对不上:' + d.require + ',给的是 ' + money2(amount),
45
+ });
46
+ }
47
+ return items;
48
+ }
49
+ /** 阻断条那一句文案(**唯一定义地**):envelope 载荷与采集页副标题都引它(两处各写一遍就会改一处漏一处)。
50
+ * 两岔:纯缺槽位那一句照旧(与兄弟票同一句,测试逐字钉着);只有方向不符时说方向。
51
+ *
52
+ * **中文名不进这一句**(本轮整改):缺项清单写用户看得懂的中文名,库列名只留在字段表那一列的中文标签里
53
+ * (照 `docs/skills/skill-bill/t407-文字审查.md` 第 34 条的判法:`还缺 N 项:分类(category)` 里
54
+ * `category` 是内部标识,不上屏)。 */
55
+ export function blockedMessage(missing, blocked) {
56
+ if (missing.length > 0) {
57
+ return '缺必需槽位:' + missing.map((m) => fieldLabelOf(m.name)).join('、')
58
+ + '(已出采集页,补齐之后跟助手说一遍)';
59
+ }
60
+ return '写库已阻断:' + blocked.map((i) => fieldLabelOf(i.name) + '(' + i.why + ')').join('、')
61
+ + '(已出采集页,改好之后跟助手说一遍)';
62
+ }
63
+ /** 遮断条那几块(**唯一定义地**):错误回执 + 还缺什么表 + 补齐后照说那句话 + 置灰的写库按钮。
64
+ * 空判定=不出这一段(返回空串)。
65
+ *
66
+ * 本轮整改把内部话换成用户说法(逐条见 `docs/skills/skill-bill/t407-文字审查.md` 第 34、35、36、37、67 条):
67
+ * ① 标题 `缺项阻断条(写库已阻断)` → `还缺什么`(括号里那句是实现自指,删);
68
+ * ② 一句 `❌ 写库已阻断 · 还缺 N 项:分类(category)` → `❌ 还缺 N 项,补齐再记:分类`(列名不上屏);
69
+ * ③ `补齐后重跑同一条命令` → `补齐后照这句跟助手说一遍`(用户没有「同一条命令」可跑,那句话是给机器看的);
70
+ * ④ 置灰按钮那句 `⛔ 先补齐(N 项)` 保留(照实报缺几项);
71
+ * ⑤ 表头 `缺的槽位/是什么/为什么挡住` 与格值 `没给` → `还缺哪一项/是什么/为什么写不进去/这一项没给`;
72
+ * ⑥ 写库指令块的标题 `写库指令(补齐前不给复制按钮)` 保留口令原文的**只读**身份(不给复制按钮,
73
+ * 用户不会照抄一条带占位符的 JSON),但那句括号里的实现说明删掉——它说的是页面怎么做,不是用户要做什么。
74
+ */
75
+ const BLOCKED_WRITE_ACTION = 'ilife-blocked-write';
76
+ /** 缺项阻断条:错误回执 + 缺项明示表 + 不可复制的写库指令 + 置灰的写库按钮。空判定=不出这一段(返回空串)。 */
77
+ export function blockedBar(input) {
78
+ const n = input.items.length;
79
+ if (n === 0)
80
+ return '';
81
+ return errorReceipt({
82
+ title: '还缺什么',
83
+ message: '还缺 ' + n + ' 项,补齐再记:' + input.items.map((i) => i.label).join('、'),
84
+ retryPrompt: '补齐了,说一遍试试',
85
+ }) + renderDataTable({
86
+ columns: [
87
+ { key: 'slot', label: '还缺哪一项' },
88
+ { key: 'label', label: '是什么' },
89
+ { key: 'why', label: '为什么写不进去' },
90
+ ],
91
+ rows: input.items.map((i) => ({
92
+ slot: fieldLabelOf(i.name), label: i.label,
93
+ why: i.why === '没给' ? '这一项没给' : i.why,
94
+ })),
95
+ caption: '缺一项就先不写库',
96
+ }) + renderPreBlock({
97
+ command: input.command,
98
+ label: '口令原文(照上面那句跟助手说)',
99
+ }) + renderActionBar({
100
+ buttons: [{ label: '⛔ 先补齐(' + n + ' 项)', kind: 'ghost', actionId: BLOCKED_WRITE_ACTION }],
101
+ }) + renderCaliberLine(input.note === undefined || input.note === ''
102
+ ? '这一页先不写库;补齐之后照上面那句跟助手说一遍才会写。'
103
+ : input.note);
104
+ }
105
+ //# sourceMappingURL=blockedSlots.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"blockedSlots.js","sourceRoot":"","sources":["../../src/shared/blockedSlots.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,50 @@
1
+ /** 一个候选:哪条记录 + 一眼认得出的摘要 + 为什么是它。 */
2
+ export interface CandidateItem {
3
+ /** 记录编号(写进选项与复制指令的就是它)。 */
4
+ readonly id: number;
5
+ /** 一眼认得出的摘要(如「餐饮/外卖/午餐 · 支付宝」)。 */
6
+ readonly label: string;
7
+ /** 金额(已格式化好的串,本件不重算)。 */
8
+ readonly amount: string;
9
+ /** 发生时间。 */
10
+ readonly time: string;
11
+ /** 为什么是它(**必填**:写不出依据的候选,用户没法判断该不该选)。 */
12
+ readonly why: string;
13
+ }
14
+ /** 候选单选的入参。 */
15
+ interface CandidatePickInput {
16
+ /** 这一格槽位的参数名(如 `id`/`source_id`),单选控件的 `name` 就是它。 */
17
+ readonly name: string;
18
+ /** 这一格的中文名。 */
19
+ readonly label: string;
20
+ readonly candidates: readonly CandidateItem[];
21
+ /** 本次已经认准的那条(不给=不预选;**不拿第一条兜底**)。 */
22
+ readonly selectedId?: number | null;
23
+ /** 这一格想让人做什么(缺省一句)。 */
24
+ readonly hint?: string;
25
+ }
26
+ /** 候选为空那一格:不拿最近一笔兜底,直接反问用户要哪一条。
27
+ *
28
+ * **本轮返工(真 bug,一处救三页)**:`what` 收的是场景件那句**整句「这一格要的是…」**(就是传进来的 `hint` 原句),
29
+ * 改前本件又给它加了一遍「这一格要的是」前缀,于是三页同一行同时出两处硬伤——
30
+ * 「这一格要的是这一格要的是…」(模板串重复)与句尾「。,列表里一条都没有。」(标点粘连)。
31
+ * 现在按整句收:本件**不再加前缀**,只在句尾缺句号时补一个;
32
+ * `;` 缀着的后一句(「拿不准就让助手先查…」)从正文里挪出来并进「下一步」那一格——
33
+ * 正文只说「要的是哪一类」与「一条都没有」,两句各自成句,不再串在一行里。
34
+ * `what` 没给时才退回本件自己那一句。 */
35
+ export declare function candidateEmpty(input: {
36
+ readonly label: string;
37
+ readonly what?: string;
38
+ }): string;
39
+ /** 记录列表(含依据徽标):一条候选一行,零行返回空串(空态由 `candidatePick` 出)。
40
+ * 表头 `资金`(金额)与列名照用户说法。「为什么是它」只出下面的依据徽标(带候选编号),
41
+ * 不再另占表的一列——同页同句印两遍,且五列表在手机端被压成单字串(t410 终审 n29)。 */
42
+ export declare function candidateRows(items: readonly CandidateItem[]): string;
43
+ /** 候选单选整块:单选格 + 记录列表 +「为什么是它」徽标 + 一行口径;候选为空则只出空态。
44
+ *
45
+ * **已经认准的那条不再进那张表**(本轮整改):认准之后同页的只读回显表已经把这一条逐项列全,
46
+ * 候选表再列一遍就是同一句话在页上印两遍(机审判成重复句那一处就是它)。
47
+ * 没认准的形态照旧:全量候选铺开供挑。 */
48
+ export declare function candidatePick(input: CandidatePickInput): string;
49
+ export {};
50
+ //# sourceMappingURL=candidatePick.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"candidatePick.d.ts","sourceRoot":"","sources":["../../src/shared/candidatePick.ts"],"names":[],"mappings":"AAwBA,oCAAoC;AACpC,MAAM,WAAW,aAAa;IAC5B,2BAA2B;IAC3B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,mCAAmC;IACnC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,yBAAyB;IACzB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,YAAY;IACZ,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,yCAAyC;IACzC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;CACtB;AAED,eAAe;AACf,UAAU,kBAAkB;IAC1B,sDAAsD;IACtD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,eAAe;IACf,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,UAAU,EAAE,SAAS,aAAa,EAAE,CAAC;IAC9C,qCAAqC;IACrC,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,uBAAuB;IACvB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;CACxB;AA8BD;;;;;;;;4BAQ4B;AAC5B,wBAAgB,cAAc,CAAC,KAAK,EAAE;IAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,CAWhG;AAED;;qDAEqD;AACrD,wBAAgB,aAAa,CAAC,KAAK,EAAE,SAAS,aAAa,EAAE,GAAG,MAAM,CAYrE;AAED;;;;yBAIyB;AACzB,wBAAgB,aAAa,CAAC,KAAK,EAAE,kBAAkB,GAAG,MAAM,CAuB/D"}
@@ -0,0 +1,115 @@
1
+ /** 候选单选(缺口块之一,**唯一定义地**):一条记录列表供选择 +「为什么是它」的依据徽标 + 候选空态。
2
+ *
3
+ * 谁在用(本票:**不接任何页面**,理由见下;件头按将来实数写,写得出第二个用法):
4
+ * ① 特殊收支族(记退款/报销到账/记借出/记借入/记收回/记偿还 6 条)——「这条退款对应哪笔原支出」
5
+ * 那一格要的就是它:列候选、每条给一句依据、缺 id 时让你从表里挑;
6
+ * ② 批量与修正族(改记录/撤销/恢复 3 条)——改记录「缺 id 列候选」、撤销「列出可撤销记录」、
7
+ * 恢复「列出已打标记录」三处同一件,只是过筛条件不同(换 `why` 那一句话,不换件)。
8
+ * 两个用法的分界:①挑的是「被这条新记录指向的原记录」,②挑的是「要被改动的那条记录」。
9
+ *
10
+ * 本票为什么先冻不接:本票的红线是**不改任何页面的可见行为**,接进去就会改(记退款现在出通用页)。
11
+ * 故本件这一票只做「件 + 断言」,接入落在那两族窗口自己那一件场景件里(`src/record/scene-refund.ts` 等)。
12
+ *
13
+ * 老侧出处:`templates/写入/flow_confirm.html:192`(`name="cand"` 单选)、`:187`(候选空态);
14
+ * 老侧默认选中第一笔(`:206-211`)——本件**不照抄这一处**:默认选中等于拿最近一笔兜底,
15
+ * 施工图第四节点名要修,本件的规矩是「没给 `selectedId` 就不预选,空候选直接反问用户」。
16
+ *
17
+ * 一件不自造:列表走 `renderDataTable`、单选走 `renderParamForm` 的单选项、依据徽标走 `renderStatusBadge`、
18
+ * 一行口径走 `renderCaliberLine`、空态走共用位的 `./emptyNote.js`(它包 base 的 `renderEmptyBlock`)。
19
+ */
20
+ import { renderStatusBadge } from 'base-paint';
21
+ import { renderCaliberLine, renderDataTable, renderParamForm } from 'base-paint/blocks';
22
+ import { emptyNote } from './emptyNote.js';
23
+ import { badgeTextOf } from './userWording.js';
24
+ /** 选项的那一行文本与取值:**只写编号**(`#15`),详情就在紧挨着的那张表里逐列列着。
25
+ * 本轮整改:原来选项里把「分类 + 账户 + 备注」又抄一遍,同一句话在页上印两遍
26
+ * (机审判成重复句);编号是单选真正要选的那件事,挑中的就是编号。 */
27
+ function optionOf(item) {
28
+ return '#' + item.id;
29
+ }
30
+ /** 依据徽标:逐条候选一句「为什么是它」。**空依据抛错**——不写依据的候选等于让人猜。
31
+ * 徽标只写「第几条 + 依据」:分类/账户/金额那一份已经在上面那张表里逐列列过,
32
+ * 这里再抄一遍就是同一件事在页上印两遍(本轮整改;表内文字是数据,徽标是文案)。
33
+ * 依据逐字相同的候选只说一遍(一行口径):撤销/改记录的候选依据只与过筛条件有关、
34
+ * 与行无关,逐条徽标就是同一句印 N 遍(t410 终审 n29)。恢复的依据逐条不同(各行撤销时间不同),照旧逐条徽标。 */
35
+ function whyBadges(items) {
36
+ for (let i = 0; i < items.length; i += 1) {
37
+ if (typeof items[i]?.why !== 'string' || (items[i]?.why ?? '').trim() === '') {
38
+ throw new Error('candidatePick: 第 ' + (i + 1) + ' 条候选没有写「为什么是它」');
39
+ }
40
+ }
41
+ const first = (items[0]?.why ?? '').trim();
42
+ if (items.length > 1 && items.every((it) => it.why.trim() === first)) {
43
+ return renderCaliberLine('以下 ' + items.length + ' 条候选依据相同:' + first + '。');
44
+ }
45
+ const lines = items.map((it) => {
46
+ return renderStatusBadge({ status: 'warn', text: badgeTextOf('候选 #' + it.id + ':' + it.why) });
47
+ });
48
+ return lines.join('');
49
+ }
50
+ /** 候选为空那一格:不拿最近一笔兜底,直接反问用户要哪一条。
51
+ *
52
+ * **本轮返工(真 bug,一处救三页)**:`what` 收的是场景件那句**整句「这一格要的是…」**(就是传进来的 `hint` 原句),
53
+ * 改前本件又给它加了一遍「这一格要的是」前缀,于是三页同一行同时出两处硬伤——
54
+ * 「这一格要的是这一格要的是…」(模板串重复)与句尾「。,列表里一条都没有。」(标点粘连)。
55
+ * 现在按整句收:本件**不再加前缀**,只在句尾缺句号时补一个;
56
+ * `;` 缀着的后一句(「拿不准就让助手先查…」)从正文里挪出来并进「下一步」那一格——
57
+ * 正文只说「要的是哪一类」与「一条都没有」,两句各自成句,不再串在一行里。
58
+ * `what` 没给时才退回本件自己那一句。 */
59
+ export function candidateEmpty(input) {
60
+ const told = (input.what ?? '').trim();
61
+ const clauses = told === '' ? [] : told.split(';');
62
+ const head = clauses.length === 0 ? '这一格要的是那类记录' : clauses[0];
63
+ const rest = clauses.slice(1).map((s) => s.trim()).filter((s) => s !== '').join('');
64
+ const want = head.endsWith('。') ? head : head + '。';
65
+ return emptyNote({
66
+ title: '没有可选的' + input.label,
67
+ text: want + '列表里一条都没有。',
68
+ next: rest + '不拿最近一笔顶替。请把' + input.label + '告诉助手(或先说清是哪一笔),再跟助手说一遍。',
69
+ });
70
+ }
71
+ /** 记录列表(含依据徽标):一条候选一行,零行返回空串(空态由 `candidatePick` 出)。
72
+ * 表头 `资金`(金额)与列名照用户说法。「为什么是它」只出下面的依据徽标(带候选编号),
73
+ * 不再另占表的一列——同页同句印两遍,且五列表在手机端被压成单字串(t410 终审 n29)。 */
74
+ export function candidateRows(items) {
75
+ if (items.length === 0)
76
+ return '';
77
+ return renderDataTable({
78
+ columns: [
79
+ { key: 'id', label: '记录编号' },
80
+ { key: 'label', label: '是哪一笔' },
81
+ { key: 'amount', label: '金额', align: 'right' },
82
+ { key: 'time', label: '时间' },
83
+ ],
84
+ rows: items.map((it) => ({ id: it.id, label: it.label, amount: it.amount, time: it.time })),
85
+ caption: '可选的记录(共 ' + items.length + ' 条)',
86
+ }) + whyBadges(items);
87
+ }
88
+ /** 候选单选整块:单选格 + 记录列表 +「为什么是它」徽标 + 一行口径;候选为空则只出空态。
89
+ *
90
+ * **已经认准的那条不再进那张表**(本轮整改):认准之后同页的只读回显表已经把这一条逐项列全,
91
+ * 候选表再列一遍就是同一句话在页上印两遍(机审判成重复句那一处就是它)。
92
+ * 没认准的形态照旧:全量候选铺开供挑。 */
93
+ export function candidatePick(input) {
94
+ const name = input.name;
95
+ const label = input.label;
96
+ if (input.candidates.length === 0) {
97
+ return candidateEmpty({ label, what: input.hint });
98
+ }
99
+ const selected = input.selectedId ?? null;
100
+ const hit = selected === null ? undefined : input.candidates.find((it) => it.id === selected);
101
+ const table = hit === undefined ? candidateRows(input.candidates) : '';
102
+ return renderParamForm({
103
+ description: input.hint ?? '从下面列出的记录里挑一条;挑中的编号要跟复制指令里的那一个一致。',
104
+ fields: [{
105
+ name,
106
+ label,
107
+ required: true,
108
+ ...(hit === undefined ? {} : { value: optionOf(hit) }),
109
+ options: input.candidates.map(optionOf),
110
+ }],
111
+ }) + table + renderCaliberLine(hit === undefined
112
+ ? '候选未预选(不给默认选中):请用户从列表里指明是哪一条,再跟助手说一遍。'
113
+ : '候选已认准 ' + optionOf(hit) + ':请用户核一眼依据,再跟助手说一遍。');
114
+ }
115
+ //# sourceMappingURL=candidatePick.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"candidatePick.js","sourceRoot":"","sources":["../../src/shared/candidatePick.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ /** 进度:还差几项,补齐就能记(只读数,不判定)。 */
2
+ export declare function collectProgress(input: {
3
+ readonly wakeWord: string;
4
+ readonly missing: number;
5
+ }): string;
6
+ /** 缺项标签:缺的格逐枚成标签(空即不出块)。 */
7
+ export declare function collectMissingTags(input: {
8
+ readonly labels: readonly string[];
9
+ }): string;
10
+ /** 分段标题:第几段加一句中文标题(黑块前后分段用)。 */
11
+ export declare function collectSectionTitle(input: {
12
+ readonly no: number;
13
+ readonly title: string;
14
+ }): string;
15
+ //# sourceMappingURL=collectFrame.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"collectFrame.d.ts","sourceRoot":"","sources":["../../src/shared/collectFrame.ts"],"names":[],"mappings":"AAeA,8BAA8B;AAC9B,wBAAgB,eAAe,CAAC,KAAK,EAAE;IAAE,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,CAItG;AAED,4BAA4B;AAC5B,wBAAgB,kBAAkB,CAAC,KAAK,EAAE;IAAE,QAAQ,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAA;CAAE,GAAG,MAAM,CAIxF;AAED,gCAAgC;AAChC,wBAAgB,mBAAmB,CAAC,KAAK,EAAE;IAAE,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,CAIlG"}
@@ -0,0 +1,34 @@
1
+ /** 采集页通用架形状件(只加形状,不改行为口径)。
2
+ *
3
+ * 谁在用(指名,多处):
4
+ * ① `src/record/collectBody.ts`——通用采集页(记支出走本件);
5
+ * ② `src/record/scene-*.ts` 的 16 件场景件采集分支——各件在 `typeBadge` 之后调本件。
6
+ * 共用理由:16 页同一套架子只写一遍,别处引用;行为判定(`blockedItems`/`findDuplicates`/信封)
7
+ * 一处不动,本件只读唤醒词与缺项数做展示。
8
+ *
9
+ * 只许加的三种形状(t410 终审后收口为三):
10
+ * 缺项标签/进度/分段标题。各一函数,对外三个,不多给。
11
+ * 文案纪律:纯中文加数字,不含 `·`/`|`/英文标识(机审版式位与区外内部话两列保持零命中);
12
+ * 每句带唤醒词或段号,页内不重句。
13
+ */
14
+ import { renderCaliberLine, renderChips, renderConclusionBar } from 'base-paint/blocks';
15
+ /** 进度:还差几项,补齐就能记(只读数,不判定)。 */
16
+ export function collectProgress(input) {
17
+ const word = input.wakeWord.trim() === '' ? '记一笔' : input.wakeWord.trim();
18
+ const n = Number.isFinite(input.missing) && input.missing > 0 ? Math.floor(input.missing) : 0;
19
+ return renderCaliberLine(word + '还差 ' + n + ' 项,补齐就能记');
20
+ }
21
+ /** 缺项标签:缺的格逐枚成标签(空即不出块)。 */
22
+ export function collectMissingTags(input) {
23
+ const items = input.labels.map((s) => s.trim()).filter((s) => s !== '');
24
+ if (items.length === 0)
25
+ return '';
26
+ return renderChips({ items: items.map((text) => ({ text })) });
27
+ }
28
+ /** 分段标题:第几段加一句中文标题(黑块前后分段用)。 */
29
+ export function collectSectionTitle(input) {
30
+ const no = Number.isFinite(input.no) && input.no > 0 ? Math.floor(input.no) : 1;
31
+ const title = input.title.trim() === '' ? '继续往下看' : input.title.trim();
32
+ return renderConclusionBar('第 ' + no + ' 段 ' + title);
33
+ }
34
+ //# sourceMappingURL=collectFrame.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"collectFrame.js","sourceRoot":"","sources":["../../src/shared/collectFrame.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAExF,8BAA8B;AAC9B,MAAM,UAAU,eAAe,CAAC,KAA8D;IAC5F,MAAM,IAAI,GAAG,KAAK,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;IAC1E,MAAM,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9F,OAAO,iBAAiB,CAAC,IAAI,GAAG,KAAK,GAAG,CAAC,GAAG,UAAU,CAAC,CAAC;AAC1D,CAAC;AAED,4BAA4B;AAC5B,MAAM,UAAU,kBAAkB,CAAC,KAA6C;IAC9E,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;IACxE,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAClC,OAAO,WAAW,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;AACjE,CAAC;AAED,gCAAgC;AAChC,MAAM,UAAU,mBAAmB,CAAC,KAAsD;IACxF,MAAM,EAAE,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAChF,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;IACvE,OAAO,mBAAmB,CAAC,IAAI,GAAG,EAAE,GAAG,KAAK,GAAG,KAAK,CAAC,CAAC;AACxD,CAAC"}
@@ -0,0 +1,72 @@
1
+ /** 命令声明的形状(**唯一定义地**):一条命令的事实——种类/命令名/形状/标题/代表唤醒词/可执行示例/处理函数。
2
+ *
3
+ * 谁在用(两个能力,指名):
4
+ * ① `src/record/commands.ts`——写入域命令事实的唯一权威源(两条写命令:记一笔、改记录);
5
+ * ② `src/query/commands.ts`——查询域命令事实的唯一权威源(四条读命令:查今天/查区间/搜备注/查账单详情);
6
+ * 两张声明各由本能力的 `index.ts` 转出,`src/cli/registry.ts` 汇总成一张查表供 `src/cli/cmd_read.ts` 先查。
7
+ *
8
+ * 口径出处:形状照 `packages/skill-calorie/src/shared/commandSpec.ts`(照结构,不照文件)。
9
+ * `docs/skills/skill-bill/t406-共用件依赖与提升改造清单.md` 第三节第 1 条判「`commandSpec.ts` 不上移公共层」,
10
+ * 理由是命令事实按 `docs/agents/命令登记纪律.md` 住各能力目录——故饼干自持这一份,不上公共层。
11
+ *
12
+ * 为什么写命令一律 `shape: 'receipt'`:写命令的产物是一次写库的事实(`ok`/`message`/回执三件),
13
+ * 与 `base-link-core` 的 `receipt` 形同一件事实的两种说法,测试里钉死二者等价。
14
+ *
15
+ * 读命令那一支(`ReadCommandSpec`)由查询域那张票(#411)补上:读命令的形状是**表里的形状**
16
+ * (`list`/`detail`,取值来自 `base-link-core` 的 `EnvelopeShape`),产物是一件已取到的事实,
17
+ * 与写命令的 `receipt` 不是同一种;`kind` 判别式让分派层能**静态**窄化到正确的那一支(铁律三)。
18
+ */
19
+ import type { EnvelopeShape } from 'base-link-core';
20
+ import type { BillDb } from '../fetch/db.js';
21
+ import type { BillReceipt } from './writeParts.js';
22
+ /** 写命令的产物:回执三件(`ok`/`message`/`receipt`)+ 整页 HTML(`html`)。
23
+ * `receipt` **可缺**:必需槽位缺失时出的是过程型采集页,那一次没有写库事实可报。 */
24
+ export interface WriteOut {
25
+ data: {
26
+ ok: boolean;
27
+ message: string;
28
+ receipt?: BillReceipt;
29
+ };
30
+ html: string;
31
+ }
32
+ /** 写命令的处理函数。第二参是饼干的库句柄 `BillDb`(库 + 路径 + 是否新建)——
33
+ * 与卡路里同件收 `DatabaseSync` 不同:饼干的取数层 `addBill`/`updateBill`/`undoBill`/`restoreBill`
34
+ * 收的就是 `BillDb`(`src/fetch/db.ts:155` 起),共用件不自造第二种句柄。 */
35
+ export type WriteHandler = (params: Record<string, unknown>, db: BillDb) => WriteOut;
36
+ /** 写命令的声明:六件事 + 处理函数。 */
37
+ export interface WriteCommandSpec {
38
+ readonly kind: 'write';
39
+ readonly key: string;
40
+ readonly shape: 'receipt';
41
+ readonly title: string;
42
+ /** 代表唤醒词;**必填**,且必须是 `src/policy/wakewords.ts` 的 `WAKE_TABLE` 里真有的词(测试里逐条核)。 */
43
+ readonly wakeWord: string;
44
+ /** 照抄即能跑的一行(本票两条都在空库上真跑过,退出码 0)。 */
45
+ readonly example: string;
46
+ readonly run: WriteHandler;
47
+ }
48
+ /** 命令声明的联合。分派层按 `kind` 静态窄化:`write` 走写入口、`read` 走查询入口。 */
49
+ export type CommandSpec = WriteCommandSpec | ReadCommandSpec;
50
+ /** 读(查询)命令的产物:`data` 过 envelope 形状守卫,`html` 为整页产物(列表页/详情页)。
51
+ * 与卡路里同件的 `ViewOut` 同一件事的两种形状:饼干这一期不需要 `deliveryKind` 与 `target`
52
+ * (查询产物只有一种形态、落点由 `--html` 逐字给),故不提前占位。 */
53
+ export interface ViewOut {
54
+ data: Record<string, unknown>;
55
+ html: string;
56
+ }
57
+ /** 读命令的处理函数。第二参同 `WriteHandler` 收饼干的库句柄 `BillDb`(取数层只认这一种句柄)。 */
58
+ export type ViewHandler = (params: Record<string, unknown>, db: BillDb) => ViewOut;
59
+ /** 读命令的声明:与写命令同六件事,只两处不同——`kind` 是 `read`、`shape` 是**表里的形状**。 */
60
+ export interface ReadCommandSpec {
61
+ readonly kind: 'read';
62
+ readonly key: string;
63
+ /** 本次 envelope 的形状(`list`=列表页、`detail`=单条详情页)。 */
64
+ readonly shape: EnvelopeShape;
65
+ readonly title: string;
66
+ /** 代表唤醒词;**必填**,且必须是 `src/policy/wakewords.ts` 的 `WAKE_TABLE` 里真有的词(测试里逐条核)。 */
67
+ readonly wakeWord: string;
68
+ /** 照抄即能跑的一行(四条都在本机临时库上真跑过,退出码 0)。 */
69
+ readonly example: string;
70
+ readonly run: ViewHandler;
71
+ }
72
+ //# sourceMappingURL=commandSpec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"commandSpec.d.ts","sourceRoot":"","sources":["../../src/shared/commandSpec.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AACH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAEnD;qDACqD;AACrD,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE;QAAE,EAAE,EAAE,OAAO,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,WAAW,CAAA;KAAE,CAAC;IAC9D,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;0DAE0D;AAC1D,MAAM,MAAM,YAAY,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,EAAE,EAAE,MAAM,KAAK,QAAQ,CAAC;AAErF,yBAAyB;AACzB,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC;IAC1B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,gFAAgF;IAChF,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,oCAAoC;IACpC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,GAAG,EAAE,YAAY,CAAC;CAC5B;AAED,0DAA0D;AAC1D,MAAM,MAAM,WAAW,GAAG,gBAAgB,GAAG,eAAe,CAAC;AAE7D;;4CAE4C;AAC5C,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9B,IAAI,EAAE,MAAM,CAAC;CACd;AAED,iEAAiE;AACjE,MAAM,MAAM,WAAW,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC;AAEnF,iEAAiE;AACjE,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,kDAAkD;IAClD,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC;IAC9B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,gFAAgF;IAChF,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,qCAAqC;IACrC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,GAAG,EAAE,WAAW,CAAC;CAC3B"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=commandSpec.js.map