3.2 KiB
3.2 KiB
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-хвоста, выявленные в ходе независимого ревью:
-
Запрет
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).
- Поле
-
Обновление версии 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
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)