agent-ecosystem/landing/docs/iterations/ITERATION_00_REQUIREMENTS.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

52 lines
4.7 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.

## Итерация 00 — фиксация требований и источников данных
### Цель
Согласовать “что именно делаем”, чтобы не переписывать UX/архитектуру на ходу.
### Входные решения (обязательные)
- **Карусель скриншотов**: Swiper Vue (`https://swiperjs.com/vue`), на десктопе видно **несколько** скринов одновременно.
- **Download Section**:
- Автоопределение ОС.
- Если не определили — показываем все ОС.
- Для macOS — учёт **Apple Silicon vs Intel** (если детект не точный — дать выбор пользователю).
- **Privacy**:
- Локальное хранение API ключей.
- Опциональное использование собственных API ключей.
- Нет облачного хранилища транскрипций.
- **Open Source**: да, часть компонентов/модулей будет open-source (маркетинг/доверие).
- **Статистика загрузок**: не делаем.
- **Аналитика**: GA4 + события скачивания и ключевых действий.
- **Деплой**: Render, **SSG**.
- **State management**: Pinia (общее состояние не размазываем по компонентам).
- **Code quality**: ESLint (`@nuxt/eslint`) + Prettier.
- **Структура**: добавляем `landing/data`, `landing/types`, `landing/utils` + правило `composables/` vs `utils/`.
### Важно про SSG (чтобы не было сюрпризов в конце)
- Лендинг остаётся **статическим**: без собственного backend на каждый запрос.
- Поэтому **IP-геолокацию на сервере не делаем** (в чистом SSG её просто негде исполнять).
- Автовыбор языка: **cookie/localStorage (если пользователь выбирал)****настройки браузера** → fallback на `en`. Всё остальное (гео, Accept-Language на сервере) — только если появится отдельный runtime/edge, но это уже другая задача.
### Решения/данные, которые нужно получить от владельца проекта
- **Релизы/артефакты**: где лежат ссылки на `.dmg/.exe/.msi/.deb/.AppImage`, как формируется URL (GitHub Releases / отдельный CDN).
- **macOS артефакты**: есть ли separate сборки `arm64` и `x64` или один universal.
- **GA4**:
- Measurement ID вида `G-XXXXXXXXXX` (и подтверждение, что GA4 property уже создан).
- Список обязательных событий/параметров (если есть требования маркетинга).
### Контракт по загрузкам (нужно согласовать один раз)
- **Источник правды**: GitHub Releases (рекомендуется) или статичный список в `landing/data/downloads.ts` (если релизы ведутся вручную).
- **Нейминг ассетов**: как минимум, чтобы можно было однозначно сопоставить `os + arch + extension` (например `VoiceToText-1.2.3-mac-arm64.dmg`).
- **Страница /download**: откуда берём “версия/размер/дата” (из релиза или руками в data).
- **Проверки**: если есть sha256/подпись — решаем, показываем ли это пользователю (желательно да).
### Критерии готовности
- Все пункты выше подтверждены.
- Есть источник правды по ссылкам загрузок и форматам релизов.
- Определены обязательные GA4 события и параметры.
- Подтверждено, что лендинг действительно деплоится как **статик** (SSG), без server runtime.
### Чеклист перепроверки (прогнать 23 раза)
- Нет “опциональных” фич, которые фактически обязательны.
- Нет скрытых зависимостей (например, server API для статистики).
- SSG и Render не конфликтуют с выбранными модулями.