skill-home 0.3.33 → 0.3.52
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/package.json +3 -3
- package/templates/space/fixed_spot.html +1 -1
- package/templates/space/location_manage.html +1 -1
- package/dist/cli/cmd_read.d.ts +0 -3
- package/dist/cli/cmd_read.d.ts.map +0 -1
- package/dist/cli/cmd_read.js +0 -304
- package/dist/cli/cmd_read.js.map +0 -1
- package/dist/cli/config.d.ts +0 -20
- package/dist/cli/config.d.ts.map +0 -1
- package/dist/cli/config.js +0 -100
- package/dist/cli/config.js.map +0 -1
- package/dist/cli/health.d.ts +0 -7
- package/dist/cli/health.d.ts.map +0 -1
- package/dist/cli/health.js +0 -32
- package/dist/cli/health.js.map +0 -1
- package/dist/cli/keys.d.ts +0 -4
- package/dist/cli/keys.d.ts.map +0 -1
- package/dist/cli/keys.js +0 -55
- package/dist/cli/keys.js.map +0 -1
- package/dist/cli/registry.d.ts +0 -4
- package/dist/cli/registry.d.ts.map +0 -1
- package/dist/cli/registry.js +0 -32
- package/dist/cli/registry.js.map +0 -1
- package/dist/config.d.ts +0 -53
- package/dist/config.d.ts.map +0 -1
- package/dist/config.js +0 -122
- package/dist/config.js.map +0 -1
- package/dist/data/commands.d.ts +0 -11
- package/dist/data/commands.d.ts.map +0 -1
- package/dist/data/commands.js +0 -7
- package/dist/data/commands.js.map +0 -1
- package/dist/data/index.d.ts +0 -3
- package/dist/data/index.d.ts.map +0 -1
- package/dist/data/index.js +0 -4
- package/dist/data/index.js.map +0 -1
- package/dist/data/query.d.ts +0 -23
- package/dist/data/query.d.ts.map +0 -1
- package/dist/data/query.js +0 -19
- package/dist/data/query.js.map +0 -1
- package/dist/data/routes.d.ts +0 -3
- package/dist/data/routes.d.ts.map +0 -1
- package/dist/data/routes.js +0 -2
- package/dist/data/routes.js.map +0 -1
- package/dist/data/schema.d.ts +0 -15
- package/dist/data/schema.d.ts.map +0 -1
- package/dist/data/schema.js +0 -18
- package/dist/data/schema.js.map +0 -1
- package/dist/data/tables.d.ts +0 -48
- package/dist/data/tables.d.ts.map +0 -1
- package/dist/data/tables.js +0 -82
- package/dist/data/tables.js.map +0 -1
- package/dist/express/commands.d.ts +0 -3
- package/dist/express/commands.d.ts.map +0 -1
- package/dist/express/commands.js +0 -6
- package/dist/express/commands.js.map +0 -1
- package/dist/express/index.d.ts +0 -3
- package/dist/express/index.d.ts.map +0 -1
- package/dist/express/index.js +0 -4
- package/dist/express/index.js.map +0 -1
- package/dist/express/pages/express.d.ts +0 -24
- package/dist/express/pages/express.d.ts.map +0 -1
- package/dist/express/pages/express.js +0 -160
- package/dist/express/pages/express.js.map +0 -1
- package/dist/express/pages/list.d.ts +0 -24
- package/dist/express/pages/list.d.ts.map +0 -1
- package/dist/express/pages/list.js +0 -167
- package/dist/express/pages/list.js.map +0 -1
- package/dist/express/pages/missing.d.ts +0 -24
- package/dist/express/pages/missing.d.ts.map +0 -1
- package/dist/express/pages/missing.js +0 -146
- package/dist/express/pages/missing.js.map +0 -1
- package/dist/express/pages/stock.d.ts +0 -24
- package/dist/express/pages/stock.d.ts.map +0 -1
- package/dist/express/pages/stock.js +0 -176
- package/dist/express/pages/stock.js.map +0 -1
- package/dist/express/routes.d.ts +0 -3
- package/dist/express/routes.d.ts.map +0 -1
- package/dist/express/routes.js +0 -8
- package/dist/express/routes.js.map +0 -1
- package/dist/express/shopping.d.ts +0 -4
- package/dist/express/shopping.d.ts.map +0 -1
- package/dist/express/shopping.js +0 -145
- package/dist/express/shopping.js.map +0 -1
- package/dist/family/care.d.ts +0 -4
- package/dist/family/care.d.ts.map +0 -1
- package/dist/family/care.js +0 -103
- package/dist/family/care.js.map +0 -1
- package/dist/family/commands.d.ts +0 -3
- package/dist/family/commands.d.ts.map +0 -1
- package/dist/family/commands.js +0 -6
- package/dist/family/commands.js.map +0 -1
- package/dist/family/index.d.ts +0 -3
- package/dist/family/index.d.ts.map +0 -1
- package/dist/family/index.js +0 -4
- package/dist/family/index.js.map +0 -1
- package/dist/family/pages/family_borrow.d.ts +0 -24
- package/dist/family/pages/family_borrow.d.ts.map +0 -1
- package/dist/family/pages/family_borrow.js +0 -267
- package/dist/family/pages/family_borrow.js.map +0 -1
- package/dist/family/pages/family_members.d.ts +0 -24
- package/dist/family/pages/family_members.d.ts.map +0 -1
- package/dist/family/pages/family_members.js +0 -171
- package/dist/family/pages/family_members.js.map +0 -1
- package/dist/family/routes.d.ts +0 -3
- package/dist/family/routes.d.ts.map +0 -1
- package/dist/family/routes.js +0 -20
- package/dist/family/routes.js.map +0 -1
- package/dist/fetch/archive.d.ts +0 -13
- package/dist/fetch/archive.d.ts.map +0 -1
- package/dist/fetch/archive.js +0 -115
- package/dist/fetch/archive.js.map +0 -1
- package/dist/fetch/backup.d.ts +0 -75
- package/dist/fetch/backup.d.ts.map +0 -1
- package/dist/fetch/backup.js +0 -285
- package/dist/fetch/backup.js.map +0 -1
- package/dist/fetch/db.d.ts +0 -107
- package/dist/fetch/db.d.ts.map +0 -1
- package/dist/fetch/db.js +0 -443
- package/dist/fetch/db.js.map +0 -1
- package/dist/fetch/domains.d.ts +0 -151
- package/dist/fetch/domains.d.ts.map +0 -1
- package/dist/fetch/domains.js +0 -354
- package/dist/fetch/domains.js.map +0 -1
- package/dist/fetch/errors.d.ts +0 -11
- package/dist/fetch/errors.d.ts.map +0 -1
- package/dist/fetch/errors.js +0 -18
- package/dist/fetch/errors.js.map +0 -1
- package/dist/fetch/index.d.ts +0 -11
- package/dist/fetch/index.d.ts.map +0 -1
- package/dist/fetch/index.js +0 -14
- package/dist/fetch/index.js.map +0 -1
- package/dist/fetch/masterKey.d.ts +0 -11
- package/dist/fetch/masterKey.d.ts.map +0 -1
- package/dist/fetch/masterKey.js +0 -46
- package/dist/fetch/masterKey.js.map +0 -1
- package/dist/fetch/paths.d.ts +0 -55
- package/dist/fetch/paths.d.ts.map +0 -1
- package/dist/fetch/paths.js +0 -100
- package/dist/fetch/paths.js.map +0 -1
- package/dist/health.d.ts +0 -50
- package/dist/health.d.ts.map +0 -1
- package/dist/health.js +0 -524
- package/dist/health.js.map +0 -1
- package/dist/help/helpAssets.d.ts +0 -52
- package/dist/help/helpAssets.d.ts.map +0 -1
- package/dist/help/helpAssets.js +0 -2323
- package/dist/help/helpAssets.js.map +0 -1
- package/dist/help/helpFile.d.ts +0 -62
- package/dist/help/helpFile.d.ts.map +0 -1
- package/dist/help/helpFile.js +0 -219
- package/dist/help/helpFile.js.map +0 -1
- package/dist/help/index.d.ts +0 -6
- package/dist/help/index.d.ts.map +0 -1
- package/dist/help/index.js +0 -8
- package/dist/help/index.js.map +0 -1
- package/dist/help/lookup.d.ts +0 -11
- package/dist/help/lookup.d.ts.map +0 -1
- package/dist/help/lookup.js +0 -52
- package/dist/help/lookup.js.map +0 -1
- package/dist/help/manifest.d.ts +0 -17
- package/dist/help/manifest.d.ts.map +0 -1
- package/dist/help/manifest.js +0 -44
- package/dist/help/manifest.js.map +0 -1
- package/dist/help/output.d.ts +0 -12
- package/dist/help/output.d.ts.map +0 -1
- package/dist/help/output.js +0 -65
- package/dist/help/output.js.map +0 -1
- package/dist/index.d.ts +0 -5
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js +0 -6
- package/dist/index.js.map +0 -1
- package/dist/items/add.d.ts +0 -3
- package/dist/items/add.d.ts.map +0 -1
- package/dist/items/add.js +0 -34
- package/dist/items/add.js.map +0 -1
- package/dist/items/commands.d.ts +0 -3
- package/dist/items/commands.d.ts.map +0 -1
- package/dist/items/commands.js +0 -22
- package/dist/items/commands.js.map +0 -1
- package/dist/items/detail.d.ts +0 -3
- package/dist/items/detail.d.ts.map +0 -1
- package/dist/items/detail.js +0 -31
- package/dist/items/detail.js.map +0 -1
- package/dist/items/index.d.ts +0 -3
- package/dist/items/index.d.ts.map +0 -1
- package/dist/items/index.js +0 -4
- package/dist/items/index.js.map +0 -1
- package/dist/items/inventory.d.ts +0 -4
- package/dist/items/inventory.d.ts.map +0 -1
- package/dist/items/inventory.js +0 -63
- package/dist/items/inventory.js.map +0 -1
- package/dist/items/pages/add_form.d.ts +0 -24
- package/dist/items/pages/add_form.d.ts.map +0 -1
- package/dist/items/pages/add_form.js +0 -174
- package/dist/items/pages/add_form.js.map +0 -1
- package/dist/items/pages/browse.d.ts +0 -24
- package/dist/items/pages/browse.d.ts.map +0 -1
- package/dist/items/pages/browse.js +0 -143
- package/dist/items/pages/browse.js.map +0 -1
- package/dist/items/pages/category_manage.d.ts +0 -24
- package/dist/items/pages/category_manage.d.ts.map +0 -1
- package/dist/items/pages/category_manage.js +0 -153
- package/dist/items/pages/category_manage.js.map +0 -1
- package/dist/items/pages/confirm.d.ts +0 -24
- package/dist/items/pages/confirm.d.ts.map +0 -1
- package/dist/items/pages/confirm.js +0 -149
- package/dist/items/pages/confirm.js.map +0 -1
- package/dist/items/pages/detail.d.ts +0 -24
- package/dist/items/pages/detail.d.ts.map +0 -1
- package/dist/items/pages/detail.js +0 -160
- package/dist/items/pages/detail.js.map +0 -1
- package/dist/items/pages/duplicates.d.ts +0 -24
- package/dist/items/pages/duplicates.d.ts.map +0 -1
- package/dist/items/pages/duplicates.js +0 -138
- package/dist/items/pages/duplicates.js.map +0 -1
- package/dist/items/pages/history.d.ts +0 -24
- package/dist/items/pages/history.d.ts.map +0 -1
- package/dist/items/pages/history.js +0 -213
- package/dist/items/pages/history.js.map +0 -1
- package/dist/items/pages/inventory_diff.d.ts +0 -24
- package/dist/items/pages/inventory_diff.d.ts.map +0 -1
- package/dist/items/pages/inventory_diff.js +0 -126
- package/dist/items/pages/inventory_diff.js.map +0 -1
- package/dist/items/pages/inventory_records.d.ts +0 -24
- package/dist/items/pages/inventory_records.d.ts.map +0 -1
- package/dist/items/pages/inventory_records.js +0 -147
- package/dist/items/pages/inventory_records.js.map +0 -1
- package/dist/items/pages/inventory_round.d.ts +0 -24
- package/dist/items/pages/inventory_round.d.ts.map +0 -1
- package/dist/items/pages/inventory_round.js +0 -145
- package/dist/items/pages/inventory_round.js.map +0 -1
- package/dist/items/pages/locate.d.ts +0 -24
- package/dist/items/pages/locate.d.ts.map +0 -1
- package/dist/items/pages/locate.js +0 -129
- package/dist/items/pages/locate.js.map +0 -1
- package/dist/items/pages/move_checklist.d.ts +0 -24
- package/dist/items/pages/move_checklist.d.ts.map +0 -1
- package/dist/items/pages/move_checklist.js +0 -112
- package/dist/items/pages/move_checklist.js.map +0 -1
- package/dist/items/pages/photo_wall.d.ts +0 -24
- package/dist/items/pages/photo_wall.d.ts.map +0 -1
- package/dist/items/pages/photo_wall.js +0 -145
- package/dist/items/pages/photo_wall.js.map +0 -1
- package/dist/items/pages/photos.d.ts +0 -24
- package/dist/items/pages/photos.d.ts.map +0 -1
- package/dist/items/pages/photos.js +0 -182
- package/dist/items/pages/photos.js.map +0 -1
- package/dist/items/pages/receipt.d.ts +0 -24
- package/dist/items/pages/receipt.d.ts.map +0 -1
- package/dist/items/pages/receipt.js +0 -252
- package/dist/items/pages/receipt.js.map +0 -1
- package/dist/items/pages/relations.d.ts +0 -24
- package/dist/items/pages/relations.d.ts.map +0 -1
- package/dist/items/pages/relations.js +0 -144
- package/dist/items/pages/relations.js.map +0 -1
- package/dist/items/pages/search_list.d.ts +0 -24
- package/dist/items/pages/search_list.d.ts.map +0 -1
- package/dist/items/pages/search_list.js +0 -133
- package/dist/items/pages/search_list.js.map +0 -1
- package/dist/items/pages/tag_manage.d.ts +0 -24
- package/dist/items/pages/tag_manage.d.ts.map +0 -1
- package/dist/items/pages/tag_manage.js +0 -238
- package/dist/items/pages/tag_manage.js.map +0 -1
- package/dist/items/pages/undo_select.d.ts +0 -24
- package/dist/items/pages/undo_select.d.ts.map +0 -1
- package/dist/items/pages/undo_select.js +0 -143
- package/dist/items/pages/undo_select.js.map +0 -1
- package/dist/items/routes.d.ts +0 -3
- package/dist/items/routes.d.ts.map +0 -1
- package/dist/items/routes.js +0 -62
- package/dist/items/routes.js.map +0 -1
- package/dist/items/search.d.ts +0 -3
- package/dist/items/search.d.ts.map +0 -1
- package/dist/items/search.js +0 -47
- package/dist/items/search.js.map +0 -1
- package/dist/items/tag.d.ts +0 -25
- package/dist/items/tag.d.ts.map +0 -1
- package/dist/items/tag.js +0 -147
- package/dist/items/tag.js.map +0 -1
- package/dist/items/update.d.ts +0 -20
- package/dist/items/update.d.ts.map +0 -1
- package/dist/items/update.js +0 -211
- package/dist/items/update.js.map +0 -1
- package/dist/outfit/commands.d.ts +0 -3
- package/dist/outfit/commands.d.ts.map +0 -1
- package/dist/outfit/commands.js +0 -7
- package/dist/outfit/commands.js.map +0 -1
- package/dist/outfit/index.d.ts +0 -3
- package/dist/outfit/index.d.ts.map +0 -1
- package/dist/outfit/index.js +0 -4
- package/dist/outfit/index.js.map +0 -1
- package/dist/outfit/outfit.d.ts +0 -3
- package/dist/outfit/outfit.d.ts.map +0 -1
- package/dist/outfit/outfit.js +0 -187
- package/dist/outfit/outfit.js.map +0 -1
- package/dist/outfit/pages/outfit_picker.d.ts +0 -24
- package/dist/outfit/pages/outfit_picker.d.ts.map +0 -1
- package/dist/outfit/pages/outfit_picker.js +0 -185
- package/dist/outfit/pages/outfit_picker.js.map +0 -1
- package/dist/outfit/pages/travel_trip.d.ts +0 -24
- package/dist/outfit/pages/travel_trip.d.ts.map +0 -1
- package/dist/outfit/pages/travel_trip.js +0 -185
- package/dist/outfit/pages/travel_trip.js.map +0 -1
- package/dist/outfit/pages/trip_outfit_plan.d.ts +0 -24
- package/dist/outfit/pages/trip_outfit_plan.d.ts.map +0 -1
- package/dist/outfit/pages/trip_outfit_plan.js +0 -173
- package/dist/outfit/pages/trip_outfit_plan.js.map +0 -1
- package/dist/outfit/pages/wardrobe_analyze.d.ts +0 -24
- package/dist/outfit/pages/wardrobe_analyze.d.ts.map +0 -1
- package/dist/outfit/pages/wardrobe_analyze.js +0 -171
- package/dist/outfit/pages/wardrobe_analyze.js.map +0 -1
- package/dist/outfit/pages/wardrobe_season.d.ts +0 -24
- package/dist/outfit/pages/wardrobe_season.d.ts.map +0 -1
- package/dist/outfit/pages/wardrobe_season.js +0 -167
- package/dist/outfit/pages/wardrobe_season.js.map +0 -1
- package/dist/outfit/routes.d.ts +0 -3
- package/dist/outfit/routes.d.ts.map +0 -1
- package/dist/outfit/routes.js +0 -9
- package/dist/outfit/routes.js.map +0 -1
- package/dist/outfit/trip.d.ts +0 -3
- package/dist/outfit/trip.d.ts.map +0 -1
- package/dist/outfit/trip.js +0 -59
- package/dist/outfit/trip.js.map +0 -1
- package/dist/output.d.ts +0 -13
- package/dist/output.d.ts.map +0 -1
- package/dist/output.js +0 -57
- package/dist/output.js.map +0 -1
- package/dist/policy/care.d.ts +0 -4
- package/dist/policy/care.d.ts.map +0 -1
- package/dist/policy/care.js +0 -12
- package/dist/policy/care.js.map +0 -1
- package/dist/policy/category.d.ts +0 -8
- package/dist/policy/category.d.ts.map +0 -1
- package/dist/policy/category.js +0 -44
- package/dist/policy/category.js.map +0 -1
- package/dist/policy/index.d.ts +0 -9
- package/dist/policy/index.d.ts.map +0 -1
- package/dist/policy/index.js +0 -6
- package/dist/policy/index.js.map +0 -1
- package/dist/policy/item.d.ts +0 -18
- package/dist/policy/item.d.ts.map +0 -1
- package/dist/policy/item.js +0 -81
- package/dist/policy/item.js.map +0 -1
- package/dist/policy/routes.generated.d.ts +0 -3
- package/dist/policy/routes.generated.d.ts.map +0 -1
- package/dist/policy/routes.generated.js +0 -128
- package/dist/policy/routes.generated.js.map +0 -1
- package/dist/policy/ticket.d.ts +0 -6
- package/dist/policy/ticket.d.ts.map +0 -1
- package/dist/policy/ticket.js +0 -25
- package/dist/policy/ticket.js.map +0 -1
- package/dist/policy/wakewords.d.ts +0 -16
- package/dist/policy/wakewords.d.ts.map +0 -1
- package/dist/policy/wakewords.js +0 -38
- package/dist/policy/wakewords.js.map +0 -1
- package/dist/receipt/commands.d.ts +0 -3
- package/dist/receipt/commands.d.ts.map +0 -1
- package/dist/receipt/commands.js +0 -6
- package/dist/receipt/commands.js.map +0 -1
- package/dist/receipt/index.d.ts +0 -3
- package/dist/receipt/index.d.ts.map +0 -1
- package/dist/receipt/index.js +0 -4
- package/dist/receipt/index.js.map +0 -1
- package/dist/receipt/pages/accounts.d.ts +0 -24
- package/dist/receipt/pages/accounts.d.ts.map +0 -1
- package/dist/receipt/pages/accounts.js +0 -217
- package/dist/receipt/pages/accounts.js.map +0 -1
- package/dist/receipt/pages/certificates.d.ts +0 -24
- package/dist/receipt/pages/certificates.d.ts.map +0 -1
- package/dist/receipt/pages/certificates.js +0 -231
- package/dist/receipt/pages/certificates.js.map +0 -1
- package/dist/receipt/pages/purchase_records.d.ts +0 -24
- package/dist/receipt/pages/purchase_records.d.ts.map +0 -1
- package/dist/receipt/pages/purchase_records.js +0 -267
- package/dist/receipt/pages/purchase_records.js.map +0 -1
- package/dist/receipt/pages/warranty.d.ts +0 -24
- package/dist/receipt/pages/warranty.d.ts.map +0 -1
- package/dist/receipt/pages/warranty.js +0 -142
- package/dist/receipt/pages/warranty.js.map +0 -1
- package/dist/receipt/routes.d.ts +0 -3
- package/dist/receipt/routes.d.ts.map +0 -1
- package/dist/receipt/routes.js +0 -21
- package/dist/receipt/routes.js.map +0 -1
- package/dist/receipt/ticket.d.ts +0 -4
- package/dist/receipt/ticket.d.ts.map +0 -1
- package/dist/receipt/ticket.js +0 -282
- package/dist/receipt/ticket.js.map +0 -1
- package/dist/render/copyArea.d.ts +0 -64
- package/dist/render/copyArea.d.ts.map +0 -1
- package/dist/render/copyArea.js +0 -196
- package/dist/render/copyArea.js.map +0 -1
- package/dist/render/envelope.d.ts +0 -6
- package/dist/render/envelope.d.ts.map +0 -1
- package/dist/render/envelope.js +0 -42
- package/dist/render/envelope.js.map +0 -1
- package/dist/render/errors.d.ts +0 -5
- package/dist/render/errors.d.ts.map +0 -1
- package/dist/render/errors.js +0 -10
- package/dist/render/errors.js.map +0 -1
- package/dist/render/familyPage.d.ts +0 -20
- package/dist/render/familyPage.d.ts.map +0 -1
- package/dist/render/familyPage.js +0 -106
- package/dist/render/familyPage.js.map +0 -1
- package/dist/render/html.d.ts +0 -16
- package/dist/render/html.d.ts.map +0 -1
- package/dist/render/html.js +0 -135
- package/dist/render/html.js.map +0 -1
- package/dist/render/index.d.ts +0 -14
- package/dist/render/index.d.ts.map +0 -1
- package/dist/render/index.js +0 -13
- package/dist/render/index.js.map +0 -1
- package/dist/render/pageFamilies.d.ts +0 -8
- package/dist/render/pageFamilies.d.ts.map +0 -1
- package/dist/render/pageFamilies.js +0 -169
- package/dist/render/pageFamilies.js.map +0 -1
- package/dist/render/pager.d.ts +0 -9
- package/dist/render/pager.d.ts.map +0 -1
- package/dist/render/pager.js +0 -56
- package/dist/render/pager.js.map +0 -1
- package/dist/render/sceneNaming.d.ts +0 -14
- package/dist/render/sceneNaming.d.ts.map +0 -1
- package/dist/render/sceneNaming.js +0 -173
- package/dist/render/sceneNaming.js.map +0 -1
- package/dist/render/templates.d.ts +0 -5
- package/dist/render/templates.d.ts.map +0 -1
- package/dist/render/templates.js +0 -68
- package/dist/render/templates.js.map +0 -1
- package/dist/render/views.d.ts +0 -115
- package/dist/render/views.d.ts.map +0 -1
- package/dist/render/views.js +0 -81
- package/dist/render/views.js.map +0 -1
- package/dist/setup/commands.d.ts +0 -3
- package/dist/setup/commands.d.ts.map +0 -1
- package/dist/setup/commands.js +0 -9
- package/dist/setup/commands.js.map +0 -1
- package/dist/setup/index.d.ts +0 -3
- package/dist/setup/index.d.ts.map +0 -1
- package/dist/setup/index.js +0 -4
- package/dist/setup/index.js.map +0 -1
- package/dist/setup/pages/backup_receipt.d.ts +0 -24
- package/dist/setup/pages/backup_receipt.d.ts.map +0 -1
- package/dist/setup/pages/backup_receipt.js +0 -198
- package/dist/setup/pages/backup_receipt.js.map +0 -1
- package/dist/setup/pages/first_use_wizard.d.ts +0 -24
- package/dist/setup/pages/first_use_wizard.d.ts.map +0 -1
- package/dist/setup/pages/first_use_wizard.js +0 -169
- package/dist/setup/pages/first_use_wizard.js.map +0 -1
- package/dist/setup/pages/health_report.d.ts +0 -24
- package/dist/setup/pages/health_report.d.ts.map +0 -1
- package/dist/setup/pages/health_report.js +0 -152
- package/dist/setup/pages/health_report.js.map +0 -1
- package/dist/setup/pages/import_restore.d.ts +0 -24
- package/dist/setup/pages/import_restore.d.ts.map +0 -1
- package/dist/setup/pages/import_restore.js +0 -179
- package/dist/setup/pages/import_restore.js.map +0 -1
- package/dist/setup/routes.d.ts +0 -3
- package/dist/setup/routes.d.ts.map +0 -1
- package/dist/setup/routes.js +0 -2
- package/dist/setup/routes.js.map +0 -1
- package/dist/shared/commandSpec.d.ts +0 -34
- package/dist/shared/commandSpec.d.ts.map +0 -1
- package/dist/shared/commandSpec.js +0 -8
- package/dist/shared/commandSpec.js.map +0 -1
- package/dist/shared/fail.d.ts +0 -4
- package/dist/shared/fail.d.ts.map +0 -1
- package/dist/shared/fail.js +0 -16
- package/dist/shared/fail.js.map +0 -1
- package/dist/shared/params.d.ts +0 -4
- package/dist/shared/params.d.ts.map +0 -1
- package/dist/shared/params.js +0 -31
- package/dist/shared/params.js.map +0 -1
- package/dist/space/commands.d.ts +0 -3
- package/dist/space/commands.d.ts.map +0 -1
- package/dist/space/commands.js +0 -6
- package/dist/space/commands.js.map +0 -1
- package/dist/space/index.d.ts +0 -3
- package/dist/space/index.d.ts.map +0 -1
- package/dist/space/index.js +0 -4
- package/dist/space/index.js.map +0 -1
- package/dist/space/location.d.ts +0 -82
- package/dist/space/location.d.ts.map +0 -1
- package/dist/space/location.js +0 -324
- package/dist/space/location.js.map +0 -1
- package/dist/space/pages/fixed_spot.d.ts +0 -24
- package/dist/space/pages/fixed_spot.d.ts.map +0 -1
- package/dist/space/pages/fixed_spot.js +0 -122
- package/dist/space/pages/fixed_spot.js.map +0 -1
- package/dist/space/pages/location_manage.d.ts +0 -24
- package/dist/space/pages/location_manage.d.ts.map +0 -1
- package/dist/space/pages/location_manage.js +0 -182
- package/dist/space/pages/location_manage.js.map +0 -1
- package/dist/space/pages/space_view.d.ts +0 -24
- package/dist/space/pages/space_view.d.ts.map +0 -1
- package/dist/space/pages/space_view.js +0 -185
- package/dist/space/pages/space_view.js.map +0 -1
- package/dist/space/pages/suggest_storage.d.ts +0 -24
- package/dist/space/pages/suggest_storage.d.ts.map +0 -1
- package/dist/space/pages/suggest_storage.js +0 -179
- package/dist/space/pages/suggest_storage.js.map +0 -1
- package/dist/space/routes.d.ts +0 -3
- package/dist/space/routes.d.ts.map +0 -1
- package/dist/space/routes.js +0 -24
- package/dist/space/routes.js.map +0 -1
- package/dist/stats/commands.d.ts +0 -3
- package/dist/stats/commands.d.ts.map +0 -1
- package/dist/stats/commands.js +0 -6
- package/dist/stats/commands.js.map +0 -1
- package/dist/stats/index.d.ts +0 -3
- package/dist/stats/index.d.ts.map +0 -1
- package/dist/stats/index.js +0 -4
- package/dist/stats/index.js.map +0 -1
- package/dist/stats/pages/expiring.d.ts +0 -24
- package/dist/stats/pages/expiring.d.ts.map +0 -1
- package/dist/stats/pages/expiring.js +0 -220
- package/dist/stats/pages/expiring.js.map +0 -1
- package/dist/stats/pages/idle.d.ts +0 -24
- package/dist/stats/pages/idle.d.ts.map +0 -1
- package/dist/stats/pages/idle.js +0 -181
- package/dist/stats/pages/idle.js.map +0 -1
- package/dist/stats/pages/inventory_stat.d.ts +0 -24
- package/dist/stats/pages/inventory_stat.d.ts.map +0 -1
- package/dist/stats/pages/inventory_stat.js +0 -165
- package/dist/stats/pages/inventory_stat.js.map +0 -1
- package/dist/stats/pages/overview.d.ts +0 -24
- package/dist/stats/pages/overview.d.ts.map +0 -1
- package/dist/stats/pages/overview.js +0 -238
- package/dist/stats/pages/overview.js.map +0 -1
- package/dist/stats/routes.d.ts +0 -3
- package/dist/stats/routes.d.ts.map +0 -1
- package/dist/stats/routes.js +0 -16
- package/dist/stats/routes.js.map +0 -1
- package/dist/stats/stats.d.ts +0 -4
- package/dist/stats/stats.d.ts.map +0 -1
- package/dist/stats/stats.js +0 -92
- package/dist/stats/stats.js.map +0 -1
package/dist/fetch/db.js
DELETED
|
@@ -1,443 +0,0 @@
|
|
|
1
|
-
// 取数层·sqlite DB:老家 scripts/home_manager/db.py 对应。
|
|
2
|
-
// 基础 5 表 + D1 9 域表,幂等建表 + 8 顶级种子;缺失/损坏大声失败,不返空。
|
|
3
|
-
// 真实数据禁迁:仅 fresh DB(测试 tmp 隔离由 paths.ts 守卫)。
|
|
4
|
-
import { createCipheriv, createDecipheriv, randomBytes, scryptSync } from 'node:crypto';
|
|
5
|
-
import { DatabaseSync } from 'node:sqlite';
|
|
6
|
-
import { HomeFetchError } from './errors.js';
|
|
7
|
-
export const SCHEMA_VERSION = 1;
|
|
8
|
-
const TOPS = [
|
|
9
|
-
'食物与饮品', '衣物与穿戴', '家居与陈设', '工具与器材',
|
|
10
|
-
'数码与电子', '健康与医药', '文体与娱乐', '资产与凭证',
|
|
11
|
-
];
|
|
12
|
-
function exec(db, sql) {
|
|
13
|
-
db.exec(sql);
|
|
14
|
-
}
|
|
15
|
-
export function openHomeDb(dbPath) {
|
|
16
|
-
if (typeof dbPath !== 'string' || dbPath.length === 0) {
|
|
17
|
-
throw new HomeFetchError('HOME_DB_MISSING', '居家 DB 路径未指定');
|
|
18
|
-
}
|
|
19
|
-
let db;
|
|
20
|
-
try {
|
|
21
|
-
db = new DatabaseSync(dbPath);
|
|
22
|
-
}
|
|
23
|
-
catch (e) {
|
|
24
|
-
throw new HomeFetchError('HOME_DB_UNREADABLE', '居家 DB 打不开:' + dbPath, { cause: e });
|
|
25
|
-
}
|
|
26
|
-
let initialized = false;
|
|
27
|
-
try {
|
|
28
|
-
db.exec('PRAGMA journal_mode=WAL');
|
|
29
|
-
db.exec('PRAGMA busy_timeout=5000');
|
|
30
|
-
db.exec('PRAGMA foreign_keys=ON');
|
|
31
|
-
const before = db.prepare("SELECT count(*) AS c FROM sqlite_master WHERE type='table'").get().c;
|
|
32
|
-
exec(db, `CREATE TABLE IF NOT EXISTS items (
|
|
33
|
-
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
34
|
-
name TEXT NOT NULL, category TEXT, category_id INTEGER REFERENCES categories(id),
|
|
35
|
-
owner TEXT DEFAULT '使用者', purchase_price REAL, remark TEXT, photo TEXT,
|
|
36
|
-
access_count INTEGER NOT NULL DEFAULT 0, last_accessed_at TEXT,
|
|
37
|
-
fixed_location TEXT, created_at TEXT DEFAULT CURRENT_TIMESTAMP, updated_at TEXT DEFAULT CURRENT_TIMESTAMP
|
|
38
|
-
)`);
|
|
39
|
-
exec(db, `CREATE TABLE IF NOT EXISTS item_locations (
|
|
40
|
-
id INTEGER PRIMARY KEY AUTOINCREMENT, item_id INTEGER NOT NULL REFERENCES items(id) ON DELETE CASCADE,
|
|
41
|
-
location TEXT NOT NULL, quantity INTEGER NOT NULL DEFAULT 1, reason TEXT,
|
|
42
|
-
location_status TEXT NOT NULL DEFAULT '在家', purchase_date TEXT, expiration_date TEXT,
|
|
43
|
-
created_at TEXT DEFAULT CURRENT_TIMESTAMP, updated_at TEXT DEFAULT CURRENT_TIMESTAMP
|
|
44
|
-
)`);
|
|
45
|
-
exec(db, `CREATE TABLE IF NOT EXISTS item_tags (
|
|
46
|
-
id INTEGER PRIMARY KEY AUTOINCREMENT, item_id INTEGER NOT NULL REFERENCES items(id) ON DELETE CASCADE,
|
|
47
|
-
tag TEXT NOT NULL, UNIQUE(item_id, tag)
|
|
48
|
-
)`);
|
|
49
|
-
exec(db, `CREATE TABLE IF NOT EXISTS categories (
|
|
50
|
-
id INTEGER PRIMARY KEY AUTOINCREMENT, parent_id INTEGER REFERENCES categories(id) ON DELETE RESTRICT,
|
|
51
|
-
name TEXT NOT NULL, description TEXT, sort_order INTEGER DEFAULT 0, is_active INTEGER DEFAULT 1,
|
|
52
|
-
seed_key TEXT, created_at TEXT DEFAULT CURRENT_TIMESTAMP, updated_at TEXT DEFAULT CURRENT_TIMESTAMP
|
|
53
|
-
)`);
|
|
54
|
-
exec(db, `CREATE TABLE IF NOT EXISTS accounts (
|
|
55
|
-
id INTEGER PRIMARY KEY AUTOINCREMENT, platform TEXT UNIQUE NOT NULL,
|
|
56
|
-
username TEXT NOT NULL DEFAULT '', encrypted_password TEXT NOT NULL DEFAULT '',
|
|
57
|
-
type TEXT NOT NULL DEFAULT '其他', created_at TEXT DEFAULT CURRENT_TIMESTAMP, updated_at TEXT DEFAULT CURRENT_TIMESTAMP
|
|
58
|
-
)`);
|
|
59
|
-
exec(db, `CREATE TABLE IF NOT EXISTS purchase_records (
|
|
60
|
-
id INTEGER PRIMARY KEY AUTOINCREMENT, item_id INTEGER REFERENCES items(id) ON DELETE SET NULL,
|
|
61
|
-
date TEXT NOT NULL, price REAL, channel TEXT, scene TEXT,
|
|
62
|
-
created_at TEXT DEFAULT CURRENT_TIMESTAMP
|
|
63
|
-
)`);
|
|
64
|
-
exec(db, `CREATE TABLE IF NOT EXISTS warranties (
|
|
65
|
-
id INTEGER PRIMARY KEY AUTOINCREMENT, item_id INTEGER REFERENCES items(id) ON DELETE CASCADE,
|
|
66
|
-
kind TEXT NOT NULL DEFAULT '保修', start_date TEXT NOT NULL, duration_days INTEGER NOT NULL,
|
|
67
|
-
scene TEXT, created_at TEXT DEFAULT CURRENT_TIMESTAMP
|
|
68
|
-
)`);
|
|
69
|
-
exec(db, `CREATE TABLE IF NOT EXISTS service_events (
|
|
70
|
-
id INTEGER PRIMARY KEY AUTOINCREMENT, warranty_id INTEGER NOT NULL REFERENCES warranties(id) ON DELETE CASCADE,
|
|
71
|
-
date TEXT NOT NULL, cost REAL, scene TEXT, created_at TEXT DEFAULT CURRENT_TIMESTAMP
|
|
72
|
-
)`);
|
|
73
|
-
exec(db, `CREATE TABLE IF NOT EXISTS certificates (
|
|
74
|
-
id INTEGER PRIMARY KEY AUTOINCREMENT, type TEXT NOT NULL, expires_at TEXT NOT NULL,
|
|
75
|
-
holder TEXT, number TEXT, photo TEXT, scene TEXT, created_at TEXT DEFAULT CURRENT_TIMESTAMP
|
|
76
|
-
)`);
|
|
77
|
-
exec(db, `CREATE TABLE IF NOT EXISTS family_members (
|
|
78
|
-
id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT NOT NULL UNIQUE, relation TEXT,
|
|
79
|
-
created_at TEXT DEFAULT CURRENT_TIMESTAMP
|
|
80
|
-
)`);
|
|
81
|
-
exec(db, `CREATE TABLE IF NOT EXISTS borrow_records (
|
|
82
|
-
id INTEGER PRIMARY KEY AUTOINCREMENT, item_id INTEGER REFERENCES items(id) ON DELETE SET NULL,
|
|
83
|
-
member TEXT NOT NULL, action TEXT NOT NULL DEFAULT '借出', date TEXT NOT NULL,
|
|
84
|
-
created_at TEXT DEFAULT CURRENT_TIMESTAMP
|
|
85
|
-
)`);
|
|
86
|
-
exec(db, `CREATE TABLE IF NOT EXISTS shopping_items (
|
|
87
|
-
id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT NOT NULL, quantity INTEGER NOT NULL DEFAULT 1,
|
|
88
|
-
routine TEXT, checked INTEGER NOT NULL DEFAULT 0, created_at TEXT DEFAULT CURRENT_TIMESTAMP
|
|
89
|
-
)`);
|
|
90
|
-
exec(db, `CREATE TABLE IF NOT EXISTS stock_thresholds (
|
|
91
|
-
id INTEGER PRIMARY KEY AUTOINCREMENT, item_id INTEGER UNIQUE NOT NULL REFERENCES items(id) ON DELETE CASCADE,
|
|
92
|
-
threshold INTEGER NOT NULL, created_at TEXT DEFAULT CURRENT_TIMESTAMP
|
|
93
|
-
)`);
|
|
94
|
-
exec(db, `CREATE TABLE IF NOT EXISTS item_events (
|
|
95
|
-
id INTEGER PRIMARY KEY AUTOINCREMENT, item_id INTEGER REFERENCES items(id) ON DELETE CASCADE,
|
|
96
|
-
event TEXT NOT NULL, detail TEXT, created_at TEXT DEFAULT CURRENT_TIMESTAMP
|
|
97
|
-
)`);
|
|
98
|
-
exec(db, `CREATE TABLE IF NOT EXISTS inventory_records (
|
|
99
|
-
id INTEGER PRIMARY KEY AUTOINCREMENT, scope TEXT NOT NULL,
|
|
100
|
-
occurred_at TIMESTAMP NOT NULL, missing_cnt INTEGER DEFAULT 0, extra_cnt INTEGER DEFAULT 0,
|
|
101
|
-
diff_cnt INTEGER DEFAULT 0, pending_cnt INTEGER DEFAULT 0,
|
|
102
|
-
detail_json TEXT NOT NULL DEFAULT '[]', status TEXT DEFAULT '进行中',
|
|
103
|
-
created_at TIMESTAMP NOT NULL
|
|
104
|
-
)`);
|
|
105
|
-
exec(db, `CREATE TABLE IF NOT EXISTS location_nodes (
|
|
106
|
-
id INTEGER PRIMARY KEY AUTOINCREMENT, path TEXT NOT NULL UNIQUE,
|
|
107
|
-
created_at TEXT DEFAULT CURRENT_TIMESTAMP
|
|
108
|
-
)`);
|
|
109
|
-
exec(db, 'CREATE INDEX IF NOT EXISTS idx_items_name ON items(name)');
|
|
110
|
-
exec(db, 'CREATE INDEX IF NOT EXISTS idx_items_category_id ON items(category_id)');
|
|
111
|
-
exec(db, 'CREATE INDEX IF NOT EXISTS idx_locs_item ON item_locations(item_id)');
|
|
112
|
-
exec(db, 'CREATE INDEX IF NOT EXISTS idx_locs_location ON item_locations(location)');
|
|
113
|
-
exec(db, 'CREATE INDEX IF NOT EXISTS idx_tags_item ON item_tags(item_id)');
|
|
114
|
-
exec(db, 'CREATE INDEX IF NOT EXISTS idx_tags_tag ON item_tags(tag)');
|
|
115
|
-
exec(db, 'CREATE INDEX IF NOT EXISTS idx_cats_parent ON categories(parent_id)');
|
|
116
|
-
const after = db.prepare("SELECT count(*) AS c FROM sqlite_master WHERE type='table'").get().c;
|
|
117
|
-
initialized = before === 0 && after > 0;
|
|
118
|
-
// 8 顶级种子(幂等按 name 去重;余按需增,不做 277 全量)。
|
|
119
|
-
for (const n of TOPS) {
|
|
120
|
-
const hit = db.prepare('SELECT id FROM categories WHERE parent_id IS NULL AND name=?').get(n);
|
|
121
|
-
if (!hit)
|
|
122
|
-
db.prepare('INSERT INTO categories (parent_id, name) VALUES (NULL, ?)').run(n);
|
|
123
|
-
}
|
|
124
|
-
}
|
|
125
|
-
catch (e) {
|
|
126
|
-
if (e instanceof HomeFetchError)
|
|
127
|
-
throw e;
|
|
128
|
-
throw new HomeFetchError('HOME_DB_UNREADABLE', '居家 DB 初始化失败:' + dbPath, { cause: e });
|
|
129
|
-
}
|
|
130
|
-
return { db, path: dbPath, initialized };
|
|
131
|
-
}
|
|
132
|
-
export function closeHomeDb(handle) {
|
|
133
|
-
try {
|
|
134
|
-
handle.db.close();
|
|
135
|
-
}
|
|
136
|
-
catch { /* 关闭失败不谎报 */ }
|
|
137
|
-
}
|
|
138
|
-
function rowItem(r) { return r; }
|
|
139
|
-
// ---- 物品 ----
|
|
140
|
-
export function addItem(handle, input) {
|
|
141
|
-
const db = handle.db;
|
|
142
|
-
let id = 0;
|
|
143
|
-
try {
|
|
144
|
-
const r = db.prepare('INSERT INTO items (name, category, category_id, owner, purchase_price, remark, photo) VALUES (?,?,?,?,?,?,?) RETURNING id').get(input.name, input.category, input.category_id, input.owner ?? '使用者', input.purchase_price ?? null, input.remark ?? null, input.photo ?? null);
|
|
145
|
-
id = r.id;
|
|
146
|
-
db.prepare('INSERT INTO item_locations (item_id, location, quantity, reason, location_status, purchase_date, expiration_date) VALUES (?,?,?,?,?,?,?)').run(id, input.location, input.quantity ?? 1, input.reason ?? null, input.location_status ?? '在家', input.purchase_date ?? null, input.expiration_date ?? null);
|
|
147
|
-
for (const t of input.tags ?? []) {
|
|
148
|
-
const tag = t.trim();
|
|
149
|
-
if (tag)
|
|
150
|
-
db.prepare('INSERT OR IGNORE INTO item_tags (item_id, tag) VALUES (?,?)').run(id, tag);
|
|
151
|
-
}
|
|
152
|
-
db.prepare('INSERT INTO item_events (item_id, event, detail) VALUES (?,?,?)').run(id, 'create', input.location);
|
|
153
|
-
db.prepare('INSERT OR IGNORE INTO location_nodes (path) VALUES (?)').run(input.location);
|
|
154
|
-
}
|
|
155
|
-
catch (e) {
|
|
156
|
-
throw new HomeFetchError('HOME_DB_UNREADABLE', '物品写盘失败', { cause: e });
|
|
157
|
-
}
|
|
158
|
-
return getItemById(handle, id);
|
|
159
|
-
}
|
|
160
|
-
export function getItemById(handle, id) {
|
|
161
|
-
if (!Number.isInteger(id) || id <= 0)
|
|
162
|
-
throw new HomeFetchError('HOME_ITEM_NOT_FOUND', '物品 id 非法:' + String(id));
|
|
163
|
-
let row = null;
|
|
164
|
-
try {
|
|
165
|
-
row = handle.db.prepare('SELECT * FROM items WHERE id=?').get(id);
|
|
166
|
-
}
|
|
167
|
-
catch (e) {
|
|
168
|
-
throw new HomeFetchError('HOME_DB_UNREADABLE', '物品读取失败:' + id, { cause: e });
|
|
169
|
-
}
|
|
170
|
-
if (!row)
|
|
171
|
-
throw new HomeFetchError('HOME_ITEM_NOT_FOUND', '无此物品:' + id);
|
|
172
|
-
return rowItem(row);
|
|
173
|
-
}
|
|
174
|
-
export function listLocationsByItem(handle, itemId) {
|
|
175
|
-
try {
|
|
176
|
-
return handle.db.prepare('SELECT * FROM item_locations WHERE item_id=? ORDER BY id').all(itemId);
|
|
177
|
-
}
|
|
178
|
-
catch (e) {
|
|
179
|
-
throw new HomeFetchError('HOME_DB_UNREADABLE', '位置读取失败:' + itemId, { cause: e });
|
|
180
|
-
}
|
|
181
|
-
}
|
|
182
|
-
export function listTagsByItem(handle, itemId) {
|
|
183
|
-
try {
|
|
184
|
-
const rows = handle.db.prepare('SELECT tag FROM item_tags WHERE item_id=? ORDER BY tag').all(itemId);
|
|
185
|
-
return rows.map((r) => r.tag);
|
|
186
|
-
}
|
|
187
|
-
catch (e) {
|
|
188
|
-
throw new HomeFetchError('HOME_DB_UNREADABLE', '标签读取失败:' + itemId, { cause: e });
|
|
189
|
-
}
|
|
190
|
-
}
|
|
191
|
-
export function searchItems(handle, f) {
|
|
192
|
-
const limit = f.limit ?? 20;
|
|
193
|
-
if (!Number.isInteger(limit) || limit <= 0 || limit > 200)
|
|
194
|
-
throw new HomeFetchError('HOME_BAD_QUERY', 'limit 须为 1~200 正整数');
|
|
195
|
-
let rows = [];
|
|
196
|
-
try {
|
|
197
|
-
if (f.tag !== undefined) {
|
|
198
|
-
rows = handle.db.prepare('SELECT i.* FROM items i JOIN item_tags t ON t.item_id=i.id WHERE t.tag=? ORDER BY i.name LIMIT ?').all(f.tag, limit);
|
|
199
|
-
}
|
|
200
|
-
else if (f.categoryId !== undefined) {
|
|
201
|
-
rows = handle.db.prepare('SELECT * FROM items WHERE category_id=? ORDER BY name LIMIT ?').all(f.categoryId, limit);
|
|
202
|
-
}
|
|
203
|
-
else if (f.name !== undefined && f.exact === true) {
|
|
204
|
-
rows = handle.db.prepare('SELECT * FROM items WHERE name=? ORDER BY name LIMIT ?').all(f.name, limit);
|
|
205
|
-
}
|
|
206
|
-
else if (f.name !== undefined) {
|
|
207
|
-
rows = handle.db.prepare('SELECT * FROM items WHERE name LIKE ? ORDER BY name LIMIT ?').all('%' + f.name + '%', limit);
|
|
208
|
-
}
|
|
209
|
-
else {
|
|
210
|
-
rows = handle.db.prepare('SELECT * FROM items ORDER BY name LIMIT ?').all(limit);
|
|
211
|
-
}
|
|
212
|
-
}
|
|
213
|
-
catch (e) {
|
|
214
|
-
if (e instanceof HomeFetchError)
|
|
215
|
-
throw e;
|
|
216
|
-
throw new HomeFetchError('HOME_DB_UNREADABLE', '物品搜索失败', { cause: e });
|
|
217
|
-
}
|
|
218
|
-
let out = rows.map((item) => ({ item, locations: listLocationsByItem(handle, item.id), tags: listTagsByItem(handle, item.id) }));
|
|
219
|
-
if (f.location !== undefined) {
|
|
220
|
-
const needle = f.location;
|
|
221
|
-
out = out.filter((r) => r.locations.some((l) => l.location.includes(needle)));
|
|
222
|
-
}
|
|
223
|
-
if (f.status !== undefined) {
|
|
224
|
-
out = out.filter((r) => r.locations.some((l) => l.location_status === f.status));
|
|
225
|
-
}
|
|
226
|
-
// 访问计数:搜索命中即 +1(老家 access_count 语义简化版)。
|
|
227
|
-
try {
|
|
228
|
-
for (const r of out) {
|
|
229
|
-
handle.db.prepare("UPDATE items SET access_count=access_count+1, last_accessed_at=CURRENT_TIMESTAMP WHERE id=?").run(r.item.id);
|
|
230
|
-
r.item.access_count += 1;
|
|
231
|
-
}
|
|
232
|
-
}
|
|
233
|
-
catch { /* 计数失败不阻断取数 */ }
|
|
234
|
-
return out;
|
|
235
|
-
}
|
|
236
|
-
/** 事件详情用的人读字段名(#817 修:此前写的是 SQL 的 SET 片段,`photo=?,updated_at=CURRENT_TIMESTAMP`
|
|
237
|
-
* 会被「历史」页原样印上屏;事件详情是给人看的,与 move/qty/status 三处的写法一致)。 */
|
|
238
|
-
const ITEM_FIELD_CN = {
|
|
239
|
-
name: '名称', category: '分类', category_id: '分类', owner: '归属',
|
|
240
|
-
purchase_price: '价格', remark: '备注', photo: '照片', fixed_location: '固定位',
|
|
241
|
-
};
|
|
242
|
-
export function updateItem(handle, id, patch) {
|
|
243
|
-
getItemById(handle, id);
|
|
244
|
-
const sets = [];
|
|
245
|
-
const vals = [];
|
|
246
|
-
const changed = new Set();
|
|
247
|
-
const allow = ['name', 'category', 'category_id', 'owner', 'purchase_price', 'remark', 'photo', 'fixed_location'];
|
|
248
|
-
for (const k of allow) {
|
|
249
|
-
const v = patch[k];
|
|
250
|
-
if (v !== undefined) {
|
|
251
|
-
sets.push(k + '=?');
|
|
252
|
-
vals.push(v);
|
|
253
|
-
changed.add(ITEM_FIELD_CN[k] ?? String(k));
|
|
254
|
-
}
|
|
255
|
-
}
|
|
256
|
-
if (sets.length) {
|
|
257
|
-
sets.push('updated_at=CURRENT_TIMESTAMP');
|
|
258
|
-
try {
|
|
259
|
-
handle.db.prepare('UPDATE items SET ' + sets.join(',') + ' WHERE id=?').run(...vals, id);
|
|
260
|
-
}
|
|
261
|
-
catch (e) {
|
|
262
|
-
throw new HomeFetchError('HOME_DB_UNREADABLE', '物品更新失败:' + id, { cause: e });
|
|
263
|
-
}
|
|
264
|
-
try {
|
|
265
|
-
handle.db.prepare('INSERT INTO item_events (item_id, event, detail) VALUES (?,?,?)').run(id, 'update', [...changed].join('、'));
|
|
266
|
-
}
|
|
267
|
-
catch { /* 审计失败不阻断 */ }
|
|
268
|
-
}
|
|
269
|
-
return getItemById(handle, id);
|
|
270
|
-
}
|
|
271
|
-
export function adjustQuantity(handle, id, opts) {
|
|
272
|
-
const locs = listLocationsByItem(handle, id);
|
|
273
|
-
if (!locs.length)
|
|
274
|
-
throw new HomeFetchError('HOME_ITEM_NOT_FOUND', '物品无位置记录:' + id);
|
|
275
|
-
let target = locs[0];
|
|
276
|
-
if (opts.location !== undefined) {
|
|
277
|
-
const hit = locs.find((l) => l.location === opts.location);
|
|
278
|
-
if (!hit)
|
|
279
|
-
throw new HomeFetchError('HOME_ITEM_NOT_FOUND', '指定位置无记录:' + opts.location);
|
|
280
|
-
target = hit;
|
|
281
|
-
}
|
|
282
|
-
let next = target.quantity;
|
|
283
|
-
if (opts.set !== undefined)
|
|
284
|
-
next = opts.set;
|
|
285
|
-
else if (opts.plus !== undefined)
|
|
286
|
-
next = target.quantity + opts.plus;
|
|
287
|
-
else if (opts.minus !== undefined)
|
|
288
|
-
next = target.quantity - opts.minus;
|
|
289
|
-
if (!Number.isInteger(next) || next < 0)
|
|
290
|
-
throw new HomeFetchError('HOME_BAD_QUERY', '数量须为非负整数');
|
|
291
|
-
try {
|
|
292
|
-
if (next === 0) {
|
|
293
|
-
handle.db.prepare('DELETE FROM item_locations WHERE id=?').run(target.id);
|
|
294
|
-
handle.db.prepare('UPDATE item_locations SET location_status=? WHERE item_id=? AND location_status=?').run('已用完', id, '已用完');
|
|
295
|
-
}
|
|
296
|
-
else {
|
|
297
|
-
handle.db.prepare('UPDATE item_locations SET quantity=?, updated_at=CURRENT_TIMESTAMP WHERE id=?').run(next, target.id);
|
|
298
|
-
}
|
|
299
|
-
handle.db.prepare('INSERT INTO item_events (item_id, event, detail) VALUES (?,?,?)').run(id, 'qty', String(target.quantity) + '->' + next);
|
|
300
|
-
}
|
|
301
|
-
catch (e) {
|
|
302
|
-
if (e instanceof HomeFetchError)
|
|
303
|
-
throw e;
|
|
304
|
-
throw new HomeFetchError('HOME_DB_UNREADABLE', '数量变更失败:' + id, { cause: e });
|
|
305
|
-
}
|
|
306
|
-
return listLocationsByItem(handle, id);
|
|
307
|
-
}
|
|
308
|
-
export function setLocationStatus(handle, id, status, location) {
|
|
309
|
-
const locs = listLocationsByItem(handle, id);
|
|
310
|
-
if (!locs.length)
|
|
311
|
-
throw new HomeFetchError('HOME_ITEM_NOT_FOUND', '物品无位置记录:' + id);
|
|
312
|
-
try {
|
|
313
|
-
if (location !== undefined) {
|
|
314
|
-
const hit = locs.find((l) => l.location === location);
|
|
315
|
-
if (!hit)
|
|
316
|
-
throw new HomeFetchError('HOME_ITEM_NOT_FOUND', '指定位置无记录:' + location);
|
|
317
|
-
handle.db.prepare('UPDATE item_locations SET location_status=?, updated_at=CURRENT_TIMESTAMP WHERE id=?').run(status, hit.id);
|
|
318
|
-
}
|
|
319
|
-
else {
|
|
320
|
-
handle.db.prepare('UPDATE item_locations SET location_status=?, updated_at=CURRENT_TIMESTAMP WHERE item_id=?').run(status, id);
|
|
321
|
-
}
|
|
322
|
-
handle.db.prepare('INSERT INTO item_events (item_id, event, detail) VALUES (?,?,?)').run(id, 'status', status);
|
|
323
|
-
}
|
|
324
|
-
catch (e) {
|
|
325
|
-
if (e instanceof HomeFetchError)
|
|
326
|
-
throw e;
|
|
327
|
-
throw new HomeFetchError('HOME_DB_UNREADABLE', '状态变更失败:' + id, { cause: e });
|
|
328
|
-
}
|
|
329
|
-
return listLocationsByItem(handle, id);
|
|
330
|
-
}
|
|
331
|
-
export function moveLocation(handle, id, from, to) {
|
|
332
|
-
const locs = listLocationsByItem(handle, id);
|
|
333
|
-
if (!locs.length)
|
|
334
|
-
throw new HomeFetchError('HOME_ITEM_NOT_FOUND', '物品无位置记录:' + id);
|
|
335
|
-
let target = locs[0];
|
|
336
|
-
if (from !== undefined) {
|
|
337
|
-
const hit = locs.find((l) => l.location === from);
|
|
338
|
-
if (!hit)
|
|
339
|
-
throw new HomeFetchError('HOME_ITEM_NOT_FOUND', '原位置无记录:' + from);
|
|
340
|
-
target = hit;
|
|
341
|
-
}
|
|
342
|
-
try {
|
|
343
|
-
handle.db.prepare('UPDATE item_locations SET location=?, updated_at=CURRENT_TIMESTAMP WHERE id=?').run(to, target.id);
|
|
344
|
-
handle.db.prepare('INSERT OR IGNORE INTO location_nodes (path) VALUES (?)').run(to);
|
|
345
|
-
handle.db.prepare('INSERT INTO item_events (item_id, event, detail) VALUES (?,?,?)').run(id, 'move', target.location + '->' + to);
|
|
346
|
-
}
|
|
347
|
-
catch (e) {
|
|
348
|
-
if (e instanceof HomeFetchError)
|
|
349
|
-
throw e;
|
|
350
|
-
throw new HomeFetchError('HOME_DB_UNREADABLE', '位置移动失败:' + id, { cause: e });
|
|
351
|
-
}
|
|
352
|
-
return listLocationsByItem(handle, id);
|
|
353
|
-
}
|
|
354
|
-
export function setItemTags(handle, id, tags) {
|
|
355
|
-
getItemById(handle, id);
|
|
356
|
-
try {
|
|
357
|
-
handle.db.prepare('DELETE FROM item_tags WHERE item_id=?').run(id);
|
|
358
|
-
for (const t of tags) {
|
|
359
|
-
const tag = t.trim();
|
|
360
|
-
if (tag)
|
|
361
|
-
handle.db.prepare('INSERT OR IGNORE INTO item_tags (item_id, tag) VALUES (?,?)').run(id, tag);
|
|
362
|
-
}
|
|
363
|
-
}
|
|
364
|
-
catch (e) {
|
|
365
|
-
throw new HomeFetchError('HOME_DB_UNREADABLE', '标签更新失败:' + id, { cause: e });
|
|
366
|
-
}
|
|
367
|
-
return listTagsByItem(handle, id);
|
|
368
|
-
}
|
|
369
|
-
// ---- 标签/分类 ----
|
|
370
|
-
export function listAllTags(handle) {
|
|
371
|
-
try {
|
|
372
|
-
return handle.db.prepare('SELECT tag, count(*) AS count FROM item_tags GROUP BY tag ORDER BY count DESC').all();
|
|
373
|
-
}
|
|
374
|
-
catch (e) {
|
|
375
|
-
throw new HomeFetchError('HOME_DB_UNREADABLE', '标签总览失败', { cause: e });
|
|
376
|
-
}
|
|
377
|
-
}
|
|
378
|
-
export function mergeTags(handle, from, to) {
|
|
379
|
-
if (!from || !to || from === to)
|
|
380
|
-
throw new HomeFetchError('HOME_BAD_QUERY', '合标签须给不同 from/to');
|
|
381
|
-
try {
|
|
382
|
-
const rows = handle.db.prepare('SELECT item_id FROM item_tags WHERE tag=?').all(from);
|
|
383
|
-
let n = 0;
|
|
384
|
-
for (const r of rows) {
|
|
385
|
-
handle.db.prepare('INSERT OR IGNORE INTO item_tags (item_id, tag) VALUES (?,?)').run(r.item_id, to);
|
|
386
|
-
n++;
|
|
387
|
-
}
|
|
388
|
-
handle.db.prepare('DELETE FROM item_tags WHERE tag=?').run(from);
|
|
389
|
-
return n;
|
|
390
|
-
}
|
|
391
|
-
catch (e) {
|
|
392
|
-
if (e instanceof HomeFetchError)
|
|
393
|
-
throw e;
|
|
394
|
-
throw new HomeFetchError('HOME_DB_UNREADABLE', '合标签失败', { cause: e });
|
|
395
|
-
}
|
|
396
|
-
}
|
|
397
|
-
export function listCategories(handle) {
|
|
398
|
-
try {
|
|
399
|
-
return handle.db.prepare('SELECT id, parent_id, name FROM categories WHERE is_active=1 ORDER BY parent_id, sort_order, id').all();
|
|
400
|
-
}
|
|
401
|
-
catch (e) {
|
|
402
|
-
throw new HomeFetchError('HOME_DB_UNREADABLE', '分类读取失败', { cause: e });
|
|
403
|
-
}
|
|
404
|
-
}
|
|
405
|
-
export function getCategoryById(handle, id) {
|
|
406
|
-
if (!Number.isInteger(id) || id <= 0)
|
|
407
|
-
throw new HomeFetchError('HOME_BAD_QUERY', '分类 id 非法:' + String(id));
|
|
408
|
-
const row = handle.db.prepare('SELECT id, parent_id, name FROM categories WHERE id=?').get(id);
|
|
409
|
-
if (!row)
|
|
410
|
-
throw new HomeFetchError('HOME_BAD_QUERY', '无此分类:' + id);
|
|
411
|
-
return row;
|
|
412
|
-
}
|
|
413
|
-
// ---- 账号(AES-256-CBC + master-key 门) ----
|
|
414
|
-
function deriveKey(masterKey) {
|
|
415
|
-
return scryptSync(masterKey, 'home-salt', 32);
|
|
416
|
-
}
|
|
417
|
-
export function encryptPassword(masterKey, plain) {
|
|
418
|
-
const key = deriveKey(masterKey);
|
|
419
|
-
const iv = randomBytes(16);
|
|
420
|
-
const c = createCipheriv('aes-256-cbc', key, iv);
|
|
421
|
-
const enc = Buffer.concat([c.update(plain, 'utf8'), c.final()]);
|
|
422
|
-
return iv.toString('hex') + ':' + enc.toString('hex');
|
|
423
|
-
}
|
|
424
|
-
export function decryptPassword(masterKey, stored) {
|
|
425
|
-
const parts = stored.split(':');
|
|
426
|
-
if (parts.length !== 2)
|
|
427
|
-
throw new HomeFetchError('HOME_ACCOUNT_MISSING', '账号密文损坏');
|
|
428
|
-
const key = deriveKey(masterKey);
|
|
429
|
-
try {
|
|
430
|
-
const d = createDecipheriv('aes-256-cbc', key, Buffer.from(parts[0], 'hex'));
|
|
431
|
-
return Buffer.concat([d.update(Buffer.from(parts[1], 'hex')), d.final()]).toString('utf8');
|
|
432
|
-
}
|
|
433
|
-
catch (e) {
|
|
434
|
-
throw new HomeFetchError('HOME_ACCOUNT_BAD_KEY', '主密钥不对或密文损坏', { cause: e });
|
|
435
|
-
}
|
|
436
|
-
}
|
|
437
|
-
export function assertMasterKey(masterKey) {
|
|
438
|
-
if (typeof masterKey !== 'string' || masterKey.length < 8) {
|
|
439
|
-
throw new HomeFetchError('HOME_ACCOUNT_BAD_KEY', 'master-key 须 ≥8 位(缺失阻断,不返空)');
|
|
440
|
-
}
|
|
441
|
-
return masterKey;
|
|
442
|
-
}
|
|
443
|
-
//# sourceMappingURL=db.js.map
|
package/dist/fetch/db.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"db.js","sourceRoot":"","sources":["../../src/fetch/db.ts"],"names":[],"mappings":"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"}
|
package/dist/fetch/domains.d.ts
DELETED
|
@@ -1,151 +0,0 @@
|
|
|
1
|
-
import type { HomeDb } from './db.js';
|
|
2
|
-
export declare function addInventoryRecord(handle: HomeDb, scopeName: string, opts?: {
|
|
3
|
-
missingCnt?: number;
|
|
4
|
-
extraCnt?: number;
|
|
5
|
-
diffCnt?: number;
|
|
6
|
-
pendingCnt?: number;
|
|
7
|
-
detailJson?: string;
|
|
8
|
-
status?: string;
|
|
9
|
-
total?: number;
|
|
10
|
-
}): number;
|
|
11
|
-
export declare function listInventoryRecords(handle: HomeDb, limit?: number): Record<string, unknown>[];
|
|
12
|
-
export declare function listLocationNodes(handle: HomeDb): string[];
|
|
13
|
-
export declare function ensureLocationNode(handle: HomeDb, path: string): void;
|
|
14
|
-
export declare function listShopping(handle: HomeDb): Record<string, unknown>[];
|
|
15
|
-
export declare function addShopping(handle: HomeDb, name: string, quantity: number, routine: string | null): number;
|
|
16
|
-
export declare function checkShopping(handle: HomeDb, ids: number[]): number;
|
|
17
|
-
export declare function missingItems(handle: HomeDb): Record<string, unknown>[];
|
|
18
|
-
export declare function stockList(handle: HomeDb): Record<string, unknown>[];
|
|
19
|
-
export declare function setThreshold(handle: HomeDb, itemId: number, threshold: number): void;
|
|
20
|
-
/** 购买记录(#890 起带物品名与分类名):页面要按判据那一行「物品名/ID/购买日/价格/渠道/…」逐格填值,
|
|
21
|
-
* `purchase_records` 只挂 `item_id`,名称与分类在 `items` 上,故这里 LEFT JOIN 带出(键名与页面读的
|
|
22
|
-
* `item_name` 对齐);物品被删时 `item_id` 被置空,JOIN 不到即留空,页面照全批口径写「—」。 */
|
|
23
|
-
export declare function listPurchases(handle: HomeDb, f: {
|
|
24
|
-
itemId?: number;
|
|
25
|
-
year?: string;
|
|
26
|
-
month?: string;
|
|
27
|
-
}): Record<string, unknown>[];
|
|
28
|
-
export declare function addPurchase(handle: HomeDb, itemId: number, date: string, price: number | null, channel: string | null, scene: string | null): number;
|
|
29
|
-
export declare function purchaseYearStats(handle: HomeDb, year: string): {
|
|
30
|
-
count: number;
|
|
31
|
-
total: number;
|
|
32
|
-
};
|
|
33
|
-
/** 保修/保养(#890 起带物品名与派生值):页面卡体的七个值位读 `item_name`/`kind`/`status`/
|
|
34
|
-
* `expires_at`/`remaining_days`/`repair_count`/`service_events`。前两件在 `warranties` 与 `items`,
|
|
35
|
-
* 后五件都由 `start_date + duration_days` 现算(本条命令本来就在 filter 分支里算 `st`,这里把它
|
|
36
|
-
* 提成返回字段,口径一字不改:`<0` 已过/`≤30` 即将到期/其余在保)。服务事件只算次数并把日期串起来。 */
|
|
37
|
-
export declare function listWarranties(handle: HomeDb, status?: string): Record<string, unknown>[];
|
|
38
|
-
export declare function addWarranty(handle: HomeDb, itemId: number, kind: string, startDate: string, durationDays: number, scene: string | null): number;
|
|
39
|
-
export declare function addServiceEvent(handle: HomeDb, warrantyId: number, date: string, cost: number | null, scene: string | null): number;
|
|
40
|
-
/** 证件号码脱敏:只出后四位,前面一律 `****`(#890)。**库里的明文号码不许进信封**——页面、复制载荷、
|
|
41
|
-
* 数据原文三处都可能落盘,故脱敏在取数这一层做完,出去的就只有 `number_masked`。
|
|
42
|
-
* 规则与 `receipt/pages/certificates.ts` 原来的 `maskDisplay` 逐字同一条(那处改读本函数,见铁律二)。 */
|
|
43
|
-
export declare function maskCertNumber(raw: unknown): string;
|
|
44
|
-
/** 证件清单(#890 起带持有人与脱敏号码):页面要按「类型/持有人/ID/到期日/剩余天数/证件状态/脱敏号码/备注」
|
|
45
|
-
* 逐格填值;号码在这一层换成 `number_masked`,明文字段不出本函数。 */
|
|
46
|
-
export declare function listCerts(handle: HomeDb): Record<string, unknown>[];
|
|
47
|
-
export declare function addCert(handle: HomeDb, type: string, expiresAt: string, holder: string | null, number: string | null, photo: string | null, scene: string | null): number;
|
|
48
|
-
export declare function listAccounts(handle: HomeDb): {
|
|
49
|
-
platform: string;
|
|
50
|
-
username: string;
|
|
51
|
-
type: string;
|
|
52
|
-
}[];
|
|
53
|
-
export declare function listMembers(handle: HomeDb): Record<string, unknown>[];
|
|
54
|
-
export declare function addMember(handle: HomeDb, name: string, relation: string | null): number;
|
|
55
|
-
export declare function listBorrows(handle: HomeDb): Record<string, unknown>[];
|
|
56
|
-
export declare function addBorrow(handle: HomeDb, itemId: number | null, member: string, action: string, date: string): number;
|
|
57
|
-
/** 今天(本地日期,YYYY-MM-DD;与老 `_today()` 的本地时间约定一致)。 */
|
|
58
|
-
export declare function localToday(): string;
|
|
59
|
-
export declare function statsOverview(handle: HomeDb): Record<string, number>;
|
|
60
|
-
export declare function highFreq(handle: HomeDb, limit?: number): {
|
|
61
|
-
id: number;
|
|
62
|
-
name: string;
|
|
63
|
-
count: number;
|
|
64
|
-
}[];
|
|
65
|
-
/** 高频 TOP(活跃物品;#865 补最后访问日与完整名称,值排行同形)。 */
|
|
66
|
-
export declare function frequentTopItems(handle: HomeDb, limit?: number): {
|
|
67
|
-
id: number;
|
|
68
|
-
name: string;
|
|
69
|
-
count: number;
|
|
70
|
-
lastAccessedAt: string;
|
|
71
|
-
}[];
|
|
72
|
-
/** 价值 TOP(#865):价格 > 0 的活跃物品,单价降序,带分类名(老 `_value_top` 口径)。 */
|
|
73
|
-
export declare function valueTopItems(handle: HomeDb, limit?: number): {
|
|
74
|
-
id: number;
|
|
75
|
-
name: string;
|
|
76
|
-
price: number;
|
|
77
|
-
category: string;
|
|
78
|
-
}[];
|
|
79
|
-
/** 分类分布(#865):顶级分类逐项件数+该类合计价值;无 category_id 归「(未分类)」。 */
|
|
80
|
-
export declare function categoryDistribution(handle: HomeDb): {
|
|
81
|
-
name: string;
|
|
82
|
-
count: number;
|
|
83
|
-
totalValue: number;
|
|
84
|
-
}[];
|
|
85
|
-
/** 位置分布(#865):位置路径第一段归并(老 `_location_distribution` 口径)。 */
|
|
86
|
-
export declare function locationDistribution(handle: HomeDb): {
|
|
87
|
-
name: string;
|
|
88
|
-
count: number;
|
|
89
|
-
}[];
|
|
90
|
-
/** 状态分布(#865):位置状态逐项件数+占比(老 `_status_distribution` 口径)。 */
|
|
91
|
-
export declare function statusDistribution(handle: HomeDb): {
|
|
92
|
-
name: string;
|
|
93
|
-
count: number;
|
|
94
|
-
pct: number;
|
|
95
|
-
}[];
|
|
96
|
-
/** 归属分布(#865):items.owner 分组(老 `_owner_distribution` 口径)。 */
|
|
97
|
-
export declare function ownerDistribution(handle: HomeDb): {
|
|
98
|
-
name: string;
|
|
99
|
-
count: number;
|
|
100
|
-
}[];
|
|
101
|
-
/** 近 N 天变动趋势(#865):四桶(近7天/8-14天/15-21天/22-30天,老 `_trend_buckets` 分档)。 */
|
|
102
|
-
export declare function recordTrend(handle: HomeDb, days?: number): {
|
|
103
|
-
days: number;
|
|
104
|
-
note: string;
|
|
105
|
-
buckets: {
|
|
106
|
-
label: string;
|
|
107
|
-
added: number;
|
|
108
|
-
discarded: number;
|
|
109
|
-
}[];
|
|
110
|
-
};
|
|
111
|
-
/** 闲置物品(#865):逐件闲置天数与来源(访问记录/估算)+位置、件数、状态。
|
|
112
|
-
* 筛选与排序保持搬迁前口径不变(`last_accessed_at` 空或早于阈值;按 `last_accessed_at` 排序)——
|
|
113
|
-
* 衣物域的「久未穿」把「从未使用」也算在内,消费方各自过滤;`days_idle` 按
|
|
114
|
-
* `coalesce(last_accessed_at, created_at)` 算(老 `stats/idle.py` 口径,无使用记录按录入日估算)。 */
|
|
115
|
-
export declare function idleItems(handle: HomeDb, days: number): {
|
|
116
|
-
id: number;
|
|
117
|
-
name: string;
|
|
118
|
-
category: string;
|
|
119
|
-
days_idle: number;
|
|
120
|
-
source: string;
|
|
121
|
-
location: string;
|
|
122
|
-
quantity: number;
|
|
123
|
-
status: string;
|
|
124
|
-
}[];
|
|
125
|
-
/** 过期与预告(#865):逐条剩余天数(到期日缺为空)+所在位置与状态。 */
|
|
126
|
-
export declare function expiringItems(handle: HomeDb, days: number, expiredOnly: boolean): {
|
|
127
|
-
item_id: number;
|
|
128
|
-
location: string;
|
|
129
|
-
expiration_date: string;
|
|
130
|
-
item_name: string;
|
|
131
|
-
category: string;
|
|
132
|
-
days_left: number | null;
|
|
133
|
-
quantity: number;
|
|
134
|
-
location_status: string;
|
|
135
|
-
}[];
|
|
136
|
-
/** 盘点明细(#865):表形状自适应——新库读 `missing/extra`,老库(权威 DDL)读 `missing_cnt/extra_cnt/diff_cnt` 等。 */
|
|
137
|
-
export declare function inventoryDetail(handle: HomeDb, limit?: number): {
|
|
138
|
-
rows: {
|
|
139
|
-
id: number;
|
|
140
|
-
date: string;
|
|
141
|
-
scope: string;
|
|
142
|
-
location: string;
|
|
143
|
-
missing: number;
|
|
144
|
-
extra: number;
|
|
145
|
-
diff: number | null;
|
|
146
|
-
status: string | null;
|
|
147
|
-
}[];
|
|
148
|
-
total: number;
|
|
149
|
-
diffTotal: number;
|
|
150
|
-
};
|
|
151
|
-
//# sourceMappingURL=domains.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"domains.d.ts","sourceRoot":"","sources":["../../src/fetch/domains.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAiBtC,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE;IAC3E,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC9E,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;CACtD,GAAG,MAAM,CAcT;AACD,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,SAAK,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAE1F;AAGD,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAE1D;AACD,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAErE;AAGD,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAEtE;AACD,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,CAI1G;AACD,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,MAAM,CAOnE;AACD,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAKtE;AACD,wBAAgB,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAInE;AACD,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI,CAGpF;AAGD;;kEAEkE;AAClE,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAU9H;AACD,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,CAGpJ;AACD,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAGhG;AACD;;;8DAG8D;AAC9D,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAoBzF;AACD,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,CAK/I;AACD,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,CAKnI;AACD;;iFAEiF;AACjF,wBAAgB,cAAc,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,CAMnD;AACD;+CAC+C;AAC/C,wBAAgB,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAMnE;AACD,wBAAgB,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,CAGzK;AACD,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,EAAE,CAInG;AAGD,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAErE;AACD,wBAAgB,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,CAMvF;AACD,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAIrE;AACD,wBAAgB,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAGrH;AAYD,mDAAmD;AACnD,wBAAgB,UAAU,IAAI,MAAM,CAGnC;AAQD,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAMpE;AACD,wBAAgB,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,SAAK,GAAG;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,EAAE,CAElG;AACD,2CAA2C;AAC3C,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,SAAI,GAAG;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,cAAc,EAAE,MAAM,CAAA;CAAE,EAAE,CAIjI;AACD,8DAA8D;AAC9D,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,SAAI,GAAG;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,EAAE,CAMxH;AACD,yDAAyD;AACzD,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,EAAE,CAQ1G;AACD,2DAA2D;AAC3D,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,EAAE,CAItF;AACD,2DAA2D;AAC3D,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,EAAE,CAKjG;AACD,6DAA6D;AAC7D,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,EAAE,CAInF;AACD,yEAAyE;AACzE,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,SAAK,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,EAAE,CAAA;CAAE,CAWrJ;AACD;;;oFAGoF;AACpF,wBAAgB,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG;IACvD,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAC9E,QAAQ,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;CACpD,EAAE,CAgBF;AACD,0CAA0C;AAC1C,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,GAAG;IACjF,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,eAAe,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAChG,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,eAAe,EAAE,MAAM,CAAC;CACrE,EAAE,CAeF;AAED,6FAA6F;AAC7F,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,SAAK,GAAG;IAC3D,IAAI,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,EAAE,CAAC;IAClJ,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;CACnB,CAiBA"}
|