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
@@ -0,0 +1,250 @@
1
+ import { renderCaliberLine, renderDataTable, renderDisclosure, renderKpiGrid } from 'base-paint/blocks';
2
+ import { blockedBar, blockedItems, blockedMessage } from '../shared/blockedSlots.js';
3
+ import { collectMissingTags, collectSectionTitle } from '../shared/collectFrame.js';
4
+ import { copyArea, copyLog, promptCopyArea, undoExit } from '../shared/copyArea.js';
5
+ import { emptyNote } from '../shared/emptyNote.js';
6
+ import { DOC_SKILL, DOC_TITLE, DOC_VERSION, sceneKeyOf } from '../shared/pageIdentity.js';
7
+ import { pageShell } from '../shared/pageShell.js';
8
+ import { pickerBlock, readRowById, snapshotTable } from '../shared/recordPicker.js';
9
+ import { receiptStatusCard, reconcileDisclosure } from '../shared/receiptParts.js';
10
+ import { summaryCards, summaryRow } from '../shared/summaryRow.js';
11
+ import { typeBadge } from '../shared/typeBadge.js';
12
+ import { fieldLabelOf } from '../shared/userWording.js';
13
+ import { commandLine } from '../shared/writeParts.js';
14
+ /** 一条唤醒词一件:本件服务的那条。 */
15
+ const WAKE = '恢复';
16
+ /** 本件的命令名(恢复是 `bill.record.update` 的 `op=restore` 那一支)。 */
17
+ const KEY = 'bill.record.update';
18
+ /** 「把标记清掉」那句说明(采集页与回执页各出一处,同一句话只写在这里一份)。
19
+ * 本轮整改:`deleted_at`/`NULL` 是工程话,换成用户说法(照 `docs/skills/skill-bill/t407-文字审查.md` 第 29 条)。 */
20
+ const RESTORE_NOTE = '恢复就是清掉那个撤销标记,这一笔回到查询和统计里。'
21
+ + '候选只列已经撤销过的记录,没撤销过的不进来。';
22
+ /** 一个值的字符串形态(数字写十进制串,其余形态按空串用)。 */
23
+ function textOf(v) {
24
+ if (typeof v === 'string')
25
+ return v.trim();
26
+ return typeof v === 'number' ? String(v) : '';
27
+ }
28
+ /** 记录编号:正整数才算给了(其余形态一律当没给,不猜)。 */
29
+ function idOf(params) {
30
+ const raw = params['id'];
31
+ const n = typeof raw === 'number' ? raw : textOf(raw) === '' ? NaN : Number(textOf(raw));
32
+ return Number.isInteger(n) && n > 0 ? n : null;
33
+ }
34
+ /** 摘要行的事实:有那一条就取库内那一行(页面说的是它),没有就取本次参数。 */
35
+ function factsOf(row, params) {
36
+ if (row !== null) {
37
+ return { amount: row.amount, category: row.category, account: row.account, ledger: row.ledger, time: row.time };
38
+ }
39
+ const raw = params['amount'];
40
+ const n = typeof raw === 'number' ? raw : textOf(raw) === '' ? NaN : Number(textOf(raw));
41
+ return {
42
+ amount: Number.isFinite(n) ? n : null,
43
+ category: textOf(params['category']),
44
+ account: textOf(params['account']),
45
+ ledger: textOf(params['ledger']),
46
+ time: textOf(params['time']),
47
+ };
48
+ }
49
+ /** 缺项时那条写库指令原文:缺的值留成尖括号占位符,**只给看不给复制**。 */
50
+ function blockedCommand(params, blocked) {
51
+ const filled = { ...params };
52
+ for (const b of blocked)
53
+ filled[b.name] = '<' + b.label + '>';
54
+ return commandLine(KEY, filled);
55
+ }
56
+ /** 缺项阻断条整条收进折叠区:首屏只留缺项标签与一行副标题,口令原文不再常驻版面。
57
+ * 内容与判定一字不动(仍是共用件 `blockedBar` 的产出),只换摆法;折叠与否那枚置灰按钮都点不动。 */
58
+ function blockedFold(items, command) {
59
+ if (items.length === 0)
60
+ return '';
61
+ return renderDisclosure({
62
+ title: '还缺什么,以及补齐后照抄的那条',
63
+ contentHtml: blockedBar({ items, command }),
64
+ });
65
+ }
66
+ /** 「照这句跟助手说一遍」那块话:挑哪一条、恢复是什么口径、接下来跟助手说哪句。 */
67
+ function promptOf(input) {
68
+ if (input.id === null) {
69
+ return '这一页先不写库。从候选里指定一条已经撤销过的记录,再跟助手说一遍「恢复」。';
70
+ }
71
+ if (!input.deleted) {
72
+ return '记录编号 ' + input.id + ' 那一条没撤销过,没有标记可清。\n'
73
+ + '要撤它就说「撤销」:' + commandLine(KEY, { op: 'undo', id: input.id }) + '。';
74
+ }
75
+ return '这一条就是这次要恢复的目标。恢复只把撤销标记清掉,别的项一概不动。照这条说:\n'
76
+ + commandLine(KEY, input.params);
77
+ }
78
+ /** 采集页整页:类型徽章 → 摘要行 → 置空说明 → 写库未发生 → 缺项阻断条 → 候选列表(或选定那一条的只读回显)
79
+ * → 照这句跟助手说一遍 → 复制区。缺 `id` 时**不给可跑的写库指令**(阻断条里那条带占位符、只给看不给复制)。 */
80
+ function collectOf(input) {
81
+ const { params, missing } = input;
82
+ const blocked = blockedItems({ params, missing, kind: '' });
83
+ const message = blockedMessage(missing, blocked);
84
+ const envelope = {
85
+ version: DOC_VERSION, skill: DOC_SKILL, shape: 'receipt', key: sceneKeyOf(KEY),
86
+ data: { ok: false, message },
87
+ };
88
+ const id = idOf(params);
89
+ const probe = id === null
90
+ ? { ok: true, reason: '', row: null, deleted: false }
91
+ : readRowById(id);
92
+ const row = probe.row;
93
+ // 撤销标记口径取自 `../shared/recordPicker.ts` 的 `isDeleted`(读一条时一次算好,本件不重判一次)。
94
+ const deleted = probe.deleted;
95
+ /** 副标题只报缺哪一项(不重复「已出采集页,补齐之后跟助手说一遍」那句)。 */
96
+ const subtitle = blocked.length === 0 ? '' : '缺必需槽位:' + blocked.map((i) => i.label).join('、');
97
+ const middle = [];
98
+ if (id === null) {
99
+ middle.push(pickerBlock({
100
+ mode: 'restore',
101
+ hint: '候选只列已经撤销过的记录,挑一条即可。',
102
+ }));
103
+ }
104
+ else if (row !== null && deleted) {
105
+ middle.push(snapshotTable(row, '这一条就是要恢复的记录 只读回显 记录编号 ' + row.id));
106
+ middle.push(renderCaliberLine('它现在带着撤销标记,' + String(row.deleted_at)
107
+ + ' 撤销的。恢复之后标记清掉,这一笔回到查询和统计里。'));
108
+ }
109
+ else if (row === null) {
110
+ middle.push(emptyNote({
111
+ title: '这个编号没有可恢复的记录',
112
+ text: '记录编号 ' + id + ' 在库里读不到。' + (probe.ok ? '' : probe.reason + '。'),
113
+ next: '核一下编号,或先说清是哪一笔。',
114
+ }));
115
+ }
116
+ else {
117
+ middle.push(snapshotTable(row, '这一条记录 没撤销过,只读回显'));
118
+ middle.push(emptyNote({
119
+ title: '这一条没撤销过',
120
+ text: '记录编号 ' + id + ' 没有撤销标记,没有可清的东西。',
121
+ next: '要撤它就说「撤销」。要改它就说「改记录」。',
122
+ }));
123
+ }
124
+ const content = [
125
+ typeBadge({
126
+ kind: '',
127
+ status: 'danger',
128
+ state: blocked.length > 0 ? '待补槽位 · 未写库(已阻断)' : '待核对 · 未写库',
129
+ next: '',
130
+ }),
131
+ blocked.length === 0 ? '' : collectSectionTitle({ no: 1, title: '先看这一笔缺什么' }),
132
+ collectMissingTags({ labels: blocked.map((i) => i.label) }),
133
+ summaryRow(factsOf(row, params)),
134
+ renderCaliberLine(RESTORE_NOTE),
135
+ collectSectionTitle({ no: 2, title: id === null ? '先挑一条记录' : '核对这一条' }),
136
+ blockedFold(blocked, blockedCommand(params, blocked)),
137
+ middle.join(''),
138
+ promptCopyArea(promptOf({ id, deleted, params }), '挑好记录后照这句跟助手说一遍'),
139
+ copyArea({
140
+ data: { envelope },
141
+ log: {
142
+ envelope,
143
+ copyLog: copyLog({
144
+ command: commandLine(KEY, params),
145
+ source: input.source,
146
+ detail: '没写库(采集页)',
147
+ actionAt: input.actionAt,
148
+ version: DOC_VERSION,
149
+ }),
150
+ },
151
+ }),
152
+ ].join('');
153
+ return pageShell({
154
+ docTitle: DOC_TITLE + '·补齐槽位',
155
+ title: WAKE + ' · ' + (id === null ? '挑一条记录' : '确认恢复'),
156
+ subtitle,
157
+ slot: 'collect',
158
+ page: 'collect',
159
+ shape: envelope.shape,
160
+ key: KEY,
161
+ content,
162
+ });
163
+ }
164
+ /** 回执页整页:类型徽章 → 一张大网格 → 恢复说明 → 恢复结果(读回来的标记现值)→ 写入明细表
165
+ * → 对账折叠区 → 退出口(撤销,把这一笔再打回标)→ 复制区三件。
166
+ * 这里不出改前改后对照表:标记清掉之后库里已经看不到原值,拿「有值→没有」顶一张表
167
+ * 等于编一个原值,本页改出置空结果表照实说。 */
168
+ function receiptOf(input) {
169
+ const { params, receipt } = input;
170
+ const envelope = {
171
+ version: DOC_VERSION, skill: DOC_SKILL, shape: 'receipt', key: sceneKeyOf(KEY),
172
+ data: { ok: true, message: receipt.summary },
173
+ };
174
+ const after = receipt.recordId === null ? null : readRowById(receipt.recordId);
175
+ const now = after !== null && after.ok && after.row !== null ? after.row.deleted_at : undefined;
176
+ const content = [
177
+ typeBadge({
178
+ kind: '',
179
+ status: 'ok',
180
+ state: '写库成功',
181
+ next: '这一笔已恢复正常,撤销见下方按钮。',
182
+ }),
183
+ renderKpiGrid([
184
+ ...summaryCards(input.facts),
185
+ receiptStatusCard(receipt, input.writtenDetail),
186
+ { label: '这次记了几笔', value: receipt.affectedRows + ' 笔', detail: '按库里的改动算' },
187
+ {
188
+ label: '写进去的项',
189
+ value: receipt.writtenFields.length + ' 项',
190
+ detail: receipt.writtenFields.map((f) => fieldLabelOf(f)).join('、') || '没改到任何一项',
191
+ },
192
+ ]),
193
+ renderDataTable({
194
+ columns: [{ key: 'k', label: '哪一项' }, { key: 'v', label: '记成什么' }],
195
+ rows: [
196
+ { k: fieldLabelOf('id'), v: receipt.recordId === null ? '还没有' : String(receipt.recordId) },
197
+ {
198
+ k: fieldLabelOf('deleted_at') + '现在是什么样',
199
+ v: now === undefined
200
+ ? '这一页读不回这一条,以写库回执为准'
201
+ : now === null || String(now).trim() === '' ? '已清掉,这一笔已恢复正常' : '还带着:' + String(now),
202
+ },
203
+ { k: '清掉之后', v: '这一笔回到查询和统计里。想再撤走就说「撤销」' },
204
+ ],
205
+ caption: '恢复结果',
206
+ }),
207
+ renderDataTable({
208
+ columns: [{ key: 'k', label: '哪一项' }, { key: 'v', label: '记成什么' }],
209
+ rows: input.detail,
210
+ caption: '写进去的项与值',
211
+ }),
212
+ reconcileDisclosure(receipt),
213
+ receipt.recordId === null ? '' : undoExit(receipt.recordId),
214
+ copyArea({
215
+ data: { envelope },
216
+ log: {
217
+ envelope,
218
+ copyLog: copyLog({
219
+ command: commandLine(KEY, params),
220
+ source: receipt.source,
221
+ detail: '改了 ' + receipt.affectedRows + ' 笔,写进去 '
222
+ + (receipt.writtenFields.map((f) => fieldLabelOf(f)).join('、') || '没改到任何一项'),
223
+ actionAt: receipt.actionAt,
224
+ version: DOC_VERSION,
225
+ }),
226
+ },
227
+ }),
228
+ ].join('');
229
+ return pageShell({
230
+ docTitle: DOC_TITLE + '·写库回执',
231
+ title: WAKE + ' · 回执',
232
+ subtitle: receipt.summary,
233
+ slot: 'receipt',
234
+ page: 'receipt',
235
+ shape: envelope.shape,
236
+ key: KEY,
237
+ content,
238
+ });
239
+ }
240
+ export const SCENE = {
241
+ id: 'restore',
242
+ wakeWord: WAKE,
243
+ key: KEY,
244
+ kind: '',
245
+ op: 'restore',
246
+ family: '批量与修正族',
247
+ collect: collectOf,
248
+ receipt: receiptOf,
249
+ };
250
+ //# sourceMappingURL=scene-restore.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scene-restore.js","sourceRoot":"","sources":["../../src/record/scene-restore.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { Scene } from './scene.js';
2
+ export declare const SCENE: Scene;
3
+ //# sourceMappingURL=scene-undo.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scene-undo.d.ts","sourceRoot":"","sources":["../../src/record/scene-undo.ts"],"names":[],"mappings":"AA+BA,OAAO,KAAK,EAA8B,KAAK,EAAE,MAAM,YAAY,CAAC;AAsPpE,eAAO,MAAM,KAAK,EAAE,KASnB,CAAC"}
@@ -0,0 +1,262 @@
1
+ import { renderCaliberLine, renderCopyBlock, renderDataTable, renderDisclosure, renderKpiGrid } from 'base-paint/blocks';
2
+ import { blockedBar, blockedItems, blockedMessage } from '../shared/blockedSlots.js';
3
+ import { collectMissingTags, collectSectionTitle } from '../shared/collectFrame.js';
4
+ import { copyArea, copyLog, promptCopyArea } from '../shared/copyArea.js';
5
+ import { diffOf, diffTable } from '../shared/diffTable.js';
6
+ import { emptyNote } from '../shared/emptyNote.js';
7
+ import { DOC_SKILL, DOC_TITLE, DOC_VERSION, sceneKeyOf } from '../shared/pageIdentity.js';
8
+ import { pageShell } from '../shared/pageShell.js';
9
+ import { pickerBlock, readRowById, snapshotTable } from '../shared/recordPicker.js';
10
+ import { receiptStatusCard, reconcileDisclosure } from '../shared/receiptParts.js';
11
+ import { summaryCards, summaryRow } from '../shared/summaryRow.js';
12
+ import { typeBadge } from '../shared/typeBadge.js';
13
+ import { fieldLabelOf } from '../shared/userWording.js';
14
+ import { commandLine } from '../shared/writeParts.js';
15
+ /** 一条唤醒词一件:本件服务的那条。 */
16
+ const WAKE = '撤销';
17
+ /** 本件的命令名(撤销是 `bill.record.update` 的 `op=undo` 那一支)。 */
18
+ const KEY = 'bill.record.update';
19
+ /** 撤销这件事那句说明(采集页与回执页各出一处,同一句话只写在这里一份)。
20
+ * 本轮整改:`软删打标`/`deleted_at`/`NULL`/`物理删` 都是工程话,换成用户说法
21
+ * (照 `docs/skills/skill-bill/t407-文字审查.md` 第 27、28 条的判法)。 */
22
+ const SOFT_DELETE_NOTE = '撤销只打标,不删数据,记录还在库里。'
23
+ + '撤销过的那一笔不算进查询和统计,要回来就说「恢复」。';
24
+ /** 一个值的字符串形态(数字写十进制串,其余形态按空串用)。 */
25
+ function textOf(v) {
26
+ if (typeof v === 'string')
27
+ return v.trim();
28
+ return typeof v === 'number' ? String(v) : '';
29
+ }
30
+ /** 记录编号:正整数才算给了(其余形态一律当没给,不猜)。 */
31
+ function idOf(params) {
32
+ const raw = params['id'];
33
+ const n = typeof raw === 'number' ? raw : textOf(raw) === '' ? NaN : Number(textOf(raw));
34
+ return Number.isInteger(n) && n > 0 ? n : null;
35
+ }
36
+ /** 摘要行的事实:有那一条就取库内那一行(页面说的是它),没有就取本次参数。 */
37
+ function factsOf(row, params) {
38
+ if (row !== null) {
39
+ return { amount: row.amount, category: row.category, account: row.account, ledger: row.ledger, time: row.time };
40
+ }
41
+ const raw = params['amount'];
42
+ const n = typeof raw === 'number' ? raw : textOf(raw) === '' ? NaN : Number(textOf(raw));
43
+ return {
44
+ amount: Number.isFinite(n) ? n : null,
45
+ category: textOf(params['category']),
46
+ account: textOf(params['account']),
47
+ ledger: textOf(params['ledger']),
48
+ time: textOf(params['time']),
49
+ };
50
+ }
51
+ /** 缺项时那条写库指令原文:缺的值留成尖括号占位符,**只给看不给复制**。 */
52
+ function blockedCommand(params, blocked) {
53
+ const filled = { ...params };
54
+ for (const b of blocked)
55
+ filled[b.name] = '<' + b.label + '>';
56
+ return commandLine(KEY, filled);
57
+ }
58
+ /** 缺项阻断条整条收进折叠区:首屏只留缺项标签与一行副标题,口令原文不再常驻版面。
59
+ * 内容与判定一字不动(仍是共用件 `blockedBar` 的产出),只换摆法;折叠与否那枚置灰按钮都点不动。 */
60
+ function blockedFold(items, command) {
61
+ if (items.length === 0)
62
+ return '';
63
+ return renderDisclosure({
64
+ title: '还缺什么,以及补齐后照抄的那条',
65
+ contentHtml: blockedBar({ items, command }),
66
+ });
67
+ }
68
+ /** 「照这句跟助手说一遍」那块话:挑哪一条、撤销是什么口径、接下来跟助手说哪句。 */
69
+ function promptOf(input) {
70
+ if (input.id === null) {
71
+ return '这一页先不写库。从候选里指定一条记录,再跟助手说一遍「撤销」。';
72
+ }
73
+ if (input.deleted) {
74
+ return '记录编号 ' + input.id + ' 那一条已经撤销过,再撤一次无事可做。\n'
75
+ + '要它回到库里就说「恢复」:' + commandLine(KEY, { op: 'restore', id: input.id }) + '。';
76
+ }
77
+ return '这一条就是这次要撤销的目标。撤销只打标记、不删记录,撤完还能恢复。照这条说:\n'
78
+ + commandLine(KEY, input.params);
79
+ }
80
+ /** 采集页整页:类型徽章 → 摘要行 → 打标说明 → 写库未发生 → 缺项阻断条 → 候选列表(或选定那一条的只读回显)
81
+ * → 照这句跟助手说一遍 → 复制区。缺 `id` 时**不给可跑的写库指令**(阻断条里那条带占位符、只给看不给复制)。 */
82
+ function collectOf(input) {
83
+ const { params, missing } = input;
84
+ const blocked = blockedItems({ params, missing, kind: '' });
85
+ const message = blockedMessage(missing, blocked);
86
+ const envelope = {
87
+ version: DOC_VERSION, skill: DOC_SKILL, shape: 'receipt', key: sceneKeyOf(KEY),
88
+ data: { ok: false, message },
89
+ };
90
+ const id = idOf(params);
91
+ const probe = id === null ? { ok: true, reason: '', row: null } : readRowById(id);
92
+ const row = probe.row;
93
+ const deleted = row !== null && row.deleted_at !== null && String(row.deleted_at).trim() !== '';
94
+ /** 副标题只报缺哪一项(不重复「已出采集页,补齐之后跟助手说一遍」那句)。 */
95
+ const subtitle = blocked.length === 0 ? '' : '缺必需槽位:' + blocked.map((i) => i.label).join('、');
96
+ const middle = [];
97
+ if (id === null) {
98
+ middle.push(pickerBlock({
99
+ mode: 'undo',
100
+ hint: '候选只列没撤销过的记录,挑一条即可。',
101
+ }));
102
+ }
103
+ else if (row !== null && deleted) {
104
+ middle.push(snapshotTable(row, '这一条记录 已打标撤销,只读回显'));
105
+ middle.push(emptyNote({
106
+ title: '这一条已经撤销过',
107
+ text: '记录编号 ' + id + ' 在 ' + String(row.deleted_at) + ' 已经撤销过了,这一支不再重复撤销。',
108
+ next: '要它回到库里就说「恢复」。要撤别的记录就换一个编号。',
109
+ }));
110
+ }
111
+ else if (row === null) {
112
+ middle.push(emptyNote({
113
+ title: '这个编号没有可撤销的记录',
114
+ text: '记录编号 ' + id + ' 在库里读不到。' + (probe.ok ? '' : probe.reason + '。'),
115
+ next: '核一下编号,或先说清是哪一笔。',
116
+ }));
117
+ }
118
+ else {
119
+ middle.push(snapshotTable(row, '这一条就是要撤销的记录 只读回显 记录编号 ' + row.id));
120
+ }
121
+ const content = [
122
+ typeBadge({
123
+ kind: '',
124
+ status: 'danger',
125
+ state: blocked.length > 0 ? '待补槽位 · 未写库(已阻断)' : '待核对 · 未写库',
126
+ next: '',
127
+ }),
128
+ blocked.length === 0 ? '' : collectSectionTitle({ no: 1, title: '先看这一笔缺什么' }),
129
+ collectMissingTags({ labels: blocked.map((i) => i.label) }),
130
+ summaryRow(factsOf(row, params)),
131
+ renderCaliberLine(SOFT_DELETE_NOTE),
132
+ collectSectionTitle({ no: 2, title: id === null ? '先挑一条记录' : '核对这一条' }),
133
+ blockedFold(blocked, blockedCommand(params, blocked)),
134
+ middle.join(''),
135
+ promptCopyArea(promptOf({ id, deleted, params }), '挑好记录后照这句跟助手说一遍'),
136
+ copyArea({
137
+ data: { envelope },
138
+ log: {
139
+ envelope,
140
+ copyLog: copyLog({
141
+ command: commandLine(KEY, params),
142
+ source: input.source,
143
+ detail: '没写库(采集页)',
144
+ actionAt: input.actionAt,
145
+ version: DOC_VERSION,
146
+ }),
147
+ },
148
+ }),
149
+ ].join('');
150
+ return pageShell({
151
+ docTitle: DOC_TITLE + '·补齐槽位',
152
+ title: WAKE + ' · ' + (id === null ? '挑一条记录' : '确认撤销'),
153
+ subtitle,
154
+ slot: 'collect',
155
+ page: 'collect',
156
+ shape: envelope.shape,
157
+ key: KEY,
158
+ content,
159
+ });
160
+ }
161
+ /** 撤销回执的退出口:这一条已经撤销过,再撤一次无事可做——所以出口给的是「恢复」那条指令。
162
+ *
163
+ * 第 3 轮返工(上级裁定第 1 条):改前本块另带一枚「复制数据」(`ilife-exit-restore-copy`)
164
+ * +公共层按缺省自动补的一枚置灰「复制日志」,与下面复制区那组「复制数据/复制日志」上下重复
165
+ * (DOM 实测:本页 4 枚复制按钮=两组,其余 31 页各 2 枚=单组)。
166
+ * 改后退出口只留那枚「恢复这一笔」按钮与一句去向说明,不带复制按钮、不带 `data-t`;
167
+ * 恢复指令走下面复制区那颗「复制数据」(复制载荷里仍带可重跑命令,`data-t` 形状不动)。 */
168
+ const RESTORE_EXIT_NOTE = '想反悔就用下面那颗「复制数据」,里面带着一句恢复的话。';
169
+ function restoreExit() {
170
+ return renderCopyBlock({
171
+ title: '想反悔(把这一笔找回来)',
172
+ buttons: [{ label: '↩︎ 恢复这一笔', kind: 'red', actionId: 'ilife-exit-restore' }],
173
+ }) + renderCaliberLine(RESTORE_EXIT_NOTE);
174
+ }
175
+ /** 回执页整页:类型徽章 → 一张大网格 → 说明 → 「撤销标记」的改前改后对照(diff 表)→ 写入明细表
176
+ * → 对账折叠区 → 退出口 → 复制区三件。 */
177
+ function receiptOf(input) {
178
+ const { params, receipt } = input;
179
+ const envelope = {
180
+ version: DOC_VERSION, skill: DOC_SKILL, shape: 'receipt', key: sceneKeyOf(KEY),
181
+ data: { ok: true, message: receipt.summary },
182
+ };
183
+ const after = receipt.recordId === null
184
+ ? { ok: true, reason: '', row: null }
185
+ : readRowById(receipt.recordId);
186
+ const stamped = after.ok && after.row !== null && after.row.deleted_at !== null
187
+ ? String(after.row.deleted_at) : '';
188
+ const rows = stamped === ''
189
+ ? []
190
+ : diffOf({ fields: ['撤销标记'], before: { 撤销标记: null }, after: { 撤销标记: stamped } });
191
+ const content = [
192
+ typeBadge({
193
+ kind: '',
194
+ status: 'warn',
195
+ state: '写库成功',
196
+ next: '这一笔已标记撤销,记录还在。恢复见下方按钮。',
197
+ }),
198
+ renderKpiGrid([
199
+ ...summaryCards(input.facts),
200
+ receiptStatusCard(receipt, input.writtenDetail),
201
+ { label: '这次记了几笔', value: receipt.affectedRows + ' 笔', detail: '按库里的改动算' },
202
+ {
203
+ label: '写进去的项',
204
+ value: receipt.writtenFields.length + ' 项',
205
+ detail: receipt.writtenFields.map((f) => fieldLabelOf(f)).join('、') || '没改到任何一项',
206
+ },
207
+ ]),
208
+ renderCaliberLine(SOFT_DELETE_NOTE),
209
+ rows.length === 0
210
+ ? renderDataTable({
211
+ columns: [{ key: 'k', label: '哪一项' }, { key: 'v', label: '记成什么' }],
212
+ rows: [
213
+ { k: fieldLabelOf('deleted_at'), v: '已打上(本页再读时已看不到这一条)' },
214
+ { k: '撤销后能不能找回来', v: '能:点「恢复」把它找回来' },
215
+ ],
216
+ caption: '撤销结果',
217
+ })
218
+ : diffTable({ rows, caption: '改前改后对照 只动「撤销标记」这一项' }),
219
+ renderDataTable({
220
+ columns: [{ key: 'k', label: '哪一项' }, { key: 'v', label: '记成什么' }],
221
+ rows: input.detail,
222
+ caption: '写进去的项与值',
223
+ }),
224
+ reconcileDisclosure(receipt),
225
+ receipt.recordId === null ? '' : restoreExit(),
226
+ copyArea({
227
+ data: { envelope },
228
+ log: {
229
+ envelope,
230
+ copyLog: copyLog({
231
+ command: commandLine(KEY, params),
232
+ source: receipt.source,
233
+ detail: '改了 ' + receipt.affectedRows + ' 笔,写进去 '
234
+ + (receipt.writtenFields.map((f) => fieldLabelOf(f)).join('、') || '没改到任何一项'),
235
+ actionAt: receipt.actionAt,
236
+ version: DOC_VERSION,
237
+ }),
238
+ },
239
+ }),
240
+ ].join('');
241
+ return pageShell({
242
+ docTitle: DOC_TITLE + '·写库回执',
243
+ title: WAKE + ' · 回执',
244
+ subtitle: receipt.summary,
245
+ slot: 'receipt',
246
+ page: 'receipt',
247
+ shape: envelope.shape,
248
+ key: KEY,
249
+ content,
250
+ });
251
+ }
252
+ export const SCENE = {
253
+ id: 'undo',
254
+ wakeWord: WAKE,
255
+ key: KEY,
256
+ kind: '',
257
+ op: 'undo',
258
+ family: '批量与修正族',
259
+ collect: collectOf,
260
+ receipt: receiptOf,
261
+ };
262
+ //# sourceMappingURL=scene-undo.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scene-undo.js","sourceRoot":"","sources":["../../src/record/scene-undo.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { Scene } from './scene.js';
2
+ export declare const SCENE: Scene;
3
+ //# sourceMappingURL=scene-update.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scene-update.d.ts","sourceRoot":"","sources":["../../src/record/scene-update.ts"],"names":[],"mappings":"AA+BA,OAAO,KAAK,EAA8B,KAAK,EAAE,MAAM,YAAY,CAAC;AAgOpE,eAAO,MAAM,KAAK,EAAE,KASnB,CAAC"}