142 lines
8.9 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

"""
pipeline-sdlc adapter — registers all SDLC step types and handlers with pipeline-service engine.
"""
import logging
logger = logging.getLogger(__name__)
def load_sdlc_adapter():
"""Register all SDLC step types and handlers with pipeline-service engine."""
from pipeline_service.step_registry import register_step_type, register_handler
# --- Import handlers ---
from .handlers.design import handle_table_design, handle_crud_design, handle_api_design
from .handlers.develop import handle_code_generate, handle_code_compliance_check, handle_code_auto_fix
from .handlers.test import (
handle_test_case_generate, handle_functional_test,
handle_performance_test, handle_bug_report, handle_bug_verify,
)
from .handlers.deploy import (
handle_deploy_test, handle_deploy_test_verify,
handle_deploy_production, handle_deploy_production_verify,
)
from .handlers.ops import handle_monitor
# --- Register step types ---
step_types = [
# Phase 1: Requirements
{"name": "requirement_gathering", "title": "需求采集", "category": "requirements",
"description": "人工填写需求文档表单", "is_interactive": True, "interaction_type": "human_task",
"default_role": "product_manager", "timeout_seconds": 604800},
{"name": "requirement_review", "title": "需求评审", "category": "requirements",
"description": "利益相关方审批需求文档", "is_interactive": True, "interaction_type": "approval_gate",
"default_role": "stakeholder", "timeout_seconds": 259200},
# Phase 2: Design (parallel-safe)
{"name": "table_design", "title": "数据表设计", "category": "design",
"description": "LLM辅助生成models/*.json人工确认", "is_interactive": True,
"interaction_type": "human_task", "default_role": "architect", "timeout_seconds": 172800},
{"name": "crud_design", "title": "CRUD设计", "category": "design",
"description": "LLM辅助生成json/*.json人工确认", "is_interactive": True,
"interaction_type": "human_task", "default_role": "architect", "timeout_seconds": 172800},
{"name": "api_design", "title": "API设计", "category": "design",
"description": "LLM辅助生成API清单和.dspy规范", "is_interactive": True,
"interaction_type": "human_task", "default_role": "architect", "timeout_seconds": 172800},
{"name": "design_review", "title": "设计评审", "category": "design",
"description": "架构负责人审批设计方案", "is_interactive": True,
"interaction_type": "approval_gate", "default_role": "architect_lead", "timeout_seconds": 172800},
# Phase 3: Development
{"name": "code_generate", "title": "代码生成", "category": "development",
"description": "LLM自动生成完整模块骨架", "is_interactive": False, "timeout_seconds": 600},
{"name": "code_compliance_check", "title": "规范检查", "category": "development",
"description": "逐项检查代码是否符合模块开发规范", "is_interactive": False, "timeout_seconds": 300},
{"name": "code_auto_fix", "title": "自动修复", "category": "development",
"description": "自动修复可修复的规范违规项", "is_interactive": False, "timeout_seconds": 300},
{"name": "code_review", "title": "代码审查", "category": "development",
"description": "高级开发审查代码和检查报告", "is_interactive": True,
"interaction_type": "approval_gate", "default_role": "senior_developer", "timeout_seconds": 259200},
{"name": "code_fix", "title": "代码修复", "category": "development",
"description": "开发者根据审查意见修改代码", "is_interactive": True,
"interaction_type": "human_task", "default_role": "developer", "timeout_seconds": 172800},
# Phase 4: Testing
{"name": "test_plan_create", "title": "测试方案", "category": "testing",
"description": "人工编写测试方案(功能/性能/安全)", "is_interactive": True,
"interaction_type": "human_task", "default_role": "tester", "timeout_seconds": 172800},
{"name": "test_case_generate", "title": "用例生成", "category": "testing",
"description": "LLM根据需求和设计自动生成测试用例", "is_interactive": False, "timeout_seconds": 600},
{"name": "functional_test", "title": "功能测试", "category": "testing",
"description": "自动执行功能和API测试用例", "is_interactive": False, "timeout_seconds": 1800},
{"name": "performance_test", "title": "性能测试", "category": "testing",
"description": "自动执行性能测试(并发/响应/吞吐)", "is_interactive": False, "timeout_seconds": 3600},
{"name": "bug_report", "title": "Bug报告", "category": "testing",
"description": "自动收集测试结果生成Bug报告", "is_interactive": False, "timeout_seconds": 300},
{"name": "bug_fix", "title": "Bug修复", "category": "testing",
"description": "人工修复Bug", "is_interactive": True,
"interaction_type": "human_task", "default_role": "developer", "timeout_seconds": 172800},
{"name": "bug_verify", "title": "Bug验证", "category": "testing",
"description": "自动回归测试验证Bug修复", "is_interactive": False, "timeout_seconds": 1800},
{"name": "acceptance_test", "title": "验收测试", "category": "testing",
"description": "产品经理人工验收", "is_interactive": True,
"interaction_type": "human_task", "default_role": "product_manager", "timeout_seconds": 259200},
# Phase 5: Deployment
{"name": "deploy_env_collect", "title": "环境配置", "category": "deployment",
"description": "人工提供部署环境信息(SSH免密/sudo/数据库)", "is_interactive": True,
"interaction_type": "human_task", "default_role": "devops", "timeout_seconds": 604800},
{"name": "deploy_test", "title": "测试部署", "category": "deployment",
"description": "自动部署到测试环境", "is_interactive": False, "timeout_seconds": 600},
{"name": "deploy_test_verify", "title": "测试验证", "category": "deployment",
"description": "自动验证测试环境部署", "is_interactive": False, "timeout_seconds": 300},
{"name": "deploy_test_approve", "title": "部署审批", "category": "deployment",
"description": "确认测试环境OK批准生产部署", "is_interactive": True,
"interaction_type": "approval_gate", "default_role": "release_manager", "timeout_seconds": 259200},
{"name": "deploy_production", "title": "生产部署", "category": "deployment",
"description": "自动部署到生产环境", "is_interactive": False, "timeout_seconds": 600},
{"name": "deploy_production_verify", "title": "生产验证", "category": "deployment",
"description": "自动验证生产环境部署", "is_interactive": False, "timeout_seconds": 300},
# Phase 6: Operations
{"name": "monitor", "title": "运行监控", "category": "operations",
"description": "定期健康检查+异常告警", "is_interactive": False, "timeout_seconds": 120},
{"name": "incident_response", "title": "故障处理", "category": "operations",
"description": "人工处理故障", "is_interactive": True,
"interaction_type": "human_task", "default_role": "devops", "timeout_seconds": 86400},
# Phase 7: Upgrade
{"name": "upgrade_plan", "title": "升级规划", "category": "upgrade",
"description": "规划新版本迭代", "is_interactive": True,
"interaction_type": "human_task", "default_role": "product_manager", "timeout_seconds": 604800},
]
for st in step_types:
register_step_type(st)
# --- Register handlers (only auto steps have handlers) ---
handlers = {
"table_design": handle_table_design,
"crud_design": handle_crud_design,
"api_design": handle_api_design,
"code_generate": handle_code_generate,
"code_compliance_check": handle_code_compliance_check,
"code_auto_fix": handle_code_auto_fix,
"test_case_generate": handle_test_case_generate,
"functional_test": handle_functional_test,
"performance_test": handle_performance_test,
"bug_report": handle_bug_report,
"bug_verify": handle_bug_verify,
"deploy_test": handle_deploy_test,
"deploy_test_verify": handle_deploy_test_verify,
"deploy_production": handle_deploy_production,
"deploy_production_verify": handle_deploy_production_verify,
"monitor": handle_monitor,
}
for step_name, handler_func in handlers.items():
register_handler(step_name, handler_func)
logger.info(f"SDLC adapter loaded: {len(step_types)} step types, {len(handlers)} handlers registered")
return True