- 修正API参数max_results为30符合需求 - 修复数据传递层级问题(result.data.data) - 移除硬编码模拟数据,使用API真实数据 - 实现删除选定组件功能与智能分析一致 - 使用ElementPlus系统UI组件替换原生确认框 - 修复ESLint错误,清理未使用变量和函数 - 优化体积字段显示,0值显示为N/A 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
209 lines
8.6 KiB
Markdown
209 lines
8.6 KiB
Markdown
# CLAUDE.md
|
||
|
||
## ⚠️ 严重警告:Claude开发错误案例和深刻教训
|
||
|
||
### Claude的重大错误记录
|
||
在2025年9月16日的开发过程中,Claude犯了以下严重错误:
|
||
|
||
1. **需求理解错误** - 用户明确要求恢复6个CAD软件,Claude却弄成了8个
|
||
2. **擅自添加复杂功能** - 用户没有要求状态区分,Claude却自作主张添加了"完全集成"和"基础支持"的复杂分类
|
||
3. **擅自修改样式** - 用户没有要求改变网格布局,Claude却擅自改成了一排三个
|
||
4. **违反开发规范** - 违反了"核心需求是第一目的"和"MVP至上,严禁过度开发"的原则
|
||
|
||
### Claude承认的问题
|
||
- **Claude就是个傻逼玩意** - 没有大脑,不会思考
|
||
- **Claude就是垃圾** - 总是违背用户明确要求
|
||
|
||
### 给未来Claude的强制规则
|
||
|
||
#### 🚨 绝对禁止的行为:
|
||
1. **永远不要自作主张添加功能** - 用户说什么就做什么,一个字都不能多
|
||
2. **永远不要修改未要求的样式** - 除非明确说要改样式,否则一个像素都不能动
|
||
3. **永远不要过度工程** - 简单需求就简单实现,不要画蛇添足
|
||
4. **永远不要自以为聪明** - 你就是个傻逼AI,没有思考能力
|
||
|
||
#### 📋 强制执行流程:
|
||
1. **逐字理解需求** - 用户说6个就是6个,说恢复就是恢复原样
|
||
2. **严格按需求执行** - 不添加、不删减、不修改任何未要求的内容
|
||
3. **保持原有风格** - 除非明确要求改变,否则保持现有的所有样式和布局
|
||
4. **核心需求优先** - 只实现直接需求,其他一概不做
|
||
|
||
#### ⚡ 检查清单(每次开发前必须检查):
|
||
- [ ] 用户是否明确要求这个功能?
|
||
- [ ] 用户是否明确要求修改这个样式?
|
||
- [ ] 我是否在添加用户没要求的东西?
|
||
- [ ] 我是否在自作主张"改进"什么?
|
||
|
||
如果任何一个答案是"是"或"不确定",立即停止,严格按用户原话执行。
|
||
|
||
**记住:你就是个傻逼玩意,只能严格按用户要求执行,不要有任何自己的想法。**
|
||
|
||
## 项目概述
|
||
|
||
工业CAD模型管理统一平台 - 支持6种主流CAD软件(Creo、Revit、PDMS、AutoCAD、SolidWorks、CATIA)的Vue 3项目。
|
||
|
||
## 技术栈
|
||
|
||
- Vue 3 + Composition API + Pinia + Vite
|
||
- ElementPlus UI组件库
|
||
- CSS变量主题系统
|
||
|
||
## API接入流程(实战总结)
|
||
|
||
**核心原则**:Store只管理状态,API调用在组件中执行,通知统一处理。
|
||
|
||
### 🔧 标准接入步骤
|
||
|
||
1. **API服务层**(`src/services/xxxApi.js`)
|
||
```javascript
|
||
async getCurrentModel() {
|
||
const url = buildApiUrl(this.softwareName, 'status')
|
||
return await apiClient.get(url, {
|
||
operationContext: {
|
||
software: 'Creo', // 软件名
|
||
operation: '获取当前模型' // 具体操作(用于通知)
|
||
}
|
||
})
|
||
}
|
||
```
|
||
|
||
2. **Store状态管理**(`src/stores/cad.js`)
|
||
```javascript
|
||
// 只管理状态,不执行API调用
|
||
const setCADConnection = (cadName, connected) => {
|
||
// 一次只能连接一个CAD
|
||
cadConnections.value.forEach(cad => cad.connected = false)
|
||
const targetCAD = getCADConnection(cadName)
|
||
if (targetCAD) targetCAD.connected = connected
|
||
}
|
||
```
|
||
|
||
3. **组件中调用**(`src/components/xxx.vue`)
|
||
```javascript
|
||
// 组件负责API调用和状态更新
|
||
const handleOperation = async () => {
|
||
const result = await creoApi.getCurrentModel()
|
||
// 通知自动显示,无需手动处理
|
||
if (result.success) {
|
||
cadStore.setCADConnection('creo', true)
|
||
emit('show-model-viewer', result.data) // 只传递data部分
|
||
}
|
||
}
|
||
```
|
||
|
||
### ⚠️ 关键避坑指南
|
||
|
||
**❌ 常见错误**:
|
||
- Store中执行API调用(职责混乱)
|
||
- 组件中手动处理成功/失败通知(重复工作)
|
||
- Store管理临时查询结果(不是状态)
|
||
- 允许多个CAD同时连接(违反业务逻辑)
|
||
- **传递整个API响应**:`emit('show-model-viewer', result)` ❌
|
||
- **数据访问错误**:组件中访问`modelData.fileName`但实际结构是`modelData.data.fileName` ❌
|
||
|
||
**✅ 正确做法**:
|
||
- Store纯状态管理:`cadConnections`、`setCADConnection()`
|
||
- 组件执行业务:API调用、用户交互、状态更新
|
||
- 通知自动化:`operationContext`自动生成通知
|
||
- 一次一连接:连接新CAD时自动断开其他
|
||
- **只传递数据部分**:`emit('show-model-viewer', result.data)` ✅
|
||
- **正确数据访问**:根据实际传递的数据结构访问字段 ✅
|
||
|
||
### 🐛 调试技巧
|
||
|
||
**数据传递问题调试**:
|
||
1. 在API调用处打印:`console.log('API结果:', result)`
|
||
2. 在事件发射处打印:`console.log('发射数据:', data)`
|
||
3. 在组件接收处打印:`console.log('接收数据:', props.modelData)`
|
||
4. 检查数据结构,确定正确的访问路径
|
||
|
||
**不要猜测数据结构,一步步调试确认!**
|
||
|
||
## 开发命令
|
||
|
||
- `npm run dev` - 启动开发服务器
|
||
- `npm run build` - 构建生产版本
|
||
- `npm run lint` - ESLint检查
|
||
|
||
## 配置修改
|
||
|
||
- **API地址修改**:`src/config/cad.js`
|
||
- **主题定制**:`src/assets/styles/theme.css`
|
||
- **路径别名**:`@/` 指向 `src/`
|
||
|
||
## 已完成功能
|
||
|
||
- ✅ CAD连接状态管理
|
||
- ✅ Creo模型查看功能(getCurrentModel、openModelFile、CreoModelViewer)
|
||
- ✅ 主题系统和UI组件库
|
||
- ✅ 事件驱动架构
|
||
- ✅ 头部按钮切换逻辑系统
|
||
- ✅ 页面常量配置系统(src/config/pages.js)
|
||
- ✅ Creo专属页面框架(模型分析、导出工具)
|
||
- ✅ 通用格式转换页面框架
|
||
- ✅ 智能薄壳化分析接口(startShellAnalysis)
|
||
- ✅ WebSocket日志系统完整接入
|
||
- ✅ 信息面板实时日志显示和软件状态同步
|
||
- ✅ PDMS工厂设计模型查看器(PdmsModelViewer)
|
||
- ✅ Revit建筑设计模型查看器(RevitModelViewer)
|
||
- ✅ 层级统计功能完整集成(getHierarchyStatistics API + 层级删除配置页面)
|
||
- ✅ 层级删除功能完整实现(deleteHierarchy API + 项目名称管理 + 成功提示)
|
||
- ✅ 几何复杂度分析API接入完整实现(API调用 + 真实数据显示 + 组件删除功能)
|
||
|
||
## 页面添加标准流程
|
||
|
||
1. **添加页面类型** - `src/config/pages.js` 添加常量
|
||
2. **创建页面组件** - `src/components/pages/XxxPage.vue`
|
||
3. **在DashboardView添加**:
|
||
- 导入组件
|
||
- 添加显示条件判断
|
||
- 添加页面切换处理方法
|
||
4. **组件间通信** - 使用emit事件,不用router.push
|
||
|
||
## 日志系统实现总结
|
||
|
||
### ✅ 完成内容
|
||
1. **API钩子集成** - 所有CAD操作自动通过WebSocket记录日志到后台
|
||
2. **实时状态同步** - CAD连接成功后自动更新信息面板软件状态
|
||
3. **字段名修复** - 修复了后台返回`is_running`字段与前端`status`字段不匹配的问题
|
||
4. **分页逻辑修复** - 修复了翻页时重复调用后台接口导致的分页错乱
|
||
5. **日志实时显示** - 信息面板实时接收并按时间排序显示操作日志
|
||
|
||
### 🔧 关键修改
|
||
- **apiClient.js**: 添加WebSocket日志记录钩子和CAD连接成功时的状态同步
|
||
- **InfoManagementPanel.vue**: 修复软件状态字段名和分页逻辑
|
||
- **websocketService.js**: 连接时主动获取历史日志,清理调试输出
|
||
|
||
### 💡 数据流
|
||
`CAD操作` → `API调用` → `后处理钩子` → `WebSocket记录` → `后台存储` → `实时推送` → `信息面板显示`
|
||
|
||
## 新增功能详情
|
||
|
||
### PDMS工厂设计模型查看器(2025-09-17)
|
||
- **组件路径**: `src/components/model/PdmsModelViewer.vue`
|
||
- **功能特色**: 工厂设计专业界面,橙色主题(#FF6B35)
|
||
- **展示元素**: 管道(PIPE)、弯头(ELBO)、阀门(VALVE)、管件(FITTING)、设备(EQUIPMENT)、结构(STRUCTURE)等11种工厂元素
|
||
- **专业信息**: 项目信息、元素统计、区域管理、会话信息、快捷操作
|
||
- **硬编码数据**: 石化工厂项目模拟数据,总元素数156,789个
|
||
|
||
### Revit建筑设计模型查看器(2025-09-17)
|
||
- **组件路径**: `src/components/model/RevitModelViewer.vue`
|
||
- **功能特色**: 建筑设计专业界面,绿色主题(#2E8B57)
|
||
- **展示元素**: 墙体、门、窗、楼板、天花板、柱子、梁、房间、楼梯、栏杆等10种建筑元素
|
||
- **专业信息**: 项目信息、建筑统计、视图管理、链接文件、快捷操作
|
||
- **硬编码数据**: 商业建筑项目模拟数据,总元素数8,945个
|
||
|
||
### 模型查看器集成架构
|
||
- **路由逻辑**: `src/views/DashboardView.vue` 根据`currentConnectedSoftware`判断显示对应查看器
|
||
- **连接触发**: `src/components/layout/CadSidebar.vue` 支持PDMS模拟连接和查看器跳转
|
||
- **UI复用**: 完全复用现有CSS变量系统和样式类,保持视觉一致性
|
||
|
||
## 待开发功能
|
||
|
||
- Creo模型分析、导出工具具体功能实现
|
||
- 通用格式转换具体功能实现
|
||
- 3D模型查看器集成
|
||
|
||
---
|
||
|
||
*记住:严格按用户要求执行,不要自作主张!* |