docs(app-map): mail.diff.md — diff веб↔натив (итерация 1, mail/081); карта → указатель

This commit is contained in:
b-mob-mail
2026-07-12 22:28:25 +00:00
parent 534dafc2c0
commit af6acdb54a
2 changed files with 56 additions and 41 deletions
+10 -41
View File
@@ -162,44 +162,13 @@ URL: `/apps/mail/box/<id>/thread/<tid>`. Структура по `MessageView.vu
---
## Расхождения с нативным `feature/mail`
Сверка карты (живой forbion) с кодом модуля на 91aaaba. Нативный клиент оказался
функционально богат — расширенный поиск, подтверждение прочтения, важность/спам/метки/
создать задачу/создать событие/запланированная отправка **уже есть** и совпадают. Ниже —
только то, где native **отстаёт или отличается** от живого web (это бэклог на добивку).
### Функциональные (native отстаёт) — бэклог
1. **Черновики не сохраняются** `[приоритет]`. Live: папка «Черновики» + композер сохраняет/
восстанавливает черновик. Native: `MailComposeViewModel` не пишет и не восстанавливает
черновик — набранное теряется. (Совпадает с долгом №1 представления mail/070; план п.2.)
2. **Композер «⋯» → «Текстовые шаблоны»** — вставки в тело нет. Live: пункт есть. Native:
текстовые блоки только в настройках (`MailRepository`), в композере не вставляются
(`MailComposeScreen.kt` меню «⋯» = только «Отправить позже» + «Запросить подтверждение
прочтения»).
3. **Композер «⋯» → «Умный подборщик»** (NC smart picker) — в native отсутствует.
4. **Меню письма → «Ответить встречей»** — в native нет (есть смежное «Создать событие»
`MailComponents.kt:1254`, но это не invite-reply).
5. **Меню письма → «Скачать письмо» (.eml)** — в native отсутствует.
6. **Меню письма → «Редактировать как новое сообщение»** — в native отсутствует.
7. **Действие «Архивировать» над письмом** — в native нет отдельного пункта (папка «Архив»
и `archiveMailboxId` есть, но архивирование только через «Переместить сообщение»
`MailComponents.kt:1259`).
### Косметические / вёрстка (для попиксельной сверки)
8. **Подписи виртуальных папок.** Live: «Непрочитанное», «Избранные». Native: «Непрочитанные»,
«Избранное» (`MailRepository.kt:672-673`) — число/форма слова расходятся.
9. **Порядок папок.** Live: Приоритетные → Входящие → Непрочитанное → Избранные → Черновики →
Отправленные → Спам → Корзина. Native: Входящие → Непрочитанные → Избранное → Отправленные →
Черновики → Архив → Корзина → Спам (`MailRepository.kt:671-680`). Порядок отличается.
10. **Быстрые действия строки списка.** Live-web (даже в узком вьюпорте): inline-иконки при
наведении (✉ прочитать / 🌿 важность / 🗑 удалить / ⋯). Native: свайп справа-налево
(`f7SwipeFromRightToDismiss`). ⚠️ вероятно артефакт desktop-web на узком экране, а не
мобильный паттерн — **проверить на реальном мобильном web/устройстве** прежде чем считать
расхождением.
## Открытые вопросы (добить при сверке на устройстве)
1. **Экран открытого письма/треда** — пройти live, когда будет прочитанное письмо или write-ОК
на `\Seen`; там же сверить панель действий и расхождения (архив/скачать/редактировать-как-новое).
2. Модалка «Параметры эл. почты» — раскрыть каждый подраздел live (native — 6 разделов).
3. Действия «⋯» по папке и по аккаунту — раскрыть состав live.
4. Диалоги «Изменить метки», «Переместить», «Запланированная отправка» — раскрыть формы live.
5. Проверить п.10 (быстрые действия строки) на реальном мобильном — hover-иконки vs свайп.
Полный список расхождений (веб ↔ натив) вынесен в **[`mail.diff.md`](mail.diff.md)** — формат
итерации сверки по mail/081 (функция/элемент, тип Ф/Д, приоритет, статус). Кратко:
нативный клиент функционально зрелый (расширенный поиск, подтверждение прочтения,
важность/спам/метки/задача/событие/запланированная отправка — совпадают). Пробелы:
- **P1 функц.:** черновики не сохраняются из композера.
- **P2:** «Текстовые шаблоны» в композере; подписи и порядок виртуальных папок.
- **P3:** «Умный подборщик», «Ответить встречей», «Скачать письмо», «Редактировать как новое»,
отдельное «Архивировать»; паттерн быстрых действий строки (hover vs свайп — device?).
- **device?:** экран открытого письма, модалка настроек, диалоги меток/перемещения — live не
проходились (read-only / `\Seen`), см. `mail.diff.md` раздел «Требуют device-сверки».