From 6bd0d8fb929948bd091daea1bda75c9363670f79 Mon Sep 17 00:00:00 2001 From: b-mob-mail Date: Sun, 12 Jul 2026 22:17:51 +0000 Subject: [PATCH] =?UTF-8?q?docs(app-map):=20=D0=BA=D0=B0=D1=80=D1=82=D0=B0?= =?UTF-8?q?=20=D0=9F=D0=BE=D1=87=D1=82=D1=8B=20(mail.md)=20=E2=80=94=20?= =?UTF-8?q?=D0=BF=D0=BE=20=D0=BC=D0=BE=D0=B1=D0=B8=D0=BB=D1=8C=D0=BD=D0=BE?= =?UTF-8?q?=D0=B9=20=D0=B2=D0=B5=D0=B1=20forbion,=20read-only?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/app-map/mail.md | 169 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 169 insertions(+) create mode 100644 docs/app-map/mail.md diff --git a/docs/app-map/mail.md b/docs/app-map/mail.md new file mode 100644 index 0000000..bd723ad --- /dev/null +++ b/docs/app-map/mail.md @@ -0,0 +1,169 @@ +# Карта: Почта + +Снята по **мобильной веб-версии** 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/` (напр. priority, 517=Входящие). + +**Шапка:** +- Поле «Искать в папке» → фокус строки поиска в текущей папке. +- Иконка-слайдеры (справа в поле) → открывает модалку **«Параметры поиска»** (расширенный поиск). +- Круглая зелёная «+» → открывает **Композер** (сворачивается в плашку «Сообщение без названия»). + +**Тело:** вертикальный список карточек-писем. Пустая папка → центр-заглушка «**В этой папке нет +сообщений**» + логотип F7 `[live]` (наблюдалось в «Отправленных»). + +**Карточка письма (строка):** +- Аватар/инициалы отправителя (цветной кружок). +- Имя отправителя (жирным) + строка-превью темы/начала письма. +- Справа: относительное время («1:00», «вс») + **зелёная точка** = непрочитано. +- Тап по карточке → **Экран открытого письма/треда** (`/box//thread/`). + ⚠️ помечает `\Seen` — live не нажималось. + +**Быстрые действия строки (появляются при наведении/выборе)** `[live]`: +- ✉ конверт → пометить прочитанным/непрочитанным *(запись)*. +- 🌿 лист → важное/снять важность *(запись)*. +- 🗑 корзина → удалить ветку *(запись)*. +- ⋯ → контекстное меню (ниже). + +### Контекстное меню письма (⋯ «Больше действий») `[live]` +Верхний ряд иконок: **В избранное** (звезда) · **Прочитать** (конверт) · **Снять важность** (лист). +Далее пункты: +- 🕐 `<дата и время письма>` (инфо-строка, напр. «13 июля 2026 г., 1:00»). +- ⓘ **Пометить как спам** *(запись)*. +- 🏷 **Изменить метки** → диалог выбора/назначения меток *(запись при сохранении)*. +- ⏰ **Запланированная отправка** *(в native — открывает composer-ответ с выбором времени)*. +- **Переместить ветку** → выбор папки назначения *(запись)*. +- 🗑 **Удалить ветку** *(запись)*. +- ⋯ **Больше действий** → подменю: + - **Редактировать как новое сообщение** → Композер с телом письма. + - **Ответить встречей** → создание события-приглашения (CalDAV). + - **Создать задачу** → создание задачи из письма (Tasks). + - **Скачать письмо** → выгрузка .eml. + +--- + +## Экран: Параметры поиска (расширенный поиск) `[live]` +Открывается иконкой-слайдерами в поле поиска. Модалка «**Параметры поиска**», крестик ✕ (закрыть). +**Поля:** +- **Тема** (строка). +- **Тело** — «Найти» (строка). +- **Дата**: «Дата начала» и «Дата окончания» — два пикера даты (иконка календаря). +- **От** — «Выберите отправителей» (мультиселект). +- **Кому** — «Выберите получателей». +- **Коп** — получатели CC. +- **СкрКоп** — получатели BCC. +- **Метки** — «Выбор меток». +- **Отмечено как** (чекбоксы): Важное · В избранное · Непрочитанное · Имеет вложения · + Упоминания меня. + +**Низ:** «Очистить» (сброс) · «**Поиск**» (зелёная). + +--- + +## Экран: Композер (новое сообщение) `[live]` +Открытие: «+» в шапке списка. Сначала **свёрнутая плашка** снизу «Сообщение без названия» +с иконками ⤢ (развернуть) и ✕ (закрыть/отменить). Развёрнутый вид — полноэкранная форма: + +**Шапка:** заголовок «Новое сообщение», под ним отправитель «cloude »; +справа — («свернуть») и ✕ («закрыть»). +**Поля:** +- **Кому:** с шевроном-раскрытием → раскрывает **Копия:** (Cc) и **Ск:** (Bcc). +- **Тема сообщения**. +- **Текст** (тело, шеврон сворачивания); в правом нижнем углу тела — 📎 **скрепка** (вложения). +**Низ-панель:** +- **≡A** → панель форматирования текста (rich-text: жирный/курсив/списки и т.п.) `[src]`. +- **⋯** → меню: **Умный подборщик** · **Текстовые шаблоны** · **Отправить позже** · + ☐ **Запросить подтверждение прочтения**. +- **▷ Отправить** (зелёная, неактивна при пустых получателях) *(запись — не нажималось)*. + +расхождение(?): проверить на устройстве, что native-композер даёт то же меню «⋯» (Умный +подборщик / шаблоны / отправить позже / подтверждение прочтения) — в native подтверждена +запланированная отправка и вложения; «Умный подборщик» и «Запросить подтверждение прочтения» +в CHANGELOG не упоминались. + +--- + +## Экран: Открытое письмо / тред `[src] [mockup]` — не-пройдено-live: \Seen +URL: `/apps/mail/box//thread/`. Структура по `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 по центру. +- Свёрнутый композер: плашка «Сообщение без названия» (⤢ / ✕) поверх списка. + +--- + +## Открытые вопросы (добить при сверке на устройстве) +1. Экран открытого письма/треда — пройти live, когда будет прочитанное письмо или write-ОК на `\Seen`. +2. Модалка «Параметры эл. почты» — раскрыть каждый подраздел live. +3. Действия «⋯» по папке и по аккаунту — раскрыть состав live. +4. Диалоги «Изменить метки», «Переместить», «Запланированная отправка» — раскрыть формы live. +5. Сверить состав меню композера «⋯» (Умный подборщик / Запросить подтверждение прочтения) с native.