docs: ссылки на план по названиям шагов вместо номеров
- шесть ссылок уже указывали не туда: самоописание значилось шагом 5 (оно 6), import — шагом 6 (он 8), TLS — шагом 8 (это деплой, 11) - README, local-research.md и беклог переведены на названия; нумерация остаётся внутренним делом plan.md
This commit is contained in:
@@ -55,7 +55,7 @@ iPhone ──HTTPS POST──► healthlog ──► журнал доставо
|
||||
|
||||
## Состояние
|
||||
|
||||
В разработке. Готовы шаги 1–2 из 11 и большая часть шага 3: сервис принимает
|
||||
В разработке. Готовы каркас и приём, большая часть разбора: сервис принимает
|
||||
пакеты, складывает их в сырой архив и **разбирает метрики в часовые объекты**
|
||||
— с выводом слоя из данных, канонизацией содержимого и слиянием точек по
|
||||
полноте. Секции, которых разбор пока не покрывает (`workouts`, `stateOfMind` —
|
||||
@@ -72,8 +72,8 @@ iPhone ──HTTPS POST──► healthlog ──► журнал доставо
|
||||
|
||||
```
|
||||
healthlog serve приём + read API + MCP
|
||||
healthlog import родной экспорт Apple Health (шаг 8)
|
||||
healthlog reindex пересборка хранилища из архива (шаг 3)
|
||||
healthlog import родной экспорт Apple Health (в планах)
|
||||
healthlog reindex пересборка хранилища из архива (в планах)
|
||||
healthlog healthcheck проверка живости для docker HEALTHCHECK
|
||||
```
|
||||
|
||||
@@ -102,7 +102,7 @@ curl -X POST localhost:8080/api/v1/ingest -d '{"data":{"metrics":[]}}'
|
||||
|
||||
Если `auth.write_tokens` пуст, проверка токена выключена — для доверенной
|
||||
локальной сети этого достаточно, сервис пишет об этом `write auth disabled`
|
||||
на старте. Для доступа снаружи понадобится и токен, и TLS (шаг 8).
|
||||
на старте. Для доступа снаружи понадобится и токен, и TLS — это шаг «Деплой».
|
||||
|
||||
|
||||
## Документация
|
||||
|
||||
@@ -19,5 +19,5 @@ MCP не даёт ничего, чего не даёт HTTP, и права об
|
||||
Готово, когда агент подключается по URL и отвечает на «как я спал на прошлой
|
||||
неделе» без промежуточного кода.
|
||||
|
||||
Связано: `docs/architecture.md` → «MCP», план шаг 7.
|
||||
Связано: `docs/architecture.md` → «MCP», план → шаг «MCP».
|
||||
|
||||
|
||||
@@ -17,5 +17,5 @@
|
||||
Готово, когда «шаги за неделю по дням» и «вес за год» отвечаются одним запросом
|
||||
каждый, а в ответе всегда видно `layer`, `bucket` и `aggregation`.
|
||||
|
||||
Связано: `docs/architecture.md` → «Read API», план шаг 5.
|
||||
Связано: `docs/architecture.md` → «Read API», план → шаг «Read API».
|
||||
|
||||
|
||||
@@ -24,5 +24,5 @@
|
||||
Готово, когда пересборка с нуля даёт состояние, совпадающее с накопленным
|
||||
приёмом, и повторный прогон ничего не меняет.
|
||||
|
||||
Связано: план шаг 3, `docs/architecture.md` → «Сырой архив».
|
||||
Связано: план → шаг «Разбор и хранилище», `docs/architecture.md` → «Сырой архив».
|
||||
|
||||
|
||||
@@ -26,5 +26,5 @@ HAE. Он не сэмплы, а посекундная развёртка (на
|
||||
`2026-08-01-polnota-tochki-mnozhestvom-klyuchey`), здесь остался только выбор
|
||||
победителя при РАВНОЙ полноте.
|
||||
|
||||
Связано: `docs/architecture.md` → «Слои гранулярности», план шаг 4.
|
||||
Связано: `docs/architecture.md` → «Слои гранулярности», план → шаг «Каталог и род агрегации».
|
||||
|
||||
|
||||
@@ -310,7 +310,7 @@ session-id уникален на каждую доставку
|
||||
|
||||
**Следствие:** заголовок годится как метаданные доставки, но **не как
|
||||
описание данных**. Гранулярность определяется по самим меткам времени, а не по
|
||||
`aggregation`. Для самоописания (шаг 5) шаг метрики нужно выводить из данных —
|
||||
`aggregation`. Для самоописания шаг метрики нужно выводить из данных —
|
||||
как и всё остальное.
|
||||
|
||||
## 14. Две автоматизации с одним набором метрик дают дубликат
|
||||
@@ -406,7 +406,7 @@ heartRateRecovery массив 13 точек [date, Min, Avg, Max, u
|
||||
появились данные, добавились `mindful_minutes` и `walking_heart_rate_average`.
|
||||
|
||||
Каталог метрик растёт по факту поступления данных. Это подтверждает выбор
|
||||
обобщённой модели хранения и выводимых схем (шаг 5): фиксированный список
|
||||
обобщённой модели хранения и выводимых схем: фиксированный список
|
||||
метрик в коде устарел бы в тот же день.
|
||||
|
||||
## 18. Пустой пакет не отправляется
|
||||
@@ -567,7 +567,7 @@ basal_energy_burned 3600 точек в час = 86 400 в сутки
|
||||
напишет обычный пробел и получит пустой ответ без всякой ошибки. То же
|
||||
касается составных значений: `"Apple Watch Ultra 3|iPhone (Anton)"`.
|
||||
|
||||
**Следствие:** в самоописании (шаг 5) значения-примеры нужно отдавать так,
|
||||
**Следствие:** в самоописании значения-примеры нужно отдавать так,
|
||||
чтобы невидимые символы были заметны, а в read API фильтр по источнику — либо
|
||||
не делать, либо нормализовать пробелы на входе и хранить оба варианта.
|
||||
Значение при этом храним дословно, как и всё остальное.
|
||||
@@ -815,7 +815,7 @@ active_energy 22:06:32 0.0074754192155406605 против 0.007475419215
|
||||
дубликатов при идентичности по содержимому. Ключ по координатам
|
||||
(`метрика + date + source`) с перезаписью значений эту проблему снимает и
|
||||
заодно сохраняет эпизоды сна (они различаются `start`/`end`) — стоит
|
||||
вернуться к развилке находки 11 при реализации шага 3.
|
||||
вернуться к развилке находки 11 при реализации разбора.
|
||||
|
||||
## 31. Вся мета-информация о выгрузке — в заголовках, и она полуправдива
|
||||
|
||||
@@ -891,7 +891,7 @@ User-Agent Auto%20Export/20260729.1 CFNetwork/3860.700.1 Darw
|
||||
`Auto%20Export/20260729.1` — датированный номер сборки, плюс версия системы
|
||||
(`Darwin/25.6.0`). Это закрывает вопрос, который висел с самого начала: формат
|
||||
данных может измениться только с обновлением Health Auto Export, и теперь
|
||||
**обновление видно в каждой доставке**. Значит выведенные схемы (шаг 5) можно
|
||||
**обновление видно в каждой доставке**. Значит выведенные схемы можно
|
||||
сверять по версии: изменилась версия — стоит перепроверить формы точек.
|
||||
|
||||
Версию стоит сохранять отдельной колонкой рядом с доставкой, а не только внутри
|
||||
@@ -1049,7 +1049,7 @@ BasalEnergyBurned: 564 записи, интервал: медиана 10с, м
|
||||
`export_cda.xml` на 1,1 ГБ), архив целиком 104 МБ. Имя файла **локализовано** —
|
||||
`экспорт.xml`, а не `export.xml`: захардкодить нельзя.
|
||||
|
||||
Значит `healthlog import` из шага 6 — это не «те же JSON, только из файла», а
|
||||
Значит `healthlog import` — это не «те же JSON, только из файла», а
|
||||
отдельный парсер XML со своей моделью записи. Зато он даёт слой, которого HAE
|
||||
не отдаёт ни в каком режиме.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user