agent-ecosystem/landing/docs/iterations/ITERATION_01_SCAFFOLDING.md
iliya e6e89d4ebc fix(tests): improve messageId generation for legacy inbox rows
- Enhanced tests to ensure consistent messageId generation for legacy inbox rows lacking a messageId.
- Updated test descriptions for better clarity regarding the new messageId handling.
- Adjusted test expectations to align with the updated behavior of relaying legacy inbox rows with generated messageIds.
2026-03-23 16:31:37 +02:00

47 lines
3.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

## Итерация 01 — каркас проекта + качество кода + базовая архитектура
### Цель
Поднять Nuxt 3 проект под SSG, включить Vuetify, i18n, Pinia, ESLint+Prettier и заложить архитектурные правила.
### Ключевые принципы (чтобы потом не переделывать)
- Лендинг деплоится как **статик (SSG)**, поэтому не закладываем фичи, которые требуют сервер на каждый запрос.
- Источник правды по контенту: `landing/data/*` + `landing/locales/*`. Компоненты секций рендерят данные, а не “хранят смысл внутри себя”.
- Логика, которую хочется тестировать, живёт в `landing/utils/*`. Всё что про Nuxt/Vue — в `composables/*`.
### Шаги
1) **Создать проект `landing/` (Nuxt 3)**:
- SSG-ориентация: конфиг и скрипты сборки/генерации.
2) **Подключить Vuetify 3**:
- Material 3, темы (dark/light), сохранение выбора.
3) **Подключить i18n**:
- 6 языков, стратегия URL (prefix_except_default).
- Автовыбор языка при первом визите: cookie (если выбирали) → настройки браузера → fallback.
- Важно: IP-гео в рамках статического лендинга не используем.
4) **Подключить Pinia**:
- Stores для: темы, локали, платформы/архитектуры, ссылок загрузки.
5) **ESLint + Prettier**:
- `@nuxt/eslint`, Prettier, единые правила форматирования.
- Команды `lint`, `lint:fix`, `format`.
6) **Структура папок**:
- Добавить `landing/data`, `landing/types`, `landing/utils`.
- Зафиксировать правило: composables = Nuxt/Vue, utils = чистые функции.
### Выход (deliverables)
- Проект собирается и генерится в SSG режиме.
- Локализация/темы/Pinia подключены и работают в минимальном виде.
- Линтер/форматтер настроены, есть команды в `package.json`.
- Созданы заготовки данных и типов (без бизнес-логики секций).
- Есть короткий README как запускать/собирать локально (одинаково для всей команды).
### Критерии готовности
- `pnpm/yarn/npm` workflow согласован и описан.
- `generate`/`build`/`preview` проходят локально.
- ESLint и Prettier не конфликтуют (нет “пинпонга” форматирования).
- Подтвержден publish directory для статического хостинга (чтобы потом не гадать на деплое).
### Чеклист перепроверки (23 прохода)
- SSG: нет использования SSR-only API в runtime.
- i18n: URL стратегия соответствует требованиям SEO.
- Pinia: состояния не дублируются в компонентах.
- Минимальная страница открывается без ошибок с отключённым JS (хотя бы смысловой контент).