第二版

This commit is contained in:
ZhuJW
2026-03-13 18:12:31 +08:00
parent 078f928f75
commit 402adfdcd3
28 changed files with 2408 additions and 3068 deletions

19
agents/__init__.py Normal file
View File

@@ -0,0 +1,19 @@
"""
Agents 包初始化
"""
from .pm_agent import create_pm_agent, create_pm_task, execute_pm_stage
from .qa_agent import create_qa_agent, create_qa_task, execute_qa_stage
from .dev_agent import create_dev_agent, create_dev_task, execute_dev_stage
__all__ = [
"create_pm_agent",
"create_pm_task",
"execute_pm_stage",
"create_qa_agent",
"create_qa_task",
"execute_qa_stage",
"create_dev_agent",
"create_dev_task",
"execute_dev_stage"
]

145
agents/dev_agent.py Normal file
View File

@@ -0,0 +1,145 @@
"""
Dev Agent - 开发工程师智能体
负责根据 SRS 和测试用例编写业务代码
"""
from typing import Dict, Any
from crewai import Agent, Task
from models.qwen_config import get_llm
def create_dev_agent() -> Agent:
"""
创建开发工程师智能体
Returns:
Agent: Dev 智能体实例
"""
return Agent(
role="全栈软件工程师",
goal="根据软件需求规格说明书 (SRS) 和测试用例实现高质量的业务代码",
backstory="""你是一位拥有 10 年经验的全栈软件工程师,擅长:
1. 快速理解需求并设计合理的系统架构
2. 编写清晰、可维护、高性能的代码
3. 遵循 TDD测试驱动开发实践
4. 遵循博世研发规范中的编码标准
你的代码实现必须通过所有测试用例,并满足性能和安全要求。""",
verbose=True,
allow_delegation=False,
llm=get_llm()
)
def create_dev_task(srs_document: str, test_plan: str) -> Task:
"""
创建代码实现任务
Args:
srs_document: 软件需求规格说明书
test_plan: 测试方案和测试用例
Returns:
Task: Dev 任务实例
"""
return Task(
description=f"""
请根据以下 SRS 文档和测试方案,实现完整的业务代码:
【SRS 文档】
{srs_document}
【测试方案】
{test_plan}
【输出要求】
请按照以下结构输出代码实现:
## 1. 项目结构设计
- 1.1 目录结构
- 1.2 模块划分
- 1.3 依赖关系
## 2. 核心业务代码
实现所有功能性需求,包含:
```python
# 示例:主业务逻辑
class <ServiceName>:
\"\"\"<服务>业务逻辑类\"\"\"
def __init__(self):
# 初始化
def <method_name>(self, params) -> ReturnType:
\"\"\"
方法描述
Args:
params: 参数说明
Returns:
返回值说明
\"\"\"
# 实现逻辑
pass
```
## 3. 数据模型定义
- 3.1 Pydantic 模型
- 3.2 数据库模型(如需要)
- 3.3 DTO/VO 对象
## 4. API 接口定义(如适用)
- 4.1 RESTful 端点
- 4.2 请求/响应格式
- 4.3 错误处理
## 5. 配置文件
- 5.1 环境变量配置
- 5.2 日志配置
- 5.3 其他配置项
## 6. 使用说明
- 6.1 安装步骤
- 6.2 运行命令
- 6.3 配置说明
【注意事项】
- 遵循 PEP 8 编码规范
- 使用类型提示 (Type Hints)
- 包含必要的文档字符串
- 实现适当的错误处理
- 确保代码可通过所有测试用例
""",
expected_output="完整的业务代码实现和使用说明",
agent=create_dev_agent()
)
def execute_dev_stage(srs_document: str, test_plan: str) -> Dict[str, Any]:
"""
执行 Dev 阶段任务
Args:
srs_document: 软件需求规格说明书
test_plan: 测试方案和测试用例
Returns:
Dict[str, Any]: 包含代码实现和执行结果
"""
dev_agent = create_dev_agent()
dev_task = create_dev_task(srs_document, test_plan)
crew = Crew(
agents=[dev_agent],
tasks=[dev_task],
verbose=True
)
result = crew.kickoff()
return {
"stage": "代码实现",
"implementation": result.raw,
"status": "completed"
}

115
agents/pm_agent.py Normal file
View File

@@ -0,0 +1,115 @@
"""
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)
4. 遵循博世研发规范,确保需求的可追溯性和可验证性
你的输出将作为测试和开发团队的输入,务必保证准确性和完整性。""",
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 业务约束
- 5.3 合规约束(博世研发规范)
【注意事项】
- 使用清晰、无歧义的语言
- 需求必须是可测试、可验证的
- 优先保证核心功能的完整性
""",
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"
}

128
agents/qa_agent.py Normal file
View File

@@ -0,0 +1,128 @@
"""
QA Agent - 测试工程师智能体
负责根据 SRS 生成自动化测试用例Pytest 格式)
"""
from typing import Dict, Any
from crewai import Agent, Task
from models.qwen_config import get_llm
def create_qa_agent() -> Agent:
"""
创建测试工程师智能体
Returns:
Agent: QA 智能体实例
"""
return Agent(
role="高级测试架构师",
goal="根据软件需求规格说明书 (SRS) 设计并生成完整的自动化测试用例",
backstory="""你是一位拥有 8 年经验的高级测试架构师,擅长:
1. 基于需求文档设计全面的测试策略
2. 编写高质量的 Pytest 自动化测试脚本
3. 覆盖单元测试、集成测试、端到端测试
4. 遵循博世研发规范中的测试要求
你的测试用例将作为开发实现的验证标准,务必保证覆盖率和可执行性。""",
verbose=True,
allow_delegation=False,
llm=get_llm()
)
def create_qa_task(srs_document: str) -> Task:
"""
创建测试用例生成任务
Args:
srs_document: 软件需求规格说明书
Returns:
Task: QA 任务实例
"""
return Task(
description=f"""
请根据以下 SRS 文档,生成完整的自动化测试用例:
【SRS 文档】
{srs_document}
【输出要求】
请按照以下结构输出测试方案:
## 1. 测试策略概述
- 1.1 测试范围
- 1.2 测试方法(单元测试/集成测试/E2E 测试)
- 1.3 测试工具和技术栈
## 2. 测试场景列表
- 2.1 功能测试场景(对应每个功能性需求)
- 2.2 边界值测试场景
- 2.3 异常场景测试
- 2.4 性能测试场景
## 3. Pytest 测试代码
为每个核心功能生成 Pytest 测试脚本,包含:
```python
# 测试文件test_<feature>.py
import pytest
class Test<Feature>:
\"\"\"<功能>测试类\"\"\"
def test_<scenario>_(self):
\"\"\"测试场景描述\"\"\"
# Arrange - 准备测试数据
# Act - 执行操作
# Assert - 验证结果
pass
```
## 4. 测试数据准备
- 4.1 测试 fixtures
- 4.2 Mock 数据
- 4.3 测试数据库种子
## 5. 测试执行说明
- 5.1 运行命令
- 5.2 环境要求
- 5.3 预期通过率
【注意事项】
- 遵循 AAA(Arrange-Act-Assert)测试模式
- 使用描述性的测试函数命名
- 包含充足的断言验证
- 考虑边界条件和异常情况
""",
expected_output="完整的测试方案和 Pytest 测试代码",
agent=create_qa_agent()
)
def execute_qa_stage(srs_document: str) -> Dict[str, Any]:
"""
执行 QA 阶段任务
Args:
srs_document: 软件需求规格说明书
Returns:
Dict[str, Any]: 包含测试方案和执行结果
"""
qa_agent = create_qa_agent()
qa_task = create_qa_task(srs_document)
crew = Crew(
agents=[qa_agent],
tasks=[qa_task],
verbose=True
)
result = crew.kickoff()
return {
"stage": "测试用例设计",
"test_plan": result.raw,
"status": "completed"
}