MianyVue/CLAUDE.md
sladro b2da2281f2 feat: 实现几何复杂度分析完整功能
- 修正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>
2025-09-18 11:43:31 +08:00

209 lines
8.6 KiB
Markdown
Raw 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.

# 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模型查看器集成
---
*记住:严格按用户要求执行,不要自作主张!*