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

4.7 KiB
Raw Blame History

Итерация 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 не конфликтуют с выбранными модулями.