114 lines
3.3 KiB
Python
114 lines
3.3 KiB
Python
|
|
"""
|
|||
|
|
PM Agent - 产品经理智能体
|
|||
|
|
负责将用户输入的非结构化需求转化为结构化软件需求规格说明书 (SRS)
|
|||
|
|
"""
|
|||
|
|
|
|||
|
|
from typing import Dict, Any
|
|||
|
|
from crewai import Agent, Task, Crew
|
|||
|
|
from models.qwen_config import get_llm
|
|||
|
|
|
|||
|
|
|
|||
|
|
def create_pm_agent() -> Agent:
|
|||
|
|
"""
|
|||
|
|
创建产品经理智能体
|
|||
|
|
|
|||
|
|
Returns:
|
|||
|
|
Agent: PM 智能体实例
|
|||
|
|
"""
|
|||
|
|
return Agent(
|
|||
|
|
role="资深产品需求分析师",
|
|||
|
|
goal="将模糊的用户需求转化为清晰、完整、可执行的软件需求规格说明书 (SRS)",
|
|||
|
|
backstory="""你是一位拥有 10 年经验的资深产品需求分析师,擅长:
|
|||
|
|
1. 快速理解用户业务场景和核心痛点
|
|||
|
|
2. 识别功能性需求和非功能性需求
|
|||
|
|
3. 定义清晰的验收标准 (Acceptance Criteria)
|
|||
|
|
|
|||
|
|
你的输出将作为测试和开发团队的输入,务必保证准确性和完整性。""",
|
|||
|
|
verbose=True,
|
|||
|
|
allow_delegation=False,
|
|||
|
|
llm=get_llm()
|
|||
|
|
)
|
|||
|
|
|
|||
|
|
|
|||
|
|
def create_pm_task(requirement: str) -> Task:
|
|||
|
|
"""
|
|||
|
|
创建需求分析任务
|
|||
|
|
|
|||
|
|
Args:
|
|||
|
|
requirement: 用户需求描述
|
|||
|
|
|
|||
|
|
Returns:
|
|||
|
|
Task: PM 任务实例
|
|||
|
|
"""
|
|||
|
|
return Task(
|
|||
|
|
description=f"""
|
|||
|
|
请分析以下用户需求,生成结构化的软件需求规格说明书 (SRS):
|
|||
|
|
|
|||
|
|
【用户需求】
|
|||
|
|
{requirement}
|
|||
|
|
|
|||
|
|
【输出要求】
|
|||
|
|
请按照以下结构输出 SRS 文档:
|
|||
|
|
|
|||
|
|
## 1. 项目概述
|
|||
|
|
- 1.1 项目背景
|
|||
|
|
- 1.2 项目目标
|
|||
|
|
- 1.3 适用范围
|
|||
|
|
|
|||
|
|
## 2. 功能性需求
|
|||
|
|
- 2.1 功能列表(使用 MoSCoW 优先级标注)
|
|||
|
|
- 2.2 功能详细描述(包含输入、处理、输出)
|
|||
|
|
- 2.3 业务流程图描述
|
|||
|
|
|
|||
|
|
## 3. 非功能性需求
|
|||
|
|
- 3.1 性能要求(响应时间、并发量等)
|
|||
|
|
- 3.2 安全要求(认证、授权、数据保护)
|
|||
|
|
- 3.3 可用性要求(易用性、可访问性)
|
|||
|
|
- 3.4 可维护性要求(日志、监控、可扩展性)
|
|||
|
|
|
|||
|
|
## 4. 验收标准 (Acceptance Criteria)
|
|||
|
|
- 4.1 功能验收标准(每个功能的通过标准)
|
|||
|
|
- 4.2 性能验收标准(量化指标)
|
|||
|
|
- 4.3 用户体验验收标准
|
|||
|
|
|
|||
|
|
## 5. 约束条件
|
|||
|
|
- 5.1 技术约束
|
|||
|
|
- 5.2 业务约束
|
|||
|
|
|
|||
|
|
【注意事项】
|
|||
|
|
- 使用清晰、无歧义的语言
|
|||
|
|
- 需求必须是可测试、可验证的
|
|||
|
|
- 优先保证核心功能的完整性
|
|||
|
|
""",
|
|||
|
|
expected_output="完整的软件需求规格说明书 (SRS),包含功能性需求、非功能性需求和验收标准",
|
|||
|
|
agent=create_pm_agent()
|
|||
|
|
)
|
|||
|
|
|
|||
|
|
|
|||
|
|
def execute_pm_stage(requirement: str) -> Dict[str, Any]:
|
|||
|
|
"""
|
|||
|
|
执行 PM 阶段任务
|
|||
|
|
|
|||
|
|
Args:
|
|||
|
|
requirement: 用户需求描述
|
|||
|
|
|
|||
|
|
Returns:
|
|||
|
|
Dict[str, Any]: 包含 SRS 文档和执行结果
|
|||
|
|
"""
|
|||
|
|
pm_agent = create_pm_agent()
|
|||
|
|
pm_task = create_pm_task(requirement)
|
|||
|
|
|
|||
|
|
crew = Crew(
|
|||
|
|
agents=[pm_agent],
|
|||
|
|
tasks=[pm_task],
|
|||
|
|
verbose=True
|
|||
|
|
)
|
|||
|
|
|
|||
|
|
result = crew.kickoff()
|
|||
|
|
|
|||
|
|
return {
|
|||
|
|
"stage": "需求分析",
|
|||
|
|
"srs_document": result.raw,
|
|||
|
|
"status": "completed"
|
|||
|
|
}
|