skill-calorie 0.2.4 → 0.2.5
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 +10 -9
- package/dist/.gen-inputs.json +16 -100
- package/dist/analysis/anomaly/common.d.ts +11 -1
- package/dist/analysis/anomaly/common.d.ts.map +1 -1
- package/dist/analysis/anomaly/common.js +11 -12
- package/dist/analysis/anomaly/common.js.map +1 -1
- package/dist/analysis/anomaly/diet.d.ts.map +1 -1
- package/dist/analysis/anomaly/diet.js +11 -3
- package/dist/analysis/anomaly/diet.js.map +1 -1
- package/dist/analysis/deficit.d.ts +4 -2
- package/dist/analysis/deficit.d.ts.map +1 -1
- package/dist/analysis/deficit.js +2 -1
- package/dist/analysis/deficit.js.map +1 -1
- package/dist/analysis/historyStore.d.ts +2 -2
- package/dist/analysis/historyStore.d.ts.map +1 -1
- package/dist/analysis/historyStore.js +2 -2
- package/dist/analysis/historyStore.js.map +1 -1
- package/dist/analysis/index.d.ts +7 -13
- package/dist/analysis/index.d.ts.map +1 -1
- package/dist/analysis/index.js +15 -21
- package/dist/analysis/index.js.map +1 -1
- package/dist/analysis/reportDocTracked.d.ts.map +1 -1
- package/dist/analysis/reportDocTracked.js +3 -2
- package/dist/analysis/reportDocTracked.js.map +1 -1
- package/dist/analysis/review.d.ts.map +1 -1
- package/dist/analysis/review.js +5 -3
- package/dist/analysis/review.js.map +1 -1
- package/dist/analysis/simulate.d.ts +4 -2
- package/dist/analysis/simulate.d.ts.map +1 -1
- package/dist/analysis/simulate.js +5 -2
- package/dist/analysis/simulate.js.map +1 -1
- package/dist/analysis/simulate2.d.ts.map +1 -1
- package/dist/analysis/simulate2.js +4 -1
- package/dist/analysis/simulate2.js.map +1 -1
- package/dist/analysis/utils.d.ts +21 -25
- package/dist/analysis/utils.d.ts.map +1 -1
- package/dist/analysis/utils.js +34 -38
- package/dist/analysis/utils.js.map +1 -1
- package/dist/body/commands.d.ts +5 -1
- package/dist/body/commands.d.ts.map +1 -1
- package/dist/body/commands.js +5 -4
- package/dist/body/commands.js.map +1 -1
- package/dist/body/index.d.ts +9 -13
- package/dist/body/index.d.ts.map +1 -1
- package/dist/body/index.js +14 -19
- package/dist/body/index.js.map +1 -1
- package/dist/body/wizardDocs.js +1 -1
- package/dist/body/wizardPlate.d.ts +1 -1
- package/dist/cli/cmd_read.d.ts.map +1 -1
- package/dist/cli/cmd_read.js +23 -4
- 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 +68 -0
- package/dist/cli/config.js.map +1 -0
- package/dist/cli/delivery.d.ts +2 -1
- package/dist/cli/delivery.d.ts.map +1 -1
- package/dist/cli/delivery.js +4 -3
- package/dist/cli/delivery.js.map +1 -1
- package/dist/cli/health.d.ts +7 -0
- package/dist/cli/health.d.ts.map +1 -0
- package/dist/cli/health.js +21 -0
- package/dist/cli/health.js.map +1 -0
- package/dist/cli/keys.d.ts +1 -2
- package/dist/cli/keys.d.ts.map +1 -1
- package/dist/cli/keys.js.map +1 -1
- package/dist/cli/readArgs.d.ts.map +1 -1
- package/dist/cli/readArgs.js +6 -5
- package/dist/cli/readArgs.js.map +1 -1
- package/dist/cli/write.d.ts +9 -12
- package/dist/cli/write.d.ts.map +1 -1
- package/dist/cli/write.js +7 -27
- package/dist/cli/write.js.map +1 -1
- package/dist/config.d.ts +55 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +64 -0
- package/dist/config.js.map +1 -0
- package/dist/diet/commands.d.ts +6 -1
- package/dist/diet/commands.d.ts.map +1 -1
- package/dist/diet/commands.js +15 -14
- package/dist/diet/commands.js.map +1 -1
- package/dist/diet/dietEngine.d.ts.map +1 -1
- package/dist/diet/dietEngine.js +3 -1
- package/dist/diet/dietEngine.js.map +1 -1
- package/dist/diet/dietUi.d.ts +8 -3
- package/dist/diet/dietUi.d.ts.map +1 -1
- package/dist/diet/dietUi.js +18 -25
- package/dist/diet/dietUi.js.map +1 -1
- package/dist/diet/index.d.ts +7 -11
- package/dist/diet/index.d.ts.map +1 -1
- package/dist/diet/index.js +18 -19
- package/dist/diet/index.js.map +1 -1
- package/dist/diet/nutritionPort.d.ts +2 -5
- package/dist/diet/nutritionPort.d.ts.map +1 -1
- package/dist/diet/nutritionPort.js +14 -12
- package/dist/diet/nutritionPort.js.map +1 -1
- package/dist/diet/precheckPort.d.ts.map +1 -1
- package/dist/diet/precheckPort.js +3 -1
- package/dist/diet/precheckPort.js.map +1 -1
- package/dist/diet/review.d.ts.map +1 -1
- package/dist/diet/review.js +3 -18
- package/dist/diet/review.js.map +1 -1
- package/dist/exercise/cardio.js +1 -1
- package/dist/exercise/cardio.js.map +1 -1
- package/dist/exercise/commands.d.ts +1 -1
- package/dist/exercise/commands.d.ts.map +1 -1
- package/dist/exercise/commands.js +3 -3
- package/dist/exercise/commands.js.map +1 -1
- package/dist/exercise/distribution.js +1 -1
- package/dist/exercise/distribution.js.map +1 -1
- package/dist/exercise/edit.d.ts.map +1 -1
- package/dist/exercise/edit.js +4 -2
- package/dist/exercise/edit.js.map +1 -1
- package/dist/exercise/exerciseStore.d.ts.map +1 -1
- package/dist/exercise/exerciseStore.js +16 -10
- package/dist/exercise/exerciseStore.js.map +1 -1
- package/dist/exercise/index.d.ts +7 -12
- package/dist/exercise/index.d.ts.map +1 -1
- package/dist/exercise/index.js +14 -19
- package/dist/exercise/index.js.map +1 -1
- package/dist/exercise/recap.js +1 -1
- package/dist/exercise/recap.js.map +1 -1
- package/dist/exercise/sportPortDocs.d.ts +9 -0
- package/dist/exercise/sportPortDocs.d.ts.map +1 -0
- package/dist/exercise/sportPortDocs.js +896 -0
- package/dist/exercise/sportPortDocs.js.map +1 -0
- package/dist/exercise/sportUi.d.ts +4 -2
- package/dist/exercise/sportUi.d.ts.map +1 -1
- package/dist/exercise/sportUi.js +13 -44
- package/dist/exercise/sportUi.js.map +1 -1
- package/dist/exercise/strength.js +1 -1
- package/dist/exercise/strength.js.map +1 -1
- package/dist/exercise/trend.js +1 -1
- package/dist/exercise/trend.js.map +1 -1
- package/dist/fetch/body.d.ts.map +1 -1
- package/dist/fetch/body.js +15 -12
- package/dist/fetch/body.js.map +1 -1
- package/dist/fetch/diet.d.ts +6 -5
- package/dist/fetch/diet.d.ts.map +1 -1
- package/dist/fetch/diet.js +19 -25
- package/dist/fetch/diet.js.map +1 -1
- package/dist/goal/commands.d.ts +5 -1
- package/dist/goal/commands.d.ts.map +1 -1
- package/dist/goal/commands.js +7 -6
- package/dist/goal/commands.js.map +1 -1
- package/dist/goal/goalExtraPlate.d.ts.map +1 -1
- package/dist/goal/goalExtraPlate.js +3 -1
- package/dist/goal/goalExtraPlate.js.map +1 -1
- package/dist/goal/goalHistory.d.ts +2 -2
- package/dist/goal/goalHistory.d.ts.map +1 -1
- package/dist/goal/goalHistory.js +4 -9
- package/dist/goal/goalHistory.js.map +1 -1
- package/dist/goal/index.d.ts +6 -10
- package/dist/goal/index.d.ts.map +1 -1
- package/dist/goal/index.js +11 -19
- package/dist/goal/index.js.map +1 -1
- package/dist/goal/nutritionGoal.d.ts.map +1 -1
- package/dist/goal/nutritionGoal.js +4 -1
- package/dist/goal/nutritionGoal.js.map +1 -1
- package/dist/goal/read.d.ts +1 -1
- package/dist/goal/read.d.ts.map +1 -1
- package/dist/goal/read.js +1 -1
- package/dist/goal/read.js.map +1 -1
- package/dist/goal/set.d.ts.map +1 -1
- package/dist/goal/set.js +2 -2
- package/dist/goal/set.js.map +1 -1
- package/dist/health.d.ts +41 -0
- package/dist/health.d.ts.map +1 -0
- package/dist/health.js +501 -0
- package/dist/health.js.map +1 -0
- package/dist/help-missing.json +1 -1
- package/dist/home/index.d.ts +8 -9
- package/dist/home/index.d.ts.map +1 -1
- package/dist/home/index.js +11 -11
- package/dist/home/index.js.map +1 -1
- package/dist/index.d.ts +24 -16
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +24 -12
- package/dist/index.js.map +1 -1
- package/dist/migrate/migrate.js +2 -2
- package/dist/migrate/migrate.js.map +1 -1
- package/dist/output.d.ts +4 -3
- package/dist/output.d.ts.map +1 -1
- package/dist/output.js +12 -5
- package/dist/output.js.map +1 -1
- package/dist/paths.d.ts +6 -2
- package/dist/paths.d.ts.map +1 -1
- package/dist/paths.js +28 -17
- package/dist/paths.js.map +1 -1
- package/dist/photo/commands.d.ts +1 -1
- package/dist/photo/commands.d.ts.map +1 -1
- package/dist/photo/commands.js +3 -3
- package/dist/photo/commands.js.map +1 -1
- package/dist/photo/compareDoc.js +1 -1
- package/dist/photo/compareDoc.js.map +1 -1
- package/dist/photo/dir.d.ts +1 -1
- package/dist/photo/dir.d.ts.map +1 -1
- package/dist/photo/dir.js +6 -5
- package/dist/photo/dir.js.map +1 -1
- package/dist/photo/gifDoc.d.ts.map +1 -1
- package/dist/photo/gifDoc.js +10 -4
- package/dist/photo/gifDoc.js.map +1 -1
- package/dist/photo/helpCenter.js +1 -1
- package/dist/photo/helpCenter.js.map +1 -1
- package/dist/photo/helpFile.js +1 -1
- package/dist/photo/helpFile.js.map +1 -1
- package/dist/photo/helpPaths.d.ts +1 -1
- package/dist/photo/helpPaths.js +1 -1
- package/dist/photo/helpShell.d.ts +16 -0
- package/dist/photo/helpShell.d.ts.map +1 -0
- package/dist/photo/helpShell.js +27 -0
- package/dist/photo/helpShell.js.map +1 -0
- package/dist/photo/index.d.ts +7 -11
- package/dist/photo/index.d.ts.map +1 -1
- package/dist/photo/index.js +11 -19
- package/dist/photo/index.js.map +1 -1
- package/dist/photo/photos.d.ts +5 -3
- package/dist/photo/photos.d.ts.map +1 -1
- package/dist/photo/photos.js +15 -14
- package/dist/photo/photos.js.map +1 -1
- package/dist/photo/pickerDoc.js +1 -1
- package/dist/photo/templates.d.ts +4 -0
- package/dist/photo/templates.d.ts.map +1 -0
- package/dist/photo/templates.js +29 -0
- package/dist/photo/templates.js.map +1 -0
- package/dist/photo/viewerDoc.js +1 -1
- package/dist/photo/viewerDoc.js.map +1 -1
- package/dist/photo/wizard.d.ts +1 -1
- package/dist/photo/wizard.js +2 -2
- package/dist/photo/wizard.js.map +1 -1
- package/dist/photo/wizardPort.d.ts +70 -0
- package/dist/photo/wizardPort.d.ts.map +1 -0
- package/dist/photo/wizardPort.js +232 -0
- package/dist/photo/wizardPort.js.map +1 -0
- package/dist/photo/wizardPortDocs.d.ts +6 -0
- package/dist/photo/wizardPortDocs.d.ts.map +1 -0
- package/dist/photo/wizardPortDocs.js +322 -0
- package/dist/photo/wizardPortDocs.js.map +1 -0
- package/dist/profile/commands.d.ts +5 -1
- package/dist/profile/commands.d.ts.map +1 -1
- package/dist/profile/commands.js +4 -3
- package/dist/profile/commands.js.map +1 -1
- package/dist/profile/index.d.ts +7 -13
- package/dist/profile/index.d.ts.map +1 -1
- package/dist/profile/index.js +14 -19
- package/dist/profile/index.js.map +1 -1
- package/dist/profile/setup.d.ts +1 -1
- package/dist/render/analysisPlate.d.ts +3 -3
- package/dist/render/analysisPlate.d.ts.map +1 -1
- package/dist/render/analysisPlate.js +4 -21
- package/dist/render/analysisPlate.js.map +1 -1
- package/dist/render/diet.d.ts +10 -6
- package/dist/render/diet.d.ts.map +1 -1
- package/dist/render/diet.js +8 -23
- package/dist/render/diet.js.map +1 -1
- package/dist/render/exercisePort.d.ts +1 -1
- package/dist/render/html.d.ts +0 -6
- package/dist/render/html.d.ts.map +1 -1
- package/dist/render/html.js +2 -44
- package/dist/render/html.js.map +1 -1
- package/dist/render/index.d.ts +0 -3
- package/dist/render/index.d.ts.map +1 -1
- package/dist/render/index.js +2 -2
- package/dist/render/index.js.map +1 -1
- package/dist/render/planWizardDocs.js +1 -1
- package/dist/render/planWizardDocs.js.map +1 -1
- package/dist/render/trendMiscPort.d.ts.map +1 -1
- package/dist/render/trendMiscPort.js +6 -4
- package/dist/render/trendMiscPort.js.map +1 -1
- package/dist/render/workoutPlanDocs.js +1 -1
- package/dist/render/workoutPlanDocs.js.map +1 -1
- package/dist/shared/alive.d.ts +22 -0
- package/dist/shared/alive.d.ts.map +1 -0
- package/dist/shared/alive.js +22 -0
- package/dist/shared/alive.js.map +1 -0
- package/dist/shared/commandSpec.d.ts +14 -4
- package/dist/shared/commandSpec.d.ts.map +1 -1
- package/dist/shared/copyBlock.d.ts +4 -0
- package/dist/shared/copyBlock.d.ts.map +1 -0
- package/dist/shared/copyBlock.js +26 -0
- package/dist/shared/copyBlock.js.map +1 -0
- package/dist/shared/docPage.js +1 -1
- package/dist/shared/healthRate.d.ts +21 -0
- package/dist/shared/healthRate.d.ts.map +1 -0
- package/dist/shared/healthRate.js +21 -0
- package/dist/shared/healthRate.js.map +1 -0
- package/dist/shared/kcalPerKg.d.ts +16 -0
- package/dist/shared/kcalPerKg.d.ts.map +1 -0
- package/dist/shared/kcalPerKg.js +16 -0
- package/dist/shared/kcalPerKg.js.map +1 -0
- package/dist/shared/meal.d.ts +46 -0
- package/dist/shared/meal.d.ts.map +1 -0
- package/dist/shared/meal.js +75 -0
- package/dist/shared/meal.js.map +1 -0
- package/dist/shared/nutritionRange.d.ts +28 -0
- package/dist/shared/nutritionRange.d.ts.map +1 -0
- package/dist/shared/nutritionRange.js +28 -0
- package/dist/shared/nutritionRange.js.map +1 -0
- package/dist/shared/pageStrips.d.ts +81 -0
- package/dist/shared/pageStrips.d.ts.map +1 -0
- package/dist/shared/pageStrips.js +166 -0
- package/dist/shared/pageStrips.js.map +1 -0
- package/dist/shared/planCopyBlock.d.ts +32 -0
- package/dist/shared/planCopyBlock.d.ts.map +1 -0
- package/dist/shared/planCopyBlock.js +34 -0
- package/dist/shared/planCopyBlock.js.map +1 -0
- package/dist/shared/sourceLine.d.ts +5 -5
- package/dist/shared/sourceLine.d.ts.map +1 -1
- package/dist/shared/sourceLine.js +3 -1
- package/dist/shared/sourceLine.js.map +1 -1
- package/dist/shared/time.d.ts +28 -0
- package/dist/shared/time.d.ts.map +1 -0
- package/dist/shared/time.js +37 -0
- package/dist/shared/time.js.map +1 -0
- package/dist/triggers/routeSpec.d.ts +3 -3
- package/dist/triggers/routeSpec.js +3 -3
- package/dist/triggers/routes.generated.d.ts +2 -2
- package/dist/weight/commands.d.ts +4 -1
- package/dist/weight/commands.d.ts.map +1 -1
- package/dist/weight/commands.js +5 -4
- package/dist/weight/commands.js.map +1 -1
- package/dist/weight/figures.d.ts.map +1 -1
- package/dist/weight/figures.js +3 -1
- package/dist/weight/figures.js.map +1 -1
- package/dist/weight/index.d.ts +11 -17
- package/dist/weight/index.d.ts.map +1 -1
- package/dist/weight/index.js +16 -19
- package/dist/weight/index.js.map +1 -1
- package/dist/weight/records.d.ts.map +1 -1
- package/dist/weight/records.js +4 -2
- package/dist/weight/records.js.map +1 -1
- package/dist/weight/review.js +2 -2
- package/dist/weight/review.js.map +1 -1
- package/dist/weight/weightUi.d.ts +16 -4
- package/dist/weight/weightUi.d.ts.map +1 -1
- package/dist/weight/weightUi.js +23 -53
- package/dist/weight/weightUi.js.map +1 -1
- package/dist/workout/commands.d.ts +16 -2
- package/dist/workout/commands.d.ts.map +1 -1
- package/dist/workout/commands.js +17 -16
- package/dist/workout/commands.js.map +1 -1
- package/dist/workout/index.d.ts +10 -19
- package/dist/workout/index.d.ts.map +1 -1
- package/dist/workout/index.js +17 -31
- package/dist/workout/index.js.map +1 -1
- package/dist/workout/land.d.ts +1 -1
- package/dist/workout/land.js +3 -3
- package/dist/workout/land.js.map +1 -1
- package/dist/workout/landBatch.d.ts +7 -5
- package/dist/workout/landBatch.d.ts.map +1 -1
- package/dist/workout/landBatch.js +17 -15
- package/dist/workout/landBatch.js.map +1 -1
- package/dist/workout/landBatchPages.d.ts.map +1 -1
- package/dist/workout/landBatchPages.js +2 -23
- package/dist/workout/landBatchPages.js.map +1 -1
- package/dist/workout/landPages.d.ts.map +1 -1
- package/dist/workout/landPages.js +2 -23
- package/dist/workout/landPages.js.map +1 -1
- package/dist/workout/landRunner.d.ts +8 -10
- package/dist/workout/landRunner.d.ts.map +1 -1
- package/dist/workout/landRunner.js +35 -56
- package/dist/workout/landRunner.js.map +1 -1
- package/dist/workout/planCopyBlock.d.ts +9 -0
- package/dist/workout/planCopyBlock.d.ts.map +1 -0
- package/dist/workout/planCopyBlock.js +9 -0
- package/dist/workout/planCopyBlock.js.map +1 -0
- package/dist/workout/planEditor.d.ts +94 -0
- package/dist/workout/planEditor.d.ts.map +1 -0
- package/dist/workout/planEditor.js +38 -0
- package/dist/workout/planEditor.js.map +1 -0
- package/dist/workout/planEditorCss.d.ts +13 -0
- package/dist/workout/planEditorCss.d.ts.map +1 -0
- package/dist/workout/planEditorCss.js +140 -0
- package/dist/workout/planEditorCss.js.map +1 -0
- package/dist/workout/planEditorDocs.d.ts +7 -0
- package/dist/workout/planEditorDocs.d.ts.map +1 -0
- package/dist/workout/planEditorDocs.js +56 -0
- package/dist/workout/planEditorDocs.js.map +1 -0
- package/dist/workout/planEditorPort.d.ts +45 -0
- package/dist/workout/planEditorPort.d.ts.map +1 -0
- package/dist/workout/planEditorPort.js +217 -0
- package/dist/workout/planEditorPort.js.map +1 -0
- package/dist/workout/planEditorRuntime.d.ts +15 -0
- package/dist/workout/planEditorRuntime.d.ts.map +1 -0
- package/dist/workout/planEditorRuntime.js +427 -0
- package/dist/workout/planEditorRuntime.js.map +1 -0
- package/dist/workout/planStore.d.ts.map +1 -1
- package/dist/workout/planStore.js +1 -3
- package/dist/workout/planStore.js.map +1 -1
- package/dist/workout/receipt.d.ts +1 -1
- package/dist/workout/receipt.js +1 -1
- package/dist/workout/receipt.js.map +1 -1
- package/dist/workout/review.d.ts +1 -1
- package/dist/workout/review.js +1 -1
- package/dist/workout/review.js.map +1 -1
- package/dist/workout/reviewDocs.d.ts +3 -0
- package/dist/workout/reviewDocs.d.ts.map +1 -0
- package/dist/{render → workout}/reviewDocs.js +2 -2
- package/dist/workout/reviewDocs.js.map +1 -0
- package/dist/workout/reviewDocsCss.d.ts.map +1 -0
- package/dist/{render → workout}/reviewDocsCss.js +1 -1
- package/dist/workout/reviewDocsCss.js.map +1 -0
- package/dist/workout/xunjiBackfill.d.ts.map +1 -1
- package/dist/workout/xunjiBackfill.js +4 -25
- package/dist/workout/xunjiBackfill.js.map +1 -1
- package/dist/workout/xunjiPush.d.ts.map +1 -1
- package/dist/workout/xunjiPush.js +4 -25
- package/dist/workout/xunjiPush.js.map +1 -1
- package/dist/workout/xunjiRunner.d.ts +11 -5
- package/dist/workout/xunjiRunner.d.ts.map +1 -1
- package/dist/workout/xunjiRunner.js +29 -29
- package/dist/workout/xunjiRunner.js.map +1 -1
- package/dist/xunji/backfill.d.ts +5 -3
- package/dist/xunji/backfill.d.ts.map +1 -1
- package/dist/xunji/backfill.js +11 -5
- package/dist/xunji/backfill.js.map +1 -1
- package/dist/xunji/catalog.d.ts +3 -1
- package/dist/xunji/catalog.d.ts.map +1 -1
- package/dist/xunji/catalog.js +12 -6
- package/dist/xunji/catalog.js.map +1 -1
- package/dist/xunji/fetch.d.ts +3 -4
- package/dist/xunji/fetch.d.ts.map +1 -1
- package/dist/xunji/fetch.js +8 -9
- package/dist/xunji/fetch.js.map +1 -1
- package/dist/xunji/key.d.ts +16 -56
- package/dist/xunji/key.d.ts.map +1 -1
- package/dist/xunji/key.js +44 -104
- package/dist/xunji/key.js.map +1 -1
- package/dist/xunji/planSource.d.ts +3 -3
- package/dist/xunji/planSource.js +6 -6
- package/dist/xunji/planSource.js.map +1 -1
- package/dist/xunji/rateLimit.d.ts +7 -2
- package/dist/xunji/rateLimit.d.ts.map +1 -1
- package/dist/xunji/rateLimit.js +12 -3
- package/dist/xunji/rateLimit.js.map +1 -1
- package/dist/xunji/run-sync.d.ts +3 -3
- package/dist/xunji/run-sync.d.ts.map +1 -1
- package/dist/xunji/run-sync.js +5 -5
- package/dist/xunji/run-sync.js.map +1 -1
- package/dist/xunji/run.d.ts +2 -4
- package/dist/xunji/run.d.ts.map +1 -1
- package/dist/xunji/run.js +5 -5
- package/dist/xunji/run.js.map +1 -1
- package/dist/xunji/subcommands.d.ts.map +1 -1
- package/dist/xunji/subcommands.js +2 -3
- package/dist/xunji/subcommands.js.map +1 -1
- package/dist/xunji/upsert.d.ts +4 -4
- package/dist/xunji/upsert.d.ts.map +1 -1
- package/dist/xunji/upsert.js +6 -6
- package/dist/xunji/upsert.js.map +1 -1
- package/package.json +2 -9
- package/dist/cli/legacy/index.d.ts +0 -25
- package/dist/cli/legacy/index.d.ts.map +0 -1
- package/dist/cli/legacy/index.js +0 -37
- package/dist/cli/legacy/index.js.map +0 -1
- package/dist/cli/legacy/routes/index.d.ts +0 -8
- package/dist/cli/legacy/routes/index.d.ts.map +0 -1
- package/dist/cli/legacy/routes/index.js +0 -23
- package/dist/cli/legacy/routes/index.js.map +0 -1
- package/dist/cli/legacy/routes/scene-01.d.ts +0 -12
- package/dist/cli/legacy/routes/scene-01.d.ts.map +0 -1
- package/dist/cli/legacy/routes/scene-01.js +0 -2
- package/dist/cli/legacy/routes/scene-01.js.map +0 -1
- package/dist/cli/legacy/routes/scene-02.d.ts +0 -18
- package/dist/cli/legacy/routes/scene-02.d.ts.map +0 -1
- package/dist/cli/legacy/routes/scene-02.js +0 -2
- package/dist/cli/legacy/routes/scene-02.js.map +0 -1
- package/dist/cli/legacy/routes/scene-03.d.ts +0 -13
- package/dist/cli/legacy/routes/scene-03.d.ts.map +0 -1
- package/dist/cli/legacy/routes/scene-03.js +0 -2
- package/dist/cli/legacy/routes/scene-03.js.map +0 -1
- package/dist/cli/legacy/routes/scene-04.d.ts +0 -10
- package/dist/cli/legacy/routes/scene-04.d.ts.map +0 -1
- package/dist/cli/legacy/routes/scene-04.js +0 -2
- package/dist/cli/legacy/routes/scene-04.js.map +0 -1
- package/dist/cli/legacy/routes/scene-05.d.ts +0 -10
- package/dist/cli/legacy/routes/scene-05.d.ts.map +0 -1
- package/dist/cli/legacy/routes/scene-05.js +0 -2
- package/dist/cli/legacy/routes/scene-05.js.map +0 -1
- package/dist/cli/legacy/routes/scene-06.d.ts +0 -10
- package/dist/cli/legacy/routes/scene-06.d.ts.map +0 -1
- package/dist/cli/legacy/routes/scene-06.js +0 -2
- package/dist/cli/legacy/routes/scene-06.js.map +0 -1
- package/dist/cli/legacy/routes/scene-07.d.ts +0 -10
- package/dist/cli/legacy/routes/scene-07.d.ts.map +0 -1
- package/dist/cli/legacy/routes/scene-07.js +0 -2
- package/dist/cli/legacy/routes/scene-07.js.map +0 -1
- package/dist/cli/legacy/routes/scene-08.d.ts +0 -12
- package/dist/cli/legacy/routes/scene-08.d.ts.map +0 -1
- package/dist/cli/legacy/routes/scene-08.js +0 -2
- package/dist/cli/legacy/routes/scene-08.js.map +0 -1
- package/dist/cli/legacy/routes/scene-09.d.ts +0 -12
- package/dist/cli/legacy/routes/scene-09.d.ts.map +0 -1
- package/dist/cli/legacy/routes/scene-09.js +0 -2
- package/dist/cli/legacy/routes/scene-09.js.map +0 -1
- package/dist/cli/legacy/routes/scene-10.d.ts +0 -10
- package/dist/cli/legacy/routes/scene-10.d.ts.map +0 -1
- package/dist/cli/legacy/routes/scene-10.js +0 -2
- package/dist/cli/legacy/routes/scene-10.js.map +0 -1
- package/dist/cli/legacy/scene-01.d.ts +0 -13
- package/dist/cli/legacy/scene-01.d.ts.map +0 -1
- package/dist/cli/legacy/scene-01.js +0 -2
- package/dist/cli/legacy/scene-01.js.map +0 -1
- package/dist/cli/legacy/scene-02.d.ts +0 -12
- package/dist/cli/legacy/scene-02.d.ts.map +0 -1
- package/dist/cli/legacy/scene-02.js +0 -2
- package/dist/cli/legacy/scene-02.js.map +0 -1
- package/dist/cli/legacy/scene-03.d.ts +0 -14
- package/dist/cli/legacy/scene-03.d.ts.map +0 -1
- package/dist/cli/legacy/scene-03.js +0 -2
- package/dist/cli/legacy/scene-03.js.map +0 -1
- package/dist/cli/legacy/scene-04.d.ts +0 -12
- package/dist/cli/legacy/scene-04.d.ts.map +0 -1
- package/dist/cli/legacy/scene-04.js +0 -2
- package/dist/cli/legacy/scene-04.js.map +0 -1
- package/dist/cli/legacy/scene-05.d.ts +0 -14
- package/dist/cli/legacy/scene-05.d.ts.map +0 -1
- package/dist/cli/legacy/scene-05.js +0 -2
- package/dist/cli/legacy/scene-05.js.map +0 -1
- package/dist/cli/legacy/scene-06.d.ts +0 -15
- package/dist/cli/legacy/scene-06.d.ts.map +0 -1
- package/dist/cli/legacy/scene-06.js +0 -2
- package/dist/cli/legacy/scene-06.js.map +0 -1
- package/dist/cli/legacy/scene-07.d.ts +0 -15
- package/dist/cli/legacy/scene-07.d.ts.map +0 -1
- package/dist/cli/legacy/scene-07.js +0 -2
- package/dist/cli/legacy/scene-07.js.map +0 -1
- package/dist/cli/legacy/scene-08.d.ts +0 -13
- package/dist/cli/legacy/scene-08.d.ts.map +0 -1
- package/dist/cli/legacy/scene-08.js +0 -2
- package/dist/cli/legacy/scene-08.js.map +0 -1
- package/dist/cli/legacy/scene-09.d.ts +0 -13
- package/dist/cli/legacy/scene-09.d.ts.map +0 -1
- package/dist/cli/legacy/scene-09.js +0 -2
- package/dist/cli/legacy/scene-09.js.map +0 -1
- package/dist/cli/legacy/scene-10.d.ts +0 -13
- package/dist/cli/legacy/scene-10.d.ts.map +0 -1
- package/dist/cli/legacy/scene-10.js +0 -2
- package/dist/cli/legacy/scene-10.js.map +0 -1
- package/dist/cli/legacy/types.d.ts +0 -16
- package/dist/cli/legacy/types.d.ts.map +0 -1
- package/dist/cli/legacy/types.js +0 -2
- package/dist/cli/legacy/types.js.map +0 -1
- package/dist/render/reviewDocs.d.ts +0 -3
- package/dist/render/reviewDocs.d.ts.map +0 -1
- package/dist/render/reviewDocs.js.map +0 -1
- package/dist/render/reviewDocsCss.d.ts.map +0 -1
- package/dist/render/reviewDocsCss.js.map +0 -1
- /package/dist/{render → workout}/reviewDocsCss.d.ts +0 -0
package/SKILL.md
CHANGED
|
@@ -28,8 +28,8 @@ calorie-cmd-read calorie.help.lookup --params '{"q":"看今日主页"}'
|
|
|
28
28
|
- 二进制:`packages/skill-calorie/dist/cli/cmd_read.js`(bin `calorie-cmd-read`),纯 CLI 单轨,无面板/定时/外联动。
|
|
29
29
|
- 运维定位(C1 #43):`skill-calorie-fetch`(`dist/fetch/cli.js`)仅运维(import/validate/dedupe/export/history/audit/catalog-verify),不承载业务读写;业务读写唯一出口仍为 `calorie-cmd-read`。
|
|
30
30
|
- 契约:P9 冻结 argv+JSON+exit;缺 key exit 2、未知 key exit 3、取数/缺失 exit 4、envelope/渲染/落盘 exit 5、预检 exit 1。
|
|
31
|
-
- stdout 纯净:成功只打 envelope JSON 一行;进度与错误一律 stderr;HTML 默认落
|
|
32
|
-
- 预检:engines>=22.13
|
|
31
|
+
- stdout 纯净:成功只打 envelope JSON 一行;进度与错误一律 stderr;HTML 默认落 `<库目录>/<产物目录>/<中文command>_<YYYYMMDD>_<HHMMSS>[_N].html`(同秒冲突自动加 `_2`/`_3`)——`<库目录>`=配置文件 `~/.ilife/calorie.yaml` 的 `db.dir`,空串=数据目录 `~/.ilife/data/`;`<产物目录>`=同文件的 `html.dir`(默认 `calorie_html`)。落点回传在 envelope `data.output`(**恒绝对路径**,相对库目录/`--html` 亦按 cwd 归一后回传);`--html <路径>` 显式覆盖任意路径(**唯一落点参数**:老技能的 `--output` 别名已按 #245 删除,给了即 exit 2,与其余五家同形)。
|
|
32
|
+
- 预检:engines>=22.13;库目录与照片目录都从配置文件取(`~/.ilife/calorie.yaml` 的 `db.dir` 与 `photos.dir`,空串=按各自默认回落——库目录落数据目录 `~/.ilife/data/`,照片目录算「还没配」),**没有一个环境变量是必设的**;照片目录没配时,照片存在位记 null、不断言。
|
|
33
33
|
- 写链(#40):52 写键(diet/water/weight/exercise/photo/product/profile/goal/body/workout)同出口可执行,一律 `receipt` 形(`ok/message` + T10 `receipt` 回执);缺参 exit 2、缺失阻断 exit 4;训记同步与 mmx vision 两步向导无独立写键(二期,见 triggers 旧链)。
|
|
34
34
|
|
|
35
35
|
## envelope 全字段
|
|
@@ -317,7 +317,7 @@ calorie-cmd-read calorie.help.lookup --params '{"q":"看今日主页"}'
|
|
|
317
317
|
- **「卡路里HELP」=老技能同款 HELP 文件**(#139 起):`calorie-cmd-read calorie.help.center` 缺省即出 `卡路里_HELP_<时间戳>.html`(老命名,V4 三级目录壳,与老技能视觉一致;落 `data.output`,约 300 KB **只落盘**、不进 envelope)。**除下面的复用窗口外别再给它加参数**——缺省就是目的地交付物。
|
|
318
318
|
- **反复读不再涨目录(#245)**:HELP 文件与速查台**同一主体一天内只留一份**——24 小时内再读就**复用已有那份**(不新建、不改写;`data.output` 给的就是它)。要别的窗口给 `--params '{"reuseHours":3}'`(小时);要**每次都要一份最新的**给 `{"reuseHours":0}`。窗口内已有一份、而你刚改过内容时,那份旧产物**不会自动刷新**(窗口语义如此)——真要新的就带 `reuseHours:0`。业务页面与失败回执**不吃窗口**(每跑一次仍各留一份)。
|
|
319
319
|
- **速查台(#88,须显式要)**:`--params '{"mode":"file"}'` 出完整 HTML 速查台(436 场景/54 子功能/10 分组,卡级复制按钮,约 1 MB,落 `卡路里_速查台_<时间戳>.html`);`{"mode":"inline"}` 出内嵌片段/`{"mode":"text"}` 出纯文本索引;非法 `mode` 与 `q`+`mode` 同给一律 exit 2。
|
|
320
|
-
- **照片 11 键走 `q`**(不是 `mode`):`--params '{"q":"记身材照"}'` 现找、`{"q":""}` 全表,顺序跟 SCENE_09_PHOTO SoT 序;每条命中自带 `exec`(node
|
|
320
|
+
- **照片 11 键走 `q`**(不是 `mode`):`--params '{"q":"记身材照"}'` 现找、`{"q":""}` 全表,顺序跟 SCENE_09_PHOTO SoT 序;每条命中自带 `exec`(node 一行式,读配置里的库目录)+`legacyCli`(老家 python 原命令备查);模块 `skill-calorie/photo/photo`+`skill-calorie/photo/photos`,函数须存在(单测逐条 import 断言)。
|
|
321
321
|
- **通用唤醒词现找**:`calorie.help.lookup --params '{"q":"<唤醒词/分类/描述子串>"}'`(436 唤醒词全量,10 场景,空串抛,不返全表冒充命中)。
|
|
322
322
|
- 二进制原样:照片只 render 文件名 <img> 引用 + fileExists 位,不嵌 base64;GIF 只出任务描述不碰二进制。
|
|
323
323
|
|
|
@@ -542,20 +542,21 @@ calorie-cmd-read calorie.help.lookup --params '{"q":"看今日主页"}'
|
|
|
542
542
|
```
|
|
543
543
|
|
|
544
544
|
- HELP 面:旧词 85 条走 `calorie.help.lookup --params '{"q":"<唤醒词>"}'` 现找(抽查 5/5 绿,见证据件);3 条新词(看组合分析/看热量趋势/看整体趋势)在冻结表无行,现找无精确命中,路由直达可执行(真出口已验),补行留收口(本票不改冻结表)。
|
|
545
|
-
- 固定种子抽查(`docs/research/t81-seed.mjs
|
|
545
|
+
- 固定种子抽查(`docs/research/t81-seed.mjs`):「今天」由测试把整只钟钉到种子日 2026-09-07(`test/freeze-clock.cjs`,父进程与子进程一起钉),故读数与机器时钟无关。每组至少 1 条真出口 exit 0,结果型 HTML 落盘、回执绝对路径,指标全有限数(判定①②绿,判定③视觉留用户肉眼;读数见证据件)。
|
|
546
546
|
|
|
547
547
|
## 环境与出 scope
|
|
548
548
|
|
|
549
|
-
-
|
|
549
|
+
- 路径类取值一律读配置文件 `~/.ilife/calorie.yaml`(**配置文件是唯一真相,环境变量不参与配置**):库目录=`db.dir`(空串=数据目录 `~/.ilife/data/`,首次读时自动建)、库文件名=`db.name`(默认 `calorie_data.db`)、产物目录=`html.dir`(默认 `calorie_html`)、照片目录=`photos.dir`(**空串=这一项还没配**:取数侧跳过「照片文件在不在」的校验、写侧直接阻断,不猜路径)、GIF 子目录=`photos.gifs`(默认 `gifs`)、训记五项=`xunji.*`、落地三项=`land.*`;`ILIFE_CONFIG_DIR` 设定且非空即整体接管配置目录。真实 DB 禁迁,测试 tmp 隔离;老家只读对照。取值面与环境项见 docs/env.md。
|
|
550
550
|
- 出 scope(一期外):面板(二期单 MAP)、定时任务、本技能外联动(router+作息/备忘/训记仅只读对照,不落本包)。
|
|
551
551
|
|
|
552
552
|
## 公共安装器运行时(skills-cli 装完必读,#47)
|
|
553
553
|
|
|
554
|
-
- 本仓库 `dist/` 不进 git:skills-cli 只把本目录(含本文件)装进 agent,不带可执行文件;“不走 npm”的只是 skill 发现这一步,运行时走 npm(`skill-calorie@0.2.
|
|
555
|
-
- 取运行时二选一:`npm install -g skill-calorie@0.2.
|
|
556
|
-
- HELP 现找→cmd_read→envelope→HTML
|
|
554
|
+
- 本仓库 `dist/` 不进 git:skills-cli 只把本目录(含本文件)装进 agent,不带可执行文件;“不走 npm”的只是 skill 发现这一步,运行时走 npm(`skill-calorie@0.2.5` 已发布)。
|
|
555
|
+
- 取运行时二选一:`npm install -g skill-calorie@0.2.5`(一劳永逸),或免安装 `npx -p skill-calorie@0.2.5 calorie-cmd-read …`(每次现拉)。若 npm 报 EUNSUPPORTEDPROTOCOL(workspace:),说明已发布包待重发(发版流修,见 docs/public-installer-47.md「已发布包阻塞」),先用本仓构建产物验证链路。
|
|
556
|
+
- HELP 现找→cmd_read→envelope→HTML 验证(隔离靠把**配置目录**指到临时目录:`ILIFE_CONFIG_DIR` 设定且非空即整体接管配置目录,配置里的 `db.dir` 再决定库与产物落哪;node>=22.13;完整口径见 docs/public-installer-47.md):
|
|
557
557
|
```sh
|
|
558
|
-
|
|
558
|
+
cfg="$(mktemp -d)" && mkdir -p "$cfg/db" && printf 'db:\n dir: %s\n' "$cfg/db" > "$cfg/calorie.yaml"
|
|
559
|
+
ILIFE_CONFIG_DIR="$cfg" calorie-cmd-read calorie.help.lookup --params '{"q":"看今日主页"}'
|
|
559
560
|
```
|
|
560
561
|
- stdout/落盘契约与「唯一出口(T11)」节同源(成功只一行 envelope JSON;HTML 落点见 `data.output`)。
|
|
561
562
|
- 版本钉死登记:本节版本硬编码现为 `@0.2.4`(已随 #44 发版流同步;历史登记见 docs/public-installer-47.md「版本钉死登记」)。
|
package/dist/.gen-inputs.json
CHANGED
|
@@ -2,129 +2,45 @@
|
|
|
2
2
|
"version": 2,
|
|
3
3
|
"note": "生成器输入(声明源)的内容印记 v2:每条记 {src, dist} 配对(源文本与编译产物 .js 文本的 sha256),由 `pnpm build` 调 `node packages/skill-calorie/scripts/gen-cli.mjs --stamp` 写入;`pnpm gen`/`pnpm gen:check` 按它判陈旧、按现场配对门判脱钩——内容判据,不看时间戳。",
|
|
4
4
|
"files": {
|
|
5
|
-
"cli/legacy/scene-01.ts": {
|
|
6
|
-
"src": "a2fe63008c4fdfa7b2baee1eaa4b846d1b5c34678eeb73732680b6dafe67fc0d",
|
|
7
|
-
"dist": "9402117a32d29c98b54205ff4e7dad195b554a5264273731cc3d87d89cb2a478"
|
|
8
|
-
},
|
|
9
|
-
"cli/legacy/scene-02.ts": {
|
|
10
|
-
"src": "876ca5ad3a62db5ead15e1a8c1eeb05c3d9376d870a5721ea966f1a2148cb068",
|
|
11
|
-
"dist": "c550e51f086eb55d19203034fe2a07cf0babf5693f187eebe1067dccdb191367"
|
|
12
|
-
},
|
|
13
|
-
"cli/legacy/scene-03.ts": {
|
|
14
|
-
"src": "95ce315f877aeb16203a3c0c10759f5ad3f5b36449ef076220492f1270339ac4",
|
|
15
|
-
"dist": "423fc99daeabaf01846a528a3b6ca794cadbb12de20158e7587d7aa70f838a5b"
|
|
16
|
-
},
|
|
17
|
-
"cli/legacy/scene-04.ts": {
|
|
18
|
-
"src": "00dd1a0a286c62aaf35ae29d69508517669d1e1b5ebcd127db5d02505e772bfd",
|
|
19
|
-
"dist": "f817376bc30cb093eb462bbff103ebc4b2adfe0c5cf749cc082d6d50798f6c3f"
|
|
20
|
-
},
|
|
21
|
-
"cli/legacy/scene-05.ts": {
|
|
22
|
-
"src": "f3efaa5e1a19531f1d2f969a3db84e80a3b70b8f7771ec87b772a689f8ea2c6c",
|
|
23
|
-
"dist": "5e28dd5c49560b3e20b1f9024f50755c0fb2f9eea8a0085a330c47d848ce6ed3"
|
|
24
|
-
},
|
|
25
|
-
"cli/legacy/scene-06.ts": {
|
|
26
|
-
"src": "d23863793d2344b467e04b0f8a3fa7fb944343ab78dec31dca7380116133a6c3",
|
|
27
|
-
"dist": "8eaa2d1978230c208e1535e51a28c928dfb65fcd78e6e43d37acb6c2b72c20af"
|
|
28
|
-
},
|
|
29
|
-
"cli/legacy/scene-07.ts": {
|
|
30
|
-
"src": "ceec210a3357db5b44c2cddc50702ffcbadae41d7126d59b75cc441dec95b46b",
|
|
31
|
-
"dist": "3afdc0c05d20221461ff609de6cece74ee0e54e74f6e3d83d6e8d5befee625fa"
|
|
32
|
-
},
|
|
33
|
-
"cli/legacy/scene-08.ts": {
|
|
34
|
-
"src": "5730256ce05284ce05ca8d0c09b9ef2f36cd43bd3b73ec6b8b487e80b2f1b555",
|
|
35
|
-
"dist": "4b36561fd19645b6ebf402c759f753887277158a16b0fdc7815ada4fd3c336e3"
|
|
36
|
-
},
|
|
37
|
-
"cli/legacy/scene-09.ts": {
|
|
38
|
-
"src": "2ab227e912611c9e23a9ecf99871ef36e9940401d33aafed1b6f62e0c17ed4d1",
|
|
39
|
-
"dist": "3eda4ddac64245ef21c4bba0b393d38ef0d82d5e5105a6891c03d24f8171fbbb"
|
|
40
|
-
},
|
|
41
|
-
"cli/legacy/scene-10.ts": {
|
|
42
|
-
"src": "f0262dfeb0c6bfabc316a5a76639c39568442c00cbdeaa9a544ffaebe907c56c",
|
|
43
|
-
"dist": "e27b3b08eddeff81ef3bfa5f509791184691eed927b7b2e59010f559c98ef55f"
|
|
44
|
-
},
|
|
45
5
|
"analysis/commands.ts": {
|
|
46
6
|
"src": "aa1c8b83c86d16c95b0c7183b6262efffd11588b6bdda6ff1a93b86069df7992",
|
|
47
7
|
"dist": "c31b52ff5c2bf8d0789a9575cbc295477dd476bf5fe745aa56e3675f64db2b61"
|
|
48
8
|
},
|
|
49
9
|
"body/commands.ts": {
|
|
50
|
-
"src": "
|
|
51
|
-
"dist": "
|
|
10
|
+
"src": "1326a440762c4ecab139d949af7c66f842f766019669366669795a1c882d0420",
|
|
11
|
+
"dist": "07cec9490f35d19cbb38665cf21b6979df6dda7391731707ad858f6fa662013e"
|
|
52
12
|
},
|
|
53
13
|
"diet/commands.ts": {
|
|
54
|
-
"src": "
|
|
55
|
-
"dist": "
|
|
14
|
+
"src": "4505a8f491b56c0e937ce5b9e92f75be79accbf6a163e9298cdc93ee9cca4f87",
|
|
15
|
+
"dist": "b827de3e08cfbdd3707888e18d9eef07a6802acf40c61e02513eb1ab649ce734"
|
|
56
16
|
},
|
|
57
17
|
"exercise/commands.ts": {
|
|
58
|
-
"src": "
|
|
59
|
-
"dist": "
|
|
18
|
+
"src": "3a1bd9d915e1791fd9f60fa1f6d64c936d5ae7ad1c7130fff92b45bcbf000b22",
|
|
19
|
+
"dist": "4e6e196c22bd9b09e5ac42f4324440214f6a843d4fc3c9e77260feebdf8527ff"
|
|
60
20
|
},
|
|
61
21
|
"goal/commands.ts": {
|
|
62
|
-
"src": "
|
|
63
|
-
"dist": "
|
|
22
|
+
"src": "99600fb272d82a2c0f665a23aacd656589b691c43f53babefc7064fb6308bc74",
|
|
23
|
+
"dist": "1bec30f220eccf7b61205fc804a51dad94f27f055d4654f77a615ddab1c3f9ae"
|
|
64
24
|
},
|
|
65
25
|
"home/commands.ts": {
|
|
66
26
|
"src": "40df92ce0be1be4ad63317e2ba5f1502f0f08bcffdcf99eae6d87e5e4d7a77ef",
|
|
67
27
|
"dist": "6c1deabc2c10461022091fa2fd8dcc64ba64dea5bd8724f65e453a947b851562"
|
|
68
28
|
},
|
|
69
29
|
"photo/commands.ts": {
|
|
70
|
-
"src": "
|
|
71
|
-
"dist": "
|
|
30
|
+
"src": "10c777ec182117a914451ea050dd28c36a67218cb0587348ed0f511e0c44d919",
|
|
31
|
+
"dist": "f115cf3220a27b4cdc99bafba22d92541c9f9ef46e8e1900f667d61f6ddcab7e"
|
|
72
32
|
},
|
|
73
33
|
"profile/commands.ts": {
|
|
74
|
-
"src": "
|
|
75
|
-
"dist": "
|
|
34
|
+
"src": "8407fbb166b0ae2624a631cb7e373b8a345b13d52a9c6ff3f80af1244490e33f",
|
|
35
|
+
"dist": "ac9d17106e05bd201994d456c09b70a7262a1b1ea92830f1024bdd6e9f8594ee"
|
|
76
36
|
},
|
|
77
37
|
"weight/commands.ts": {
|
|
78
|
-
"src": "
|
|
79
|
-
"dist": "
|
|
38
|
+
"src": "a84d42ff687f063b02627858667618adf92645932dccf97b16c7affc60d10454",
|
|
39
|
+
"dist": "a078574c4e146f09a0961614694c8abb9ea43538b691f88d7c101b2da1991062"
|
|
80
40
|
},
|
|
81
41
|
"workout/commands.ts": {
|
|
82
|
-
"src": "
|
|
83
|
-
"dist": "
|
|
84
|
-
},
|
|
85
|
-
"cli/legacy/routes/index.ts": {
|
|
86
|
-
"src": "ab41e99fb58c1c985a0a11341ce7d9fa0d4c01eb85fa61b66eed11a2ebd5d3c8",
|
|
87
|
-
"dist": "aee7576f87f7f87130ee28a1beec9d29b6ce7878a1b2086ab933047de642ed9d"
|
|
88
|
-
},
|
|
89
|
-
"cli/legacy/routes/scene-01.ts": {
|
|
90
|
-
"src": "46c85985e0a640ab230c1b6bdc379198773bc42e5a110462515b361199b625e6",
|
|
91
|
-
"dist": "bf71f7ce9573472297203f45de427bc8e97f450918cde9d849de6481a98c8b2c"
|
|
92
|
-
},
|
|
93
|
-
"cli/legacy/routes/scene-02.ts": {
|
|
94
|
-
"src": "ec4e56ded6f4b19b4c780c2f1e0bd5a9519ec24493a1844a38ac78be8400bc28",
|
|
95
|
-
"dist": "1a5e5852c412244d4e54b89b31eda3234b7695a1aab55f125bb819ee9c1c3417"
|
|
96
|
-
},
|
|
97
|
-
"cli/legacy/routes/scene-03.ts": {
|
|
98
|
-
"src": "20efe31c50c404d69d60c0a259872492f5c6f50e33107e3dfb8e78d5a2111e1d",
|
|
99
|
-
"dist": "475a26a9ee3766d7c1cf3f27ed88fd9c2f1aedc1b17c57fdace3b4abbaedef16"
|
|
100
|
-
},
|
|
101
|
-
"cli/legacy/routes/scene-04.ts": {
|
|
102
|
-
"src": "9776dccf3df1a8188f1c2f0a066a0a07bdb869b5b726e86721f5ded808fa957b",
|
|
103
|
-
"dist": "170f1fd93397c81ae98789636963226171550cfcfefe8d78ff69622ed6ada6d0"
|
|
104
|
-
},
|
|
105
|
-
"cli/legacy/routes/scene-05.ts": {
|
|
106
|
-
"src": "0c5f1cd5d91b1007f2119c589fb6e499937083574d0cdb77c04fea2db3b4ab4b",
|
|
107
|
-
"dist": "318a24a755fb15a8cfeadddfaab1c332db6cb01562d0c02f2daaf4b4f06a6b9e"
|
|
108
|
-
},
|
|
109
|
-
"cli/legacy/routes/scene-06.ts": {
|
|
110
|
-
"src": "e62944e6e42aac746b23ec04274737e427fb3c3d9ea3c50f50e03fa527af7393",
|
|
111
|
-
"dist": "f93c427cc8d1fbd28738fc0557cfb9858e7cbb1168ceca81411c98554b258b8c"
|
|
112
|
-
},
|
|
113
|
-
"cli/legacy/routes/scene-07.ts": {
|
|
114
|
-
"src": "f7c5fb751db8be50c9e379636b259c0ba301dd70ea68dd26d4050ee324a96a2b",
|
|
115
|
-
"dist": "da3643bb4c52fd8126b516714a3b5d247746929766714f920cc30ece280070a3"
|
|
116
|
-
},
|
|
117
|
-
"cli/legacy/routes/scene-08.ts": {
|
|
118
|
-
"src": "9ebb84da5b839d170ca42222c4db756084d320e437b97e0c010f2a165e329fb8",
|
|
119
|
-
"dist": "efb17b1806a60d1ac12bb9818bc56df55371fc5999c1d8c4b93b97999800977b"
|
|
120
|
-
},
|
|
121
|
-
"cli/legacy/routes/scene-09.ts": {
|
|
122
|
-
"src": "667c044972e9c7dd17a13a0231e29336de6fd41529ca8df9ab41c6072c107e74",
|
|
123
|
-
"dist": "3589d1969cad30bcfe95f4dc4298442097b299e490783baea9293ac132a798e3"
|
|
124
|
-
},
|
|
125
|
-
"cli/legacy/routes/scene-10.ts": {
|
|
126
|
-
"src": "580cc6146d9529764b1e7428096f16381009e8caaebaea1bc82540ccb60e1983",
|
|
127
|
-
"dist": "5b1371b6f62b8d966137188467906ccc65b05da1f65c0731314299e04c077808"
|
|
42
|
+
"src": "4bf37e9384fc1d75575f2741f4a7756ceca77a123efe4e97030c03fa1e17e433",
|
|
43
|
+
"dist": "b4c897369044b406d430cd384e720951189cabe2714b9e85603d3067e837e015"
|
|
128
44
|
},
|
|
129
45
|
"analysis/routes.ts": {
|
|
130
46
|
"src": "ddb905ed696794f1ad3e65e14ac400e026c50796738f247fd3eb7b3ddee69c78",
|
|
@@ -1,4 +1,9 @@
|
|
|
1
|
-
/** T5 #24 · 诊断公共件(对照老家 anomaly.py 顶部 helpers)。
|
|
1
|
+
/** T5 #24 · 诊断公共件(对照老家 anomaly.py 顶部 helpers)。
|
|
2
|
+
*
|
|
3
|
+
* #717 批①·餐别归一:本件原来自写一套小时边界(10/15/21),与共用位正本
|
|
4
|
+
* (早 6-10/午 10-14/下午茶 14-18/晚 18-22/夜宵 22-6)在 14:30/21:30/22:30
|
|
5
|
+
* 这类时刻给出不同餐别——同一条记录在「餐别分布」页与「诊断饮食结构问题」页被算进不同的餐。
|
|
6
|
+
* 现在归桶只走 `shared/meal.ts` 的 `mealBucketOf`,本件不再出现任何字面小时数。 */
|
|
2
7
|
import type { DatabaseSync } from 'node:sqlite';
|
|
3
8
|
import { seriesAvg, seriesDelta } from '../series.js';
|
|
4
9
|
import type { DaySeries } from '../series.js';
|
|
@@ -38,6 +43,11 @@ export declare function topFoods(db: DatabaseSync, start: string, end: string, c
|
|
|
38
43
|
total: number;
|
|
39
44
|
times: number;
|
|
40
45
|
}>;
|
|
46
|
+
/** 餐次结构(四桶次数与占比):早餐/午餐/晚餐/加餐夜宵。
|
|
47
|
+
*
|
|
48
|
+
* 归桶**只走共用位**(#717 批①):本件不再写小时边界,`加餐/夜宵` 这一桶=
|
|
49
|
+
* `mealBucketOf` 判成「加餐」的行(下午茶 + 夜宵),与「餐别分布」页那一桶同一条判据、
|
|
50
|
+
* 同一批行——两个页面对同一天给出同样的餐次统计。 */
|
|
41
51
|
export declare function mealStructure(db: DatabaseSync, start: string, end: string): Record<string, {
|
|
42
52
|
times: number;
|
|
43
53
|
share: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../../src/analysis/anomaly/common.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../../src/analysis/anomaly/common.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { FetchError } from '../../fetch/errors.js';
|
|
2
2
|
import { seriesAvg, seriesDelta } from '../series.js';
|
|
3
3
|
import { EX_ALIVE } from '../utils.js';
|
|
4
|
+
import { mealBucketOf } from '../../shared/meal.js';
|
|
4
5
|
export const MIN_DAYS = 7;
|
|
5
6
|
export const PRED_MIN = 14;
|
|
6
7
|
export const round = (n) => Math.round(n);
|
|
@@ -40,22 +41,20 @@ export function topFoods(db, start, end, col = 'calories', limit = 5) {
|
|
|
40
41
|
const raw = db.prepare('SELECT food_name AS n, SUM(' + col + ') AS total, COUNT(*) AS times FROM food_log WHERE date BETWEEN ? AND ? AND food_name != ? GROUP BY food_name ORDER BY total DESC LIMIT ?').all(start, end, '💧水', limit);
|
|
41
42
|
return raw.map((r) => ({ food: r.n, total: round1(r.total ?? 0), times: r.times }));
|
|
42
43
|
}
|
|
44
|
+
/** 餐次结构(四桶次数与占比):早餐/午餐/晚餐/加餐夜宵。
|
|
45
|
+
*
|
|
46
|
+
* 归桶**只走共用位**(#717 批①):本件不再写小时边界,`加餐/夜宵` 这一桶=
|
|
47
|
+
* `mealBucketOf` 判成「加餐」的行(下午茶 + 夜宵),与「餐别分布」页那一桶同一条判据、
|
|
48
|
+
* 同一批行——两个页面对同一天给出同样的餐次统计。 */
|
|
43
49
|
export function mealStructure(db, start, end) {
|
|
44
50
|
const raw = db.prepare("SELECT time AS t FROM food_log WHERE date BETWEEN ? AND ? AND food_name != '💧水'").all(start, end);
|
|
45
|
-
const rows = raw.map((r) => [r.t]);
|
|
46
51
|
const buckets = { '早餐': 0, '午餐': 0, '晚餐': 0, '加餐/夜宵': 0 };
|
|
47
|
-
for (const r of
|
|
48
|
-
const
|
|
49
|
-
if (
|
|
52
|
+
for (const r of raw) {
|
|
53
|
+
const b = mealBucketOf(r.t);
|
|
54
|
+
if (b === null)
|
|
50
55
|
continue;
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
else if (h < 15)
|
|
54
|
-
buckets['午餐'] = buckets['午餐'] + 1;
|
|
55
|
-
else if (h < 21)
|
|
56
|
-
buckets['晚餐'] = buckets['晚餐'] + 1;
|
|
57
|
-
else
|
|
58
|
-
buckets['加餐/夜宵'] = buckets['加餐/夜宵'] + 1;
|
|
56
|
+
const key = b === '加餐' ? '加餐/夜宵' : b;
|
|
57
|
+
buckets[key] = buckets[key] + 1;
|
|
59
58
|
}
|
|
60
59
|
const total = Object.values(buckets).reduce((a, b) => a + b, 0) || 1;
|
|
61
60
|
const out = {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"common.js","sourceRoot":"","sources":["../../../src/analysis/anomaly/common.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"common.js","sourceRoot":"","sources":["../../../src/analysis/anomaly/common.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"diet.d.ts","sourceRoot":"","sources":["../../../src/analysis/anomaly/diet.ts"],"names":[],"mappings":"AAAA,6CAA6C;AAC7C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAGhD,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"diet.d.ts","sourceRoot":"","sources":["../../../src/analysis/anomaly/diet.ts"],"names":[],"mappings":"AAAA,6CAA6C;AAC7C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAGhD,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAMxD,wBAAgB,YAAY,CAAC,EAAE,EAAE,YAAY,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,SAAS,CAoB7E;AAED,wBAAgB,aAAa,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,SAAS,CAoB5D;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,SAAS,CA+BjE;AAED,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,YAAY,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,SAAS,CAsBlF"}
|
|
@@ -1,5 +1,9 @@
|
|
|
1
1
|
import { getActivityFactor } from '../utils.js';
|
|
2
2
|
import { base, degrade, mealStructure, round, seriesAvg, topFoods } from './common.js';
|
|
3
|
+
/* #717 批②·推荐区间归一:判决依据的区间只有一处定义(共用位 `shared/nutritionRange.ts`)。
|
|
4
|
+
本件原先自写一套无出处的数(15-30/40-60/20-35),与配比页印出来的那套(10-20/45-65/20-35)
|
|
5
|
+
在同一份库上给出两个答案——同一条记录在两个页面上被判成两个结论。 */
|
|
6
|
+
import { NUTRITION_RANGE, nutritionRangeNote } from '../../shared/nutritionRange.js';
|
|
3
7
|
export function diagDietOver(db, series) {
|
|
4
8
|
const out = base(series, 'diet_over', '诊断饮食超标');
|
|
5
9
|
const goal = series[0]?.calorieGoal ?? 1800;
|
|
@@ -55,11 +59,15 @@ export function diagDietUnbalanced(series) {
|
|
|
55
59
|
'碳水': round((c * 4) / total * 1000) / 10,
|
|
56
60
|
'脂肪': round((f * 9) / total * 1000) / 10,
|
|
57
61
|
};
|
|
58
|
-
|
|
59
|
-
|
|
62
|
+
/* #717 批②·推荐区间归一:判决依据=共用位正本(与配比页印出来的那套同一个定义地)。
|
|
63
|
+
这张映射表只做「中文名 → 正本键」的翻译,**不再出现任何字面区间数**。 */
|
|
64
|
+
const ref = {
|
|
65
|
+
'蛋白': NUTRITION_RANGE.protein, '碳水': NUTRITION_RANGE.carb, '脂肪': NUTRITION_RANGE.fat,
|
|
66
|
+
};
|
|
67
|
+
const off = Object.keys(shares).filter((k) => { const r = ref[k]; const v = shares[k]; return !(r.min <= v && v <= r.max); });
|
|
60
68
|
out.findings.push({
|
|
61
69
|
cause: '三大营养占比',
|
|
62
|
-
evidence: '蛋白 ' + shares['蛋白'] + '% / 碳水 ' + shares['碳水'] + '% / 脂肪 ' + shares['脂肪'] + '%(
|
|
70
|
+
evidence: '蛋白 ' + shares['蛋白'] + '% / 碳水 ' + shares['碳水'] + '% / 脂肪 ' + shares['脂肪'] + '%(' + nutritionRangeNote() + ')',
|
|
63
71
|
confidence: '中',
|
|
64
72
|
action: off.length > 0 ? '失衡维度:' + off.join('、') + ',针对性调整(蛋白不足→加蛋奶豆肉;碳水过高→减精制碳水;脂肪过高→减油/油炸)' : '三大营养占比在均衡范围',
|
|
65
73
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"diet.js","sourceRoot":"","sources":["../../../src/analysis/anomaly/diet.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,aAAa,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"diet.js","sourceRoot":"","sources":["../../../src/analysis/anomaly/diet.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,10 +2,12 @@
|
|
|
2
2
|
*
|
|
3
3
|
* 薄壳:唯一数据源 = T5 buildSeries,不自算缺口(老家 v2 T5 薄壳化后同样)。
|
|
4
4
|
* 热量缺口 = 消耗 − 摄入,正=缺口;消耗 = TDEE + 当日运动;摄入 = 当日食物(不含水)。
|
|
5
|
-
* KCAL_PER_KG
|
|
5
|
+
* KCAL_PER_KG(=7700,脂肪):正本自 #717 批④ 起住共用位 `shared/kcalPerKg.ts`,本件只按原名转出。
|
|
6
|
+
* weekly_deficit_per_day: 300 沿老家 target 段。
|
|
6
7
|
*/
|
|
7
8
|
import type { DatabaseSync } from 'node:sqlite';
|
|
8
|
-
|
|
9
|
+
import { KCAL_PER_KG } from '../shared/kcalPerKg.js';
|
|
10
|
+
export { KCAL_PER_KG };
|
|
9
11
|
export declare const WEEKDAY_NAMES: string[];
|
|
10
12
|
export declare function weekdayName(isoDate: string): string;
|
|
11
13
|
export interface DeficitDay {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deficit.d.ts","sourceRoot":"","sources":["../../src/analysis/deficit.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"deficit.d.ts","sourceRoot":"","sources":["../../src/analysis/deficit.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAGhD,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAGrD,OAAO,EAAE,WAAW,EAAE,CAAC;AACvB,eAAO,MAAM,aAAa,UAA6C,CAAC;AAExE,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAInD;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;CAC9E;AAED,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,eAAe,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAChF,aAAa,EAAE,MAAM,CAAC;IAAC,eAAe,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;CACjF;AAED,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,cAAc,CAAC;IACxB,MAAM,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,mBAAmB,EAAE,MAAM,CAAA;KAAE,CAAC;IACtE,MAAM,EAAE,UAAU,EAAE,CAAC;IACrB,IAAI,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAA;KAAE,CAAC;CAChG;AAED,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,WAAW,CA4C1F"}
|
package/dist/analysis/deficit.js
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { FetchError } from '../fetch/errors.js';
|
|
2
2
|
import { round2 } from '../kcal.js';
|
|
3
|
+
import { KCAL_PER_KG } from '../shared/kcalPerKg.js';
|
|
3
4
|
import { buildSeries } from './series.js';
|
|
4
|
-
export
|
|
5
|
+
export { KCAL_PER_KG };
|
|
5
6
|
export const WEEKDAY_NAMES = ['周一', '周二', '周三', '周四', '周五', '周六', '周日'];
|
|
6
7
|
export function weekdayName(isoDate) {
|
|
7
8
|
const t = Date.parse(isoDate + 'T12:00:00Z');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deficit.js","sourceRoot":"","sources":["../../src/analysis/deficit.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"deficit.js","sourceRoot":"","sources":["../../src/analysis/deficit.ts"],"names":[],"mappings":"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"}
|
|
@@ -19,8 +19,8 @@ export interface CalorieHistory {
|
|
|
19
19
|
rows: DayIntake[];
|
|
20
20
|
}
|
|
21
21
|
/** 最近 N 天每日摄入(food_log 按 date 聚合倒序);空库返回空 rows,调用方阻断提示,不返“正常空数据”。
|
|
22
|
-
* #559:默认 `now` 经 `todayISO()` 派生(#250
|
|
23
|
-
*
|
|
22
|
+
* #559:默认 `now` 经 `todayISO()` 派生(#250 唯一出处);#718 起「今天」由真实时钟给(`CALORIE_TODAY` 已删,钉钟走测试基座);
|
|
23
|
+
* 按包内 UTC 日口径(与 T3/T4 同;与原来按机器本地日历在午夜边界可能差一天,口径以 UTC 日为准)。显式 `now` 照旧优先。 */
|
|
24
24
|
export declare function getCalorieHistory(db: DatabaseSync, days?: number, now?: Date): CalorieHistory;
|
|
25
25
|
/** 本地体重序列(跨技能合并的上游输入之一;food/weight 双序列对齐的 weight 侧)。 */
|
|
26
26
|
export declare function weightSeries(db: DatabaseSync): {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"historyStore.d.ts","sourceRoot":"","sources":["../../src/analysis/historyStore.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAIhD,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,+BAA+B;IAC/B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,6BAA6B;IAC7B,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,IAAI,EAAE,SAAS,EAAE,CAAC;CACnB;AAMD;;
|
|
1
|
+
{"version":3,"file":"historyStore.d.ts","sourceRoot":"","sources":["../../src/analysis/historyStore.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAIhD,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,+BAA+B;IAC/B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,6BAA6B;IAC7B,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,IAAI,EAAE,SAAS,EAAE,CAAC;CACnB;AAMD;;4EAE4E;AAC5E,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,YAAY,EAAE,IAAI,SAAI,EAAE,GAAG,OAAqC,GAAG,cAAc,CAmBtH;AAED,wDAAwD;AACxD,wBAAgB,YAAY,CAAC,EAAE,EAAE,YAAY,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,EAAE,CAKpF"}
|
|
@@ -4,8 +4,8 @@ function fmtDate(d) {
|
|
|
4
4
|
return `${d.getFullYear()}-${String(d.getMonth() + 1).padStart(2, '0')}-${String(d.getDate()).padStart(2, '0')}`;
|
|
5
5
|
}
|
|
6
6
|
/** 最近 N 天每日摄入(food_log 按 date 聚合倒序);空库返回空 rows,调用方阻断提示,不返“正常空数据”。
|
|
7
|
-
* #559:默认 `now` 经 `todayISO()` 派生(#250
|
|
8
|
-
*
|
|
7
|
+
* #559:默认 `now` 经 `todayISO()` 派生(#250 唯一出处);#718 起「今天」由真实时钟给(`CALORIE_TODAY` 已删,钉钟走测试基座);
|
|
8
|
+
* 按包内 UTC 日口径(与 T3/T4 同;与原来按机器本地日历在午夜边界可能差一天,口径以 UTC 日为准)。显式 `now` 照旧优先。 */
|
|
9
9
|
export function getCalorieHistory(db, days = 7, now = new Date(todayISO() + 'T12:00:00')) {
|
|
10
10
|
const start = new Date(now);
|
|
11
11
|
start.setDate(start.getDate() - days);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"historyStore.js","sourceRoot":"","sources":["../../src/analysis/historyStore.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAoBtC,SAAS,OAAO,CAAC,CAAO;IACtB,OAAO,GAAG,CAAC,CAAC,WAAW,EAAE,IAAI,MAAM,CAAC,CAAC,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC;AACnH,CAAC;AAED;;
|
|
1
|
+
{"version":3,"file":"historyStore.js","sourceRoot":"","sources":["../../src/analysis/historyStore.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAoBtC,SAAS,OAAO,CAAC,CAAO;IACtB,OAAO,GAAG,CAAC,CAAC,WAAW,EAAE,IAAI,MAAM,CAAC,CAAC,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC;AACnH,CAAC;AAED;;4EAE4E;AAC5E,MAAM,UAAU,iBAAiB,CAAC,EAAgB,EAAE,IAAI,GAAG,CAAC,EAAE,GAAG,GAAG,IAAI,IAAI,CAAC,QAAQ,EAAE,GAAG,WAAW,CAAC;IACpG,MAAM,KAAK,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC;IAC5B,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC;IACtC,MAAM,IAAI,GAAG,EAAE;SACZ,OAAO,CACN;sEACgE,CACjE;SACA,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,CAAsF,CAAC;IAC5G,MAAM,IAAI,GAAG,gBAAgB,CAAC,EAAE,CAAC,EAAE,YAAY,IAAI,IAAI,CAAC;IACxD,OAAO;QACL,IAAI;QACJ,IAAI;QACJ,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;YACnB,IAAI,IAAI,KAAK,IAAI;gBAAE,OAAO,EAAE,GAAG,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;YACpE,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC;YAChD,OAAO,EAAE,GAAG,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,SAAS,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,SAAS,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAC3G,CAAC,CAAC;KACH,CAAC;AACJ,CAAC;AAED,wDAAwD;AACxD,MAAM,UAAU,YAAY,CAAC,EAAgB;IAC3C,OAAO,EAAE,CAAC,OAAO,CAAC,sDAAsD,CAAC,CAAC,GAAG,EAG1E,CAAC;AACN,CAAC"}
|
package/dist/analysis/index.d.ts
CHANGED
|
@@ -1,23 +1,17 @@
|
|
|
1
|
-
/** 分析能力对外的门(HELP 场景 10
|
|
1
|
+
/** 分析能力对外的门(HELP 场景 10「分析」):只转出命令声明一件。
|
|
2
2
|
*
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
3
|
+
* #703:门上的读/写命令入口(原 `runAnalysisView`/`runAnalysisWrite`)已删——生产一次都不走它们,
|
|
4
|
+
* 真正分派走生成物 `cli/registry.ts`(`cmd_read.ts`/`write.ts` 查表后直接调声明的 `run`)。
|
|
5
|
+
*
|
|
6
|
+
* 对外一件(铁律五「不多于五个」):
|
|
7
|
+
* ① `ANALYSIS_COMMANDS`——命令声明(权威源在 `commands.ts`,这里只是转出)。
|
|
7
8
|
*
|
|
8
9
|
* 本场景 13 键**全是读命令**(旧链里「定时复盘/训记/营养表/落地」那些划出去不做的词,
|
|
9
|
-
* 逐字理由住 `routes.ts`
|
|
10
|
-
* 能力对外形状一致,且日后真出写键时只改 `commands.ts`,门与分派层不动。
|
|
10
|
+
* 逐字理由住 `routes.ts` 的非执行记录)。
|
|
11
11
|
*
|
|
12
12
|
* 域内其他件(算式与取数 `series.ts`/`trend.ts`/`deficit.ts`/`dashboard.ts`/`cross.ts`/
|
|
13
13
|
* `simulate*.ts`/`anomaly/`/`diet.ts`/`exercise*.ts`/`review.ts`/`utils.ts` 等)**不出这个目录**,
|
|
14
14
|
* 故不在这里转出:它们由 `render/` 侧的视图层直接消费,导入面照旧。
|
|
15
15
|
*/
|
|
16
|
-
import type { DatabaseSync } from 'node:sqlite';
|
|
17
|
-
import type { ViewOut, WriteOut } from '../shared/commandSpec.js';
|
|
18
16
|
export { ANALYSIS_COMMANDS } from './commands.js';
|
|
19
|
-
/** 读命令入口:命中即走它的处理函数;键不属分析(或其实是写键)即抛——**不猜**。 */
|
|
20
|
-
export declare function runAnalysisView(key: string, params: Record<string, unknown>, db: DatabaseSync): ViewOut;
|
|
21
|
-
/** 写命令入口:同上(本场景今天无写键,任何键都抛)。 */
|
|
22
|
-
export declare function runAnalysisWrite(key: string, params: Record<string, unknown>, db: DatabaseSync): WriteOut;
|
|
23
17
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/analysis/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/analysis/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC"}
|
package/dist/analysis/index.js
CHANGED
|
@@ -1,23 +1,17 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
/** 分析能力对外的门(HELP 场景 10「分析」):只转出命令声明一件。
|
|
2
|
+
*
|
|
3
|
+
* #703:门上的读/写命令入口(原 `runAnalysisView`/`runAnalysisWrite`)已删——生产一次都不走它们,
|
|
4
|
+
* 真正分派走生成物 `cli/registry.ts`(`cmd_read.ts`/`write.ts` 查表后直接调声明的 `run`)。
|
|
5
|
+
*
|
|
6
|
+
* 对外一件(铁律五「不多于五个」):
|
|
7
|
+
* ① `ANALYSIS_COMMANDS`——命令声明(权威源在 `commands.ts`,这里只是转出)。
|
|
8
|
+
*
|
|
9
|
+
* 本场景 13 键**全是读命令**(旧链里「定时复盘/训记/营养表/落地」那些划出去不做的词,
|
|
10
|
+
* 逐字理由住 `routes.ts` 的非执行记录)。
|
|
11
|
+
*
|
|
12
|
+
* 域内其他件(算式与取数 `series.ts`/`trend.ts`/`deficit.ts`/`dashboard.ts`/`cross.ts`/
|
|
13
|
+
* `simulate*.ts`/`anomaly/`/`diet.ts`/`exercise*.ts`/`review.ts`/`utils.ts` 等)**不出这个目录**,
|
|
14
|
+
* 故不在这里转出:它们由 `render/` 侧的视图层直接消费,导入面照旧。
|
|
15
|
+
*/
|
|
3
16
|
export { ANALYSIS_COMMANDS } from './commands.js';
|
|
4
|
-
/** 声明数组按**声明的类型**收进查表:本场景全是读命令,若让它保持字面量窄化,
|
|
5
|
-
* `spec.kind !== 'write'` 会因两个字面量类型无交集而被 `tsc` 判错(TS2367)。 */
|
|
6
|
-
const BY_KEY = new Map(ANALYSIS_COMMANDS.map((c) => [c.key, c]));
|
|
7
|
-
/** 读命令入口:命中即走它的处理函数;键不属分析(或其实是写键)即抛——**不猜**。 */
|
|
8
|
-
export function runAnalysisView(key, params, db) {
|
|
9
|
-
const spec = BY_KEY.get(key);
|
|
10
|
-
if (!spec || spec.kind !== 'read') {
|
|
11
|
-
throw new CalorieRenderError('bad-input', '不是分析的读命令:' + key);
|
|
12
|
-
}
|
|
13
|
-
return spec.run(params, db);
|
|
14
|
-
}
|
|
15
|
-
/** 写命令入口:同上(本场景今天无写键,任何键都抛)。 */
|
|
16
|
-
export function runAnalysisWrite(key, params, db) {
|
|
17
|
-
const spec = BY_KEY.get(key);
|
|
18
|
-
if (!spec || spec.kind !== 'write') {
|
|
19
|
-
throw new CalorieRenderError('bad-input', '不是分析的写命令:' + key);
|
|
20
|
-
}
|
|
21
|
-
return spec.run(params, db);
|
|
22
|
-
}
|
|
23
17
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/analysis/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/analysis/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reportDocTracked.d.ts","sourceRoot":"","sources":["../../src/analysis/reportDocTracked.ts"],"names":[],"mappings":"AAyBA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"reportDocTracked.d.ts","sourceRoot":"","sources":["../../src/analysis/reportDocTracked.ts"],"names":[],"mappings":"AAyBA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAGzD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAUpD;2CAC2C;AAC3C,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,WAAW,GAAG,aAAa,EAAE,CAyCtE;AAED,6CAA6C;AAC7C,wBAAgB,eAAe,CAAC,KAAK,EAAE,WAAW,GAAG,aAAa,EAAE,CAiCnE;AA+BD,kDAAkD;AAClD,wBAAgB,cAAc,CAAC,KAAK,EAAE,WAAW,GAAG,aAAa,EAAE,CAyDlE"}
|
|
@@ -23,6 +23,8 @@
|
|
|
23
23
|
*/
|
|
24
24
|
import { renderChips, renderDataTable, renderEmptyBlock, renderKpiGrid } from 'base-paint/blocks';
|
|
25
25
|
import { fmt, fmtInt, foldedTable, kvTable, lineOf, sec, tableOf } from './reportDocParts.js';
|
|
26
|
+
/* #717 批④:BMR 算式只读共用位那一份(本件原写 10*w + 6.25*h - 5*a + sign)。 */
|
|
27
|
+
import { mifflinStJeorBmr } from './utils.js';
|
|
26
28
|
/** 缺项清单上屏口径:本用 `、` 连接(判据 R5 的债)⇒ 空格分隔(同一个 `missing` 数组,不另算一份)。 */
|
|
27
29
|
const missText = (missing) => missing.join(' ');
|
|
28
30
|
/** 窗口内最后一次称重(与对比页 `#384f` 同源口径;缺即 null,不编数)。 */
|
|
@@ -125,11 +127,10 @@ function tdeeCurve(plate) {
|
|
|
125
127
|
text: '档案四要素不全,画不了这条曲线(缺:' + missText(p.missing) + ')',
|
|
126
128
|
});
|
|
127
129
|
}
|
|
128
|
-
const sign = p.gender === 'male' ? 5 : -161;
|
|
129
130
|
const points = plate.base.series.map((s) => ({
|
|
130
131
|
date: s.date,
|
|
131
132
|
value: s.weightKg === null ? null
|
|
132
|
-
: Math.round((
|
|
133
|
+
: Math.round(mifflinStJeorBmr(s.weightKg, p.heightCm, p.age, p.gender) * p.activityFactor),
|
|
133
134
|
}));
|
|
134
135
|
return lineOf(points, '总消耗随体重变化(同样四要素下,体重变 → 总消耗变)', { format: (v) => String(Math.round(v)) });
|
|
135
136
|
}
|