# CLAUDE.md This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository. ## 项目概述 这是一个专为AVEVA PDMS 12.1 SP4设计的远程控制插件项目,目标是实现单前端客户端对单个PDMS会话的远程操控功能。 ## 技术约束 - **目标框架**: .NET Framework 3.5 (由于PDMS 12.1 SP4的兼容性要求) - **平台架构**: x86 (32位) - PDMS不支持64位DLL加载 - **编译配置**: Debug/Release 均为AnyCPU,但需注意实际运行环境限制 ## 项目架构 ### 核心组件设计 根据README.md中的技术方案,系统采用以下架构: - **HttpListener服务器**: 基于System.Net.HttpListener的自托管HTTP服务 - **线程安全队列**: SafeQueue实现HTTP线程到PDMS主线程的命令传递 - **命令模式**: ICommand接口抽象化PDMS API调用 - **插件接口**: IAddin实现PDMS插件规范 ### 通信模型 ``` 前端 → HTTP请求 → HttpListener → SafeQueue → PDMS主线程 → PDMS API ``` ## 开发命令 ### 构建项目 ```bash # 使用MSBuild构建解决方案 msbuild TellmePdmsPluging.sln /p:Configuration=Debug /p:Platform="Any CPU" # 或使用Visual Studio命令行工具 devenv TellmePdmsPluging.sln /Build Debug ``` ### 发布版本 ```bash msbuild TellmePdmsPluging.sln /p:Configuration=Release /p:Platform="Any CPU" ``` ## 关键实现要点 ### 线程安全要求 - **绝对禁止**在HttpListener线程中直接调用PDMS API - 所有PDMS API调用必须在主线程执行 - 使用SafeQueue进行线程间通信 ### 内存管理 - 由于.NET 3.5的内存限制,需要考虑Large Address Aware (LAA)配置 - 大数据操作时需要实现分页和流式传输 - 定期执行GC.Collect()以释放内存 ### API设计原则 根据技术方案,主要API端点包括: - `/health` - 健康检查 - `/api/status/model` - 获取PDMS模型状态信息 - `/command` - 即时命令执行 - `/task` - 长任务管理 - `/stats` - 统计数据获取 - `/export/ifc` - 模型导出 ### 已实现的功能 - **模型状态查询API** (`/api/status/model`): - 使用真实的PDMS API获取项目信息、会话状态和模型统计 - 通过MDB.CurrentMDB、Project.CurrentProject等真实API获取数据 - 移除硬编码数据,确保返回真实的PDMS状态 ## 部署要求 ### PDMS集成 - 编译输出的DLL需要复制到PDMS安装目录 - 需要修改`DesignAddin.xml`配置文件注册插件 - 确保使用x86架构编译以兼容PDMS要求 ### 网络配置 - HTTP服务默认监听localhost:9001端口 - 仅允许本地连接,外网访问需通过反向代理 ## 性能优化指导 ### 大模型处理 - 使用分区查询减少内存占用 - 实现数据流式传输避免内存峰值 - 支持后台任务执行和进度查询 ### 资源释放 - 及时释放PDMS对象引用 - 监控内存使用情况,超过阈值时发出重启警告 ## 开发注意事项 - 严格遵循.NET 3.5 API限制,避免使用高版本特性 - 所有异步操作使用.NET 3.5兼容的方式实现 - 优先使用BCL内置组件,减少第三方依赖 - 遵循PDMS插件开发规范和线程安全要求 ## 项目工作流程 - 所有的编译和测试由用户来执行 ## 开发准则 - 项目不允许硬编码和模拟数据