32 lines
10 KiB
JSON
32 lines
10 KiB
JSON
{
|
||
"projectId": 40,
|
||
"generationId": "codegen_d83282644a2a4b4b91e025e76d296e18",
|
||
"language": "python",
|
||
"status": "completed",
|
||
"fileIds": [
|
||
468
|
||
],
|
||
"outputDir": "D:\\workspace\\agent\\DocumentGenerateAgent\\agents\\ai_agents\\project-files\\codegen-runs\\codegen_d83282644a2a4b4b91e025e76d296e18",
|
||
"relativeOutputDir": "codegen-runs/codegen_d83282644a2a4b4b91e025e76d296e18",
|
||
"generatedFiles": [
|
||
"README.md",
|
||
"app/__init__.py",
|
||
"app/data_structures.py",
|
||
"app/main.py",
|
||
"app/services.py",
|
||
"events.ndjson",
|
||
"requirements.txt",
|
||
"tests/__init__.py",
|
||
"tests/test_basic.py"
|
||
],
|
||
"analysisSummary": "### **业务目标** \n开发一款高安全性、高可靠性的传感器测试设备软件,作为传感器测试系统的核心控制单元,实现从测试任务配置、自动化执行、实时监控、质量判定到加密报告生成的全流程闭环管理。软件需满足军工级安全与可靠性要求,支持在物理隔离环境下运行,确保测试数据不落地、操作行为可追溯、系统具备抗干扰和自恢复能力。\n\n---\n\n### **功能清单** \n\n1. **用户权限与双因子认证**\n - 支持操作员、工艺员、管理员三级权限。\n - 集成Windows域账号 + TOTP动态口令进行登录认证。\n - 密码错误超限(5次)自动锁定账户,管理员可解锁。\n\n2. **安全与网络隔离控制**\n - 启动时强制禁用无线网络(Wi-Fi/蓝牙)。\n - USB接口仅允许持有认证数字证书的U盘访问,用于报告导出。\n - 所有操作日志与测试数据仅驻留内存,断电后自动清空。\n\n3. **传感器型号配置管理**\n - 工艺员可在内存中增删改传感器型号参数(量程、测试点数、循环次数、允差范围)。\n - 配置数据不持久化,退出程序时自动覆写清零。\n\n4. **条码识别与模板匹配**\n - 通过USB HID或串口扫码枪读取传感器唯一条码。\n - 在内存配置表中查找对应测试计划,加载参数模板。\n - 支持手动输入条码备选。\n\n5. **自动化测试序列执行**\n - 按预设压力点自动控制压力控制器加压。\n - 在正反行程中同步触发DAQ卡采集传感器输出数据。\n - 支持暂停、继续、单点跳步等人工干预。\n\n6. **实时数据监控与绘图**\n - 实时绘制压力-输出关系曲线,刷新率≥10fps。\n - 显示当前数值、报警状态灯(PASS/FAIL)、测试进度百分比。\n - 报警响应时间≤100ms。\n\n7. **特征参数计算与判定**\n - 基于最小二乘法计算非线性、迟滞、重复性误差。\n - 与配置阈值对比,输出PASS/FAIL结果。\n - 计算耗时≤0.5秒。\n\n8. **加密报告生成与导出**\n - 一键生成PDF/A格式归档报告和CSV原始数据文件。\n - 嵌入SM3哈希值与数字水印,确保完整性与防篡改。\n - 报告包含测试结论、数据表、曲线图、操作员签名。\n - 生成时间≤3秒。\n\n9. **仪器异常处理与自恢复**\n - 检测到通讯中断后进入“离线”状态,每10秒尝试重连。\n - 重连成功后自动恢复测试进度(基于内存中的断点指针)。\n - 不支持断电后数据恢复。\n\n---\n\n### **数据结构** \n\n1. **用户信息对象**\n ```python\n {\n \"user_id\": str,\n \"role\": enum(\"operator\", \"technician\", \"admin\"),\n \"domain_account\": str,\n \"failed_attempts\": int,\n \"is_locked\": bool,\n \"session_token\": str (optional)\n }\n ```\n\n2. **传感器型号配置项(内存哈希表)**\n ```python\n {\n \"model_id\": str,\n \"range_min\": float, # MPa\n \"range_max\": float, # MPa\n \"test_points\": int, # 测试点数\n \"cycles\": int, # 循环次数\n \"tolerance\": float # 允差范围 (%FS)\n }\n ```\n\n3. **测试上下文对象**\n ```python\n {\n \"current_model\": str,\n \"pressure_sequence\": list[float], # 目标压力序列\n \"current_cycle\": int,\n \"current_point_index\": int,\n \"acquisition_buffer\": ring_buffer[{\n \"pressure\": float,\n \"output\": float,\n \"timestamp\": float\n }],\n \"status_flags\": {\n \"is_running\": bool,\n \"is_paused\": bool,\n \"alarm_active\": bool\n }\n }\n ```\n\n4. **判定结果对象**\n ```python\n {\n \"non_linearity\": float, # %\n \"hysteresis\": float, # %\n \"repeatability\": float, # %\n \"thresholds\": dict, # {key: value}\n \"result\": enum(\"PASS\", \"FAIL\"),\n \"details\": str # 超标说明\n }\n ```\n\n5. **报告内容对象**\n ```python\n {\n \"test_id\": str,\n \"start_time\": datetime,\n \"end_time\": datetime,\n \"operator_id\": str,\n \"model_id\": str,\n \"result_summary\": dict,\n \"raw_data_table\": list[list],\n \"chart_image\": bytes,\n \"sm3_hash\": str,\n \"digital_watermark\": str\n }\n ```\n\n6. **系统状态字典**\n ```python\n {\n \"system_mode\": enum(\"normal\", \"maintenance\", \"na\"),\n \"instrument_status\": {\"pressure_ctrl\": bool, \"daq\": bool},\n \"network_enabled\": bool,\n \"usb_whitelist_active\": bool\n }\n ```\n\n---\n\n### **接口或命令** \n\n#### **硬件接口**\n\n| 接口类型 | 方向 | 名称/标识符 | 描述 |\n|--------|------|------------|------|\n| RS232/485 | 输出 | `SRS-SENSOR_I_RS232_PressCmd` | 发送目标压力值(浮点数,MPa),格式:[cmd:1B][value:8B][crc:1B] |\n| RS232/485 | 输入 | `SRS-SENSOR_I_RS232_PressFeed` | 接收实时压力反馈值(双精度浮点) |\n| PXI/GPIB | 输出 | `SRS-SENSOR_I_PXIAcqTrigger` | 触发DAQ卡采集信号 |\n| USB HID | 输入 | `SRS-SENSOR_I_USB_Barcode` | 接收扫码枪输入的字符串(去除前后缀) |\n\n#### **内部模块通信机制**\n\n- 模块间通过函数调用、共享内存对象(Python对象引用)、消息队列传递数据。\n- 图形界面使用PyQt5信号槽机制接收数据更新事件。\n- 安全模块提供API:\n - `verify_totp(token: str) -> bool`\n - `check_usb_certificate(cert: bytes) -> bool`\n - `wipe_memory_region(addr, size)`\n\n#### **关键命令流**\n\n1. **登录流程**\n ```\n [UI] → 输入用户名/密码/TOTP → [认证模块]\n → 验证TOTP → 调用Windows域验证静态密码 → 创建会话令牌 or 锁定账户\n ```\n\n2. **测试启动流程**\n ```\n 扫码 → 提取条码 → 内存匹配型号 → 加载参数 → 初始化控制器 → 开始循环加压 → 数据采集 → 实时绘图\n ```\n\n3. **报告生成流程**\n ```\n 用户点击“生成报告” → 聚合数据 → 渲染PDF/A → SM3哈希嵌入元数据 → 生成CSV → 写入内存映射区 → U盘导出确认\n ```\n\n4. **异常恢复流程**\n ```\n 通讯中断 → 暂停测试 → 进入N/A状态 → 每10秒尝试重连 → 成功则恢复进度指针 → 继续测试\n ```\n\n---\n\n### **约束** \n\n1. **技术栈约束**\n - 必须使用 Python 3.10+ 与 PyQt5/PySide6 开发。\n - GUI框架必须支持麒麟V10与Windows平台。\n\n2. **数据存储约束**\n - 所有业务数据禁止写入磁盘,仅使用Python内存对象存储。\n - 程序退出前必须对敏感内存区域执行覆写清零操作。\n\n3. **网络安全约束**\n - 彻底禁用无线网络功能(驱动层强制关闭)。\n - USB仅允许认证U盘导出报告,其他设备一律拦截。\n\n4. **算法与标准约束**\n - 动态口令符合 RFC 6238(TOTP)标准。\n - 报告哈希使用国密SM3算法,PDF/A生成离线完成。\n - 最小二乘拟合算法需考虑浮点精度问题。\n\n5. **运行环境约束**\n - 支持龙芯3A5000或x86架构工控机。\n - 操作系统为麒麟V10 SP3 或 Windows 10/11加固版。\n - 工作温度:-20℃ ~ +55℃,支持振动环境(GJB 150.16A)。\n\n6. **开发过程约束**\n - 遵循 GJB 5000B 二级及以上标准。\n - 设计文档需符合 GJB 438C 要求。\n\n---\n\n### **测试建议** \n\n1. **功能测试**\n - 验证三级用户登录及权限控制逻辑。\n - 模拟扫码枪输入不同条码,验证模板匹配成功率与响应速度。\n - 执行完整测试流程,验证暂停/继续/跳步功能是否准确。\n - 检查报告生成内容完整性、SM3哈希一致性、数字水印有效性。\n\n2. **性能测试**\n - 测量按钮点击响应时间(≤0.5s)、启动时间(≤15s)、报告生成时间(≤3s)。\n - 压力测试:连续72小时运行自动化测试,监测内存增长(≤5%/h)、无崩溃。\n - 刷新率测试:在高采样率下验证界面帧率是否稳定 ≥10fps。\n\n3. **安全性测试**\n - 使用网络抓包工具验证无线网卡是否被禁用。\n - 使用USB仿真器模拟非法设备插入,验证是否被拦截。\n - 断电后检查内存残留数据(应无敏感信息)。\n - 使用密码学分析仪验证SM3哈希嵌入正确性。\n\n4. **可靠性测试**\n - 模拟仪器通讯中断,验证每10秒自动重连机制及恢复能力。\n - 注入非法参数输入,验证系统容错与默认值回退机制。\n - 多轮次压力循环测试,验证数据采集完整性与判定准确性。\n\n5. **兼容性测试**\n - 在麒麟V10与Windows平台上分别部署,验证功能一致性。\n - 使用不同品牌扫码枪(HID/串口模式)测试条码识别兼容性。\n - 连接多种型号压力控制器与DAQ卡,验证驱动适配能力。\n\n6. **合格性验证方法**\n - 对关键需求(如SRS-SENSOR_F-001、F-006、NFR-003)采用“测试+分析”(T/A)方式。\n - 架构与技术栈约束采用文档审查与代码审计(A)方式。\n - 特殊需求(如SM3加密)需专用工具验证(E类方法)。",
|
||
"eventLogFile": "D:\\workspace\\agent\\DocumentGenerateAgent\\agents\\ai_agents\\project-files\\codegen-runs\\codegen_d83282644a2a4b4b91e025e76d296e18\\events.ndjson",
|
||
"repoSettings": {
|
||
"username": "root",
|
||
"password": "pAssW0rd",
|
||
"repoUrl": "http://47.108.255.216:3000/root/CGQ_TEST_DEVICE.git",
|
||
"branch": "main"
|
||
},
|
||
"repoUrl": "http://47.108.255.216:3000/root/CGQ_TEST_DEVICE.git",
|
||
"branch": "main"
|
||
} |