adjust prompt and feishu message style

This commit is contained in:
2026-03-06 15:47:35 +08:00
parent d63aa74721
commit 40f0d7078b
2 changed files with 194 additions and 238 deletions

View File

@@ -7,7 +7,7 @@ from app.config import get_settings
import json
from openai import OpenAI
from app.message import send_requirement_result, send_test_cases, send_message_to_feishu, send_generate_code
from app.message import send_requirement_result, send_test_cases, send_message_to_feishu, send_generate_code, send_workflow_start
from app.models import RequirementAnalysis, TestCaseResult, CodeGenerationResult
# 初始化日志
@@ -58,10 +58,12 @@ class PMAgent:
response = self.client.chat.completions.create(
model=self.settings.model,
messages=[
{"role": "system", "content": "你是一个资深的产品经理,擅长需求分析和拆解,输出必须是严格的 JSON 格式。"},
{"role": "user", "content": prompt}
],
temperature=0.7,
max_tokens=2000
temperature=0.2,
max_tokens=2000,
response_format={"type": "json_object"}
)
# 提取响应内容
@@ -117,7 +119,7 @@ class QAAgent:
{requirement_analysis["summary"]}
"""
prompt = f"""你是一个资深的QA工程师。根据以下需求信息生成全面的测试用例和测试策略。
prompt = f"""你是一个资深的Java QA工程师。根据以下需求信息生成全面的Java测试用例和测试策略。所有测试用例必须基于Java语言步骤和预期结果要符合Java的类型系统、异常机制和JUnit测试框架。
{requirement_text}
@@ -130,7 +132,7 @@ class QAAgent:
"precondition": "前置条件",
"steps": ["步骤1", "步骤2", ...],
"expected_result": "预期结果",
"test_type": "功能测试|性能测试|安全测试"
"test_type": "必须从以下值中选择一个:功能测试性能测试安全测试"
}},
...
],
@@ -143,17 +145,21 @@ class QAAgent:
2. 为每个边缘情况生成1个测试用例
3. 生成至少1个性能测试用例
4. 生成至少1个安全测试用例
5. 测试用例要包含明确的步骤和预期结果
5. 测试用例要包含明确的步骤和预期结果步骤和预期结果必须符合Java语言特性不要出现Python或其他语言的描述
6. 步骤和预期结果必须用自然语言描述,不得包含任何代码片段或代码块,不要出现 ```、assert、assertEquals 等代码语法
7. 测试策略不要出现JUnit或者Java这种字眼应该是针对需求的测试方法论和思路描述覆盖计划要说明如何确保测试覆盖所有功能和边界情况
返回ONLY JSON内容不要有其他文字。"""
response = self.client.chat.completions.create(
model=self.settings.model,
messages=[
{"role": "system", "content": "你是一个资深的 Java QA 工程师,擅长为 Java 应用程序设计测试用例,所有测试步骤和预期结果必须基于 Java 语言特性(如 JUnit、强类型系统、异常机制等输出必须是严格的 JSON 格式。"},
{"role": "user", "content": prompt}
],
temperature=0.7,
max_tokens=3000
temperature=0.2,
max_tokens=3000,
response_format={"type": "json_object"}
)
content = response.choices[0].message.content
@@ -208,10 +214,17 @@ class DevAgent:
{requirement_analysis["summary"]}
"""
test_cases_text = chr(10).join(
f"- [{c['test_id']}] {c['test_name']}(类型:{c.get('test_type', '未分类')})|预期结果:{c['expected_result']}"
for c in test_cases["test_cases"]
)
test_summary = f"""
测试用例数量: {len(test_cases["test_cases"])}
测试策略: {test_cases["test_strategy"]}
覆盖计划: {test_cases["coverage_plan"]}
关键测试用例列表:
{test_cases_text}
"""
prompt = f"""你是一个资深的Java开发工程师。根据以下需求和测试用例生成高质量的Java实现代码和单元测试代码。
@@ -225,13 +238,13 @@ class DevAgent:
"java_code": "完整的Java实现代码包含主类和必要的辅助类",
"unit_tests": "使用JUnit的单元测试代码",
"implementation_notes": "实现说明和注意事项",
"unit_tests_count": "生成的单元测试数量",
"passed_tests_count": "通过的单元测试数量"
"unit_tests_count": "生成的单元测试数量(整数)",
"passed_tests_count": "基于代码逻辑分析,预期可通过的单元测试数量(整数)"
}}
Java代码要求
1. 遵循Java编码规范和最佳实践
2. 包含详细的代码注释
2. 包含详细的代码注释,所有多行注释必须以 /* 开头、以 */ 结尾Javadoc注释以 /** 开头、以 */ 结尾,绝对不能用单独的 / 作为注释结尾
3. 包含异常处理
4. 支持所有的功能需求
5. 考虑非功能需求(性能、安全等)
@@ -243,17 +256,17 @@ Java代码要求
4. 使用有意义的测试方法名称
5. 测试代码要清晰易读
通过的单元测试数量一定要是你真实运行了单元测试之后得到的真实数字,不能伪造
返回ONLY JSON内容不要有其他文字。"""
response = self.client.chat.completions.create(
model=self.settings.model,
messages=[
{"role": "system", "content": "你是一个资深的 Java 开发工程师,擅长编写高质量代码和单元测试,输出必须是严格的 JSON 格式。"},
{"role": "user", "content": prompt}
],
temperature=0.7,
max_tokens=8192
temperature=0.2,
max_tokens=8192,
response_format={"type": "json_object"}
)
content = response.choices[0].message.content
@@ -282,7 +295,7 @@ async def orchestrate_agents(simple_requirement: str) -> dict:
包含所有Agent结果的完整字典
"""
send_message_to_feishu(f"收到新需求: {simple_requirement}")
send_workflow_start(simple_requirement)
# Step 1: PM Agent 分析需求
pm_agent = PMAgent()
requirement_analysis = pm_agent.analyze_requirement(simple_requirement)