30 lines
985 B
Python
30 lines
985 B
Python
"""Миграция черновика конвейера: плоский список фаз → этапы (стенды) с фазами и проверками."""
|
||
|
||
from __future__ import annotations
|
||
|
||
import uuid
|
||
from typing import Any
|
||
|
||
|
||
def migrate_definition(defn: Any) -> dict:
|
||
"""Приводит definition к schema_version 2 с ключом stages."""
|
||
if not isinstance(defn, dict):
|
||
return {"schema_version": 2, "stages": []}
|
||
if defn.get("stages"):
|
||
return defn
|
||
phases = defn.get("phases") or []
|
||
if not phases:
|
||
return {"schema_version": 2, "stages": []}
|
||
return {
|
||
"schema_version": 2,
|
||
"stages": [
|
||
{
|
||
"id": str(uuid.uuid4()),
|
||
"name": "Этап 1",
|
||
"description": "Импорт: ранее фазы задавались без этапов (стендов).",
|
||
"checks": [],
|
||
"phases": phases,
|
||
}
|
||
],
|
||
}
|