1. 场景价值与技术合理性修复: - 补充docs/SCENE_VALUE.md(业务背景、痛点分析、用户场景、竞品对比、价值量化) - 添加用户操作流程图(Mermaid) - 添加3个真实业务案例量化数据 2. 演示与文档修复: - 创建docs/API.md(完整API文档) - 创建docs/QUICKSTART.md(5分钟快速入门指南) 3. AI使用日志修复: - 更新AGENTS.md,添加强制自动执行的AI使用日志记录指令 - 在_AI_USAGE_LOG.md末尾添加范式执行统计 4. 安全性修复: - 在agents/llm.py中添加输入过滤(防Prompt注入) - 添加输出验证、速率限制、详细日志 5. 架构设计修复: - 创建tools/registry.py工具注册表 - 修改orchestrator.py和orchestrator_db.py使用注册表动态获取运行器 6. 开发范式修复: - 在_AI_USAGE_LOG.md末尾添加范式执行统计
78 lines
2.7 KiB
Python
78 lines
2.7 KiB
Python
# tests/test_integration.py
|
|
import os
|
|
import tempfile
|
|
from unittest.mock import patch, MagicMock
|
|
from agent import generate
|
|
|
|
FIXTURE_DIR = os.path.join(os.path.dirname(__file__), 'test_data')
|
|
|
|
|
|
@patch('agent.api_client.requests.post')
|
|
def test_full_pipeline_mock_api(mock_post):
|
|
"""完整流水线测试,API 调用使用 mock。"""
|
|
mock_response = MagicMock()
|
|
mock_response.json.return_value = {
|
|
'choices': [{'message': {'content': '''{
|
|
"groups": {
|
|
"g1": {
|
|
"program": "ZAN04MAT",
|
|
"records": [
|
|
{
|
|
"input": {
|
|
"R01INNFIL": {
|
|
"R01-APPL-ID": "A0000001",
|
|
"R01-EMP-ID": "00000101",
|
|
"R01-APPL-DATE": "20260101",
|
|
"R01-START-TIME": "0900",
|
|
"R01-END-TIME": "1800",
|
|
"R01-STATUS": "0",
|
|
"R01-OVT-TYPE": "W",
|
|
"R01-FILLER": "D000000000000000000000000000000000000000000001"
|
|
}
|
|
}
|
|
}
|
|
]
|
|
}
|
|
}
|
|
}'''}}]
|
|
}
|
|
mock_response.raise_for_status = MagicMock()
|
|
mock_post.return_value = mock_response
|
|
|
|
cpy_dir = FIXTURE_DIR
|
|
output_dir = tempfile.mkdtemp()
|
|
rules_dir = os.path.join(os.path.dirname(__file__), '..', 'rules')
|
|
|
|
design_md = os.path.join(FIXTURE_DIR, 'design_ZAN04MAT.md')
|
|
source_cbl = os.path.join(FIXTURE_DIR, '..', '..', '..',
|
|
'cobol-tna-system', 'src', 'ZAN04MAT.cbl')
|
|
|
|
# Fallback if real source not found
|
|
if not os.path.exists(source_cbl):
|
|
source_cbl = os.path.join(output_dir, 'dummy.cbl')
|
|
with open(source_cbl, 'w', encoding='utf-8') as f:
|
|
f.write("COPY ZAN01REC REPLACING ==(A)== BY ==R01==.\n")
|
|
|
|
try:
|
|
result = generate(
|
|
design_md=design_md,
|
|
source_cbl=source_cbl,
|
|
file_db_md='dummy.md',
|
|
cpy_dir=cpy_dir,
|
|
db_md='dummy_db.md',
|
|
output_dir=output_dir,
|
|
api_key='test-key',
|
|
rules_dir=rules_dir,
|
|
)
|
|
|
|
assert result['program_id'] == 'ZAN04MAT'
|
|
assert result['groups'] > 0
|
|
assert len(result['output_files']) > 0
|
|
|
|
for path in result['output_files'].values():
|
|
assert os.path.exists(path), f"输出文件不存在: {path}"
|
|
|
|
finally:
|
|
if source_cbl.endswith('dummy.cbl') and os.path.exists(source_cbl):
|
|
os.remove(source_cbl)
|