docs: audit production readiness UX identity and SEO
CI / backend-and-migrations (push) Canceled after 0s
CI / astro-build (push) Canceled after 0s
CI / compose-e2e (push) Canceled after 0s

This commit is contained in:
ik
2026-09-08 16:43:33 +07:00
parent 486b4e9645
commit 3e70b0f387
4 changed files with 165 additions and 18 deletions
+54 -14
View File
@@ -1,10 +1,10 @@
# План работ RF4 Spotter
Приоритет после аудита: [пакет исправлений и оставшиеся задачи](AUDIT_FIXES.md). Ранее закрытые пункты не означают, что замечания аудита устранены.
Приоритет после полного аудита: [отчёт 8 сентября 2026](PROJECT_AUDIT_2026-09-08.md). Новый пакет ниже имеет приоритет над историческими чекбоксами; [AUDIT_FIXES.md](AUDIT_FIXES.md) сохраняет историю исправлений.
Этот файл — рабочий источник правды по развитию проекта. После завершения задачи её чекбокс меняется с `[ ]` на `[x]`, рядом добавляется ссылка на коммит или короткое подтверждение проверки. Новые задачи добавляются в соответствующий этап, а не хранятся только в переписке.
Последняя сверка плана со спецификацией, кодом и UI/UX-аудитом: 7 сентября 2026 года.
Последняя сверка кода, production-конфигурации, UI/UX, визуальной идентичности и SEO: 8 сентября 2026 года (база `486b4e9`).
Обозначения:
@@ -180,18 +180,58 @@
## Ближайший рабочий пакет
Технический production-контур, health/readiness, backup/restore и безопасные логи готовы. Ближайшие пункты выполняются небольшими проверяемыми пакетами:
Production-контур требует исправлений до запуска. Доказательства и критерии приёмки каждого ID находятся в [полном аудите](PROJECT_AUDIT_2026-09-08.md). Следующая задача — **T01**, затем T02 и T03. Инфраструктурные изменения можно объединить в один проверочный Compose-прогон.
1. базовый SEO-контракт, `robots.txt`, sitemap, structured data и 404;
2. индексируемые страницы рыб и водоёмов;
3. community scheduler и наблюдаемость источников;
4. графический паспорт данных, OG-изображение и легенда;
5. внешние контакты, мониторинг, нагрузка, DNS/TLS и production-профиль на целевом сервере.
### P0 — блокеры production
После каждого пункта необходимо:
- [ ] T01: исправить Caddy-маршруты формы и повторной загрузки скриншота.
- [ ] T02: согласовать Basic/Bearer admin-аутентификацию через production proxy.
- [ ] T03: обеспечить исходящую сеть community scheduler при изоляции БД/MinIO.
1. запустить затронутые unit/integration-тесты;
2. выполнить `docker compose up --build -d` и проверить health;
3. для UI-изменений проверить desktop и ширину 390 px;
4. обновить чекбокс в этом файле;
5. зафиксировать результат отдельным небольшим коммитом.
### P1 — до открытой альфы
- [ ] T04: сохранить реальную идентичность клиента для rate limit с проверенной цепочкой доверия proxy.
- [ ] T05: ограничить request body и время POST-запросов, обработать multipart/413/429.
- [ ] T06: расширить production acceptance на Caddy и scheduler; включить scheduler в мониторинг.
- [ ] T07: убрать диагностические подробности из публичного журнала импортов.
- [ ] D01: исключить disabled endpoint из ротации сайтов, проверить конкурирующие запуски.
- [ ] D02: атомарный cooldown research CLI, миграция старого state, единый production-путь запросов.
- [ ] D03: allowlist URL/redirects, общий ключ площадки и ограниченное чтение HTTP-ответов.
- [ ] D04: согласовать fallback alias по имени с автоматической публикацией.
- [ ] D05: расширить справочники и охват detail-источников через управляемую очередь с лимитом сайта.
- [ ] D06: устранить неверное обещание защиты от одного игрока и определить ограничения его вклада.
- [ ] D07: разделить время улова/публикации/получения/повторного обнаружения.
- [ ] D08: запрашивать оценку конкретной точки и рыбы без поиска в глобальном top-100.
- [ ] U01: исправить desktop-сетку фильтров, проверить раскрытие и мобильный layout.
- [ ] U02: согласовать область действия фильтров активности и полевых сигналов.
- [ ] U03: добавить публичную пагинацию и честные общие счётчики.
- [ ] U04: полезные ошибки формы, ожидание отправки и защита от двойного submit.
- [ ] S01: единый HTTP/SEO-контракт пустых, ошибочных и недоступных страниц.
- [ ] S02: получать сущности по slug, исключить ложные 404 после первых 500 записей каталога.
### P2 — качество интерфейса, SEO и сопровождения
- [ ] V01: согласовать основное имя RF4 Spotter и роль слогана «Ни хвоста, ни чешуи».
- [ ] V02: оформить CSS-токены и компонентные состояния, разделить глобальные стили.
- [ ] V03: компактный паспорт точки, копирование координат, ясная легенда шкалы.
- [ ] V04: проверить малые и maskable-иконки, качество OG и точность alt.
- [ ] U05: сократить первый экран, улучшить мобильную навигацию и empty/stale/error действия.
- [ ] U06: упростить карточки, подписи качества и терминологию.
- [ ] U07: визуальная матрица empty/1/many/long/error, клавиатура, zoom и повторный axe.
- [ ] S03: единый site origin, canonical/query/trailing-slash политика и конечные внутренние URL.
- [ ] S04: полезный постоянный контент рыб/водоёмов и архив с честной датой/атрибуцией.
- [ ] S05: ограничить срок sitemap fallback, документировать двойной URL-контракт и подготовить sitemap index.
- [ ] S06: проверить кэш hero и снять новый performance baseline после исправлений.
- [ ] T08: Python lock/constraints, CI web unit tests и регулярный аудит зависимостей.
- [ ] T09: нагрузочный бюджет агрегации/истории и решение об общей инвалидации по замерам.
- [ ] T10: release/migration шаг, bucket-scoped MinIO policy, план персонального admin-доступа.
- [ ] D09: частичные результаты импорта, история значимых редакций и процедура удаления оригиналов.
- [ ] D10: endpoint backoff, running/stalled состояния и достоверный последний успех.
### После появления сервера / после пилота
- [ ] S07 (P2): закрыть staging от индексации, подключить Search Console/Яндекс Вебмастер и проверить рабочие canonical/sitemap/OG/JSON-LD.
- [ ] V05 (P3): тематические обложки и OG рыб/водоёмов после обратной связи.
- [ ] Выполнить существующий внешний launch checklist: секреты, DNS/TLS, backup, мониторинг, контакты и реальные данные.
После завершения задачи: адресная проверка по риску, отметка `[x]` со ссылкой на коммит/результат, обновление README при изменении поведения и отдельный коммит. Docker запускается для инфраструктурных или общих интеграционных проверок, а не после каждой правки документации. UI проверяется на desktop/mobile с наполненными и пустыми состояниями.