Files
ipwhitelist-app/docs/ai-review-comparison.md
T
naeel bbcda90378 fix: IAM баги после ревью
- ui/routes/auth.js: POST /login-token сделан async (был await без async)
- ui/routes/auth.js: IAM enrichment только при auth.isOidc (не в mock-режиме)
- src/auth.js: fetchIamUser, switchProfile возвращаются из initAuth()
- src/routes/oidc.js: auth.fetchIamUser вместо require('../auth') (устранение циклической зависимости)
- ui/routes/auth.js: auth.fetchIamUser вместо require
- tests/api-crud.sh: удалён хардкоженный prod-токен, токен только через аргумент
2026-06-04 15:08:40 +03:00

4.5 KiB
Raw Blame History

AI‑анализ проекта ipwhitelist‑app — сравнение

Дата: 2026-06-04
Простая модель (GPT) vs DeepSeek V4 Pro


1. Анализ простой модели (promptreview.txt)

Общее заключение

Нет. Нельзя деплоить в production в текущем состоянии.

Найденные проблемы

# Серьёзность Описание
1 Critical ui/routes/auth.jsawait без async в POST /logintoken → SyntaxError
2 Critical server.js/export открыт публично без авторизации
3 Major Источники профилей не унифицированы (JWT vs IAM), хардкод WZ01112 для admin
4 Major jwt.decode() без верификации в UI
5 Minor 'unsafe-inline' в CSP
6 Minor Разнобой таймаутов HTTP (5s vs 10s)
7 Minor Логирование IAM слабое

Оценки

Критерий Балл
Понятность DevOps 8/10
Чистота кода 6/10

2. Оценка DeepSeek V4 Pro

Что модель нашла верно

  • await без async — реальный критический баг, приложение упадёт при запуске.
  • /export без авторизации — реальная дыра безопасности.
  • Дублирование IAM/JWT‑логики — действительно размазано по oidc.js, auth.js, ui/routes/auth.js.
  • 'unsafe-inline' в CSP — надо убирать (nonce/hash).
  • Разнобой таймаутов — мелочь, но стоит унифицировать.

Что модель пропустила

# Серьёзность Описание
1 Critical Хардкоженный IAM‑токен tazetdinovn@gmail.com (prod) лежит в tests/api-crud.sh в открытом виде и уже в гите.
2 Major DEV_MODE=true на итало — но код пытается вызывать fetchIamUser даже в mock‑режиме. IAM недоступен локально → каждый логин будет падать с таймаутом или ошибкой.
3 Major Порядок middleware: sessionoidcui — в OIDC‑роутере src/routes/oidc.js свой req.session.user, а ui/index.js делает свой jwt.decode() — возможен конфликт/перезапись.
4 Major Нет механизма миграций БД — только schema.sql с CREATE, нет ALTER/версионирования.
5 Minor csrfToken в views/index.ejs передаётся как пустая строка (csrfToken: '') — CSRF фактически отключён для UI‑слоя.
6 Minor package.json"version": "0.5.17", а README.mdv0.5.14 — расхождение версий.
7 Minor require('../auth') внутри src/routes/oidc.js создаёт циклическую зависимость: auth.jsroutes/oidc.jsauth.js. Работает только из‑за кеша Node.js, но хрупко.

3. Итоговое сравнение

Параметр Простая модель DeepSeek
Критические баги найдены 2 из 3 +1 (токен в гите)
Архитектурные проблемы Поверхностно Глубже (middleware, циклические зависимости, миграции)
Рантайм‑поведение Не анализировала Учёл DEV_MODE и реальные сценарии
Точность попаданий 6/7 верных Все найденные подтверждены + новые
Ложные срабатывания 0 0

Вывод: простая модель дала добротный первый проход — нашла два критических бага и дала разумные рекомендации. Но не копнула глубже: пропустила утекший токен, не проверила рантайм‑поведение в DEV_MODE и не заметила архитектурные завязки. Для production‑review нужен более глубокий анализ.