Files
pamido/PROJECT_OVERVIEW.md
T
2026-05-08 03:06:24 +08:00

611 lines
26 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 窗帘工厂管理系统 — 技术框架与功能简介
## 一、项目概述
窗帘工厂管理系统是一套面向窗帘制造企业的全流程业务管理平台,覆盖从客户预约、测量报价、订单生产、安装交付到售后服务的完整业务闭环,同时整合财务管理、采购库存、人员管理、数据分析等支撑模块。
- **项目名称**:窗帘工厂管理系统 (Curtain Factory Management System)
- **版本**v1.0.0
- **开发语言**:前端 JavaScript (Vue 3) / 后端 Java (Spring Boot)
- **界面语言**:简体中文
---
## 二、全栈技术架构
### 2.1 架构全景图
```
┌─────────────────────────────────────────────────────────────────┐
│ 客户端 (Browser) │
│ Vue 3 + Vite · Pinia · Chart.js · Font Awesome │
│ Hash Router · 路由懒加载 · 路由守卫 │
└──────────────────────────┬──────────────────────────────────────┘
│ HTTP / JSON (RESTful API)
┌─────────────────────────────────────────────────────────────────┐
│ 网关层 (Nginx / Gateway) │
│ 反向代理 · 负载均衡 · HTTPS · 静态资源 │
└──────────────────────────┬──────────────────────────────────────┘
┌─────────────────────────────────────────────────────────────────┐
│ 业务服务层 (Spring Boot 2.7) │
│ ┌─────────────┬────────────────┬─────────────────────────────┐ │
│ │Spring Sec │ AOP 切面 │ 全局异常处理 @RestControllerAdvice │
│ │JWT 认证 │ 操作日志 │ 统一响应体 R<T> │
│ │RBAC 鉴权 │ 接口限流 │ 参数校验 JSR-303 │
│ └─────────────┴────────────────┴─────────────────────────────┘ │
│ ┌──────────────────────────────────────────────────────────┐ │
│ │ Controller → Service → Repository (JPA/Hibernate) │ │
│ └──────────────────────────────────────────────────────────┘ │
└──────────────────────────┬──────────────────────────────────────┘
┌────────────┴────────────┐
▼ ▼
┌──────────────────────┐ ┌──────────────────────┐
│ MySQL 8.0 (主库) │ │ Redis (缓存/Session) │
│ · 读写分离 │ │ · JWT Token 黑名单 │
│ · 慢查询日志 │ │ · 验证码存储 │
│ · 索引优化 │ │ · 热点数据缓存 │
└──────────────────────┘ └──────────────────────┘
```
### 2.2 技术栈明细
| 层级 | 技术选型 | 版本 | 用途 |
|------|----------|------|------|
| **前端框架** | Vue 3 (Composition API) | ^3.3.4 | 组件化 UI 构建 |
| **构建工具** | Vite | ^4.4.5 | 开发服务器 / HMR / 生产构建 |
| **路由管理** | Vue Router | ^4.6.4 | Hash 模式 SPA 路由 |
| **状态管理** | Pinia | ^2.1.7 | 全局状态与跨组件通信 |
| **图表可视化** | Chart.js | ^4.4.0 | KPI 仪表盘与数据分析图表 |
| **图标库** | Font Awesome 6 | CDN | 2000+ 矢量图标 |
| **样式方案** | CSS Variables + Scoped CSS | — | 设计令牌 + 组件隔离 |
| **后端框架** | Spring Boot | 2.7.x | 约定优于配置的微服务基座 |
| **安全框架** | Spring Security + JWT | — | 无状态认证 + RBAC 鉴权 |
| **ORM** | Spring Data JPA (Hibernate) | — | 对象关系映射 |
| **缓存** | Redis | 7.x | Token 黑名单 / 验证码 / 热点缓存 |
| **数据库** | MySQL | 8.0 | 主数据存储 |
| **API 文档** | Knife4j (Swagger) | — | 自动生成 RESTful API 文档 |
| **构建工具** | Maven | 3.8+ | 依赖管理与打包 |
---
## 三、前端项目架构
### 3.1 目录结构
```
html-vue3/
├── index.html # 入口 HTML(挂载 #app + Font Awesome CDN
├── package.json # 项目依赖与 pnpm/npm 脚本
├── vite.config.js # Vite 配置(@别名 / 端口3001
└── src/
├── main.js # 应用入口:createApp → Pinia → Router
├── App.vue # 根组件(<router-view> 路由出口)
├── assets/css/
│ └── global.css # 全局样式:CSS变量 / 卡片 / 按钮 / 表格 / 模态框 / Toast
├── components/
│ ├── common/
│ │ └── PagePlaceholder.vue
│ └── layout/
│ ├── MainLayout.vue # 主布局:Sidebar + TopBar + <router-view>
│ ├── Sidebar.vue # 左侧导航(260px / 可折叠 / 13组菜单)
│ └── TopBar.vue # 顶部栏(侧栏切换 / 面包屑 / 全局搜索 / 用户信息)
├── composables/ # 可复用逻辑
│ ├── useModal.js # 模态框 open/close/loading
│ ├── usePagination.js # 分页:page/size/total/pageChange
│ ├── useSearch.js # 搜索:keyword/loading/search
│ └── useToast.js # Toastmessage/type/show/autoHide
├── router/index.js # 路由配置(Hash模式 / 42条路由 / 路由守卫)
├── stores/ # Pinia 状态管理
│ ├── customerStore.js # 客户 CRUD + 统计
│ ├── orderStore.js # 订单 CRUD + 状态流转
│ └── userStore.js # 登录/登出/持久化
├── utils/
│ └── dataService.js # 演示数据生成器
└── views/ # 42 个业务页面(按模块分目录)
├── Login.vue
├── Dashboard.vue
├── Workflow.vue
├── NotFound.vue
├── customer/ # 3页
├── quote/ # 2页
├── order/ # 6页
├── production/ # 3页
├── install/ # 4页
├── aftersale/ # 2页
├── finance/ # 2页
├── purchase/ # 3页
├── product/ # 2页
├── staff/ # 2页
├── system/ # 5页
└── analysis/ # 4页
```
### 3.2 前端技术亮点
| 特性 | 实现方式 |
|------|----------|
| **Composition API** | 全部页面采用 `<script setup>`,逻辑内聚 |
| **路由懒加载** | `() => import(...)` 动态按需加载,首屏 < 2s |
| **路由守卫** | `beforeEach` 检测 localStorage 登录态,未授权 → `/login` |
| **统一布局容器** | `.page-wrapper(24px) → .page-container(1600px居中)` 双重约束 |
| **响应式设计** | 4 级断点:≥1200 / 768-1199 / 480-767 / ≤480 |
| **CSS 设计令牌** | `:root` 定义 `--primary / --radius / --shadow`,全局可换肤 |
| **全局搜索** | TopBar 内建 18 个页面索引,实时模糊匹配 |
---
## 四、后端架构设计(Spring Boot 2.7
### 4.1 分层架构
```
┌─────────────────────────────────────────┐
│ Controller 层 (RESTful API) │
│ @RestController · @Validated · R<T> │
├─────────────────────────────────────────┤
│ Service 层 (业务逻辑) │
│ @Transactional · 缓存注解 · 业务编排 │
├─────────────────────────────────────────┤
│ Repository 层 (数据访问) │
│ JpaRepository · @Query · 分页查询 │
├─────────────────────────────────────────┤
│ Domain 层 (实体) │ DTO 层 (传输对象) │
│ @Entity · @Table │ 入参/出参分离 │
└─────────────────────────────────────────┘
```
### 4.2 推荐后端目录结构
```
curtain-factory-server/
├── pom.xml
├── src/main/java/com/pamido/curtain/
│ ├── CurtainApplication.java # Spring Boot 启动类
│ ├── config/
│ │ ├── SecurityConfig.java # Spring Security + JWT 配置
│ │ ├── RedisConfig.java # Redis 序列化配置
│ │ ├── CorsConfig.java # 跨域配置
│ │ └── Knife4jConfig.java # API 文档配置
│ ├── common/
│ │ ├── R.java # 统一响应体 {code, msg, data}
│ │ ├── PageResult.java # 分页结果
│ │ └── GlobalExceptionHandler.java # @RestControllerAdvice
│ ├── security/
│ │ ├── JwtTokenProvider.java # JWT 生成/验证/刷新
│ │ ├── JwtAuthenticationFilter.java # OncePerRequestFilter
│ │ └── UserDetailsServiceImpl.java # UserDetailsService
│ ├── module/
│ │ ├── customer/ # 客户模块
│ │ │ ├── CustomerController.java
│ │ │ ├── CustomerService.java
│ │ │ ├── CustomerRepository.java
│ │ │ ├── Customer.java # @Entity
│ │ │ ├── CustomerDTO.java
│ │ │ └── CustomerVO.java
│ │ ├── order/ # 订单模块 (同上)
│ │ ├── product/ # 产品模块
│ │ ├── finance/ # 财务模块
│ │ └── ...
│ └── aspect/
│ └── LogAspect.java # AOP 操作日志
└── src/main/resources/
├── application.yml # 主配置
├── application-dev.yml # 开发环境
└── application-prod.yml # 生产环境
```
---
## 五、功能模块一览
### 首页与总览(2页)
| 页面 | 路由 | 功能说明 |
|------|------|----------|
| 经营仪表盘 | `/dashboard` | KPI卡片 / 趋势图 / 排行榜 / 最新订单 / 待办 / 快捷入口 |
| 功能流程图 | `/workflow` | 业务全流程可视化 + 节点快捷跳转 |
### 客户管理(3页)
| 页面 | 路由 | 功能说明 |
|------|------|----------|
| 客户管理 | `/customer` | CRUD + 搜索筛选 + 分页 + 数据统计看板 |
| 预约测量 | `/customer/appointment` | 预约单管理 + 时间安排 + 状态跟踪 |
| 测量管理 | `/customer/measurement` | 测量任务分配 + 数据录入 + 进度管理 |
### 测量报价(2页)
| 页面 | 路由 | 功能说明 |
|------|------|----------|
| 测量报价 | `/quote` | 测量数据转报价 + 方案对比 |
| 报价表生成 | `/quote/generate` | 报价表CRUD + 方案A/B + 邮件/打印/复制 |
### 订单管理(6页)
| 页面 | 路由 | 功能说明 |
|------|------|----------|
| 订单管理 | `/order` | CRUD + 搜索筛选 + 分页 + 状态流转 |
| 订单跟踪 | `/order/tracking` | 全生命周期追踪 + 进度可视化 |
| 跟单页 | `/order/follow` | 跟单看板 + 客户沟通记录 |
| 定单明细 | `/order/detail` | 订单详情 + 产品明细 |
| 成交定单 | `/order/deal` | 成交订单管理 + 合同管理 |
| 复尺确认 | `/order/recheck` | 复尺分配 + 确认 + 安装前把控 |
### 生产管理(3页)
| 页面 | 路由 | 功能说明 |
|------|------|----------|
| 生产任务板 | `/production/task` | 任务看板 + 工序管理 + 状态跟踪 |
| 生产采购 | `/production/purchase` | 生产驱动采购发起 |
| 生产采购明细 | `/production/purchase-detail` | 采购明细 + 对账 |
### 安装管理(4页)
| 页面 | 路由 | 功能说明 |
|------|------|----------|
| 新增安装 | `/install/add` | 任务创建 + 人员/时间分配 |
| 安装任务板 | `/install/task` | 任务看板 + 状态管理 |
| 安装人员排班表 | `/install/schedule` | 日历排班 + 资源调配 |
| 安装完成 | `/install/complete` | 签收确认 + 满意度收集 |
### 售后管理(2页)
| 页面 | 路由 | 功能说明 |
|------|------|----------|
| 售后原因 | `/after-sale/reason` | 原因分类 + 分析 |
| 维修安排 | `/after-sale/arrange` | 维修工单 + 派工 + 跟踪 |
### 财务管理(2页)
| 页面 | 路由 | 功能说明 |
|------|------|----------|
| 收尾款 | `/finance/final-payment` | 尾款收款 + 到账确认 |
| 发票管理 | `/finance/invoice` | 发票申请 + 开具 + 寄送跟踪 |
### 采购库存(3页)
| 页面 | 路由 | 功能说明 |
|------|------|----------|
| 采购订单 | `/purchase/order` | CRUD + 审批流程 |
| 供应商管理 | `/purchase/supplier` | 信息维护 + 评估评级 |
| 库存管理 | `/purchase/inventory` | 出入库 + 库存盘点 |
### 产品管理(2页)
| 页面 | 路由 | 功能说明 |
|------|------|----------|
| 产品库管理 | `/product/library` | 产品信息 + 规格/定价 |
| 面料配件库 | `/product/material` | 面料/轨道/配件管理 |
### 人员管理(2页)
| 页面 | 路由 | 功能说明 |
|------|------|----------|
| 测量师管理 | `/staff/measurer` | 信息 + 资质 + 排班 |
| 安装师傅管理 | `/staff/installer` | 信息 + 技能评级 + 排班 |
### 系统设置(5页)
| 页面 | 路由 | 功能说明 |
|------|------|----------|
| 角色权限 | `/system/role` | 角色定义 + 权限分配 |
| 系统用户 | `/system/user` | 账号管理 + 密码重置 |
| 通知模板 | `/system/notification-template` | 短信/邮件模板 |
| 工作时间 | `/system/work-time` | 工作日/节假日配置 |
| 消息中心 | `/system/message` | 系统消息 + 站内信 |
### 数据分析(4页)
| 页面 | 路由 | 功能说明 |
|------|------|----------|
| 数据分析中心 | `/analysis/center` | 综合看板 + 交叉分析 |
| 报表分析 | `/analysis/report` | 定期报表 + 趋势 |
| 满意度调查 | `/analysis/satisfaction` | 满意度收集 + 统计 |
| 渠道管理 | `/analysis/channel` | 获客渠道 + 转化率 |
### 其他
| 页面 | 路由 | 功能说明 |
|------|------|----------|
| 登录页 | `/login` | 账号密码 + 验证码 + 快捷登录 |
| 404 | `/*` | 友好提示 + 首页回跳 |
---
## 六、快速开始
### 6.1 环境要求
| 组件 | 版本 |
|------|------|
| Node.js | 18.0+ |
| JDK | 11 或 17 |
| MySQL | 8.0+ |
| Redis | 7.x |
| Maven | 3.8+ |
### 6.2 前端启动
```bash
cd html-vue3
npm install
npm run dev # → http://localhost:3001
npm run build # 生产构建 → dist/
```
### 6.3 后端启动(规划)
```bash
cd curtain-factory-server
mvn clean package -DskipTests
java -jar target/curtain-factory-1.0.0.jar --spring.profiles.active=dev
# API 文档 → http://localhost:8080/doc.html
```
### 6.4 演示账号
| 角色 | 账号 | 密码 |
|------|------|------|
| 管理员 | admin | admin123 |
| 普通用户 | user | user123 |
---
## 七、产品经理视角 — 代码审查与优化建议
### 7.1 功能完整度评估
| 维度 | 当前状态 | 评分 | 问题 |
|------|---------|------|------|
| 核心业务流 | ✅ 客户→报价→订单→安装→售后完整串联 | ⭐⭐⭐⭐ | — |
| CRUD 操作 | ⚠️ 部分页面仅占位,无完整 CRUD | ⭐⭐ | `PagePlaceholder` 覆盖不够 |
| 演示数据 | ⚠️ 数据分散在各自组件内 | ⭐⭐ | 无统一数据工厂 |
| 表单校验 | ❌ 无校验框架 | ⭐ | 提交无拦截、无错误提示 |
| 操作反馈 | ⚠️ Toast 已统一但非所有操作都触发 | ⭐⭐ | 删改无确认对话框 |
| 权限控制 | ❌ 仅路由级区分,UI 无差异 | ⭐ | 按钮不隐藏、菜单全可见 |
| 异常处理 | ❌ 无全局错误捕获 | ⭐ | 接口失败无用户提示 |
| 加载状态 | ❌ 无骨架屏/loading | ⭐ | 数据为空时仅空白 |
| 导出功能 | ⚠️ 仅按钮入口无实现 | ⭐ | Excel/PDF 导出缺失 |
| 打印功能 | ⚠️ 仅 QuoteGenerate 有媒体查询 | ⭐⭐ | 其他页面无打印样式 |
### 7.2 产品层优先优化项
| 优先级 | 优化项 | 说明 |
|--------|--------|------|
| **P0** | 引入 Axios + 拦截器 + 统一错误处理 | 所有页面目前使用硬编码数据,必须先建立 HTTP 通信层 |
| **P0** | 全局 Loading/Skeleton 状态 | 用户等待时必须看到反馈,否则造成"页面坏了"的错觉 |
| **P1** | 操作确认弹窗 (ConfirmDialog) | 删除/状态变更等不可逆操作必须有二次确认 |
| **P1** | 表单校验 (vee-validate 或原生) | 必填拦截、格式校验、实时错误提示 |
| **P1** | 按钮级权限指令 `v-permission` | 无权限按钮直接移除 DOM,而非仅置灰 |
| **P2** | Excel 导入导出 (xlsx 库) | 批量操作必须支持导入导出 |
| **P2** | 通知中心 WebSocket 实时推送 | 当前消息中心为静态页面 |
| **P2** | 操作日志与审计轨迹 | 敏感操作记录操作人/时间/IP |
---
## 八、架构师视角 — 代码审查与优化建议
### 8.1 前端架构问题诊断
| 问题 | 严重度 | 现状 | 改进方案 |
|------|--------|------|----------|
| **无 HTTP 请求层** | 🔴 严重 | 数据全部硬编码在组件/composables | 建立 `utils/request.js`→Axios实例→拦截器链 |
| **Store 不调用 API** | 🔴 严重 | `stores/` 内只有静态 ref,无 async action | Store 负责调用 API + 缓存,组件只读 store |
| **路由守卫绕过 Store** | 🟡 中等 | `router.beforeEach` 直接读 `localStorage` | 应读 `userStore.isLoggedIn`Store 是唯一真相源 |
| **无 TypeScript** | 🟡 中等 | 全项目 `.js` | 渐进式迁移:先 `stores/``api/`→组件 |
| **Composables 粗粒度** | 🟡 中等 | `useSearch`/`usePagination` 只管理状态 | 应内置请求逻辑:search → API → results |
| **菜单硬编码** | 🟡 中等 | `Sidebar.vue` 内 menuGroups 数组 | 应抽为 `config/menu.js` + 后端权限动态返回 |
| **无 env 配置** | 🟡 中等 | API 地址无处配置 | `.env.development` / `.env.production` |
| **CSS 变量不全** | 🟢 低 | 缺 `--danger / --warning / --success` 语义色 | 补齐设计令牌,全局一致性 |
| **无测试** | 🟢 低 | 无 Vitest/Jest | 核心逻辑 + Store 优先覆盖 |
| **Chart.js 功能有限** | 🟢 低 | 仅支持基础图表 | 复杂分析场景建议升级 ECharts |
### 8.2 前端重构路线图
```
阶段一:通信基座(本周)
├─ 新建 src/api/
│ ├── request.js # Axios 实例 + 拦截器
│ ├── modules/
│ │ ├── customer.js # 客户 API
│ │ ├── order.js # 订单 API
│ │ └── ...
│ └── index.js
├─ 新建 .env.development # VITE_API_BASE_URL=http://localhost:8080
└─ 重构 stores/ → async actions 调用 api/
阶段二:工程质量(下周)
├─ ESLint + Prettier 配置
├─ TypeScript 初始化(tsconfig.json
├─ stores/ 迁移 .js → .ts
├─ v-permission 指令
└─ Vue DevTools 调试规范
阶段三:体验增强(两周内)
├─ 骨架屏组件 (Skeleton.vue)
├─ ConfirmDialog 全局组件
├─ vee-validate 表单校验
├─ Excel 导入导出
└─ 全局错误边界 (ErrorBoundary)
```
### 8.3 前端推荐新增目录
```
src/
├── api/ # ★ 新增:HTTP 请求层
│ ├── request.js # Axios 封装(baseURL/interceptor/retry
│ ├── index.js
│ └── modules/
│ ├── auth.js
│ ├── customer.js
│ ├── order.js
│ ├── product.js
│ ├── finance.js
│ └── ...
├── config/
│ └── menu.js # ★ 新增:菜单配置(从 Sidebar.vue 抽取)
├── directives/
│ └── permission.js # ★ 新增:v-permission 指令
├── plugins/
│ └── echarts.js # ★ 可选:ECharts 按需引入
└── types/ # ★ 新增:TypeScript 类型定义
├── api.d.ts
└── models.d.ts
```
### 8.4 前端 API 层设计规范
```javascript
// src/api/request.js
import axios from 'axios'
import { useUserStore } from '@/stores/userStore'
import { ElMessage } from 'element-plus' // 或自定义 Toast
const request = axios.create({
baseURL: import.meta.env.VITE_API_BASE_URL,
timeout: 30000
})
// 请求拦截 — 自动附带 JWT
request.interceptors.request.use(config => {
const token = localStorage.getItem('accessToken')
if (token) config.headers.Authorization = `Bearer ${token}`
return config
})
// 响应拦截 — 统一解包 + 错误处理 + Token 刷新
request.interceptors.response.use(
res => res.data, // 自动解包 R<T> → data
async err => {
if (err.response?.status === 401) {
// Token 过期 → 尝试 refreshToken → 失败则跳登录
useUserStore().logout()
router.push('/login')
}
ElMessage.error(err.response?.data?.msg || '网络异常')
return Promise.reject(err)
}
)
export default request
```
### 8.5 后端架构要点
| 设计点 | 推荐方案 |
|--------|----------|
| **API 规范** | RESTful`GET /api/orders` `POST /api/orders` `PUT /api/orders/{id}` `DELETE /api/orders/{id}` |
| **统一响应体** | `R<T>``{ code: 200, msg: "success", data: T }` |
| **分页响应** | `PageResult<T>``{ total, page, size, list }` |
| **参数校验** | `@Validated` + JSR-303 注解(`@NotBlank/@NotNull/@Min` |
| **异常处理** | `@RestControllerAdvice` 全局捕获 → 转 `R.fail(code, msg)` |
| **JWT 设计** | AccessToken(2h) + RefreshToken(7d) 双令牌 |
| **Redis 缓存** | `@Cacheable` 查 / `@CacheEvict` 删,Key: `customer:{id}` |
| **AOP 日志** | `@Log("新增客户")` 注解驱动,记录 operator / IP / params |
| **事务管理** | Service 层 `@Transactional`RuntimeException 自动回滚 |
| **SQL 审计** | `p6spy` 打印完整 SQL + 参数 |
### 8.6 后端统一响应体示例
```java
@Data
@NoArgsConstructor
@AllArgsConstructor
public class R<T> {
private int code;
private String msg;
private T data;
public static <T> R<T> ok(T data) {
return new R<>(200, "success", data);
}
public static <T> R<T> fail(int code, String msg) {
return new R<>(code, msg, null);
}
}
```
---
## 九、前后端对接规范
| 前端 | 后端 | 说明 |
|------|------|------|
| `stores/` async actions | `@RestController` | Store 调用 API,组件调用 Store |
| `.env` 中的 `VITE_API_BASE_URL` | `application.yml server.port` | 开发/生产环境切换 |
| `import.meta.env.VITE_API_BASE_URL` | — | Vite 编译时注入 |
| `Authorization: Bearer {token}` | `JwtAuthenticationFilter` | 无状态认证 |
| `page / size` 查询参数 | `Pageable` (Spring Data) | 分页统一协议 |
| `{ code, msg, data }` | `R<T>` | 统一响应解包 |
---
## 十、设计说明
### 10.1 布局约束
```
.page-wrapper (padding: 24px) ← 侧边栏↔内容区间距
└── .page-container ← max-width: 1600px + margin: auto 居中
└── .{page-specific} ← 页面特有样式
```
### 10.2 响应式断点
| 断点 | 策略 |
|------|------|
| ≥ 1200px | 双列 + 完整侧边栏 |
| 768-1199px | 单列 + 表格横滚 |
| 480-767px | 48px 触控区域 |
| ≤ 480px | 紧凑布局 |
---
## 十一、总评分与行动建议
### 当前版本评分
| 评估维度 | 评分 | 评语 |
|----------|------|------|
| 功能覆盖度 | ⭐⭐⭐⭐ (4/5) | 42页面覆盖全业务流程,部分占位需补全 |
| 前端架构 | ⭐⭐⭐ (3/5) | 组件化良好,缺 HTTP 层和 TS |
| 代码质量 | ⭐⭐⭐ (3/5) | Composition API 使用正确,但缺规范约束 |
| 用户体验 | ⭐⭐⭐ (3/5) | 响应式 + 统一布局不错,缺加载/错误/确认 |
| 可扩展性 | ⭐⭐⭐ (3/5) | 模块化清晰,后端对接需重构 Store |
| 生产就绪度 | ⭐⭐ (2/5) | 纯演示版,不可直接上线 |
### 🔥 立即行动(本周必做)
1. **建立 `src/api/` 层**:Axios 封装 + 拦截器 + 统一错误处理
2. **重构 `stores/`**async actions 调用 API,移除硬编码数据
3. **添加 `.env` 配置**:开发/生产环境 API 地址
### 📋 短期计划(两周内)
4. 表单校验 + 操作确认弹窗
5. 按钮级权限指令
6. 全局 Loading/Skeleton
7. ESLint + Prettier 配置
8. 后端 Spring Boot 项目搭建
### 🎯 中期计划(一月内)
9. TypeScript 渐进迁移
10. ECharts 替换 Chart.js(分析模块)
11. Excel 导入导出
12. 后端全部模块 Controller/Service/Repository
13. CI/CD Pipeline (GitHub Actions / Jenkins)