plibvi · «По любви» и «По душе» · срез на 24 сентября 2026

Где мы сейчас: состояние двенадцати частей платформы

Разбор по коду, веткам, стендам и трекеру: что не начато, что начато и не доделано, что работает и требует доработок, что готово. В конце сроки, которые можно называть команде, и решения, которые ждут владельца.

Неделя роадмапа W13 из 16, релиз в прод по плану 18.10.2026 Наш main 2894cd60, GitHub main 907d52d4, релизная ветка 7807dc8e Трекер: DUSHA 107 карточек, LYUBVI 49 Проверка только чтением, 8 параллельных разборов
ИТОГ

Одним экраном

Платформа собрана и работает на стендах: оба Android-приложения свёрстаны по Figma, консоль, сборщики, блог и бэкенд живут. Ни одна часть не доведена до продакшена, и почти все упираются в три вещи, которые не решаются кодом.

1. Код не доезжает до прода

144 коммита и 9 миграций за десять дней лежат только на этом сервере. Прод cloud.ru собирается из кузни Gitea, куда у наших сессий нет ключа; зеркало GitHub стирает всё, чего нет в кузне. Релизная ветка 23.09 стёрта с GitHub через часы после пуша.

2. Прод-копия лежит и не защищена

Оба контура cloud.ru недоступны с 24.09, причина неизвестна, алертов нет. Бэкапов базы с 36 тысячами пользователей нет, нагрузка не прогонялась, тестовый код входа открывает любой аккаунт на копии, в репозитории лежат боевые ключи.

3. Внешние зависимости владельца

Аккаунт Apple для «По душе» (до 5.10), домены для витрины и блога, доступы Play Console и Firebase, ключи кассы и SMS, бакет для бэкапов, юрист по 572-ФЗ, оператор для очередей Telegram и сборщиков.

Что уже готово

Раздел SEO целиком (этап 1, принят 30–31.08). Бэкенд событий с записью, чек-ином, отзывами и репутацией. Автоимпорт из 27 площадок и Telegram-каналов. Консоль на два продукта с закрытыми замечаниями 14.09. Вёрстка обоих Android по Figma: 549 из 623 и 470 из 508 кадров.

готовоработает, требует доработокначато, не доделаноне начатозаблокировано внешним Полоска показывает ту же шкалу от «не начато» до «готово»
№ЧастьСостояниеГде сейчасБлижайшая вехаОстаток
01«По душе» iOS начатоПеренос на Compose Multiplatform начат 24.09; Android разложен по фасадам, iOS-приложение ни разу не запускалось; аккаунта Apple под него нетПервая сборка в TestFlight 9–15.1017–35 чд
02«По душе» Android работаетВсё по Figma, работает на дев-стенде, сборка 24.09 у владельца; 86 карточек ждут приёмки; нет пушей, релизной подписи, удаления аккаунтаПриёмка владельцем; выкат сервера на cloud.ru35–50 чд, 4–6 нед
03«По душе» Web работаетВитрина на трёх контурах за паролем и без индексации; продуктовой работы нет с 12.08; тестов нетДомен, затем публичный запуск8–12 чд + домен; до прототипа ещё 15–25
04«По любви» iOS начато36 экранов свёрстаны, в приложении 5; остальное старый вид; TestFlight внутренний с 22.09; владелец взял iOS на себя 24.09, путь не выбранВыбор пути: SwiftUI или Compose Multiplatform55–70 чд (SwiftUI)
05«По любви» Android работаетПолный клиент под демо и тест, 23 карточки на проверке; нет пушей, системных экранов, прогона оплаты; версия 1 с отладочным ключомПриёмка; доступы Play и Firebase20–28 чд, 4–6 нед
06«По любви» Web замороженоПовторяет Android по экранам, живёт только на дев-стенде, не менялся с 11.08; в роадмапе и планах cloud.ru отсутствуетРешение владельца: нужен ли12–18 чд при «да»
07Админ-панель работает41 раздел, замечания владельца закрыты; три стенда с тремя версиями; общий токен, аудит и удаление данных не прод-уровняВыкат веток; персональные входы22–34 чд + 3–5 DevOps
08Парсеры организаций работает28 источников, 125 тысяч событий; ключи VK и Добро мертвы с 14.09, тревоги не уходят, две площадки закрыли доступ, на cloud крон выключенРучной вход, тревоги, выкат релиза18–28 чд + 4–7 DevOps; новые площадки 75–110
09Парсеры Telegram работаетСборщик и самопоиск в кроне дев-стенда; 0 из 55 карточек опубликовано; на GitHub и cloud кода нет; прокси через личный серверНазначить оператора; путь для прода7–10 чд + 2–3 DevOps
10SEO-раздел готово (этап 1)Редактор, ИИ, блог, счётчик и аналитика сделаны и приняты 30–31.08; блог с одной статьёй; запуск ждёт доменаДомен и кабинеты, затем го-лайв3–5 чд после домена; этап 2 ещё 8–12
11Бэкенд и доставка кода работает1 596 тестов зелёные; 144 коммита и 9 миграций только локально; кузня закрыта для сессий; пуши в мёртвую очередь; секреты в gitВлить релизную ветку в кузню8–14 чд + решение
12Серверы и пайплайн работаетПайплайн кузня → образы → стейдж → prod-gate → ArgoCD работает у DevOps; оба контура cloud.ru лежат; бэкапов, алертов и нагрузки нет; 1 из 9 подзадач эпика закрытаПоднять контуры; эпик LYUBVI-1118–32 чд прод; +17–27 переезд

Чел-дни (чд) это оценки остатка работы при указанных в разделах допущениях, без ожидания решений и внешних сторон. Календарные сроки собраны в разделе «Сроки».

01

«По душе» iOS

По душеначато, не доделано

Перенос Android-кода на Compose Multiplatform (DUSHA-100, «дорога Б») начат 24.09 и за день прошёл примерно треть пути по трудоёмкости. Android разложен по платформенным фасадам, модуль приложения стал мультиплатформенным, движок обновлён, iOS-части написаны черновиками. Само iOS-приложение ещё ни разу не собиралось и не запускалось: все 208 файлов экранов лежат в Android-части, в общей части экранов нет.

≈30–35 %плана Э0–Э6 сделано по трудоёмкости за 24.09
38 / 38кадров Android совпали бит в бит после фасадов и каркаса
0 / 208файлов экранов переехали в общую часть
8веток только на этом сервере, ни одной на GitHub
3помощника с незакоммиченной работой: даты, сеть, ресурсы
0карточек «По душе» в аккаунте Apple: нет идентификатора, профиля, тестировщиков

Этапы плана

ЭтапСостояниеДоказательствоЧто осталосьОценка
Э0.1 Фасады: рисование, конфиг и хранилища, разрешения и фото, телеметрия, карта, «поделиться»готовоКоммиты 188f6df5, 27dddfcb, c44a74c5, 94021476; три ручных прохода на эмуляторе со стендомРазмер экрана и инсеты (Viewport), служебный журнал, обработчик «назад» не начаты1 чд
Э0.2 Ресурсы: строки, векторы, шрифты в общий форматидёт, не влито1549 строк сверены с aapt2, 108 векторов; сборка и 259 тестов зелёные; в дереве 6 правок и 2 скриптаЗакоммитить, влить (конфликт в навигации), прогнать 623 кадра бит в бит1–2 чд
Э0.3 Даты kotlinx-datetime и мелочи JVMидёт, не влито9 файлов уже в общей части, 264 теста; 5 правок в деревеЗакоммитить, влить, кадры с датами0,5–1 чд
Э0.4 Сеть Ktor, картинки Coil 3, QRидёт, не влитоКлиент и сокет чата на Ktor; 10 правок в индексе не закоммиченыЗакоммитить, влить, ручной проход входа, афиши, записи, чата с фото, профиля и селфи1–2 чд
Слияние трёх помощников между собойне начатоОдин файл моделей перенесён в общую часть двумя ветками с разными правками; три стороны правят репозиторий событий и сборочный файлПорядок даты → сеть → ресурсы, после каждого сборка и тесты, в конце полные ворота1–1,5 чд
Э1 Новый движок: Kotlin 2.4.20, Compose 1.11, AGP 8.13, Paparazzi 2.0 alpha, JDK 21код влит, ворота не подтверждены7b257a3d, 7557ba76; 255 тестов; результата полной пересъёмки 623 кадров в журнале нетТри прогона (база, ветка, движок), разбор сдвигов текста, число красных кадров неизвестно1–3 чд
Э2 Каркас KMP: цели Android и iOS, фреймворк, expect/actualготово80283fa6, 94021476; фреймворк для симулятора собирается; 10 expect в общей части, 9 actual для iOSНет0
Э2 Переезд экранов в общую часть и точка входа iOSне начато145 файлов без платформенных импортов, 63 с ними; файла точки входа нет, оболочка iOS его ждётПеренос, навигация и lifecycle от JetBrains, expect/actual для рисования, карты, камеры и телеметрии, первый запуск на симуляторе3–5 чд
Э3 iOS-части: рисование Skia, карта MapLibre за Swift-мостом, камера селфи, фото, гео, share, конфигчерновики, проверены на стендахРисование: 11 сцен, расхождение до 3 уровней яркости; карта: камера совпала до цифры; остальное только компилируетсяИнтеграция в приложение, проверка на живом iPhone (камера, жесты), Sentry-мост, шрифты, клавиатура, диплинки4–6 чд + iPhone
Э4 Инструмент съёмки на симуляторе и сверка 623 кадров с макетомне начатоСкрипт съёмки не умеет simctl; папок для iOS-снимков нетВторой бэкенд съёмки, маска индикатора, diff, разбор текста CoreText, правки, отчёт6–12 чд
Э5 Оболочка iOS и конвейер TestFlightготово на заглушкеПроект xcodegen, Info.plist, приватность, иконка из Android; симулятор прошёл, архив падает на подписиАккаунт Apple: идентификатор, профиль, карточка приложения, разблокированная связка ключей на макмини0,5 чд после «да»
Э6 Требования App Store: удаление аккаунта, жалоба и блокировка человека, демо-номер, 572-ФЗ, иконка, скриншотыне начатоСервер удаление умеет, в приложении заглушка; жалоба на человека без ручки; селфи-верификация под 572-ФЗ; векторной иконки в Figma нетПодключить в приложении, юрист, дизайнер, настройки прода2–3 чд + внешнее

Что нужно от владельца до 5 октября

  • «Да» на действия ключом App Store Connect: идентификатор приложения, профиль подписи, группа TestFlight.
  • Карточка приложения в App Store Connect (создаётся только в браузере) и принятие обновлённого лицензионного соглашения от имени держателя аккаунта.
  • Пароль связки ключей на макмини или разрешение положить его в закрытый файл: без этого сборку не подписать.
  • Список тестировщиков и живой iPhone для проверки карты, жестов и камеры. Продление членства Apple оплачивается зарубежной картой.
  • Юрист по 572-ФЗ: селфи-верификация считается биометрией и касается обеих платформ.

Риски

  • Слияние с Android-ветками соседей. После вливания помощников пересекаются 68 из 107 файлов интеграционной ветки; конфликты в рисовании, навигации, репозитории событий гарантированы. Оценка 1–3 дня плюс повторные ворота на обеих платформах.
  • Версии библиотек: Paparazzi в альфе, Compose 1.11 заморожен (следующий шаг требует AGP 9 и разделения модулей), Xcode 27 не поддерживается.
  • Паритет текста: Skia с CoreText против FreeType даёт ±1 px на строку, эмодзи яблочные.
  • Макмини один на всё: очередь из минимум четырёх полных прогонов по 623 кадра.
  • Учёт отстаёт: карточка DUSHA-100 не обновляется, журнал docs/43 не содержит результатов помощников.

Сроки на странице статуса для владельца оптимистичны. Там обещано: первая сборка в TestFlight 6–8 октября, сверенная по всем экранам 13–15 октября, 70–95 часов работы. Разбор по коду даёт: первая внутренняя сборка 9–15 октября (6–8 октября только если сдвигов текста после движка мало, помощники сливаются без сюрпризов и пункты Apple закрыты к 5 октября; пессимистично 20 октября), сверенная по 623 кадрам 24–31 октября (пессимистично 7 ноября), App Store не раньше второй половины ноября и только после юриста, демо-номера на проде и удаления аккаунта в приложении. Остаток 17–35 чел-дней, из них до первой сборки 75–150 часов. Страницу статуса стоит поправить.

02

«По душе» Android

По душеработает, требует доработок

Приложение целиком свёрстано по Figma и работает против дев-стенда. Идёт приёмка: 86 карточек ждут проверки владельца, ни одна не принята. До магазинов не хватает пушей, релизной подписи, удаления аккаунта и серверных выкатов на cloud.ru.

47маршрутов в приложении из 55 объявленных; старых экранов в графе нет
549 / 623кадров Figma сходятся с макетом; 74 красных, это растр карты и размытия, а не вёрстка
289модульных тестов зелёные; 201 Kotlin-файл
0.2.0-260924.1637последняя сборка владельцу, 79 МБ, лежит на дев-стенде и на salam0nn
86 / 5 / 15 / 1карточек DUSHA: на проверке / в работе / беклог / готово
102коммита приложения и сервера, которых нет ни на GitHub, ни в кузне

Актуальный код приложения лежит в ветке integration/dusha-bot-2026-09-24; она включает релиз 23.09, чат события (DUSHA-98), правку нагрева (DUSHA-99), панель вкладок и пачку DUSHA-101…111. На GitHub последний коммит по приложению датирован 14.09: разрыв 188 файлов.

По функциональным областям

ОбластьСостояниеДоказательствоЧто осталосьОценка
Регистрация и онбординг (13 экранов, селфи-верификация, геопозиция, город и районы)работаетDUSHA-45, 82, 83, 110 закрыты; гейт геопозиции и уведомлений над графом навигацииШаг «О себе» стирается после «назад», сироты фото на сервере; тексты соглашения и политики пока рыба из макета; тестовый режим входа на прод-копии надо закрыть (DUSHA-56)2–3 чд
Афиша-лента, страницы города, категории, подборкиработаетDUSHA-35…41, 49, 52, 107, 108, 109 закрыты; догрузка спискаПодборки объявлены, ручки нет; число подписчиков категории без ручки; порядок «Завтра» только на стенде; состав «Завтра» за владельцем1–2 чд + сервер
Карта афиши, карточки места, мини-картыработаетMapLibre с перекраской под макет, группы с фото, лист за пальцем (DUSHA-92), камера сохраняется (74), мини-карты снимками (71), SurfaceView для BlueStacks (72)Подписи маркеров системным шрифтом, фото стопок после движения карты; мини-карты в BlueStacks владельца не проверены1–2 чд
Фильтры: радиус, календарь, интересы, «только проверенные», городработаетDUSHA-24…26, 66, 69, 76, 90, 91, 106, 108; сервер отдаёт радиус до 100 км и разделы интересовСмысл «Проверенных» за владельцем; вибрация бегунка проверяется только на телефоне1 чд
ПоискработаетDUSHA-47, 64 (регистронезависимый поиск на сервере), 81 (только по названию)Серверная часть только на стенде, cloud ждёт выката0,5 чд
Карточка события, запись, жалоба, просмотр фотоработаетСостояния кнопок по макету с тестом; DUSHA-32, 35, 38, 98Вопросы при записи хранятся в памяти (ручек нет); комментарий к жалобе не уходит; у 29 406 из 29 407 событий стенда запись выключена, и «Участвовать» отвечает ошибкой: продуктовый вопрос2–3 чд + сервер
Создание и управление событием: форма, фото, теги, скрытый адрес, участники, QRработаетDUSHA-20, 28, 31, 65, 80; поля формы и фото на сервере, поиск места без привязки к МосквеКоманда, роли и приглашения в приложении из заглушек в памяти (ручек нет); платное событие сервер отклоняет без уровня доверия L22 чд; сервер 5–8 или скрыть
Чаты событий: фото, статусы доставки, участники, открытие при записиработает на стендеDUSHA-84…89, 92…96, 98; сервис чатов расширен на 258 строк против GitHubПуши о сообщениях со стенда не уходят (нет обработчика очереди, 150 потерянных за неделю); модерация фото чатов (DUSHA-97) до прода; cloud живёт на старом сервисе чатов1 чд + сервер 2–3
Личные чаты между людьмине начатоМаршрут объявлен, экрана нет; вкладка «Личные» пуста; «Написать» на профиле ведёт в чат событияПродуктовое решение, сервер для «По душе» не заведёнсервер 3–5, прил. 3–4
Чат с поддержкойсделано на стендеDUSHA-79: ручки поддержки и переписка в консоли; на GitHub их нетВыкат на cloud; опрос раз в 10 с вместо сокета0,5 чд + выкат
Профиль, правка, настройки, «Мои события», подписки, заблокированныеработаетDUSHA-21, 51 (семейный статус), 73, 78, 103, 104, 105На cloud профиль не сохраняется до выката; «Похожие интересы» и подписчики без ручек; заблокированные в памяти; удаление аккаунта заглушка (требование магазинов); «Изменить фото» не меняет аватар2 чд; сервер 4–6
Уведомления в приложении и утренний дайджестработает на стендеDUSHA-101, 102: обложка, переход к событию, «Прочитать всё»Только на стенде0,5 чд + выкат
Пуши на устройствоне начатоВ приложении нет FCM; разрешение на уведомления запрашивается только ради гейтаПровайдер для РФ (FCM плюс RuStore или HMS), токен, полезная нагрузка, обработчик очереди чатовприл. 3–5, сервер 2–3, DevOps 1
Скидки партнёровначато: экран статичныйДанные из ноды макета, ручки нет по решению владельца; DUSHA-103 вёрстка и копирование промокодаМеханика промокодов и QR, сервер3–5 чд после решения
«Куда иду», участие, плитка профилясделано на стендеDUSHA-98 по пяти местам макета; «Мои события» = только организуюСтрелки полос афиши ведут на один экран; запись на события афиши: вопрос владельцу1 чд + решение
Связка со знакомствами: «открыт для знакомств», «N из M подходят», переход в «По любви»не начатоВ профиле статичный баннер без действия; на сервере флага и сопоставления нетСпецификация, сервер, диплинк между приложениями; веха роадмапа m5 «демо интеграции» назначена на 04.10сервер 5–10, прил. 3–5
Платные события и оплатане начатоТолько показ цены; SDK оплаты нет; сервер отклоняет платное событие без L2Модель (билеты, комиссия), провайдер и 54-ФЗ, экранысервер 10–15, прил. 5–8
Диплинки и QRначатоСхема podushe:// для события и пользователя, QR через ZXingHttps-ссылки требуют публичного домена (тот же блокер, что у SEO); отложенных диплинков нет1–2 чд после домена
Журнал ошибок и аналитикавстроено, выключеноSentry SDK и перехватчик запросов есть; адрес приёмника пуст во всех сборках; GlitchTip на cloud не поднятGlitchTip у DevOps, пересборка с адресом, загрузка mapping; продуктовой аналитики нетDevOps 1–2, прил. 0,5
Производительность и нагревсделано, не подтверждено на телефонеDUSHA-99: афиша 60,6 → 26 мс на кадр, колода 32,5 → 7,8 (замер на эмуляторе)Стекло над прокруткой и размытие чата не трогали; на каждом экране заново тянутся профиль и настройки (216 запросов за полчаса)1–2 чд
Сборка, подпись, раздачагодится для тестов, не для магазиновВерсия и код сборки по времени; релиз подписан отладочным ключом; сборка на макминиРелизный ключ, AAB и сплиты по архитектурам (46 из 79 МБ занимает MapLibre), листинг, иконки, тексты2–3 чд + материалы
Планшеты и крупный шрифтрешение принято, риск для PlayКадр вписывается с центровкой, системный шрифт зажатPlay не любит леттербокс на планшетах, зажатый шрифт ломает доступность; отдельное решение владельца3–5 чд при решении

Что ждёт сервера и выката на cloud.ru

  • Профиль и семейный статус (DUSHA-21, 51), поиск (64, 81), фильтры (66, 69, 108), форма события и фото (65), поддержка (79), чат при записи (98), дайджест и окно дат (101, 107), город в колоде (58), площадки (60), селфи (48).
  • Сервис чатов: вложения до пяти фото (89), запись новых людей (96), участники и история (98).
  • Миграции только локально: users.0012, events.0045…0047, moderation_queue.0006. Пока их нет в кузне, DevOps выкатить не может.
  • Данные: районы на cloud (55), тестовые аккаунты и режим входа (56), обложки all-events (57), превью обложек (59).

Что решить владельцу

  • Запись и чат у событий афиши без организатора (почти весь каталог).
  • Нужны ли личные чаты, «избранные люди», скидки партнёров и в каком виде.
  • Модель платных событий и провайдер оплаты; провайдер пушей для РФ.
  • Связка с «По любви»: спецификации нет, веха 04.10 не достижима без неё.
  • Удаление аккаунта и блок-лист на сервере: требования Google Play и App Store.
  • Юридические тексты, публичный домен, 572-ФЗ по селфи-верификации.
  • Планшеты и крупный шрифт: леттербокс или адаптивная раскладка.

Главный риск: единственная копия сентябрьской работы лежит на этом сервере. 102 коммита сверх main нет ни на GitHub, ни в кузне; страховка в бандлах на макмини сделана 18 и 23.09, ветки 24.09 в неё не входят. Пока цепочка «кузня → GitHub → cloud.ru» не работает, ни одна серверная правка с 15.09 до прода не доедет. Учёт тоже разошёлся: DUSHA-65 и 70 стоят «В работе», хотя сделаны и в сборках с 22.09.

Остаток до «готово к магазинам»: 35–50 чел-дней, 4–6 недель при параллельной работе. Android 15–22 дня (приёмка 86 карточек и переделки, пуши, удаление аккаунта, подпись и листинг, регресс на трёх телефонах), сервер 12–20 (выкаты, пуши, блок-лист, модерация фото чатов, данные), DevOps 5–8. Без оплаты, связки со знакомствами и личных чатов. Добавки: оплата +3–4 недели, связка +2–3, личные чаты +1,5–2, планшеты +1.

03

«По душе» Web

По душеработает, требует доработок

Витрина на Nuxt с серверным рендером живёт на дев-стенде и на cloud.ru, но закрыта паролем и запретом индексации по решению владельца. Продуктовой работы по ней не было с 12 августа: с тех пор только блог и инфраструктура. До прототипа состав не доведён, тестов нет.

26страниц, около 11,9 тыс. строк; 42 коммита, все в main и на GitHub
5 / 8 / 3из 16 экранов прототипа: совпадают / частично / отсутствуют
0тестов витрины; контракт держат тесты бэкенда
3контура: дев-стенд, стейдж и прод-копия cloud.ru (образ stand-v1.9)
12.08последняя продуктовая правка витрины
ФункцияСостояниеДоказательствоЧто осталосьОценка
Лента с фильтрами, календарём, районами, подборками и сторисесть, серверный рендерapp/pages/index.vue, данные из публичных ручек событий, каталога, сторисПо прототипу нет 7 из 13 блоков ленты (акции, «похожие люди», повестка, календарь сеткой); половина требует бэкенда3–5 фронт + 5–8 с бэком
Популярное, каталог, подборки, поискестьСтраницы в main с 11–12.08«Сохранить подборку» без ручки; контент подборок и сторис никто не производит1–2 + контент
Карта Leaflet с кластерамиестьpages/map.vue, клиентский рендерНет0
Карточка событияестьСтраница и модалка, публичная ручкаНет canonical, OG и разметки Event; событий нет в карте сайта2–3 чд
Посадочная «город + тема»естьpages/t/[city]/[topic].vueТолько заголовок и описание; редакторских блоков нет (нет модели на бэке); нет в карте сайта2–3 + бэк 3–4
Организатор, жалоба, отзывестьКоммиты 72d39ca3, e534d5b2, dfbf3567Нет0
Личный слой: вход, «мои события», мастер создания, кабинет организатораесть, только на клиентеТокен в localStorage, гарда «личная ручка на сервере бросает ошибку»Сегменты «мои события», правка события, рассылка и явка у организатора, онбординг; чаты события и уведомления вне объёма4–6 чд
БлогестьСм. раздел 10Нет0
robots, карта сайта, индексациячастичноrobots закрыт без флага; карта сайта содержит только блог; файл ключа IndexNow витрина не отдаётКарта сайта событий, посадочных и подборок; политика для прошедших событий; ключ IndexNow1,5–2,5 чд
Тесты и CIнетCI только собирает образСмоук Playwright страниц и мета, шаг в CI2–3 чд
Выкат на своём доменеждёт доменаИнструкция в migration/cloud-ru/WEB-EVENTS.md: пересборка с корневым путём, ingress и TLS, снять пароль, включить индексацию последнейВыполнить после покупки домена1–2 чд

Что блокирует и что решить

  • Домен: единственный внешний блокер; решение владельца 30.08 «в последний момент».
  • Пользовательские события публикуются мгновенно: чужой текст уйдёт в индекс без модерации. Нужна политика.
  • Показывать ли площадку как организатора у собранных событий; посадочные редакторские или автоматические; районы.
  • Контент подборок и сторис: на стенде черновики, редакции нет.

Остаток

  • Минимум до публичного запуска: 8–12 чел-дней плюс ожидание домена. Инфраструктура переезда 1–2, SEO-обвязка карточек и карта сайта 4–6, политика индексации пользовательских событий 1–2, смоук и CI 2–3.
  • До прототипа: ещё 15–25 чел-дней, из них около половины бэкенд. Чаты события, уведомления, оплата и вебинары вне оценки (этап 2 по решению владельца 08.08).
04

«По любви» iOS

По любвиначато, не доделано

Свёрстаны 36 экранов по нодам Figma, но в само приложение подключены пять экранов регистрации. Вкладки, лента, чаты, профиль и оплата работают в старом виде без макета. В TestFlight лежит внутренняя сборка от 22.09. Вечером 24.09 владелец взял iOS на себя; путь (дожать SwiftUI или собрать из кода Android) не выбран.

5 / 36экранов по макету подключены в приложение; 31 живёт в отладочной галерее
150файлов Swift на GitHub main, 70 тестов
≈8кадров сверено с макетом числом; после 17.09 ни одного снимка
1.0.0 (3)в TestFlight с 22.09, внутреннее тестирование, 115 МБ с фикстурами
0покупок через StoreKit, пушей, камеры, экранов блокировки и обновления

Весь iOS-код по макету есть только на GitHub (23 коммита Вадима 18–22.09), тогда как вся Android-работа после 14.09 есть только на этом сервере: два потока разъехались по разным хранилищам.

ОбластьСостояниеДоказательствоЧто осталосьОценка
Регистрация и онбордингначатоТелефон, код, имя, дата рождения, пол и рост по нодам; дальше четыре старых шагаПодключить 11 экранов из галереи (заставка, приветствие, гео, город, анкета, интересы, флаги, открывашки, медиа, видео), логику анкеты8–10 чд
Анкета и правканачатоСтарая правка (фото, о себе, работа); экраны по нодам в галерееПереходники, порядок фото, открывашки, флаги4–5 чд
Лента и колоданачатоСтарая лента работает (свайп, события, мэтч); карточка по нодам с 124 кадрами написана без единого снимкаСверка 124 кадров, переходник, обучение свайпу, экран мэтча8–10 чд
Фильтры, симпатии, запискиначатоСтарые экраны работают; экраны по нодам «код без сборки» от 18.09Сверка и переходники, превью карточки6–8 чд
Чаты и переписканачатоСтарые экраны работают лучше Android (курсор, повтор отправки); по нодам 56 кадров в галерееПереходники; те же серверные хвосты, что на Android5–6 чд
Видео-кружок, голос, камеране начатоВ коде нет ни записи, ни проигрывания видео; селфи для верификации берётся из галереиЗапись кружка, плеер, живая камера для селфи (обход верификации через галерею)6–8 чд
Профиль и настройкиначатоСтарые экраны работают; по нодам в галерееПереходники, шторки, FAQ и правила4–5 чд
Подписка и оплатаначато, несовместимо с App StoreПокупка через веб-эквайринг в браузере внутри приложения; StoreKit нетStoreKit 2, продукты в App Store Connect, настройки сервера; иначе отказ по правилу 3.1.16–8 чд + ASC
Системные экраны, версия приложенияне начатоНет кодов 101 и 121, нет заголовка версии, нет опроса техработТри экрана, заголовок, опрос2–3 чд
Пушине начатоСервис пустой; entitlements нет; сервер принимает только токены FirebaseFirebase iOS SDK, ключ APNs, entitlement, фоновые режимы2–3 чд + доступ
Сборка, подпись, магазинначатоКонвейер TestFlight на макмини есть; профиль подписи действует до марта 2027; privacy-манифеста нетЗапись в App Store под своим пакетом или перенос записи Flutter; манифест приватности, скриншоты, внешнее тестирование, ревью2–3 чд + внешнее

Что решить владельцу

  • Путь: дожать SwiftUI (подключить 31 экран, сверить около 420 кадров, дописать камеру, покупки, пуши) или собрать iOS из кода Android через Compose Multiplatform после первой сборки «По душе». Рекомендация прошлого разбора: второй путь.
  • Запись приложения в Apple: у команды есть только «По любви Cloud»; приложение из App Store принадлежит другому аккаунту. Нужен доступ к нему или новое приложение с потерей установок.
  • Перезалить TestFlight без фикстур (сборка 4 подготовлена, не залита) и отправить на внешнее тестирование.

Риски

  • App Review отклонит подписку через веб-оплату внутри приложения.
  • Ни один экран после 17.09 не сверен снимком: зелёная сборка не значит верную раскладку.
  • Копия на макмини без git; работа на Windows снова разведёт слои кода.
  • Один макмини на всё: съёмки «По душе», пробы CMP, сборки iOS.

Остаток до «готово к магазину»: SwiftUI-путь 55–70 чел-дней, 11–14 недель одного разработчика с макмини. Подключение 31 экрана и сверка кадров 25–30 дней, функциональные доборы 15–18, покупки, пуши, приватность и листинг 10–12, регресс и ревью 5. Путь через Compose Multiplatform: после пилота «По душе» перенос слоя интерфейса 6–9 недель плюс те же внешние блокеры; выигрыш в общем коде с Android и уже сведённых 470 кадрах.

05

«По любви» Android

По любвиработает, требует доработок

Функционально полный клиент под демо и тест: по макету собрано почти всё, три круга правок владельца сделаны. До магазина не доведён: нет пушей, системных экранов блокировки и обновления, прогона оплаты, релизной подписи и версии.

470 / 508кадров макета сняты и сведены; S63 (видео) вне объёма
15 / 21экранов по нодам в живых потоках; шесть без вызовов
23карточки приложения «На проверке», ни одна не принята владельцем
1.0.0 (1)версия и код сборки; подпись отладочным ключом
15.09дата сборки для команды (32,6 МБ); GitHub хранит состояние 14.09
51файл приложения отличается от GitHub: третий круг и логер не запушены
ОбластьСостояниеДоказательствоЧто осталосьОценка
Регистрация и онбординг (S01–S26)работаетФорма закрыта по реестру; блокер тупика после анкеты и 8 находок починены; адаптивные отступы под телефонПриёмка LYUBVI-25, 26, 28…33, 40, 47…50; шаг видео при регистрации не прожат вживую; системный крупный шрифт зажат2–3 чд
Анкета и её правканачато, не доделаноПравка анкеты и вопросы по нодам подключены (16 из 19 кадров)Флаги и открывашки идут через старые экраны; старые файлы не удалены2–3 чд
Лента и колода анкетработаетКолода, карточка, профиль и оверлей мэтча по нодам, расхождение кадров до 0,26 %LYUBVI-42: при анкете ниже 54 % лента пуста без подсказки; мэтч на стенде не прожат1–2 чд
ФильтрыработаетЭкран по нодам, 6 кадров сходятсяВхода в пейволл из фильтров нет0,5–1 чд
Симпатии и мэтчработаетВкладка по нодам; пейволл открывается из симпатийСкелет, ошибка и таймер закрытых симпатий; кадры вариантов V3/V41–2 чд
Чаты и перепискаработает, требует доработокСписок и тред по нодам, WebSocketСписок берёт только 10 переписок (сервер отдаёт по курсору, клиент курсор не шлёт); правка и удаление сообщений и «печатает» сервер умеет, клиент нет; меню сообщения только в кадрах4–6 чд
Видео-кружок и голосработаетПроигрывание Media3 (LYUBVI-35), запись CameraX 10 с (LYUBVI-51); голос спрятан флагом (LYUBVI-21), на сервере заглушкаЗапись при регистрации не прожата; размытие фона на весь экран; голос ждёт LLM1 чд
Профиль и настройкиработаетПрофиль, настройки, FAQ и правила по нодам, провереныКарточка подписки в профиле не подключена, хотя сервер уже отдаёт дату и сумму списания1–2 чд
Подписка, пейволл, оплатаначато, не прогнаноПейволл по нодам; покупка через Play Billing или веб-эквайринг в Custom Tabs; экран «Оплата прошла» не вызываетсяНи разу не прогнано на терминале (LYUBVI-17 в беклоге, ключи у владельца); у сервера нет проверки покупок Play: ветку Play держать выключенной2–3 чд + сервер
Сообщества и реферальная программане начато функциональноМаршруты объявлены, но не назначаются; экраны без вызовов; ручек ленты и начислений нетРешение владельца: делать ли0 или 8–12 чд
Системные экраны: блокировка, жёсткое обновление, техработыне начатоТри экрана написаны, вызовов нет; заголовок версии приложения не шлётся; коды 101 и 121 клиент не понимаетЗаголовок версии, обработка кодов, опрос ручки техработ, показ экранов. Без этого старые версии после релиза не выгнать2–3 чд
Пушине работаетСервис пустой без файла Firebase; доступа к проекту Firebase нет; на стенде пуши уходят в мёртвую очередьДоступ к Firebase, конфиг для пакета, сквозная проверка1–2 чд после доступа
Верификация селфиработаетЭкраны S22–S24 по нодам, съёмка через камеруЧерез камеру руками не прожато (тестовый аккаунт уже подтверждён)0,5 чд
Журнал ошибок и аналитиканачатоОчередь продуктовых событий уходит на сервер; Sentry встроен, адрес приёмника пустАдрес приёмника от DevOps, загрузка mapping0,5 чд + DevOps
Нагрев телефонасделано, не влитоLYUBVI-52: пауза видео-кружков, кэш 200 МБ, спящие вкладки, пауза сокета; трафик 1,7 МБ за 30 с → 1 КБОбщая сборка по решению владельца; проверка на настоящем телефоне1 чд
Сборка, подпись, магазиныне начатоКод версии 1 против 128 у Flutter в магазине; ключ отладочный; Play Console и Firebase недоступныРелизный ключ или Play App Signing, код версии больше 128, листинги Play и RuStore, пины сертификатов, вкус prod после переезда бэкенда2–3 чд + доступы

Что ждёт сервера и DevOps

  • Сервер принимает фото только в jpeg, клиент глотает ошибку (LYUBVI-43); подсказка о пустой ленте (LYUBVI-42); проверки покупок Play нет вовсе.
  • Вебхуки Т-Банка и Apple без проверки подписи стоят «На проверке» (LYUBVI-13, 14, 16) и ждут DEMO-терминала (LYUBVI-17).
  • Тестовый вход по списку номеров вместо общего кода (LYUBVI-15) на прод-копии не включён.
  • Ключ Firebase для воркера пушей и адрес приёмника ошибок в Vault.

Что решить владельцу

  • Принять 23 карточки на телефоне (все «сделано, проверь на телефоне»).
  • Делать ли сообщества и рефералку; выделять ли «Твои пары» отдельным разделом.
  • Ключи DEMO-терминала; доступы Play Console, Firebase, RuStore.
  • Подписной ключ: ключ Flutter-приложения или новый плюс Play App Signing.

Остаток до «готово к магазинам»: 20–28 чел-дней, 4–6 недель одного разработчика. Допущения: доступы к Play, Firebase и ключи выдаются в первую неделю, DEMO-терминал прогнан, приёмка владельца укладывается в 3–5 дней, общая сборка с правкой нагрева влита. Сообщества и рефералка с серверной частью и проверка покупок Play добавляют 10–15 дней.

Что сейчас в магазинах

В Google Play, RuStore и App Store живёт Flutter-приложение от Surf версии 1.4.2 (128). Оно шлёт версию приложения серверу, продаёт подписку через покупки Apple, пуши идут через Firebase. Его подписной ключ Android и запись в Apple под чужим идентификатором пакета не в наших руках. Тег «0.0.71-prod» относится к образу бэкенда Surf, а не к приложению. Заменить Flutter нативными сборками мешают: ключ и консоль Play, код версии, пуши без Firebase, покупки на iOS и переезд бэкенда на cloud.ru, который ещё впереди.

06

«По любви» Web

По любвиначато, заморожено

React-клиент повторяет Android один в один по экранам, живёт на дев-стенде по адресу /app/ и не менялся с 11 августа (по сути с 13 июля). В роадмапе его нет, на cloud.ru он не развёрнут и не запланирован, карточек в трекере нет. Главный вопрос к владельцу: нужен ли он вообще.

22экрана; все ручки существуют в бэкенде
11.08последний коммит; сборка на стенде от 31.08
0тестов, шагов CI, чартов для cloud.ru
0карточек в трекере и упоминаний в роадмапе
ФункцияСостояниеДоказательствоЧто осталосьОценка
Вход, онбординг, гейтыестьМашина состояний в src/App.tsxТестовый код входа зашит во все env-файлы, включая production (DUSHA-7); экранов блокировки и обновления нет1–2 чд
Лента, свайпы, симпатии, чаты, профиль, события, пересечения, скоринг, голос, верификация, рефералка, подпискаесть по матрице паритетаdocs/WEB_PARITY.md: всё отмечено сделанным, кроме платформенногоСовместимость с текущим бэкендом никто не проверял: с 11.08 менялись профиль, тарифы, платежи, лимитырегресс 3–5 чд
Оплатачерез ссылку эквайрингаPlay Billing не применимПрогон против песочницы Т-Банка в вебе не делался2–3 чд
Пуши в браузеренетWeb push не реализованРешить, нужны ли3–4 чд при «да»
Деплой и CIскрипты PowerShell с Windowsdocs/DEPLOY_DUSHA.mdЧарт и ingress для cloud.ru или отказ от веба; смоук4–6 чд
Лендинг (web-landing)статичный прототип, не выкаченНе трогался с импорта 04.08, смотрит на домен подрядчикаУдалить или переделать под новый домен0 или 2–3 чд

При решении «нужен»: 12–18 чел-дней до публичного запуска (регресс и починка, оплата с вебхуками, прод-конфиг и чарт cloud.ru, экраны блокировки и юридические страницы, смоук и CI). Пуши и лендинг сверху. Допущение: бэкенд знакомств уже в состоянии релиза. Домен знакомств не выбран (вопрос O-2 спецификации SEO), он нужен и вебу, и блогу знакомств.

07

Админ-панель

Платформаработает, требует доработок

Единая консоль оператора на два продукта функционально полная для внутреннего стейджа: 41 раздел в четырёх пространствах, замечания владельца от 14.09 закрыты. Не готова к проду: общий токен в браузере, переопределение ролей включено на стендах, удаление данных «по возможности», аудит без неизменяемости. Три версии консоли на трёх стендах не совпадают ни с одной веткой.

41раздел: Платформа 15, «По любви» 12, «По душе» 9, SEO 5
123 / 104URL админ-API / правил доступа; 8 ролей
766серверных тестов бьют в консоль; 70 браузерных, не в CI
2 477строк консоли, которых нет на GitHub main
27файлов консоли только в локальных ветках: DUSHA-16…19, 64, 79, самопоиск Telegram

Где какая версия

По разделам

РазделСостояниеДоказательствоДефекты и что осталосьОценка
Обзоры платформы и продуктов, аналитикаготовоРучки здоровья и инсайтов с кэшем, 17 тестовDUSHA-16, 17 (тексты и имена вместо идентификаторов) сделаны, ждут выкатавыкат
Пользователи, верификация, модерация фото и видео, жалобы, чатыготовоLYUBVI-4…9 закрыты 14.09; пагинация, поиск, закрытие лишних попытокНет мастера стирания и сессий устройств (P1); 73 битых фото на прод-копии это данные0 (P1: 3–5)
Тикеты, обращения, переписка поддержкиработаетDUSHA-79: ответы в чат приложения из консоли, 10 тестов; только в веткеВыкат с миграцией; SLA и шаблоны ответов (P1)0,5 чд
Финансы, тарифы, подарки, рефералка, сообществаготовоLYUBVI-6, 7 закрыты: поиск, платформы, валидация, заявкиВозвратов и сверки нет (P1)0 (P1: 5–8)
Антифрод, DSR, аудит и согласованияработает, не прод-уровеньАгрегаты и заявки есть; стирание «по возможности» с оговоркой в коде; журнал аудита обычной таблицейПолитика удаления из чатов, медиа и бэкапов; четыре глаза на удаление; неизменяемость и ретеншн журнала; актор у общего токена5–8 чд
Настройки, флаги, FAQ, обновления, города, мат-слова, районыготовоDUSHA-19 сделана; районы как справочникНа cloud районов нет (DUSHA-55, данные)DevOps 0,5
Система и роли, виджет «Доступные разделы»работаетМатрица ролей, копия диплинкаLYUBVI-44: назначение виджета непонятно, решения нет0,5 чд
Каталог событий, дубли, реакции, подборки, темы, бот анонсовготово115 тестов по фильтрам, переопределениям и импорту; состояние карточки выводится, замки от перезаписиСерверные правки DUSHA-57, 58, 60 в ветках ждут выкатавыкат
Сборщики: источники, прогоны, автосбор, политики, Telegram-каналы, самопоискработаетМодули на 2 080 строк, 14 ручек в ветке; консоль сервиса сборщиков наружу не выставлена, всё через пробросПропущенные посты, кнопка «алгоритм ошибся», пакетные действия, вкладка тревог; выкат самопоиска на прод3–5 чд
SEO-редакцияготово9 модулей, 30+ ручек, 655 тестовОстаток внешний: домен, кабинеты; предпросмотр черновика0 (см. раздел 10)
Ошибки приложенийначатоРаздел и клиент GlitchTip есть, 13 тестов; приёмника нет нигде, раздел отвечает «не настроено»GlitchTip на cloud.ru у DevOps, адреса в сборки, проверка стеков1–2 + DevOps 1–2
Справки НПД (самозанятость)ручки есть, экрана нет26 тестов на сервере; в консоли только плиткаЭкран очереди и решения2–3 чд

Карточки код-ревью без решений

DUSHA-8 (разделить фронт и бэк: по факту консоль уже отдельный образ и volume), DUSHA-9 (дубли методов в обновлениях, не консоль), DUSHA-10 (зачистить legacy: три пустых пакета и Flutter), DUSHA-42 и 44 (магические числа и абсолютные размеры относятся к Android, а 44 противоречит уже принятому правилу «ширина без координат»), DUSHA-5 и 6 без критерия, DUSHA-15 (адрес /ops без слеша ломает вход на cloud.ru: редирект в ingress, четверть дня). Комментариев и решений нет ни по одной.

Блокеры

  • Прод собирается из GitHub main, куда консольные правки после 18.09 не дошли; миграция поддержки только локально.
  • DUSHA-7: в репозитории на GitHub лежат env-файлы веб-клиента с тестовым кодом входа. До прода удалить из истории и сменить код (вместе с LYUBVI-15).
  • Для прода нужны персональные входы или OIDC и выключенное переопределение ролей: чек-лист есть, на прод-копии не подтверждён.
  • Приёмник ошибок GlitchTip за DevOps.

Остаток до «готова к проду»

  • 22–34 чел-дня разработки плюс 3–5 дней DevOps. Выкат веток 2–3, персональные входы 1–2, секреты и код входа 1, экран НПД 2–3, DSR 3–5, аудит 2–3, сборщики 3–5, ошибки приложений 1–2, смоук в CI и ручной проход по 41 разделу 2–3, документация 2–3.
  • Функции уровня P1 из чек-листа готовности (возвраты, SLA модерации, антифрод-кейсы, мастер стирания) вне оценки: ещё 15–25 дней при необходимости.
08

Парсеры организаций (сборщики событий)

По душеработает, требует доработок

Сервис сборщиков работает автономно: волна каждые 12 часов, 28 источников, 125 тысяч событий в каталоге дев-стенда. Как прод-сервис не готов: ротируемые ключи VK и Добро мертвы с 14 сентября и каждые 8 минут зовут человека, тревоги считаются и никуда не уходят, две площадки закрыли доступ по адресу стенда, на cloud.ru крон выключен и стоит версия 14 сентября, перенос на стенд то гасит, то оживляет тысячи карточек крупных источников.

28источников в кроне: 27 площадок и Telegram
125 392событий в каталоге сборщиков, 68 233 в окне 45 дней; на стенде опубликовано 46 645
21 / 6 / 2источников за волну 24.09: успех / частично / упали
0тревог доставлено: адрес получателя не задан; 4 критичных проблемы каждую волну с 16.09
1 121 / 7тестов прошли / упали (даты в фикстурах Leader-ID и Russpass)
≈45площадок волн 6–9 не начаты; 5 парков у Егора вне репозитория

Все источники

ИсточникТранспорт и ключСостояниеФакт 24.09Что осталось
kudagoREST, без ключа, 13 городовработает1 728 живых, обложки 100 %, автопубликацияНет
leader_id (с Точками кипения)REST, 90 городовработает2 506 живых, автопубликацияНомера Тулы и Ярославля не сверены; 7 красных тестов по датам
dobroAPI, JWT только для картинокс оговорками1 470 живых, обложек 36 %: ключ мёртв с 14.09Ручной вход человека; без обложек карточки не годны в ленту
timepadРазбор афиши браузером, 8 городов (токен отозван)работает2 465 живых, 21 минутаПропуск неизменившихся деталей не заведён
data_mosДампы, демо-режимсправочник площадок10 291 площадка; в ленту не идётНет
opendata_mkrfБесплатный ключ, Москва и Петербургработает317 живыхРасширить города (волна 8)
vkСервисный и пользовательский токены, 69 городовдеградация69 ошибок «неверный токен» за волну, 1 запись; 1 373 живых, 0 опубликованоТокен мёртв с 14.09, путь VK ID ни разу не сработал; ручной вход
qticketsHTML, 3 городаработает181 живых, автопубликацияНет
kassirAPI и HTML, 5 городовработает16 259 живых, автопубликацияНет
ticketlandHTML и API, Москва и Петербургс оговорками11 864 живых; раздел Петербурга отвечает 404Снять умерший раздел
afishaЛестница httpx → curl → браузер, 5 городовс оговорками13 580 живых; 198 площадок-«пустышек»Выкатить DUSHA-60 (только в релизной ветке)
yandex_afishaВнутренний GraphQLс оговорками1 305 живых; прогрев отвечает 404Разобрать прогрев
nethouseJSON и JSON-LD, 6 городовработает2 191 из 9 182 сырых; 83 минуты, самый долгий; без автопубликацииДетали без сеансов; решение о публикации
radario, inticketsJSON и APIработают546 и 172 живых; без автопубликацииРешение о публикации
gorodzovetКалендарь по дням, 6 городовработает30 140 живых, крупнейший; 0 опубликовано из-за риска дублейАктивность на стенде флапает (см. ниже); решение о публикации
mtsliveAPI и гостевой cookieработает14 338 живых; без автопубликацииРешение о публикации
mosafisha (bilet.mos.ru)Лента новостей APIзакрыт по адресу403 в 7 из 14 прогонов, последний успех 22.09; 4 892 живыхВыяснить блок адреса; парковать, а не красить волну
bileterHTML и гео зданияработает3 113 живыхНет
russpassAPIзакрыт по адресу403 в 14 из 14 прогонов, последний успех 16.09; 7 043 живых стареютДругой адрес или прокси; карточка
all_eventsBitrix, 19 городовс оговорками609 живых; обложки на 70 % битые (DUSHA-57)Выкатить проверку медиа (только в релизной ветке)
habr_events, hse, ithrhub, venue_calsAPI и SSRработают17, 137, 5 и 47 живых«Технопарк» не выбран
moibiz3 адаптера и 57 региональных порталов, 60 городовс оговорками2 895 живых; 19 ошибок региональных порталов; автопубликацияРеестр состояния порталов
bizassoc (Опора)HTMLработает, пуст3 живых, самый бедный источникТПП и Деловая Россия позже
telegramt.me/s/ через проксисм. раздел 094 канала, 56 живыхРаздел 09

Беклог площадок: 29 карточек SRC-* в «Готово», 5 в «Заблокировано» (Ticketscloud за DDoS-Guard, Ponominalu это дубль МТС Live, 2do2go и Runet-ID мертвы, EdTech почти весь онлайн). Пять парков волны 6.1 у Егора (DUSHA-2 «В работе»: ВДНХ и парк Горького «готово», ещё три без статуса) в репозитории не видны ни в одной ветке; пятый сайт у него Эрмитаж-музей в Петербурге, а в спецификации имелся в виду сад «Эрмитаж» в Москве.

Инфраструктура сборщиков

КомпонентСостояниеДоказательствоЧто осталосьОценка
Оркестратор, параллельная волна, дедуп, уборкаработает28 прогонов за волну; за 7 дней 249 успешных, 100 частичных, 30 упавших403 у russpass и mosafisha поднимается как падение, а не парковка: волна красная каждый раз0,5 чд
Крон сборана стенде да, на cloud выключенЧарт cloud.ru: сбор «off» на обоих контурах, ротатор ключей намеренно не переносилсяРешение, кто собирает для прода; внешний сторож молчания1 чд
Ключи площадок и их продлениесломано с 14.09607 записей «нужен человек» с 21.09; переменные VK ID есть в окружении, но в файл состояния не попали и в крон не пробрасываютсяРазовый вход человека для VK и Добро, проброс VK ID в крон, решение об автовходе по логину и паролю1–1,5 чд + ручной вход
Тревогисчитаются, не отправляютсяАдрес получателя пуст; ошибка подстановки в скрипте волны теряет поимённые коды источников, и тревога пишет «красных нет» при двух упавшихЗадать вебхук (бот стенда есть), починить скрипт, внешний наблюдатель1,5–2 чд
Перенос каталога на стендработает, дефект уборкиПотолок 20 000 строк за проход с продолжением по курсору; резюмированный проход подметает всё, что синхронизировали предыдущие: 23.09 у gorodzovet просмотрено 2 418, погашено 30 190Защита «проход с курсора не убирает» или уборка по началу цикла; потолок по источнику1 чд
Геосправочник и координатычастично128 798 адресов Москвы из OSM; 7 580 площадок без координат; догеокодирование в волну не вызываетсяBackfill в волну, выгрузки для Петербурга, Екатеринбурга, Казани2–3 чд
Медиа, обложки, превьютолько ссылки2 млн медиа без скачивания и проверок; превью (DUSHA-59) не начатоВыкат проверки обложек, сервис превью0,5 + 3–5 чд
Районыстенд да, cloud нет144 района на стенде, 0 на cloud (DUSHA-55); команды импорта готовыЗапуск на cloud, выкат правки чужих районов0,5 чд
Качество данныхизвестные дырыОрганизатор до стенда не доезжал (правка в релизе), 1 580 событий на площадке-«пустышке», 52 % каталога в премодерации, которую стенд не читаетВыкат релиза, политика массовых событийв составе выката
Миграции каталогадве головы только в релизеСтенд на ревизии самопоиска, cloud на ревизии до Telegram; склейка в релизной веткеВлить релиз в кузню, поднять стенд и cloud до головы0,5 чд
Выкат на cloud.ruпассивный сервис на stand-v1.9DUSHA-62 закрыта 18.09; отстаёт от релиза на 71 файл (DUSHA-57, 60, 63); состояние на emptyDirТопология: кто собирает, постоянный том, секреты, исходящий адрес для площадок с блокировкой3–5 DevOps
Тесты и документациязелёные, кроме 781 файл, 907 тестов; внутренние доки описывают 27 коллекторовСдвиг дат в фикстурах, догнать доки1–2 чд

Что не начато: волны 6–9

ВолнаСоставОценка
6 «Лектории, парки, ДК Москвы»Парки (9 сайтов, у Егора 2 из 5 вне репозитория), Мосспорт, библиотеки, лектории-2 (7 сайтов), дома культуры (7), МГУ и РАНХиГС35–50 чд
7 «Клубные форматы»Квизы, настолки, прогулки, бег, Чистые игры, общинные календари, книжные, гастро, маркеты, быстрые свидания25–35 чд
8 «Регионы»Расширение городов у 8 источников, Geometria, Выбирай, городские медиа, 2ГИС12–18 чд
9 «Соцсети»VK whitelist, TenChat (Telegram сделан правилами, раздел 09)4–6 чд
Итого новые площадки75–110 чд

Что решить владельцу

  • Кто собирает для прода: дев-стенд или cloud.ru (по чарту крон на cloud выключен).
  • Прокси или другой исходящий адрес для russpass, mosafisha и mbm.mos.ru, либо принять потерю.
  • Хранить ли логин и пароль VK и Добро для автовхода, либо жить с ручным входом при каждой смерти сессии.
  • Публиковать ли автоматически gorodzovet, mtslive, nethouse, radario, intickets, vk: сейчас 0 из примерно 58 тысяч строк попадают в ленту.
  • Что делать с премодерацией и массовыми событиями (52 % каталога).
  • Егор: сад «Эрмитаж» или музей, куда класть код; карточек SRC-PARKS в беклоге нет.
  • Из спецификации: партнёрские фиды билетных операторов, ключ PRO.Культура.РФ, порядок волн, первые города.

Риски

  • Ключи держатся на человеке; VK-сессия это единственный «пароль» к Добро.
  • Молчаливые поломки: тревоги не доставляются, частичная волна неделями никого не будит.
  • 7 043 карточки Russpass стареют с 16.09.
  • Работа Егора идёт вне репозитория и беклога: риск дубля.
  • Прод-копия без крона и ключей; релизная ветка живёт на зеркале, которое кузня может стереть.

Остаток до стабильного прод-сервиса без новых площадок: 18–28 чел-дней разработки и 4–7 дней DevOps, плюс регулярный ручной вход в VK и Добро, пока путь VK ID не заработает. Ключи 1–1,5, тревоги 1,5–2, парковка блокировок 1–2, выкат релиза 1–2 DevOps и 1 проверка, уборка переноса 1, гео 2–3, качество данных 3–5, превью 3–5, топология cloud 3–5 DevOps, тесты и документация 1–2. Новые площадки волн 6–9 отдельно: 75–110 чел-дней.

09

Парсеры Telegram

По душеработает, требует доработок

Сборщик каналов и самопоиск каналов крутятся в штатном кроне дев-стенда с 17 и 21 сентября. Дальше стенда код не ушёл: на GitHub его нет, на cloud.ru не выкатывался, очередь оператора никто не разбирает.

4канала в реестре, все прочитаны 24.09
55 / 0карточек Telegram на стенде / опубликовано
1 099кандидатов самопоиска, 43 предложены оператору, 744 не проверены
22 / 8прогонов успешных / упавших с 17.09 (падения до починки крона 21.09)
83тестов сборщика в релизной ветке, плюс 5 в Django
Т-1…Т-60правил поведения в docs/37, 39, 40 и ADR-0003

Что сделано и как работает

ФункцияСостояниеДоказательствоЧто осталосьОценка
Чтение канала через веб-версию t.me/s/ (без аккаунта)готовоingestion/collectors/telegram/http_client.py, parse.py; 22 успешных прогона с 21.09Тревога на поломку разметки t.me (smoke есть, оповещения нет)0,5 чд
Разбор поста в карточку: правила без модели (даты, адрес, цена, отмена, перенос)работает, требует доработокrules.py v3, normalize.py; замер на незнакомых каналах: вид поста 81 %, «есть событие» точность 70 % при полноте 100 %, площадка пуста у половиныВремя с точкой в конце не ловится, подборка ложится одной карточкой, площадку вписывает оператор; перепрогон набора Т-35 после правок2–3 чд
Перехостинг обложек (telesco.pe закрыт в РФ)готово/api/export/media, events/catalog_import.py; на стенде 26 из 55 карточек с перехощенной обложкой, у 29 фото в веб-версии нетМиниатюры видеопостов; повтор неудачной загрузки0,5 чд
Реестр каналов, статусы чтения, кнопка «Прочитать», страница канала в консолиготово (v1)Таблица telegram_channels, ручки /api/export/telegram/*, Django-проброс с RBAC, модули консоли ingest.js и ingest-telegram.jsПробелы П-1…П-3 из docs/38: пропущенные посты не хранятся, нет кнопки «алгоритм ошибся» и пакетных действий2–3 чд
Глубина 45/90 дней, повторные чтения, снятие удалённых и отменённых с лентыготовоcollector.py, lifecycle.py, ежедневная перепроверка 20:23; выгрузка не отдаёт событие без живой ссылкиПриёмка «удалил пост, карточка снята» не зафиксирована в DUSHA-630,5 чд
Самопоиск каналов: каталоги, снежный ком, автопроверка, оператор принимаетработает, DUSHA-63 на проверкеПакет discovery/, таблицы кандидатов и проходов, крон по понедельникам, консоль ingest-candidates.js; 6 проходов 21.09, с тех пор ни одногоЛимит 60 проверок на город в неделю при 744 непроверенных даёт очередь на месяцы; 43 предложенных ждут решения1 чд + оператор
Проверка оператором и публикацияначато, не налажено как процессПубликация только руками (auto_publish=False по ADR); 0 из 55 карточек опубликованоНазначить оператора, дать пакетные действия1 чд + часы оператора
Прокси в Telegram: tinyproxy на salam0nn и ssh-туннель на дев-стендработает, единая точка отказаПрокси активен с 17.09, туннель рвался 23.09 и поднялся сам; при недоступности источник паркуется на 20 часов и молча выключается (так потеряны 18–21.09)Для прода нужен зарубежный путь не через личный сервер: реле Cloudflare Worker (код есть) или VPS; проверка здоровья прокси1–2 чд + DevOps
Тревоги о парковке источника и падении проксиначато, не доделаноОбщие тревоги волны есть (ingestion/alerts.py), парковка волну не краситТревога на парковку и недоступность прокси; доставка тревог с VDS в Telegram не проверена0,5–1 чд
Извлечение моделью (LLM)не начато по решениюADR-0003: только алгоритм и оператор; замер Opus 5 сохранён в docs/37 на случай гибридаНичего0
Чаты и группы Telegram (не каналы)не начато, вне MVPЧитаются только через аккаунт (Telethon), отвергнуто условиями API; группы распознаются и отклоняютсяОтдельное решение про аккаунт и юридическую сторону5+ чд
Бот анонсов «По душе» (отдельный продукт, не парсер)готово, на стенде деградируетВлит в main с 12.08; на стенде опрос Telegram идёт через туннель, в журнале таймауты и 504 (последний 24.09)Посмотреть туннель на стенде0,5 чд

Что блокирует

  • Код только на этом сервере и в копии стенда. В GitHub main слоя Telegram нет, ветки feature/telegram-* с GitHub исчезли. Резерв: релизная ветка локально, архив кода на стенде, бандлы на макмини.
  • Прод cloud.ru не видит Telegram из России. Нужен зарубежный путь и переменные окружения, миграции каталога сборщиков, файлы Django и консоли. Выкат только через DevOps.
  • Нет оператора. Без разбора очереди карточки Telegram в ленту не попадут вовсе.

Что решить владельцу

  • Чей зарубежный сервер или аккаунт Cloudflare для прод-пути в Telegram.
  • Кто оператор очереди: 55 карточек и 43 предложенных канала.
  • Показывать ли пользователю в РФ ссылку на пост t.me первой (docs/37 §9).
  • Подборка одной карточкой, которую делит оператор: приемлемо ли для прода.

Остаток до прод-готовности: 7–10 чел-дней разработки, 2–3 дня DevOps и часы оператора. Вернуть код на GitHub и провести ревью (1–2 дня), зарубежный путь и выкат на cloud.ru (1,5 дня плюс DevOps), тревоги (1 день), правила (1–2 дня), удобства оператора и лимит самопоиска (2–3 дня). Допущения: чаты и модель не делаются, дизайн консоли не меняется.

10

Раздел «SEO»

Оба продуктаэтап 1 готов, запуск ждёт домена

Редактор статей с ИИ-помощником, блог на витрине, счётчик чтения и аналитика сделаны целиком и приняты на стенде 30–31 августа. Код заморожен с 31.08 и целиком лежит на GitHub. До публичного запуска остаётся только внешнее: домен, кабинеты Яндекса и Google, открытие индексации. Этап 2 (позиции и показы из Вебмастера и Search Console) не начат и по плану стартует через 2–4 недели после индексации.

10моделей, около 13,5 тыс. строк бэкенда
9модулей консоли, 7 673 строки; Editor.js вендорён
655 + 36серверных и браузерных тестов
1опубликованная статья на стенде; блог знакомств пуст
0SEO-переменных в чартах и Vault прод-копии cloud.ru
Задача планаСостояниеДоказательствоЧто осталось
Модели, автосохранение, замок редактирования, воркер (B-1…B-3, I-1)готовоseo/, ручки админ-API, воркер в demo-compose и в чарте cloud.ruЗамок не работает под общим токеном: нужны персональные входы (требование к развёртыванию)
Загрузка картинок и SEO-балл из 20 проверок (B-12, B-4)готовоWebP и ресайзы, 20 файлов проверокПосле выката один ручной запуск пересчёта вариантов картинок
Подбор запросов из Вордстата (B-5)готовоОблачный API Яндекса, приёмка живым ключом 31.08, 51 тестКлюч есть на стенде-ноутбуке; на dusha и cloud.ru не заведён; документ контракта пишет «ключа нет», устарел
Публикация: версии, расписание, откат, сброс кеша, IndexNow, публичное API блога (B-7, B-8)готовоseo/publish.py, indexnow.py, public.pyФайл ключа IndexNow витрина не отдаёт; секрет сброса кеша на cloud.ru не задан
ИИ-помощник: статья целиком, чат, правка выделенного, скиллы (B-6, S-7, S-8)готовоАпстрим Claude Opus 5 через панель на salam0nn, адрес зашит в кодКартинки выключены (решение владельца); на cloud.ru ключа нет, ручка ответит «ключ отсутствует»
Авторы, база знаний, каркас и экраны консоли (B-10, S-1…S-6, S-9, S-10)готово7 документов базы знаний, экран «Как пользоваться»Предпросмотра черновика нет; лента витринных анкет ждёт юридического решения O-7
Витрина блога: страницы, мета, JSON-LD, лента, карта сайта, RSS (F-1…F-4)готовоСтраницы в web-events, серверные маршрутыНет
Счётчик чтения, цели Метрики, CWV, мультидомен, права и аудит, вкладка «Аналитика» (B-9, F-5…F-7, B-11)готовоЖивая приёмка 30.08; ночные задачи свёртки и очисткиМетрика подключается только на боевом домене
Домен, кабинеты, го-лайв (I-4, I-5, I-6)не начаты, ждут доменаРешение владельца 30.08: домен «в последний момент»Купить домен, завести кабинеты, открыть индексацию последней
Этап 2: сбор позиций и показов, вкладка (A2-1…A2-5)не начатПлан 9,5 днейЧерез 2–4 недели после индексации
Блог знакомствкод готов, домена нетОдин образ с переключателем продукта; статей 0Домен знакомств (O-2) и второй деплой витрины

Зависимости и риски

  • Домен: единственный настоящий блокер. Два пункта критериев готовности проверяются только на боевом домене.
  • ИИ ходит через личный сервер владельца. Ручка панели вне репозитория, квота общая с работой в Claude Code, рестарт панели рвёт генерацию. Для боевого контура нужно решение: оставить, вернуть OpenRouter с депозитом или подключить API Anthropic.
  • На cloud.ru код раздела едет в образе, но ни одной переменной SEO, блога, Вордстата и IndexNow в Vault нет: заводить через DevOps.
  • Открытые вопросы спецификации O-1…O-7 (домены, целевая конверсия, масштаб авторов, приоритеты, согласия анкет) не закрыты ни один.
  • Контент: одна статья. Редакции предстоит наполнить блог до запуска.

Остаток

  • 3–5 чел-дней после появления домена: домен и кабинеты, ключ IndexNow на витрине, прод-переменные в Vault, приёмка на боевом домене.
  • Этап 2: 8–12 чел-дней, не раньше чем через 2–4 недели после индексации.
  • Опционально: предпросмотр черновика 1, лента анкет 3–4 после O-7, персональные входы для замков 2–3.
11

Общий бэкенд и доставка кода

Платформаработает на стендах, доставка кода заблокирована

В списке из запроса пункт 11 пропущен. Сюда вынесено то, без чего не работает ничего из остального: общий Django-бэкенд с сервисом чатов и верификации, и путь кода от разработчика до прода. Бэкенд здоров: 1 596 тестов зелёные. Путь кода сломан: за десять дней накопилось 144 коммита и 9 миграций, которые есть только на этом сервере, а прод собирается из кузни, куда наши сессии не имеют ключа.

1 596Django-тестов зелёные на релизной ветке; у чата и верификации автотестов нет
144коммита только локально; 9 миграций (5 Django, 4 каталога сборщиков) не видел ни GitHub, ни кузня
+6 662строк бэкенда в релизной ветке против GitHub main
0серверных правок после 14.09 дошло до cloud.ru
3стенда с тремя разными версиями, ни одна не равна ветке

Как устроена доставка кода и где она рвётся

  1. Источник правды: кузня Gitea git.uxbrain.ru (с 26.08). Туда пушат владелец и Вадим. Ключ наших сессий кузня отвергает (перепроверено 24.09).
  2. GitHub farmgameowner/plibvi это одностороннее зеркало кузни: при каждом пуше и раз в 8 часов. Всё, чего нет в кузне, зеркало стирает: так исчезали ветки 18, 19, 21 и 23.09, а main дважды откатывался на 77ec015b. Пуш в GitHub не равен доставке.
  3. GitHub main = 907d52d4: коммит 18.09 плюс 23 коммита iOS «По любви» и документы Вадима. Наш main = 2894cd60: те же 77ec015b плюс 18 коммитов (приёмка DUSHA-45…54, семейный статус, ширина без координат). Релизная ветка release/2026-09-23 = 7807dc8e собрана по слову владельца 23.09 (всё наше одной веткой), запушена и в тот же день стёрта зеркалом; на GitHub осталась меткой backup/pre-ios-2026-09-24-release. Поверх неё локально ещё интеграция 24.09 и пачка DUSHA-101…111.
  4. Дальше по кузне: CI-проверки (act_runner), сборка пяти образов и консоли по тегу stand-v*, стейдж с автосинком ArgoCD, ручная приёмка стейджа, prod-gate, ручной sync ArgoCD на прод-копии с бастиона. Всё это работает у Вадима, но ест только то, что лежит в кузне.
  5. Страховка: полные бандлы репозитория на этом сервере и на макмини (18, 23 и 24.09), метки backup/* на GitHub. Ветки 24.09 в бандлы не входят.

Пока владелец или Вадим не вольют релизную ветку в кузню (или не дадут ключ), ни одна серверная правка с 15.09 не доедет до cloud.ru: профиль и семейный статус, поиск, форма события с фото, поддержка, чат при записи, дайджест, регистронезависимый поиск, обложки all-events, площадки, самопоиск Telegram, раздел «Ошибки приложений» и пакет GlitchTip для DevOps. Расхождение растёт каждый день.

Состояние бэкенда

КомпонентСостояниеДоказательствоЧто осталосьОценка
Django API обоих продуктов (24 приложения), консоль, каталог событийработает1 596 тестов; проверки миграций и схемы; ветка release проверена на макмини 23.09Health-ручек без авторизации нет, проб в чартах нет, Sentry в бэкенде нет, логи текстом1–2 чд
Сервис чатов FastAPI с WebSocket и воркеромработает, пуши в мёртвую очередьНа дев-стенде один Redis на оба брокера и нет воркера чата: за сутки 27 сообщений «неизвестный актор», 139 в очереди мёртвых; сообщения не переносятся из Redis в PostgresВоркер чата и разнос брокеров на стенде; регистрация акторов чатов событий есть только в интеграционной ветке 24.090,5 чд
Сервис верификации фото (NSFW и лицо)работаетНа cloud был мёртв 16–18.09, починен ВадимомОбраз при сборке качает модель из бакета Yandex: при отключении Yandex сборка сломается; проб нет0,5 чд
Воркеры Dramatiq (очереди, крон, подбор)работаютНа cloud включены 14.09 (LYUBVI-12)Ресурсы и пробы не заданы0,5 чд
Миграцииработают при старте подаСухой прогон делался один раз 27.08; откат ни разу не пробовалиСухой прогон 9 новых миграций, порядок наката, тайм-ауты блокировок1–2 чд
Тестовый режим входанебезопасноНа прод-копии список тестовых номеров пуст, и общий код открывает любой из 36 тысяч аккаунтов; ограничитель по списку в коде есть (LYUBVI-15, DUSHA-56)Правка Vault одним окном с удалением 13 тестовых аккаунтов; решение о настоящих SMS0,5 чд + решение
Платежи: Т-Банк (подпись вебхука, адрес уведомлений) и Apple (подпись JWS)код готов, не прогнанLYUBVI-13, 14, 16 «На проверке»; на cloud платёжные ключи выключены до переездаDEMO-терминал (LYUBVI-17), идентификаторы пакетов iOS, боевые ключи1–2 чд + владелец
Пушине работают нигдеНа стенде мёртвая очередь; на cloud воркер есть, но Firebase заглушка до переезда; APNs в коде нетКлюч Firebase (старый засвечен), APNs, entitlements Flutter1–2 чд + доступы
Секреты в репозиторииутечкаНа GitHub main лежит шаблон окружения с закрытым ключом сервисного аккаунта пушей и значениями, похожими на боевые (SMS, Apple, Django); env-файлы веб-клиента с тестовым кодом (DUSHA-7)Ротация ключей, чистка истории, общий ssh-ключ и засвеченный ключ облака сменить1–2 чд
Нагрузкане измерена«Падает на 3 000 одновременных» из созвона 17.09; в репозитории только план и смоук k6, результатов прогонов нет; копия прода на 10 % vCPU, 1 реплика, без автомасштабированияПрогон по плану (LYUBVI-19), поиск причины3–5 чд + 3–10 на причину
Журнал ошибок приложений (GlitchTip)начатоКод и пакет для DevOps только в наших ветках; домена приёмника нет; адреса в сборках пустыДоставить пакет в кузню, DevOps ставит, адреса в сборки1,5 чд + DevOps

Остаток по бэкенду как платформе: 8–14 чел-дней (без нагрузки: до 3–10 дней на причину падения). Главное действие не инженерное: открыть путь в кузню и влить релизную ветку с дельтой 24.09.

12

Серверы, cloud.ru и пайплайн развёртывания

Платформапайплайн работает, прод-копия сейчас лежит

Живой прод «По любви» по-прежнему у подрядчика Surf в Yandex, нашего кода там нет и не будет. Будущий прод и стейдж на cloud.ru собраны и выкатывались до 14 сентября, но на момент проверки 24.09 оба контура не отвечают ни из США, ни из России; причина снаружи не видна, алертов нет. Бэкапов базы на cloud.ru нет, нагрузка не прогонялась, окно переезда не подготовлено. Команда планирует переезд на другой сервер: переносимо почти всё, кроме привязок к облаку.

2 / 2контура cloud.ru недоступны с 24.09 около 17:20 МСК: прод-копия и стейдж
stand-v1.9последний выкат 14.09; сборщики на чарте с 18.09
1 / 9подзадач эпика LYUBVI-11 «прод готов к трафику» закрыта
0расписаний бэкапа, алертов мониторинга, результатов нагрузочных прогонов
36 001пользователей в базе прод-копии (дамп 24.08) плюс 13 тестовых

Окружения

ОкружениеНазначениеЧто там сейчасКто выкатываетЖиво 24.09
Прод Yandex (Surf), production.plbvi.ruБоевой трафик из магазинов, 36 тысяч пользователейВендорский образ 0.0.71-prod, наш форк не выкатывался никогда; сертификат до 30.11.2026Surf; у нас нет kubeconfig, доступ подрядчика отозван 18.08Да
Прод-копия cloud.ru, dushalove.uxbrain.ruБудущий прод после переключения DNSstand-v1.9 (14.09), сборщики v1.9 без крона, платежи и Firebase выключены до переезда, тестовый вход включёнВадим с бастиона: тег → образы → стейдж → приёмка → prod-gate → ручной sync ArgoCDНет, порты закрыты
Стейдж cloud.ru, stage.uxbrain.ruПриёмка релизов, синтетические данные, песочница платежейstand-v1.9, автосинк ArgoCDАвтоматически по тегуНет
Дев-стенд заказчика, dusha.uxbrain.ru (VDS, Новосибирск)Демо и разработка «По душе», единственный работающий контур сбора событийСервер: интеграция 22.09 плюс поддержка, поиск и чат события через docker cp; сборщики 21.09; образы от 01.09 с наложенными правкамиРуками: rsync и docker cp, каталог не под gitДа, 19 дней аптайма
Стенд владельца (ноутбук через ssh-канал к salam0nn)SEO и блог с 31.08Ветка SEO плюс незафиксированноеВладелецНет, канал выключен (принятое состояние)
Кузня Gitea git.uxbrain.ru (VM cloud.ru)Источник правды, CI, зеркало на GitHubGitea 1.23, один раннер; бэкап tar на тот же диск; ssh открыт всему интернетуВладелец и ВадимДа; наш ключ отвергнут
Макмини владельцаСборки Android и iOS, тесты, рендерыЗагружен (load 25–30), 501 ГБ свободноСессии по sshДа
Приёмник ошибок GlitchTip, logs.uxbrain.ruЖурнал приложенийДомена нет, не развёрнут; тестовый экземпляр только на salam0nnDevOps по нашему пакетуНет

Пайплайн доставки

ЭтапСостояниеДоказательствоЧто осталосьОценка
Код в кузню, зеркало на GitHubдля наших сессий закрытоКлюч отвергнут; зеркало стирает чужие ветки и откатывает mainКлюч или токен в кузню, либо владелец вливает релизную ветку сам0,5 чд + решение
CI-проверки: бэкенд (1 497 тестов на main), сборщики, линтработаютGitea Actions на одном раннереСканеров безопасности по договору нет2–3 чд
Сборка образов по тегу stand-v*, реестр cloud.ruработает5 образов плюс консоль; реестр отказывал 02–03.09Отдельный сервисный аккаунт на реестр неясен0,5 чд
Стейдж, приёмка (8 проверок), prod-gateработаютПоследняя приёмка v1.9 14.09; тестовый номер и код зашиты в workflowСтейдж сейчас лежит0
ArgoCD на прод-копию, ручной sync с бастионаработает, требует доработокСкрипт синка не включает сборщики; консоль вне ArgoCD; вся платформа (ingress, cert-manager, базы, Vault, мониторинг) ставится рукамиСборщики и консоль в ArgoCD, платформа как приложения2–3 чд
Секреты: Vault standaloneтребует доработокРучное распечатывание тремя ключами после каждого перезапуска, корневой токен в файле на бастионе; общий ssh-ключ и засвеченные ключи не ротированыAuto-unseal или алерт, ротация, чистка истории2–3 чд
Бэкапыне начатоУ кластера Postgres нет расписания (LYUBVI-18); ручной скрипт дампит одну базу из трёх; восстановление не проверялось; бэкап кузни на её же дискеБакет, barman, расписание, WAL, тестовое восстановление; бэкап кузни наружу2–3 чд
Мониторинг и алертыначатоPrometheus, Loki, Grafana с 27.08, лежат вместе с контуром; алертов нет, аварии 02, 03, 07 и 24.09 замечены случайно; проб и ресурсов у чартов нетАлерты (Vault запечатан, доступность, мёртвая очередь), пробы, внешняя проверка не из того же облака2–3 чд
Логи приложений и тревоги сборщиковначатоGlitchTip не развёрнут; вебхук тревог сборщиков пустДоставить пакет в кузню, поставить, задать вебхук2 чд

Эпик LYUBVI-11 «Прод на cloud.ru готов принять трафик»

ПодзадачаСостояниеФактОстаток
LYUBVI-12 воркеры Dramatiq на копииготово 14.09Реплики и ресурсы заданы0
LYUBVI-13, 14 подпись вебхука и адрес уведомлений Т-Банкана проверкеКод в main; ждёт настоящего уведомления с DEMO-терминала1 чд
LYUBVI-15 тестовый вход по списку номеровна проверкеКод есть; в Vault копии список пуст, код работает всем0,5 чд + решение
LYUBVI-16 подпись JWS Appleна проверке13 тестов; ждёт идентификаторов пакетов iOS и песочницы0,5–1 чд + владелец
LYUBVI-17 DEMO-терминал на стейджене начатоКлючи из кабинета Т-Бизнеса у владельца1–2 чд + владелец
LYUBVI-18 бэкапы Postgres и проверка восстановленияне начатоБакет создаёт владелец2–3 чд + владелец
LYUBVI-19 нагрузочный прогонне начатоПлан 10.09, 7 решений владельца есть, прогонов нет3–5 чд + 3–10 на причину
LYUBVI-20 окно переключенияне начатоНужны боевые ключи кассы, Apple, Firebase, APNs; доступ к DNS plbvi.ru (владелец зоны не установлен); баланс; согласование отклонения от договора2 чд + репетиция + владелец

Готовность к переезду на другой сервер

Переносится как есть

  • Восемь Helm-чартов приложений (сменить реестр, pull-secret и хосты), workflows без marketplace-действий, приложения ArgoCD (адрес репозитория и назначение).
  • Манифесты баз: cnpg Postgres с PostGIS, redis-stack, Strimzi Kafka (сменить StorageClass); ClusterIssuer для Let's Encrypt; заготовка Vault; инструкция k3s.
  • Compose кузни Gitea, compose сборщиков, пакет k6, пакет GlitchTip.
  • Managed-сервисы cloud.ru фактически не используются, всё живёт в кластере: уход проще, чем описано в README.

Привязано к облаку и требует рук

  • cloud.ru: провайдер OpenTofu сломан с 28.08 и прод-кластер создан консолью вне state; аннотации балансировщика, StorageClass, объектное хранилище с префиксом тенанта в двух десятках скриптов, реестр образов, адреса бастиона и подсетей.
  • Yandex: извлечение данных оператором по VPN, модель верификации в Dockerfile из бакета Yandex, бакеты медиа.
  • Вне IaC: DNS и домены (plbvi.ru у reg.ru, uxbrain.ru в Timeweb), сертификаты, объектное хранилище (18 ГБ, 100 тысяч файлов), консоль оператора (kubectl apply руками), Vault (переинициализация и засев шести путей), ключи площадок сборщиков, прокси для Telegram, SMS, платёжные и push-ключи.
  • Данные: три базы (nikea 861 МБ на стенде, каталог сборщиков 6,7 ГБ, чат), RDB Redis с горячими сообщениями чата.

Риски по убыванию

  • Контуры cloud.ru лежат прямо сейчас, причина неизвестна, аварии 02, 03 и 07.09 не разобраны; после перезапуска Vault запечатан и распечатывается руками.
  • Данные без бэкапов: копия с 36 тысячами пользователей и стенд; кузня как единая точка отказа.
  • Безопасность: универсальный код входа на копии боевой базы, ключи в git, разрешённые хосты «*», консоль без второго замка, ssh кузни открыт всему интернету.
  • Внешние зависимости владельца: DNS, ключи кассы, Apple, Firebase, APNs, SMS, баланс облака, договор.
  • Ёмкость: 10 % vCPU, одна реплика, без автомасштабирования; падение на 3 000 не локализовано.
  • Боевой сбор событий идёт на дев-VDS заказчика, а не на проде.

Оценки

  • «Прод cloud.ru готов принять трафик»: 18–32 чел-дня, календарно 4–7 недель. Восстановление контуров с причиной и алертами 2–4, слияние релизной ветки и выкат 1,5–2,5, флаги Vault 0,5, DEMO-терминал 1–2, бэкапы 2–3, нагрузка 3–5 (плюс неизвестное), окно переключения с репетицией 3, ротация секретов 1–2, GlitchTip 1,5, районы и тестовые аккаунты 0,5–1, сборщики 2–3, пуши 1–2. Допущения: DevOps занят почти полностью, владелец отдаёт ключи и решения в течение недели, нагрузка чинится настройкой, а не переписыванием.
  • «Переезд на другой сервер выполнен»: ещё 17–27 чел-дней, 4–6 недель поверх готового прода. Платформа 5–8, реестр и CI с переносом кузни 2–4, объектное хранилище и медиа 2–3, данные и Vault 2–3, сеть и DNS 1–2, сборщики 2–3, репетиция и переключение с откатом 3–4. Если ехать напрямую с Yandex, минуя cloud.ru, плюс 2–3 дня на извлечение данных и сборку верификации без бакета Yandex.
СРОКИ

Сроки, которые можно называть команде

Даты считаны от 24 сентября при допущениях из разделов: команда в нынешнем составе, решения и доступы владелец даёт в течение недели, cloud.ru поднят. Реалистичная дата это середина диапазона оценки, оптимистичная нижняя граница при одновременном снятии всех блокеров.

НаправлениеЧто должно случиться сначалаТрудоёмкостьОптимистичноРеалистичноЧто не входит
Релизная ветка на cloud.ruКлюч в кузню или слияние владельцем; контуры подняты1,5–2,5 чд DevOps1.108.10Дельта 24.09 сливается отдельно после показа iOS
«По душе» iOS: первая сборка в TestFlight«Да» по Apple, карточка приложения, связка ключей до 5.1075–150 ч6–8.109–15.10Пессимистично 20.10 при сдвигах текста после движка
«По душе» iOS: сборка, сверенная по 623 экранамПервая сборка; макмини свободен под прогоны65–130 ч20.1024–31.10App Store не раньше второй половины ноября: юрист, демо-номер, удаление аккаунта, иконка, ревью 1–2 недели
«По душе» Android: готово к магазинамДоставка кода в кузню; приёмка 86 карточек владельцем35–50 чд22–29.105–12.11Оплата (+3–4 нед), связка со знакомствами (+2–3), личные чаты (+1,5–2), планшеты (+1)
«По любви» Android: готово к магазинамДоступы Play, Firebase, ключи в первую неделю; DEMO-терминал20–28 чд22.10–5.1129.10–12.11Сообщества и рефералка с проверкой покупок Play (+10–15 чд); замена Flutter в магазинах требует его ключа
«По любви» iOS: готово к магазинуВыбор пути и доступ к записи в App Store55–70 чд (SwiftUI) или 6–9 нед после пилота «По душе» (CMP)10.12 (SwiftUI)конец декабря (SwiftUI); CMP: декабрь–январьПокупки StoreKit, пуши, приватность входят; сообщества нет
«По душе» Web: публичный запускДомен куплен8–12 чд+2 нед от домена+3 нед от доменаДо прототипа ещё 15–25 чд (3–5 нед)
«По любви» WebРешение «нужен»; домен знакомств12–18 чд+3 нед от решения+4 нед от решенияПуши в браузере, лендинг
Админ-панель: готова к продуДоставка кода; персональные входы22–34 чд + 3–5 DevOps29.1012.11Функции P1: возвраты, SLA модерации, антифрод-кейсы (+15–25 чд)
Сборщики: стабильный прод-сервисРучной вход VK и Добро; решение, кто собирает для прода18–28 чд + 4–7 DevOps22.105.11Новые площадки волн 6–9: 75–110 чд, то есть 4–6 месяцев одного инженера; волна 6 отдельно 7–10 недель
Парсеры Telegram: прод-готовоЗарубежный путь для прода; оператор очереди7–10 чд + 2–3 DevOps8.1015.10Чаты и группы Telegram, извлечение моделью
SEO: го-лайв блогаДомен и кабинеты3–5 чд+1 нед от домена+1,5 нед от доменаЭтап 2 (позиции, показы): 8–12 чд через 2–4 недели после индексации; наполнение блога редакцией
Прод cloud.ru готов принять трафикКонтуры подняты и разобрана причина; ключи, DNS, бакет от владельца18–32 чд22.1012.11Причина падения под нагрузкой (+3–10 чд) неизвестна
Переезд на другой сервер выполненГотовый прод на cloud.ru; сервер и договор17–27 чд19.1124.12Напрямую с Yandex, минуя cloud.ru: +2–3 чд

Про дату 18 октября из роадмапа. К концу W16 реально иметь: релизную ветку на cloud.ru, обе Android-сборки в тестовой раздаче с принятыми карточками, первую сборку «По душе» в TestFlight, блог готовым к го-лайву при купленном домене. Недостижимы к этой дате: приложения в магазинах, iOS «По душе» сверенный, платные события (кода нет), связка «открыт для знакомств» (веха демо 04.10 без спецификации), переезд на другой сервер. Все даты выше сдвигаются день в день на каждый день, пока код не доезжает до кузни и cloud.ru лежит.

РЕШЕНИЯ

Что ждёт владельца

Разблокировать на этой неделе

  1. Путь кода в кузню. Ключ или токен для сессий, либо владелец сам вливает release/2026-09-23 и дельту 24.09 в Gitea. Без этого стоит всё серверное.
  2. Поднять cloud.ru и разобрать причину падений 02, 03, 07 и 24.09; включить алерты и auto-unseal Vault.
  3. Аккаунт Apple для «По душе» до 5.10: «да» на действия ключом, карточка приложения в браузере, лицензионное соглашение, пароль связки ключей на макмини, тестировщики, живой iPhone.
  4. Закрыть тестовый вход на копии одним окном с удалением 13 тестовых аккаунтов (LYUBVI-15, DUSHA-56); ротация ключей, попавших в git.
  5. Бэкапы: бакет для дампов Postgres (LYUBVI-18) и бэкап кузни наружу.

Продуктовые решения

  1. iOS «По любви»: дожать SwiftUI или собрать из кода Android через Compose Multiplatform после первой сборки «По душе»; доступ к записи Flutter-приложения в Apple или новое приложение.
  2. Веб «По любви»: нужен ли; если да, домен знакомств.
  3. Платные события (эскроу, выплаты, чеки): делать или снимать с релиза. Кода нет.
  4. Связка «открыт для знакомств → N из M → переход»: спецификации нет, веха демо 04.10 не достижима.
  5. «По душе»: личные чаты, «избранные люди», скидки партнёров, запись на события афиши без организатора, смысл фильтра «Проверенные», планшеты и крупный шрифт.
  6. Сборщики: кто собирает для прода (VDS или cloud), автопубликация крупных источников (сейчас 0 из 58 тысяч строк в ленте), премодерация массовых событий, хранить ли логины для автовхода, прокси для площадок с блокировкой по адресу.

Доступы и ресурсы

  1. Домены: витрина и блог «По душе» (решение «в последний момент»), домен знакомств; кабинеты Метрики, Вебмастера, Search Console.
  2. Play Console, Firebase, RuStore, подписной ключ Flutter-приложения или Play App Signing.
  3. Ключи DEMO-терминала Т-Банка (LYUBVI-17), боевые ключи кассы, SMS, APNs; баланс cloud.ru; DNS plbvi.ru (владелец зоны не установлен).
  4. Юрист: 572-ФЗ по селфи-верификации (обе платформы), согласия на ПДн, витринные анкеты (O-7).
  5. Оператор для очередей: 55 карточек и 43 канала Telegram, публикация источников без автопубликации.
  6. Дизайнер: векторная иконка «По душе» для App Store.

Учёт, который разошёлся с фактом

  • DUSHA-65 и DUSHA-70 стоят «В работе», хотя сделаны и в сборках с 22.09.
  • DUSHA-100 (iOS «По душе») не обновляется с 15:10 24.09; страница статуса для владельца обещает сверенную сборку 13–15.10, по коду реалистично конец октября.
  • LYUBVI-39 (iOS «По любви») висит в беклоге с комментарием от 18.09, хотя код Вадима уже на GitHub и владелец взял iOS на себя.
  • Работа Егора по паркам (DUSHA-2) идёт вне репозитория и беклога; карточек SRC-PARKS нет.
  • Ни одна из 109 карточек «На проверке» на двух досках не принята владельцем.
МЕТОД

Как проверялось и что не удалось проверить

Срез сделан 24 сентября 2026 с 17:00 до 21:30 по Москве восемью параллельными разборами только чтением: git локально и на GitHub, код всех веток и рабочих деревьев, документы docs и docs/internal, kb, миграционные ранбуки, доски и карточки трекера DUSHA и LYUBVI, беклог площадок, заметки прошлых сессий, лёгкие запросы к стендам из США и из России, чтение дев-стенда и макмини по ssh без изменений. Ничего не менялось, не собиралось и не запускалось. Оценки в чел-днях даны исполнителями разборов при явных допущениях и не включают ожидание решений.

Роли в команде по трекеру

Николай: владелец, исполнитель большинства карточек. Вадим: DevOps cloud.ru с бастионом, до 24.09 вёл iOS «По любви». Нихромов М. С.: код-ревью и замечания по консоли. Егор: сборщики, волна парков. Тестировщик присылает круги через Telegram-бота. Разработка идёт в параллельных сессиях на этом сервере, сборки на макмини.

Не удалось проверить

Отчёт собран автоматически по состоянию репозитория и стендов на вечер 24.09.2026. Прошлые срезы: «Роадмап против main» (19.09), «Дорога до TestFlight» (страница статуса iOS «По душе»), спецификации сборщиков и SEO на salam0nn.ru/artifacts.