# Finyx AI 前端开发 Cursor Rules
## 项目概述
这是一个基于 Vue 3 + TypeScript + Tailwind CSS 的企业级数据资产管理平台前端项目。项目需要与旧系统(Vue 3 + Element Plus + SCSS)融合,保持设计风格一致性。
## 技术栈约束
### 必须使用
- Vue 3.4.0+ (Composition API)
- TypeScript 5.2.2+
- Tailwind CSS 3.3.6+
- Pinia 2.1.0+ (状态管理)
- Vue Router 4.2.0+ (路由)
- Lucide Vue Next 0.344.0+ (图标)
### 禁止使用
- ❌ React 及其相关库
- ❌ Element Plus (新功能中)
- ❌ SCSS/SASS (统一使用 Tailwind CSS)
- ❌ 内联样式 (除非动态样式)
- ❌ `any` 类型 (除非特殊情况)
- ❌ `@ts-ignore` (除非有充分理由)
## 色彩系统规范
### 必须使用 Tailwind 配置的颜色类
所有颜色必须使用 `tailwind.config.js` 中定义的颜色变量:
```typescript
// ✅ 正确
按钮
内容
边框
// ❌ 错误 - 禁止硬编码颜色
按钮
按钮
```
### 颜色变量映射
- `app-primary`: #3067EF (主色)
- `app-bg`: #F4F8FF (背景色)
- `app-text`: #1f2329 (主文本)
- `app-text-secondary`: #646a73 (次文本)
- `app-text-disable`: #bbbfc4 (禁用文本)
- `app-border`: #dee0e3 (边框)
- `app-white`: #ffffff (白色)
- `app-sidebar-bg`: #ffffff (侧边栏背景)
- `app-hover`: rgba(48, 103, 239, 0.06) (悬停背景)
- `app-active`: #ECF2FF (激活背景)
## 组件开发规范
### Vue 组件结构
```vue
```
### TypeScript 类型规范
- 所有 Props 必须定义 interface
- 所有响应式数据必须指定类型
- 禁止使用 `any`,使用 `unknown` 或具体类型
- 使用 `type` 定义联合类型,`interface` 定义对象类型
```typescript
// ✅ 正确
interface Project {
id: string
name: string
progress: number
}
type Step = 'setup' | 'inventory' | 'context' | 'value' | 'delivery'
const count = ref(0)
const projects = ref([])
// ❌ 错误
const count = ref(0) // 缺少类型
const data: any = {} // 使用 any
```
## 样式规范
### Tailwind CSS 使用
- 优先使用 Tailwind 工具类
- 使用配置的颜色变量(app-*)
- 响应式设计使用 Tailwind 断点(sm, md, lg, xl)
- 避免自定义 CSS,除非绝对必要
```vue
内容
```
### 字体和间距
- 基础字号: 14px (`text-base`)
- 基础间距单位: 8px
- 页面内边距: 24px (`p-6`)
- 卡片内边距: 16px (`p-4`) 或 24px (`p-6`)
## 文件命名规范
### 组件文件
- Vue 组件: PascalCase,如 `SidebarItem.vue`
- TypeScript 文件: camelCase,如 `mockData.ts`
- 工具函数: camelCase,如 `formatDate.ts`
### 组件命名
- 组件名必须与文件名保持一致
- 使用 PascalCase
## 代码质量要求
### 必须遵循
1. 所有组件必须使用 TypeScript
2. 所有 Props 必须定义类型
3. 所有事件必须使用 `defineEmits` 定义
4. 使用 Composition API,禁止 Options API
5. 使用 `ref` 和 `computed` 管理状态
6. 异步操作必须使用 try-catch
7. 错误信息使用 Toast 显示
### 性能优化
- 使用 `computed` 而非 `watch`(如可能)
- 使用 `v-show` 而非 `v-if`(频繁切换)
- 大列表考虑虚拟滚动
- 图片使用懒加载
### 可访问性
- 使用语义化 HTML 标签
- 为交互元素添加 `aria-label`
- 确保键盘导航可用
- 确保颜色对比度符合标准
## 与旧系统融合注意事项
### 色彩一致性
- 必须使用旧系统的色彩变量
- 禁止使用新的颜色值(除非经过批准)
### 组件风格
- 侧边栏: 白色背景 (`bg-app-sidebar-bg`)
- 卡片: 白色背景 (`bg-app-white`),浅色边框 (`border-app-border`)
- 按钮: 主色背景 (`bg-app-primary`)
- 激活状态: 浅蓝色背景 (`bg-app-active`)
### 技术栈兼容
- 新功能使用 Vue 3 + TypeScript + Tailwind CSS
- 旧功能保持 Vue 3 + Element Plus + SCSS
- 新功能作为独立模块,通过路由集成
## 代码生成规则
### 生成新组件时
1. 使用 Vue 3 Composition API
2. 完整的 TypeScript 类型定义
3. 使用 Tailwind CSS 样式
4. 使用配置的颜色变量
5. 添加必要的注释
6. 遵循项目目录结构
### 修改现有代码时
1. 保持现有代码风格
2. 不破坏现有功能
3. 更新相关类型定义
4. 确保样式一致性
## 常见错误避免
### ❌ 禁止
```typescript
// 禁止使用 any
const data: any = {}
// 禁止硬编码颜色
按钮
// 禁止使用内联样式
内容
// 禁止使用 React
import React from 'react'
// 禁止使用 Element Plus (新功能)
import { ElButton } from 'element-plus'
```
### ✅ 正确
```typescript
// 使用具体类型
const data: Project = {}
// 使用 Tailwind 配置的颜色
按钮
// 使用 Tailwind 类
内容
// 使用 Vue
import { ref } from 'vue'
// 使用 Tailwind 构建组件
```
## 代码审查重点
在生成或修改代码时,确保:
1. ✅ 使用正确的颜色变量(app-*)
2. ✅ TypeScript 类型完整
3. ✅ 使用 Tailwind CSS 而非内联样式
4. ✅ 遵循 Vue 3 Composition API
5. ✅ 组件结构清晰
6. ✅ 无 ESLint 错误
7. ✅ 响应式设计正确
8. ✅ 与旧系统风格一致
## 项目结构参考
```
src/
├── components/ # 通用可复用组件
├── layouts/ # 布局组件
├── pages/ # 页面组件
├── stores/ # Pinia 状态管理
├── types/ # TypeScript 类型定义
├── utils/ # 工具函数
└── api/ # API 接口定义
```
## 重要提醒
1. **色彩系统**: 始终使用 `tailwind.config.js` 中定义的颜色变量
2. **技术栈**: 新功能必须使用 Vue 3 + TypeScript + Tailwind CSS
3. **类型安全**: 所有代码必须使用 TypeScript,避免 `any`
4. **样式一致性**: 与旧系统保持设计风格一致
5. **代码质量**: 遵循最佳实践,确保可维护性