skill-bill 0.1.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.
- package/SKILL.md +128 -0
- package/dist/.gen-inputs.json +30 -0
- package/dist/account/accounts.d.ts +98 -0
- package/dist/account/accounts.d.ts.map +1 -0
- package/dist/account/accounts.js +184 -0
- package/dist/account/accounts.js.map +1 -0
- package/dist/account/commands.d.ts +18 -0
- package/dist/account/commands.d.ts.map +1 -0
- package/dist/account/commands.js +21 -0
- package/dist/account/commands.js.map +1 -0
- package/dist/account/declaration.d.ts +9 -0
- package/dist/account/declaration.d.ts.map +1 -0
- package/dist/account/declaration.js +70 -0
- package/dist/account/declaration.js.map +1 -0
- package/dist/account/index.d.ts +15 -0
- package/dist/account/index.d.ts.map +1 -0
- package/dist/account/index.js +15 -0
- package/dist/account/index.js.map +1 -0
- package/dist/account/pageParts.d.ts +127 -0
- package/dist/account/pageParts.d.ts.map +1 -0
- package/dist/account/pageParts.js +222 -0
- package/dist/account/pageParts.js.map +1 -0
- package/dist/account/params.d.ts +52 -0
- package/dist/account/params.d.ts.map +1 -0
- package/dist/account/params.js +153 -0
- package/dist/account/params.js.map +1 -0
- package/dist/account/query.d.ts +11 -0
- package/dist/account/query.d.ts.map +1 -0
- package/dist/account/query.js +10 -0
- package/dist/account/query.js.map +1 -0
- package/dist/account/read.d.ts +8 -0
- package/dist/account/read.d.ts.map +1 -0
- package/dist/account/read.js +56 -0
- package/dist/account/read.js.map +1 -0
- package/dist/account/scene-add.d.ts +3 -0
- package/dist/account/scene-add.d.ts.map +1 -0
- package/dist/account/scene-add.js +54 -0
- package/dist/account/scene-add.js.map +1 -0
- package/dist/account/scene-transfer.d.ts +3 -0
- package/dist/account/scene-transfer.d.ts.map +1 -0
- package/dist/account/scene-transfer.js +73 -0
- package/dist/account/scene-transfer.js.map +1 -0
- package/dist/account/scene-update.d.ts +3 -0
- package/dist/account/scene-update.d.ts.map +1 -0
- package/dist/account/scene-update.js +56 -0
- package/dist/account/scene-update.js.map +1 -0
- package/dist/account/scene.d.ts +73 -0
- package/dist/account/scene.d.ts.map +1 -0
- package/dist/account/scene.js +34 -0
- package/dist/account/scene.js.map +1 -0
- package/dist/account/template-form.d.ts +52 -0
- package/dist/account/template-form.d.ts.map +1 -0
- package/dist/account/template-form.js +125 -0
- package/dist/account/template-form.js.map +1 -0
- package/dist/account/template-summary.d.ts +38 -0
- package/dist/account/template-summary.d.ts.map +1 -0
- package/dist/account/template-summary.js +179 -0
- package/dist/account/template-summary.js.map +1 -0
- package/dist/account/template-update.d.ts +35 -0
- package/dist/account/template-update.d.ts.map +1 -0
- package/dist/account/template-update.js +193 -0
- package/dist/account/template-update.js.map +1 -0
- package/dist/account/write.d.ts +14 -0
- package/dist/account/write.d.ts.map +1 -0
- package/dist/account/write.js +166 -0
- package/dist/account/write.js.map +1 -0
- package/dist/analysis/agg.d.ts +135 -0
- package/dist/analysis/agg.d.ts.map +1 -0
- package/dist/analysis/agg.js +196 -0
- package/dist/analysis/agg.js.map +1 -0
- package/dist/analysis/cards.d.ts +40 -0
- package/dist/analysis/cards.d.ts.map +1 -0
- package/dist/analysis/cards.js +97 -0
- package/dist/analysis/cards.js.map +1 -0
- package/dist/analysis/commands.d.ts +17 -0
- package/dist/analysis/commands.d.ts.map +1 -0
- package/dist/analysis/commands.js +28 -0
- package/dist/analysis/commands.js.map +1 -0
- package/dist/analysis/declaration.d.ts +9 -0
- package/dist/analysis/declaration.d.ts.map +1 -0
- package/dist/analysis/declaration.js +368 -0
- package/dist/analysis/declaration.js.map +1 -0
- package/dist/analysis/index.d.ts +14 -0
- package/dist/analysis/index.d.ts.map +1 -0
- package/dist/analysis/index.js +14 -0
- package/dist/analysis/index.js.map +1 -0
- package/dist/analysis/pageParts.d.ts +103 -0
- package/dist/analysis/pageParts.d.ts.map +1 -0
- package/dist/analysis/pageParts.js +158 -0
- package/dist/analysis/pageParts.js.map +1 -0
- package/dist/{policy/analysis.d.ts → analysis/params.d.ts} +1 -1
- package/dist/analysis/params.d.ts.map +1 -0
- package/dist/{policy/analysis.js → analysis/params.js} +10 -4
- package/dist/analysis/params.js.map +1 -0
- package/dist/analysis/read.d.ts +26 -0
- package/dist/analysis/read.d.ts.map +1 -0
- package/dist/analysis/read.js +84 -0
- package/dist/analysis/read.js.map +1 -0
- package/dist/analysis/scene-account.d.ts +3 -0
- package/dist/analysis/scene-account.d.ts.map +1 -0
- package/dist/analysis/scene-account.js +88 -0
- package/dist/analysis/scene-account.js.map +1 -0
- package/dist/analysis/scene-activity.d.ts +3 -0
- package/dist/analysis/scene-activity.d.ts.map +1 -0
- package/dist/analysis/scene-activity.js +108 -0
- package/dist/analysis/scene-activity.js.map +1 -0
- package/dist/analysis/scene-anomaly.d.ts +3 -0
- package/dist/analysis/scene-anomaly.d.ts.map +1 -0
- package/dist/analysis/scene-anomaly.js +173 -0
- package/dist/analysis/scene-anomaly.js.map +1 -0
- package/dist/analysis/scene-cat-compare.d.ts +3 -0
- package/dist/analysis/scene-cat-compare.d.ts.map +1 -0
- package/dist/analysis/scene-cat-compare.js +128 -0
- package/dist/analysis/scene-cat-compare.js.map +1 -0
- package/dist/analysis/scene-cat-trend.d.ts +3 -0
- package/dist/analysis/scene-cat-trend.d.ts.map +1 -0
- package/dist/analysis/scene-cat-trend.js +121 -0
- package/dist/analysis/scene-cat-trend.js.map +1 -0
- package/dist/analysis/scene-category.d.ts +3 -0
- package/dist/analysis/scene-category.d.ts.map +1 -0
- package/dist/analysis/scene-category.js +104 -0
- package/dist/analysis/scene-category.js.map +1 -0
- package/dist/analysis/scene-debt.d.ts +3 -0
- package/dist/analysis/scene-debt.d.ts.map +1 -0
- package/dist/analysis/scene-debt.js +111 -0
- package/dist/analysis/scene-debt.js.map +1 -0
- package/dist/analysis/scene-distribution.d.ts +3 -0
- package/dist/analysis/scene-distribution.d.ts.map +1 -0
- package/dist/analysis/scene-distribution.js +144 -0
- package/dist/analysis/scene-distribution.js.map +1 -0
- package/dist/analysis/scene-insight.d.ts +3 -0
- package/dist/analysis/scene-insight.d.ts.map +1 -0
- package/dist/analysis/scene-insight.js +151 -0
- package/dist/analysis/scene-insight.js.map +1 -0
- package/dist/analysis/scene-installment.d.ts +3 -0
- package/dist/analysis/scene-installment.d.ts.map +1 -0
- package/dist/analysis/scene-installment.js +168 -0
- package/dist/analysis/scene-installment.js.map +1 -0
- package/dist/analysis/scene-ledger.d.ts +3 -0
- package/dist/analysis/scene-ledger.d.ts.map +1 -0
- package/dist/analysis/scene-ledger.js +80 -0
- package/dist/analysis/scene-ledger.js.map +1 -0
- package/dist/analysis/scene-monthly.d.ts +3 -0
- package/dist/analysis/scene-monthly.d.ts.map +1 -0
- package/dist/analysis/scene-monthly.js +79 -0
- package/dist/analysis/scene-monthly.js.map +1 -0
- package/dist/analysis/scene-overview.d.ts +3 -0
- package/dist/analysis/scene-overview.d.ts.map +1 -0
- package/dist/analysis/scene-overview.js +82 -0
- package/dist/analysis/scene-overview.js.map +1 -0
- package/dist/analysis/scene-period-compare.d.ts +3 -0
- package/dist/analysis/scene-period-compare.d.ts.map +1 -0
- package/dist/analysis/scene-period-compare.js +127 -0
- package/dist/analysis/scene-period-compare.js.map +1 -0
- package/dist/analysis/scene-range-compare.d.ts +3 -0
- package/dist/analysis/scene-range-compare.d.ts.map +1 -0
- package/dist/analysis/scene-range-compare.js +144 -0
- package/dist/analysis/scene-range-compare.js.map +1 -0
- package/dist/analysis/scene-refund.d.ts +3 -0
- package/dist/analysis/scene-refund.d.ts.map +1 -0
- package/dist/analysis/scene-refund.js +78 -0
- package/dist/analysis/scene-refund.js.map +1 -0
- package/dist/analysis/scene-reimburse.d.ts +3 -0
- package/dist/analysis/scene-reimburse.d.ts.map +1 -0
- package/dist/analysis/scene-reimburse.js +88 -0
- package/dist/analysis/scene-reimburse.js.map +1 -0
- package/dist/analysis/scene-stats.d.ts +3 -0
- package/dist/analysis/scene-stats.d.ts.map +1 -0
- package/dist/analysis/scene-stats.js +80 -0
- package/dist/analysis/scene-stats.js.map +1 -0
- package/dist/analysis/scene-structure.d.ts +3 -0
- package/dist/analysis/scene-structure.d.ts.map +1 -0
- package/dist/analysis/scene-structure.js +93 -0
- package/dist/analysis/scene-structure.js.map +1 -0
- package/dist/analysis/scene-top-freq.d.ts +3 -0
- package/dist/analysis/scene-top-freq.d.ts.map +1 -0
- package/dist/analysis/scene-top-freq.js +91 -0
- package/dist/analysis/scene-top-freq.js.map +1 -0
- package/dist/analysis/scene-top.d.ts +3 -0
- package/dist/analysis/scene-top.d.ts.map +1 -0
- package/dist/analysis/scene-top.js +69 -0
- package/dist/analysis/scene-top.js.map +1 -0
- package/dist/analysis/scene-trend.d.ts +3 -0
- package/dist/analysis/scene-trend.d.ts.map +1 -0
- package/dist/analysis/scene-trend.js +131 -0
- package/dist/analysis/scene-trend.js.map +1 -0
- package/dist/analysis/scene-week.d.ts +3 -0
- package/dist/analysis/scene-week.d.ts.map +1 -0
- package/dist/analysis/scene-week.js +128 -0
- package/dist/analysis/scene-week.js.map +1 -0
- package/dist/analysis/scene-yearly.d.ts +3 -0
- package/dist/analysis/scene-yearly.d.ts.map +1 -0
- package/dist/analysis/scene-yearly.js +103 -0
- package/dist/analysis/scene-yearly.js.map +1 -0
- package/dist/analysis/scene-yoy.d.ts +3 -0
- package/dist/analysis/scene-yoy.d.ts.map +1 -0
- package/dist/analysis/scene-yoy.js +95 -0
- package/dist/analysis/scene-yoy.js.map +1 -0
- package/dist/analysis/scene.d.ts +240 -0
- package/dist/analysis/scene.d.ts.map +1 -0
- package/dist/analysis/scene.js +47 -0
- package/dist/analysis/scene.js.map +1 -0
- package/dist/analysis/template-bars.d.ts +3 -0
- package/dist/analysis/template-bars.d.ts.map +1 -0
- package/dist/analysis/template-bars.js +64 -0
- package/dist/analysis/template-bars.js.map +1 -0
- package/dist/analysis/template-charts.d.ts +3 -0
- package/dist/analysis/template-charts.d.ts.map +1 -0
- package/dist/analysis/template-charts.js +55 -0
- package/dist/analysis/template-charts.js.map +1 -0
- package/dist/analysis/template-compare.d.ts +3 -0
- package/dist/analysis/template-compare.d.ts.map +1 -0
- package/dist/analysis/template-compare.js +54 -0
- package/dist/analysis/template-compare.js.map +1 -0
- package/dist/analysis/template-insight.d.ts +3 -0
- package/dist/analysis/template-insight.d.ts.map +1 -0
- package/dist/analysis/template-insight.js +56 -0
- package/dist/analysis/template-insight.js.map +1 -0
- package/dist/analysis/template-tables.d.ts +3 -0
- package/dist/analysis/template-tables.d.ts.map +1 -0
- package/dist/analysis/template-tables.js +49 -0
- package/dist/analysis/template-tables.js.map +1 -0
- package/dist/analysis/views.d.ts +35 -0
- package/dist/analysis/views.d.ts.map +1 -0
- package/dist/{render → analysis}/views.js +2 -55
- package/dist/analysis/views.js.map +1 -0
- package/dist/cli/cmd_read.js +158 -415
- package/dist/cli/cmd_read.js.map +1 -1
- package/dist/cli/config.d.ts +16 -0
- package/dist/cli/config.d.ts.map +1 -0
- package/dist/cli/config.js +81 -0
- package/dist/cli/config.js.map +1 -0
- package/dist/cli/health.d.ts +7 -0
- package/dist/cli/health.d.ts.map +1 -0
- package/dist/cli/health.js +32 -0
- package/dist/cli/health.js.map +1 -0
- package/dist/cli/registry.d.ts +15 -0
- package/dist/cli/registry.d.ts.map +1 -0
- package/dist/cli/registry.js +30 -0
- package/dist/cli/registry.js.map +1 -0
- package/dist/config.d.ts +41 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +64 -0
- package/dist/config.js.map +1 -0
- package/dist/fetch/db.d.ts +9 -0
- package/dist/fetch/db.d.ts.map +1 -1
- package/dist/fetch/db.js +19 -2
- package/dist/fetch/db.js.map +1 -1
- package/dist/fetch/index.d.ts +2 -2
- package/dist/fetch/index.d.ts.map +1 -1
- package/dist/fetch/index.js +2 -2
- package/dist/fetch/index.js.map +1 -1
- package/dist/fetch/paths.d.ts +16 -4
- package/dist/fetch/paths.d.ts.map +1 -1
- package/dist/fetch/paths.js +54 -24
- package/dist/fetch/paths.js.map +1 -1
- package/dist/goal/commands.d.ts +18 -0
- package/dist/goal/commands.d.ts.map +1 -0
- package/dist/goal/commands.js +21 -0
- package/dist/goal/commands.js.map +1 -0
- package/dist/goal/declaration.d.ts +9 -0
- package/dist/goal/declaration.d.ts.map +1 -0
- package/dist/goal/declaration.js +71 -0
- package/dist/goal/declaration.js.map +1 -0
- package/dist/goal/goalData.d.ts +126 -0
- package/dist/goal/goalData.d.ts.map +1 -0
- package/dist/goal/goalData.js +228 -0
- package/dist/goal/goalData.js.map +1 -0
- package/dist/goal/index.d.ts +19 -0
- package/dist/goal/index.d.ts.map +1 -0
- package/dist/goal/index.js +19 -0
- package/dist/goal/index.js.map +1 -0
- package/dist/goal/pageParts.d.ts +140 -0
- package/dist/goal/pageParts.d.ts.map +1 -0
- package/dist/goal/pageParts.js +233 -0
- package/dist/goal/pageParts.js.map +1 -0
- package/dist/goal/params.d.ts +63 -0
- package/dist/goal/params.d.ts.map +1 -0
- package/dist/goal/params.js +164 -0
- package/dist/goal/params.js.map +1 -0
- package/dist/goal/query.d.ts +12 -0
- package/dist/goal/query.d.ts.map +1 -0
- package/dist/goal/query.js +10 -0
- package/dist/goal/query.js.map +1 -0
- package/dist/goal/read.d.ts +5 -0
- package/dist/goal/read.d.ts.map +1 -0
- package/dist/goal/read.js +79 -0
- package/dist/goal/read.js.map +1 -0
- package/dist/goal/scene-budget.d.ts +3 -0
- package/dist/goal/scene-budget.d.ts.map +1 -0
- package/dist/goal/scene-budget.js +125 -0
- package/dist/goal/scene-budget.js.map +1 -0
- package/dist/goal/scene-saving.d.ts +3 -0
- package/dist/goal/scene-saving.d.ts.map +1 -0
- package/dist/goal/scene-saving.js +116 -0
- package/dist/goal/scene-saving.js.map +1 -0
- package/dist/goal/scene-set-budget.d.ts +3 -0
- package/dist/goal/scene-set-budget.d.ts.map +1 -0
- package/dist/goal/scene-set-budget.js +94 -0
- package/dist/goal/scene-set-budget.js.map +1 -0
- package/dist/goal/scene-set-saving.d.ts +3 -0
- package/dist/goal/scene-set-saving.d.ts.map +1 -0
- package/dist/goal/scene-set-saving.js +66 -0
- package/dist/goal/scene-set-saving.js.map +1 -0
- package/dist/goal/scene.d.ts +142 -0
- package/dist/goal/scene.d.ts.map +1 -0
- package/dist/goal/scene.js +51 -0
- package/dist/goal/scene.js.map +1 -0
- package/dist/goal/template-form.d.ts +32 -0
- package/dist/goal/template-form.d.ts.map +1 -0
- package/dist/goal/template-form.js +124 -0
- package/dist/goal/template-form.js.map +1 -0
- package/dist/goal/template-progress.d.ts +47 -0
- package/dist/goal/template-progress.d.ts.map +1 -0
- package/dist/goal/template-progress.js +79 -0
- package/dist/goal/template-progress.js.map +1 -0
- package/dist/goal/write.d.ts +6 -0
- package/dist/goal/write.d.ts.map +1 -0
- package/dist/goal/write.js +131 -0
- package/dist/goal/write.js.map +1 -0
- package/dist/health.d.ts +41 -0
- package/dist/health.d.ts.map +1 -0
- package/dist/health.js +456 -0
- package/dist/health.js.map +1 -0
- package/dist/help/declaration.d.ts +9 -0
- package/dist/help/declaration.d.ts.map +1 -0
- package/dist/help/declaration.js +28 -0
- package/dist/help/declaration.js.map +1 -0
- package/dist/help/helpFile.d.ts +88 -0
- package/dist/help/helpFile.d.ts.map +1 -0
- package/dist/help/helpFile.js +119 -0
- package/dist/help/helpFile.js.map +1 -0
- package/dist/help/helpPaths.d.ts +11 -0
- package/dist/help/helpPaths.d.ts.map +1 -0
- package/dist/help/helpPaths.js +36 -0
- package/dist/help/helpPaths.js.map +1 -0
- package/dist/help/index.d.ts +2 -0
- package/dist/help/index.d.ts.map +1 -1
- package/dist/help/index.js +2 -0
- package/dist/help/index.js.map +1 -1
- package/dist/help/items.d.ts +17 -0
- package/dist/help/items.d.ts.map +1 -0
- package/dist/help/items.js +5 -0
- package/dist/help/items.js.map +1 -0
- package/dist/help/lookup.d.ts +1 -1
- package/dist/help/lookup.d.ts.map +1 -1
- package/dist/help/lookup.js +5 -4
- package/dist/help/lookup.js.map +1 -1
- package/dist/index.d.ts +0 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -1
- package/dist/index.js.map +1 -1
- package/dist/link/declaration.d.ts +9 -0
- package/dist/link/declaration.d.ts.map +1 -0
- package/dist/link/declaration.js +40 -0
- package/dist/link/declaration.js.map +1 -0
- package/dist/output.d.ts +21 -0
- package/dist/output.d.ts.map +1 -0
- package/dist/output.js +48 -0
- package/dist/output.js.map +1 -0
- package/dist/query/commands.d.ts +17 -0
- package/dist/query/commands.d.ts.map +1 -0
- package/dist/query/commands.js +36 -0
- package/dist/query/commands.js.map +1 -0
- package/dist/query/declaration.d.ts +9 -0
- package/dist/query/declaration.d.ts.map +1 -0
- package/dist/query/declaration.js +251 -0
- package/dist/query/declaration.js.map +1 -0
- package/dist/query/detail.d.ts +28 -0
- package/dist/query/detail.d.ts.map +1 -0
- package/dist/query/detail.js +143 -0
- package/dist/query/detail.js.map +1 -0
- package/dist/query/index.d.ts +19 -0
- package/dist/query/index.d.ts.map +1 -0
- package/dist/query/index.js +12 -0
- package/dist/query/index.js.map +1 -0
- package/dist/query/items.d.ts +22 -0
- package/dist/query/items.d.ts.map +1 -0
- package/dist/query/items.js +7 -0
- package/dist/query/items.js.map +1 -0
- package/dist/query/list.d.ts +100 -0
- package/dist/query/list.d.ts.map +1 -0
- package/dist/query/list.js +247 -0
- package/dist/query/list.js.map +1 -0
- package/dist/query/pageParts.d.ts +6 -0
- package/dist/query/pageParts.d.ts.map +1 -0
- package/dist/query/pageParts.js +18 -0
- package/dist/query/pageParts.js.map +1 -0
- package/dist/query/read.d.ts +17 -0
- package/dist/query/read.d.ts.map +1 -0
- package/dist/query/read.js +324 -0
- package/dist/query/read.js.map +1 -0
- package/dist/render/envelope.d.ts.map +1 -1
- package/dist/render/envelope.js +21 -16
- package/dist/render/envelope.js.map +1 -1
- package/dist/render/errors.d.ts +1 -1
- package/dist/render/errors.d.ts.map +1 -1
- package/dist/render/errors.js.map +1 -1
- package/dist/render/html.d.ts +0 -1
- package/dist/render/html.d.ts.map +1 -1
- package/dist/render/html.js +2 -4
- package/dist/render/html.js.map +1 -1
- package/dist/render/index.d.ts +6 -3
- package/dist/render/index.d.ts.map +1 -1
- package/dist/render/index.js +9 -2
- package/dist/render/index.js.map +1 -1
- package/dist/render/templates.js +1 -1
- package/dist/render/templates.js.map +1 -1
- package/dist/setup/backups.d.ts +52 -0
- package/dist/setup/backups.d.ts.map +1 -0
- package/dist/setup/backups.js +172 -0
- package/dist/setup/backups.js.map +1 -0
- package/dist/setup/blocked.d.ts +12 -0
- package/dist/setup/blocked.d.ts.map +1 -0
- package/dist/setup/blocked.js +65 -0
- package/dist/setup/blocked.js.map +1 -0
- package/dist/setup/commands.d.ts +10 -0
- package/dist/setup/commands.d.ts.map +1 -0
- package/dist/setup/commands.js +12 -0
- package/dist/setup/commands.js.map +1 -0
- package/dist/setup/declaration.d.ts +9 -0
- package/dist/setup/declaration.d.ts.map +1 -0
- package/dist/setup/declaration.js +92 -0
- package/dist/setup/declaration.js.map +1 -0
- package/dist/setup/import.d.ts +8 -0
- package/dist/setup/import.d.ts.map +1 -0
- package/dist/setup/import.js +111 -0
- package/dist/setup/import.js.map +1 -0
- package/dist/setup/importer.d.ts +79 -0
- package/dist/setup/importer.d.ts.map +1 -0
- package/dist/setup/importer.js +231 -0
- package/dist/setup/importer.js.map +1 -0
- package/dist/setup/index.d.ts +8 -0
- package/dist/setup/index.d.ts.map +1 -0
- package/dist/setup/index.js +8 -0
- package/dist/setup/index.js.map +1 -0
- package/dist/setup/pageParts.d.ts +93 -0
- package/dist/setup/pageParts.d.ts.map +1 -0
- package/dist/setup/pageParts.js +197 -0
- package/dist/setup/pageParts.js.map +1 -0
- package/dist/setup/params.d.ts +43 -0
- package/dist/setup/params.d.ts.map +1 -0
- package/dist/setup/params.js +94 -0
- package/dist/setup/params.js.map +1 -0
- package/dist/setup/restore.d.ts +5 -0
- package/dist/setup/restore.d.ts.map +1 -0
- package/dist/setup/restore.js +129 -0
- package/dist/setup/restore.js.map +1 -0
- package/dist/setup/run.d.ts +5 -0
- package/dist/setup/run.d.ts.map +1 -0
- package/dist/setup/run.js +188 -0
- package/dist/setup/run.js.map +1 -0
- package/dist/setup/scene-backup-create.d.ts +3 -0
- package/dist/setup/scene-backup-create.d.ts.map +1 -0
- package/dist/setup/scene-backup-create.js +26 -0
- package/dist/setup/scene-backup-create.js.map +1 -0
- package/dist/setup/scene-backup-list.d.ts +3 -0
- package/dist/setup/scene-backup-list.d.ts.map +1 -0
- package/dist/setup/scene-backup-list.js +24 -0
- package/dist/setup/scene-backup-list.js.map +1 -0
- package/dist/setup/scene-import.d.ts +3 -0
- package/dist/setup/scene-import.d.ts.map +1 -0
- package/dist/setup/scene-import.js +36 -0
- package/dist/setup/scene-import.js.map +1 -0
- package/dist/setup/scene-init-status.d.ts +14 -0
- package/dist/setup/scene-init-status.d.ts.map +1 -0
- package/dist/setup/scene-init-status.js +16 -0
- package/dist/setup/scene-init-status.js.map +1 -0
- package/dist/setup/scene-init.d.ts +3 -0
- package/dist/setup/scene-init.d.ts.map +1 -0
- package/dist/setup/scene-init.js +25 -0
- package/dist/setup/scene-init.js.map +1 -0
- package/dist/setup/scene-restore.d.ts +3 -0
- package/dist/setup/scene-restore.d.ts.map +1 -0
- package/dist/setup/scene-restore.js +33 -0
- package/dist/setup/scene-restore.js.map +1 -0
- package/dist/setup/scene.d.ts +26 -0
- package/dist/setup/scene.d.ts.map +1 -0
- package/dist/setup/scene.js +42 -0
- package/dist/setup/scene.js.map +1 -0
- package/dist/setup/status.d.ts +47 -0
- package/dist/setup/status.d.ts.map +1 -0
- package/dist/setup/status.js +68 -0
- package/dist/setup/status.js.map +1 -0
- package/dist/setup/steps.d.ts +66 -0
- package/dist/setup/steps.d.ts.map +1 -0
- package/dist/setup/steps.js +123 -0
- package/dist/setup/steps.js.map +1 -0
- package/dist/setup/template-list.d.ts +29 -0
- package/dist/setup/template-list.d.ts.map +1 -0
- package/dist/setup/template-list.js +187 -0
- package/dist/setup/template-list.js.map +1 -0
- package/dist/setup/template-receipt.d.ts +18 -0
- package/dist/setup/template-receipt.d.ts.map +1 -0
- package/dist/setup/template-receipt.js +93 -0
- package/dist/setup/template-receipt.js.map +1 -0
- package/dist/setup/template-wizard.d.ts +64 -0
- package/dist/setup/template-wizard.d.ts.map +1 -0
- package/dist/setup/template-wizard.js +233 -0
- package/dist/setup/template-wizard.js.map +1 -0
- package/dist/{policy → shared}/category.d.ts +0 -6
- package/dist/shared/category.d.ts.map +1 -0
- package/dist/{policy → shared}/category.js +16 -54
- package/dist/shared/category.js.map +1 -0
- package/dist/shared/commandSpec.d.ts +75 -0
- package/dist/shared/commandSpec.d.ts.map +1 -0
- package/dist/shared/commandSpec.js +2 -0
- package/dist/shared/commandSpec.js.map +1 -0
- package/dist/shared/copyArea.d.ts +51 -0
- package/dist/shared/copyArea.d.ts.map +1 -0
- package/dist/shared/copyArea.js +124 -0
- package/dist/shared/copyArea.js.map +1 -0
- package/dist/shared/dateRange.d.ts +31 -0
- package/dist/shared/dateRange.d.ts.map +1 -0
- package/dist/shared/dateRange.js +121 -0
- package/dist/shared/dateRange.js.map +1 -0
- package/dist/shared/docPage.d.ts +21 -0
- package/dist/shared/docPage.d.ts.map +1 -0
- package/dist/shared/docPage.js +120 -0
- package/dist/shared/docPage.js.map +1 -0
- package/dist/shared/kpi.d.ts +21 -0
- package/dist/shared/kpi.d.ts.map +1 -0
- package/dist/shared/kpi.js +20 -0
- package/dist/shared/kpi.js.map +1 -0
- package/dist/shared/pageIdentity.d.ts +39 -0
- package/dist/shared/pageIdentity.d.ts.map +1 -0
- package/dist/shared/pageIdentity.js +45 -0
- package/dist/shared/pageIdentity.js.map +1 -0
- package/dist/shared/pageSections.d.ts +23 -0
- package/dist/shared/pageSections.d.ts.map +1 -0
- package/dist/shared/pageSections.js +52 -0
- package/dist/shared/pageSections.js.map +1 -0
- package/dist/shared/pageShell.d.ts +24 -0
- package/dist/shared/pageShell.d.ts.map +1 -0
- package/dist/shared/pageShell.js +37 -0
- package/dist/shared/pageShell.js.map +1 -0
- package/dist/shared/params.d.ts +11 -0
- package/dist/shared/params.d.ts.map +1 -0
- package/dist/shared/params.js +60 -0
- package/dist/shared/params.js.map +1 -0
- package/dist/shared/sourceLine.d.ts +19 -0
- package/dist/shared/sourceLine.d.ts.map +1 -0
- package/dist/shared/sourceLine.js +52 -0
- package/dist/shared/sourceLine.js.map +1 -0
- package/dist/shared/writeParts.d.ts +64 -0
- package/dist/shared/writeParts.d.ts.map +1 -0
- package/dist/shared/writeParts.js +39 -0
- package/dist/shared/writeParts.js.map +1 -0
- package/dist/triggers/routeSpec.d.ts +109 -0
- package/dist/triggers/routeSpec.d.ts.map +1 -0
- package/dist/triggers/routeSpec.js +19 -0
- package/dist/triggers/routeSpec.js.map +1 -0
- package/dist/triggers/wake-assets.d.ts +15 -0
- package/dist/triggers/wake-assets.d.ts.map +1 -0
- package/dist/triggers/wake-assets.js +67 -0
- package/dist/triggers/wake-assets.js.map +1 -0
- package/dist/triggers/wakeTable.d.ts +18 -0
- package/dist/triggers/wakeTable.d.ts.map +1 -0
- package/dist/triggers/wakeTable.js +135 -0
- package/dist/triggers/wakeTable.js.map +1 -0
- package/dist/write/blockedFold.d.ts +10 -0
- package/dist/write/blockedFold.d.ts.map +1 -0
- package/dist/write/blockedFold.js +31 -0
- package/dist/write/blockedFold.js.map +1 -0
- package/dist/write/blockedSlots.d.ts +39 -0
- package/dist/write/blockedSlots.d.ts.map +1 -0
- package/dist/write/blockedSlots.js +108 -0
- package/dist/write/blockedSlots.js.map +1 -0
- package/dist/write/candidatePick.d.ts +50 -0
- package/dist/write/candidatePick.d.ts.map +1 -0
- package/dist/write/candidatePick.js +116 -0
- package/dist/write/candidatePick.js.map +1 -0
- package/dist/write/collect.d.ts +20 -0
- package/dist/write/collect.d.ts.map +1 -0
- package/dist/write/collect.js +15 -0
- package/dist/write/collect.js.map +1 -0
- package/dist/write/collectBody.d.ts +29 -0
- package/dist/write/collectBody.d.ts.map +1 -0
- package/dist/write/collectBody.js +196 -0
- package/dist/write/collectBody.js.map +1 -0
- package/dist/write/collectFrame.d.ts +17 -0
- package/dist/write/collectFrame.d.ts.map +1 -0
- package/dist/write/collectFrame.js +36 -0
- package/dist/write/collectFrame.js.map +1 -0
- package/dist/write/commands.d.ts +10 -0
- package/dist/write/commands.d.ts.map +1 -0
- package/dist/write/commands.js +20 -0
- package/dist/write/commands.js.map +1 -0
- package/dist/write/declaration.d.ts +9 -0
- package/dist/write/declaration.d.ts.map +1 -0
- package/dist/write/declaration.js +239 -0
- package/dist/write/declaration.js.map +1 -0
- package/dist/write/diffTable.d.ts +26 -0
- package/dist/write/diffTable.d.ts.map +1 -0
- package/dist/write/diffTable.js +77 -0
- package/dist/write/diffTable.js.map +1 -0
- package/dist/write/duplicateNote.d.ts +40 -0
- package/dist/write/duplicateNote.d.ts.map +1 -0
- package/dist/write/duplicateNote.js +96 -0
- package/dist/write/duplicateNote.js.map +1 -0
- package/dist/write/emptyNote.d.ts +15 -0
- package/dist/write/emptyNote.d.ts.map +1 -0
- package/dist/write/emptyNote.js +27 -0
- package/dist/write/emptyNote.js.map +1 -0
- package/dist/write/errorReceipt.d.ts +21 -0
- package/dist/write/errorReceipt.d.ts.map +1 -0
- package/dist/write/errorReceipt.js +37 -0
- package/dist/write/errorReceipt.js.map +1 -0
- package/dist/write/flowSteps.d.ts +25 -0
- package/dist/write/flowSteps.d.ts.map +1 -0
- package/dist/write/flowSteps.js +49 -0
- package/dist/write/flowSteps.js.map +1 -0
- package/dist/write/index.d.ts +18 -0
- package/dist/write/index.d.ts.map +1 -0
- package/dist/write/index.js +13 -0
- package/dist/write/index.js.map +1 -0
- package/dist/write/installmentPreview.d.ts +23 -0
- package/dist/write/installmentPreview.d.ts.map +1 -0
- package/dist/write/installmentPreview.js +144 -0
- package/dist/write/installmentPreview.js.map +1 -0
- package/dist/write/outsideScan.d.ts +34 -0
- package/dist/write/outsideScan.d.ts.map +1 -0
- package/dist/write/outsideScan.js +116 -0
- package/dist/write/outsideScan.js.map +1 -0
- package/dist/write/pageParts.d.ts +69 -0
- package/dist/write/pageParts.d.ts.map +1 -0
- package/dist/write/pageParts.js +80 -0
- package/dist/write/pageParts.js.map +1 -0
- package/dist/write/photoEscape.d.ts +53 -0
- package/dist/write/photoEscape.d.ts.map +1 -0
- package/dist/write/photoEscape.js +139 -0
- package/dist/write/photoEscape.js.map +1 -0
- package/dist/write/prefillNote.d.ts +21 -0
- package/dist/write/prefillNote.d.ts.map +1 -0
- package/dist/write/prefillNote.js +79 -0
- package/dist/write/prefillNote.js.map +1 -0
- package/dist/write/receipt.d.ts +18 -0
- package/dist/write/receipt.d.ts.map +1 -0
- package/dist/write/receipt.js +11 -0
- package/dist/write/receipt.js.map +1 -0
- package/dist/write/receiptBody.d.ts +10 -0
- package/dist/write/receiptBody.d.ts.map +1 -0
- package/dist/write/receiptBody.js +111 -0
- package/dist/write/receiptBody.js.map +1 -0
- package/dist/write/receiptOut.d.ts +14 -0
- package/dist/write/receiptOut.d.ts.map +1 -0
- package/dist/write/receiptOut.js +13 -0
- package/dist/write/receiptOut.js.map +1 -0
- package/dist/write/receiptParts.d.ts +12 -0
- package/dist/write/receiptParts.d.ts.map +1 -0
- package/dist/write/receiptParts.js +38 -0
- package/dist/write/receiptParts.js.map +1 -0
- package/dist/write/recentPicks.d.ts +34 -0
- package/dist/write/recentPicks.d.ts.map +1 -0
- package/dist/write/recentPicks.js +65 -0
- package/dist/write/recentPicks.js.map +1 -0
- package/dist/write/record.d.ts +13 -0
- package/dist/write/record.d.ts.map +1 -0
- package/dist/{policy → write}/record.js +12 -28
- package/dist/write/record.js.map +1 -0
- package/dist/write/recordPicker.d.ts +32 -0
- package/dist/write/recordPicker.d.ts.map +1 -0
- package/dist/write/recordPicker.js +201 -0
- package/dist/write/recordPicker.js.map +1 -0
- package/dist/write/rowEditorTable.d.ts +31 -0
- package/dist/write/rowEditorTable.d.ts.map +1 -0
- package/dist/write/rowEditorTable.js +103 -0
- package/dist/write/rowEditorTable.js.map +1 -0
- package/dist/write/scene-batch.d.ts +3 -0
- package/dist/write/scene-batch.d.ts.map +1 -0
- package/dist/write/scene-batch.js +37 -0
- package/dist/write/scene-batch.js.map +1 -0
- package/dist/write/scene-borrow.d.ts +3 -0
- package/dist/write/scene-borrow.d.ts.map +1 -0
- package/dist/write/scene-borrow.js +166 -0
- package/dist/write/scene-borrow.js.map +1 -0
- package/dist/write/scene-collect.d.ts +3 -0
- package/dist/write/scene-collect.d.ts.map +1 -0
- package/dist/write/scene-collect.js +155 -0
- package/dist/write/scene-collect.js.map +1 -0
- package/dist/write/scene-expense.d.ts +3 -0
- package/dist/write/scene-expense.d.ts.map +1 -0
- package/dist/write/scene-expense.js +50 -0
- package/dist/write/scene-expense.js.map +1 -0
- package/dist/write/scene-income.d.ts +3 -0
- package/dist/write/scene-income.d.ts.map +1 -0
- package/dist/write/scene-income.js +51 -0
- package/dist/write/scene-income.js.map +1 -0
- package/dist/write/scene-installment.d.ts +3 -0
- package/dist/write/scene-installment.d.ts.map +1 -0
- package/dist/write/scene-installment.js +52 -0
- package/dist/write/scene-installment.js.map +1 -0
- package/dist/write/scene-lend.d.ts +3 -0
- package/dist/write/scene-lend.d.ts.map +1 -0
- package/dist/write/scene-lend.js +165 -0
- package/dist/write/scene-lend.js.map +1 -0
- package/dist/write/scene-photo.d.ts +3 -0
- package/dist/write/scene-photo.d.ts.map +1 -0
- package/dist/write/scene-photo.js +108 -0
- package/dist/write/scene-photo.js.map +1 -0
- package/dist/write/scene-plain.d.ts +3 -0
- package/dist/write/scene-plain.d.ts.map +1 -0
- package/dist/write/scene-plain.js +52 -0
- package/dist/write/scene-plain.js.map +1 -0
- package/dist/write/scene-refund.d.ts +3 -0
- package/dist/write/scene-refund.d.ts.map +1 -0
- package/dist/write/scene-refund.js +139 -0
- package/dist/write/scene-refund.js.map +1 -0
- package/dist/write/scene-reimburse-done.d.ts +3 -0
- package/dist/write/scene-reimburse-done.d.ts.map +1 -0
- package/dist/write/scene-reimburse-done.js +151 -0
- package/dist/write/scene-reimburse-done.js.map +1 -0
- package/dist/write/scene-reimburse.d.ts +3 -0
- package/dist/write/scene-reimburse.d.ts.map +1 -0
- package/dist/write/scene-reimburse.js +65 -0
- package/dist/write/scene-reimburse.js.map +1 -0
- package/dist/write/scene-repay.d.ts +3 -0
- package/dist/write/scene-repay.d.ts.map +1 -0
- package/dist/write/scene-repay.js +155 -0
- package/dist/write/scene-repay.js.map +1 -0
- package/dist/write/scene-restore.d.ts +3 -0
- package/dist/write/scene-restore.d.ts.map +1 -0
- package/dist/write/scene-restore.js +59 -0
- package/dist/write/scene-restore.js.map +1 -0
- package/dist/write/scene-undo.d.ts +3 -0
- package/dist/write/scene-undo.d.ts.map +1 -0
- package/dist/write/scene-undo.js +57 -0
- package/dist/write/scene-undo.js.map +1 -0
- package/dist/write/scene-update.d.ts +3 -0
- package/dist/write/scene-update.d.ts.map +1 -0
- package/dist/write/scene-update.js +57 -0
- package/dist/write/scene-update.js.map +1 -0
- package/dist/write/scene.d.ts +86 -0
- package/dist/write/scene.d.ts.map +1 -0
- package/dist/write/scene.js +44 -0
- package/dist/write/scene.js.map +1 -0
- package/dist/write/slots.d.ts +16 -0
- package/dist/write/slots.d.ts.map +1 -0
- package/dist/write/slots.js +73 -0
- package/dist/write/slots.js.map +1 -0
- package/dist/write/sourceNote.d.ts +5 -0
- package/dist/write/sourceNote.d.ts.map +1 -0
- package/dist/write/sourceNote.js +37 -0
- package/dist/write/sourceNote.js.map +1 -0
- package/dist/write/summaryRow.d.ts +44 -0
- package/dist/write/summaryRow.d.ts.map +1 -0
- package/dist/write/summaryRow.js +86 -0
- package/dist/write/summaryRow.js.map +1 -0
- package/dist/write/template-batch.d.ts +37 -0
- package/dist/write/template-batch.d.ts.map +1 -0
- package/dist/write/template-batch.js +212 -0
- package/dist/write/template-batch.js.map +1 -0
- package/dist/write/template-expense.d.ts +90 -0
- package/dist/write/template-expense.d.ts.map +1 -0
- package/dist/write/template-expense.js +214 -0
- package/dist/write/template-expense.js.map +1 -0
- package/dist/write/template-flow.d.ts +130 -0
- package/dist/write/template-flow.d.ts.map +1 -0
- package/dist/write/template-flow.js +225 -0
- package/dist/write/template-flow.js.map +1 -0
- package/dist/write/template-installment.d.ts +69 -0
- package/dist/write/template-installment.d.ts.map +1 -0
- package/dist/write/template-installment.js +240 -0
- package/dist/write/template-installment.js.map +1 -0
- package/dist/write/template-update.d.ts +83 -0
- package/dist/write/template-update.d.ts.map +1 -0
- package/dist/write/template-update.js +263 -0
- package/dist/write/template-update.js.map +1 -0
- package/dist/write/typeBadge.d.ts +28 -0
- package/dist/write/typeBadge.d.ts.map +1 -0
- package/dist/write/typeBadge.js +76 -0
- package/dist/write/typeBadge.js.map +1 -0
- package/dist/write/userWording.d.ts +32 -0
- package/dist/write/userWording.d.ts.map +1 -0
- package/dist/write/userWording.js +121 -0
- package/dist/write/userWording.js.map +1 -0
- package/dist/write/write.d.ts +9 -0
- package/dist/write/write.d.ts.map +1 -0
- package/dist/write/write.js +186 -0
- package/dist/write/write.js.map +1 -0
- package/dist/write/writeWire.d.ts +16 -0
- package/dist/write/writeWire.d.ts.map +1 -0
- package/dist/write/writeWire.js +109 -0
- package/dist/write/writeWire.js.map +1 -0
- package/package.json +11 -5
- package/dist/policy/accounts.d.ts +0 -13
- package/dist/policy/accounts.d.ts.map +0 -1
- package/dist/policy/accounts.js +0 -31
- package/dist/policy/accounts.js.map +0 -1
- package/dist/policy/analysis.d.ts.map +0 -1
- package/dist/policy/analysis.js.map +0 -1
- package/dist/policy/category.d.ts.map +0 -1
- package/dist/policy/category.js.map +0 -1
- package/dist/policy/goals.d.ts +0 -15
- package/dist/policy/goals.d.ts.map +0 -1
- package/dist/policy/goals.js +0 -33
- package/dist/policy/goals.js.map +0 -1
- package/dist/policy/index.d.ts +0 -13
- package/dist/policy/index.d.ts.map +0 -1
- package/dist/policy/index.js +0 -7
- package/dist/policy/index.js.map +0 -1
- package/dist/policy/record.d.ts +0 -15
- package/dist/policy/record.d.ts.map +0 -1
- package/dist/policy/record.js.map +0 -1
- package/dist/policy/wakewords.d.ts +0 -14
- package/dist/policy/wakewords.d.ts.map +0 -1
- package/dist/policy/wakewords.js +0 -121
- package/dist/policy/wakewords.js.map +0 -1
- package/dist/render/views.d.ts +0 -86
- package/dist/render/views.d.ts.map +0 -1
- package/dist/render/views.js.map +0 -1
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
/** 复制与提示共用件:复制 prompt 区、复制区(数据位+日志位)、复制日志的入参。
|
|
2
|
+
*
|
|
3
|
+
* 谁在用(两个能力,指名):
|
|
4
|
+
* ① `src/write/`——写入域:过程型采集页(复制 prompt 区 + 复制数据/日志)与结果型回执整页(复制数据/日志);
|
|
5
|
+
* ② `src/query/`——查询域:通用查询列表页的复制数据/日志两条通道(不设 prompt 区——查询不写库,没有要交回助手的一句)。
|
|
6
|
+
* (写域 32 份产物按本件的字面量冻结,查询域只引用、不改这里的任何一句。)
|
|
7
|
+
*
|
|
8
|
+
* 三件东西**只接线、不重造**:
|
|
9
|
+
* ① 复制按钮与区块 → `base-paint/blocks` 的 `renderPreBlock`(带 `copyText` 自带复制按钮)与 `renderCopyBlock`;
|
|
10
|
+
* ② 复制文本 → `base-paint` 的 `buildDataText`(数据投影)/`buildLogText`(六段日志);
|
|
11
|
+
* ③ 复制成功与失败的提示 → 页面运行时 `buildSharedHelpersJs` 自带(本文件不产第二条提示通道)。
|
|
12
|
+
*
|
|
13
|
+
* 口径出处:照 `packages/skill-calorie/src/shared/copyArea.ts`(照结构,不照文件)。
|
|
14
|
+
* 两处按饼干的情形改了口径:
|
|
15
|
+
* - 卡路里的 `promptCopyArea` 走它包内的 `render/copy.js`(`copyActionHtml`,缺省文案是卡路里说法);
|
|
16
|
+
* 本件改走 base 现成组件的 `renderPreBlock({copyText})`——**不新增 base 组件、不动别包**,
|
|
17
|
+
* 复制按钮与逻辑全在 base 侧;
|
|
18
|
+
* - 日志第 3 段的库文件名**由调用方给**(`CopyLogInput.source`),共用件不取本包文件名
|
|
19
|
+
* (`docs/skills/skill-bill/t406-共用件依赖与提升改造清单.md` 第二节 `DB_FILENAME` 行)。
|
|
20
|
+
*/
|
|
21
|
+
import { renderCaliberLine, renderCopyBlock, renderEmptyBlock, renderPreBlock } from 'base-paint/blocks';
|
|
22
|
+
import { buildDataText, buildLogText } from 'base-paint';
|
|
23
|
+
/** 日志第 2 段(助手思考链):本仓页面一律由本地 CLI 渲染,不落 `(未知)` 占位。 */
|
|
24
|
+
const LOG_THINKING = '本页由本地渲染,无助手链';
|
|
25
|
+
/** 日志第 6 段(异常):正常产出即「无」。 */
|
|
26
|
+
const LOG_EXCEPTION = '无';
|
|
27
|
+
/** 复制区空态缺省句(三样全没给时出这一句、不出按钮——点了没反应的死按钮就是问题)。 */
|
|
28
|
+
const COPY_EMPTY_TEXT = '本页没有可复制的数据';
|
|
29
|
+
/** 本次执行时刻串(页面入参 `actionAt`/回执事实 `actionAt` 的**唯一定义地**):本地时钟 `YYYY-MM-DD HH:MM:SS`。
|
|
30
|
+
* 写域与查询域两张页都读它——搬迁前它分别是 `src/write/write.ts` 的文件级函数与查询域现取的钟,
|
|
31
|
+
* 第二个用法(查询域列表页,票 #411)长出来之后收成这一处;**取时钟仍在各域处理体那一步调它**,
|
|
32
|
+
* 共用位不自己在模块顶层取时钟(那样一次调用两次读数会不一致)。 */
|
|
33
|
+
export function actionStamp() {
|
|
34
|
+
return new Date().toISOString().slice(0, 19).replace('T', ' ');
|
|
35
|
+
}
|
|
36
|
+
/** 复制数据三格式菜单里三项的用途提示(纯文本/JSON/CSV,顺序=`COPY_FORMATS`)。
|
|
37
|
+
* 格式名保留(那是数据格式本来的样子,不是内部标识),只说清它拿去做什么。 */
|
|
38
|
+
const MENU_HINTS = ['纯文本 粘贴给助手或自己看', 'JSON 结构化存档', 'CSV 表格导入'];
|
|
39
|
+
/** 复制 prompt 区那段 prompt 的复制按钮动作号(固定一枚:同页只出一次 prompt 区)。
|
|
40
|
+
* 小标题缺省那句 `复制 prompt(必走)` 里的 `prompt` 不上屏(本轮整改)——改「复制给助手:这一句可以直接复制」
|
|
41
|
+
* (总则②:写清这块复制走给谁;仍含老字串,护栏不断言全等只认包含)。 */
|
|
42
|
+
const PROMPT_COPY_ACTION = 'ilife-copy-prompt';
|
|
43
|
+
const PROMPT_COPY_HINT = '复制给助手:这一句可以直接复制';
|
|
44
|
+
/** ① 复制 prompt 区:prompt 预览(`renderPreBlock`)+ 它自带的复制按钮。
|
|
45
|
+
* **`actionId` 必给**:公共层的 `renderPreBlock` 只在给了 `actionId` 时才渲染复制按钮
|
|
46
|
+
* (`packages/base-render/src/blocks.ts:729-736`),只给 `copyText` 会出一个「写着复制、其实没有按钮」的
|
|
47
|
+
* 有标签没按钮位——那正是本票线上实测发现的一处,本件补齐。
|
|
48
|
+
* 第二参可选:不给=小标题「复制给助手:这一句可以直接复制」;`null`=不出小标题;给字符串就用它。 */
|
|
49
|
+
export function promptCopyArea(prompt, label) {
|
|
50
|
+
const heading = label === undefined ? PROMPT_COPY_HINT : label;
|
|
51
|
+
return renderPreBlock({
|
|
52
|
+
...(heading === null ? {} : { label: heading }),
|
|
53
|
+
command: prompt,
|
|
54
|
+
actionId: PROMPT_COPY_ACTION,
|
|
55
|
+
copyText: prompt,
|
|
56
|
+
copyLabel: PROMPT_COPY_HINT,
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
/** ② 复制区:prompt/数据/日志给了什么出什么;三样全不给=一句空态、**不出按钮**。 */
|
|
60
|
+
export function copyArea(input) {
|
|
61
|
+
const parts = [];
|
|
62
|
+
const prompt = input.prompt;
|
|
63
|
+
if (typeof prompt === 'string') {
|
|
64
|
+
if (prompt !== '')
|
|
65
|
+
parts.push(promptCopyArea(prompt));
|
|
66
|
+
}
|
|
67
|
+
else if (prompt !== undefined && prompt.text !== '') {
|
|
68
|
+
parts.push(promptCopyArea(prompt.text, prompt.label ?? null));
|
|
69
|
+
}
|
|
70
|
+
if (input.data !== undefined || input.log !== undefined) {
|
|
71
|
+
parts.push(renderCopyBlock({
|
|
72
|
+
...(input.data === undefined ? {} : { dataFormats: formatsOf(input.data) }),
|
|
73
|
+
...(input.log === undefined ? {} : { logText: buildLogText(input.log) }),
|
|
74
|
+
}));
|
|
75
|
+
return parts.join('');
|
|
76
|
+
}
|
|
77
|
+
if (parts.length > 0)
|
|
78
|
+
return parts.join('');
|
|
79
|
+
return renderEmptyBlock({ text: input.emptyText ?? COPY_EMPTY_TEXT });
|
|
80
|
+
}
|
|
81
|
+
/** 数据位的那份数据 → 三种格式各算一份 + 菜单提示(`buildDataText` 是本仓复制文本的唯一出口)。
|
|
82
|
+
* 上级裁定第 2 条:复制载荷头行 `【bill · record.add】` 算上屏一并改——`text` 那份显式给 `title`,
|
|
83
|
+
* 不再让公共层按 `envelope.skill/key` 拼出命令名;`title` 只写用户说法,不带命令名与 `·`。 */
|
|
84
|
+
function formatsOf(data) {
|
|
85
|
+
const title = typeof data.title === 'string'
|
|
86
|
+
&& (data.title ?? '').trim() !== ''
|
|
87
|
+
? data.title
|
|
88
|
+
: '记账数据';
|
|
89
|
+
return {
|
|
90
|
+
text: buildDataText({ ...data, format: 'text', title }),
|
|
91
|
+
json: buildDataText({ ...data, format: 'json' }),
|
|
92
|
+
csv: buildDataText({ ...data, format: 'csv' }),
|
|
93
|
+
hints: MENU_HINTS,
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
/** ③ 复制日志的第 2–6 段入参:本页由哪条命令渲染、数据从哪来、写了多少行、什么时候。 */
|
|
97
|
+
export function copyLog(input) {
|
|
98
|
+
return {
|
|
99
|
+
thinking: LOG_THINKING,
|
|
100
|
+
dataStructure: input.source === undefined || input.source === '' ? COPY_EMPTY_TEXT : input.source,
|
|
101
|
+
callChain: input.detail === undefined || input.detail === '' ? input.command : input.command + ' | ' + input.detail,
|
|
102
|
+
timestamp: input.version === undefined || input.version === '' ? input.actionAt : input.actionAt + ' · 版本 ' + input.version,
|
|
103
|
+
exception: LOG_EXCEPTION,
|
|
104
|
+
};
|
|
105
|
+
}
|
|
106
|
+
/** 退出口那枚危险色出口标记的动作号。**故意不绑动作**:动作条场景按钮不带 `data-t`,点了不复制也不写库。 */
|
|
107
|
+
const EXIT_MARK_ACTION = 'ilife-exit-undo';
|
|
108
|
+
/** 退出口的标题与说明(本轮整改:`危险色出口` 是设计自指词,`restore` 是内部词,都不上屏)。
|
|
109
|
+
* t728:两句之间的 `;` 换成句号——分号在这里不是并列,是把两件事挤进一句的排版手法
|
|
110
|
+
* (用户逐字要求 5 点名的那类);拆成两句之后读法仍是「怎么做」+「撤销之后会怎样」。 */
|
|
111
|
+
const EXIT_TITLE = '想反悔(撤销这一笔)';
|
|
112
|
+
const EXIT_NOTE = '要撤销这一笔,点下面那颗「复制数据」,里面带着一句撤销的话。撤销之后记录还在,随时可以恢复。';
|
|
113
|
+
/** ④ 回执页退出口:危险色出口标记 + 一句去向说明(t407 根因整改二 D2 去重后)。
|
|
114
|
+
* 改前这里另带一枚「复制数据」(撤销指令直拷,`ilife-exit-undo-copy`)+ base #336
|
|
115
|
+
* 自动补的一枚置灰「复制日志」,与下面复制区那组「复制数据/复制日志」上下重复。
|
|
116
|
+
* 改后退出口只留标记与说明、不带任何复制按钮与 `data-t`;撤销指令走下面复制区那颗
|
|
117
|
+
* 「复制数据」(复制载荷里仍带可重跑命令,`data-t` 形状不动)。 */
|
|
118
|
+
export function undoExit(recordId) {
|
|
119
|
+
return renderCopyBlock({
|
|
120
|
+
title: EXIT_TITLE,
|
|
121
|
+
buttons: [{ label: '↩︎ 撤销这一笔', kind: 'red', actionId: EXIT_MARK_ACTION }],
|
|
122
|
+
}) + renderCaliberLine(EXIT_NOTE + '(记录编号 ' + recordId + ')');
|
|
123
|
+
}
|
|
124
|
+
//# sourceMappingURL=copyArea.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"copyArea.js","sourceRoot":"","sources":["../../src/shared/copyArea.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/** 只给日期不给时分秒时的缺省时刻(**唯一定义地**):`validateTime` 补出整串,页面侧的预填标注引这一份。
|
|
2
|
+
* 改这一条就是改全仓的缺省时刻,别处不得再写第二份 `12:00:00` 字面量。 */
|
|
3
|
+
export declare const DEFAULT_TIME_SUFFIX = "12:00:00";
|
|
4
|
+
/** 缺省时刻的整串形态:`YYYY-MM-DD` + 上面那份(页面文案与库内取值同一句)。 */
|
|
5
|
+
export declare function defaultTimeOn(date: string): string;
|
|
6
|
+
export declare const DATETIME_RE: RegExp;
|
|
7
|
+
export declare const DATE_RE: RegExp;
|
|
8
|
+
export declare const MONTH_RE: RegExp;
|
|
9
|
+
export declare function validateTime(raw: unknown): string;
|
|
10
|
+
export declare function normalizeDate(d: unknown, field?: string): string;
|
|
11
|
+
export declare function normalizeMonth(m: unknown, field?: string): string;
|
|
12
|
+
/** 查询某天的入参:不给/给空=今天(UTC 日);给了就归一(`YYYY-MM-DD` 三种写法都认)。 */
|
|
13
|
+
export declare function resolveQueryDate(params: Record<string, unknown>): string;
|
|
14
|
+
/** 区间的入参:`start`/`end` 同给;缺一即缺槽位阻断,起点晚于终点阻断。 */
|
|
15
|
+
export declare function resolveRange(params: Record<string, unknown>): {
|
|
16
|
+
start: string;
|
|
17
|
+
end: string;
|
|
18
|
+
};
|
|
19
|
+
/** 某个月的起止日(`YYYY-MM` → 该月 1 号到月末)。 */
|
|
20
|
+
export declare function monthRange(month: string): {
|
|
21
|
+
start: string;
|
|
22
|
+
end: string;
|
|
23
|
+
};
|
|
24
|
+
/** 昨天(本地日期串 `YYYY-MM-DD`)。 */
|
|
25
|
+
export declare function yesterdayStr(): string;
|
|
26
|
+
/** 本周(周一为第一天)的起止日。 */
|
|
27
|
+
export declare function weekRange(): {
|
|
28
|
+
start: string;
|
|
29
|
+
end: string;
|
|
30
|
+
};
|
|
31
|
+
//# sourceMappingURL=dateRange.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dateRange.d.ts","sourceRoot":"","sources":["../../src/shared/dateRange.ts"],"names":[],"mappings":"AAiBA;+CAC+C;AAC/C,eAAO,MAAM,mBAAmB,aAAa,CAAC;AAE9C,mDAAmD;AACnD,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAElD;AAED,eAAO,MAAM,WAAW,QAA2D,CAAC;AACpF,eAAO,MAAM,OAAO,QAAwB,CAAC;AAC7C,eAAO,MAAM,QAAQ,QAA4B,CAAC;AAQlD,wBAAgB,YAAY,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,CAajD;AAED,wBAAgB,aAAa,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,SAAS,GAAG,MAAM,CAUhE;AAED,wBAAgB,cAAc,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,SAAU,GAAG,MAAM,CAKlE;AAED,0DAA0D;AAC1D,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAMxE;AAED,gDAAgD;AAChD,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAQ5F;AAOD,sCAAsC;AACtC,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAKxE;AAED,8BAA8B;AAC9B,wBAAgB,YAAY,IAAI,MAAM,CAIrC;AAED,sBAAsB;AACtB,wBAAgB,SAAS,IAAI;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAM1D"}
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
/** 共用位·日期与时间窗口口径(#689 结构搬迁第三批):从 `src/policy/category.ts` 的日期函数
|
|
2
|
+
* + `src/policy/record.ts` 的日期与时间窗口两半合并而来——**一件一处**:日期串的归一、月份串的归一、
|
|
3
|
+
* 时刻的补齐,以及「某天/某周/某月/某区间」这些窗口算式都只在这里写一遍。
|
|
4
|
+
*
|
|
5
|
+
* 谁在用(指名,路径随 #689 搬迁改成新家):
|
|
6
|
+
* · `src/write/`——`record.ts`(`validateUpdateInput` 的 `validateTime`)·
|
|
7
|
+
* `prefillNote.ts`/`summaryRow.ts`(`DEFAULT_TIME_SUFFIX`/`defaultTimeOn`);
|
|
8
|
+
* · `src/query/read.ts`——查今天/查昨天(`resolveQueryDate`/`yesterdayStr`)、查区间(`resolveRange`)、
|
|
9
|
+
* 锚点归一(`normalizeDate`);
|
|
10
|
+
* · `src/analysis/`——`needMonth`/`needRange` 的 `normalizeMonth`/`normalizeDate`;
|
|
11
|
+
* · `src/goal/`——预算月份与目标截止日(`normalizeMonth`/`normalizeDate`);
|
|
12
|
+
* · `src/cli/cmd_read.ts`——未迁移的 analysis/goal 两族分支的 `monthRange`/`resolveRange`(外壳);
|
|
13
|
+
* · `src/shared/category.ts`——`validateRecord` 补时刻(`defaultTimeOn`/`validateTime`)。
|
|
14
|
+
* 两域以上在用它 ⇒ 住共用位(归属律 2)。日期函数**不是**按「单消费者」判的:它们是同一条口径的整族
|
|
15
|
+
* (`validateTime` 补出 `DEFAULT_TIME_SUFFIX`,页面侧预填标注引同一份),拆开就会各写一份时刻字面量。 */
|
|
16
|
+
import { BillPolicyError } from '../fetch/errors.js';
|
|
17
|
+
/** 只给日期不给时分秒时的缺省时刻(**唯一定义地**):`validateTime` 补出整串,页面侧的预填标注引这一份。
|
|
18
|
+
* 改这一条就是改全仓的缺省时刻,别处不得再写第二份 `12:00:00` 字面量。 */
|
|
19
|
+
export const DEFAULT_TIME_SUFFIX = '12:00:00';
|
|
20
|
+
/** 缺省时刻的整串形态:`YYYY-MM-DD` + 上面那份(页面文案与库内取值同一句)。 */
|
|
21
|
+
export function defaultTimeOn(date) {
|
|
22
|
+
return date + ' ' + DEFAULT_TIME_SUFFIX;
|
|
23
|
+
}
|
|
24
|
+
export const DATETIME_RE = /^(\d{4})-(\d{2})-(\d{2})(?: (\d{2}):(\d{2}):(\d{2}))?$/;
|
|
25
|
+
export const DATE_RE = /^\d{4}-\d{2}-\d{2}$/;
|
|
26
|
+
export const MONTH_RE = /^\d{4}-(0[1-9]|1[0-2])$/;
|
|
27
|
+
function realDate(y, m, d) {
|
|
28
|
+
const dt = new Date(y, m - 1, d);
|
|
29
|
+
return dt.getFullYear() === y && dt.getMonth() === m - 1 && dt.getDate() === d;
|
|
30
|
+
}
|
|
31
|
+
// 时间:YYYY-MM-DD HH:mm:ss 或 YYYY-MM-DD(补 12:00:00);非法阻断。
|
|
32
|
+
export function validateTime(raw) {
|
|
33
|
+
if (typeof raw !== 'string' || raw.trim().length === 0) {
|
|
34
|
+
throw new BillPolicyError('POLICY_BAD_TIME', 'time 不能为空');
|
|
35
|
+
}
|
|
36
|
+
const s = raw.trim().replace(/\//g, '-');
|
|
37
|
+
const m = DATETIME_RE.exec(s);
|
|
38
|
+
if (!m)
|
|
39
|
+
throw new BillPolicyError('POLICY_BAD_TIME', 'time 格式非法');
|
|
40
|
+
const y = Number(m[1]);
|
|
41
|
+
const mo = Number(m[2]);
|
|
42
|
+
const d = Number(m[3]);
|
|
43
|
+
if (!realDate(y, mo, d))
|
|
44
|
+
throw new BillPolicyError('POLICY_BAD_TIME', 'time 非真实日期');
|
|
45
|
+
if (m[4] === undefined)
|
|
46
|
+
return defaultTimeOn(s);
|
|
47
|
+
const hh = Number(m[4]);
|
|
48
|
+
const mm = Number(m[5]);
|
|
49
|
+
const ss = Number(m[6]);
|
|
50
|
+
if (hh > 23 || mm > 59 || ss > 59)
|
|
51
|
+
throw new BillPolicyError('POLICY_BAD_TIME', 'time 时分秒非法');
|
|
52
|
+
return s;
|
|
53
|
+
}
|
|
54
|
+
export function normalizeDate(d, field = 'date') {
|
|
55
|
+
if (typeof d !== 'string' || d.trim().length === 0) {
|
|
56
|
+
throw new BillPolicyError('POLICY_BAD_TIME', field + ' 须为日期字符串');
|
|
57
|
+
}
|
|
58
|
+
let s = d.trim().replace(/\//g, '-').replace(/\./g, '-');
|
|
59
|
+
if (/^\d{8}$/.test(s))
|
|
60
|
+
s = s.slice(0, 4) + '-' + s.slice(4, 6) + '-' + s.slice(6);
|
|
61
|
+
if (!DATE_RE.test(s))
|
|
62
|
+
throw new BillPolicyError('POLICY_BAD_TIME', field + ' 格式非法');
|
|
63
|
+
const parts2 = s.split('-').map(Number);
|
|
64
|
+
if (!realDate(parts2[0], parts2[1], parts2[2]))
|
|
65
|
+
throw new BillPolicyError('POLICY_BAD_TIME', field + ' 非真实日期');
|
|
66
|
+
return s;
|
|
67
|
+
}
|
|
68
|
+
export function normalizeMonth(m, field = 'month') {
|
|
69
|
+
if (typeof m !== 'string' || !MONTH_RE.test(m.trim())) {
|
|
70
|
+
throw new BillPolicyError('POLICY_BAD_TIME', field + ' 格式非法');
|
|
71
|
+
}
|
|
72
|
+
return m.trim();
|
|
73
|
+
}
|
|
74
|
+
/** 查询某天的入参:不给/给空=今天(UTC 日);给了就归一(`YYYY-MM-DD` 三种写法都认)。 */
|
|
75
|
+
export function resolveQueryDate(params) {
|
|
76
|
+
if (params.date === undefined || params.date === null || params.date === '') {
|
|
77
|
+
return new Date().toISOString().slice(0, 10);
|
|
78
|
+
}
|
|
79
|
+
if (typeof params.date !== 'string')
|
|
80
|
+
throw new BillPolicyError('POLICY_BAD_TIME', 'date 须为字符串');
|
|
81
|
+
return normalizeDate(params.date);
|
|
82
|
+
}
|
|
83
|
+
/** 区间的入参:`start`/`end` 同给;缺一即缺槽位阻断,起点晚于终点阻断。 */
|
|
84
|
+
export function resolveRange(params) {
|
|
85
|
+
if (params.start === undefined || params.end === undefined) {
|
|
86
|
+
throw new BillPolicyError('POLICY_MISSING_SLOT', '缺槽位 start/end(期望 YYYY-MM-DD)');
|
|
87
|
+
}
|
|
88
|
+
const start = normalizeDate(params.start, 'start');
|
|
89
|
+
const end = normalizeDate(params.end, 'end');
|
|
90
|
+
if (start > end)
|
|
91
|
+
throw new BillPolicyError('POLICY_BAD_INPUT', 'start 不得晚于 end:' + start + '~' + end);
|
|
92
|
+
return { start, end };
|
|
93
|
+
}
|
|
94
|
+
/* ── 时间窗口口径(**唯一定义地**,查询域与三个分析命令共用)─────────────────────
|
|
95
|
+
* 这三件原来住在 `src/cli/cmd_read.ts` 的文件级函数里:查询域搬迁(#411)时被两个去处同时需要——
|
|
96
|
+
* 查询的「查周/查月/查昨天」与分析的「看月度/看年度/看对比」——故按口径层的位置摆正;
|
|
97
|
+
* #689 第三批随 `policy/` 拆散落到本件(原来的出口 `src/policy/index.ts` 已删)。 */
|
|
98
|
+
/** 某个月的起止日(`YYYY-MM` → 该月 1 号到月末)。 */
|
|
99
|
+
export function monthRange(month) {
|
|
100
|
+
const [y, m] = month.split('-').map(Number);
|
|
101
|
+
const last = new Date(y, m, 0).getDate();
|
|
102
|
+
const dd = String(last).padStart(2, '0');
|
|
103
|
+
return { start: month + '-01', end: month + '-' + dd };
|
|
104
|
+
}
|
|
105
|
+
/** 昨天(本地日期串 `YYYY-MM-DD`)。 */
|
|
106
|
+
export function yesterdayStr() {
|
|
107
|
+
const d = new Date();
|
|
108
|
+
d.setDate(d.getDate() - 1);
|
|
109
|
+
return d.toISOString().slice(0, 10);
|
|
110
|
+
}
|
|
111
|
+
/** 本周(周一为第一天)的起止日。 */
|
|
112
|
+
export function weekRange() {
|
|
113
|
+
const now = new Date();
|
|
114
|
+
const day = (now.getDay() + 6) % 7;
|
|
115
|
+
const mon = new Date(now);
|
|
116
|
+
mon.setDate(now.getDate() - day);
|
|
117
|
+
const sun = new Date(mon);
|
|
118
|
+
sun.setDate(mon.getDate() + 6);
|
|
119
|
+
return { start: mon.toISOString().slice(0, 10), end: sun.toISOString().slice(0, 10) };
|
|
120
|
+
}
|
|
121
|
+
//# sourceMappingURL=dateRange.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dateRange.js","sourceRoot":"","sources":["../../src/shared/dateRange.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;2EAc2E;AAC3E,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAErD;+CAC+C;AAC/C,MAAM,CAAC,MAAM,mBAAmB,GAAG,UAAU,CAAC;AAE9C,mDAAmD;AACnD,MAAM,UAAU,aAAa,CAAC,IAAY;IACxC,OAAO,IAAI,GAAG,GAAG,GAAG,mBAAmB,CAAC;AAC1C,CAAC;AAED,MAAM,CAAC,MAAM,WAAW,GAAG,wDAAwD,CAAC;AACpF,MAAM,CAAC,MAAM,OAAO,GAAG,qBAAqB,CAAC;AAC7C,MAAM,CAAC,MAAM,QAAQ,GAAG,yBAAyB,CAAC;AAElD,SAAS,QAAQ,CAAC,CAAS,EAAE,CAAS,EAAE,CAAS;IAC/C,MAAM,EAAE,GAAG,IAAI,IAAI,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;IACjC,OAAO,EAAE,CAAC,WAAW,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,QAAQ,EAAE,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;AACjF,CAAC;AAED,wDAAwD;AACxD,MAAM,UAAU,YAAY,CAAC,GAAY;IACvC,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvD,MAAM,IAAI,eAAe,CAAC,iBAAiB,EAAE,WAAW,CAAC,CAAC;IAC5D,CAAC;IACD,MAAM,CAAC,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IACzC,MAAM,CAAC,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC9B,IAAI,CAAC,CAAC;QAAE,MAAM,IAAI,eAAe,CAAC,iBAAiB,EAAE,WAAW,CAAC,CAAC;IAClE,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAAC,MAAM,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAAC,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACxE,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;QAAE,MAAM,IAAI,eAAe,CAAC,iBAAiB,EAAE,YAAY,CAAC,CAAC;IACpF,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,SAAS;QAAE,OAAO,aAAa,CAAC,CAAC,CAAC,CAAC;IAChD,MAAM,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAAC,MAAM,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAAC,MAAM,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1E,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE;QAAE,MAAM,IAAI,eAAe,CAAC,iBAAiB,EAAE,YAAY,CAAC,CAAC;IAC9F,OAAO,CAAC,CAAC;AACX,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,CAAU,EAAE,KAAK,GAAG,MAAM;IACtD,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACnD,MAAM,IAAI,eAAe,CAAC,iBAAiB,EAAE,KAAK,GAAG,UAAU,CAAC,CAAC;IACnE,CAAC;IACD,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IACzD,IAAI,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;QAAE,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAClF,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;QAAE,MAAM,IAAI,eAAe,CAAC,iBAAiB,EAAE,KAAK,GAAG,OAAO,CAAC,CAAC;IACpF,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACxC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;QAAE,MAAM,IAAI,eAAe,CAAC,iBAAiB,EAAE,KAAK,GAAG,QAAQ,CAAC,CAAC;IAC/G,OAAO,CAAC,CAAC;AACX,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,CAAU,EAAE,KAAK,GAAG,OAAO;IACxD,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC;QACtD,MAAM,IAAI,eAAe,CAAC,iBAAiB,EAAE,KAAK,GAAG,OAAO,CAAC,CAAC;IAChE,CAAC;IACD,OAAQ,CAAY,CAAC,IAAI,EAAE,CAAC;AAC9B,CAAC;AAED,0DAA0D;AAC1D,MAAM,UAAU,gBAAgB,CAAC,MAA+B;IAC9D,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS,IAAI,MAAM,CAAC,IAAI,KAAK,IAAI,IAAI,MAAM,CAAC,IAAI,KAAK,EAAE,EAAE,CAAC;QAC5E,OAAO,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAC/C,CAAC;IACD,IAAI,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ;QAAE,MAAM,IAAI,eAAe,CAAC,iBAAiB,EAAE,YAAY,CAAC,CAAC;IAChG,OAAO,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AACpC,CAAC;AAED,gDAAgD;AAChD,MAAM,UAAU,YAAY,CAAC,MAA+B;IAC1D,IAAI,MAAM,CAAC,KAAK,KAAK,SAAS,IAAI,MAAM,CAAC,GAAG,KAAK,SAAS,EAAE,CAAC;QAC3D,MAAM,IAAI,eAAe,CAAC,qBAAqB,EAAE,8BAA8B,CAAC,CAAC;IACnF,CAAC;IACD,MAAM,KAAK,GAAG,aAAa,CAAC,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IACnD,MAAM,GAAG,GAAG,aAAa,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IAC7C,IAAI,KAAK,GAAG,GAAG;QAAE,MAAM,IAAI,eAAe,CAAC,kBAAkB,EAAE,iBAAiB,GAAG,KAAK,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC;IACtG,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;AACxB,CAAC;AAED;;;iEAGiE;AAEjE,sCAAsC;AACtC,MAAM,UAAU,UAAU,CAAC,KAAa;IACtC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAC5C,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;IACzC,MAAM,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IACzC,OAAO,EAAE,KAAK,EAAE,KAAK,GAAG,KAAK,EAAE,GAAG,EAAE,KAAK,GAAG,GAAG,GAAG,EAAE,EAAE,CAAC;AACzD,CAAC;AAED,8BAA8B;AAC9B,MAAM,UAAU,YAAY;IAC1B,MAAM,CAAC,GAAG,IAAI,IAAI,EAAE,CAAC;IACrB,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;IAC3B,OAAO,CAAC,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AACtC,CAAC;AAED,sBAAsB;AACtB,MAAM,UAAU,SAAS;IACvB,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;IACvB,MAAM,GAAG,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;IACnC,MAAM,GAAG,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC;IAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,GAAG,CAAC,CAAC;IAC5D,MAAM,GAAG,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC;IAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;IAC1D,OAAO,EAAE,KAAK,EAAE,GAAG,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;AACxF,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/** 整页装配的入参。 */
|
|
2
|
+
interface DocPageInput {
|
|
3
|
+
/** head 的 `<title>` 文本。 */
|
|
4
|
+
readonly docTitle: string;
|
|
5
|
+
/** 正文标题(页面模板的 H1)。 */
|
|
6
|
+
readonly title: string;
|
|
7
|
+
/** 正文眉标(空串=不写这一行)。 */
|
|
8
|
+
readonly eyebrow: string;
|
|
9
|
+
/** 正文副标题(空串=不写这一行)。 */
|
|
10
|
+
readonly subtitle: string;
|
|
11
|
+
/** 已组合好的区块 HTML。 */
|
|
12
|
+
readonly content: string;
|
|
13
|
+
}
|
|
14
|
+
/** 整页装配:区块 HTML + 标题三件套 → 完整文档(文档壳交公共层骨架件)。
|
|
15
|
+
*
|
|
16
|
+
* `pageUi: true` —— 本包 32 页走公共层页面级配方(#525);配套的样式段由本件拼进 `extraCss`
|
|
17
|
+
* (与卡路里同一条路:配方 CSS 走 `extraCss`,`blocksCss()` 仍走 `sharedCssText`)。
|
|
18
|
+
* 产出物有 `.ilife-page-ui` 根类与 `viewport-fit=cover` 两处可见证据,判据 9 的量测就量这两处。 */
|
|
19
|
+
export declare function assembleDocPage(input: DocPageInput): string;
|
|
20
|
+
export {};
|
|
21
|
+
//# sourceMappingURL=docPage.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"docPage.d.ts","sourceRoot":"","sources":["../../src/shared/docPage.ts"],"names":[],"mappings":"AA2BA,eAAe;AACf,UAAU,YAAY;IACpB,2BAA2B;IAC3B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,sBAAsB;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,sBAAsB;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,uBAAuB;IACvB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,oBAAoB;IACpB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AA+ED;;;;2EAI2E;AAC3E,wBAAgB,eAAe,CAAC,KAAK,EAAE,YAAY,GAAG,MAAM,CAc3D"}
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
/** 整页装配共用件:区块 HTML 拼成完整文档(最后一公里)。
|
|
2
|
+
*
|
|
3
|
+
* 谁在用(两个能力,指名):
|
|
4
|
+
* ① `src/write/`——写入域:结果型回执整页与过程型采集页;
|
|
5
|
+
* ② `src/query/`——查询域:通用查询列表页。
|
|
6
|
+
* 两域走的都是 `./pageShell.ts` 那一层,本件是它下面的文档装配层。
|
|
7
|
+
*
|
|
8
|
+
* 包裹约定(沿卡路里同件的 `docPage.ts`,不新增):
|
|
9
|
+
* 内容=`base-paint/blocks` 的区块;文档=`fillTemplate` 包裹(资产**裸文本**传入+由填充器包裹);
|
|
10
|
+
* `sharedCss = buildStyleSheet().css + blocksCss()`——**`blocksCss()` 必须拼进 `TemplateAssets.sharedCssText`**,
|
|
11
|
+
* 不得走 `StyleSheetInput.extraCss`(硬口径,见 `docs/skills/skill-bill/t406-base组件总表.md` 第 1.1 节 `blocksCss` 行)。
|
|
12
|
+
* **#725 起「文档壳」那一圈(doctype/head 三槽位序/资产拼接)搬去公共层 `base-paint/docShell` 的
|
|
13
|
+
* `renderDocShell`**——本件只留自己的页头语义(下面五个字段)+本包的三段补丁样式(走 `extraCss`),
|
|
14
|
+
* 拼好正文后交给骨架件;五个字段与 `pageShell.ts` 的调用点一行未动。
|
|
15
|
+
* 本文件不做取数、不装命令名与领域常量,只按参数拼页;零包内依赖(只 import `base-paint`)。
|
|
16
|
+
*
|
|
17
|
+
* **#728(写入域 32 页视觉整改)在本件改了三件事**:
|
|
18
|
+
* ① 打开公共层的**页面级配方** `pageUi`(#525)——安全区、44px 触摸区、≤640 单列与安全区内距、
|
|
19
|
+
* 页内导航横滑、KPI 两格、iOS 惯性滚动、≥1001 版心与正文列、参数表单桌面两列,全在那一处;
|
|
20
|
+
* ② 补丁样式按「**样式随它的选择器**」重排:目标选择器由公共层产出的规则迁回公共层
|
|
21
|
+
* (口径行的字面色值、越出圆角闭集的 10px),本件只留**本包自己产出**的那几条;
|
|
22
|
+
* ③ 桌面端不再由本件给「一条宽度补丁」——版心与分栏归 `pageUi` 的 ⑧ 段,本件只留一条表格宽度收口。
|
|
23
|
+
*/
|
|
24
|
+
import { pageUiCss } from 'base-paint';
|
|
25
|
+
import { renderPageShell } from 'base-paint/blocks';
|
|
26
|
+
import { renderDocShell } from 'base-paint/docShell';
|
|
27
|
+
/** 桌面端补丁(t407 根因整改二 D1;t728 收窄)。
|
|
28
|
+
*
|
|
29
|
+
* t728 为什么收窄到只剩一条:改前本段还写着「内容列放宽到 1120px」与「卡片网格换大格」,
|
|
30
|
+
* 那是**桌面端只有一条宽度补丁、没有版式**的来源(#728 诊断 R5:1200 以下没有专门版式;
|
|
31
|
+
* 1120 的内容列里仍是单列长条,右侧一片空白)。现在版心(1280)与正文列(880)+栅格+
|
|
32
|
+
* 宽屏表单两列都由公共层配方 `pageUi` 的 ⑧/⑪ 段出,本包不再各写一条宽度数字。
|
|
33
|
+
*
|
|
34
|
+
* 唯一留下的一条:公共层 `.ilife-block-data-table` 锁着 `max-width:680px` 居中,880 正文列下
|
|
35
|
+
* 右约 100px 留白(t403 视觉验收 D1 的同一处);那个选择器由公共层产出、但**只在本包这两域**
|
|
36
|
+
* 需要放开(公共层自己在别的调用点仍要 680 的窄表),故按「样式随它的选择器」的例外档留在这里,
|
|
37
|
+
* 并且**只写选择器与属性、零字面色值、零新断点**(1200 是仓内既有值)。 */
|
|
38
|
+
const DESKTOP_CSS = [
|
|
39
|
+
'/* t728:桌面端表格用满正文列(只 1200px 以上生效,手机端不动) */',
|
|
40
|
+
'@media (min-width:1200px) {',
|
|
41
|
+
' .ilife-block-page-shell .ilife-block-data-table { max-width: none; }',
|
|
42
|
+
'}',
|
|
43
|
+
].join('\n');
|
|
44
|
+
/** 手机端黑底说明块补丁(t407 第 3 轮返工 B;与上面 D1 同一处、同一条路)。
|
|
45
|
+
*
|
|
46
|
+
* 块是 `base-paint` 的 `renderToast` 那一条(`.ilife-toast`):左栏标题(「…标签流转:这一笔打…」,
|
|
47
|
+
* 窄栏里折成两到三行)+ 右栏标签胶囊(永远一行)。实测毛病两处:
|
|
48
|
+
* ① 两栏不等高——标题折了行、胶囊只有一行,整条横幅一边高一边矮(评审判「栏高不齐把整页拖重」);
|
|
49
|
+
* ② 行距偏紧——标题行贴着下面那几行说明,只隔 2px。
|
|
50
|
+
* 只动呈现:两栏拉到同高(`stretch` + 胶囊内的字居中对齐)、标题与说明的行距统一到 1.5 以上、
|
|
51
|
+
* 标题行与说明之间留 6px。文字、块序、复制载荷一处不动。
|
|
52
|
+
* t728:圆角从 `10px` 收到**闭集里的 `999px`**(`{8,14,20,999}` 之外的值是 R4 那类「同一语义多名值」;
|
|
53
|
+
* 这是一枚标签胶囊,999 与全仓胶囊同一档)。 */
|
|
54
|
+
const TOAST_CSS = [
|
|
55
|
+
'/* t407-r3 B:黑底说明块(.ilife-toast)两栏等高+行距 */',
|
|
56
|
+
'.ilife-toast { line-height: 1.5; }',
|
|
57
|
+
'.ilife-toast-title-row { flex-wrap: nowrap; align-items: stretch; margin-bottom: 6px; }',
|
|
58
|
+
'.ilife-toast-title-row > .ilife-toast-title { flex: 1 1 auto; min-width: 0; margin-bottom: 0; line-height: 1.5; }',
|
|
59
|
+
'.ilife-toast-title-row > .ilife-toast-chip { flex: 0 0 auto; display: inline-flex; align-items: center; justify-content: center; border-radius: 999px; }',
|
|
60
|
+
'.ilife-toast-lines { line-height: 1.6; }',
|
|
61
|
+
].join('\n');
|
|
62
|
+
/** 查询详情移动版式(t403-P2:只 640px 以下生效,桌面端不动)。
|
|
63
|
+
*
|
|
64
|
+
* 为什么落在本件:详情字段表(字段/值两列)在窄屏行卡化时会逐行重复表头标签
|
|
65
|
+
* (t403 视觉验收 D2);`renderDataTable` 的 `data-label` 恒取列头、无逐行标签选项,
|
|
66
|
+
* 唯一的落点就是本件交 `extraCss` 的这一处(与上面 DESKTOP/TOAST 同一条路)。
|
|
67
|
+
* 桌面端(≥641px)只见表格、移动端(≤640px)只见键值列表——两者由 `display` 切换,
|
|
68
|
+
* 每端恰出一套(读屏器同 CSS 一起切,不存在两套同读);打印走桌面那一套。
|
|
69
|
+
* t728:分隔线由字面色值 `rgba(210, 210, 215, .6)` 换成 token `var(--line)`——
|
|
70
|
+
* 判据 1 改口径后要求「补丁零字面色值」;同一个值在公共层已有一处定义(`LINE_RGB`),
|
|
71
|
+
* 本包不再抄第二份。 */
|
|
72
|
+
const KV_CSS = [
|
|
73
|
+
'/* t403-P2:详情键值列表(桌面藏,移动端替表格) */',
|
|
74
|
+
'.ilife-query-kv-list { display: none; }',
|
|
75
|
+
'@media (max-width:640px) {',
|
|
76
|
+
' .ilife-query-kv-table { display: none; }',
|
|
77
|
+
' .ilife-query-kv-list { display: block; margin: 16px 0; border: 1px solid var(--line); border-radius: 14px; background: var(--card); }',
|
|
78
|
+
' .ilife-query-kv-list > div { display: flex; align-items: baseline; justify-content: space-between; gap: 2px 10px; padding: 8px 12px; border-top: 1px solid var(--line); }',
|
|
79
|
+
' .ilife-query-kv-list > div:first-child { border-top: 0; }',
|
|
80
|
+
' .ilife-query-kv-list dt { flex: none; color: var(--fg3); font-size: 11.5px; font-weight: 600; }',
|
|
81
|
+
' .ilife-query-kv-list dd { margin: 0; color: var(--fg); font-size: 12px; text-align: right; overflow-wrap: anywhere; }',
|
|
82
|
+
'}',
|
|
83
|
+
].join('\n');
|
|
84
|
+
/** 退出口单钮独占整行(t410 终审 n20:撤销页「撤销这一笔」在 390 下实测 175px 半宽)。
|
|
85
|
+
*
|
|
86
|
+
* 根因在公共层(`base-render` 的 `.ilife-action-row` 恒两列,单钮只占半格),落点只能是本件
|
|
87
|
+
* 交 `extraCss` 的这一处(与上面 DESKTOP/TOAST/KV 同一条路)。只收退出口那一格
|
|
88
|
+
* (`copyArea.ts` 的 `undoExit`,动作号 `ilife-exit-undo`):该格恒只有一颗红钮,
|
|
89
|
+
* 把它所在行的列改成单列;页上别的动作行(两颗复制按钮平分的那种)一行不动。桌面端同形
|
|
90
|
+
* (危险动作独占一行,本就是层级所需)。`:has` 不支持时回退到半宽,不比改前差。 */
|
|
91
|
+
const EXIT_CSS = [
|
|
92
|
+
'/* t410:退出口单钮独占整行(只收 ilife-exit-undo 这一格) */',
|
|
93
|
+
'.ilife-block-copy-block:has([data-action-id="ilife-exit-undo"]) .ilife-action-row {',
|
|
94
|
+
' grid-template-columns: 1fr;',
|
|
95
|
+
'}',
|
|
96
|
+
'.ilife-block-copy-block:has([data-action-id="ilife-exit-undo"]) .ilife-action-btn {',
|
|
97
|
+
' width: 100%;',
|
|
98
|
+
'}',
|
|
99
|
+
].join('\n');
|
|
100
|
+
/** 整页装配:区块 HTML + 标题三件套 → 完整文档(文档壳交公共层骨架件)。
|
|
101
|
+
*
|
|
102
|
+
* `pageUi: true` —— 本包 32 页走公共层页面级配方(#525);配套的样式段由本件拼进 `extraCss`
|
|
103
|
+
* (与卡路里同一条路:配方 CSS 走 `extraCss`,`blocksCss()` 仍走 `sharedCssText`)。
|
|
104
|
+
* 产出物有 `.ilife-page-ui` 根类与 `viewport-fit=cover` 两处可见证据,判据 9 的量测就量这两处。 */
|
|
105
|
+
export function assembleDocPage(input) {
|
|
106
|
+
const body = renderPageShell({
|
|
107
|
+
title: input.title,
|
|
108
|
+
...(input.eyebrow ? { eyebrow: input.eyebrow } : {}),
|
|
109
|
+
...(input.subtitle ? { subtitle: input.subtitle } : {}),
|
|
110
|
+
content: input.content,
|
|
111
|
+
});
|
|
112
|
+
return renderDocShell({
|
|
113
|
+
docTitle: input.docTitle,
|
|
114
|
+
bodyHtml: body,
|
|
115
|
+
extraCss: [DESKTOP_CSS, TOAST_CSS, KV_CSS, EXIT_CSS, pageUiCss()].join('\n'),
|
|
116
|
+
doctypeCase: 'upper',
|
|
117
|
+
pageUi: true,
|
|
118
|
+
});
|
|
119
|
+
}
|
|
120
|
+
//# sourceMappingURL=docPage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"docPage.js","sourceRoot":"","sources":["../../src/shared/docPage.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAgBrD;;;;;;;;;;8CAU8C;AAC9C,MAAM,WAAW,GAAG;IAClB,4CAA4C;IAC5C,6BAA6B;IAC7B,wEAAwE;IACxE,GAAG;CACJ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAEb;;;;;;;;;8BAS8B;AAC9B,MAAM,SAAS,GAAG;IAChB,4CAA4C;IAC5C,oCAAoC;IACpC,yFAAyF;IACzF,mHAAmH;IACnH,0JAA0J;IAC1J,0CAA0C;CAC3C,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAEb;;;;;;;;;gBASgB;AAChB,MAAM,MAAM,GAAG;IACb,kCAAkC;IAClC,yCAAyC;IACzC,4BAA4B;IAC5B,4CAA4C;IAC5C,yIAAyI;IACzI,6KAA6K;IAC7K,6DAA6D;IAC7D,mGAAmG;IACnG,yHAAyH;IACzH,GAAG;CACJ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAEb;;;;;;iDAMiD;AACjD,MAAM,QAAQ,GAAG;IACf,8CAA8C;IAC9C,qFAAqF;IACrF,+BAA+B;IAC/B,GAAG;IACH,qFAAqF;IACrF,gBAAgB;IAChB,GAAG;CACJ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAEb;;;;2EAI2E;AAC3E,MAAM,UAAU,eAAe,CAAC,KAAmB;IACjD,MAAM,IAAI,GAAG,eAAe,CAAC;QAC3B,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACpD,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACvD,OAAO,EAAE,KAAK,CAAC,OAAO;KACvB,CAAC,CAAC;IACH,OAAO,cAAc,CAAC;QACpB,QAAQ,EAAE,KAAK,CAAC,QAAQ;QACxB,QAAQ,EAAE,IAAI;QACd,QAAQ,EAAE,CAAC,WAAW,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;QAC5E,WAAW,EAAE,OAAO;QACpB,MAAM,EAAE,IAAI;KACb,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/** 共用位·收支口径(KPI)(#689 结构搬迁第三批:从 `src/render/views.ts` 拆来)。
|
|
2
|
+
* KPI(转账除外):count/expense/income/net 全 number。
|
|
3
|
+
*
|
|
4
|
+
* `isTransfer`(转账不入收支统计:账本 `转账` 或分类 `转账/*`)**必须与本件的 `calcKpi` 同住一件**——
|
|
5
|
+
* 它是这条口径的唯一判地,`calcKpi`/`calcCategories`/`buildOverview`/`buildTrend` 四处都走它;
|
|
6
|
+
* 各写一份「算不算转账」就是两套口径(#683 §3.9)。
|
|
7
|
+
*
|
|
8
|
+
* 谁在用(指名):
|
|
9
|
+
* · `src/query/read.ts`——四条查询命令的 KPI 胶囊与查分类的占比(`calcKpi`);
|
|
10
|
+
* · `src/analysis/views.ts`——分类聚合/总览/对比/趋势(`calcKpi` + `isTransfer`)。
|
|
11
|
+
* 两域在用它 ⇒ 住共用位(归属律 2)。 */
|
|
12
|
+
import type { BillRow } from '../fetch/db.js';
|
|
13
|
+
/** 这一行算不算转账(转账是同一笔钱换口袋,不入收支统计,余额另计)。 */
|
|
14
|
+
export declare function isTransfer(r: BillRow): boolean;
|
|
15
|
+
export declare function calcKpi(records: BillRow[]): {
|
|
16
|
+
count: number;
|
|
17
|
+
expense: number;
|
|
18
|
+
income: number;
|
|
19
|
+
net: number;
|
|
20
|
+
};
|
|
21
|
+
//# sourceMappingURL=kpi.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"kpi.d.ts","sourceRoot":"","sources":["../../src/shared/kpi.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;2BAU2B;AAC3B,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAE9C,wCAAwC;AACxC,wBAAgB,UAAU,CAAC,CAAC,EAAE,OAAO,GAAG,OAAO,CAE9C;AAGD,wBAAgB,OAAO,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAU3G"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/** 这一行算不算转账(转账是同一笔钱换口袋,不入收支统计,余额另计)。 */
|
|
2
|
+
export function isTransfer(r) {
|
|
3
|
+
return r.ledger === '转账' || r.category.startsWith('转账/');
|
|
4
|
+
}
|
|
5
|
+
// KPI(转账除外):count/expense/income/net 全 number。
|
|
6
|
+
export function calcKpi(records) {
|
|
7
|
+
const real = records.filter((r) => !isTransfer(r));
|
|
8
|
+
let expense = 0;
|
|
9
|
+
let income = 0;
|
|
10
|
+
for (const r of real) {
|
|
11
|
+
if (r.amount < 0)
|
|
12
|
+
expense += Math.abs(r.amount);
|
|
13
|
+
else
|
|
14
|
+
income += r.amount;
|
|
15
|
+
}
|
|
16
|
+
expense = Math.round(expense * 100) / 100;
|
|
17
|
+
income = Math.round(income * 100) / 100;
|
|
18
|
+
return { count: real.length, expense, income, net: Math.round((income - expense) * 100) / 100 };
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=kpi.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"kpi.js","sourceRoot":"","sources":["../../src/shared/kpi.ts"],"names":[],"mappings":"AAaA,wCAAwC;AACxC,MAAM,UAAU,UAAU,CAAC,CAAU;IACnC,OAAO,CAAC,CAAC,MAAM,KAAK,IAAI,IAAI,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;AAC3D,CAAC;AAED,+CAA+C;AAC/C,MAAM,UAAU,OAAO,CAAC,OAAkB;IACxC,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;IACnD,IAAI,OAAO,GAAG,CAAC,CAAC;IAAC,IAAI,MAAM,GAAG,CAAC,CAAC;IAChC,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;QACrB,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC;YAAE,OAAO,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;;YAC3C,MAAM,IAAI,CAAC,CAAC,MAAM,CAAC;IAC1B,CAAC;IACD,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;IAC1C,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;IACxC,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,OAAO,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,EAAE,CAAC;AAClG,CAAC"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/** 页面三个公共标识 + 场景名(**唯一定义地**):文档版本/技能名/页面标题/`sceneKeyOf`。
|
|
2
|
+
* 整页装配的调用方与复制日志都读它,别处只引用、不另写这几个字面量(同一件事实两处就会走散)。
|
|
3
|
+
*
|
|
4
|
+
* 谁在用(两个能力,指名):
|
|
5
|
+
* ① `src/write/`——写入域:结果型回执整页与过程型采集页的 envelope 三字段(其中 `key` 过 `sceneKeyOf`)、
|
|
6
|
+
* 复制日志版本、页标题前缀;`src/shared/writeParts.ts` 的 `writeSection` 取技能名做 `data-skill`;
|
|
7
|
+
* ② `src/query/`——查询域:通用查询列表页的同一批取值(envelope 三字段、复制日志版本、页标题前缀)。
|
|
8
|
+
* 两域的页面内置 envelope 都拿本件的 `sceneKeyOf` 把对外命令名收成场景名(`bill.record.today` → `record.today`),
|
|
9
|
+
* 公共层的日志场景标识再与技能名拼回整名。
|
|
10
|
+
*
|
|
11
|
+
* 为什么另立一件:这三个取值是「页面是谁」那件活,与回执事实、`<section>` 段不是同一件事——
|
|
12
|
+
* 混在 `./writeParts.ts` 里会把那份的对外名字顶过五个(铁律五)。
|
|
13
|
+
*/
|
|
14
|
+
/** 文档版本(envelope 的 `version`,也是复制日志第 5 段后半)。 */
|
|
15
|
+
export declare const DOC_VERSION = "0.1.0";
|
|
16
|
+
/** 技能名(envelope 的 `skill`,也是 `<section>` 上 `data-skill` 的取值)。 */
|
|
17
|
+
export declare const DOC_SKILL = "bill";
|
|
18
|
+
/** 技能名(对外名;也是文档标题的站点名那一半,拼法见 `docTitleOf`)。 */
|
|
19
|
+
export declare const DOC_TITLE = "\u997C\u5E72\u8BB0\u8D26";
|
|
20
|
+
/** 文档标题(`<title>` 的文本):`<这一页是什么> - <技能名>`。**本件是唯一拼法**。
|
|
21
|
+
*
|
|
22
|
+
* 为什么不是 `技能名·这一页`(t728 逐页判红的写法):`·` 是**并列分隔符**,按 `#728` 的验收口径
|
|
23
|
+
* (用户逐字要求:「当一个内容需要通过 `;`/`|`/`·` 分割时代表需要进行 UI 上的设计」)
|
|
24
|
+
* 出现在可见文本里即算设计债。而文档标题里的「页名 + 站点名」**不是并列内容**——它就是标题写法
|
|
25
|
+
* 本身(先这一页是什么、再用连字符收站点名),故按标题惯例排,而不是拿并列符去串。
|
|
26
|
+
* 文档标题住 `<head>`、不进正文版面,因此这里只守标题写法,不参与页内版式。
|
|
27
|
+
* 一处定义:页名由调用方给(这一页是什么),站点名取本件的 `DOC_TITLE`;页名空白=只出站点名。 */
|
|
28
|
+
export declare function docTitleOf(what: string): string;
|
|
29
|
+
/** 页面内置 envelope 的 `key`(=**场景名**,技能内的本地名)。
|
|
30
|
+
*
|
|
31
|
+
* 为什么不是对外命令名:公共层的日志第 1 段(`scene`)由 envelope 派生,形如 `{skill}.{key}`
|
|
32
|
+
* (`packages/base-render/src/text.ts:296-298` 的 `sceneText`)——`skill` 已是 `bill`,
|
|
33
|
+
* 这里再写一条带 `bill.` 前缀的整名,日志就会印成 `bill.bill.record.add`(两处都重复一遍)。
|
|
34
|
+
* 本件按公共层的分工收口:**页面内置 envelope 的 key=本地场景名**(`bill.record.add` → `record.add`),
|
|
35
|
+
* `skill` + `key` 拼起来正好是对外命令名;`<section data-key>` **同写场景名**(R4 收口:`bill.` 只许出现在
|
|
36
|
+
* 复制载荷区,页面标记一律不带技能前缀),两处一个值,不再各写各的。
|
|
37
|
+
*/
|
|
38
|
+
export declare function sceneKeyOf(key: string): string;
|
|
39
|
+
//# sourceMappingURL=pageIdentity.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pageIdentity.d.ts","sourceRoot":"","sources":["../../src/shared/pageIdentity.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,gDAAgD;AAChD,eAAO,MAAM,WAAW,UAAU,CAAC;AAEnC,iEAAiE;AACjE,eAAO,MAAM,SAAS,SAAS,CAAC;AAEhC,+CAA+C;AAC/C,eAAO,MAAM,SAAS,6BAAS,CAAC;AAEhC;;;;;;;2DAO2D;AAC3D,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAG/C;AAED;;;;;;;;GAQG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAG9C"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/** 页面三个公共标识 + 场景名(**唯一定义地**):文档版本/技能名/页面标题/`sceneKeyOf`。
|
|
2
|
+
* 整页装配的调用方与复制日志都读它,别处只引用、不另写这几个字面量(同一件事实两处就会走散)。
|
|
3
|
+
*
|
|
4
|
+
* 谁在用(两个能力,指名):
|
|
5
|
+
* ① `src/write/`——写入域:结果型回执整页与过程型采集页的 envelope 三字段(其中 `key` 过 `sceneKeyOf`)、
|
|
6
|
+
* 复制日志版本、页标题前缀;`src/shared/writeParts.ts` 的 `writeSection` 取技能名做 `data-skill`;
|
|
7
|
+
* ② `src/query/`——查询域:通用查询列表页的同一批取值(envelope 三字段、复制日志版本、页标题前缀)。
|
|
8
|
+
* 两域的页面内置 envelope 都拿本件的 `sceneKeyOf` 把对外命令名收成场景名(`bill.record.today` → `record.today`),
|
|
9
|
+
* 公共层的日志场景标识再与技能名拼回整名。
|
|
10
|
+
*
|
|
11
|
+
* 为什么另立一件:这三个取值是「页面是谁」那件活,与回执事实、`<section>` 段不是同一件事——
|
|
12
|
+
* 混在 `./writeParts.ts` 里会把那份的对外名字顶过五个(铁律五)。
|
|
13
|
+
*/
|
|
14
|
+
/** 文档版本(envelope 的 `version`,也是复制日志第 5 段后半)。 */
|
|
15
|
+
export const DOC_VERSION = '0.1.0';
|
|
16
|
+
/** 技能名(envelope 的 `skill`,也是 `<section>` 上 `data-skill` 的取值)。 */
|
|
17
|
+
export const DOC_SKILL = 'bill';
|
|
18
|
+
/** 技能名(对外名;也是文档标题的站点名那一半,拼法见 `docTitleOf`)。 */
|
|
19
|
+
export const DOC_TITLE = '饼干记账';
|
|
20
|
+
/** 文档标题(`<title>` 的文本):`<这一页是什么> - <技能名>`。**本件是唯一拼法**。
|
|
21
|
+
*
|
|
22
|
+
* 为什么不是 `技能名·这一页`(t728 逐页判红的写法):`·` 是**并列分隔符**,按 `#728` 的验收口径
|
|
23
|
+
* (用户逐字要求:「当一个内容需要通过 `;`/`|`/`·` 分割时代表需要进行 UI 上的设计」)
|
|
24
|
+
* 出现在可见文本里即算设计债。而文档标题里的「页名 + 站点名」**不是并列内容**——它就是标题写法
|
|
25
|
+
* 本身(先这一页是什么、再用连字符收站点名),故按标题惯例排,而不是拿并列符去串。
|
|
26
|
+
* 文档标题住 `<head>`、不进正文版面,因此这里只守标题写法,不参与页内版式。
|
|
27
|
+
* 一处定义:页名由调用方给(这一页是什么),站点名取本件的 `DOC_TITLE`;页名空白=只出站点名。 */
|
|
28
|
+
export function docTitleOf(what) {
|
|
29
|
+
const page = what.trim();
|
|
30
|
+
return page === '' ? DOC_TITLE : page + ' - ' + DOC_TITLE;
|
|
31
|
+
}
|
|
32
|
+
/** 页面内置 envelope 的 `key`(=**场景名**,技能内的本地名)。
|
|
33
|
+
*
|
|
34
|
+
* 为什么不是对外命令名:公共层的日志第 1 段(`scene`)由 envelope 派生,形如 `{skill}.{key}`
|
|
35
|
+
* (`packages/base-render/src/text.ts:296-298` 的 `sceneText`)——`skill` 已是 `bill`,
|
|
36
|
+
* 这里再写一条带 `bill.` 前缀的整名,日志就会印成 `bill.bill.record.add`(两处都重复一遍)。
|
|
37
|
+
* 本件按公共层的分工收口:**页面内置 envelope 的 key=本地场景名**(`bill.record.add` → `record.add`),
|
|
38
|
+
* `skill` + `key` 拼起来正好是对外命令名;`<section data-key>` **同写场景名**(R4 收口:`bill.` 只许出现在
|
|
39
|
+
* 复制载荷区,页面标记一律不带技能前缀),两处一个值,不再各写各的。
|
|
40
|
+
*/
|
|
41
|
+
export function sceneKeyOf(key) {
|
|
42
|
+
const prefix = DOC_SKILL + '.';
|
|
43
|
+
return key.startsWith(prefix) ? key.slice(prefix.length) : key;
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=pageIdentity.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pageIdentity.js","sourceRoot":"","sources":["../../src/shared/pageIdentity.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,gDAAgD;AAChD,MAAM,CAAC,MAAM,WAAW,GAAG,OAAO,CAAC;AAEnC,iEAAiE;AACjE,MAAM,CAAC,MAAM,SAAS,GAAG,MAAM,CAAC;AAEhC,+CAA+C;AAC/C,MAAM,CAAC,MAAM,SAAS,GAAG,MAAM,CAAC;AAEhC;;;;;;;2DAO2D;AAC3D,MAAM,UAAU,UAAU,CAAC,IAAY;IACrC,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;IACzB,OAAO,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,GAAG,KAAK,GAAG,SAAS,CAAC;AAC5D,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,UAAU,CAAC,GAAW;IACpC,MAAM,MAAM,GAAG,SAAS,GAAG,GAAG,CAAC;IAC/B,OAAO,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;AACjE,CAAC"}
|