Record why the gate's delivery prefill must set the dish's grams as its basis
Some checks are pending
dependency freshness / dependencies on newest stable (push) Waiting to run
file-length / file length <= 250 lines (push) Waiting to run
md-naming / markdown naming convention (push) Waiting to run
pre-commit / pre-commit (push) Waiting to run
Tests / test (push) Waiting to run
release-apk / release (APK) (push) Waiting to run

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
Krzysztof Rudnicki 2026-09-20 08:44:20 +02:00
parent e0d62e19a0
commit d2df4c51eb
3 changed files with 17 additions and 4 deletions

View File

@ -87,9 +87,13 @@ List<KuchniaDish> dishesInSlotOrder(
/// Returns `(portionGrams, (kcal, protein, carbs, fat))` as form strings.
///
/// Mirrors `_kuchnia_spread.dish_field_values`. Formatted here rather than in
/// the widget so the numeric formatting is covered by a test that needs no
/// display.
/// Phone-only, deliberately: this form logs the fields as typed, so writing
/// the dish's whole-portion macros into them is correct. The PC gate's form
/// scales its macros from a "per" basis to the amount eaten, so it goes
/// through `_kuchnia_log.dish_nutrition` (basis = the dish's own grams)
/// instead -- filling its fields this way logged 3.5x the calories.
/// Formatted here rather than in the widget so the numeric formatting is
/// covered by a test that needs no display.
///
/// Python uses `f"{value:g}"`, which drops a trailing `.0`; Dart's
/// `toStringAsFixed` would keep it and `toString` would render `435.0`. So a

View File

@ -2,7 +2,7 @@ name: diet_guard_app
description: "Companion phone app for diet_guard: log meals on the go."
publish_to: 'none'
version: 1.0.88+1
version: 1.0.89+1
environment:
sdk: ^3.12.2

View File

@ -85,6 +85,15 @@ This was proven, not assumed: 4·protein + 4·carbs + 9·fat reproduces the stat
payload and would silently skew every logged meal by a factor of several, so
the parser refuses rather than importing a plausible-looking lie.
The same mix-up has a second home: the PC gate's form. Its macro fields are a
*reference* scaled from the "per" basis to the amount eaten, so the delivery
prefill must go through `_apply_reference` with `_kuchnia_log.dish_nutrition`
(basis = the dish's own grams). Writing the macros straight into the fields
left the basis at `_clear_inputs`'s 100 g default and logged grams/100 times
too much while the fields still read correctly (350 g owsianka: 448 shown,
1568 logged; every gate-logged delivery 2026-08-23 to 2026-09-20). The phone's
`dishFieldValues` has no such basis and is correct as is.
## Credentials
Three files under `~/.config/diet_guard/`, all mode 600. They are outside