Последнее обновление: 2026-02-17 (Redis pub/sub, k6→Grafana, UI fixes)
stageplus/mobile_app — backend, flutter-app, web-panel, docsdb3.zubat.ru — БД stageplus, пользователь stageplusd17c0831da52 (10 таблиц)stageplus-9ca55 — push-уведомления (FCM)stageplus, File type, protected)mapp-stage.miniapp.zubat.ruadmin-stage.miniapp.zubat.ru (веб-панель)admin-stage.miniapp.zubat.rustageplus, хранение файловizub@macmini добавлен на app server0b3e006)stageplus/ci-templates (Kaniko + SSH deploy), 8 проектов переведеныdocker rundocuments.miniapp.zubat.ru — для отдачи документов/файлов (SSL, nginx → MinIO):8010) — auth, users, device tokens, app versions:8020) — chats, messages, WS, files, push:8000) — cars, orders, rates, webhooks/iam/, /chat/, /api/v1/, /calculator/, /car-specs/stageplus_iam, stageplus_chat, stageplus (core)/internal/users/{id}, /internal/device-tokens/{id}/metrics endpoints, домен metrics-stage.miniapp.zubat.ru
stageplus/mobile_app/load-tests (ID 79543543)
mapp.stage-plus.ru (когда DNS будет готов)documents.stage-plus.ru (когда DNS будет готов)1cdd94e)http://192.168.100.201:8480/...)+7 и маска телефона +7 (XXX) XXX-XX-XX+79148885001 / Stage2026!+79001234567 "Тест Клиент"build() (f9bd9a2)e79c7a1)a1f3a8a)4a29e7d)otp-bot (8654c1d)
POST /send-code → отправка кода в Telegram-группуstageplus/mobile_app/otp-bot (ID 79416071)SP_SMS_PROVIDER=smsru — переключение на реальный SMSPOST /chats/{id}/read)last_read_message_id в ChatMemberOut (c108cf2)65af0cb)
a1b2c3d4e5f6POST/DELETE /api/v1/notifications/device-tokene7b0ff0)074d212)729c902)729c902)729c902)10e957e)a8917aa)a05c631)cd919ef)1cdd94e)/chats (0c64c65)bbd8aa1)6fe4553)9cbc6b4)58a2ffd)0ad7b8f)0ad7b8f)bc25cdb)6023cda)93dd5e2)3f97c31)6b55108)6023cda)6023cda)c93a5d5)9bfcefa)admin-stage.miniapp.zubat.ru (525023f)413f1a9)413f1a9)dec5ae1)ccc213a)4baf25d)e3c4860)1eb3d17)03722f7)b04a1bb)b04a1bb)/managers, role badge, online, app_version (e15afee)window.open() вместо SPA-навигации (d72ea30)b1a8b10)car property (56f3072)0c78593)0c78593)1f6810b)85de93a)42bee9d)9c8497c)4c6d2d5)auc.stage-plus.ru) — Playwright-based, отдельный репо ajes-parser (9d72b58)
run_model_sync.py)sold_price скрыты из каталога (86d281f)557cd01)91454d7)enrich_cars2.py)6023cda)1fd7cb8)6418874)6023cda)page/per_page/search/status → {items, total, page, pages}car-specs-service — справочник спецификаций (марка/модель/объём → л.с., тип топлива)
stageplus/car-specs-service, CI/CD, порт 8094POST /parse/refresh, GET /parse/status, GET /specscalculator-service — расчёт полной стоимости авто до города
stageplus/calculator-service, CI/CD, порт 8096POST /calculate — пошлины, утиль, брокер, экспертизы, лаб., комиссия, автовозhp_source: provided / specs / estimatedcdf4f55)
/api/v1/rates131c7b9, fix 6df041c)PATCH /users/me)e79c7a1)e79c7a1)e79c7a1)97d16c9)+7 (d196f61)6418874)docs/MOBILE_BUILD.md6418874)X-App-Version header, таблица app_versions, auto-update в deps (0eb72c9, e2a3955)--dart-define=COMMIT_HASH, отображение в профиле (604ce55)deploy-yury.sh, deploy-andrey.sh, deploy-all.sh с COMMIT_HASH (2f7e9bd)build-release-android.sh (AAB+APK), build-release-ios.sh (IPA) (e7fa484)key.properties + build.gradle.kts (e7fa484)https://stage-plus.bitrix24.ru/rest/1/cddsmf903gofl5wjauc.stage-plus.ru (Playwright, отдельный репо)| # | Проблема | Статус | Приоритет |
|---|---|---|---|
| 1 | /panel/ |
🟢 Решена (отдельный домен) | — |
| 2 | Git remote SSH не работает с Mac Mini | 🟡 Workaround (HTTPS push) | Низкий |
| 3 | bcrypt==4.0.1 пиннут для совместимости с passlib |
🟢 Обход | — |
| 4 | 🟢 Решена (f9bd9a2) |
— | |
| 5 | 🟢 Решена (e7b0ff0) |
— | |
| 6 | 🟢 Решена (696a5bd) |
— | |
| 7 | flutter_svg не рендерит конвертированный PDF логотип | 🟡 Обход (PNG) | Низкий |
| 8 | 🟢 Решена (0b3e006) |
— | |
| 9 | 🟢 Решена (a8917aa) |
— | |
| 10 | 🟢 Решена (a05c631) |
— | |
| 11 | 🟢 Решена (d6d504d) |
— | |
| 12 | 🟢 Решена (3f51349) |
— | |
| 13 | 🟢 Решена (3f97c31) |
— | |
| 14 | 🟢 Решена (6b55108) |
— | |
| 15 | 🟢 Решена — package path fix (6418874) |
— | |
| 16 | 🟢 Решена — тип car_link (6418874) |
— | |
| 17 | 🟢 Решена (6023cda) |
— |
Авторизация, чаты (личные), каталог (просмотр + фильтры), профиль, веб-панель (чаты), деплой.
Прогресс: 100%
Групповые чаты, статусы заказов (Bitrix24), избранное, курсы валют (виджет), push по статусам, шаблоны ответов.
Видео/голосовые, push по новым авто, аналитика, светлая тема.
| Репо | Коммит | Описание |
|---|---|---|
| backend | a05c631 |
feat: auto-join manager to chat on first access |
| backend | a8917aa |
feat: managers see unassigned chats in list |
| backend | 0b3e006 |
fix: CORS explicit origins |
| backend | d6d504d |
fix: kaniko auth base64 newline |
| backend | d75a44b |
ci: switch to Kaniko with layer caching |
| backend | 10e957e |
fix: client can only have one chat |
| backend | 729c902 |
feat: client inquiry chats + manager join |
| backend | a1f3a8a |
feat: return user + is_new_user from verify/login |
| flutter | bc25cdb |
fix: members sheet on title tap, no subtitle |
| flutter | 0ad7b8f |
feat: sender name on messages + chat title |
| flutter | 10f5cd8 |
feat: companion name in chat list and screen |
| flutter | 58a2ffd |
fix: client FAB opens existing chat |
| flutter | e79c7a1 |
feat: profile onboarding + edit profile |
| backend | 2f296fe |
docs: update README with push notifications |
| backend | dbab154 |
ci: mount Firebase service account via CI/CD variable |
| backend | 65af0cb |
feat: push notifications via FCM |
| flutter | 6d06c34 |
docs: proper README with architecture, Firebase |
| flutter | 93dd5e2 |
feat: push notifications via FCM |
| flutter | f9bd9a2 |
fix: GoRouter singleton for OTP |
| backend | c6470f5 |
feat: PATCH /chats/{id} for renaming |
| backend | cd919ef |
fix: restrict chat rename to managers/admins |
| flutter | 6418874 |
feat: splash screen, chat select, file_picker v8, MainActivity fix |
| flutter | 3f51349 |
fix: GoogleService-Info.plist in Xcode resources |
| flutter | 3f97c31 |
fix: FCM token error on simulator |
| flutter | 6b55108 |
fix: loading spinner during auth check |
| web-panel | 9bfcefa |
feat: new chat modal with client search |
| backend | e828b2f |
feat: include car data in message response for car_link |
| flutter | 6023cda |
feat: photo fix, fullscreen image, car card, sort, push nav, in-app notif |
| web-panel | 525023f |
feat: separate domain admin-stage |
| backend | 4e9f476 |
feat: alphabetical brand/model sort |
| backend | 290d280 |
feat: orders title, user, bitrix_data |
| backend | 25c2856 |
feat: paginated orders/users API |
| backend | 074d212 |
feat: WS new_chat + new_message_unassigned |
| flutter | 1fd7cb8 |
feat: yen price formatting |
| flutter | 8772938 |
feat: order card with car name, localized statuses |
| flutter | ae4608a |
feat: handle new_chat WS events |
| web-panel | dec5ae1 |
feat: profile page |
| web-panel | d72ea30 |
fix: file click opens in new tab |
| web-panel | 413f1a9 |
feat: pagination Orders + Clients |
| web-panel | 12570cb |
fix: role=client lowercase |
| backend | c108cf2 |
feat: last_read_message_id in ChatMemberOut |
| backend | 567d323 |
feat: app_version in UserOut |
| backend | 131c7b9 |
fix: ATB rates parsing (input fields) |
| backend | 0eb72c9 |
feat: app version tracking system |
| backend | 91454d7 |
feat: transmission_type mapping |
| backend | 6df041c |
fix: ATB rates regex name vs id |
| backend | 86d281f |
fix: hide cars without sold_price |
| backend | 6d8e0c6 |
feat: showcase mode — 1 car per make+model |
| backend | 557cd01 |
fix: showcase pagination via subquery |
| flutter | bbd8aa1 |
feat: read checkmarks ✓/✓✓ |
| flutter | e2a3955 |
feat: X-App-Version header |
| flutter | 24de629 |
feat: transmission_type display |
| flutter | 604ce55 |
feat: commit hash in version |
| flutter | 6fe4553 |
fix: HTTP markRead on chat open |
| flutter | e7fa484 |
feat: release build scripts + signing |
| web-panel | e15afee |
feat: managers page + add-member fix |
| web-panel | 1eb3d17 |
feat: car detail modal |
| web-panel | 90d0650 |
fix: TS errors in car detail |
| web-panel | b04a1bb |
fix: decode HTML entities, hide empty specs |
| web-panel | 4baf25d |
fix: status filter useEffect + lowercase |
| web-panel | 03722f7 |
feat: fullscreen photo preview |
| web-panel | e3c4860 |
feat: brand/model dropdown selects |
| web-panel | 0c78593 |
fix: chat images fullscreen + direct file URLs |
| web-panel | bb00b52 |
fix: TS build — JSX root element |
| 2026-02-17 — Микросервисная архитектура | ||
| iam-service | 14ca64c |
init: IAM service |
| iam-service | a615154 |
feat: full app source |
| iam-service | cadf387 |
feat: internal endpoints |
| chat-service | bab782f |
init: Chat service (TokenUser, WS, FCM) |
| chat-service | 24d91b0 |
fix: python-multipart dep |
| chat-service | 3ed8795 |
fix: file URLs — metadata in message_files, thumbnails |
| chat-service | 28676e1 |
fix: get_settings() import |
| backend | db355d5…d0519d1 |
refactor: remove 19 files (-2,555 lines), TokenUser pattern |
| flutter | c03e712, cf5c6a6 |
refactor: 3 Dio instances (IAM/Chat/Core), v0.1.0 |
| web-panel | c7646c0, c1e6107 |
refactor: 3 axios instances (IAM/Chat/Core) |
| web-panel | 1f6810b |
fix: upload files via chat-service |
| load-tests | d1f9de3 |
init: k6 tests for microservices (10 files) |
| load-tests | 063f044 |
fix: add auth to all scenarios |
| load-tests | dcca8e5 |
feat: VMAgent remote write config |
| chat-service | 0c64c65 |
feat: user_role in members enrichment |
| chat-service | 1cdd94e |
feat: Redis pub/sub + 2 instances |
| web-panel | 85de93a |
feat: chat rename + members list |
| web-panel | 42bee9d |
fix: show user role in members |
| web-panel | 9c8497c |
fix: message type preview (Фото/Файл) |
| web-panel | 4c6d2d5 |
fix: lowercase role + items extraction |
| flutter | c93a5d5 |
fix: reload chats on tab switch |
| flutter | f305e44 |
chore: upgrade all deps, iOS target 14.0 |