decomposer: generate files for Create and commit a registry-ready single-agent repository that generates technical solution design documents and draw.io architecture diagrams from application requirements.
This commit is contained in:
42
application_landing_zone_agent/model.py
Normal file
42
application_landing_zone_agent/model.py
Normal file
@@ -0,0 +1,42 @@
|
||||
from __future__ import annotations
|
||||
|
||||
from dataclasses import dataclass, field
|
||||
from typing import Any
|
||||
|
||||
|
||||
@dataclass
|
||||
class Requirements:
|
||||
name: str = "Application"
|
||||
summary: str = ""
|
||||
requirements: list[str] = field(default_factory=list)
|
||||
constraints: list[str] = field(default_factory=list)
|
||||
users: list[str] = field(default_factory=list)
|
||||
integrations: list[str] = field(default_factory=list)
|
||||
security: list[str] = field(default_factory=list)
|
||||
data: list[str] = field(default_factory=list)
|
||||
availability: str = "To be confirmed"
|
||||
deployment: str = "To be confirmed"
|
||||
extra: dict[str, Any] = field(default_factory=dict)
|
||||
|
||||
|
||||
def _list(value: Any) -> list[str]:
|
||||
if value is None:
|
||||
return []
|
||||
if isinstance(value, list):
|
||||
return [str(item) for item in value]
|
||||
return [str(value)]
|
||||
|
||||
|
||||
def normalize(raw: dict[str, Any] | str) -> Requirements:
|
||||
if isinstance(raw, str):
|
||||
return Requirements(name="Application", summary=raw, requirements=[raw])
|
||||
known = {"name", "summary", "requirements", "constraints", "users", "integrations", "security", "data", "availability", "deployment"}
|
||||
return Requirements(
|
||||
name=str(raw.get("name", "Application")), summary=str(raw.get("summary", "")),
|
||||
requirements=_list(raw.get("requirements")), constraints=_list(raw.get("constraints")),
|
||||
users=_list(raw.get("users")), integrations=_list(raw.get("integrations")),
|
||||
security=_list(raw.get("security")), data=_list(raw.get("data")),
|
||||
availability=str(raw.get("availability", "To be confirmed")),
|
||||
deployment=str(raw.get("deployment", "To be confirmed")),
|
||||
extra={str(k): v for k, v in raw.items() if k not in known},
|
||||
)
|
||||
Reference in New Issue
Block a user