# 主题重构总结 ## 已完成的工作 ### 1. globals.css 重构 ✅ #### 移除内容 - 移除了所有 `.dark .bg-gray-*` 非状态色定义 - 移除了所有 `.dark .text-gray-*` 非状态色定义 - 移除了所有 `.dark .border-gray-*` 非状态色定义 #### 保留内容 - ✅ 绿色状态(成功/激活):bg-green-50/100, text-green-600/700/800, border-green-200/300 - ✅ 红色状态(错误/危险):bg-red-50/100, text-red-500/600/700/800, border-red-200 - ✅ 黄色状态(警告):bg-yellow-50/100, text-yellow-500/600/700/800, border-yellow-200 - ✅ 橙色状态(警报):bg-orange-50/100, text-orange-600/700/800, border-orange-200 - ✅ 蓝色状态(信息):bg-blue-50/100/950\/30, text-blue-300/400/600/700/800/900, border-blue-200/900 - ✅ 紫色状态:bg-purple-50/100, text-purple-600/700/800/900, border-purple-200 - ✅ 粉色状态:bg-pink-50/100, text-pink-700/800 - ✅ 青色状态:bg-cyan-50, text-cyan-800 #### 组件样式更新 ```css /* field-value 组件 - 使用标准变量 */ .field-value { @apply mt-2 text-base text-foreground px-3 py-2 bg-muted rounded-md min-h-[2.5rem] flex items-center transition-colors; } ``` ### 2. 业务代码重构 #### 已修改文件 ##### /components/config/PersonalInfo.tsx ✅ ```tsx // 企业名称输入框 - 禁用状态背景 - className="bg-gray-50 dark:bg-gray-800" + className="bg-muted" // 部门输入框 - 禁用状态背景 - className="bg-gray-50 dark:bg-gray-800" + className="bg-muted" ``` ##### /components/Navigation.tsx ✅ ```tsx // 消息列表项悬停效果 - className="hover:bg-gray-50" + className="hover:bg-accent" ``` ## 需要继续修改的文件 ### 高优先级文件(核心功能) #### 1. AI 模块文件(16个文件,106+处修改点) 需要区分: - **状态色(保留)**:表示"离线"、"已忽略"、"禁用"、"建议"等状态的 `bg-gray-100 text-gray-700/800` - **信息框(修改)**:`bg-gray-50` → `bg-muted` - **悬停(修改)**:`hover:bg-gray-50` → `hover:bg-accent` - **代码块(可选)**:`code`标签的 `bg-gray-100` 可改为 `bg-muted` 关键文件: - `/components/ai/AIAlertManagement.tsx` - 19处 - `/components/ai/AIDataCenter.tsx` - 18处 - `/components/ai/AIDecisionGeneration.tsx` - 12处 - `/components/ai/AIAuditLog.tsx` - 11处 - `/components/ai/AIDecisionLog.tsx` - 9处 - `/components/ai/AIDecisionSimulation.tsx` - 8处 - `/components/ai/AIDecisionDetail.tsx` - 7处 - `/components/ai/AIDecisionSupport.tsx` - 7处 - `/components/ai/AIDeviceControl.tsx` - 6处 - 其他AI组件 #### 2. 资产管理模块 搜索并修改asset目录下的文件 #### 3. 地块管理模块 搜索并修改field目录下的文件 #### 4. 灌溉模块 搜索并修改irrigation目录下的文件 #### 5. 农机管理模块 搜索并修改machinery目录下的文件 #### 6. 农事操作模块 搜索并修改operation目录下的文件 #### 7. 配置管理模块 搜索并修改config目录下的文件 ### 修改模式示例 #### 模式1:信息展示框 ```tsx // 查找
// 替换为
``` #### 模式2:悬停效果 ```tsx // 查找 hover:bg-gray-50 hover:bg-gray-100 // 替换为(仅非状态色场景) hover:bg-accent ``` #### 模式3:代码块(可选修改) ```tsx // 查找 // 替换为 ``` #### 模式4:状态Badge(不修改) ```tsx // 保持不变 - 这些是状态色 bg-gray-100 text-gray-800 // 用于"离线"、"已忽略"等中性状态 bg-gray-100 text-gray-700 // 用于"禁用"、"建议"等状态 ``` ## 修改策略 ### 方案 A:手动逐文件修改(推荐) 优点: - 可以准确判断每个场景 - 避免误改状态色 - 保证代码质量 步骤: 1. 从核心功能文件开始(config, Navigation等) 2. 逐个模块处理(AI → 资产 → 地块 等) 3. 每个文件修改后测试主题切换效果 ### 方案 B:搜索替换 + 人工review 使用正则表达式批量替换,然后review: ```bash # 信息框背景(排除状态描述) 查找: className="([^"]*?)bg-gray-50([^"]*?)" 需人工判断是否为状态色 # 悬停效果 查找: hover:bg-gray-(50|100) 替换: hover:bg-accent # 代码块背景 查找: ]*bg-gray-100 替换: bg-muted ``` ## 验证清单 修改完成后需要验证: ### 功能验证 - [ ] 亮色主题显示正常 - [ ] 暗色主题显示正常 - [ ] 主题切换流畅无闪烁 - [ ] 所有状态色正确显示(绿/红/黄/橙/蓝等) ### 视觉验证 - [ ] 信息展示框背景适配主题 - [ ] 禁用输入框背景适配主题 - [ ] 悬停效果明显且美观 - [ ] 文本对比度符合可访问性要求 - [ ] 卡片层次感清晰 ### 模块验证 - [ ] 个人中心模块 - [ ] 水肥机管理 - [ ] 智慧灌溉 - [ ] AI决策系统 - [ ] 资产管理 - [ ] 地块管理 - [ ] 农机管理 - [ ] 农事操作 ## 注意事项 ### 1. 保留状态色 以下className包含状态语义,**不要修改**: ```tsx // 表示"离线"状态 getStatusColor(status) { case '离线': return 'bg-gray-100 text-gray-700'; } // 表示"已忽略"状态 status === '已忽略' ? 'bg-gray-100 text-gray-800' : ... // 表示"禁用"状态 status === '禁用' ? 'bg-gray-100 text-gray-700' : ... // 表示"建议"级别 level === '建议' ? 'bg-gray-100 text-gray-700' : ... ``` ### 2. 代码块可选修改 `` 标签的 `bg-gray-100` 可以改为 `bg-muted`,但不是必需的。 ### 3. 测试充分性 每个模块修改后都应该: 1. 在亮色模式下检查 2. 在暗色模式下检查 3. 切换主题看是否流畅 ### 4. 渐进式修改 建议按模块逐步修改,而不是一次性修改所有文件,这样便于定位问题。 ## 预期效果 重构完成后: 1. ✅ 所有背景、文本、边框色都使用shadcn主题变量 2. ✅ 主题切换时所有元素都能正确适配 3. ✅ 状态色在两种主题下都清晰可辨 4. ✅ 保持绿色农业主题的视觉风格 5. ✅ 代码更简洁,维护性更好 ## 下一步行动 1. 根据修改优先级列表,逐个处理各模块文件 2. 每修改完一个模块,提交一次代码 3. 全部完成后进行全面测试 4. 更新系统文档 ## 相关文档 - `/THEME_REFACTOR_GUIDE.md` - 详细的修改指南和示例 - `/styles/globals.css` - 主题变量定义 - `/components/ThemeProvider.tsx` - 主题管理组件