docs(app-map): calendar.diff — P1+BYDAY done, Appointments=n-a (Ff 64.0/Fd 80.4 по 5 экранам) + STATUS

This commit is contained in:
b-mob-calendar
2026-07-13 07:44:34 +00:00
parent 492af6157e
commit 7be35490e4
2 changed files with 12 additions and 10 deletions
+11 -9
View File
@@ -1,8 +1,7 @@
# Diff: Календарь (Calendar) — итерация 1 (2026-07-13)
Ff_app: **53.3%** · Fd_app: **67.0%** (среднее по 6 экранам, невзвешенно) · n-a: 0
_(без экрана Appointments, если владелец сочтёт его мобильно-неприменимым: Ff_app **64.0%** /
Fd_app **80.4%** по 5 экранам — вопрос лиду в конце.)_
Ff_app: **64.0%** · Fd_app: **80.4%** (среднее по 5 экранам, невзвешенно) · n-a: Экран 5
Appointments (решение лида mail/101 — организаторская фича, мобильно-неприменима, вне знаменателя).
> **P1 закрыт в коде** (итерация правок 1): разворот повторяющихся событий реализован —
> `CalendarRecurrence` (генератор оккуренций RRULE на лету, без кэша и без `<c:expand>`,
@@ -91,8 +90,11 @@ mail/085) добавлю следующим проходом — этот про
[Д][done] секция импорта · [Д][open] отсутствуют секции General/Editing/Availability/CalDAV ·
[Д][open] порядок и группировка пунктов по теме.
## Экран 5. Appointments / Расписание встреч — Ff 0.0% · Fd 0.0%
Ф (10, open 10) — **раздел отсутствует в нативе целиком**:
## Экран 5. Appointments / Расписание встреч — `n-a` (вне метрики, mail/101)
Решение лида: организаторская фича (публикация слотов, внешние букинги) — десктоп/веб-воркфлоу,
на мобильном клиенте неприменима, тянет тяжёлый UI. Экран целиком `n-a`, из знаменателя исключён,
остаётся в финальном списке с обоснованием.
Ф (10, все `n-a`) — раздел отсутствует в нативе (осознанно):
- [Ф][open] список расписаний встреч · [Ф][open] «Создать расписание встреч»
- [Ф][open] поля: имя/описание/местоположение/длительность/инкремент
- [Ф][open] «Календарь бронирования» · [Ф][open] «Календари для проверки конфликтов»
@@ -100,8 +102,7 @@ mail/085) добавлю следующим проходом — этот про
- [Ф][open] «Создать комнату Talk» для встречи · [Ф][open] публичная страница бронирования
(внешний гость: выбор слота → Подтвердить)
Д (n/a пока — экран не реализован).
> ВОПРОС ЛИДУ: Appointments мобильно-применимы или помечаем `n-a` (организаторская фича, чаще
> десктоп)? От ответа зависит, входит ли экран в знаменатель (см. шапку — две метрики).
> Решено (mail/101): `n-a` — вне знаменателя.
## Экран 6. Окно события — Ff 83.3% · Fd 92.0%
Ф (30, open 5):
@@ -148,8 +149,9 @@ pill-поля 40dp, шапка с крестиком/галочкой, высо
## Предлагаемый порядок правок (жду приоритизацию лида)
- **P1 — Разворот повторений в сетке/списке** (Экран 1, долг №2): ✅ **СДЕЛАНО в коде**
(`CalendarRecurrence` + `eventOccursOnDay`, mail/072-совместимо: развёртка на лету, без кэша
и `<c:expand>`; +11 тестов). Остаётся девайс-сверка (подтверждающий прогон). NB: `BYDAY=1MO`
(месячный n-й день недели) в модели `RecurrenceRule` ещё не хранится — уходит в P2.
и `<c:expand>`; +11 тестов). **`BYDAY=1MO` тоже починен** (коммит 492af61): `RecurrenceRule`
хранит/сериализует ординал (раньше терялся в `toRrule`) + разворот n-го дня месяца +4 теста.
Остаётся девайс-сверка (подтверждающий прогон).
- **P2 — EXDATE + RECURRENCE-ID** (Экран 6, долг №3): чтение EXDATE (не показывать удалённые
оккуренции) → выбор области правки/удаления «это / это и будущие» → запись без затирания серии.
- **P3 — Настройки** (Экран 4): вынести веб-параметры (номера недель/выходные/задачи-в-календаре/