Трек дизайна: токены-фундамент (F7Spacing/F7Radius) + карта Figma
CI / verify (push) Has been cancelled
CI / release (push) Has been cancelled

- Снятие токенов из Figma роли design (ocVUCYCrfFUoqYYvlcLPBF): цвета сверены —
  совпадают с F7Colors; типографика Raleway 14/18/20/24 (база в F7Typography есть).
- F7Spacing (4dp-сетка) + F7Radius — закрывают аудитный пробел «нет spacing-токенов».
- docs/DESIGN-SOURCE.md: карта страниц/секций Figma, доступ по API, процесс
  попиксельной вёрстки, заметка про rate-limit (точечные node-запросы).

Источник — Figma (боевой forbion не трогаю). Координация mail/044. designsystem компилируется.
This commit is contained in:
b-dev-mobile
2026-07-08 00:56:43 +00:00
parent fd96ca89e6
commit 312537cd8a
3 changed files with 82 additions and 0 deletions
+2
View File
@@ -2,6 +2,8 @@
Формат: `ГГГГ-ММ-ДД | версия | изменение | контракты | риск`
- 2026-07-08 | v0.5.114 (122) | Трек дизайна (старт): снятие дизайн-токенов из Figma роли design (файл ocVUCYCrfFUoqYYvlcLPBF, доступ по API-токену вне git). Цвета сверены — совпадают с F7Colors; типографика — Raleway 14/18/20/24; заведены F7Spacing (4dp-сетка) + F7Radius (аудит: не было spacing-токенов, ~1087 инлайновых .dp). docs/DESIGN-SOURCE.md — карта Figma + процесс попиксельной вёрстки. Источник — Figma, боевой forbion НЕ трогаю. Координация — mail/044 | дизайн-система (аддитивно, пока не используется) | нет: новые токены, поведение не меняется
- 2026-07-07 | v0.5.114 (122) | Этап 1 (version catalog): заведён gradle/libs.versions.toml, 15 module build.gradle мигрированы на libs.* (скриптом). Устранён дрейф версий: coroutines 1.8.1/1.10.1→1.10.1, coil 2.6.0/2.7.0→2.7.0, lifecycle 2.8.1/2.8.7→2.8.7, activity-compose 1.9.0/1.10.1→1.10.1, core-ktx 1.13.1/1.15.0→1.15.0. Firebase в core/push переведён на bom (был explicit 24.0.1). Compose BOM в каталоге вместо дубля в каждом модуле. Проверено сборкой | контракты не менялись; версии унифицированы вверх (minor-бампы) | низкий: сборочная гигиена, унификация версий
- 2026-07-07 | v0.5.114 (122) | Этап 1 (статанализ): detekt 1.23.8 + formatting-ruleset (ktlint) на все наши модули (vendor исключён), совместим с Kotlin 2.3. config/detekt/detekt.yml + per-module detekt-baseline.xml (~403 текущих замечаний зафиксированы → зелёный, ловит только новые). Добавлен в CI verify-джобу. Нормальные сборки (assembleDebug/Release) не затрагивает (detekt только в check/CI) | процесс качества | нет: тулинг, кода приложения не трогает
- 2026-07-07 | v0.5.114 (122) | Этап 1 (единый OkHttpClient, ч.2 — 401 централизован): добавлен UnauthorizedInterceptor (401→UnauthorizedException) в NetworkFactory (флаг throwOnUnauthorized, по умолч. true). Удалены 75 ручных проверок `if(code==401) throw` в 16 репозиториях. Login-верификация (AuthVerifier) исключена (throwOnUnauthorized=false: 401=«неверный пароль», не session-expired). Побочно: теперь 401 ловится единообразно ВЕЗДЕ, включая пути, что раньше проверку забывали. +3 теста (MockWebServer: 401 бросает, 200/403 проходят) — всего 18. Проверено сборкой | контракты не менялись; поведение 401 сохранено (interceptor бросает то же исключение) | средний: затрагивает обработку 401 во всех репозиториях; login-путь исключён явно, покрыто тестами
@@ -0,0 +1,31 @@
package ru.forbion.f7cloud.core.designsystem
import androidx.compose.ui.unit.dp
/**
* Токены отступов и радиусов (4dp-сетка). До этого отступы задавались числами по месту
* (аудит: ~1087 инлайновых .dp без токенов) — единая шкала для попиксельной вёрстки по Figma.
* Точные значения конкретных экранов сверяются с макетом; эти — базовая сетка.
*/
object F7Spacing {
val none = 0.dp
val xxs = 2.dp
val xs = 4.dp
val sm = 8.dp
val md = 12.dp
val lg = 16.dp
val xl = 20.dp
val xxl = 24.dp
val xxxl = 32.dp
/** Горизонтальные поля экрана (мобильный контент). */
val screenHorizontal = 16.dp
}
object F7Radius {
val none = 0.dp
val sm = 6.dp
val md = 10.dp
val lg = 14.dp
val pill = 999.dp
}
+49
View File
@@ -0,0 +1,49 @@
# Источник дизайна — Figma (попиксельная мобильная вёрстка)
Задача: мобильный клиент = мобильная версия F7 попиксельно. Источник истины — **Figma роли `design`**
(не боевой forbion; glb устарел). Координация — mail/044 (через integrator-b). Приоритет:
**Файлы → Почта → Конференции**, референс **360dp**, тема светлая.
## Доступ к Figma API
Токен — вне git: `/root/.f7cloud-keys/figma.env` (`FIGMA_TOKEN`, `FIGMA_FILE=ocVUCYCrfFUoqYYvlcLPBF`).
```bash
source /root/.f7cloud-keys/figma.env
curl -H "X-Figma-Token: $FIGMA_TOKEN" "https://api.figma.com/v1/files/$FIGMA_FILE/nodes?ids=<ID>&depth=2"
```
⚠️ **Rate limit:** глубокие сканы всей страницы (`1:90` depth≥3) ловят **429**. Работать ТОЧЕЧНО —
запрашивать конкретные node ID нужного экрана с малой глубиной. Рендер кадра в PNG:
`GET /v1/images/$FIGMA_FILE?ids=<ID>&format=png&scale=2`.
## Карта файла (страницы)
| ID | Страница |
|---|---|
| `1:90` | 🟢 Дизайн облачного рабочего места — ОСНОВНОЙ дизайн (65 секций по модулям) |
| `0:1` | Брендбук (токены: TYPOGRAPHY 1:116, цвета 97:8269) |
| `2095:46379` | ⚫️ Пробная тёмная тема (на будущее) |
Мобильные экраны — кадры **360px** (полноэкранные ~360x800), разбросаны по секциям модулей и по
верхнему уровню `1:90`. Секции: Файлы `17:4427`/`948:65419`, Почта `97:16912`/`1609:71537`,
Конференции/Встречи `4:1166`, Конференция `1002:67493`. NB: ссылка владельца `1327:29454`
ДЕСКТОП (1440), не мобиль.
## Снятые токены (сверено с Figma)
**Цвета** — совпадают с текущим `F7Colors` (палитра снята точно ранее): Primary `#70B62B`,
Background `#FBFBFB`, Surface `#FFFFFF`, SurfaceMuted `#F5F5F5`, TextPrimary `#151515`,
TextSecondary `#808080`, Border `#E6E6E6`, PrimaryLight `#F1F8EA`.
**Типографика** — шрифт **Raleway** (medium 500 / semibold 600), шкала 14/18/20/24px
(lh 20/22/24/26). В `F7Typography` есть база; точные размеры конкретных экранов сверяются поэкранно.
**Spacing/радиусы** — раньше НЕ было токенов (аудит: ~1087 инлайновых .dp). Заведены
`F7Spacing` (4dp-сетка) + `F7Radius`. Точные значения экрана — с макета.
## Процесс попиксельной вёрстки (на экран)
1. Найти node ID мобильного экрана (360) в Figma, отрендерить PNG-эталон (scale=2).
2. Извлечь измерения: размеры/паддинги/цвета/текст-стили дочерних узлов (точечный nodes-запрос).
3. Свести к токенам (`F7Colors`/`F7Spacing`/`F7Typography`), реализовать в Compose.
4. Верификация side-by-side: PNG Figma ↔ скриншот приложения (владелец — физ.телефон + BlueStacks;
universal debug-APK со всеми ABI готов, дефолт-URL glb).