user/generation.json

30 lines
7.1 KiB
JSON
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.

{
"projectId": 97,
"generationId": "codegen_fa54ba0e8c734a7683962ff923b15d4b",
"language": "C++",
"status": "completed",
"fileIds": [
1305
],
"outputDir": "/app/agents/ai_agents/project-files/codegen-runs/codegen_fa54ba0e8c734a7683962ff923b15d4b",
"relativeOutputDir": "codegen-runs/codegen_fa54ba0e8c734a7683962ff923b15d4b",
"generatedFiles": [
"CMakeLists.txt",
"README.md",
"events.ndjson",
"include/app.hpp",
"src/app.cpp",
"src/main.cpp",
"tests/basic_test.cpp"
],
"analysisSummary": "好的,作为需求分析助手,我已根据您提供的《软件设计说明书》文档,为您提炼出代码工程生成所需的结构化信息。\n\n---\n\n### 业务目标\n\n构建一个通用的数据处理与交互平台测试系统。其核心用途是接收来自外部数据源的数据并按照预设规则进行格式解析、校验最后将处理后的数据持久化存储到数据库中。系统需具备模块化、可配置和标准化接口的特性。\n\n### 功能清单\n\n1. **数据接收功能**\n * 作为TCP服务端监听指定端口8888。\n * 接收来自外部数据源的连接请求。\n * 接收网络数据,并根据约定的协议(消息头+消息体)进行拆包,解决粘包问题。\n * 将解析后的原始数据字符串传递给数据处理模块。\n * 记录网络异常或数据格式错误日志。\n\n2. **数据处理功能**\n * 从内部队列中获取数据接收模块传递的原始数据。\n * 对数据进行解析、校验(例如完整性校验)和格式转换。\n * 将校验通过后的数据传递给数据存储模块。\n * 将校验失败的数据丢弃,并记录错误日志。\n\n3. **数据存储功能**\n * 将处理后的数据持久化写入MySQL数据库的 `t_received_data` 表中。\n * 处理数据库写入失败等异常,并记录日志。\n\n### 数据结构\n\n**1. 核心业务数据表 (MySQL)**\n\n* **表名**: `t_received_data`\n* **用途**: 存储所有接收并处理后的原始数据。\n\n| 字段名称 | 字段代码 | 数据类型 | 约束 | 说明 |\n| :--- | :--- | :--- | :--- | :--- |\n| 主键ID | id | BIGINT | PRIMARY KEY, AUTO_INCREMENT | 自增主键 |\n| 接收数据 | data_content | VARCHAR(1024) | NOT NULL | 接收到的原始数据内容 |\n| 接收时间 | receive_time | DATETIME | NOT NULL | 数据接收的系统时间 |\n| 数据来源 | source | VARCHAR(64) | NOT NULL | 标识数据来源的字段 |\n\n**2. 内存数据对象**\n\n* **原始数据包**: 包含消息头4字节长度和消息体UTF-8编码的字符串最大1024字符。\n* **内部传递数据**: 解析后的 `String` 类型的原始数据字符串用于CSU-01与CSU-02之间传递。\n* **内部传递数据**: 处理后的 `String` 类型的处理结果字符串用于CSU-02与CSU-03之间传递。\n\n### 接口或命令\n\n**1. 外部接口**\n\n* **接口标识**: IF-001\n* **接口用途**: 外部数据源向测试软件单向传输实时数据。\n* **通信协议**: TCP/IP (应用层自定义协议)\n * **传输方式**: 千兆以太网。\n * **消息格式**: 自定义格式由“消息头4字节长度字段” + “消息体UTF-8编码字符串”组成。\n * **连接方式**: 测试软件作为服务端,外部数据源作为客户端发起连接。\n* **数据流**: 单向,从外部数据源到测试软件。\n* **目标地址**: IP: 192.168.1.100, Port: 8888\n* **性能要求**: 优先级高频率每秒最多100次数据包。\n\n**2. 内部接口**\n\n* **CSU-01 -> CSU-02 接口**\n * **接口标识**: `IF_CSU01_02` (内部)\n * **接口名称**: `pushDataToCSU02`\n * **用途**: 将CSU-01解析后的原始数据字符串传递给CSU-02。\n* **CSU-02 -> CSU-03 接口**\n * **接口标识**: (文档中未明确命名)\n * **接口名称**: (文档中未明确命名, 推测为 `processedDataToCSU03`)\n * **用途**: 将CSU-02处理后的数据传递给CSU-03进行持久化。\n\n### 约束\n\n1. **协议约束**: 数据接收模块CSU-01必须遵循约定的 `IF-001_PRT_001` 协议TCP/IP应用层协议含消息头长度校验。\n2. **运行环境约束**: 系统必须运行在Linux操作系统、x86硬件平台上。\n3. **开发语言约束**: 软件整体使用Java语言开发支持跨平台编译与运行。\n4. **资源约束**: 硬件要求为4核CPU、8GB内存、100GB SSD硬盘、千兆以太网卡。\n5. **数据安全约束**: 必须对来自外部数据源的数据进行格式和内容验证,防止注入攻击。\n6. **性能约束**: 系统需支持每秒最多100次数据包的接收与处理优先级要求为高。\n7. **架构约束**: 必须采用分层、模块化的架构(管道流式处理模式),各组件间通过内存队列解耦。\n\n### 测试建议\n\n1. **单元测试**:\n * 为CSU-01设计桩模块模拟外部数据源发送符合/不符合协议的数据,验证拆包、异常日志等功能。\n * 为CSU-02设计桩模块模拟提供正常和格式错误的数据验证其解析、校验和错误处理逻辑。\n * 为CSU-03设计桩模块模拟数据库写入成功/失败的情况,验证其数据入库和异常处理逻辑。\n\n2. **集成测试**:\n * 测试CSU-01到CSU-02的协同工作验证数据能否正确通过内部队列传递。\n * 测试CSU-02到CSU-03的协同工作验证处理后的数据能否正确持久化。\n * 使用JMeter或LoadRunner等性能测试工具进行端到端的数据接收、处理、存储全链路测试。模拟高并发场景如每秒100次以上验证系统的数据接收吞吐量、处理延迟和系统资源占用率是否符合性能要求。\n\n3. **系统测试**:\n * 验证各种异常场景,如网络中断、数据格式错误、数据库连接失败等,系统是否能正确处理并记录日志,以及是否能恢复正常处理。\n * 验证系统在不同压力下的稳定性是否存在内存泄漏或CPU过载问题。\n\n---\n\n### 需求可追踪性明细\n\n| 需求标识 | 需求名称 | 需求描述 (文档原文) | 来源文档 | 建议实现/验证层 |\n| :--- | :--- | :--- | :--- | :--- |\n| `SRS-测试_F-001` | 数据接收功能 | 文档中所有关于接收外部数据、处理数据、存储数据的核心能力描述均归结于此。具体包括作为TCP服务端监听端口接收数据解析协议处理数据存储到数据库。 | 《测试系统软件需求规格说明》 (SRS-测试_V1.0) | **实现层**CSU-01, CSU-02, CSU-03 <br>**验证层**:单元测试 (CSU-01, CSU-02, CSU-03), 集成测试 |",
"eventLogFile": "/app/agents/ai_agents/project-files/codegen-runs/codegen_fa54ba0e8c734a7683962ff923b15d4b/events.ndjson",
"repoSettings": {
"username": "root",
"password": "pAssW0rd",
"repoUrl": "http://47.108.255.216:3000/root/user.git",
"branch": "main"
},
"repoUrl": "http://47.108.255.216:3000/root/user.git",
"branch": "main"
}