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 должны работать как раньше. Где самое узкое место?