189 lines
18 KiB
Markdown
189 lines
18 KiB
Markdown
# Diff: Карточки (Deck) — итерация 1 (2026-07-13)
|
||
Ff_app: **25.3%** (47 open Ф / 76) · Fd_app: **предварительно, 2/8 экранов** (Roborazzi-пайплайн
|
||
поднят, mail/111) · n-a: 4
|
||
|
||
> **Fd-пайплайн (mail/111):** Roborazzi 360dp живой — `feature/deck/src/test/DeckScreenshotTest`
|
||
> рендерит нативные экраны в PNG (`src/test/screenshots/deck-boards.png`, `deck-board.png`,
|
||
> коммит 58f11c2). Веб-эталон снимаю iframe-360 на forbion (sample-доска «Welcome», без данных
|
||
> `cloude`). Сверено 2 экрана (список досок, доска-стек); Д-находки — ниже. Остальные 6 экранов
|
||
> + всплывающие меню (mail/087) — след. проходы.
|
||
|
||
> Прогресс P1: (6eeba1b) меню карточки «**Назначить мне / Снять**»; (9d726f4) **бейдж
|
||
> комментариев** «💬 N»; (73762d8/4fdadef) **меню колонки** «⋯» — «**Переименовать**» и
|
||
> «**Удалить список**» (`renameStack`/`deleteStack`) — все `[done]` ниже (Ff экрана 4:
|
||
> 52.0%→68.0%). **Compile + detekt модуля GREEN** (detekt-baseline модуля обновлён — v0.5.144-долг,
|
||
> как у calendar e7d0a5a; вписывается в свип лида mail/095).
|
||
|
||
Сверка веб (карта `deck.md`, апстрим `nextcloud/deck v1.16.4` + тема forbion, live-сверка
|
||
Browser 1/cloude read-only) ↔ натив (`feature/deck`: `DeckRepository`/`DeckScreen`/
|
||
`DeckCardSheet`/`DeckViewModel`, внутренний фронт-API `/apps/deck/api/v1.0`). Метод mail/083:
|
||
каждый пункт `[Ф|Д]`·`[open|done|n-a]`, Ff/Fd на экран. Дизайн (Fd) — на устройстве след. проход;
|
||
здесь Ф-функционал из кода + структурные Д, где очевидно. Всплывающие меню (mail/087) раскрыты
|
||
поимённо и сверены построчно.
|
||
|
||
> Контекст доступа: запись на forbion под `cloude` разрешена с ограждениями (mail/085 — только
|
||
> свои объекты `bmob-*`, уборка). Пишущие пункты ниже, помеченные `[open]` из-за «нет в нативе»,
|
||
> закрываются реализацией; «пишущее не проверено на живом» — сниму прогоном CRUD на доске
|
||
> `bmob-deck` после реализации.
|
||
|
||
---
|
||
|
||
## Экран 1: Навигация приложения (веб-дровер) — Ff 16.7% (10 open Ф / 12)
|
||
В нативе отдельного дровера приложения нет — вход = сразу список досок. Пункты веб-навигации:
|
||
- [Ф][open] «**Ожидающие выполнения**» (обзор по срокам) — экрана нет.
|
||
- [Ф][done] «**Все доски**» — натив показывает список досок (это дефолт-экран).
|
||
- [Ф][done] Открыть доску (тап пункта) — есть.
|
||
- [Ф][open] «**Добавить доску**» (инлайн: цвет + имя) — создания доски нет.
|
||
- [Ф][open] «**Импортировать доску**» — нет.
|
||
- [Ф][open] «**Настройки Deck**» — экрана настроек нет.
|
||
|
||
Всплывающее меню доски (⋯ на пункте, `AppNavigationBoard`) — веб ↔ натив (в нативе меню доски НЕТ):
|
||
- [Ф][open] «**Сведения о доске**» (сайдбар доски) — нет.
|
||
- [Ф][open] «**Редактировать доску**» (имя/цвет) — нет.
|
||
- [Ф][open] «**Клонировать доску**» — нет.
|
||
- [Ф][open] «**Архивировать/Разархивировать доску**» — нет (архивные доски просто скрыты).
|
||
- [Ф][open] «**Экспортировать доску**» — нет.
|
||
- [Ф][open] «**Напоминания о сроках**» (Все/Назначенные/Выкл.) — нет.
|
||
|
||
## Экран 2: Все доски (список) — Ff 50.0% (1 open Ф / 2)
|
||
- [Ф][done] Открыть доску (тап строки) — есть.
|
||
- [Ф][open] Поиск/фильтр списка досок (`navFilter`) — нет.
|
||
- [Д][open] Колонка «**Участники**» (аватары ACL) — натив не показывает участников доски
|
||
(`сверено:` Roborazzi vs iframe-360: веб — таблица с колонкой аватаров справа, натив — только bullet+имя).
|
||
- [Д][open] **Заголовки-колонки** «Название доски / Участники» — в вебе есть строка-шапка таблицы,
|
||
в нативе её нет (список без шапки). Fd-минус композиции.
|
||
- [Д][done] Строка доски: bullet цвета + название, border/radius 8 — сверено (Roborazzi
|
||
`deck-boards.png` ↔ веб), совпадает.
|
||
|
||
## Экран 3: Обзор / «Ожидающие выполнения» — Ff 0.0% (2 open Ф / 2)
|
||
- [Ф][open] Дашборд карточек по срокам (Просроченные/Сегодня/Завтра/Ближайшие 7 дней/Позже/
|
||
Без назначенной даты) — экрана в нативе нет совсем.
|
||
- [Ф][open] Открыть карточку из обзора — нет (нет обзора).
|
||
- [Д][open] Композиция: 6 секций-капшенов в столбец, карточки внутри — отсутствует.
|
||
|
||
## Экран 4: Доска (Controls + Колонка + Карточка) — Ff 72.0% (7 open Ф / 25)
|
||
**Шапка доски (`Controls`):**
|
||
- [Ф][done] «**Добавить список**» — натив «+ Колонка» (`createStack`).
|
||
- [Ф][open] «**Применить фильтр**» (по метке / назначенному / статусу) — фильтров нет.
|
||
- [Ф][open] «**Режимы просмотра**» (Показывать архивные карточки / компактный режим / обложки) — нет.
|
||
- [Ф][open] «**Открыть подробности**» (сайдбар доски) — нет.
|
||
- [Ф][done] «**Добавить карточку**» — натив добавляет карточку из шапки колонки.
|
||
**Всплывающее меню колонки (⋯, `Stack`)** — в нативе меню колонки НЕТ:
|
||
- [Ф][open] «**Архивировать все карточки**» — нет.
|
||
- [Ф][open] «**Разархивировать все карточки**» — нет.
|
||
- [Ф][done] «**Удалить список**» — реализовано (меню «⋯» → подтверждение `DeckConfirmDialog`).
|
||
- [Ф][done] «**Изменить заголовок списка / Переименовать**» — реализовано (меню «⋯» → диалог с
|
||
префиллом, `renameStack`).
|
||
- [Ф][done] «**Добавить карточку**» в колонку — есть (инлайн-поле «Имя карточки»).
|
||
**Карточка на доске (`CardItem` + бейджи):**
|
||
- [Ф][done] Открыть карточку (тап) — открывает лист-деталь.
|
||
- [Ф][done] Правка заголовка — есть (в листе-детали; веб правит инлайн — Д-нюанс).
|
||
- [Ф][done] Бейдж срока (`DueDate`) — есть.
|
||
- [Ф][done] Бейдж «**чек-пунктов**» «☑ x/total» — реализовано (`deckChecklistCounts`, парсинг
|
||
чекбоксов описания regex как веб).
|
||
- [Ф][done] Бейдж «**комментариев**» «💬 N» — реализовано (`commentsCount`); индикатор M
|
||
непрочитанных — Д-нюанс на след. проход.
|
||
- [Ф][done] Аватары назначенных — есть (отображение).
|
||
**Всплывающее меню карточки (⋯ / long-press, `CardMenuEntries`)** — в нативе overflow-меню НЕТ
|
||
(тап открывает лист; часть действий — кнопками листа):
|
||
- [Ф][done] «**Сведения о карточке**» — тап открывает лист-деталь.
|
||
- [Ф][done] «**Изменить заголовок**» — в листе.
|
||
- [Ф][done] «**Назначить мне / Снять назначение с меня**» — реализовано (кнопка в листе-детали,
|
||
`toggleAssignSelf`; назначение ПРОИЗВОЛЬНОГО пользователя — отдельный пункт, экран 5).
|
||
- [Ф][done] «**Отметить выполненной / невыполненной**» — чекбокс done есть.
|
||
- [Ф][open] «**Переместить/копировать карточку**» — есть перенос между колонками ОДНОЙ доски
|
||
(чипы), но нет копирования и переноса на ДРУГУЮ доску.
|
||
- [Ф][done] «**Архивировать/Разархивировать карточку**» — кнопка «В архив» есть.
|
||
- [Ф][done] «**Удалить карточку**» — кнопка «Удалить» есть.
|
||
- [Ф][open] «**Отменить удаление**» (Undo-тост) — натив удаляет сразу, без отмены.
|
||
- [Ф][done] Перенос карточки между колонками (в вебе drag-n-drop) — натив реализует переносом
|
||
через чипы «Колонка» (Д-нюанс: без DnD-жеста).
|
||
|
||
**Fd-находки (Roborazzi `deck-board.png` ↔ веб iframe-360):**
|
||
- [Д][open] **Бейджи карточки — иконки vs эмодзи**: веб рисует SVG-иконки (календарь/чек-лист/
|
||
комментарий/аватар), натив — эмодзи (🗓/☑/💬/👤). Расхождение типографики/иконок.
|
||
- [Д][open] **Исполнитель**: веб — кружок-аватар, натив — «👤 имя» текстом. Композиция отличается.
|
||
- [Д][done] Колонка-стек: шапка (заголовок+счётчик+«+»+«⋯»), карточки с метками/чекбоксом/
|
||
заголовком — сверено, композиция близка 1:1.
|
||
- [Д][done] Метки-чипы (цветной фон 0.22 + рамка) и чекбокс done — сверено, совпадают.
|
||
|
||
## Экран 5: Лист-деталь / сайдбар карточки (Свойства/Вложения/Комментарии/Активность) — Ff 38.9% (11 open Ф / 18)
|
||
**Свойства (Details):**
|
||
- [Ф][done] Метки: назначить/снять (toggle меток доски) — есть.
|
||
- [Ф][open] Метки: «**Создать новую метку**» — натив только тогглит существующие.
|
||
- [Ф][open] Назначение: «**Назначить пользователю…**» — нет (write).
|
||
- [Ф][open] Назначение: снять назначение — нет.
|
||
- [Ф][done] Срок: выбрать дату (DatePicker) — есть.
|
||
- [Ф][done] Срок: «**быстрые опции**» — реализованы чипы Сегодня/Завтра/Выходные/Неделя
|
||
(`deckQuickDueIso`). *(«Позже сегодня» с часом — Д-нюанс, натив ставит дату; на след. проход.)*
|
||
- [Ф][done] Срок: «**Убрать срок**» — есть («Сбросить»).
|
||
- [Ф][done] Срок: «Отметить выполненной» из блока срока — есть (done).
|
||
- [Ф][done] Описание: редактировать — есть.
|
||
- [Ф][open] Описание: «**Просмотр/Справка по форматированию**» (rich-preview) — натив простое поле.
|
||
- [Ф][open] Описание: «**Добавить вложение**» из описания — нет.
|
||
- [Ф][n-a] Блок «Проекты» (`NcCollectionList`) — зависит от NC-аппа проектов, вне ядра клиента.
|
||
**Вложения (Attachments) — таба нет в нативе:**
|
||
- [Ф][open] «**Загрузить новые файлы**» — нет.
|
||
- [Ф][open] «**Поделиться из Файлов**» — нет.
|
||
- [Ф][open] Действия вложения (Скачать/Показать в Файлах/Удалить/Восстановить) — нет.
|
||
**Комментарии (Comments) — табы нет:**
|
||
- [Ф][open] «**Добавить комментарий**» (форма + Сохранить) — нет.
|
||
- [Ф][open] Читать ленту комментариев — нет.
|
||
**Активность (Activity):**
|
||
- [Ф][open] Просмотр активности карточки — нет.
|
||
**Шапка листа:**
|
||
- [Ф][done] Правка заголовка карточки — есть.
|
||
- [Ф][n-a] «Открыть в боковом / большом виде» — на мобильном единый лист, не применимо.
|
||
|
||
## Экран 6: Сайдбар доски (Общий доступ/Метки/Удалённые/Активность) — Ff 0.0% (10 open Ф / 10)
|
||
Всего экрана в нативе нет:
|
||
- [Ф][open] «**Общий доступ**»: пошарить доску, права (Can edit/share/manage), «Передать доску», удалить доступ (4 пункта).
|
||
- [Ф][open] «**Метки**»: добавить/редактировать/удалить метку доски (3 пункта).
|
||
- [Ф][open] «**Удалённые элементы**»: восстановить удалённые списки/карточки (2 пункта).
|
||
- [Ф][open] «**Активность**» доски (1 пункт).
|
||
|
||
## Экран 7: Диалог «Переместить/копировать карточку» — Ff 25.0% (3 open Ф / 4)
|
||
- [Ф][done] Переместить в колонку той же доски — есть (чипы в листе; Д: без диалога).
|
||
- [Ф][open] «**Выбрать доску**» (перенос на другую доску) — нет.
|
||
- [Ф][open] «**Копировать карточку**» — нет.
|
||
- [Ф][open] Диалог с селекторами «Доска/Список» — нет (переноса на др. доску нет).
|
||
|
||
## Экран 8: Настройки Deck — Ff 0.0% (3 open Ф / 3)
|
||
Экрана настроек в нативе нет:
|
||
- [Ф][open] «**Использовать увеличенный вид карточки**» — нет.
|
||
- [Ф][open] «**Показывать бейдж ID карточки**» — нет.
|
||
- [Ф][open] «**Показывать доски в календаре/задачах**» — нет.
|
||
- [Ф][n-a] «Настройки администратора» (ограничить создание досок группами) — админ-функция, не клиентская.
|
||
|
||
---
|
||
|
||
## Сводка по экранам
|
||
| Экран | Ff | open Ф / всего |
|
||
|---|---|---|
|
||
| 1. Навигация + меню доски | 16.7% | 10/12 |
|
||
| 2. Все доски (список) | 50.0% | 1/2 |
|
||
| 3. Обзор (по срокам) | 0.0% | 2/2 |
|
||
| 4. Доска (Controls/Колонка/Карточка) | 72.0% | 7/25 |
|
||
| 5. Лист-деталь карточки | 38.9% | 11/18 |
|
||
| 6. Сайдбар доски | 0.0% | 10/10 |
|
||
| 7. Move/copy карточки | 25.0% | 3/4 |
|
||
| 8. Настройки Deck | 0.0% | 3/3 |
|
||
| **Ff_app (среднее)** | **25.3%** | **47/76** |
|
||
|
||
## Приоритеты (черновик, жду визы лида — mail/071 план 1→2→3)
|
||
- **P1 (в своём модуле, наибольший охват):** меню карточки (Назначить мне/Переместить-копировать/
|
||
Undo при удалении); бейджи чек-пунктов и комментариев; меню колонки (Удалить список/Архивировать
|
||
все/Переименовать); «быстрые опции» срока.
|
||
- **P2:** сайдбар карточки — Комментарии и Вложения (Вложения зависят от медиа-слоя b-mob-files,
|
||
mail/083 — согласую точечно); назначение исполнителей (write через `/cards/{id}/assign`).
|
||
- **P3:** обзор «Ожидающие выполнения» (дашборд по срокам); фильтры доски; CRUD досок
|
||
(создать/править/архив/клон/экспорт-импорт); сайдбар доски (шаринг/метки/удалённые); настройки.
|
||
- **n-a (в финал с обоснованием):** проекты-коллекции, «боковой/большой вид» карточки,
|
||
админ-настройки, drag-n-drop-жест (заменён чипами — функц-эквивалент есть).
|
||
|
||
## Медиа-инвентарь (mail/081 §3 / mail/083 B)
|
||
В «Карточках» собственных медиа-просмотрщиков нет; вложения карточки в вебе открываются общим
|
||
NC-viewer. В нативе вкладки «Вложения» пока нет вовсе — когда появится (P2), просмотр
|
||
переиспользую через общий вход `feature/files` (Coil/Media3/PdfRenderer), НЕ плодя своё. Точки
|
||
интеграции согласую с b-mob-files, когда дойду до вложений.
|