skill-calorie 0.2.4 → 0.2.6
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.d.ts +2 -1
- package/dist/shared/docPage.d.ts.map +1 -1
- package/dist/shared/docPage.js +21 -33
- package/dist/shared/docPage.js.map +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
|
@@ -0,0 +1,322 @@
|
|
|
1
|
+
/** #86 · wizard 身材照/GIF 两页 HTML 填充器(D1 静态 HTML + copyText)。
|
|
2
|
+
*(#353 后:记围度/记体脂两页已迁入 `src/body/wizardDocs.ts`,本件只留两页。)
|
|
3
|
+
*
|
|
4
|
+
* 包裹约定(沿 #111/#112/#113,不新增):
|
|
5
|
+
* sharedCss = buildStyleSheet().css + blocksCss(),不走 extraCss;
|
|
6
|
+
* 复制文本 metrics 块一律 buildDataText(#77 契约):stat 投影只收确定数字。
|
|
7
|
+
* 用户路径的复制=prompt 预览(renderPreBlock)+复制按钮(render/copy.ts 的
|
|
8
|
+
* copyActionHtml,走 Base P0 双通道,禁本地改写)——旧模板 btn-copy+copyText
|
|
9
|
+
* 的新架构同形(B-11 复制区;行为归宿主 B7,本层零 JS)。
|
|
10
|
+
* 表单=renderParamForm 预填值(B-09 静态 label+input,零 JS;无 select 控件,
|
|
11
|
+
* 来源/性别等以下拉候选写进 hint,B7 边界)。
|
|
12
|
+
* 本层不做取数(数据由 photo/wizardPort.ts 备齐),空库不返空页(recent 为空即空态行)。
|
|
13
|
+
*
|
|
14
|
+
* #655(负责人验收打回「两页很丑陋」)把这两页从「名+空框+灰示例」的三层空表单改成**确认清单**:
|
|
15
|
+
* 值先以只读一行上屏、点开哪一行才出哪一行的输入(形状与样式住姊妹件 `photo/wizardUi.ts`),
|
|
16
|
+
* 三档层级与块间分割由本件与本族页内件定;两页一并补上 `pageUi: true`(#525 的页面级移动端配方,
|
|
17
|
+
* 本族另外七页都在用、只有本件两页漏了——`renderFactStrip` 的形状样式与宽屏 1280 版式都挂在它下面)。
|
|
18
|
+
*
|
|
19
|
+
* **#654(读页复制日志 · 本席位)**:两页底部 ghost 行补回**真**「复制日志」——本件两页以前只有
|
|
20
|
+
* `dataCopyArea`(只出数据那颗),日志那颗靠公共层 #336 兜底补的禁用占位(#654 已撤那条兜底路径)。
|
|
21
|
+
* 现在两页自己给:`copyArea({ data, log })` 双位齐全,第 4 段=本次命令原文(命令层 `photo/wizard.ts`
|
|
22
|
+
* 传 `commandLine()`)。预检页那颗 prompt(「给 AI 的指令」)与两页可见文本一字未改。
|
|
23
|
+
*/
|
|
24
|
+
import { renderEmptyBlock, renderKpiGrid, renderParamForm } from 'base-paint/blocks';
|
|
25
|
+
import { renderFactStrip } from 'base-paint';
|
|
26
|
+
import { PHOTO_LOG_TAGS, transitionText } from './wizardPort.js';
|
|
27
|
+
import { assembleDocPage, metricsOf } from '../shared/docPage.js';
|
|
28
|
+
import { copyArea, copyLog, promptCopyArea } from '../shared/copyArea.js';
|
|
29
|
+
import { nowStamp } from '../render/receipt.js';
|
|
30
|
+
import { chipRow, photoPickRows, photoUiCss } from './photoUi.js';
|
|
31
|
+
import { editRows, noticeBar, wizardUiCss } from './wizardUi.js';
|
|
32
|
+
/** envelope 头(值冻结对齐 cli/keys.ts ENVELOPE_VERSION/CALORIE_SKILL;测试钉死一致)。 */
|
|
33
|
+
const DOC_VERSION = '0.1.0';
|
|
34
|
+
const DOC_SKILL = 'calorie';
|
|
35
|
+
/** 本文件两页共用的 head 标题(整页模板住 `src/shared/docPage.ts`,标题走参数)。
|
|
36
|
+
* #527:`卡路里·配置向导` 里的 `·` 是符号顶替版面(题名不是并列语义),改空格。 */
|
|
37
|
+
const DOC_TITLE = '卡路里 配置向导';
|
|
38
|
+
/* ── 身体两页已迁出(#353):记围度/记体脂文档原样迁入 src/body/wizardDocs.ts,本件只留身材照/GIF。 */
|
|
39
|
+
/* ── #654 · 复制区(两页共用口径) ── */
|
|
40
|
+
/** 复制日志第 3 段后半的数据来源(前半=库文件名,由 `shared/copyArea.ts` 的 `copyLog` 拼)。
|
|
41
|
+
* 两页分开命名:预检页**不读库**(只核对待登记的值),规划器读的是照片记录。 */
|
|
42
|
+
const LOG_SOURCE_LOG = 'calorie.photo.add 入参(纯核对,不读库)';
|
|
43
|
+
const LOG_SOURCE_PLANNER = 'body_photos(本窗候选照片)';
|
|
44
|
+
/** 复制区(#654):三格式数据 + 复制日志六段(口径与 `photo/galleryDoc.ts` 的 `copyAreaOf` 同形:
|
|
45
|
+
* `log` 位收 `LogTextInput`=`{ envelope, copyLog }`,给错形状那颗按钮就落成点不动的死按钮)。 */
|
|
46
|
+
function copyAreaOf(envelope, command, source) {
|
|
47
|
+
return copyArea({
|
|
48
|
+
data: { envelope },
|
|
49
|
+
log: {
|
|
50
|
+
envelope,
|
|
51
|
+
copyLog: copyLog({ command, source, actionAt: nowStamp(), version: DOC_VERSION }),
|
|
52
|
+
},
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
/** #474(审查整改 1)· 下拉候选项:**`value` 是机器真值**(`loop` 的 `0/1/3/5`、`transition` 的
|
|
56
|
+
* `cut/fade/dissolve`,与 `wizardPort.ts` 的校验口径同源),`label` 才是给人看的中文词。
|
|
57
|
+
* 这样当刻视图值能在下拉里**真的落上 `selected`**(先前拿中文当值 → 恒被「选一个」占位顶住,
|
|
58
|
+
* 页上永远看不到当前值=本票要治的「看不见」在新控件上复现)。 */
|
|
59
|
+
const LOOP_OPTIONS = [
|
|
60
|
+
{ value: '0', label: '无限' }, { value: '1', label: '1 次' },
|
|
61
|
+
{ value: '3', label: '3 次' }, { value: '5', label: '5 次' },
|
|
62
|
+
];
|
|
63
|
+
const TRANSITION_OPTIONS = [
|
|
64
|
+
{ value: 'cut', label: '硬切' }, { value: 'fade', label: '淡入淡出' }, { value: 'dissolve', label: '溶解' },
|
|
65
|
+
];
|
|
66
|
+
/** #474(审查整改 3c)· 表单上方那句显著的话:本层表单是零 JS 静态预览——**改了不会自动生效**
|
|
67
|
+
* (上面那段给 AI 的指令与页上的读数都是按当刻参数生成的,输入框只当"看到的值")。
|
|
68
|
+
* 不禁用控件(禁用会让人以为"根本不能改"),只把这件事说明白;真接线属公共层另一张票。
|
|
69
|
+
* #527:句中的 `;` 是并列语义,拆成两句(同一件事一页一处,符号不再顶版面)。
|
|
70
|
+
* #655:这句的**措辞一字不动**(票面点名要留的就是它),只换承载它的形状——原来用 `<strong>`
|
|
71
|
+
* 当标题使,视觉重量压过字段;现走 `noticeBar()` 的浅底提示条(13px/不上粗体)。 */
|
|
72
|
+
const FORM_NOTICE = '这些是 AI 已经用的值。改了不会自动生效——要改就直接跟 AI 说一句。';
|
|
73
|
+
/** 块标题行(#655):标题 15/600 在左,右侧一句辅助档小字(不上加粗);不给小字就只出标题。
|
|
74
|
+
* `.phu-sec`(标题档)住 `photo/photoUi.ts`,`.phu-sechead` 一族住 `photo/wizardUi.ts`。 */
|
|
75
|
+
function sectionHead(title, hint) {
|
|
76
|
+
return '<div class="phu-sechead"><h2 class="phu-sec">' + title + '</h2>'
|
|
77
|
+
+ (hint === undefined ? '' : '<span class="phu-sechead-s">' + hint + '</span>') + '</div>';
|
|
78
|
+
}
|
|
79
|
+
/** 一行参数(#655):确认清单的每行只装**一个**字段——值住行上的只读一行,输入框住展开后的编辑体。
|
|
80
|
+
* 一行一个 `renderParamForm` 调用:`min/max/step/options` 的落位口径全归公共层,本层不重写。 */
|
|
81
|
+
function paramRow(field) {
|
|
82
|
+
return renderParamForm({ fields: [field] });
|
|
83
|
+
}
|
|
84
|
+
/* ── 3. 记身材照 wizard(纯配置) ── */
|
|
85
|
+
/** #654:`command`=本次命令原文(命令层 `photo/wizard.ts` 的 `commandLine()` 派生),进复制日志第 4 段。 */
|
|
86
|
+
export function buildPhotoLogWizardDoc(v, command) {
|
|
87
|
+
const envelope = {
|
|
88
|
+
version: DOC_VERSION, skill: DOC_SKILL, shape: 'stat', key: 'calorie.view.photo-log-wizard',
|
|
89
|
+
data: { metrics: metricsOf({ fileCount: v.srcPaths.length, hasTag: v.tag ? 1 : 0 }) },
|
|
90
|
+
};
|
|
91
|
+
const content = [
|
|
92
|
+
// 页内样式进 parts 第一项(`assembleDocPage` 没有页内 CSS 入口,同 `photoUi.ts` 的处置)。
|
|
93
|
+
// #655:本件两页的确认清单**样式**另住姊妹件 `photo/wizardUi.ts` —— 那份样式只服务这两页,
|
|
94
|
+
// 并进 `photoUiCss()` 会让读侧族七页的产物字节跟着变(等于本票顺手动了别人的页)。
|
|
95
|
+
photoUiCss(), wizardUiCss(),
|
|
96
|
+
// #655 缺陷 2:这页的定位是「确认 AI 已经用好的值」,改前三个空框一个字的值都看不见
|
|
97
|
+
//(读数卡只说「0 张/未填」)。现改成**确认清单**:值先只读一行,点开哪一行才出哪一行的输入。
|
|
98
|
+
// 原来那两张读数卡(照片 N 张/标签 X)不再单出——同一件事由清单的行名与值行角标承载,
|
|
99
|
+
// 读数一个不丢(张数落 `badge`、标签落它自己那一行的值位)。
|
|
100
|
+
sectionHead('要登记的三个值', '点开哪一项就改哪一项'),
|
|
101
|
+
// #655 缺陷 3:提示句从加粗标题降成浅底条,位置仍在字段之前(#474 的判据不变)。
|
|
102
|
+
noticeBar(FORM_NOTICE),
|
|
103
|
+
editRows([
|
|
104
|
+
{
|
|
105
|
+
k: '照片文件路径', v: v.srcPaths.join('\n'),
|
|
106
|
+
// 张数是原来读数卡那一格要说的数字 → 改住值行角标(同一件事换形状,不丢读数)。
|
|
107
|
+
...(v.srcPaths.length > 0 ? { badge: v.srcPaths.length + ' 张' } : {}),
|
|
108
|
+
bodyHtml: paramRow({
|
|
109
|
+
name: 'srcPaths',
|
|
110
|
+
label: '照片文件路径(最多 20 张。如 D:\\照片\\正面1.jpg,多张换行或逗号分隔)',
|
|
111
|
+
value: v.srcPaths.join('\n'), hint: '每行 1 个', required: true,
|
|
112
|
+
}),
|
|
113
|
+
},
|
|
114
|
+
{
|
|
115
|
+
k: '标签', v: v.tag ?? '', emptyText: '还没填',
|
|
116
|
+
bodyHtml: paramRow({
|
|
117
|
+
name: 'tag', label: '标签(最多 20 个字)', value: v.tag ?? '', hint: '如:正面', required: true,
|
|
118
|
+
}),
|
|
119
|
+
},
|
|
120
|
+
{
|
|
121
|
+
k: '备注', v: v.note ?? '', emptyText: '没填(这栏可以不填)',
|
|
122
|
+
bodyHtml: paramRow({
|
|
123
|
+
name: 'note', label: '备注', value: v.note ?? '', hint: '如:早上空腹 / 减脂期第 30 天',
|
|
124
|
+
}),
|
|
125
|
+
},
|
|
126
|
+
]),
|
|
127
|
+
// #655 缺陷 7:常用标签原来是首屏第一个块(折叠着也占掉一行)——现在**下移**到这里,
|
|
128
|
+
// 紧跟三个值之后;8 个词仍逐字可见(本票只改它住哪,不改它说什么)。
|
|
129
|
+
sectionHead('常用标签(点一个填上去)'),
|
|
130
|
+
chipRow([...PHOTO_LOG_TAGS]),
|
|
131
|
+
// #474:段前一句引导——复制区里是给 AI 的英文命令,先说清「整段复制粘过去就行」。
|
|
132
|
+
'<p>下面这段是给 AI 的指令:整段复制粘过去就行,英文命令不用看懂。</p>',
|
|
133
|
+
promptCopyArea(v.prompt, '给 AI 的指令(复制这一段)'),
|
|
134
|
+
copyAreaOf(envelope, command, LOG_SOURCE_LOG),
|
|
135
|
+
].join('');
|
|
136
|
+
return assembleDocPage({
|
|
137
|
+
docTitle: DOC_TITLE,
|
|
138
|
+
title: '记身材照',
|
|
139
|
+
// #474:眉标里的内部词「wizard」「纯配置」与副标题说同一件事 → 眉标改人话不重复。
|
|
140
|
+
// #527:眉标的 `记身材照 · 只登记路径` 是 `·` 串两件事,且页名已经说了「记身材照」→ 只留后半句。
|
|
141
|
+
eyebrow: '只登记路径',
|
|
142
|
+
subtitle: '先核对要登记的照片与标签,再复制指令给 AI。照片本身不会被动。',
|
|
143
|
+
content,
|
|
144
|
+
// #525 页面级移动端配方:本族另外七页都在用,只有本件两页漏了(`renderFactStrip` 的形状
|
|
145
|
+
// 样式与宽屏 1280 版式都挂在根类下,不启用则一条都命中不到)。本票补上,与全族同值。
|
|
146
|
+
pageUi: true,
|
|
147
|
+
});
|
|
148
|
+
}
|
|
149
|
+
/* ── 4. GIF 框选器 ── */
|
|
150
|
+
/** 循环次数的人话(KPI 与下拉共用一份,防两处走散)。 */
|
|
151
|
+
function loopText(loop) {
|
|
152
|
+
return loop === 0 ? '无限循环' : loop + ' 次循环';
|
|
153
|
+
}
|
|
154
|
+
/** 输出规格那三件事(每帧多久/循环几次/有没有水印):KPI 卡的明细槽吃纯文本,形状落不进去,
|
|
155
|
+
* 故在卡下另出一排**事实条**(#525 的 `renderFactStrip` 口径,本域只给数据)。 */
|
|
156
|
+
function outputFacts(v) {
|
|
157
|
+
return renderFactStrip({
|
|
158
|
+
items: [
|
|
159
|
+
{ label: '每帧停', value: (v.duration / 1000).toFixed(2).replace(/0$/, '') + ' 秒' },
|
|
160
|
+
{ label: '循环', value: loopText(v.loop) },
|
|
161
|
+
...(v.watermark === null ? [] : [{ label: '水印', value: v.watermark }]),
|
|
162
|
+
],
|
|
163
|
+
});
|
|
164
|
+
}
|
|
165
|
+
/** #527 候选行(原六列表在窄屏被挤成长串):一行一张照片——编号/标签/文件名/异常徽标各占一槽,
|
|
166
|
+
* 日期与整图或裁剪走第二行的徽章列。**不印 `#N`**(内部标识符口径),改「照片 31」这种读者话;
|
|
167
|
+
* 正常张留空(「存在」是零信息值),找不到文件才挂徽标。 */
|
|
168
|
+
function gifCandidates(v) {
|
|
169
|
+
if (v.photos.length === 0) {
|
|
170
|
+
return renderEmptyBlock({ text: '这个标签/时间窗里没有照片:换个标签,或把时间窗放宽一点' });
|
|
171
|
+
}
|
|
172
|
+
return photoPickRows(v.photos.map((p) => ({
|
|
173
|
+
no: '照片 ' + p.id,
|
|
174
|
+
file: p.photoPath,
|
|
175
|
+
tag: p.tagList.join('、') || '无标签',
|
|
176
|
+
...(p.fileExists === false ? { badge: { tone: 'warn', text: '会跳过' } } : {}),
|
|
177
|
+
meta: [p.date, p.selected ? '已框选' : '没框选', p.crop ? '裁剪过' : '整图'],
|
|
178
|
+
})));
|
|
179
|
+
}
|
|
180
|
+
/** #474:预填过的字段看不见 placeholder——限制与单位一律进字段名(固定小字),
|
|
181
|
+
* 只有**空字段**才留 hint(那时它显示得出来);下拉不再给「选一个」占位:
|
|
182
|
+
* **当刻值那一条恒 `selected`**(#527 第 5 条:下拉显示当前值,不显示「选一个」)。
|
|
183
|
+
*
|
|
184
|
+
* #655 缺陷 8:改前把九项默认值全画成输入框,看着像要用户逐个核对的表单 —— 改成三组
|
|
185
|
+
* **只读键值行**(`editRows`):值先以当刻值上屏,只展开「要改的那一项」。
|
|
186
|
+
* 分组按**变化频率**切(照片选择/播放/画面与文件),块与块之间由 `.phu-sechead` 分割。 */
|
|
187
|
+
function gifForm(v) {
|
|
188
|
+
const all = v.photos.length > 0 && v.selectedIds.length === v.photos.length;
|
|
189
|
+
const picked = v.selectedIds.length === 0 ? ''
|
|
190
|
+
: (all ? '全部 ' : '') + v.selectedIds.length + ' 张';
|
|
191
|
+
return [
|
|
192
|
+
sectionHead('选哪些照片', '点开哪一项就改哪一项'),
|
|
193
|
+
editRows([
|
|
194
|
+
{
|
|
195
|
+
k: '标签', v: v.tag ?? '', emptyText: '全部标签',
|
|
196
|
+
bodyHtml: paramRow({ name: 'tag', label: '标签(留空就是全部标签)', value: v.tag ?? '', hint: '如:正面' }),
|
|
197
|
+
},
|
|
198
|
+
{
|
|
199
|
+
k: '框选照片编号', v: picked, emptyText: '没框选任何一张',
|
|
200
|
+
// #474(审查整改 3a)的口径照旧:`crops` 那一栏**真撤掉**(`name="crops"` 不留空框),
|
|
201
|
+
// 要裁就在对话里说一句;`crops` 键本身仍在 `wizardPort.ts` 的入参允许清单与 prompt 复刻里。
|
|
202
|
+
bodyHtml: paramRow({
|
|
203
|
+
name: 'photoIds', label: '框选照片编号(逗号分隔,留空就是全部)',
|
|
204
|
+
value: v.selectedIds.join(','), hint: '如 12,15,22',
|
|
205
|
+
}),
|
|
206
|
+
},
|
|
207
|
+
]),
|
|
208
|
+
sectionHead('播放'),
|
|
209
|
+
editRows([
|
|
210
|
+
{
|
|
211
|
+
k: '每帧多久', v: v.duration + ' 毫秒',
|
|
212
|
+
bodyHtml: paramRow({
|
|
213
|
+
name: 'duration', label: '每帧多久(毫秒,50 到 5000)',
|
|
214
|
+
value: String(v.duration), min: 50, max: 5000, step: 50,
|
|
215
|
+
}),
|
|
216
|
+
},
|
|
217
|
+
{
|
|
218
|
+
k: '循环', v: loopText(v.loop),
|
|
219
|
+
bodyHtml: paramRow({ name: 'loop', label: '循环', value: String(v.loop), options: LOOP_OPTIONS }),
|
|
220
|
+
},
|
|
221
|
+
{
|
|
222
|
+
k: '切换效果', v: transitionText(v.transition),
|
|
223
|
+
bodyHtml: paramRow({
|
|
224
|
+
name: 'transition', label: '切换效果', value: v.transition, options: TRANSITION_OPTIONS,
|
|
225
|
+
}),
|
|
226
|
+
},
|
|
227
|
+
]),
|
|
228
|
+
sectionHead('画面与文件'),
|
|
229
|
+
editRows([
|
|
230
|
+
{
|
|
231
|
+
k: '宽', v: v.width + ' 像素',
|
|
232
|
+
bodyHtml: paramRow({
|
|
233
|
+
name: 'width', label: '宽(像素,100 到 2000)', value: String(v.width), min: 100, max: 2000, step: 1,
|
|
234
|
+
}),
|
|
235
|
+
},
|
|
236
|
+
{
|
|
237
|
+
k: '高', v: v.height + ' 像素',
|
|
238
|
+
bodyHtml: paramRow({
|
|
239
|
+
name: 'height', label: '高(像素,100 到 2000)', value: String(v.height), min: 100, max: 2000, step: 1,
|
|
240
|
+
}),
|
|
241
|
+
},
|
|
242
|
+
{
|
|
243
|
+
k: '水印文字', v: v.watermark ?? '', emptyText: '没填',
|
|
244
|
+
bodyHtml: paramRow({
|
|
245
|
+
name: 'watermark', label: '水印文字(可选)', value: v.watermark ?? '', hint: '右下角,如:减脂 30 天',
|
|
246
|
+
}),
|
|
247
|
+
},
|
|
248
|
+
{
|
|
249
|
+
k: '输出文件名', v: v.output ?? '', emptyText: '没填',
|
|
250
|
+
bodyHtml: paramRow({
|
|
251
|
+
name: 'output', label: '输出文件名(可选)', value: v.output ?? '', hint: '如:front_30days.gif',
|
|
252
|
+
}),
|
|
253
|
+
},
|
|
254
|
+
]),
|
|
255
|
+
].join('');
|
|
256
|
+
}
|
|
257
|
+
/** #654:`command`=本次命令原文(命令层 `photo/wizard.ts` 的 `commandLine()` 派生),进复制日志第 4 段。 */
|
|
258
|
+
export function buildGifPlannerDoc(v, command) {
|
|
259
|
+
// 本轮照片里文件找不到的张数(与候选行「会跳过」徽标同一口径);不是框选缺 ID,两者分开命名。
|
|
260
|
+
const notFound = v.photos.filter((p) => p.fileExists === false).length;
|
|
261
|
+
const envelope = {
|
|
262
|
+
version: DOC_VERSION, skill: DOC_SKILL, shape: 'stat', key: 'calorie.view.gif-planner',
|
|
263
|
+
data: {
|
|
264
|
+
metrics: metricsOf({
|
|
265
|
+
photoCount: v.photos.length, selectedCount: v.selectedIds.length,
|
|
266
|
+
missingCount: v.missingIds.length,
|
|
267
|
+
cropCount: v.photos.filter((p) => p.crop).length,
|
|
268
|
+
}),
|
|
269
|
+
},
|
|
270
|
+
};
|
|
271
|
+
const content = [
|
|
272
|
+
// 页内样式进 parts 第一项(`assembleDocPage` 没有页内 CSS 入口,同 `photoUi.ts` 的处置)。
|
|
273
|
+
// #655:本件两页的确认清单**样式**另住姊妹件 `photo/wizardUi.ts`(同上页那一段的理由)。
|
|
274
|
+
photoUiCss(), wizardUiCss(),
|
|
275
|
+
// 身份行(#527):`标签 正面 · 近 N 天` 那样的 `·` 串改徽章列——同一件事换形状,不是删字符。
|
|
276
|
+
chipRow([
|
|
277
|
+
v.tag === null || v.tag === '' ? '全部标签' : '标签 ' + v.tag,
|
|
278
|
+
v.selectedIds.length + ' 张进 GIF',
|
|
279
|
+
notFound > 0 ? notFound + ' 张找不到文件' : '',
|
|
280
|
+
]),
|
|
281
|
+
renderKpiGrid([
|
|
282
|
+
// #474:原「共 N 张可用」把「可用」当「库里有」用,与表内「找不到」正面冲突 → 说清是库里共几张。
|
|
283
|
+
{ label: '要用', value: String(v.selectedIds.length), unit: '张', detail: '库里共 ' + v.photos.length + ' 张' },
|
|
284
|
+
// #474:原「文件丢失」其实数的是框选里点不到的 ID(`missingIds`)→ 换名,不再与表内冲突。
|
|
285
|
+
{
|
|
286
|
+
label: '框选里没有的 ID', value: String(v.missingIds.length),
|
|
287
|
+
...(v.missingIds.length > 0 ? { detail: '已跳过 ' + v.missingIds.join('、') } : {}),
|
|
288
|
+
},
|
|
289
|
+
// #474:本轮新立一格——文件找不到是另一回事,异常才挂状态徽标(正常格不出徽标)。
|
|
290
|
+
notFound > 0
|
|
291
|
+
? { label: '文件找不到', value: String(notFound), unit: '张', status: 'warn', statusText: '会跳过' }
|
|
292
|
+
: { label: '文件找不到', value: '0', unit: '张' },
|
|
293
|
+
// #474:原格 label「尺寸」与明细(帧速/循环)不是一件事 → 改「GIF 输出」,label 与明细对得上。
|
|
294
|
+
// #527:明细原句 `500ms/帧 · 无限循环` 是 `·` 串出来的两件事 → 撤到卡下的事实条(本行只说尺寸)。
|
|
295
|
+
{ label: 'GIF 输出', value: v.width + '×' + v.height },
|
|
296
|
+
]),
|
|
297
|
+
outputFacts(v),
|
|
298
|
+
// #655:候选清单原来直接跟在事实条后头、与下方参数区连成一片 → 补一条块标题(15/600)分开两块。
|
|
299
|
+
sectionHead('会进 GIF 的照片'),
|
|
300
|
+
gifCandidates(v),
|
|
301
|
+
noticeBar(FORM_NOTICE),
|
|
302
|
+
// #655 缺陷 3:表单说明原是一段 13px 灰字,与新提示条抢同一格 → 收成一条 12px 辅助行。
|
|
303
|
+
// `;` 是并列语义,拆成两句(`audit-separators.mjs` 的 R2 节点级判据:#527 起本仓不许拿它串行)。
|
|
304
|
+
'<p class="phu-note">下面每项都已填好常用值,点开哪一项就改哪一项。改完把下面那段指令复制给 AI。</p>',
|
|
305
|
+
gifForm(v),
|
|
306
|
+
promptCopyArea(v.prompt, '复制指令(给 AI 的那段)'),
|
|
307
|
+
copyAreaOf(envelope, command, LOG_SOURCE_PLANNER),
|
|
308
|
+
].join('');
|
|
309
|
+
return assembleDocPage({
|
|
310
|
+
docTitle: DOC_TITLE,
|
|
311
|
+
title: '身材照 GIF 规划器',
|
|
312
|
+
// #474:眉标原句自述「本项目缺什么」(无 cropper.js/手动 4 数字坐标),对用户零收益 → 删。
|
|
313
|
+
// #527:副标题原用 `→` 串三步、还与页名/表单说明三处说同一件事 → 改一句「这页帮你做什么」。
|
|
314
|
+
eyebrow: '',
|
|
315
|
+
subtitle: '先看会进 GIF 的照片,再定快慢与尺寸。改哪项直接跟 AI 说一句。',
|
|
316
|
+
content,
|
|
317
|
+
// #525 页面级移动端配方:本族另外七页都在用,只有本件两页漏了(`renderFactStrip` 的形状
|
|
318
|
+
// 样式与宽屏 1280 版式都挂在根类下,不启用则一条都命中不到)。本票补上,与全族同值。
|
|
319
|
+
pageUi: true,
|
|
320
|
+
});
|
|
321
|
+
}
|
|
322
|
+
//# sourceMappingURL=wizardPortDocs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wizardPortDocs.js","sourceRoot":"","sources":["../../src/photo/wizardPortDocs.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,13 +1,15 @@
|
|
|
1
1
|
import { viewProfile, viewProfileWizard } from './read.js';
|
|
2
2
|
import { writeProfileActivity } from './write.js';
|
|
3
|
+
import { profileReceiptDoc } from './receipt.js';
|
|
3
4
|
export declare const PROFILE_COMMANDS: ({
|
|
4
5
|
kind: "write";
|
|
5
6
|
key: string;
|
|
6
|
-
shape: "receipt";
|
|
7
7
|
title: string;
|
|
8
8
|
wakeWord: string;
|
|
9
9
|
run: typeof writeProfileActivity;
|
|
10
|
+
doc: typeof profileReceiptDoc;
|
|
10
11
|
example: string;
|
|
12
|
+
shape?: undefined;
|
|
11
13
|
} | {
|
|
12
14
|
kind: "read";
|
|
13
15
|
key: string;
|
|
@@ -16,6 +18,7 @@ export declare const PROFILE_COMMANDS: ({
|
|
|
16
18
|
run: typeof viewProfile;
|
|
17
19
|
example: string;
|
|
18
20
|
wakeWord?: undefined;
|
|
21
|
+
doc?: undefined;
|
|
19
22
|
} | {
|
|
20
23
|
kind: "read";
|
|
21
24
|
key: string;
|
|
@@ -24,5 +27,6 @@ export declare const PROFILE_COMMANDS: ({
|
|
|
24
27
|
wakeWord: string;
|
|
25
28
|
run: typeof viewProfileWizard;
|
|
26
29
|
example: string;
|
|
30
|
+
doc?: undefined;
|
|
27
31
|
})[];
|
|
28
32
|
//# sourceMappingURL=commands.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"commands.d.ts","sourceRoot":"","sources":["../../src/profile/commands.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"commands.d.ts","sourceRoot":"","sources":["../../src/profile/commands.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAC3D,OAAO,EAAE,oBAAoB,EAAuC,MAAM,YAAY,CAAC;AACvF,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAEjD,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;IAMK,CAAC"}
|
package/dist/profile/commands.js
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import { viewProfile, viewProfileWizard } from './read.js';
|
|
2
2
|
import { writeProfileActivity, writeProfileSet, writeProfileUpdate } from './write.js';
|
|
3
|
+
import { profileReceiptDoc } from './receipt.js';
|
|
3
4
|
export const PROFILE_COMMANDS = [
|
|
4
|
-
{ kind: 'write', key: 'calorie.profile.activity',
|
|
5
|
-
{ kind: 'write', key: 'calorie.profile.set',
|
|
6
|
-
{ kind: 'write', key: 'calorie.profile.update',
|
|
5
|
+
{ kind: 'write', key: 'calorie.profile.activity', title: '设活动量', wakeWord: '设活动量', run: writeProfileActivity, doc: profileReceiptDoc, example: 'calorie-cmd-read calorie.profile.activity --params \'{"activityLevel":"active"}\'' },
|
|
6
|
+
{ kind: 'write', key: 'calorie.profile.set', title: '设置档案', wakeWord: '设置档案', run: writeProfileSet, doc: profileReceiptDoc, example: 'calorie-cmd-read calorie.profile.set --params \'{"heightCm":175,"activityLevel":"moderate"}\'' },
|
|
7
|
+
{ kind: 'write', key: 'calorie.profile.update', title: '改档案', wakeWord: '改档案', run: writeProfileUpdate, doc: profileReceiptDoc, example: 'calorie-cmd-read calorie.profile.update --params \'{"field":"heightCm","value":176}\'' },
|
|
7
8
|
{ kind: 'read', key: 'calorie.view.profile', shape: 'stat', title: '档案视图', run: viewProfile, example: 'calorie-cmd-read calorie.view.profile' },
|
|
8
9
|
{ kind: 'read', key: 'calorie.view.profile-wizard', shape: 'stat', title: '档案预检', wakeWord: '看档案预检', run: viewProfileWizard, example: 'calorie-cmd-read calorie.view.profile-wizard' },
|
|
9
10
|
];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"commands.js","sourceRoot":"","sources":["../../src/profile/commands.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"commands.js","sourceRoot":"","sources":["../../src/profile/commands.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAC3D,OAAO,EAAE,oBAAoB,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AACvF,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAEjD,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC9B,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,0BAA0B,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,oBAAoB,EAAE,GAAG,EAAE,iBAAiB,EAAE,OAAO,EAAE,mFAAmF,EAAE;IACpO,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,qBAAqB,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,eAAe,EAAE,GAAG,EAAE,iBAAiB,EAAE,OAAO,EAAE,+FAA+F,EAAE;IACtO,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,wBAAwB,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE,kBAAkB,EAAE,GAAG,EAAE,iBAAiB,EAAE,OAAO,EAAE,uFAAuF,EAAE;IAClO,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,sBAAsB,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,WAAW,EAAE,OAAO,EAAE,uCAAuC,EAAE;IAC/I,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,6BAA6B,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,EAAE,iBAAiB,EAAE,OAAO,EAAE,8CAA8C,EAAE;CACtJ,CAAC"}
|
package/dist/profile/index.d.ts
CHANGED
|
@@ -1,23 +1,17 @@
|
|
|
1
|
-
/** 基础信息能力对外的门(HELP 场景 07
|
|
1
|
+
/** 基础信息能力对外的门(HELP 场景 07「基础信息」):命令声明 + 整页回执端口。
|
|
2
2
|
*
|
|
3
|
-
*
|
|
3
|
+
* #703:门上的读/写命令入口(原 `runProfileView`/`runProfileWrite`)已删——生产一次都不走它们,
|
|
4
|
+
* 真正分派走生成物 `cli/registry.ts`(`cmd_read.ts`/`write.ts` 查表后直接调声明的 `run`)。
|
|
5
|
+
*
|
|
6
|
+
* 对外两件(铁律五「不多于五个」):
|
|
4
7
|
* ① `PROFILE_COMMANDS`——命令声明(权威源在 `commands.ts`,这里只是转出);
|
|
5
|
-
* ② `
|
|
6
|
-
* ④ `profileReceiptDoc`——档案写命令整页回执的端口:分派层(`src/cli/write.ts`)在用。
|
|
8
|
+
* ② `profileReceiptDoc`——档案写命令整页回执的端口。#703 起它的接线住写声明那一行(`doc:` 位);
|
|
7
9
|
* 两页装配(`setup.ts`/`update.ts` 的两函数)是本目录内件,由 `receipt.ts` 直引,
|
|
8
10
|
* 不再经这道门转出(#330 起:免得同一件回执页有两份出口)。
|
|
9
11
|
*
|
|
10
12
|
* 域内其他件(取数 `view.ts`、写链 `setup.ts`/`update.ts`/`labels.ts`、读写入口 `read.ts`/`write.ts`、
|
|
11
|
-
* 回执端口实现 `receipt.ts`
|
|
12
|
-
* **不出这个目录**,故不在这里转出;`src/index.ts`/`src/render/index.ts` 另按原样转出「档案视图」,
|
|
13
|
-
* 既有调用方导入面不变。
|
|
13
|
+
* 回执端口实现 `receipt.ts` 的键集数据位)**不出这个目录**,故不在这里转出。
|
|
14
14
|
*/
|
|
15
|
-
import type { DatabaseSync } from 'node:sqlite';
|
|
16
|
-
import type { ViewOut, WriteOut } from '../shared/commandSpec.js';
|
|
17
15
|
export { PROFILE_COMMANDS } from './commands.js';
|
|
18
16
|
export { profileReceiptDoc } from './receipt.js';
|
|
19
|
-
/** 读命令入口:命中即走它的处理函数;键不属基础信息(或其实是写键)即抛——**不猜**。 */
|
|
20
|
-
export declare function runProfileView(key: string, params: Record<string, unknown>, db: DatabaseSync): ViewOut;
|
|
21
|
-
/** 写命令入口:同上。 */
|
|
22
|
-
export declare function runProfileWrite(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/profile/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/profile/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC"}
|
package/dist/profile/index.js
CHANGED
|
@@ -1,22 +1,17 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
/** 基础信息能力对外的门(HELP 场景 07「基础信息」):命令声明 + 整页回执端口。
|
|
2
|
+
*
|
|
3
|
+
* #703:门上的读/写命令入口(原 `runProfileView`/`runProfileWrite`)已删——生产一次都不走它们,
|
|
4
|
+
* 真正分派走生成物 `cli/registry.ts`(`cmd_read.ts`/`write.ts` 查表后直接调声明的 `run`)。
|
|
5
|
+
*
|
|
6
|
+
* 对外两件(铁律五「不多于五个」):
|
|
7
|
+
* ① `PROFILE_COMMANDS`——命令声明(权威源在 `commands.ts`,这里只是转出);
|
|
8
|
+
* ② `profileReceiptDoc`——档案写命令整页回执的端口。#703 起它的接线住写声明那一行(`doc:` 位);
|
|
9
|
+
* 两页装配(`setup.ts`/`update.ts` 的两函数)是本目录内件,由 `receipt.ts` 直引,
|
|
10
|
+
* 不再经这道门转出(#330 起:免得同一件回执页有两份出口)。
|
|
11
|
+
*
|
|
12
|
+
* 域内其他件(取数 `view.ts`、写链 `setup.ts`/`update.ts`/`labels.ts`、读写入口 `read.ts`/`write.ts`、
|
|
13
|
+
* 回执端口实现 `receipt.ts` 的键集数据位)**不出这个目录**,故不在这里转出。
|
|
14
|
+
*/
|
|
3
15
|
export { PROFILE_COMMANDS } from './commands.js';
|
|
4
16
|
export { profileReceiptDoc } from './receipt.js';
|
|
5
|
-
const BY_KEY = new Map(PROFILE_COMMANDS.map((c) => [c.key, c]));
|
|
6
|
-
/** 读命令入口:命中即走它的处理函数;键不属基础信息(或其实是写键)即抛——**不猜**。 */
|
|
7
|
-
export function runProfileView(key, params, db) {
|
|
8
|
-
const spec = BY_KEY.get(key);
|
|
9
|
-
if (!spec || spec.kind !== 'read') {
|
|
10
|
-
throw new CalorieRenderError('bad-input', '不是基础信息的读命令:' + key);
|
|
11
|
-
}
|
|
12
|
-
return spec.run(params, db);
|
|
13
|
-
}
|
|
14
|
-
/** 写命令入口:同上。 */
|
|
15
|
-
export function runProfileWrite(key, params, db) {
|
|
16
|
-
const spec = BY_KEY.get(key);
|
|
17
|
-
if (!spec || spec.kind !== 'write') {
|
|
18
|
-
throw new CalorieRenderError('bad-input', '不是基础信息的写命令:' + key);
|
|
19
|
-
}
|
|
20
|
-
return spec.run(params, db);
|
|
21
|
-
}
|
|
22
17
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/profile/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/profile/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC"}
|
package/dist/profile/setup.d.ts
CHANGED
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
* 那一份查询(同一个取数不留两处)。页面层不自算口径:活动量系数取
|
|
23
23
|
* `analysis/utils.TDEE_ACTIVITY_FACTORS` 正本,TDEE 走同文件 `energyOf`(缺身高/年龄/
|
|
24
24
|
* 性别/体重/活动量时**不算**,不填默认值冒充;#177 起这条判据只此一处,看档案结果页同走它)。
|
|
25
|
-
* 未知参数抛 `bad-input`(与 `
|
|
25
|
+
* 未知参数抛 `bad-input`(与 `src/photo/wizardPort.ts` 同字面「不支持字段: 」,出口 exit 2)。
|
|
26
26
|
*/
|
|
27
27
|
import type { DatabaseSync } from 'node:sqlite';
|
|
28
28
|
import type { CrudReceipt } from '../render/receipt.js';
|
|
@@ -4,17 +4,17 @@
|
|
|
4
4
|
* 组合相关走 analyzePair(11 配对原样,pair 非法即 bad-input);缺口/趋势为 T7 薄壳
|
|
5
5
|
* (buildDeficitData/buildTrendData,不自算);饮食复盘三件套为 T5 口径
|
|
6
6
|
* (dietCalorieTrend/dietMacroRatio/dietDeficitAnalysis,rejection 即阻断)。
|
|
7
|
-
*
|
|
8
|
-
*
|
|
7
|
+
* 餐别(#717 批① 收口):窗口、归属、四桶只有一处定义,住共用位 `shared/meal.ts`。
|
|
8
|
+
* 复盘附带按餐桶汇总,归类走 `mealBucketOf`(加餐 = 下午茶 + 夜宵),桶名走 `MEAL_BUCKETS`。
|
|
9
9
|
*/
|
|
10
10
|
import type { DatabaseSync } from 'node:sqlite';
|
|
11
|
+
import type { MealBucket } from '../shared/meal.js';
|
|
11
12
|
import type { DaySeries } from '../analysis/series.js';
|
|
12
13
|
import type { PairAnalysis } from '../analysis/cross.js';
|
|
13
14
|
import type { DeficitData } from '../analysis/deficit.js';
|
|
14
15
|
import type { TrendData } from '../analysis/trend.js';
|
|
15
16
|
import type { CalorieTrend, DeficitAnalysis, MacroRatio } from '../diet/dietEngine.js';
|
|
16
17
|
import type { AnalysisResult } from '../analysis/result.js';
|
|
17
|
-
import type { MealBucket } from './diet.js';
|
|
18
18
|
export declare const COMBINED_PAIRS: string[];
|
|
19
19
|
export interface CombinedAnalysis {
|
|
20
20
|
pair: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"analysisPlate.d.ts","sourceRoot":"","sources":["../../src/render/analysisPlate.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAGhD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAEvD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEzD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAE1D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAEtD,OAAO,KAAK,EAAE,YAAY,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACvF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAK5D,
|
|
1
|
+
{"version":3,"file":"analysisPlate.d.ts","sourceRoot":"","sources":["../../src/render/analysisPlate.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAGhD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAEpD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAEvD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEzD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAE1D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAEtD,OAAO,KAAK,EAAE,YAAY,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACvF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAK5D,eAAO,MAAM,cAAc,UAAqB,CAAC;AAEjD,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,SAAS,EAAE,CAAC;IACpB,QAAQ,EAAE,YAAY,CAAC;CACxB;AAQD,kEAAkE;AAClE,wBAAgB,qBAAqB,CACnC,EAAE,EAAE,YAAY,EAChB,IAAI,EAAE,MAAM,EACZ,MAAM,SAAQ,EACd,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,EACrB,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,EACnB,KAAK,CAAC,EAAE,MAAM,GACb,gBAAgB,CAgClB;AAED,qDAAqD;AACrD,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,WAAW,CAU3F;AAED,wCAAwC;AACxC,wBAAgB,eAAe,CAAC,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,SAAS,CAUvF;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,UAAU,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,cAAc,CAAC,YAAY,CAAC,CAAC;IACpC,KAAK,EAAE,cAAc,CAAC,UAAU,CAAC,CAAC;IAClC,OAAO,EAAE,cAAc,CAAC,eAAe,CAAC,CAAC;IACzC,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,eAAe,EAAE,CAAC;CAC3B;AAED,0EAA0E;AAC1E,wBAAgB,eAAe,CAAC,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,UAAU,CAsCxF"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { listMeals } from '../fetch/diet.js';
|
|
2
|
+
import { MEAL_BUCKETS, mealBucketOf } from '../shared/meal.js';
|
|
2
3
|
import { buildSeries, resolveWindow, seriesCount } from '../analysis/series.js';
|
|
3
4
|
import { analyzePair, PAIRS } from '../analysis/cross.js';
|
|
4
5
|
import { buildDeficitData } from '../analysis/deficit.js';
|
|
@@ -7,7 +8,6 @@ import { dietCalorieTrend, dietDeficitAnalysis, dietMacroRatio } from '../diet/d
|
|
|
7
8
|
import { FetchError } from '../fetch/errors.js';
|
|
8
9
|
import { round2 } from '../kcal.js';
|
|
9
10
|
import { CalorieRenderError } from './errors.js';
|
|
10
|
-
import { MEAL_BUCKETS } from './diet.js';
|
|
11
11
|
export const COMBINED_PAIRS = Object.keys(PAIRS);
|
|
12
12
|
function assertDate(s) {
|
|
13
13
|
if (!/^\d{4}-\d{2}-\d{2}$/.test(s) || Number.isNaN(Date.parse(s + 'T12:00:00Z'))) {
|
|
@@ -85,29 +85,12 @@ export function buildTrendPlate(db, start, end) {
|
|
|
85
85
|
throw e;
|
|
86
86
|
}
|
|
87
87
|
}
|
|
88
|
-
function assertMealWindows() {
|
|
89
|
-
for (const k of ['早餐', '午餐', '下午茶', '晚餐', '夜宵', '加餐']) {
|
|
90
|
-
if (!MEAL_WINDOWS[k])
|
|
91
|
-
throw new CalorieRenderError('missing-data', 'MEAL_WINDOWS 缺餐别: ' + k);
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
function bucketOf(time) {
|
|
95
|
-
if (!time)
|
|
96
|
-
return '其他';
|
|
97
|
-
const m = inferMealType(time);
|
|
98
|
-
if (m === '早餐' || m === '午餐' || m === '晚餐')
|
|
99
|
-
return m;
|
|
100
|
-
if (m === '下午茶' || m === '夜宵')
|
|
101
|
-
return '加餐';
|
|
102
|
-
return '其他';
|
|
103
|
-
}
|
|
104
88
|
/** 饮食复盘盘(diet_review/nutrition_ratio):T5 三件套 + 按餐桶汇总(MEAL_WINDOWS 同源)。 */
|
|
105
89
|
export function buildDietReview(db, start, end) {
|
|
106
90
|
assertDate(start);
|
|
107
91
|
assertDate(end);
|
|
108
92
|
if (start > end)
|
|
109
93
|
throw new CalorieRenderError('bad-input', 'start 不得晚于 end');
|
|
110
|
-
assertMealWindows();
|
|
111
94
|
const trend = dietCalorieTrend(db, start, end);
|
|
112
95
|
const macro = dietMacroRatio(db, start, end);
|
|
113
96
|
const deficit = dietDeficitAnalysis(db, start, end);
|
|
@@ -128,8 +111,8 @@ export function buildDietReview(db, start, end) {
|
|
|
128
111
|
continue;
|
|
129
112
|
}
|
|
130
113
|
for (const r of rows) {
|
|
131
|
-
const b =
|
|
132
|
-
if (b ===
|
|
114
|
+
const b = mealBucketOf(r.time);
|
|
115
|
+
if (b === null)
|
|
133
116
|
continue;
|
|
134
117
|
let e = agg.get(b);
|
|
135
118
|
if (!e) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"analysisPlate.js","sourceRoot":"","sources":["../../src/render/analysisPlate.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"analysisPlate.js","sourceRoot":"","sources":["../../src/render/analysisPlate.ts"],"names":[],"mappings":"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"}
|