Files
f7cloud_mobile/docs/app-map/mail.md
T

18 KiB
Raw Blame History

Карта: Почта

Снята по мобильной веб-версии forbion.f7cloud.ru (вьюпорт ~400px, плавающая нижняя панель — мобильная тема), аккаунт cloude / почтовый ящик cloude@forbion.ru, строго read-only (mail/073). Живой UI — полный Nextcloud Mail 5.7.15.

Источники узлов: [live] — пройдено в браузере; [src] — достроено по читаемому исходнику design-reference/forbion-apps/f7mail/src (форк f7mail) + nextcloud/mail 5.7.15, т.к. узел требует записи и live не проходился; [mockup] — сверено с design/screens/mail/*.png.

⚠️ Ограничение read-only для Почты. В NC Mail пометкой \Seen является само открытие непрочитанного письма — это запись на сервер. У cloude все 3 письма во «Входящих» — непрочитанные, «Отправленные»/«Черновики» пусты, прочитанных писем нет. Поэтому экран открытого письма live не проходился; его дерево дано по [src]/[mockup] и помечено не-пройдено-live: \Seen. Composer открывался пустым и закрывался без ввода (черновик не создавался). Ни одно пишущее действие (отправка/удаление/спам/перемещение/пометки) не нажималось.


Вход

Нижняя плавающая панель оболочки → иконка «конверт» (раздел «Почта», активна) → открывается Список писем текущей папки (по умолчанию «Приоритетные входящие», /apps/mail/box/priority). Оболочку панели/шторки описывает shell.md (зона лида).


Экран: Список писем (папка) [live]

URL: /apps/mail/box/<id> (напр. priority, 517=Входящие).

Шапка:

  • Поле «Искать в папке» → фокус строки поиска в текущей папке.
  • Иконка-слайдеры (справа в поле) → открывает модалку «Параметры поиска» (расширенный поиск).
  • Круглая зелёная «+» → открывает Композер (сворачивается в плашку «Сообщение без названия»).

Тело: вертикальный список карточек-писем. Пустая папка → центр-заглушка «В этой папке нет сообщений» + логотип F7 [live] (наблюдалось в «Отправленных»).

Карточка письма (строка):

  • Аватар/инициалы отправителя (цветной кружок).
  • Имя отправителя (жирным) + строка-превью темы/начала письма.
  • Справа: относительное время («1:00», «вс») + зелёная точка = непрочитано.
  • Тап по карточке → Экран открытого письма/треда (/box/<id>/thread/<tid>). ⚠️ помечает \Seen — live не нажималось.

Быстрые действия строки (появляются при наведении/выборе) [live]:

  • ✉ конверт → пометить прочитанным/непрочитанным (запись).
  • 🌿 лист → важное/снять важность (запись).
  • 🗑 корзина → удалить ветку (запись).
  • ⋯ → контекстное меню (ниже).

Контекстное меню письма (⋯ «Больше действий») [live]

Верхний ряд иконок: В избранное (звезда) · Прочитать (конверт) · Снять важность (лист). Далее пункты:

  • 🕐 <дата и время письма> (инфо-строка, напр. «13 июля 2026 г., 1:00»).
  • Пометить как спам (запись).
  • 🏷 Изменить метки → диалог выбора/назначения меток (запись при сохранении).
  • Запланированная отправка (в native — открывает composer-ответ с выбором времени).
  • Переместить ветку → выбор папки назначения (запись).
  • 🗑 Удалить ветку (запись).
  • Больше действий → подменю:
    • Редактировать как новое сообщение → Композер с телом письма.
    • Ответить встречей → создание события-приглашения (CalDAV).
    • Создать задачу → создание задачи из письма (Tasks).
    • Скачать письмо → выгрузка .eml.

Экран: Параметры поиска (расширенный поиск) [live]

Открывается иконкой-слайдерами в поле поиска. Модалка «Параметры поиска», крестик ✕ (закрыть). Поля:

  • Тема (строка).
  • Тело — «Найти» (строка).
  • Дата: «Дата начала» и «Дата окончания» — два пикера даты (иконка календаря).
  • От — «Выберите отправителей» (мультиселект).
  • Кому — «Выберите получателей».
  • Коп — получатели CC.
  • СкрКоп — получатели BCC.
  • Метки — «Выбор меток».
  • Отмечено как (чекбоксы): Важное · В избранное · Непрочитанное · Имеет вложения · Упоминания меня.

Низ: «Очистить» (сброс) · «Поиск» (зелёная).


Экран: Композер (новое сообщение) [live]

Открытие: «+» в шапке списка. Сначала свёрнутая плашка снизу «Сообщение без названия» с иконками ⤢ (развернуть) и ✕ (закрыть/отменить). Развёрнутый вид — полноэкранная форма:

Шапка: заголовок «Новое сообщение», под ним отправитель «cloude cloude@forbion.ru»; справа — («свернуть») и ✕ («закрыть»). Поля:

  • Кому: с шевроном-раскрытием → раскрывает Копия: (Cc) и Ск: (Bcc).
  • Тема сообщения.
  • Текст (тело, шеврон сворачивания); в правом нижнем углу тела — 📎 скрепка (вложения). Низ-панель:
  • ≡A → панель форматирования текста (rich-text: жирный/курсив/списки и т.п.) [src].
  • → меню: Умный подборщик · Текстовые шаблоны · Отправить позже · ☐ Запросить подтверждение прочтения.
  • ▷ Отправить (зелёная, неактивна при пустых получателях) (запись — не нажималось).

расхождение: native-композер «⋯» содержит только «Отправить позже» + «Запросить подтверждение прочтения» (MailComposeScreen.kt:758,767) — нет «Умного подборщика» и «Текстовых шаблонов» (см. Расхождения п.2–3). Запланированная отправка, подтверждение прочтения, вложения, rich-text (≡A) — совпадают.


Экран: Открытое письмо / тред [src] [mockup] — не-пройдено-live: \Seen

URL: /apps/mail/box/<id>/thread/<tid>. Структура по MessageView.vue + макетам Почта _ Окно сообщения*.png, Сообщение с перепиской *.png:

Шапка: тема письма (заголовок h2). Для локального (черновик/исходящее) — метка статуса. Панель действий над письмом:

  • Обычное письмо: Ответить · Переслать · В избранное (toggle) · Отметить непрочитанным (если \Seen) · Архивировать · В спам · В корзину · Удалить.
  • Черновик/исходящее: Отправить (если можно) · Изменить черновик · Удалить. Мета-строки: Кому (to), Копия (cc), «Отправить в» (sendAt — для запланированных). Перемещение: выпадающий выбор папки + кнопка «Переместить». Вложения: список карточек вложений (если есть). Тело: HTML-письмо в WebView-контейнере, либо текстовое в Compose (в native). Тред: несколько писем переписки — сворачиваемые карточки (закрытые/открытое), см. Сообщение с перепиской закрытые.png / ... открытое.png. Плавающая кнопка «↩ Ответить» (native MailReplyFab) — сверено ранее, [mockup].

Навигация папок (шторка «Открыть навигацию») [live]

Кнопка-гамбургер почты → выезжает список папок ящика. Сверху: «Создать сообщение» и «Обновить». Далее:

  • Приоритетные входящие (/box/priority).
  • Аккаунт cloude@forbion.ru + кнопка «Действия» (⋯ по аккаунту).
  • Входящие (/box/517) · Непрочитанное (/box/unread/517) · Избранные (/box/starred/517) · Черновики (/box/516) · Отправленные (/box/515) · Спам (/box/513) · Корзина (/box/514).
  • У каждой папки — кнопка «Действия» (⋯: переименование/очистка/подписка и т.п. [src]).

Экран: Параметры эл. почты (настройки) [live] вход / [src] глубина

Точка входа: пункт «Параметры эл. почты» (в меню настроек шапки; JS-модалка, href="#"). Глубину подтверждает native MailSettingsScreens.kt + макеты Параметры электронной почты.png, Параметры учётной записи.png:

  • Основные (общие параметры почты).
  • Учётные записи (аккаунты; форма AccountForm.vue [src]).
  • Внешний вид.
  • Текстовые шаблоны / подписи.
  • Конфиденциальность.
  • Безопасность.
  • Фильтры (sieve) — FiltersSettingsView.vue [src]; в native — общий официальный API /apps/mail/api/filter (список/вкл/выкл/удаление/правка простых; сложные — долг v1).

расхождение(?): live-модалку «Параметры эл. почты» не раскрывал по пунктам (JS-диалог) — при сверке на устройстве пройти каждый подраздел и сверить состав с native.


Пустые/особые состояния [live]

  • Пустая папка: «В этой папке нет сообщений» + логотип F7 по центру.
  • Свёрнутый композер: плашка «Сообщение без названия» (⤢ / ✕) поверх списка.

Расхождения с нативным 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).

Косметические / вёрстка (для попиксельной сверки)

  1. Подписи виртуальных папок. Live: «Непрочитанное», «Избранные». Native: «Непрочитанные», «Избранное» (MailRepository.kt:672-673) — число/форма слова расходятся.
  2. Порядок папок. Live: Приоритетные → Входящие → Непрочитанное → Избранные → Черновики → Отправленные → Спам → Корзина. Native: Входящие → Непрочитанные → Избранное → Отправленные → Черновики → Архив → Корзина → Спам (MailRepository.kt:671-680). Порядок отличается.
  3. Быстрые действия строки списка. Live-web (даже в узком вьюпорте): inline-иконки при наведении (✉ прочитать / 🌿 важность / 🗑 удалить / ⋯). Native: свайп справа-налево (f7SwipeFromRightToDismiss). ⚠️ вероятно артефакт desktop-web на узком экране, а не мобильный паттерн — проверить на реальном мобильном web/устройстве прежде чем считать расхождением.

Открытые вопросы (добить при сверке на устройстве)

  1. Экран открытого письма/треда — пройти live, когда будет прочитанное письмо или write-ОК на \Seen; там же сверить панель действий и расхождения (архив/скачать/редактировать-как-новое).
  2. Модалка «Параметры эл. почты» — раскрыть каждый подраздел live (native — 6 разделов).
  3. Действия «⋯» по папке и по аккаунту — раскрыть состав live.
  4. Диалоги «Изменить метки», «Переместить», «Запланированная отправка» — раскрыть формы live.
  5. Проверить п.10 (быстрые действия строки) на реальном мобильном — hover-иконки vs свайп.