Технический аудит · заключение

Fang Control — аудит control plane над OpenFang

Проверка backend, фронтенд-прототипа, интеграции с OpenFang и инфраструктуры. Метод: прогон всех эндпоинтов, анализ логов и стабильности контейнера, валидация JS, тест ядровой петли запросами.

Дата: 2026-06-22 Хост: 89.124.93.204 URL: fang-control.89.124.93.204.sslip.io Версия: backend v0.9.0 Аудитор: Claude Code
CRITICAL: 0 · HIGH: 2

Вердикт

Backend — зрелый MVP-уровень: стабилен, без ошибок, все стадии ТЗ покрыты, ядровая логика проверена.

Система в целом — рабочий прототип (Этап 0–1 полностью + 2–5 на уровне логики/API), но не production-ready. Главный блокер для любого внешнего доступа — отсутствие аутентификации на поверхности, которая создаёт реальных агентов и тратит токены.

Проверено и работает

Эндпоинты APIсистематический прогон GET/POST/PATCH/DELETE19/19 → 200
Несуществующий маршруткорректная обработка ошибок404
CRUD заметокPOST → PATCH → DELETEok
Логи контейнераошибок/исключений не найдено0 errors
Стабильность контейнеранет крэш-лупаrestarts=0
Префильтр-очистительрелевант проходит, мусор отсеивается0.61 ✓ / 0.17 ✗
Возврат из карантинаprefiltered_out → pending_userok
Петля вердиктов«да» → эталон в корпусе (§2.2)ok
Перевод RU→ENчерез мост claude-apiреальный
Аудит-цепочка (§2.10)проверка целостности хешейok: true
Синтаксис JS фронтендаnode --check, 71КБ скриптаOK
Создание узла = реальный агент OpenFang§4.2, openfang_id присвоен201

Находки по уровням

CRITICAL

Не найдено

Критических уязвимостей и рисков потери данных не обнаружено.

HIGH

Нет аутентификации

Страница и API публичны. Любой со ссылкой может создавать узлы = реальные агенты в OpenFang и расходовать токены подписки через мост. Открытая управляющая поверхность.

HIGH

Расход не ограничен

Таблица budget в схеме есть, но лимиты §5 не применяются — перевод и генерация навыков идут через подписку без потолка.

MEDIUM

Браузерный клик-тест не проводился

Подтверждены ответы API и наличие JS-функций в выдаче, но интерактивный клик-тест в браузере не выполнен (браузерные инструменты не подключены). Рантайм фронтенда не подтверждён на 100%.

MEDIUM

Эмбеддинги — хеш-векторизатор, не семантика

Префильтр и кластеры работают по общим токенам, не по смыслу → «контур вкуса» грубый. Заявлено как заменяемое на multilingual-e5/API одной функцией.

MEDIUM

Декоративные экраны на mock

Карта, оргструктура-граф, графики аналитики, редактор промптов показывают выдуманные числа рядом с реальными — может вводить в заблуждение.

MEDIUM

Дубли форм

Старые модалки прототипа (добавить эталон/узел/группу) пишут в mock/localStorage, а не в backend — соседствуют с рабочими формами.

LOW

Прочее

Метка engine:"openfang" у перевода неточна (фактически мост). Русское зеркало навыка в одном тесте вышло пустым. Нет тестов/CI/rate-limit. Ключ моста в plaintext .env (chmod 600).

Рекомендации · по приоритету

Закрыть доступ аутентификациейбыстрый путь — basic-auth на Caddy (как у NSU), 1 правка; снимает HIGH за минутуHIGH
Ограничить создание узлов / включить бюджет-лимитыприменить таблицу budget §5; потолок на расход токеновHIGH
Клик-тест в браузереподключить расширение Chrome — пройти по экранам и поймать рантайм-багиMED
Заменить эмбеддинги на семантическиеmultilingual-e5 / API эмбеддингов — реальное качество «вкуса»MED
Подключить или скрыть mock-экранычтобы выдуманные данные не соседствовали с реальнымиMED
Fang Control · технический аудит сгенерировано 2026-06-22 · Claude Code