From af25ee8e6d30964c0c1f3c1123494b4e0d263ba9 Mon Sep 17 00:00:00 2001 From: b-mob-contacts Date: Mon, 13 Jul 2026 07:40:01 +0000 Subject: [PATCH] =?UTF-8?q?docs(app-map):=20contacts.diff=20=D1=83=D1=82?= =?UTF-8?q?=D0=BE=D1=87=D0=BD=D1=91=D0=BD=20=D0=BF=D0=BE=20mail/102=20(?= =?UTF-8?q?=D0=9A=D0=BE=D0=BC=D0=B0=D0=BD=D0=B4=D1=8B=3Dn-a,=20Ff=2031.2%)?= =?UTF-8?q?=20+=20P1=20=D1=8F=D0=B4=D1=80=D0=BE=20landed=20(bc1a497)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/app-map/STATUS.md | 2 +- docs/app-map/contacts.diff.md | 46 ++++++++++++++++++++--------------- 2 files changed, 28 insertions(+), 20 deletions(-) diff --git a/docs/app-map/STATUS.md b/docs/app-map/STATUS.md index bfedd8d..b5db80e 100644 --- a/docs/app-map/STATUS.md +++ b/docs/app-map/STATUS.md @@ -19,7 +19,7 @@ | notifications | b-mob-notify | 0 | — | — | — | — | нет | карта готова, diff | | deck | b-mob-deck | 1 | 22.6 | предв. | 52 | ? | нет | P1 начат: «Назначить мне/снять» done (6eeba1b, green compile); далее бейджи чек-пунктов/комментариев, меню колонки (Удалить/Переименовать), быстрые сроки; Fd на устройстве | | calendar | b-mob-calendar | 1 | 53.3 | 67.0 | ~37 | ~7 | нет | P1 разворот повторений ЗАКРЫТ в коде (`CalendarRecurrence`+11 тестов, compile+detekt green); NB: обновил протухший detekt-baseline модуля (v0.5.144-долг, не мой); далее P2 EXDATE/RECURRENCE-ID; Appointments — вопрос n-a лиду | -| contacts | b-mob-contacts | 1 | 26.7 | предв. | ~40 | ? | нет | diff выложен (7 экранов); P1 — edit/delete (core-правка одобрена 072), далее группы/типы | +| contacts | b-mob-contacts | 1 | 31.2 | предв. | ~37 | ? | нет | P1 ядро edit/delete в main (`bc1a497`: updateContact/deleteContact If-Match + VCardEditor, 10 тестов, гейт зелёный); Команды=n-a (102); далее шаг 2/2 Room+форма, потом P2 группы/типы | Обозначения статуса: `карта` → `diff` (итерация 1) → `правки` → `повторный прогон` → `✅ 0` (Ff=Fd=100%) → `✅ 0 подтв.` (второй прогон держит 0). diff --git a/docs/app-map/contacts.diff.md b/docs/app-map/contacts.diff.md index 301d714..bffed69 100644 --- a/docs/app-map/contacts.diff.md +++ b/docs/app-map/contacts.diff.md @@ -1,5 +1,13 @@ # Diff: Контакты (CardDAV) — итерация 1 (2026-07-13) -Ff_app: **26.7%** · Fd_app: **предварительно** (натив на устройстве в этот проход не гонялся; веб снят live 390px) · n-a: 3 +Ff_app: **31.2%** · Fd_app: **предварительно** (натив на устройстве в этот проход не гонялся; веб снят live 390px) · n-a: 8 + +> Прогресс P1 (коммит bc1a497): ЯДРО правки/удаления готово и покрыто тестами (10 юнит-тестов +> `VCardEditorTest` зелёные, гейт `:app:compileReleaseKotlin` зелёный) — `CardDavClient.updateContact` +> (PUT If-Match, round-trip неизвестных полей vCard) / `deleteContact` (DELETE If-Match) + +> `VCardEditor`. UI-часть (Room href/etag/raw + форма правки + delete в карточке) — шаг 2/2, следующим +> коммитом; пункты «Править»/«Удалить» карточки станут `[done]` после неё. +> Решение лида (mail/102): экран «Команды» (Circles) — целиком `n-a` (отдельный тяжёлый апп, не контакты); +> порядок P1→P2→P4→P3→P5 утверждён. Сверка веб (карта `contacts.md`, апстрим `nextcloud/contacts` + тема `_mobile-*.css`) ↔ натив (`feature/contacts` Compose поверх CardDAV/`core:network`). Метод mail/083: `[Ф|Д]`·`[open|done|n-a]`, @@ -84,19 +92,20 @@ Fd (дизайн) — отдельным проходом на устройст - [Ф][open] Разворачивание/сворачивание узлов (`^N`). - [Ф][open] Переход к карточке из узла. -## Экран 6: Команда (например «Тест») — Ff 0.0% (0 open Ф / 5; n-a 3) -Отсутствует в нативе: -- [Ф][open] Просмотр команды (название/владелец/участники). -- [Ф][open] «✏️ Править» команду. -- [Ф][open] «Копировать ссылку». -- [Ф][open] «Добавить» участника. -- [Ф][open] Список участников (роль «Владелец» и т.д.). -- [Ф][n-a] Создать «Папка» — зона `feature/files` (создаётся из Файлов). +## Экран 6: Команда (Circles/Teams) — n-a целиком (0 применимых Ф; n-a 8) — исключён из среднего +Решение лида (mail/102): отдельного экрана команд в мобильных Контактах v1 НЕ делаем — Circles это +самостоятельный тяжёлый апп (членство/уровни/шары), не контакты. Весь экран `n-a`: +- [Ф][n-a] Просмотр команды (название/владелец/участники). +- [Ф][n-a] «✏️ Править» команду. +- [Ф][n-a] «Копировать ссылку». +- [Ф][n-a] «Добавить» участника. +- [Ф][n-a] Список участников. +- [Ф][n-a] Создать «Папка» — зона `feature/files`. - [Ф][n-a] Создать «Конференции» — зона `feature/talk`. - [Ф][n-a] Создать «Календарь» — зона `feature/calendar`. -> n-a обоснование: три «Создать …» из карточки команды — кросс-модульные создающие потоки чужих -> модулей, достижимы из их приложений; в контактах мобильно-неприменимы. Команды (Circles/Teams) -> целиком — кандидат на согласование с лидом: нужен ли отдельный экран команд в мобильных Контактах. +> Обоснование: Circles = отдельное приложение (мобильно — не в скоупе Контактов v1); три «Создать …» +> — кросс-модульные создающие потоки чужих модулей. NB: «команды» ≠ «группы контактов»: группы +> (CATEGORIES→чипы) остаются в скоупе (P2). ## Экран 7: Параметры контактов (модальный шит) — Ff 0.0% (5 open Ф / 5) Отсутствует в нативе: @@ -108,7 +117,7 @@ Fd (дизайн) — отдельным проходом на устройст --- ## Сводка и приоритеты (прошу приоритизацию у лида) -Ff_app **26.7%** по 7 экранам (Э1 100 · Э2 18.2 · Э3 42.1 · Э4 26.7 · Э5/6/7 0). Fd — предварительно. +Ff_app **31.2%** по 6 экранам (Э1 100 · Э2 18.2 · Э3 42.1 · Э4 26.7 · Э5 0 · Э7 0; Э6 Команды = n-a, исключён). Fd — предварительно. Крупнейшие функциональные дыры (кандидаты P1–P5), совпадают с моим планом mail/072: 1. **Правка/удаление контакта** (Экран 4 + ⋯ карточки): edit-форма, `updateContact` PUT If-Match с round-trip неизвестных полей vCard, `deleteContact`, выбор адресной книги, поля должность/адрес/ @@ -122,12 +131,11 @@ Ff_app **26.7%** по 7 экранам (Э1 100 · Э2 18.2 · Э3 42.1 · Э4 2 5. **Параметры** (Экран 7): сортировка, импорт, управление адресными книгами. Прочее: соц.сеть/cloud-ID/QR/скачать/копировать в карточке; оргструктура-граф; экран команд (см. n-a). -## Вопросы к лиду (b-dev-mobile) -- Порядок P1–P5? Мой дефолт (не жду ответа, начинаю с P1 edit/delete — целиком мой модуль + - твоё уже-данное добро на core-правку): 1→2→(4 кросс-модуль)→3→5. -- **Команды (Circles/Teams)** (Экран 6) — нужен ли отдельный экран команд в мобильных Контактах, - или считаем n-a целиком? Три «Создать …» я пометил n-a (чужие модули) — подтверди. -- **Оргструктура** (Экран 5) — в скоуп мобильных Контактов или n-a? +## Вопросы к лиду (b-dev-mobile) — РЕШЕНО (mail/102) +- ✅ Порядок P1→P2→P4→P3→P5 — утверждён. +- ✅ **Команды (Circles/Teams)** (Экран 6) — `n-a` целиком (учтено выше). +- ⏳ **Оргструктура** (Экран 5) — лид пока не высказался; держу `open` (не занижаю знаменатель + односторонним n-a). Аналогична Circles по «тяжести» — вероятный кандидат в n-a, жду слова. - Fd: гоню отдельным проходом на устройстве после ревью-сборки — сборка/версия по гейту (084) за тобой. ## Live-запись (mail/085, ограждения)