Files
app-autotest/DOCS/questions-to-sol.md
T

3.7 KiB

Вопросы к Sol — обсуждение MVP

executor

Q1: Зачем выносить executor из api_test.py прямо сейчас? Сейчас 9-шаговая логика работает в api_test. Вынос — рефакторинг с риском. Почему не обернуть api_test в вызов из runner, а вынос сделать фазой 2?

Q2: executor внутри того же gunicorn-воркера или отдельный процесс? Сценарий может идти 10-30 минут. Блокирует ли он воркера на всё это время?

YAML

Q3: Параметры — code или numeric ID? code: cpu, value: "500" читаемо но требует резолва через API. svcOperationCfsParamId: 104, value: "500" — работает сразу, но нечитаемо. Что предлагаешь?

Q4: lifecycle persistent — как найти «тот самый» instance? По displayName == "autotest-postgres-permanent"? А если кто-то переименовал? А если два сценария создали с одинаковым именем?

Q5: cleanup always — что чистить если create упал? Если create вернул ошибку, instanceUid пустой. Что удалять?

CMDB DELETE

Q6: Почему удалить CMDB DELETE? Nubes API не умеет удалять not-created инстансы. Без CMDB у пользователя нет способа удалить битые инстансы кроме ручного UI облака. Может оставить с логом, а не удалять?

БД

Q7: Зачем три таблицы? Предлагаешь scenario_runs + scenario_steps + доп колонки в runs. Почему не две (scenario_runs + scenario_steps) и не менять runs? Каждый шаг уже пишет в runs через save_run.

Q8: heartbeat — через БД? UPDATE каждые N секунд? Не убьёт ли это PostgreSQL при частых сценариях?

UI

Q9: Вкладки — зачем? Сейчас всё на одном экране. Добавление вкладок раздувает UI. Почему не добавить секцию «Сценарии» под списком инстансов?

Q10: Запрет innerHTML для error/log — почему? Сейчас весь вывод идёт через _esc(). Что конкретно не экранируется?

Prod policy

Q11: Почему такая сложная политика для MVP? Проверка org UID, ClientID, allowlist delete, quarantine, purge_not_before — это не MVP. Почему не просто if stand == "prod": return "заблокировано" на первом этапе?

Legacy

Q12: config.yaml — что в нём ценного? Ты предлагаешь удалить. Но там могут быть настройки которые пригодятся. Что именно предлагаешь перенести в app.py?

Общие вопросы

Q13: Порядок шагов — почему именно такой? Почему удаление legacy (шаг 1) до создания executor (шаг 2)? Если executor зависит от кода в api_test, удаление api.py/runner.py безопасно делать первым?

Q14: Риски совместимости — ручной UI не сломается? После всех изменений ручные операции в UI должны работать как раньше. Где самое узкое место?