Files
2026-04-03 09:08:08 +09:00

57 lines
1.8 KiB
Python

from __future__ import annotations
from typing import Any
from civilplan_mcp.models import ProjectDomain
from civilplan_mcp.tools._base import wrap_response
def get_phase_checklist(
*,
domain: ProjectDomain | str,
phase: str,
project_type: str,
total_cost_billion: float,
has_building: bool,
has_bridge: bool,
) -> dict[str, Any]:
resolved_domain = domain if isinstance(domain, ProjectDomain) else ProjectDomain(domain)
if resolved_domain == ProjectDomain.조경:
return wrap_response(
{"status": "not_ready", "message": "조경 분야는 현재 지원 준비 중입니다."},
ProjectDomain.조경,
)
checklist = [
{
"seq": 1,
"category": "신고·허가",
"task": "착공신고" if phase == "공사" else f"{phase} 단계 검토회의",
"mandatory": True,
"applicable": True,
"law": "건설산업기본법 제39조",
"authority": "발주청/인허가청",
"deadline": "착공 전" if phase == "공사" else "단계 시작 전",
"penalty": "행정상 제재 가능",
"template_available": True,
"note": f"{project_type} 사업의 {phase} 단계 기본 업무",
}
]
return wrap_response(
{
"phase": phase,
"description": f"{phase} 단계 의무 이행 사항",
"total_tasks": len(checklist),
"mandatory_applicable": 1,
"optional_applicable": 0,
"checklist": checklist,
"key_risks": [f"{phase} 단계 핵심 일정 지연"],
"inputs": {
"total_cost_billion": total_cost_billion,
"has_building": has_building,
"has_bridge": has_bridge,
},
},
resolved_domain,
)