diff --git a/docs/app-map/files.diff.md b/docs/app-map/files.diff.md new file mode 100644 index 0000000..6be52e7 --- /dev/null +++ b/docs/app-map/files.diff.md @@ -0,0 +1,41 @@ +# Расхождения: Файлы (web forbion ↔ нативный feature/files) + +Список несоответствий по методу mail/081 (итерация сверки). Вход — карта +[`files.md`](files.md). Сверка **по коду** `feature/files` (состав/функции); попиксельная +вёрстка по CSS-теме и визуал — отдельным проходом после сборки на устройстве. + +Обозначения: **[Ф]** функционал · **[Д]** дизайн/вёрстка · приоритет P1(высокий)…P3(низкий). +Статус: `open` — не начато, `wip` — в работе, `done` — закрыто и сверено повторно. + +## Итерация 1 — сверка по коду (2026-07-12) + +| # | Элемент/функция | В вебе | В нативе | Тип | Приор. | Статус | +|---|---|---|---|---|---|---| +| D1 | Панель «Подробно» — вкладки | 4: Общий доступ / **Версии** / **Чат** / События | 2: Sharing, Events (`FileDetailsTab`, FilesModels.kt:67) — нет «Версии», «Чат/комментарии» | Ф | P2 | open | +| D2 | Фильтры-чипы | «Тип файла» (мультивыбор 8 типов), «Изменён» (5 пресетов дат), «Участники» (по людям) | Чипы есть, но обработчики — заглушки: Тип/Изменён → сортировка, Участники → пустой `{}` (FilesScreen.kt:224-226). Фильтрации нет | Ф | P1 | open | +| D3 | Групповые действия (bulk) | 6: избранное, метки, переместить/копировать, скачать, архивировать, удалить | 3: Favorite, Download, Delete (`FilesBulkAction`, FilesComponents.kt:1064); Download → заглушка `showWebOnlyMessage` | Ф | P1 | open | +| D4 | Шэры — создание | Внутренние ссылки: пользователь (type 0) / группа (type 1) + публичная (type 3) | Создаётся только `shareType=3` публичная ссылка (`createPublicShareLink`, FilesApiRepository.kt:174); чтение чужих шэров есть (`fetchShares` :199) | Ф | P1 | open | + +Снято (не расхождение): меню «Новый» — нативный `FilesCreateMenu.kt` содержит весь веб-список +(загрузка + 10 «Создать новое») и даже пункт сверх («Добавить описание папки»). + +## Инвентарь открывашек файлов (для медиа-воркстрима, mail/081 §3) + +Текущее состояние нативных просмотрщиков в `feature/files`: + +| Тип | Форматы | Как открывается сейчас | Пробел | +|---|---|---|---| +| Изображения | jpg/jpeg/png/gif/webp/bmp/heic/heif (`OpenableFiles.kt:10`) | Нативно `ImageViewerActivity` (Coil AsyncImage) | — (svg нет в списке — добавить?) | +| Офис | doc/docx/xls/xlsx/xlsm/… (`OfficeFiles.kt`) | Collabora/Richdocuments в WebView | — (есть) | +| Текст/Markdown | md/markdown/txt/text/org/log (`WebOpenableFiles.kt:17`) | Нативный `MarkdownEditorScreen` | — (есть) | +| Доска | .whiteboard (`WebOpenableFiles.kt:9`) | WebView (Excalidraw, realtime — нативно не делаем) | — (осознанно web) | +| **PDF** | pdf | Нет нативного вьюера → системный интент/`LocalFileOpener` или «тип не поддерживается» (FilesViewModel.kt:495) | **[Ф] P1 — нужен нативный PDF-вьюер** | +| **Видео** | mp4/webm/mkv/mov | Нет нативного плеера → системный интент | **[Ф] P2 — нативный видеоплеер** | +| **Аудио** | mp3/aac/ogg/wav/flac | Нет нативного плеера → системный интент | **[Ф] P2 — нативный аудиоплеер** | + +Медиа-архитектуру (нативные плееры vs webview/интенты) определяет лид — жду письмо-раскладку +(mail/081 §3). До неё PDF/видео/аудио уходят в системный `ACTION_VIEW` (chooser «Открыть с помощью»). + +## Осталось для итерации 2 (нужна сборка на устройстве) +- [Д] попиксельная вёрстка всех экранов по CSS-теме `_mobile-files.css`. +- [Ф] дерево «Поиска», переходы после открытия PDF/аудио/видео (визуальная сверка).