# Техническая архитектура платформы

## Назначение документа

Этот документ описывает техническую сторону платформы «Эволюция» как она должна быть представлена в whitepaper. Он не заменяет README разработчика и не должен притворяться, что production уже готов. Его задача — объяснить, как смысловая архитектура переводится в платформенную архитектуру.

## Текущий технологический контур

Текущая платформа собирается как source-level MVP на современном фронтенд-стеке:

- Next.js App Router;
- React;
- TypeScript;
- CSS tokens / глобальный визуальный код;
- mock/data-layer;
- localStorage для временного пользовательского состояния;
- safe-storage для устойчивого чтения JSON;
- rule-based recommendations;
- mock applications;
- статические и демо-данные для Советов, регионов, проектов, ТВ, событий, возможностей и заявок.

Этот этап нужен, чтобы проверить архитектуру маршрутов, связей, заявок, кабинета, карты, Реестра, Эволюция ТВ и панели координатора до подключения production-базы.

## Основные маршруты

- `/` — общий вход в Эволюцию.
- `/start` — первичная настройка маршрута.
- `/center` — коммуникативный вход в Координационный Центр.
- `/sovet` — карта шести Советов.
- `/sovet/[id]` — страница Совета.
- `/registry` — Реестр проектов и инициатив.
- `/registry/[id]` — карточка проекта, в будущем — история развития проекта.
- `/map` — карта регионов, объектов и маршрута.
- `/tv` — Эволюция ТВ.
- `/tv/[id]` — материал ТВ и продолжение после просмотра.
- `/uslugi` — возможности включения и сопровождения.
- `/cabinet` — кабинет участника.
- `/admin` — панель координатора.
- `/whitepaper` — возможная будущая публичная страница документа.

## Основные сущности

### Councils

Шесть утверждённых Советов КЦ. Они связывают проекты, события, ТВ-материалы, рекомендации, заявки и маршруты.

### Regions / Cities

Региональная модель нужна для карты, RegionPanel, региональных проектов, событий, ТВ-материалов, маршрута и будущей региональной аналитики.

### PlatformObjects

Проекты и инициативы, которые могут отображаться в Реестре и на Карте, иметь связь с Советом, регионом, историей проекта, ТВ и заявками.

### ProjectStories

Отдельный слой истории проекта: этапы, обновления, текущая стадия, связи с ТВ, событиями, регионом и Советом.

### TVMaterials

Материалы Эволюция ТВ: эфиры, интервью, репортажи, подкасты, записи событий. Каждый материал должен иметь nextActions и связи с проектами, Советами, регионами или событиями.

### EducationEvents / LearningTracks

События и образовательные маршруты. Они используются в рекомендациях, кабинетах, заявках и маршруте участника.

### TrustSignals / Verification

Сигналы доверия и статусы подтверждения: участие в событиях, публикации, документы, Совет, регион, публичное обновление, история проекта, проверка данных.

### CenterActivity

Пульс Эволюции: публичные события, заседания, круглые столы, обновления карты, эфиры, запуск проектов, резолюции.

### UserProfile / PersonalRoute / Recommendations

Профиль участника, его маршрут и rule-based рекомендации по Совету, региону, проектам, событиям, ТВ и возможностям.

### Applications

Заявки участника: проект, событие, ТВ, сопровождение, поддержка, верификация, GR+, образовательные форматы, медиа-заявки. Заявка должна иметь status, nextStep, relation summary и coordinatorNote.

## Логика данных и связей

Платформа строится на устойчивых идентификаторах:

- `councilId` / `relatedCouncilIds`
- `regionId` / `relatedRegionIds`
- `cityId` в будущей версии
- `projectId` / `relatedObjectId`
- `eventId`
- `tvMaterialId`
- `productId`
- `applicationId`
- `userProfileId` в production-версии

Принцип: никакая сущность не должна жить отдельно. Проект связан с Советом, регионом, историей, картой и заявками. ТВ-материал связан с проектом, Советом, событием или регионом. Заявка связана с маршрутом, участником, сущностью и следующим шагом.

## Карта

Текущий MVP активной карты может использовать региональные маркеры поверх SVG. Это честный fallback, если SVG не размечен по регионам.

Production-версия требует одного из вариантов:

1. SVG, где каждый path региона имеет `data-region-id`.
2. GeoJSON с кодами регионов.
3. Комбинация SVG-подложки и интерактивного слоя координат.

Карта должна показывать не просто географию, а живое развитие территорий: проекты, события, ТВ, Советы, обновления, заявки и личный маршрут.

## Хранение и переход к backend

Текущий слой может работать на mock/localStorage. Production должен перейти к базе данных.

Потенциальные таблицы / коллекции:

- users
- profiles
- roles
- councils
- regions
- cities
- projects
- project_stories
- project_milestones
- project_updates
- tv_materials
- events
- learning_tracks
- applications
- verification_records
- trust_signals
- center_activity
- saved_materials
- coordinator_notes
- audit_logs

## Роли

- участник;
- проект;
- медиа / автор;
- координатор;
- администратор;
- эксперт Совета;
- партнёр;
- представитель территории.

## Российский сервер

Whitepaper должен фиксировать, что перенос на российский сервер — не просто техническое размещение, а часть будущей устойчивости платформы.

Нужно предусмотреть:

- домен и поддомены;
- deployment-процесс;
- backup;
- SSL;
- базу данных;
- хранение медиа;
- журнал изменений;
- доступы и роли;
- безопасность форм и кабинетов;
- подготовку к интеграциям.

## ИИ и алгоритмы

Платформа может работать без внешнего ИИ на первом этапе. Служба созидательных связей строится на прозрачных правилах: регион, Совет, запрос, опыт, возможности, стадия проекта, доверие, события, ТВ и готовность к действию.

ИИ может быть добавлен позже как помощник:

- для классификации заявок;
- для подсказок координатору;
- для помощи в заполнении карточек;
- для анализа обновлений;
- для редакционной помощи Эволюция ТВ.

Но принятие решений и ядро рекомендаций должны оставаться объяснимыми, управляемыми и жизнецентричными.

## Что должен дополнить Antigravity

Antigravity должна сверить этот документ с фактическим кодом:

- какие маршруты реально существуют;
- какие data-файлы реально созданы;
- какие поля уже реализованы;
- какие статусы заявок есть;
- есть ли projectStories / centerActivity;
- есть ли RegionPanel;
- как реально работает /cabinet и /admin;
- что уже задеплоено;
- что не прошло build/lint;
- что является mock;
- что готово к backend.
