skill-bill 0.2.0 → 0.2.1

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 (911) hide show
  1. package/SKILL.md +3 -2
  2. package/dist/.gen-inputs.json +21 -5
  3. package/dist/account/accounts.d.ts +98 -0
  4. package/dist/account/accounts.d.ts.map +1 -0
  5. package/dist/account/accounts.js +184 -0
  6. package/dist/account/accounts.js.map +1 -0
  7. package/dist/account/commands.d.ts +18 -0
  8. package/dist/account/commands.d.ts.map +1 -0
  9. package/dist/account/commands.js +21 -0
  10. package/dist/account/commands.js.map +1 -0
  11. package/dist/account/declaration.d.ts +9 -0
  12. package/dist/account/declaration.d.ts.map +1 -0
  13. package/dist/account/declaration.js +70 -0
  14. package/dist/account/declaration.js.map +1 -0
  15. package/dist/account/index.d.ts +15 -0
  16. package/dist/account/index.d.ts.map +1 -0
  17. package/dist/account/index.js +15 -0
  18. package/dist/account/index.js.map +1 -0
  19. package/dist/account/pageParts.d.ts +127 -0
  20. package/dist/account/pageParts.d.ts.map +1 -0
  21. package/dist/account/pageParts.js +222 -0
  22. package/dist/account/pageParts.js.map +1 -0
  23. package/dist/account/params.d.ts +52 -0
  24. package/dist/account/params.d.ts.map +1 -0
  25. package/dist/account/params.js +153 -0
  26. package/dist/account/params.js.map +1 -0
  27. package/dist/account/query.d.ts +11 -0
  28. package/dist/account/query.d.ts.map +1 -0
  29. package/dist/account/query.js +10 -0
  30. package/dist/account/query.js.map +1 -0
  31. package/dist/account/read.d.ts +8 -0
  32. package/dist/account/read.d.ts.map +1 -0
  33. package/dist/account/read.js +56 -0
  34. package/dist/account/read.js.map +1 -0
  35. package/dist/account/scene-add.d.ts +3 -0
  36. package/dist/account/scene-add.d.ts.map +1 -0
  37. package/dist/account/scene-add.js +54 -0
  38. package/dist/account/scene-add.js.map +1 -0
  39. package/dist/account/scene-transfer.d.ts +3 -0
  40. package/dist/account/scene-transfer.d.ts.map +1 -0
  41. package/dist/account/scene-transfer.js +73 -0
  42. package/dist/account/scene-transfer.js.map +1 -0
  43. package/dist/account/scene-update.d.ts +3 -0
  44. package/dist/account/scene-update.d.ts.map +1 -0
  45. package/dist/account/scene-update.js +56 -0
  46. package/dist/account/scene-update.js.map +1 -0
  47. package/dist/account/scene.d.ts +73 -0
  48. package/dist/account/scene.d.ts.map +1 -0
  49. package/dist/account/scene.js +34 -0
  50. package/dist/account/scene.js.map +1 -0
  51. package/dist/account/template-form.d.ts +52 -0
  52. package/dist/account/template-form.d.ts.map +1 -0
  53. package/dist/account/template-form.js +125 -0
  54. package/dist/account/template-form.js.map +1 -0
  55. package/dist/account/template-summary.d.ts +38 -0
  56. package/dist/account/template-summary.d.ts.map +1 -0
  57. package/dist/account/template-summary.js +179 -0
  58. package/dist/account/template-summary.js.map +1 -0
  59. package/dist/account/template-update.d.ts +35 -0
  60. package/dist/account/template-update.d.ts.map +1 -0
  61. package/dist/account/template-update.js +193 -0
  62. package/dist/account/template-update.js.map +1 -0
  63. package/dist/account/write.d.ts +14 -0
  64. package/dist/account/write.d.ts.map +1 -0
  65. package/dist/account/write.js +166 -0
  66. package/dist/account/write.js.map +1 -0
  67. package/dist/analysis/agg.d.ts +135 -0
  68. package/dist/analysis/agg.d.ts.map +1 -0
  69. package/dist/analysis/agg.js +196 -0
  70. package/dist/analysis/agg.js.map +1 -0
  71. package/dist/analysis/cards.d.ts +40 -0
  72. package/dist/analysis/cards.d.ts.map +1 -0
  73. package/dist/analysis/cards.js +97 -0
  74. package/dist/analysis/cards.js.map +1 -0
  75. package/dist/analysis/commands.d.ts +17 -0
  76. package/dist/analysis/commands.d.ts.map +1 -0
  77. package/dist/analysis/commands.js +28 -0
  78. package/dist/analysis/commands.js.map +1 -0
  79. package/dist/analysis/declaration.d.ts +9 -0
  80. package/dist/analysis/declaration.d.ts.map +1 -0
  81. package/dist/analysis/declaration.js +368 -0
  82. package/dist/analysis/declaration.js.map +1 -0
  83. package/dist/analysis/index.d.ts +14 -0
  84. package/dist/analysis/index.d.ts.map +1 -0
  85. package/dist/analysis/index.js +14 -0
  86. package/dist/analysis/index.js.map +1 -0
  87. package/dist/analysis/pageParts.d.ts +103 -0
  88. package/dist/analysis/pageParts.d.ts.map +1 -0
  89. package/dist/analysis/pageParts.js +158 -0
  90. package/dist/analysis/pageParts.js.map +1 -0
  91. package/dist/{policy/analysis.d.ts → analysis/params.d.ts} +1 -1
  92. package/dist/analysis/params.d.ts.map +1 -0
  93. package/dist/{policy/analysis.js → analysis/params.js} +10 -4
  94. package/dist/analysis/params.js.map +1 -0
  95. package/dist/analysis/read.d.ts +26 -0
  96. package/dist/analysis/read.d.ts.map +1 -0
  97. package/dist/analysis/read.js +84 -0
  98. package/dist/analysis/read.js.map +1 -0
  99. package/dist/analysis/scene-account.d.ts +3 -0
  100. package/dist/analysis/scene-account.d.ts.map +1 -0
  101. package/dist/analysis/scene-account.js +88 -0
  102. package/dist/analysis/scene-account.js.map +1 -0
  103. package/dist/analysis/scene-activity.d.ts +3 -0
  104. package/dist/analysis/scene-activity.d.ts.map +1 -0
  105. package/dist/analysis/scene-activity.js +108 -0
  106. package/dist/analysis/scene-activity.js.map +1 -0
  107. package/dist/analysis/scene-anomaly.d.ts +3 -0
  108. package/dist/analysis/scene-anomaly.d.ts.map +1 -0
  109. package/dist/analysis/scene-anomaly.js +173 -0
  110. package/dist/analysis/scene-anomaly.js.map +1 -0
  111. package/dist/analysis/scene-cat-compare.d.ts +3 -0
  112. package/dist/analysis/scene-cat-compare.d.ts.map +1 -0
  113. package/dist/analysis/scene-cat-compare.js +128 -0
  114. package/dist/analysis/scene-cat-compare.js.map +1 -0
  115. package/dist/analysis/scene-cat-trend.d.ts +3 -0
  116. package/dist/analysis/scene-cat-trend.d.ts.map +1 -0
  117. package/dist/analysis/scene-cat-trend.js +121 -0
  118. package/dist/analysis/scene-cat-trend.js.map +1 -0
  119. package/dist/analysis/scene-category.d.ts +3 -0
  120. package/dist/analysis/scene-category.d.ts.map +1 -0
  121. package/dist/analysis/scene-category.js +104 -0
  122. package/dist/analysis/scene-category.js.map +1 -0
  123. package/dist/analysis/scene-debt.d.ts +3 -0
  124. package/dist/analysis/scene-debt.d.ts.map +1 -0
  125. package/dist/analysis/scene-debt.js +111 -0
  126. package/dist/analysis/scene-debt.js.map +1 -0
  127. package/dist/analysis/scene-distribution.d.ts +3 -0
  128. package/dist/analysis/scene-distribution.d.ts.map +1 -0
  129. package/dist/analysis/scene-distribution.js +144 -0
  130. package/dist/analysis/scene-distribution.js.map +1 -0
  131. package/dist/analysis/scene-insight.d.ts +3 -0
  132. package/dist/analysis/scene-insight.d.ts.map +1 -0
  133. package/dist/analysis/scene-insight.js +151 -0
  134. package/dist/analysis/scene-insight.js.map +1 -0
  135. package/dist/analysis/scene-installment.d.ts +3 -0
  136. package/dist/analysis/scene-installment.d.ts.map +1 -0
  137. package/dist/analysis/scene-installment.js +168 -0
  138. package/dist/analysis/scene-installment.js.map +1 -0
  139. package/dist/analysis/scene-ledger.d.ts +3 -0
  140. package/dist/analysis/scene-ledger.d.ts.map +1 -0
  141. package/dist/analysis/scene-ledger.js +80 -0
  142. package/dist/analysis/scene-ledger.js.map +1 -0
  143. package/dist/analysis/scene-monthly.d.ts +3 -0
  144. package/dist/analysis/scene-monthly.d.ts.map +1 -0
  145. package/dist/analysis/scene-monthly.js +79 -0
  146. package/dist/analysis/scene-monthly.js.map +1 -0
  147. package/dist/analysis/scene-overview.d.ts +3 -0
  148. package/dist/analysis/scene-overview.d.ts.map +1 -0
  149. package/dist/analysis/scene-overview.js +82 -0
  150. package/dist/analysis/scene-overview.js.map +1 -0
  151. package/dist/analysis/scene-period-compare.d.ts +3 -0
  152. package/dist/analysis/scene-period-compare.d.ts.map +1 -0
  153. package/dist/analysis/scene-period-compare.js +127 -0
  154. package/dist/analysis/scene-period-compare.js.map +1 -0
  155. package/dist/analysis/scene-range-compare.d.ts +3 -0
  156. package/dist/analysis/scene-range-compare.d.ts.map +1 -0
  157. package/dist/analysis/scene-range-compare.js +144 -0
  158. package/dist/analysis/scene-range-compare.js.map +1 -0
  159. package/dist/analysis/scene-refund.d.ts +3 -0
  160. package/dist/analysis/scene-refund.d.ts.map +1 -0
  161. package/dist/analysis/scene-refund.js +78 -0
  162. package/dist/analysis/scene-refund.js.map +1 -0
  163. package/dist/analysis/scene-reimburse.d.ts +3 -0
  164. package/dist/analysis/scene-reimburse.d.ts.map +1 -0
  165. package/dist/analysis/scene-reimburse.js +88 -0
  166. package/dist/analysis/scene-reimburse.js.map +1 -0
  167. package/dist/analysis/scene-stats.d.ts +3 -0
  168. package/dist/analysis/scene-stats.d.ts.map +1 -0
  169. package/dist/analysis/scene-stats.js +80 -0
  170. package/dist/analysis/scene-stats.js.map +1 -0
  171. package/dist/analysis/scene-structure.d.ts +3 -0
  172. package/dist/analysis/scene-structure.d.ts.map +1 -0
  173. package/dist/analysis/scene-structure.js +93 -0
  174. package/dist/analysis/scene-structure.js.map +1 -0
  175. package/dist/analysis/scene-top-freq.d.ts +3 -0
  176. package/dist/analysis/scene-top-freq.d.ts.map +1 -0
  177. package/dist/analysis/scene-top-freq.js +91 -0
  178. package/dist/analysis/scene-top-freq.js.map +1 -0
  179. package/dist/analysis/scene-top.d.ts +3 -0
  180. package/dist/analysis/scene-top.d.ts.map +1 -0
  181. package/dist/analysis/scene-top.js +69 -0
  182. package/dist/analysis/scene-top.js.map +1 -0
  183. package/dist/analysis/scene-trend.d.ts +3 -0
  184. package/dist/analysis/scene-trend.d.ts.map +1 -0
  185. package/dist/analysis/scene-trend.js +131 -0
  186. package/dist/analysis/scene-trend.js.map +1 -0
  187. package/dist/analysis/scene-week.d.ts +3 -0
  188. package/dist/analysis/scene-week.d.ts.map +1 -0
  189. package/dist/analysis/scene-week.js +128 -0
  190. package/dist/analysis/scene-week.js.map +1 -0
  191. package/dist/analysis/scene-yearly.d.ts +3 -0
  192. package/dist/analysis/scene-yearly.d.ts.map +1 -0
  193. package/dist/analysis/scene-yearly.js +103 -0
  194. package/dist/analysis/scene-yearly.js.map +1 -0
  195. package/dist/analysis/scene-yoy.d.ts +3 -0
  196. package/dist/analysis/scene-yoy.d.ts.map +1 -0
  197. package/dist/analysis/scene-yoy.js +95 -0
  198. package/dist/analysis/scene-yoy.js.map +1 -0
  199. package/dist/analysis/scene.d.ts +240 -0
  200. package/dist/analysis/scene.d.ts.map +1 -0
  201. package/dist/analysis/scene.js +47 -0
  202. package/dist/analysis/scene.js.map +1 -0
  203. package/dist/analysis/template-bars.d.ts +3 -0
  204. package/dist/analysis/template-bars.d.ts.map +1 -0
  205. package/dist/analysis/template-bars.js +64 -0
  206. package/dist/analysis/template-bars.js.map +1 -0
  207. package/dist/analysis/template-charts.d.ts +3 -0
  208. package/dist/analysis/template-charts.d.ts.map +1 -0
  209. package/dist/analysis/template-charts.js +55 -0
  210. package/dist/analysis/template-charts.js.map +1 -0
  211. package/dist/analysis/template-compare.d.ts +3 -0
  212. package/dist/analysis/template-compare.d.ts.map +1 -0
  213. package/dist/analysis/template-compare.js +54 -0
  214. package/dist/analysis/template-compare.js.map +1 -0
  215. package/dist/analysis/template-insight.d.ts +3 -0
  216. package/dist/analysis/template-insight.d.ts.map +1 -0
  217. package/dist/analysis/template-insight.js +56 -0
  218. package/dist/analysis/template-insight.js.map +1 -0
  219. package/dist/analysis/template-tables.d.ts +3 -0
  220. package/dist/analysis/template-tables.d.ts.map +1 -0
  221. package/dist/analysis/template-tables.js +49 -0
  222. package/dist/analysis/template-tables.js.map +1 -0
  223. package/dist/analysis/views.d.ts +35 -0
  224. package/dist/analysis/views.d.ts.map +1 -0
  225. package/dist/{render → analysis}/views.js +2 -40
  226. package/dist/analysis/views.js.map +1 -0
  227. package/dist/cli/cmd_read.js +54 -302
  228. package/dist/cli/cmd_read.js.map +1 -1
  229. package/dist/cli/config.d.ts +16 -0
  230. package/dist/cli/config.d.ts.map +1 -0
  231. package/dist/cli/config.js +81 -0
  232. package/dist/cli/config.js.map +1 -0
  233. package/dist/cli/health.d.ts +7 -0
  234. package/dist/cli/health.d.ts.map +1 -0
  235. package/dist/cli/health.js +32 -0
  236. package/dist/cli/health.js.map +1 -0
  237. package/dist/cli/registry.d.ts +1 -1
  238. package/dist/cli/registry.d.ts.map +1 -1
  239. package/dist/cli/registry.js +9 -1
  240. package/dist/cli/registry.js.map +1 -1
  241. package/dist/config.d.ts +41 -0
  242. package/dist/config.d.ts.map +1 -0
  243. package/dist/config.js +64 -0
  244. package/dist/config.js.map +1 -0
  245. package/dist/fetch/db.d.ts +6 -1
  246. package/dist/fetch/db.d.ts.map +1 -1
  247. package/dist/fetch/db.js +8 -3
  248. package/dist/fetch/db.js.map +1 -1
  249. package/dist/fetch/index.d.ts +1 -1
  250. package/dist/fetch/index.d.ts.map +1 -1
  251. package/dist/fetch/index.js +1 -1
  252. package/dist/fetch/index.js.map +1 -1
  253. package/dist/fetch/paths.d.ts +16 -4
  254. package/dist/fetch/paths.d.ts.map +1 -1
  255. package/dist/fetch/paths.js +54 -24
  256. package/dist/fetch/paths.js.map +1 -1
  257. package/dist/goal/commands.d.ts +18 -0
  258. package/dist/goal/commands.d.ts.map +1 -0
  259. package/dist/goal/commands.js +21 -0
  260. package/dist/goal/commands.js.map +1 -0
  261. package/dist/goal/declaration.d.ts +9 -0
  262. package/dist/goal/declaration.d.ts.map +1 -0
  263. package/dist/goal/declaration.js +71 -0
  264. package/dist/goal/declaration.js.map +1 -0
  265. package/dist/goal/goalData.d.ts +126 -0
  266. package/dist/goal/goalData.d.ts.map +1 -0
  267. package/dist/goal/goalData.js +228 -0
  268. package/dist/goal/goalData.js.map +1 -0
  269. package/dist/goal/index.d.ts +19 -0
  270. package/dist/goal/index.d.ts.map +1 -0
  271. package/dist/goal/index.js +19 -0
  272. package/dist/goal/index.js.map +1 -0
  273. package/dist/goal/pageParts.d.ts +140 -0
  274. package/dist/goal/pageParts.d.ts.map +1 -0
  275. package/dist/goal/pageParts.js +233 -0
  276. package/dist/goal/pageParts.js.map +1 -0
  277. package/dist/goal/params.d.ts +63 -0
  278. package/dist/goal/params.d.ts.map +1 -0
  279. package/dist/goal/params.js +164 -0
  280. package/dist/goal/params.js.map +1 -0
  281. package/dist/goal/query.d.ts +12 -0
  282. package/dist/goal/query.d.ts.map +1 -0
  283. package/dist/goal/query.js +10 -0
  284. package/dist/goal/query.js.map +1 -0
  285. package/dist/goal/read.d.ts +5 -0
  286. package/dist/goal/read.d.ts.map +1 -0
  287. package/dist/goal/read.js +79 -0
  288. package/dist/goal/read.js.map +1 -0
  289. package/dist/goal/scene-budget.d.ts +3 -0
  290. package/dist/goal/scene-budget.d.ts.map +1 -0
  291. package/dist/goal/scene-budget.js +125 -0
  292. package/dist/goal/scene-budget.js.map +1 -0
  293. package/dist/goal/scene-saving.d.ts +3 -0
  294. package/dist/goal/scene-saving.d.ts.map +1 -0
  295. package/dist/goal/scene-saving.js +116 -0
  296. package/dist/goal/scene-saving.js.map +1 -0
  297. package/dist/goal/scene-set-budget.d.ts +3 -0
  298. package/dist/goal/scene-set-budget.d.ts.map +1 -0
  299. package/dist/goal/scene-set-budget.js +94 -0
  300. package/dist/goal/scene-set-budget.js.map +1 -0
  301. package/dist/goal/scene-set-saving.d.ts +3 -0
  302. package/dist/goal/scene-set-saving.d.ts.map +1 -0
  303. package/dist/goal/scene-set-saving.js +66 -0
  304. package/dist/goal/scene-set-saving.js.map +1 -0
  305. package/dist/goal/scene.d.ts +142 -0
  306. package/dist/goal/scene.d.ts.map +1 -0
  307. package/dist/goal/scene.js +51 -0
  308. package/dist/goal/scene.js.map +1 -0
  309. package/dist/goal/template-form.d.ts +32 -0
  310. package/dist/goal/template-form.d.ts.map +1 -0
  311. package/dist/goal/template-form.js +124 -0
  312. package/dist/goal/template-form.js.map +1 -0
  313. package/dist/goal/template-progress.d.ts +47 -0
  314. package/dist/goal/template-progress.d.ts.map +1 -0
  315. package/dist/goal/template-progress.js +79 -0
  316. package/dist/goal/template-progress.js.map +1 -0
  317. package/dist/goal/write.d.ts +6 -0
  318. package/dist/goal/write.d.ts.map +1 -0
  319. package/dist/goal/write.js +131 -0
  320. package/dist/goal/write.js.map +1 -0
  321. package/dist/health.d.ts +41 -0
  322. package/dist/health.d.ts.map +1 -0
  323. package/dist/health.js +456 -0
  324. package/dist/health.js.map +1 -0
  325. package/dist/help/declaration.d.ts +9 -0
  326. package/dist/help/declaration.d.ts.map +1 -0
  327. package/dist/help/declaration.js +28 -0
  328. package/dist/help/declaration.js.map +1 -0
  329. package/dist/{render → help}/helpFile.d.ts +5 -2
  330. package/dist/help/helpFile.d.ts.map +1 -0
  331. package/dist/{render → help}/helpFile.js +13 -4
  332. package/dist/help/helpFile.js.map +1 -0
  333. package/dist/help/helpPaths.d.ts +11 -0
  334. package/dist/help/helpPaths.d.ts.map +1 -0
  335. package/dist/help/helpPaths.js +36 -0
  336. package/dist/help/helpPaths.js.map +1 -0
  337. package/dist/help/index.d.ts +2 -1
  338. package/dist/help/index.d.ts.map +1 -1
  339. package/dist/help/index.js +2 -1
  340. package/dist/help/index.js.map +1 -1
  341. package/dist/help/items.d.ts +17 -0
  342. package/dist/help/items.d.ts.map +1 -0
  343. package/dist/help/items.js +5 -0
  344. package/dist/help/items.js.map +1 -0
  345. package/dist/help/lookup.d.ts +1 -1
  346. package/dist/help/lookup.d.ts.map +1 -1
  347. package/dist/help/lookup.js +2 -2
  348. package/dist/help/lookup.js.map +1 -1
  349. package/dist/index.d.ts +0 -1
  350. package/dist/index.d.ts.map +1 -1
  351. package/dist/index.js +5 -1
  352. package/dist/index.js.map +1 -1
  353. package/dist/link/declaration.d.ts +9 -0
  354. package/dist/link/declaration.d.ts.map +1 -0
  355. package/dist/link/declaration.js +40 -0
  356. package/dist/link/declaration.js.map +1 -0
  357. package/dist/query/commands.d.ts +0 -2
  358. package/dist/query/commands.d.ts.map +1 -1
  359. package/dist/query/commands.js +0 -4
  360. package/dist/query/commands.js.map +1 -1
  361. package/dist/query/declaration.d.ts +9 -0
  362. package/dist/query/declaration.d.ts.map +1 -0
  363. package/dist/query/declaration.js +251 -0
  364. package/dist/query/declaration.js.map +1 -0
  365. package/dist/query/detail.d.ts +4 -2
  366. package/dist/query/detail.d.ts.map +1 -1
  367. package/dist/query/detail.js +60 -32
  368. package/dist/query/detail.js.map +1 -1
  369. package/dist/query/index.d.ts +8 -2
  370. package/dist/query/index.d.ts.map +1 -1
  371. package/dist/query/index.js.map +1 -1
  372. package/dist/query/items.d.ts +22 -0
  373. package/dist/query/items.d.ts.map +1 -0
  374. package/dist/query/items.js +7 -0
  375. package/dist/query/items.js.map +1 -0
  376. package/dist/query/list.d.ts +31 -9
  377. package/dist/query/list.d.ts.map +1 -1
  378. package/dist/query/list.js +192 -55
  379. package/dist/query/list.js.map +1 -1
  380. package/dist/query/pageParts.d.ts +6 -0
  381. package/dist/query/pageParts.d.ts.map +1 -0
  382. package/dist/query/pageParts.js +18 -0
  383. package/dist/query/pageParts.js.map +1 -0
  384. package/dist/query/read.d.ts +8 -12
  385. package/dist/query/read.d.ts.map +1 -1
  386. package/dist/query/read.js +86 -63
  387. package/dist/query/read.js.map +1 -1
  388. package/dist/render/envelope.d.ts.map +1 -1
  389. package/dist/render/envelope.js +3 -11
  390. package/dist/render/envelope.js.map +1 -1
  391. package/dist/render/html.d.ts +0 -1
  392. package/dist/render/html.d.ts.map +1 -1
  393. package/dist/render/html.js +1 -3
  394. package/dist/render/html.js.map +1 -1
  395. package/dist/render/index.d.ts +5 -6
  396. package/dist/render/index.d.ts.map +1 -1
  397. package/dist/render/index.js +8 -4
  398. package/dist/render/index.js.map +1 -1
  399. package/dist/setup/backups.d.ts +52 -0
  400. package/dist/setup/backups.d.ts.map +1 -0
  401. package/dist/setup/backups.js +172 -0
  402. package/dist/setup/backups.js.map +1 -0
  403. package/dist/setup/blocked.d.ts +12 -0
  404. package/dist/setup/blocked.d.ts.map +1 -0
  405. package/dist/setup/blocked.js +65 -0
  406. package/dist/setup/blocked.js.map +1 -0
  407. package/dist/setup/commands.d.ts +10 -0
  408. package/dist/setup/commands.d.ts.map +1 -0
  409. package/dist/setup/commands.js +12 -0
  410. package/dist/setup/commands.js.map +1 -0
  411. package/dist/setup/declaration.d.ts +9 -0
  412. package/dist/setup/declaration.d.ts.map +1 -0
  413. package/dist/setup/declaration.js +92 -0
  414. package/dist/setup/declaration.js.map +1 -0
  415. package/dist/setup/import.d.ts +8 -0
  416. package/dist/setup/import.d.ts.map +1 -0
  417. package/dist/setup/import.js +111 -0
  418. package/dist/setup/import.js.map +1 -0
  419. package/dist/setup/importer.d.ts +79 -0
  420. package/dist/setup/importer.d.ts.map +1 -0
  421. package/dist/setup/importer.js +231 -0
  422. package/dist/setup/importer.js.map +1 -0
  423. package/dist/setup/index.d.ts +8 -0
  424. package/dist/setup/index.d.ts.map +1 -0
  425. package/dist/setup/index.js +8 -0
  426. package/dist/setup/index.js.map +1 -0
  427. package/dist/setup/pageParts.d.ts +93 -0
  428. package/dist/setup/pageParts.d.ts.map +1 -0
  429. package/dist/setup/pageParts.js +197 -0
  430. package/dist/setup/pageParts.js.map +1 -0
  431. package/dist/setup/params.d.ts +43 -0
  432. package/dist/setup/params.d.ts.map +1 -0
  433. package/dist/setup/params.js +94 -0
  434. package/dist/setup/params.js.map +1 -0
  435. package/dist/setup/restore.d.ts +5 -0
  436. package/dist/setup/restore.d.ts.map +1 -0
  437. package/dist/setup/restore.js +129 -0
  438. package/dist/setup/restore.js.map +1 -0
  439. package/dist/setup/run.d.ts +5 -0
  440. package/dist/setup/run.d.ts.map +1 -0
  441. package/dist/setup/run.js +188 -0
  442. package/dist/setup/run.js.map +1 -0
  443. package/dist/setup/scene-backup-create.d.ts +3 -0
  444. package/dist/setup/scene-backup-create.d.ts.map +1 -0
  445. package/dist/setup/scene-backup-create.js +26 -0
  446. package/dist/setup/scene-backup-create.js.map +1 -0
  447. package/dist/setup/scene-backup-list.d.ts +3 -0
  448. package/dist/setup/scene-backup-list.d.ts.map +1 -0
  449. package/dist/setup/scene-backup-list.js +24 -0
  450. package/dist/setup/scene-backup-list.js.map +1 -0
  451. package/dist/setup/scene-import.d.ts +3 -0
  452. package/dist/setup/scene-import.d.ts.map +1 -0
  453. package/dist/setup/scene-import.js +36 -0
  454. package/dist/setup/scene-import.js.map +1 -0
  455. package/dist/setup/scene-init-status.d.ts +14 -0
  456. package/dist/setup/scene-init-status.d.ts.map +1 -0
  457. package/dist/setup/scene-init-status.js +16 -0
  458. package/dist/setup/scene-init-status.js.map +1 -0
  459. package/dist/setup/scene-init.d.ts +3 -0
  460. package/dist/setup/scene-init.d.ts.map +1 -0
  461. package/dist/setup/scene-init.js +25 -0
  462. package/dist/setup/scene-init.js.map +1 -0
  463. package/dist/setup/scene-restore.d.ts +3 -0
  464. package/dist/setup/scene-restore.d.ts.map +1 -0
  465. package/dist/setup/scene-restore.js +33 -0
  466. package/dist/setup/scene-restore.js.map +1 -0
  467. package/dist/setup/scene.d.ts +26 -0
  468. package/dist/setup/scene.d.ts.map +1 -0
  469. package/dist/setup/scene.js +42 -0
  470. package/dist/setup/scene.js.map +1 -0
  471. package/dist/setup/status.d.ts +47 -0
  472. package/dist/setup/status.d.ts.map +1 -0
  473. package/dist/setup/status.js +68 -0
  474. package/dist/setup/status.js.map +1 -0
  475. package/dist/setup/steps.d.ts +66 -0
  476. package/dist/setup/steps.d.ts.map +1 -0
  477. package/dist/setup/steps.js +123 -0
  478. package/dist/setup/steps.js.map +1 -0
  479. package/dist/setup/template-list.d.ts +29 -0
  480. package/dist/setup/template-list.d.ts.map +1 -0
  481. package/dist/setup/template-list.js +187 -0
  482. package/dist/setup/template-list.js.map +1 -0
  483. package/dist/setup/template-receipt.d.ts +18 -0
  484. package/dist/setup/template-receipt.d.ts.map +1 -0
  485. package/dist/setup/template-receipt.js +93 -0
  486. package/dist/setup/template-receipt.js.map +1 -0
  487. package/dist/setup/template-wizard.d.ts +64 -0
  488. package/dist/setup/template-wizard.d.ts.map +1 -0
  489. package/dist/setup/template-wizard.js +233 -0
  490. package/dist/setup/template-wizard.js.map +1 -0
  491. package/dist/{policy → shared}/category.d.ts +0 -11
  492. package/dist/shared/category.d.ts.map +1 -0
  493. package/dist/{policy → shared}/category.js +15 -60
  494. package/dist/shared/category.js.map +1 -0
  495. package/dist/shared/commandSpec.d.ts +13 -10
  496. package/dist/shared/commandSpec.d.ts.map +1 -1
  497. package/dist/shared/copyArea.d.ts +1 -1
  498. package/dist/shared/copyArea.d.ts.map +1 -1
  499. package/dist/shared/copyArea.js +6 -4
  500. package/dist/shared/copyArea.js.map +1 -1
  501. package/dist/shared/dateRange.d.ts +31 -0
  502. package/dist/shared/dateRange.d.ts.map +1 -0
  503. package/dist/shared/dateRange.js +121 -0
  504. package/dist/shared/dateRange.js.map +1 -0
  505. package/dist/shared/docPage.d.ts +5 -1
  506. package/dist/shared/docPage.d.ts.map +1 -1
  507. package/dist/shared/docPage.js +50 -41
  508. package/dist/shared/docPage.js.map +1 -1
  509. package/dist/shared/kpi.d.ts +21 -0
  510. package/dist/shared/kpi.d.ts.map +1 -0
  511. package/dist/shared/kpi.js +20 -0
  512. package/dist/shared/kpi.js.map +1 -0
  513. package/dist/shared/pageIdentity.d.ts +11 -2
  514. package/dist/shared/pageIdentity.d.ts.map +1 -1
  515. package/dist/shared/pageIdentity.js +14 -2
  516. package/dist/shared/pageIdentity.js.map +1 -1
  517. package/dist/shared/pageSections.d.ts +23 -0
  518. package/dist/shared/pageSections.d.ts.map +1 -0
  519. package/dist/shared/pageSections.js +52 -0
  520. package/dist/shared/pageSections.js.map +1 -0
  521. package/dist/shared/pageShell.d.ts +2 -2
  522. package/dist/shared/pageShell.d.ts.map +1 -1
  523. package/dist/shared/pageShell.js +5 -10
  524. package/dist/shared/pageShell.js.map +1 -1
  525. package/dist/shared/params.d.ts +11 -0
  526. package/dist/shared/params.d.ts.map +1 -0
  527. package/dist/shared/params.js +60 -0
  528. package/dist/shared/params.js.map +1 -0
  529. package/dist/shared/sourceLine.d.ts +19 -0
  530. package/dist/shared/sourceLine.d.ts.map +1 -0
  531. package/dist/shared/sourceLine.js +52 -0
  532. package/dist/shared/sourceLine.js.map +1 -0
  533. package/dist/shared/writeParts.d.ts +5 -3
  534. package/dist/shared/writeParts.d.ts.map +1 -1
  535. package/dist/shared/writeParts.js.map +1 -1
  536. package/dist/triggers/routeSpec.d.ts +109 -0
  537. package/dist/triggers/routeSpec.d.ts.map +1 -0
  538. package/dist/triggers/routeSpec.js +19 -0
  539. package/dist/triggers/routeSpec.js.map +1 -0
  540. package/dist/triggers/wake-assets.d.ts +4 -26
  541. package/dist/triggers/wake-assets.d.ts.map +1 -1
  542. package/dist/triggers/wake-assets.js +52 -936
  543. package/dist/triggers/wake-assets.js.map +1 -1
  544. package/dist/triggers/wakeTable.d.ts +18 -0
  545. package/dist/triggers/wakeTable.d.ts.map +1 -0
  546. package/dist/triggers/wakeTable.js +135 -0
  547. package/dist/triggers/wakeTable.js.map +1 -0
  548. package/dist/write/blockedFold.d.ts +10 -0
  549. package/dist/write/blockedFold.d.ts.map +1 -0
  550. package/dist/write/blockedFold.js +31 -0
  551. package/dist/write/blockedFold.js.map +1 -0
  552. package/dist/{shared → write}/blockedSlots.d.ts +1 -1
  553. package/dist/write/blockedSlots.d.ts.map +1 -0
  554. package/dist/{shared → write}/blockedSlots.js +10 -7
  555. package/dist/write/blockedSlots.js.map +1 -0
  556. package/dist/write/candidatePick.d.ts.map +1 -0
  557. package/dist/{shared → write}/candidatePick.js +4 -3
  558. package/dist/write/candidatePick.js.map +1 -0
  559. package/dist/{record → write}/collect.d.ts +6 -4
  560. package/dist/write/collect.d.ts.map +1 -0
  561. package/dist/write/collect.js.map +1 -0
  562. package/dist/{record → write}/collectBody.d.ts +3 -3
  563. package/dist/write/collectBody.d.ts.map +1 -0
  564. package/dist/{record → write}/collectBody.js +13 -13
  565. package/dist/write/collectBody.js.map +1 -0
  566. package/dist/{shared → write}/collectFrame.d.ts +3 -1
  567. package/dist/{shared → write}/collectFrame.d.ts.map +1 -1
  568. package/dist/write/collectFrame.js +36 -0
  569. package/dist/write/collectFrame.js.map +1 -0
  570. package/dist/{record → write}/commands.d.ts +0 -1
  571. package/dist/write/commands.d.ts.map +1 -0
  572. package/dist/{record → write}/commands.js +0 -2
  573. package/dist/write/commands.js.map +1 -0
  574. package/dist/write/declaration.d.ts +9 -0
  575. package/dist/write/declaration.d.ts.map +1 -0
  576. package/dist/write/declaration.js +239 -0
  577. package/dist/write/declaration.js.map +1 -0
  578. package/dist/write/diffTable.d.ts.map +1 -0
  579. package/dist/{shared → write}/diffTable.js +1 -1
  580. package/dist/write/diffTable.js.map +1 -0
  581. package/dist/write/duplicateNote.d.ts.map +1 -0
  582. package/dist/{shared → write}/duplicateNote.js +4 -4
  583. package/dist/write/duplicateNote.js.map +1 -0
  584. package/dist/write/emptyNote.d.ts.map +1 -0
  585. package/dist/{shared → write}/emptyNote.js +2 -2
  586. package/dist/write/emptyNote.js.map +1 -0
  587. package/dist/{shared → write}/errorReceipt.d.ts +1 -1
  588. package/dist/write/errorReceipt.d.ts.map +1 -0
  589. package/dist/{shared → write}/errorReceipt.js +2 -2
  590. package/dist/write/errorReceipt.js.map +1 -0
  591. package/dist/write/flowSteps.d.ts.map +1 -0
  592. package/dist/{shared → write}/flowSteps.js +1 -1
  593. package/dist/write/flowSteps.js.map +1 -0
  594. package/dist/{record → write}/index.d.ts +7 -3
  595. package/dist/write/index.d.ts.map +1 -0
  596. package/dist/{record → write}/index.js +1 -0
  597. package/dist/write/index.js.map +1 -0
  598. package/dist/write/installmentPreview.d.ts.map +1 -0
  599. package/dist/{shared → write}/installmentPreview.js +3 -3
  600. package/dist/write/installmentPreview.js.map +1 -0
  601. package/dist/write/outsideScan.d.ts.map +1 -0
  602. package/dist/{shared → write}/outsideScan.js +7 -7
  603. package/dist/write/outsideScan.js.map +1 -0
  604. package/dist/write/pageParts.d.ts +69 -0
  605. package/dist/write/pageParts.d.ts.map +1 -0
  606. package/dist/write/pageParts.js +80 -0
  607. package/dist/write/pageParts.js.map +1 -0
  608. package/dist/write/photoEscape.d.ts.map +1 -0
  609. package/dist/{shared → write}/photoEscape.js +16 -16
  610. package/dist/write/photoEscape.js.map +1 -0
  611. package/dist/write/prefillNote.d.ts.map +1 -0
  612. package/dist/{shared → write}/prefillNote.js +6 -5
  613. package/dist/write/prefillNote.js.map +1 -0
  614. package/dist/{record → write}/receipt.d.ts +5 -3
  615. package/dist/write/receipt.d.ts.map +1 -0
  616. package/dist/write/receipt.js.map +1 -0
  617. package/dist/write/receiptBody.d.ts +10 -0
  618. package/dist/write/receiptBody.d.ts.map +1 -0
  619. package/dist/{record → write}/receiptBody.js +24 -25
  620. package/dist/write/receiptBody.js.map +1 -0
  621. package/dist/write/receiptOut.d.ts +14 -0
  622. package/dist/write/receiptOut.d.ts.map +1 -0
  623. package/dist/write/receiptOut.js +13 -0
  624. package/dist/write/receiptOut.js.map +1 -0
  625. package/dist/{shared → write}/receiptParts.d.ts +1 -1
  626. package/dist/write/receiptParts.d.ts.map +1 -0
  627. package/dist/{shared → write}/receiptParts.js +3 -3
  628. package/dist/write/receiptParts.js.map +1 -0
  629. package/dist/{shared → write}/recentPicks.d.ts +14 -6
  630. package/dist/write/recentPicks.d.ts.map +1 -0
  631. package/dist/write/recentPicks.js +65 -0
  632. package/dist/write/recentPicks.js.map +1 -0
  633. package/dist/write/record.d.ts +13 -0
  634. package/dist/write/record.d.ts.map +1 -0
  635. package/dist/write/record.js +46 -0
  636. package/dist/write/record.js.map +1 -0
  637. package/dist/write/recordPicker.d.ts.map +1 -0
  638. package/dist/{shared → write}/recordPicker.js +3 -3
  639. package/dist/write/recordPicker.js.map +1 -0
  640. package/dist/write/rowEditorTable.d.ts.map +1 -0
  641. package/dist/{shared → write}/rowEditorTable.js +1 -1
  642. package/dist/write/rowEditorTable.js.map +1 -0
  643. package/dist/write/scene-batch.d.ts.map +1 -0
  644. package/dist/write/scene-batch.js +37 -0
  645. package/dist/write/scene-batch.js.map +1 -0
  646. package/dist/write/scene-borrow.d.ts.map +1 -0
  647. package/dist/write/scene-borrow.js +166 -0
  648. package/dist/write/scene-borrow.js.map +1 -0
  649. package/dist/write/scene-collect.d.ts.map +1 -0
  650. package/dist/write/scene-collect.js +155 -0
  651. package/dist/write/scene-collect.js.map +1 -0
  652. package/dist/write/scene-expense.d.ts.map +1 -0
  653. package/dist/write/scene-expense.js +50 -0
  654. package/dist/write/scene-expense.js.map +1 -0
  655. package/dist/write/scene-income.d.ts.map +1 -0
  656. package/dist/write/scene-income.js +51 -0
  657. package/dist/write/scene-income.js.map +1 -0
  658. package/dist/write/scene-installment.d.ts.map +1 -0
  659. package/dist/write/scene-installment.js +52 -0
  660. package/dist/write/scene-installment.js.map +1 -0
  661. package/dist/write/scene-lend.d.ts.map +1 -0
  662. package/dist/write/scene-lend.js +165 -0
  663. package/dist/write/scene-lend.js.map +1 -0
  664. package/dist/write/scene-photo.d.ts.map +1 -0
  665. package/dist/write/scene-photo.js +108 -0
  666. package/dist/write/scene-photo.js.map +1 -0
  667. package/dist/write/scene-plain.d.ts.map +1 -0
  668. package/dist/write/scene-plain.js +52 -0
  669. package/dist/write/scene-plain.js.map +1 -0
  670. package/dist/write/scene-refund.d.ts.map +1 -0
  671. package/dist/write/scene-refund.js +139 -0
  672. package/dist/write/scene-refund.js.map +1 -0
  673. package/dist/write/scene-reimburse-done.d.ts.map +1 -0
  674. package/dist/write/scene-reimburse-done.js +151 -0
  675. package/dist/write/scene-reimburse-done.js.map +1 -0
  676. package/dist/write/scene-reimburse.d.ts.map +1 -0
  677. package/dist/write/scene-reimburse.js +65 -0
  678. package/dist/write/scene-reimburse.js.map +1 -0
  679. package/dist/write/scene-repay.d.ts.map +1 -0
  680. package/dist/write/scene-repay.js +155 -0
  681. package/dist/write/scene-repay.js.map +1 -0
  682. package/dist/write/scene-restore.d.ts.map +1 -0
  683. package/dist/write/scene-restore.js +59 -0
  684. package/dist/write/scene-restore.js.map +1 -0
  685. package/dist/write/scene-undo.d.ts.map +1 -0
  686. package/dist/write/scene-undo.js +57 -0
  687. package/dist/write/scene-undo.js.map +1 -0
  688. package/dist/write/scene-update.d.ts.map +1 -0
  689. package/dist/write/scene-update.js +57 -0
  690. package/dist/write/scene-update.js.map +1 -0
  691. package/dist/{record → write}/scene.d.ts +16 -9
  692. package/dist/write/scene.d.ts.map +1 -0
  693. package/dist/{record → write}/scene.js +6 -1
  694. package/dist/write/scene.js.map +1 -0
  695. package/dist/write/slots.d.ts.map +1 -0
  696. package/dist/{record → write}/slots.js +9 -8
  697. package/dist/{record → write}/slots.js.map +1 -1
  698. package/dist/write/sourceNote.d.ts +5 -0
  699. package/dist/write/sourceNote.d.ts.map +1 -0
  700. package/dist/write/sourceNote.js +37 -0
  701. package/dist/write/sourceNote.js.map +1 -0
  702. package/dist/write/summaryRow.d.ts.map +1 -0
  703. package/dist/{shared → write}/summaryRow.js +11 -7
  704. package/dist/write/summaryRow.js.map +1 -0
  705. package/dist/write/template-batch.d.ts +37 -0
  706. package/dist/write/template-batch.d.ts.map +1 -0
  707. package/dist/write/template-batch.js +212 -0
  708. package/dist/write/template-batch.js.map +1 -0
  709. package/dist/write/template-expense.d.ts +90 -0
  710. package/dist/write/template-expense.d.ts.map +1 -0
  711. package/dist/write/template-expense.js +214 -0
  712. package/dist/write/template-expense.js.map +1 -0
  713. package/dist/write/template-flow.d.ts +130 -0
  714. package/dist/write/template-flow.d.ts.map +1 -0
  715. package/dist/write/template-flow.js +225 -0
  716. package/dist/write/template-flow.js.map +1 -0
  717. package/dist/write/template-installment.d.ts +69 -0
  718. package/dist/write/template-installment.d.ts.map +1 -0
  719. package/dist/write/template-installment.js +240 -0
  720. package/dist/write/template-installment.js.map +1 -0
  721. package/dist/write/template-update.d.ts +83 -0
  722. package/dist/write/template-update.d.ts.map +1 -0
  723. package/dist/write/template-update.js +263 -0
  724. package/dist/write/template-update.js.map +1 -0
  725. package/dist/{shared → write}/typeBadge.d.ts +9 -2
  726. package/dist/write/typeBadge.d.ts.map +1 -0
  727. package/dist/{shared → write}/typeBadge.js +16 -8
  728. package/dist/write/typeBadge.js.map +1 -0
  729. package/dist/{shared → write}/userWording.d.ts +2 -24
  730. package/dist/write/userWording.d.ts.map +1 -0
  731. package/dist/{shared → write}/userWording.js +12 -22
  732. package/dist/write/userWording.js.map +1 -0
  733. package/dist/write/write.d.ts.map +1 -0
  734. package/dist/{record → write}/write.js +7 -7
  735. package/dist/write/write.js.map +1 -0
  736. package/dist/{help → write}/writeWire.d.ts +1 -1
  737. package/dist/{help → write}/writeWire.d.ts.map +1 -1
  738. package/dist/{help → write}/writeWire.js +3 -3
  739. package/dist/write/writeWire.js.map +1 -0
  740. package/package.json +3 -3
  741. package/dist/help/writeWire.js.map +0 -1
  742. package/dist/policy/accounts.d.ts +0 -13
  743. package/dist/policy/accounts.d.ts.map +0 -1
  744. package/dist/policy/accounts.js +0 -31
  745. package/dist/policy/accounts.js.map +0 -1
  746. package/dist/policy/analysis.d.ts.map +0 -1
  747. package/dist/policy/analysis.js.map +0 -1
  748. package/dist/policy/category.d.ts.map +0 -1
  749. package/dist/policy/category.js.map +0 -1
  750. package/dist/policy/goals.d.ts +0 -15
  751. package/dist/policy/goals.d.ts.map +0 -1
  752. package/dist/policy/goals.js +0 -33
  753. package/dist/policy/goals.js.map +0 -1
  754. package/dist/policy/index.d.ts +0 -13
  755. package/dist/policy/index.d.ts.map +0 -1
  756. package/dist/policy/index.js +0 -7
  757. package/dist/policy/index.js.map +0 -1
  758. package/dist/policy/record.d.ts +0 -27
  759. package/dist/policy/record.d.ts.map +0 -1
  760. package/dist/policy/record.js +0 -89
  761. package/dist/policy/record.js.map +0 -1
  762. package/dist/policy/wakewords.d.ts +0 -18
  763. package/dist/policy/wakewords.d.ts.map +0 -1
  764. package/dist/policy/wakewords.js +0 -126
  765. package/dist/policy/wakewords.js.map +0 -1
  766. package/dist/record/collect.d.ts.map +0 -1
  767. package/dist/record/collect.js.map +0 -1
  768. package/dist/record/collectBody.d.ts.map +0 -1
  769. package/dist/record/collectBody.js.map +0 -1
  770. package/dist/record/commands.d.ts.map +0 -1
  771. package/dist/record/commands.js.map +0 -1
  772. package/dist/record/index.d.ts.map +0 -1
  773. package/dist/record/index.js.map +0 -1
  774. package/dist/record/receipt.d.ts.map +0 -1
  775. package/dist/record/receipt.js.map +0 -1
  776. package/dist/record/receiptBody.d.ts +0 -5
  777. package/dist/record/receiptBody.d.ts.map +0 -1
  778. package/dist/record/receiptBody.js.map +0 -1
  779. package/dist/record/scene-batch.d.ts.map +0 -1
  780. package/dist/record/scene-batch.js +0 -211
  781. package/dist/record/scene-batch.js.map +0 -1
  782. package/dist/record/scene-borrow.d.ts.map +0 -1
  783. package/dist/record/scene-borrow.js +0 -285
  784. package/dist/record/scene-borrow.js.map +0 -1
  785. package/dist/record/scene-collect.d.ts.map +0 -1
  786. package/dist/record/scene-collect.js +0 -294
  787. package/dist/record/scene-collect.js.map +0 -1
  788. package/dist/record/scene-expense.d.ts.map +0 -1
  789. package/dist/record/scene-expense.js +0 -21
  790. package/dist/record/scene-expense.js.map +0 -1
  791. package/dist/record/scene-income.d.ts.map +0 -1
  792. package/dist/record/scene-income.js +0 -219
  793. package/dist/record/scene-income.js.map +0 -1
  794. package/dist/record/scene-installment.d.ts.map +0 -1
  795. package/dist/record/scene-installment.js +0 -248
  796. package/dist/record/scene-installment.js.map +0 -1
  797. package/dist/record/scene-lend.d.ts.map +0 -1
  798. package/dist/record/scene-lend.js +0 -273
  799. package/dist/record/scene-lend.js.map +0 -1
  800. package/dist/record/scene-photo.d.ts.map +0 -1
  801. package/dist/record/scene-photo.js +0 -262
  802. package/dist/record/scene-photo.js.map +0 -1
  803. package/dist/record/scene-plain.d.ts.map +0 -1
  804. package/dist/record/scene-plain.js +0 -221
  805. package/dist/record/scene-plain.js.map +0 -1
  806. package/dist/record/scene-refund.d.ts.map +0 -1
  807. package/dist/record/scene-refund.js +0 -281
  808. package/dist/record/scene-refund.js.map +0 -1
  809. package/dist/record/scene-reimburse-done.d.ts.map +0 -1
  810. package/dist/record/scene-reimburse-done.js +0 -288
  811. package/dist/record/scene-reimburse-done.js.map +0 -1
  812. package/dist/record/scene-reimburse.d.ts.map +0 -1
  813. package/dist/record/scene-reimburse.js +0 -224
  814. package/dist/record/scene-reimburse.js.map +0 -1
  815. package/dist/record/scene-repay.d.ts.map +0 -1
  816. package/dist/record/scene-repay.js +0 -294
  817. package/dist/record/scene-repay.js.map +0 -1
  818. package/dist/record/scene-restore.d.ts.map +0 -1
  819. package/dist/record/scene-restore.js +0 -250
  820. package/dist/record/scene-restore.js.map +0 -1
  821. package/dist/record/scene-undo.d.ts.map +0 -1
  822. package/dist/record/scene-undo.js +0 -262
  823. package/dist/record/scene-undo.js.map +0 -1
  824. package/dist/record/scene-update.d.ts.map +0 -1
  825. package/dist/record/scene-update.js +0 -249
  826. package/dist/record/scene-update.js.map +0 -1
  827. package/dist/record/scene.d.ts.map +0 -1
  828. package/dist/record/scene.js.map +0 -1
  829. package/dist/record/slots.d.ts.map +0 -1
  830. package/dist/record/write.d.ts.map +0 -1
  831. package/dist/record/write.js.map +0 -1
  832. package/dist/render/helpFile.d.ts.map +0 -1
  833. package/dist/render/helpFile.js.map +0 -1
  834. package/dist/render/helpPaths.d.ts +0 -19
  835. package/dist/render/helpPaths.d.ts.map +0 -1
  836. package/dist/render/helpPaths.js +0 -19
  837. package/dist/render/helpPaths.js.map +0 -1
  838. package/dist/render/views.d.ts +0 -64
  839. package/dist/render/views.d.ts.map +0 -1
  840. package/dist/render/views.js.map +0 -1
  841. package/dist/shared/blockedSlots.d.ts.map +0 -1
  842. package/dist/shared/blockedSlots.js.map +0 -1
  843. package/dist/shared/candidatePick.d.ts.map +0 -1
  844. package/dist/shared/candidatePick.js.map +0 -1
  845. package/dist/shared/collectFrame.js +0 -34
  846. package/dist/shared/collectFrame.js.map +0 -1
  847. package/dist/shared/diffTable.d.ts.map +0 -1
  848. package/dist/shared/diffTable.js.map +0 -1
  849. package/dist/shared/duplicateNote.d.ts.map +0 -1
  850. package/dist/shared/duplicateNote.js.map +0 -1
  851. package/dist/shared/emptyNote.d.ts.map +0 -1
  852. package/dist/shared/emptyNote.js.map +0 -1
  853. package/dist/shared/errorReceipt.d.ts.map +0 -1
  854. package/dist/shared/errorReceipt.js.map +0 -1
  855. package/dist/shared/flowSteps.d.ts.map +0 -1
  856. package/dist/shared/flowSteps.js.map +0 -1
  857. package/dist/shared/installmentPreview.d.ts.map +0 -1
  858. package/dist/shared/installmentPreview.js.map +0 -1
  859. package/dist/shared/outsideScan.d.ts.map +0 -1
  860. package/dist/shared/outsideScan.js.map +0 -1
  861. package/dist/shared/photoEscape.d.ts.map +0 -1
  862. package/dist/shared/photoEscape.js.map +0 -1
  863. package/dist/shared/prefillNote.d.ts.map +0 -1
  864. package/dist/shared/prefillNote.js.map +0 -1
  865. package/dist/shared/receiptParts.d.ts.map +0 -1
  866. package/dist/shared/receiptParts.js.map +0 -1
  867. package/dist/shared/recentPicks.d.ts.map +0 -1
  868. package/dist/shared/recentPicks.js +0 -41
  869. package/dist/shared/recentPicks.js.map +0 -1
  870. package/dist/shared/recordPicker.d.ts.map +0 -1
  871. package/dist/shared/recordPicker.js.map +0 -1
  872. package/dist/shared/rowEditorTable.d.ts.map +0 -1
  873. package/dist/shared/rowEditorTable.js.map +0 -1
  874. package/dist/shared/summaryRow.d.ts.map +0 -1
  875. package/dist/shared/summaryRow.js.map +0 -1
  876. package/dist/shared/typeBadge.d.ts.map +0 -1
  877. package/dist/shared/typeBadge.js.map +0 -1
  878. package/dist/shared/userWording.d.ts.map +0 -1
  879. package/dist/shared/userWording.js.map +0 -1
  880. /package/dist/{shared → write}/candidatePick.d.ts +0 -0
  881. /package/dist/{record → write}/collect.js +0 -0
  882. /package/dist/{shared → write}/diffTable.d.ts +0 -0
  883. /package/dist/{shared → write}/duplicateNote.d.ts +0 -0
  884. /package/dist/{shared → write}/emptyNote.d.ts +0 -0
  885. /package/dist/{shared → write}/flowSteps.d.ts +0 -0
  886. /package/dist/{shared → write}/installmentPreview.d.ts +0 -0
  887. /package/dist/{shared → write}/outsideScan.d.ts +0 -0
  888. /package/dist/{shared → write}/photoEscape.d.ts +0 -0
  889. /package/dist/{shared → write}/prefillNote.d.ts +0 -0
  890. /package/dist/{record → write}/receipt.js +0 -0
  891. /package/dist/{shared → write}/recordPicker.d.ts +0 -0
  892. /package/dist/{shared → write}/rowEditorTable.d.ts +0 -0
  893. /package/dist/{record → write}/scene-batch.d.ts +0 -0
  894. /package/dist/{record → write}/scene-borrow.d.ts +0 -0
  895. /package/dist/{record → write}/scene-collect.d.ts +0 -0
  896. /package/dist/{record → write}/scene-expense.d.ts +0 -0
  897. /package/dist/{record → write}/scene-income.d.ts +0 -0
  898. /package/dist/{record → write}/scene-installment.d.ts +0 -0
  899. /package/dist/{record → write}/scene-lend.d.ts +0 -0
  900. /package/dist/{record → write}/scene-photo.d.ts +0 -0
  901. /package/dist/{record → write}/scene-plain.d.ts +0 -0
  902. /package/dist/{record → write}/scene-refund.d.ts +0 -0
  903. /package/dist/{record → write}/scene-reimburse-done.d.ts +0 -0
  904. /package/dist/{record → write}/scene-reimburse.d.ts +0 -0
  905. /package/dist/{record → write}/scene-repay.d.ts +0 -0
  906. /package/dist/{record → write}/scene-restore.d.ts +0 -0
  907. /package/dist/{record → write}/scene-undo.d.ts +0 -0
  908. /package/dist/{record → write}/scene-update.d.ts +0 -0
  909. /package/dist/{record → write}/slots.d.ts +0 -0
  910. /package/dist/{shared → write}/summaryRow.d.ts +0 -0
  911. /package/dist/{record → write}/write.d.ts +0 -0
@@ -0,0 +1,104 @@
1
+ /** 场景件:**看分类**(`kind = 'category'`,命令 `bill.analysis.overview`)——本件只是差异声明与取值,
2
+ * 块位序列住 `./template-bars.ts`(族=读数+条)。
3
+ *
4
+ * 老侧对应件:`scripts/analysis/cli.py` 的 `cmd_category`(`:272-300`)
5
+ * + 模板 `templates/分析/analysis_view.html` 的 `renderCategory`(`:381-418`)。
6
+ *
7
+ * 本件的差异(照老侧那一页逐点对):
8
+ * ① 期间=起止两端(`start`/`end` **同给**,校验走 `./params.js` 的 `needRange`;缺一即缺槽位阻断),
9
+ * 没给就按月(缺 `month` 即本月,老侧 `args.month or date.today()...` 那条兼容路);
10
+ * **两端优先于月份**——老侧 `if args.from_date or args.to_date` 同一条次序;
11
+ * ② 归堆按**一级分类**(老侧 `_agg_expense_by(..., lambda r: _l1(r.category))`),全路径不并档——
12
+ * 与「看月度」那一页(全路径归堆)**故意不同**,两页各有各的口径;
13
+ * ③ 账户筛选与收支方向走 `./agg.js` 的 `filterOf`(老侧 `_filter` 同义);**转账已由聚合件剔掉**
14
+ * (#691 定死的口径,本件不自己看金额正负);
15
+ * ④ 每类均值=该类金额 ÷ 该类笔数(老侧 `c.avg`),条长按**最大一类**折算(老侧 `Math.max(...)`),
16
+ * 环形图圆心读数=本期该方向的合计(老侧 donut 的 `centerValue`);
17
+ * ⑤ 载荷照搬迁前那一支(`./views.js` 的 `buildOverview`),一字不改。
18
+ */
19
+ import { BillPolicyError } from '../fetch/errors.js';
20
+ import { listRange } from '../fetch/index.js';
21
+ import { aggByL1, filterOf, kpiOf, readWindow, round1, round2 } from './agg.js';
22
+ import { money, pctText } from './pageParts.js';
23
+ import { buildOverview } from './views.js';
24
+ /** 收支方向槽:缺=支出;只认支出/收入两个方向,别的一律如实抛(本件不猜、不兜底)。 */
25
+ function readDirection(params) {
26
+ const raw = params.type;
27
+ if (raw === undefined || raw === null || raw === '')
28
+ return 'expense';
29
+ if (raw === 'expense' || raw === 'income')
30
+ return raw;
31
+ throw new BillPolicyError('POLICY_BAD_INPUT', '收支方向只能取支出或收入:' + JSON.stringify(raw));
32
+ }
33
+ /** 账户筛选槽:给了非空账户名就只看它,没给=全账户(老侧 `args.account` 那条)。 */
34
+ function readAccount(params) {
35
+ return typeof params.account === 'string' ? params.account.trim() : '';
36
+ }
37
+ export const sceneCategory = {
38
+ id: 'category',
39
+ key: 'bill.analysis.overview',
40
+ kind: 'category',
41
+ title: '看分类',
42
+ family: 'bars',
43
+ values: ({ params, db }) => {
44
+ const win = readWindow(params);
45
+ const direction = readDirection(params);
46
+ const account = readAccount(params);
47
+ const records = filterOf(listRange(db, win.from, win.to), { account, direction });
48
+ const kpi = kpiOf(records);
49
+ const cats = aggByL1(records, { direction });
50
+ const side = direction === 'income' ? '收入' : '支出';
51
+ const total = direction === 'income' ? kpi.income : kpi.expense;
52
+ const head = cats[0];
53
+ const max = cats.length === 0 ? 0 : Math.max(...cats.map((c) => c.value));
54
+ return {
55
+ title: '看分类',
56
+ label: win.label,
57
+ from: win.from,
58
+ to: win.to,
59
+ count: records.length,
60
+ conclusion: head === undefined
61
+ ? win.label + ' 这段时间一笔' + side + '都没有记。'
62
+ : win.label + ' 的' + side + '共 ' + money(total) + ' 元,分在 ' + String(cats.length) + ' 个一级分类里;'
63
+ + '最多的是「' + head.key + '」' + money(head.value) + ' 元,占 ' + pctText(head.pct) + '。',
64
+ caliber: '按一级分类归堆(全路径不并档),占比与环形图都按本期' + side + '合计算;条长按最大一类折算。'
65
+ + '转账不计入收支' + (account === '' ? '。' : ';本页只看账户「' + account + '」的记录。'),
66
+ chips: [win.label],
67
+ payload: buildOverview(win.label, [...records]),
68
+ kpi,
69
+ page: {
70
+ kpis: [
71
+ { label: '总' + side, value: money(total), unit: '元' },
72
+ { label: '分类数', value: String(cats.length), unit: '类' },
73
+ { label: '期间', value: win.label },
74
+ ],
75
+ chips: [win.label],
76
+ charts: cats.length === 0 ? [] : [{
77
+ title: '分类占比',
78
+ kind: 'donut',
79
+ input: {
80
+ items: cats.map((c) => ({ label: c.key, value: c.value })),
81
+ options: { centerLabel: '总' + side, centerValue: money(total) },
82
+ },
83
+ }],
84
+ barGroups: [{
85
+ title: '占比明细(' + String(cats.length) + ' 类)',
86
+ rows: cats.map((c) => ({
87
+ label: c.key,
88
+ text: money(c.value) + ' 元 · ' + String(c.count) + ' 笔 · ' + pctText(c.pct)
89
+ + ' · 均 ' + money(round2(c.value / c.count)),
90
+ pct: max === 0 ? 0 : round1((c.value / max) * 100),
91
+ })),
92
+ emptyText: '这段时间还没有' + side + '记录',
93
+ }],
94
+ listCards: [],
95
+ factCards: [],
96
+ empty: {
97
+ text: win.label + ' 这段时间还没有记录。',
98
+ hint: '先说「记支出」或「记收入」记一笔,回来看这里就有数了。',
99
+ },
100
+ },
101
+ };
102
+ },
103
+ };
104
+ //# sourceMappingURL=scene-category.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scene-category.js","sourceRoot":"","sources":["../../src/analysis/scene-category.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { AnalysisScene } from './scene.js';
2
+ export declare const sceneDebt: AnalysisScene;
3
+ //# sourceMappingURL=scene-debt.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scene-debt.d.ts","sourceRoot":"","sources":["../../src/analysis/scene-debt.ts"],"names":[],"mappings":"AAmBA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAkDhD,eAAO,MAAM,SAAS,EAAE,aAoEvB,CAAC"}
@@ -0,0 +1,111 @@
1
+ import { allRecords, kpiOf, round2, tagRecords } from './agg.js';
2
+ import { NO_WINDOW, money, textOrDash } from './pageParts.js';
3
+ import { buildTrend } from './views.js';
4
+ /** 备注里那两串标签的**对象名形态**(老侧 `:816-818` 同形):借出看 `#借给X`、借入看 `#向X借`;
5
+ * 解析不出=空串,由调用方记「未知对象」。**标签本身的匹配不在这里**——那走 `./agg.js` 的 `tagRecords`。 */
6
+ function targetOf(note, direction) {
7
+ const hit = direction === '借出' ? /#借给\s*([^\s#]+)/.exec(note) : /#向\s*([^\s#]+)借/.exec(note);
8
+ return hit === null ? '' : hit[1];
9
+ }
10
+ /** 一批记录的金额合计(借贷一律按绝对值累计,老侧 `abs(...)` 同义)。 */
11
+ function totalOf(rows) {
12
+ let sum = 0;
13
+ for (const r of rows)
14
+ sum += Math.abs(r.amount);
15
+ return round2(sum);
16
+ }
17
+ /** 未还的借出/借入按对象归堆(老侧 `by_obj` 同义):先归堆,再按合计降序。
18
+ * 老侧只按键值排序、同额时顺序不定;新侧同额按对象名兜底,读数与老侧一致、次序可复现。 */
19
+ function objectsOf(unpaidLent, unpaidBorrowed) {
20
+ const byObject = new Map();
21
+ const add = (target, side, amount) => {
22
+ const it = byObject.get(target) ?? { lent: 0, borrowed: 0 };
23
+ if (side === '借出')
24
+ it.lent += amount;
25
+ else
26
+ it.borrowed += amount;
27
+ byObject.set(target, it);
28
+ };
29
+ for (const r of unpaidLent)
30
+ add(targetOf(r.note, '借出') || '未知对象', '借出', Math.abs(r.amount));
31
+ for (const r of unpaidBorrowed)
32
+ add(targetOf(r.note, '借入') || '未知对象', '借入', Math.abs(r.amount));
33
+ return [...byObject.entries()]
34
+ .map(([target, v]) => ({
35
+ target,
36
+ lent: round2(v.lent),
37
+ borrowed: round2(v.borrowed),
38
+ total: round2(v.lent + v.borrowed),
39
+ }))
40
+ .sort((a, b) => b.total - a.total || a.target.localeCompare(b.target));
41
+ }
42
+ export const sceneDebt = {
43
+ id: 'debt',
44
+ key: 'bill.analysis.trend',
45
+ kind: 'debt',
46
+ title: '看借贷',
47
+ family: 'tables',
48
+ values: ({ db }) => {
49
+ const all = allRecords(db);
50
+ const lent = tagRecords(all, '借出');
51
+ const borrowed = tagRecords(all, '借入');
52
+ const unpaidLent = tagRecords(lent, '未还');
53
+ const unpaidBorrowed = tagRecords(borrowed, '未还');
54
+ const paidLent = tagRecords(lent, '已还');
55
+ const paidBorrowed = tagRecords(borrowed, '已还');
56
+ // 一笔同时带两个方向标签时只算一条(两侧取自同一个全库数组,同一对象的引用去重即够)。
57
+ const rows = [...new Set([...lent, ...borrowed])];
58
+ const objects = objectsOf(unpaidLent, unpaidBorrowed);
59
+ const lentUnpaidTotal = totalOf(unpaidLent);
60
+ const borrowedUnpaidTotal = totalOf(unpaidBorrowed);
61
+ return {
62
+ title: '看借贷',
63
+ label: '全部时间',
64
+ from: NO_WINDOW,
65
+ to: NO_WINDOW,
66
+ count: rows.length,
67
+ conclusion: rows.length === 0
68
+ ? '全库还没有带 #借出/#借入 的记录。'
69
+ : '未还的有 ' + String(objects.length) + ' 个对象:借出 ' + money(lentUnpaidTotal) + ' 元('
70
+ + String(unpaidLent.length) + ' 笔)、借入 ' + money(borrowedUnpaidTotal) + ' 元('
71
+ + String(unpaidBorrowed.length) + ' 笔);已还清的 借出 ' + String(paidLent.length) + ' 笔、借入 '
72
+ + String(paidBorrowed.length) + ' 笔。',
73
+ caliber: '借贷按备注里的 #借出/#借入 两个标签取记录,同一笔要同时带 #未还 或 #已还 才算进那一栏;'
74
+ + '对象名读备注里的 #借给X/#向X借,读不出来记作「未知对象」;转账不计入收支。',
75
+ chips: [],
76
+ payload: buildTrend('debt', [...rows]),
77
+ kpi: kpiOf(rows),
78
+ page: {
79
+ kpis: [
80
+ { label: '借出未还', value: money(lentUnpaidTotal), unit: '元' },
81
+ { label: '借入未还', value: money(borrowedUnpaidTotal), unit: '元' },
82
+ { label: '已还(借出)', value: String(paidLent.length), unit: '笔' },
83
+ { label: '已还(借入)', value: String(paidBorrowed.length), unit: '笔' },
84
+ ],
85
+ chips: [],
86
+ tables: [{
87
+ title: '对象列表(' + String(objects.length) + ' 人)',
88
+ columns: [
89
+ { key: 'target', label: '对象' },
90
+ { key: 'lent', label: '借出未还', align: 'right' },
91
+ { key: 'borrowed', label: '借入未还', align: 'right' },
92
+ { key: 'total', label: '合计', align: 'right' },
93
+ ],
94
+ rows: objects.map((o) => ({
95
+ target: textOrDash(o.target),
96
+ lent: money(o.lent),
97
+ borrowed: money(o.borrowed),
98
+ total: money(o.total),
99
+ })),
100
+ emptyText: '暂无未还借贷',
101
+ }],
102
+ factCards: [],
103
+ empty: {
104
+ text: '全库还没有借贷记录。',
105
+ hint: '先说「记借出」或「记借入」记一笔,回来看这里就有数了。',
106
+ },
107
+ },
108
+ };
109
+ },
110
+ };
111
+ //# sourceMappingURL=scene-debt.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scene-debt.js","sourceRoot":"","sources":["../../src/analysis/scene-debt.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { AnalysisScene } from './scene.js';
2
+ export declare const sceneDistribution: AnalysisScene;
3
+ //# sourceMappingURL=scene-distribution.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scene-distribution.d.ts","sourceRoot":"","sources":["../../src/analysis/scene-distribution.ts"],"names":[],"mappings":"AAsBA,OAAO,KAAK,EAAE,aAAa,EAAa,MAAM,YAAY,CAAC;AAoD3D,eAAO,MAAM,iBAAiB,EAAE,aA8E/B,CAAC"}
@@ -0,0 +1,144 @@
1
+ /** 场景件:**看分布**(`kind = 'distribution'`,命令 `bill.analysis.trend`)——本件只是差异声明与取值,
2
+ * 块位序列住 `./template-charts.ts`(族=读数+图;#729)。
3
+ *
4
+ * 老侧对应件:`scripts/analysis/cli.py` 的 `cmd_distribution`(`:632-666`)
5
+ * + 模板 `templates/分析/analysis_view.html` 的 `renderDistribution`(`:769-797`)。
6
+ *
7
+ * 本件的差异(照老侧那一页逐点对;#688 §四 裁定 3 的图判据住本件):
8
+ * ① 窗口两态同老侧:给了 `start`+`end` 就走区间(缺一即报缺槽位),否则取一个月(缺=本月);
9
+ * ② 五档与半开区间**逐字照老侧**(`10 元以下` 是 `0 ≤ 金额 < 10`,`500 以上` 是 `≥ 500`);
10
+ * ③ 图卡=**柱图**:`singleColor`(色由公共层管)+ `showValues` + 纵轴**可读刻度**(`yTicks: 4`);
11
+ * ④ **零值不出柱身**:笔数为 0 的档不进图元,但明细里**照实写 0 笔**(老侧那五行一条不减);
12
+ * ⑤ **点数不足改出说明句**:五档一笔都没有时图卡改出说明句,不画一张全 0 的柱子;
13
+ * ⑥ 收支方向按参数取(缺=支出);老侧把未识别的方向悄悄当收入,本件改成立即报参数错。
14
+ *
15
+ * 谁在用(一个调用点,指名):`src/analysis/read.ts` 的 `pageOf`——`family === 'charts'` 的 4 件场景
16
+ * 由落点表 `./scene.js` 取到本件。
17
+ */
18
+ import { BillPolicyError } from '../fetch/errors.js';
19
+ import { monthRange } from '../shared/dateRange.js';
20
+ import { filterOf, kpiOf, round1, thisMonth, windowRecords } from './agg.js';
21
+ import { pctText, windowLabel } from './pageParts.js';
22
+ import { needMonth, needRange } from './params.js';
23
+ import { buildTrend } from './views.js';
24
+ /** 五档金额区间(半开区间 `[lo, hi)`;`hi` 为 `null` 即「以上」)——老侧 `cmd_distribution` 的同一张档表。 */
25
+ const BUCKETS = [
26
+ { name: '10 元以下', lo: 0, hi: 10 },
27
+ { name: '10~50', lo: 10, hi: 50 },
28
+ { name: '50~100', lo: 50, hi: 100 },
29
+ { name: '100~500', lo: 100, hi: 500 },
30
+ { name: '500 以上', lo: 500, hi: null },
31
+ ];
32
+ /** 一个金额落在哪一档。 */
33
+ function inBucket(bucket, amount) {
34
+ return bucket.hi === null ? amount >= bucket.lo : (amount >= bucket.lo && amount < bucket.hi);
35
+ }
36
+ /** 收支方向(缺=支出)。只认支出/收入两种写法;别的形态立即报参数错,不悄悄当收入。 */
37
+ function directionOf(params) {
38
+ const raw = params['type'];
39
+ if (raw === undefined || raw === null || raw === '')
40
+ return { key: 'expense', word: '支出' };
41
+ if (raw === 'expense' || raw === '支出')
42
+ return { key: 'expense', word: '支出' };
43
+ if (raw === 'income' || raw === '收入')
44
+ return { key: 'income', word: '收入' };
45
+ throw new BillPolicyError('POLICY_BAD_INPUT', '收支方向只认支出/收入');
46
+ }
47
+ /** 柱图纵轴的上界:抬到「刻度条数 − 1」的整数倍——笔数是整数,否则刻度会印出「1.33 笔」。 */
48
+ function axisTopOf(max, ticks) {
49
+ const segments = Math.max(ticks - 1, 1);
50
+ return max <= 0 ? segments : Math.ceil(max / segments) * segments;
51
+ }
52
+ /** 柱图的数据:笔数为 0 的档不进图元(零值不出柱身);一档都不剩时改出说明句。 */
53
+ function barInputOf(buckets, emptyText) {
54
+ const bars = buckets.filter((b) => b.count > 0);
55
+ if (bars.length === 0)
56
+ return { items: [], options: { emptyText } };
57
+ const max = bars.reduce((m, b) => (b.count > m ? b.count : m), 0);
58
+ return {
59
+ items: bars.map((b) => ({ label: b.name, value: b.count })),
60
+ options: {
61
+ singleColor: true,
62
+ showValues: true,
63
+ yTicks: 4,
64
+ yMax: axisTopOf(max, 4),
65
+ format: (v) => String(v) + ' 笔',
66
+ },
67
+ };
68
+ }
69
+ export const sceneDistribution = {
70
+ id: 'distribution',
71
+ key: 'bill.analysis.trend',
72
+ kind: 'distribution',
73
+ title: '看分布',
74
+ family: 'charts',
75
+ values: ({ params, db }) => {
76
+ /* ① 窗口:给了起止日就走区间(缺一即报缺槽位),否则取一个月(缺=本月)。 */
77
+ const hasRange = params['start'] !== undefined || params['end'] !== undefined;
78
+ const month = params['month'] === undefined ? thisMonth() : needMonth(params);
79
+ const range = hasRange ? needRange(params) : monthRange(month);
80
+ const periodLabel = hasRange ? windowLabel(range.start, range.end) : month;
81
+ /* ② 取数与方向筛选(转账已由 `filterOf` 剔除)。 */
82
+ const rows = windowRecords(db, range.start, range.end);
83
+ const direction = directionOf(params);
84
+ const recs = filterOf(rows, { direction: direction.key });
85
+ const total = recs.length;
86
+ /* ③ 五档笔数与占比(老侧同式:分母=这一侧的笔数,一笔都没有时占比写 0)。 */
87
+ const buckets = BUCKETS.map((b) => {
88
+ const count = recs.filter((r) => inBucket(b, Math.abs(r.amount))).length;
89
+ return { name: b.name, count, pct: total === 0 ? 0 : round1((count / total) * 100) };
90
+ });
91
+ const top = buckets.reduce((best, b) => (b.count > best.count ? b : best), buckets[0]);
92
+ const empties = buckets.filter((b) => b.count === 0).map((b) => '「' + b.name + '」');
93
+ const kpi = kpiOf(recs);
94
+ /* ④ 结论句与口径句:零值档不出柱身但明细照实写 0 笔;一笔都没有时图卡改出说明句。 */
95
+ const conclusion = total === 0
96
+ ? periodLabel + ' 这段时间没有' + direction.word + '记录。'
97
+ : periodLabel + ' 一共 ' + String(total) + ' 笔' + direction.word + ':最多的是「' + top.name + '」'
98
+ + String(top.count) + ' 笔 · ' + pctText(top.pct)
99
+ + (empties.length === 0
100
+ ? ';五个金额档都有落点。'
101
+ : ';' + empties.join('、') + ' 这 ' + String(empties.length) + ' 档一笔都没有。');
102
+ const caliber = [
103
+ '金额按绝对值归五档,区间左闭右开:「10 元以下」「10~50」「50~100」「100~500」「500 以上」',
104
+ '笔数为 0 的档不出柱身,明细里照实写 0 笔',
105
+ total === 0 ? '这段时间一笔都没有,图卡改出说明句' : '',
106
+ '转账不计入收支',
107
+ ].filter((s) => s !== '').join(';') + '。';
108
+ return {
109
+ title: '看分布',
110
+ label: periodLabel,
111
+ from: range.start,
112
+ to: range.end,
113
+ count: total,
114
+ conclusion,
115
+ caliber,
116
+ chips: [],
117
+ payload: buildTrend('distribution', [...recs]),
118
+ kpi,
119
+ page: {
120
+ kpis: [
121
+ { label: '统计口径', value: direction.word },
122
+ { label: '总笔数', value: String(total), unit: '笔' },
123
+ { label: '期间', value: periodLabel },
124
+ ],
125
+ chips: [],
126
+ charts: [{
127
+ title: '金额区间分布',
128
+ kind: 'bar',
129
+ input: barInputOf(buckets, periodLabel + ' 一笔都没有,五个金额档都是空的。'),
130
+ }],
131
+ listCards: [],
132
+ factCards: [{
133
+ title: '各区间明细',
134
+ rows: buckets.map((b) => ({ k: b.name, v: String(b.count) + ' 笔 · ' + pctText(b.pct) })),
135
+ }],
136
+ empty: {
137
+ text: periodLabel + ' 这段时间还没有记录。',
138
+ hint: '先说「记支出」或「记收入」记一笔,回来看这里就有数了。',
139
+ },
140
+ },
141
+ };
142
+ },
143
+ };
144
+ //# sourceMappingURL=scene-distribution.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scene-distribution.js","sourceRoot":"","sources":["../../src/analysis/scene-distribution.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { AnalysisScene } from './scene.js';
2
+ export declare const sceneInsight: AnalysisScene;
3
+ //# sourceMappingURL=scene-insight.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scene-insight.d.ts","sourceRoot":"","sources":["../../src/analysis/scene-insight.ts"],"names":[],"mappings":"AAsBA,OAAO,KAAK,EAAE,aAAa,EAAa,MAAM,YAAY,CAAC;AA0B3D,eAAO,MAAM,YAAY,EAAE,aAyG1B,CAAC"}
@@ -0,0 +1,151 @@
1
+ /** 场景件:**看洞察**(`kind = 'insight'`,命令 `bill.analysis.trend`)——本件只是差异声明与取值,
2
+ * 块位序列住 `./template-insight.ts`(族=解读+多卡)。
3
+ *
4
+ * 老侧对应件:`scripts/analysis/cli.py` 的 `cmd_insight`(`:725-739`,事实层走 `scripts/insights.py` 的
5
+ * `build_insight_facts`=`:42-170`)+ 模板 `templates/分析/analysis_view.html` 的 `renderInsight`(`:862-914`)。
6
+ *
7
+ * 本件的差异(照老侧那一页逐点对):
8
+ * ① **区间**=库里**最后一条记录所在月**往前数 `months` 个月(不是今天)——老侧拿全库记录算区间汇总,
9
+ * 新侧先把窗口切出来再算,于是「区间支出/收入/净额/笔数」与「大额支出」都落在这段窗口里;
10
+ * ② **月度均值/最大偏离月**照老侧那一支:均值=窗口内各月支出的算术平均,偏离度=
11
+ * (该月支出 − 均值)/均值,取绝对值最大的那个月(均值不是两段均值,是「每月支出」的平均);
12
+ * 老侧还算了一个中位数,但那一页没有它的落点(老页面只摆 3 行事实),本件不产出无落点的数;
13
+ * ③ 老侧那一段 `parseAiNote`(把 AI 解读文本切段)**不照抄**(#688 §二 C8):新侧分析页由本地 CLI
14
+ * 渲染、没有 AI 解读文本可切,解读那一段由页头**结论句**承载(把「这批数说明了什么」写进 `conclusion`);
15
+ * ④ **载荷**照搬迁前那一支(`./views.js` 的 `buildTrend`),一字不改。
16
+ */
17
+ import { BillPolicyError } from '../fetch/errors.js';
18
+ import { listRange } from '../fetch/index.js';
19
+ import { monthRange } from '../shared/dateRange.js';
20
+ import { aggByL1, allRecords, dayOf, expenseTop, firstTimeOf, kpiOf, lastTimeOf, monthOf, monthSeries, prevMonth, round1, thisMonth } from './agg.js';
21
+ import { money, pctText, signedMoney, windowLabel } from './pageParts.js';
22
+ import { buildTrend } from './views.js';
23
+ /** 窗口月数(缺省 6,与老侧 `args.months or 6` 同义);形态不对即阻断。 */
24
+ function monthsOf(params) {
25
+ const raw = params.months;
26
+ if (raw === undefined || raw === null || raw === '')
27
+ return 6;
28
+ const n = typeof raw === 'string' ? Number(raw.trim()) : raw;
29
+ if (typeof n !== 'number' || !Number.isFinite(n) || n < 1) {
30
+ throw new BillPolicyError('POLICY_BAD_INPUT', 'months 须是大于 0 的数:' + JSON.stringify(raw));
31
+ }
32
+ return Math.floor(n);
33
+ }
34
+ /** 从 `end` 这个月往回数 `months` 个月,返回起点月(闭区间:含 `end` 那一月)。 */
35
+ function startMonthOf(end, months) {
36
+ let cur = end;
37
+ for (let i = 1; i < months; i += 1)
38
+ cur = prevMonth(cur);
39
+ return cur;
40
+ }
41
+ /** 偏离度的上屏写法(正数带 `+`;老侧 `fmtPct(max_deviation.deviation_pct)` 同义)。 */
42
+ function devText(pct) {
43
+ return (pct >= 0 ? '+' : '') + pctText(pct);
44
+ }
45
+ export const sceneInsight = {
46
+ id: 'insight',
47
+ key: 'bill.analysis.trend',
48
+ kind: 'insight',
49
+ title: '看洞察',
50
+ family: 'insight',
51
+ values: ({ params, db }) => {
52
+ const months = monthsOf(params);
53
+ const lastTime = lastTimeOf(allRecords(db));
54
+ const endMonth = lastTime === '' ? thisMonth() : monthOf(lastTime);
55
+ const startMonth = startMonthOf(endMonth, months);
56
+ const records = listRange(db, startMonth + '-01', monthRange(endMonth).end);
57
+ const kpi = kpiOf(records);
58
+ const cats = aggByL1(records);
59
+ const top = cats.slice(0, 8);
60
+ const max = cats.reduce((m, c) => Math.max(m, c.value), 0);
61
+ const series = monthSeries(records, months);
62
+ const mean = series.length === 0 ? 0 : series.reduce((s, m) => s + m.expense, 0) / series.length;
63
+ let worst;
64
+ for (const m of series) {
65
+ const pct = mean === 0 ? 0 : round1(((m.expense - mean) / mean) * 100);
66
+ if (worst === undefined || Math.abs(pct) > Math.abs(worst.pct))
67
+ worst = { month: m.month, pct };
68
+ }
69
+ const tops = expenseTop(records, 10);
70
+ const head = cats[0];
71
+ const span = windowLabel(dayOf(firstTimeOf(records)), dayOf(lastTimeOf(records)));
72
+ const label = '近 ' + String(months) + ' 个月(' + startMonth + ' ~ ' + endMonth + ')';
73
+ /* 月度走势:支出/收入两条系列;**没有记录的月给 `null`**(图上断开、不按 0 画)。 */
74
+ const points = (pick) => series.map((m) => ({ label: m.month, value: m.count === 0 ? null : pick(m) }));
75
+ const expenseItems = points((m) => m.expense);
76
+ const chart = {
77
+ title: '月度走势(近 ' + String(months) + ' 个月)',
78
+ kind: 'line',
79
+ input: {
80
+ items: expenseItems,
81
+ options: {
82
+ yTicks: 3,
83
+ labels: 'select',
84
+ legend: true,
85
+ gapStyle: 'dashed',
86
+ series: [
87
+ { name: '支出', items: expenseItems },
88
+ { name: '收入', items: points((m) => m.income) },
89
+ ],
90
+ },
91
+ },
92
+ };
93
+ return {
94
+ title: '看洞察',
95
+ label,
96
+ from: startMonth + '-01',
97
+ to: monthRange(endMonth).end,
98
+ count: records.length,
99
+ conclusion: kpi.count === 0
100
+ ? label + ' 一条记录都没有。'
101
+ : label + ' 共 ' + String(kpi.count) + ' 笔:支出 ' + money(kpi.expense) + ' 元、收入 ' + money(kpi.income)
102
+ + ' 元、净额 ' + money(kpi.net) + ' 元'
103
+ + (head === undefined ? '。' : ';花得最多的是「' + head.key + '」' + money(head.value) + ' 元(占 ' + pctText(head.pct) + ')')
104
+ + (worst === undefined ? '。' : ';' + worst.month + ' 支出偏离月均 ' + devText(worst.pct) + '。'),
105
+ caliber: '区间按库里最后一条记录所在的月份往前数 ' + String(months) + ' 个月(不按今天);分类按一级归堆(两级/三级分类并到一级),条长按最大一类折算;月度走势里没有记录的月不补 0、在图上断开;转账不计入收支。',
106
+ chips: [],
107
+ payload: buildTrend('insight', [...records], { limit: 10 }),
108
+ kpi,
109
+ page: {
110
+ kpis: [
111
+ { label: '区间支出', value: money(kpi.expense), unit: '元' },
112
+ { label: '区间收入', value: money(kpi.income), unit: '元' },
113
+ { label: '净额', value: money(kpi.net), unit: '元', detail: kpi.net >= 0 ? '收大于支' : '支大于收' },
114
+ { label: '笔数', value: String(kpi.count), unit: '笔' },
115
+ ],
116
+ factCards: [{
117
+ title: '这批数的事实',
118
+ rows: [
119
+ { k: '区间', v: span },
120
+ { k: '趋势均值', v: money(mean) + ' 元/月' },
121
+ { k: '最大偏离月', v: worst === undefined ? '' : worst.month + '(' + devText(worst.pct) + ')' },
122
+ ],
123
+ }],
124
+ barGroups: [{
125
+ title: '消费习惯(分类分布,共 ' + String(cats.length) + ' 类)',
126
+ rows: top.map((c) => ({
127
+ label: c.key,
128
+ text: money(c.value) + ' 元 · ' + String(c.count) + ' 笔 · ' + pctText(c.pct),
129
+ pct: max === 0 ? 0 : round1((c.value / max) * 100),
130
+ })),
131
+ emptyText: '这一段还没有支出记录',
132
+ }],
133
+ charts: [chart],
134
+ listCards: [{
135
+ title: '大额支出 TOP ' + String(tops.length),
136
+ rows: tops.map((r) => ({
137
+ left: dayOf(r.time),
138
+ main: r.note === '' ? r.category : r.category + ' · ' + r.note,
139
+ right: signedMoney(r.amount),
140
+ })),
141
+ emptyText: '这一段还没有支出记录',
142
+ }],
143
+ empty: {
144
+ text: '这 ' + String(months) + ' 个月里一条记录都没有。',
145
+ hint: '先说「记支出」或「记收入」记一笔,回来看这里就有数了。',
146
+ },
147
+ },
148
+ };
149
+ },
150
+ };
151
+ //# sourceMappingURL=scene-insight.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scene-insight.js","sourceRoot":"","sources":["../../src/analysis/scene-insight.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { AnalysisScene } from './scene.js';
2
+ export declare const sceneInstallment: AnalysisScene;
3
+ //# sourceMappingURL=scene-installment.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scene-installment.d.ts","sourceRoot":"","sources":["../../src/analysis/scene-installment.ts"],"names":[],"mappings":"AA2BA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AA+FhD,eAAO,MAAM,gBAAgB,EAAE,aA4F9B,CAAC"}