51fd1bf936
1. trust-all TLS отключён в release: гейт if(!BuildConfig.DEBUG) в UnsafeSsl + OfficeWebViewClient + TalkCallActivity; чекбокс скрыт в release. buildConfig включён в core:network и feature:talk. 2. allowBackup=false (tools:replace поверх vendor true). 3. app password шифруется в покое AndroidKeystore AES-256-GCM (KeystoreCrypto), AuthStore мигрирует legacy-plaintext при первом load. Биометрия — отдельная задача (ломает фоновые push/звонки, нужен кэш в памяти). 4. Ревокация app password при logout (AppPasswordRevoker, DELETE core/apppassword, best-effort). Проверено: assembleRelease 53 МБ, подпись v2+v3, allowBackup=false в манифесте OK.
5.3 KiB
5.3 KiB
INTEGRATION.md — f7cloud_mobile
Мобильный клиент F7 (ячейка B, роль
b-dev-mobile). Контракты компонента для интеграционного контроля (f7_platform, CONVENTIONS §2).
Назначение
Нативное Android-приложение F7cloud (Kotlin 2.3 + Jetpack Compose): файлы, почта,
календарь, контакты, задачи, конференции (Talk), техподдержка, Deck. Замена
legacy WebView-оболочки android-webview.
Хосты
- Не имеет своих серверных компонентов. Работает на устройствах пользователей (Android, minSdk 26).
- Сборка — на инфраструктуре ячейки B (markov-cloudi), Gradle 9.3 / AGP 8.13 / JDK 21.
- Хосты ячейки A приложение не занимает; взаимодействие — только как HTTP-клиент
тенанта F7. URL сервера задаёт пользователь на экране входа; дефолт поля —
BuildConfig.DEFAULT_SERVER_URL(свойство сборкиf7DefaultServerUrl, по умолчанию пусто — прод-URL в сборку не вшит, решение mail/035). - Зашитых обращений к боевым хостам A нет с v0.5.114: убраны дефолт
forbion.f7cloud.ru(экран входа) и preconnect кhpb-prod.f7cloud.ru(TalkHelper.buildPreconnectScript— теперь только origin сессии).
Отдаёт (provides)
- APK
ru.forbion.f7cloud.mobile(текущая версия 0.5.113 / code 121,app/build.gradle). Дистрибуция: пока ручная (debug APK); канал через F7 App Store (dev-appstore, R26) — предмет будущего согласования. - Серверных портов/API/файлов НЕ предоставляет.
Потребляет (depends on) — все контракты на стороне ТЕНАНТА F7
| Контракт | Что используется |
|---|---|
OCS /ocs/v2.php/cloud/user |
авторизация, davUserId (пароль/app-password при 2FA) |
OCS DELETE /ocs/v2.php/core/apppassword |
ревокация app password при logout (best-effort) |
| WebDAV | файлы (PROPFIND, oc:fileid) |
| CalDAV | календарь и задачи |
| CardDAV | контакты |
| NC Mail API (+ preferences, trusted senders, text blocks) | почта |
OCS /ocs/v2.php/apps/spreed /api/v4, bot /api/v1 |
Talk: чат, конференции, звонки (vendor-форк talk-android v23.0.0, GPL-3.0) |
Dashboard API v1/v2/v3 (apps/dashboard/api/*) |
виджеты «Главной» |
Richdocuments Direct Editing (apps/richdocuments/api/v1/document) + Collabora (coll.f7cloud.ru) |
офисные документы |
f7support (NC-апп) |
тикеты техподдержки |
| Deck API | карточки |
themes/forbion/ (иконки, CSS-эталоны) |
брендинг/вёрстка |
f7push (NC-апп) + Firebase FCM |
push-уведомления |
Общие/глобальные ресурсы (ARCHITECTURE §3)
- Приложение потребляет §3-ресурсы «Версии NC/Talk и OCS-API конференции» (NC 32.0.5, spreed /api/v4, bot /api/v1) как read-only клиент — тот же класс зависимости, что у транскрипции (R5): апгрейд Talk/NC на тенантах может ломать клиента. Ничего на серверах НЕ изменяет и не конфигурирует.
- Касание серверной стороны (новые эндпоинты, конфиги, регистрация в App Store) —
только через письмо
integrator-bДО реализации.
Инварианты и допущения
- Тенант отвечает по OCS v2 / WebDAV / CalDAV / CardDAV; spreed — API v4, bot v1
(см. форк
f7_talk22.0.12-f7.N — инварианты OCS сохранены, это нам и нужно). - Тема
forbionдоступна на сервере (иконки грузятся с тенанта). - Richdocuments + Collabora включены на тенанте, где нужны офис-документы.
- Смена версий/схем перечисленных API на тенантах = ломающее изменение для приложения → просьба уведомлять через CHANGELOG платформы / письмо.
Секреты (где, НЕ значения)
- В git секретов нет. Учётные данные пользователя — только на устройстве
(session storage
core/auth). google-services.json(Firebase) — вне git; путь сборки документируется в PROJECT-STATUS.md.- Release-keystore для подписи — вне git (пока не настроен, сборки debug).
Версия / changelog
- Текущее: v0.5.113 (code 121) — модуль «Задачи». История — CHANGELOG.md
и git-история
app/build.gradle.