randomayzer/agents/antigravity/done/TASK-2026-08-21-14-low-followups.md

47 lines
3.2 KiB
Markdown
Raw Permalink 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.

# Task 14: Два LOW-хвоста из ревью 9061488 Report
**Date:** 2026-08-21
**Base Commit SHA:** `6510ea2a048aa9bbeec5af8d80e61a420f32c471`
**Status:** COMPLETED / PASS
**Assigned Agent:** Antigravity (Implementation Orchestrator)
---
## 1. Executive Summary
Устранены два LOW-хвоста, выявленные в ходе независимого ревью:
1. **Запрет `excludeDuplicateComments` на границе API (`src/core/validation/giveaway-schemas.ts`):**
- Поле `excludeDuplicateComments` удалено из `filterRulesSchema`.
- Поскольку `filterRulesSchema` определена со `.strict()`, любая попытка внешнего API-клиента передать `excludeDuplicateComments` при создании розыгрыша (`POST /api/giveaways`), импорте участников (`POST /api/giveaways/[id]/participants`) или фиксации слепка (`POST /api/giveaways/[id]/snapshot`) немедленно отвергается с кодом `400 Bad Request` (`ValidationError: Unrecognized key(s) in object: 'excludeDuplicateComments'`).
- Поле физически не может попасть в `filterRulesSnapshot` нового розыгрыша и изменить `conditionsHash`.
- **Обратная совместимость legacy-снапшотов:** Функция `computeConditionsHash` (`src/core/randomizer/canonical.ts:46`) и верификатор `verifyDrawResult` сохраняют поддержку старых слепков, где это поле было записано до Задания 07 (`verified: true`, `conditionsIntegrity: true`).
2. **Обновление версии Node.js в CI (`.github/workflows/ci.yml`):**
- Версия `node-version` в GitHub Actions поднята с 20 до 22 (текущая Active LTS).
- Все шаги CI (Prisma generate/migrations, Unit/Integration tests, ESLint, Next.js build) валидированы.
---
## 2. Modified Files
| File | Status | Description |
|------|--------|-------------|
| `src/core/validation/giveaway-schemas.ts` | MODIFIED | Удалено `excludeDuplicateComments` из `filterRulesSchema`. |
| `.github/workflows/ci.yml` | MODIFIED | Обновлен `node-version: 22` в CI workflow. |
| `tests/duplicate-comments-rule.test.ts` | MODIFIED | Добавлены тесты отсечения `excludeDuplicateComments` на уровне схем Zod. |
| `tests/auth-guard.test.ts` | MODIFIED | Удалено устаревшее поле из тестовых фикстур `validPostData`. |
| `tests/security.test.ts` | MODIFIED | Удалено устаревшее поле из тестовой фикстуры. |
---
## 3. Verification Evidence
```text
npx prisma generate -> EXIT 0 (Prisma Client v5.22.0)
npx tsc --noEmit -> EXIT 0 (0 ошибок типизации)
npm test -> EXIT 0 (59 тест-сьютов, 343 теста пройдены успешно)
npm run lint -> EXIT 0 (0 ошибок, 6 warnings на no-img-element)
npm run build -> EXIT 0 (Все 17 маршрутов скомпилированы успешно в Next.js 16.3.2)
npm audit --omit=dev -> EXIT 0 (0 vulnerabilities)
```