Миграция на v1.7.0 — удаление vul-detect-rl¶
В версии v1.7.0 удалён сервис vul-detect-rl (RL Classifier). Прогноз TP/FP теперь
выполняется только через LLM-провайдер (Ollama или OpenAI-compatible).
Что изменилось¶
Внутренне¶
- Один Docker-контейнер
copilot-vul-detect-rlудалён. - Из catalog
checks.llm_providersудалена строка сtype='rl_classifier'. - В backend удалён URI
prediction.http.uri(был указатель на vul-detect-rl). - Liquibase 1.7.0 атомарно мигрирует Prediction role-assignment с RL → первый доступный LLM-провайдер.
Для администратора¶
- В Settings → LLM-провайдеры в выпадающем списке типов больше нет «RL Classifier» — только «LLM».
- Если до апгрейда Prediction role была привязана к RL Classifier — после Liquibase 1.7.0 она автоматически переключится на первый доступный LLM-провайдер. Можно вручную переназначить через UI на нужный.
Для пользователя¶
- Никаких видимых изменений. Прогноз TP/FP продолжает работать, но через LLM.
Шаги миграции¶
1. Backup¶
Перед обновлением сделайте backup:
ssh <ваш-стенд>
sudo mkdir -p /opt/copilot-backups/backup-pre-1.7.0-$(date +%Y%m%d-%H%M%S)
sudo cp /opt/copilot/docker-compose.yml /opt/copilot-backups/backup-pre-1.7.0-*/
sudo docker exec postgresql pg_dumpall > /opt/copilot-backups/backup-pre-1.7.0-*/pg_dumpall.sql
2. КРИТИЧНО: Проверка LLM provider в catalog¶
До апгрейда обязательно убедитесь, что в Settings → LLM-провайдеры есть хотя бы один
LLM-провайдер с enabled=true И с явно заданным protocol (не auto).
- Если LLM-провайдер отсутствует — Liquibase 1.7.0 откатится с ошибкой и backend не запустится.
- Если у LLM-провайдера
protocol=auto— backend стартует, но Prediction role-assignment не сможет резолвиться (новая логика отвергаетautoдля prediction). В UI вручную переключите наollamaилиopenai_compatible.
3. Обновление через Helm¶
Если в values.yaml остался блок vulDetectRl: — Helm выдаст fail-fast с migration
message. Удалите блок целиком.
4. Verification¶
После старта:
sudo docker logs copilot-backend 2>&1 | grep "RL Classifier migration"
# Ожидается: "RL Classifier migration verification: OK"
sudo docker exec postgresql psql -U postgres -d copilot -c "SELECT id, name, type FROM checks.llm_providers;"
# Ожидается: no rows with type='rl_classifier'
sudo docker exec postgresql psql -U postgres -d copilot -c "SELECT * FROM checks.role_provider_assignments;"
# Ожидается: prediction role points to an existing LLM provider id
Откройте UI Settings → LLM-провайдеры — нет «RL Classifier» в выпадающем списке, Prediction role привязана к LLM-провайдеру.
Rollback¶
Старый образ vul-detect-rl-dev сохранён в Container Registry.
Liquibase rollback для 1.7.0 changeset — manual procedure (Liquibase changesets append-only, автоматического rollback нет):
-- Connect to postgres as superuser
ALTER TABLE checks.llm_providers DROP CONSTRAINT chk_llm_providers_type;
ALTER TABLE checks.llm_providers ADD CONSTRAINT chk_llm_providers_type
CHECK (type IN ('llm', 'rl_classifier'));
-- Re-insert RL Classifier seed row (id=1 was the original)
INSERT INTO checks.llm_providers (id, name, type, endpoint, enabled, created_at, updated_at)
VALUES (1, 'RL Classifier', 'rl_classifier', NULL, true, now(), now())
ON CONFLICT (id) DO NOTHING;
-- role_provider_assignments не откатываем — customer сам пере-назначит через UI
-- после rollback (Liquibase auto-migration выбрал LLM provider).
Breaking changes¶
- API field
LlmProviderType.rl_classifierудалён. Сторонние интеграции, фильтрующие по этому типу, должны мигрировать наtype='llm'. - Helm value
vulDetectRl:приводит к fail-fast. Удалите из values.yaml. - Backend env var
APPSECSOLUTIONS_COPILOT_PREDICTION_HTTP_URIбольше не используется (был URL-указатель на vul-detect-rl).
Поддержка¶
Issues/вопросы: https://code.appsec.ru/appsec-ai/llm-service/-/issues