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

8.6 KiB
Raw Permalink Blame History

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
async getCurrentModel() {
  const url = buildApiUrl(this.softwareName, 'status')
  return await apiClient.get(url, {
    operationContext: {
      software: 'Creo',           // 软件名
      operation: '获取当前模型'    // 具体操作(用于通知)
    }
  })
}
  1. Store状态管理src/stores/cad.js
// 只管理状态不执行API调用
const setCADConnection = (cadName, connected) => {
  // 一次只能连接一个CAD
  cadConnections.value.forEach(cad => cad.connected = false)
  const targetCAD = getCADConnection(cadName)
  if (targetCAD) targetCAD.connected = connected
}
  1. 组件中调用src/components/xxx.vue
// 组件负责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纯状态管理cadConnectionssetCADConnection()
  • 组件执行业务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模型查看器集成

记住:严格按用户要求执行,不要自作主张!