# Непокрытые секции доставки видны в статусе разбора **Приоритет:** высокий Была блокером, вынутым ревью кода задачи `razbor-metrik-v-obekty` (профиль `deep`, проход негативного пространства). **Решение принято** — ниже задача. ## Что не так сегодня Разбор читает только `data.metrics`. Доставка, состоящая из `workouts`, `stateOfMind`, `symptoms` или `ecg`, помечается `parse_status=parsed` с нулём точек — неотличимо от доставки с пустой секцией метрик. Само по себе некритично: секции пока не разбираются сознательно, тела лежат в архиве. Опасность в **сцепке с ретеншеном**. Ретеншен по замыслу срезает архив до следующего проверенного экспорта. Если он будет ориентироваться на `parse_status`, он снесёт тела, которые числятся разобранными, — а для `stateOfMind` это необратимо: **в экспорте Apple его нет** (находка 46), доставки HAE для него единственный источник. Цена ошибки здесь не «придётся пересобрать», а «истории состояния разума больше не существует». ## Что решено Вариант (1): **разбор возвращает список верхнеуровневых ключей `data`, которые он не покрыл; статус доставки — `partial`.** Почему он, а не альтернативы: - Считать `parsed` только полностью разобранную доставку, а остальные держать в `pending` — дёшево, но `pending` перестаёт означать «ещё не смотрели», и подбор зависших доставок теряет свой признак. А подбор `pending` как раз появляется задачей [otvet-i-svyortka](otvet-i-svyortka.md). - Запретить ретеншену смотреть на `parse_status` — нулевая цена сейчас, но ретеншен становится тупым и не защищает от «тело разобрано неверно, а мы его уже срезали». Список непокрытых ключей — дешёвая честность, и он же закрывает задачу «не пропустить момент, когда поедет новая секция». ## Что делать 1. `hae.Parse`: перечислить верхнеуровневые ключи `data` и вернуть те, что разбор не покрыл. Один `json.Decoder` по верхнему уровню, **без чтения содержимого** — секции доходят до десятков МиБ. 2. Статус `partial` рядом с `parsed`/`failed`; миграция, если статус хранится ограниченным набором. 3. Свёртка пишет непокрытые ключи в исход доставки и логирует их один раз — именами ключей, без содержимого. 4. Тест на фикстуре с секцией, которой разбор не знает: статус `partial`, ключ в списке, точки метрик при этом сохранены. ## Связано - [retenshen-syrogo-arhiva](retenshen-syrogo-arhiva.md) — решить **до** неё. - [proverka-novyh-sekcij](proverka-novyh-sekcij.md) — тот же признак закрывает и её: момент появления новой секции становится событием в логе. - [trenirovki-i-zapisi](trenirovki-i-zapisi.md) — по мере разбора секций список непокрытых сокращается сам.