24 lines
2.1 KiB
Markdown
24 lines
2.1 KiB
Markdown
# Task 14: Два LOW-хвоста из ревью 9061488
|
||
|
||
**Assigned to:** Antigravity (Implementation Orchestrator)
|
||
**Priority:** LOW
|
||
**Date:** 2026-08-21
|
||
**Base SHA:** `6510ea2a048aa9bbeec5af8d80e61a420f32c471`
|
||
|
||
## Проблемы
|
||
1. **`excludeDuplicateComments` на входе API (`filterRulesSchema`)**:
|
||
- `src/core/validation/giveaway-schemas.ts` по-прежнему объявляет `excludeDuplicateComments: z.boolean().optional()`.
|
||
- Если внешний API-клиент передаст этот флаг, он попадет в `filterRulesSnapshot` и в `computeConditionsHash`, изменив хеш условий для нового розыгрыша, хотя фактически на фильтрацию не влияет.
|
||
- Необходимо удалить поле из `filterRulesSchema` (или отбрасывать/валидировать), сохранив чтение legacy-снапшотов в `computeConditionsHash` и `verifyDrawResult`.
|
||
2. **`node-version: 20` в `.github/workflows/ci.yml`**:
|
||
- Обновить версию Node.js в CI до актуальной активной LTS (Node 22 / 24) с сохранением поддержки `engines.node >= 20.9.0`.
|
||
|
||
## Scope
|
||
1. Схема `filterRulesSchema`:
|
||
- Удалить `excludeDuplicateComments` из `filterRulesSchema` (так как схемы используют `.strict()`, передача этого поля будет отвергаться с 400 ValidationError, либо при strip отбрасываться без записи в БД).
|
||
- Сохранить в `FilterRules` тип `excludeDuplicateComments?: boolean` (deprecated) для совместимости со старыми записями в БД.
|
||
- Проверить, что `computeConditionsHash` по-прежнему поддерживает legacy-снапшоты с этим полем.
|
||
2. CI Workflow `.github/workflows/ci.yml`:
|
||
- Обновить `node-version: 22` (текущая Active LTS).
|
||
3. Дополнить `tests/duplicate-comments-rule.test.ts`.
|
||
4. Verification gate & Report.
|