# 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模型查看器集成

---

*记住：严格按用户要求执行，不要自作主张！*