test: make activity index deterministic

This commit is contained in:
ik
2026-09-03 18:20:55 +07:00
parent 121225971d
commit c3ddd71f59
5 changed files with 187 additions and 16 deletions
+11 -11
View File
@@ -34,17 +34,17 @@
- [x] Добавить удаление пользовательского сообщения администратором с аудитом действия (обезличивание записи, удаление объекта MinIO, миграция `0006`).
- [x] Заменить in-memory rate limit на общее хранилище, пригодное для нескольких API-процессов и перезапусков (PostgreSQL, HMAC-отпечаток без хранения исходного IP, миграция `0007`).
- [x] Валидировать одновременно содержимое, MIME, расширение и лимит изображения; добавить тесты каждого отказа.
- [ ] Добавить сквозной тест: отправка → pending → модерация → появление одобренного улова в публичной статистике.
- [ ] Добавить понятные состояния успеха и ошибок загрузки в форму, включая отдельную ошибку скриншота без потери уже созданной заявки.
- [x] Добавить сквозной тест: отправка → pending → модерация → появление одобренного улова в публичной статистике (Compose/Playwright: `2 passed`).
- [x] Добавить понятные состояния успеха и ошибок загрузки в форму, включая отдельную ошибку скриншота без потери уже созданной заявки (повторная загрузка по ID сохранённой заявки).
Критерий готовности: полный пользовательский сценарий проходит через браузер, а модератору не нужен ручной вызов API.
## Этап 4 — индекс клёва
- [ ] Сверить текущую формулу активности и уверенности с разделом 9 спецификации и зафиксировать формулу в `docs/activity-index.md`.
- [ ] Покрыть unit-тестами затухание по свежести, вес официальных и пользовательских источников, дубликаты и вклад разных игроков.
- [ ] Не учитывать pending/rejected записи и доказать это тестами.
- [ ] Добавить детерминированные агрегаты для окон 6, 12, 24 и 72 часа.
- [x] Сверить текущую формулу активности и уверенности с разделом 11 спецификации и зафиксировать формулу в `docs/activity-index.md`.
- [x] Покрыть unit-тестами затухание по свежести, доверие к официальным и пользовательским источникам, повторные сообщения одного игрока и вклад разных игроков.
- [x] Не учитывать pending/rejected/удалённые записи и доказать это тестами.
- [x] Добавить детерминированные агрегаты для окон 6, 12, 24 и 72 часа.
- [ ] На карточке и странице точки показывать человекочитаемое объяснение оценки и объём данных, на котором она основана.
- [ ] Реализовать и проверить состояния «данных мало», «данных нет», «источник недоступен» и ошибки валидации фильтров.
- [ ] Проверить фильтры главной страницы сквозным тестом на desktop и mobile.
@@ -75,12 +75,12 @@
## Ближайший рабочий пакет
Следующим завершается этап 3:
Этап 3 завершён. Следующий пакет продолжает этап 4:
1. сквозной тест `отправка → pending → модерация → публичная статистика`;
2. раздельные состояния успеха, ошибки создания заявки и ошибки загрузки скриншота без потери заявки;
3. финальная проверка этапа 3 в Docker и браузере на desktop и 390 px;
4. переход к документации и тестам индекса клёва из этапа 4.
1. человекочитаемые состояния и объём данных на карточках этапа 4;
2. состояния «данных мало», «данных нет», «источник недоступен» и ошибки фильтров;
3. сквозная проверка фильтров главной страницы на desktop и mobile;
4. переход к health/readiness и структурированным логам подготовки MVP.
После каждого пункта необходимо: