chore(ci+logs): eslint в CI, npm audit, logger с уровнями, retention error_logs
Шаги 1.6 и 1.7 плана production-готовности: - eslint flat-config (баг-ловушки, легаси warn), lint блокирующий в pr-check - npm audit --audit-level=high в CI (отчёт) - фикс реального бага: условный useRef в TaskTitleInline - server/utils/logger.ts (LOG_LEVEL/LOG_FORMAT) в 5 горячих местах - error_logs retention 30 дней (worker), redactSensitive в captureErrorLog - 0 errors lint, vitest 96/96
This commit is contained in:
@@ -244,3 +244,26 @@
|
||||
- Как проверялось: `npm run check` чисто; vitest 96/96; `npm run build` собирается.
|
||||
- Влияние на поиск/UX: поиск в реестре мгновенный как и был (фильтрация до виртуализации).
|
||||
- Подводные камни: в виртуальном чате дата-разделители не sticky; возможна «игра» ширин колонок реестра при table-layout:auto; уход редактируемой строки за overscan размонтирует несохранённый ввод (стандарт виртсписков). Ручная проверка в браузере: реестр с длинными значениями, чат >100 сообщений (автоскролл, скролл к ответу).
|
||||
|
||||
---
|
||||
|
||||
## [1.6] CI: eslint + npm audit
|
||||
|
||||
- Статус: ✅ done
|
||||
- Зачем: lint и аудит зависимостей в CI (Фаза 1).
|
||||
- Что изменено: `eslint.config.js` (flat-config eslint 9 + typescript-eslint + react-hooks; только баг-ловушки, легаси — warn); скрипт `npm run lint`; pr-check.yml — шаги Lint (блокирующий) и npm audit --audit-level=high (continue-on-error, только отчёт).
|
||||
- Результаты: старт — 703 проблемы; итог 0 errors / 576 warnings (exit 0). Попутно исправлен РЕАЛЬНЫЙ баг: условный useRef после early return в TaskTitleInline (client/src/pages/TaskDetail.tsx:1612) — react-hooks/rules-of-hooks.
|
||||
- Как проверялось: npm run lint exit 0; vitest 96/96; `npm run check` чисто.
|
||||
- Влияние на поиск/UX: нет.
|
||||
- Подводные камни: npm audit нашёл 60 уязвимостей (49 moderate, 10 high, 1 critical — XSS в DOMPurify GHSA-v2wj-7wpq-c8vv) — в бэклог, чинить отдельным шагом; eslint-plugin-react-hooks взят v5 (v7 требует zod-validation-error/v4, в проекте v3.5).
|
||||
|
||||
## [1.7] Структурированные логи + retention error_logs
|
||||
|
||||
- Статус: ✅ done
|
||||
- Зачем: единый logger с уровнями, автоочистка error_logs (Фаза 1).
|
||||
- Что изменено:
|
||||
- `server/utils/logger.ts` — уровни debug/info/warn/error (env LOG_LEVEL), LOG_FORMAT=json; подключён в 5 местах (error handler, SSE eventBus, gps worker, automation-scheduler, billing payments). Массовая замена console.* сознательно не делалась (инвазивно) — новые модули обязаны использовать logger.
|
||||
- `server/workers/error-logs-retention.ts` — DELETE error_logs старше 30 дней, раз в сутки + при старте, unref-таймер.
|
||||
- `server/index.ts` — redactSensitive() в captureErrorLog: маскировка password/token/secret/Bearer в записываемых сообщениях.
|
||||
- Как проверялось: auth-роуты возвращают статичные тексты без секретов; vitest 96/96.
|
||||
- Влияние на поиск/UX: нет.
|
||||
|
||||
Reference in New Issue
Block a user