# 主题重构总结 ## 已完成的工作 ### 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 // 查找
// 替换为
```
#### 模式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` - 主题管理组件