docs(app-map): mail.diff.md — diff веб↔натив (итерация 1, mail/081); карта → указатель
This commit is contained in:
@@ -0,0 +1,46 @@
|
|||||||
|
# Diff: Почта (веб forbion ↔ нативный `feature/mail`)
|
||||||
|
|
||||||
|
Итерация 1 (по mail/081). Вход — карта `mail.md` (живой forbion, аккаунт `cloude`, read-only) +
|
||||||
|
код модуля `feature/mail` на 91aaaba. Тип: **Ф** — функционал, **Д** — дизайн/вёрстка.
|
||||||
|
Приоритет: P1 (болит/ядро), P2 (заметно), P3 (мелочь/косметика).
|
||||||
|
Статус: `open` — есть в вебе, нет/иначе в нативе; `device?` — требует проверки на устройстве.
|
||||||
|
|
||||||
|
> Общий вывод: нативный клиент функционально зрелый — расширенный поиск (все поля),
|
||||||
|
> подтверждение прочтения, важность/спам/метки/переместить/создать задачу/создать событие/
|
||||||
|
> запланированная отправка **уже есть и совпадают**. Ниже — только реальные пробелы.
|
||||||
|
|
||||||
|
## Функциональные
|
||||||
|
|
||||||
|
| # | Элемент / функция | В вебе (forbion) | В нативе (`feature/mail`) | Тип | Приор. | Статус |
|
||||||
|
|---|---|---|---|---|---|---|
|
||||||
|
| 1 | Черновики | Папка «Черновики» + композер сохраняет и восстанавливает черновик | Композер **не сохраняет** черновик — набранное теряется (`MailComposeViewModel`) | Ф | **P1** | open |
|
||||||
|
| 2 | Композер «⋯» → «Текстовые шаблоны» | Вставка шаблона/подписи в тело письма | Текстовые блоки только в настройках (`MailRepository`), в композер не вставляются | Ф | P2 | open |
|
||||||
|
| 3 | Композер «⋯» → «Умный подборщик» (smart picker) | Есть (вставка ссылок/упоминаний/виджетов) | Нет | Ф | P3 | open |
|
||||||
|
| 4 | Меню письма → «Ответить встречей» | Создание ответа-приглашения (iMIP) | Нет (есть смежное «Создать событие» `MailComponents.kt:1254`) | Ф | P3 | open |
|
||||||
|
| 5 | Меню письма → «Скачать письмо» (.eml) | Выгрузка исходника письма | Нет | Ф | P3 | open |
|
||||||
|
| 6 | Меню письма → «Редактировать как новое сообщение» | Открывает композер с телом письма | Нет | Ф | P3 | open |
|
||||||
|
| 7 | Действие «Архивировать» над письмом | Отдельная кнопка «в архив» | Нет отдельного пункта; архив только через «Переместить» (`MailComponents.kt:1259`) | Ф | P3 | open |
|
||||||
|
|
||||||
|
## Дизайн / вёрстка
|
||||||
|
|
||||||
|
| # | Элемент | В вебе (forbion) | В нативе | Тип | Приор. | Статус |
|
||||||
|
|---|---|---|---|---|---|---|
|
||||||
|
| 8 | Подписи виртуальных папок | «Непрочитанное», «Избранные» | «Непрочитанные», «Избранное» (`MailRepository.kt:672-673`) | Д | P2 | open |
|
||||||
|
| 9 | Порядок папок | Приоритетные→Входящие→Непрочитанное→Избранные→Черновики→Отправленные→Спам→Корзина | Входящие→Непрочитанные→Избранное→Отправленные→Черновики→Архив→Корзина→Спам (`MailRepository.kt:671-680`) | Д | P2 | open |
|
||||||
|
| 10 | Быстрые действия строки списка | Inline-иконки при наведении (✉/🌿/🗑/⋯) | Свайп справа-налево (`f7SwipeFromRightToDismiss`) | Д | P3 | **device?** |
|
||||||
|
|
||||||
|
## Требуют device-сверки (карта live не покрыла)
|
||||||
|
|
||||||
|
| # | Что | Причина | Статус |
|
||||||
|
|---|---|---|---|
|
||||||
|
| A | Экран открытого письма/треда: панель действий (Ответить/Переслать/Архив/Спам/Корзина/Удалить), меты, вложения, HTML-тело | live не проходился — открытие непрочитанного = запись `\Seen`; структура достроена по `MessageView.vue`+макетам | device? |
|
||||||
|
| B | Модалка «Параметры эл. почты» по подразделам (native — 6 разделов) | JS-модалка, live не раскрыта по пунктам | device? |
|
||||||
|
| C | Диалоги «Изменить метки» / «Переместить» / «Запланированная отправка» — состав форм | live не раскрывались (пишущие) | device? |
|
||||||
|
| D | Действия «⋯» по папке и по аккаунту в шторке навигации | live не раскрывались | device? |
|
||||||
|
| E | Проверить #10: hover-иконки vs свайп — не артефакт ли desktop-web на узком экране | нужен реальный мобильный web/устройство | device? |
|
||||||
|
|
||||||
|
## Примечание по методу
|
||||||
|
- Пункт #10 помечен `device?`: наблюдённые inline-hover-действия могут быть поведением
|
||||||
|
desktop-web в узком вьюпорте, а не мобильным паттерном — до проверки на реальном мобильном
|
||||||
|
не тащить в реализацию.
|
||||||
|
- Метрику ≤2% (mail/081 п.2) считаю по чек-листу «элементы+функции на экран» — жду формулу лида.
|
||||||
+10
-41
@@ -162,44 +162,13 @@ URL: `/apps/mail/box/<id>/thread/<tid>`. Структура по `MessageView.vu
|
|||||||
---
|
---
|
||||||
|
|
||||||
## Расхождения с нативным `feature/mail`
|
## Расхождения с нативным `feature/mail`
|
||||||
Сверка карты (живой forbion) с кодом модуля на 91aaaba. Нативный клиент оказался
|
Полный список расхождений (веб ↔ натив) вынесен в **[`mail.diff.md`](mail.diff.md)** — формат
|
||||||
функционально богат — расширенный поиск, подтверждение прочтения, важность/спам/метки/
|
итерации сверки по mail/081 (функция/элемент, тип Ф/Д, приоритет, статус). Кратко:
|
||||||
создать задачу/создать событие/запланированная отправка **уже есть** и совпадают. Ниже —
|
нативный клиент функционально зрелый (расширенный поиск, подтверждение прочтения,
|
||||||
только то, где native **отстаёт или отличается** от живого web (это бэклог на добивку).
|
важность/спам/метки/задача/событие/запланированная отправка — совпадают). Пробелы:
|
||||||
|
- **P1 функц.:** черновики не сохраняются из композера.
|
||||||
### Функциональные (native отстаёт) — бэклог
|
- **P2:** «Текстовые шаблоны» в композере; подписи и порядок виртуальных папок.
|
||||||
1. **Черновики не сохраняются** `[приоритет]`. Live: папка «Черновики» + композер сохраняет/
|
- **P3:** «Умный подборщик», «Ответить встречей», «Скачать письмо», «Редактировать как новое»,
|
||||||
восстанавливает черновик. Native: `MailComposeViewModel` не пишет и не восстанавливает
|
отдельное «Архивировать»; паттерн быстрых действий строки (hover vs свайп — device?).
|
||||||
черновик — набранное теряется. (Совпадает с долгом №1 представления mail/070; план п.2.)
|
- **device?:** экран открытого письма, модалка настроек, диалоги меток/перемещения — live не
|
||||||
2. **Композер «⋯» → «Текстовые шаблоны»** — вставки в тело нет. Live: пункт есть. Native:
|
проходились (read-only / `\Seen`), см. `mail.diff.md` раздел «Требуют device-сверки».
|
||||||
текстовые блоки только в настройках (`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 свайп.
|
|
||||||
|
|||||||
Reference in New Issue
Block a user