feat: establish public SEO foundation
This commit is contained in:
+58
-4
@@ -107,6 +107,58 @@
|
||||
- [ ] Определить процедуру повторной проверки опубликованного внешнего улова при изменении или удалении записи у источника.
|
||||
- [ ] Согласовать один добровольный канал сообщества и правила происхождения, модерации и удаления сообщений.
|
||||
|
||||
## Pre-deploy: SEO, визуальный язык и техническая полировка
|
||||
|
||||
### SEO и структура публичного сайта
|
||||
|
||||
- [x] Добавить единый SEO-контракт страниц: уникальные `title`/`description`, canonical URL, Open Graph и Twitter Card (7 сентября 2026).
|
||||
- [ ] Подготовить фирменное OG-изображение 1200×630 и проверить превью ссылок.
|
||||
- [x] Добавить production-aware `robots.txt`, исключить `/admin`, `/api`, `/health` и `/ready` из индексации (7 сентября 2026).
|
||||
- [x] Добавить динамический `sitemap.xml` для существующих статических страниц и публичных точек; страницы рыб и водоёмов включить после реализации их маршрутов (7 сентября 2026).
|
||||
- [x] Добавить JSON-LD: `WebSite`, `Dataset` и `BreadcrumbList` на соответствующих страницах (7 сентября 2026).
|
||||
- [x] Сделать собственную полезную страницу 404 с возвратом к свежим точкам (7 сентября 2026).
|
||||
- [x] Явно отдавать `noindex` на административных страницах и состояниях ошибок (7 сентября 2026).
|
||||
- [ ] Добавить человекочитаемые постоянные URL точек без поломки существующих UUID-ссылок.
|
||||
- [ ] Создать индексируемые страницы `/fish/{slug}`, `/waterbodies/{slug}` и сочетания водоём + рыба с уникальным содержимым.
|
||||
|
||||
### Графические элементы и объяснение данных
|
||||
|
||||
- [ ] Подготовить фирменный знак «крючок + поплавок + координатная сетка» и согласованный набор favicon/app icons.
|
||||
- [ ] Добавить координатный радар или мини-карту на страницу точки.
|
||||
- [ ] Добавить временную шкалу активности 24/72 часа в рыболовной стилистике.
|
||||
- [ ] Добавить лёгкие силуэты видов рыб, не перегружая карточки результатов.
|
||||
- [ ] Собрать единый визуальный «паспорт данных»: источник, свежесть, полнота и доверие.
|
||||
- [ ] Добавить публичную легенду цветов источников и статусов качества.
|
||||
- [ ] Добавить skeleton-состояния для динамических публичных блоков.
|
||||
- [ ] Добавить ненавязчивый баннер открытой альфы и канал обратной связи.
|
||||
- [ ] Дополнить пустые состояния собственными рыболовными иллюстрациями с поддержкой `prefers-reduced-motion`.
|
||||
|
||||
### Производительность, данные и эксплуатация
|
||||
|
||||
- [ ] Добавить управляемый scheduler всех разрешённых community-парсеров с cooldown ≥30 минут, PostgreSQL lock, backoff и журналом запусков.
|
||||
- [ ] Показывать публичное безопасное состояние источников: актуален, устарел, временно ограничен или изменился DOM.
|
||||
- [ ] Добавить короткое серверное кэширование публичных GET API и проверить корректную инвалидацию после публикации.
|
||||
- [ ] Настроить долгий immutable cache для хешированных assets и разумный cache для изображений/favicon.
|
||||
- [ ] Добавить пагинацию или «Показать ещё» для публичной ленты полевых сигналов.
|
||||
- [ ] Ограничить визуальные повторы одинаковых сигналов без потери provenance.
|
||||
- [ ] Добавить безопасный административный экспорт диагностики без персональных данных.
|
||||
- [ ] Контролировать рост PostgreSQL и MinIO с порогами предупреждений.
|
||||
- [ ] Добавить фоновую проверку битых исходных ссылок с соблюдением лимитов источников.
|
||||
- [ ] Показывать commit SHA/версию в readiness и административной диагностике.
|
||||
- [ ] Добавить публичную `/status` без внутренних адресов, секретов и лишних деталей.
|
||||
- [ ] После появления сервера подключить privacy-friendly аналитику без cookies либо собственные агрегированные счётчики.
|
||||
- [ ] Зафиксировать нагрузочный бюджет и проверить p95 публичных API на целевом сервере.
|
||||
|
||||
### Обязательные внешние условия открытия альфы
|
||||
|
||||
- [ ] Заменить все демонстрационные production-секреты.
|
||||
- [ ] Настроить DNS `rf4spotter.ru` и `files.rf4spotter.ru`, корректный TLS и закрыть внутренние порты.
|
||||
- [ ] Создать контакты `privacy`/`abuse` и определить срок реакции.
|
||||
- [ ] Приложить первичные документы разрешений и точные продуктивные лимиты источников.
|
||||
- [ ] Настроить внешнее хранение резервных копий и проверить восстановление с сервера.
|
||||
- [ ] Подключить реальный канал уведомлений мониторинга.
|
||||
- [ ] Наполнить альфу разрешённым набором реальных данных и выполнить финальный `preflight`.
|
||||
|
||||
## Этап 5 — пилот
|
||||
|
||||
- [x] Опубликовать страницы `/rules` и `/privacy`, добавить ссылки в footer и обязательное несохраняемое согласие перед отправкой улова.
|
||||
@@ -122,11 +174,13 @@
|
||||
|
||||
## Ближайший рабочий пакет
|
||||
|
||||
Технический production-контур, health/readiness, backup/restore и безопасные логи готовы. Следующие пункты выполняются строго по одному:
|
||||
Технический production-контур, health/readiness, backup/restore и безопасные логи готовы. Ближайшие пункты выполняются небольшими проверяемыми пакетами:
|
||||
|
||||
1. наполнить полный разрешённый каталог; проверка целостности `audit-catalog` уже готова;
|
||||
2. создать и проверить контакты `privacy`/`abuse`;
|
||||
3. мониторинг, нагрузка, DNS/TLS и production-профиль на целевом сервере.
|
||||
1. базовый SEO-контракт, `robots.txt`, sitemap, structured data и 404;
|
||||
2. индексируемые страницы рыб и водоёмов;
|
||||
3. community scheduler и наблюдаемость источников;
|
||||
4. графический паспорт данных, OG-изображение и легенда;
|
||||
5. внешние контакты, мониторинг, нагрузка, DNS/TLS и production-профиль на целевом сервере.
|
||||
|
||||
После каждого пункта необходимо:
|
||||
|
||||
|
||||
Reference in New Issue
Block a user