{ "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
**验证层**:单元测试 (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" }