提交
This commit is contained in:
1 parent
48f15745be
commit
e421030ada
72 files changed
+17064
-35
No files matched your search
@@ -0,0 +1,636 @@
|
||||
# 学生操行分管理模块
|
||||
|
||||
## 📋 模块基本信息
|
||||
|
||||
**模块名称**: 学生操行分管理 / Student Conduct Score Management
|
||||
**负责人**: 开发团队
|
||||
**开发状态**: 🟡 待开发
|
||||
**技术栈**: Spring Boot 3.4.6 + Vue 3 + TypeScript + Element Plus
|
||||
**依赖模块**: 用户管理、班级管理、学生管理
|
||||
**开发周期**: 待定
|
||||
|
||||
---
|
||||
|
||||
## 🎯 模块概述
|
||||
|
||||
### 业务价值
|
||||
|
||||
为学校提供完整的学生操行分管理解决方案,实现班主任每月对班级学生操行表现的量化评价和管理,帮助学生处管理员掌握学生的学期表现情况,为学生综合素质评价提供数据支持。
|
||||
|
||||
### 核心功能
|
||||
|
||||
- **班主任月度评分**: 班主任每月为班级学生录入操行分数
|
||||
- **学期平均分统计**: 自动计算学生的学期操行平均分
|
||||
- **多维度数据展示**: 按学年、学期、月份等维度展示学生操行表现
|
||||
- **权限分级管理**: 班主任只能管理本班学生,管理员可查看全校数据
|
||||
|
||||
### 技术特点
|
||||
|
||||
- **数据完整性**: 严格的数据验证和业务规则约束
|
||||
- **性能优化**: 支持大数据量查询和统计分析
|
||||
- **权限安全**: 基于角色的精细化权限控制
|
||||
- **用户体验**: 友好的批量录入和数据展示界面
|
||||
|
||||
---
|
||||
|
||||
## 📁 文档结构
|
||||
|
||||
```
|
||||
学生操行分管理/
|
||||
├── README.md # 本文件 - 模块总览
|
||||
├── 需求分析/
|
||||
│ ├── 业务需求说明.md # 详细业务需求
|
||||
│ ├── 功能需求清单.md # 功能点清单
|
||||
│ ├── 用户故事.md # 用户使用场景
|
||||
│ └── 非功能需求.md # 性能、安全要求
|
||||
├── 技术设计/
|
||||
│ ├── 数据库设计.md # 表结构设计
|
||||
│ ├── API接口设计.md # 接口定义
|
||||
│ ├── 架构设计.md # 模块架构
|
||||
│ └── 技术选型.md # 技术决策说明
|
||||
├── 实现文档/
|
||||
│ ├── 后端实现说明.md # 后端代码结构
|
||||
│ ├── 前端实现说明.md # 前端代码结构
|
||||
│ ├── 关键业务逻辑.md # 核心算法逻辑
|
||||
│ └── 代码规范.md # 编码规范
|
||||
├── 测试文档/
|
||||
│ ├── 测试计划.md # 测试策略
|
||||
│ ├── 测试用例.md # 具体测试用例
|
||||
│ └── 测试报告.md # 测试结果
|
||||
└── 运维文档/
|
||||
├── 部署指南.md # 部署步骤
|
||||
├── 监控配置.md # 监控指标
|
||||
└── 故障处理.md # 常见问题
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🏗️ 系统架构
|
||||
|
||||
### 模块架构图
|
||||
|
||||
```mermaid
|
||||
graph TB
|
||||
subgraph "前端层"
|
||||
A1[操行分录入页面<br/>ConductScoreInput.vue]
|
||||
A2[学期统计页面<br/>SemesterStatistics.vue]
|
||||
A3[操行分查询页面<br/>ConductScoreQuery.vue]
|
||||
end
|
||||
|
||||
subgraph "接口层"
|
||||
B1[操行分Controller<br/>ConductScoreController]
|
||||
B2[统计Controller<br/>StatisticsController]
|
||||
end
|
||||
|
||||
subgraph "业务层"
|
||||
C1[操行分Service<br/>IConductScoreService]
|
||||
C2[统计Service<br/>IStatisticsService]
|
||||
C3[权限Service<br/>IPermissionService]
|
||||
end
|
||||
|
||||
subgraph "数据层"
|
||||
D1[操行分Mapper<br/>ConductScoreMapper]
|
||||
D2[统计SQL<br/>统计查询语句]
|
||||
D3[Redis缓存<br/>缓存统计结果]
|
||||
end
|
||||
|
||||
A1 --> B1
|
||||
A2 --> B2
|
||||
A3 --> B1
|
||||
B1 --> C1
|
||||
B2 --> C2
|
||||
C1 --> C3
|
||||
C2 --> C3
|
||||
C1 --> D1
|
||||
C2 --> D1
|
||||
C2 --> D2
|
||||
D2 --> D3
|
||||
```
|
||||
|
||||
### 数据流向
|
||||
|
||||
```mermaid
|
||||
sequenceDiagram
|
||||
participant T as 班主任
|
||||
participant F as 前端
|
||||
participant C as Controller
|
||||
participant S as Service
|
||||
participant M as Mapper
|
||||
participant D as Database
|
||||
|
||||
T->>F: 选择月份录入操行分
|
||||
F->>C: POST /api/conduct-score/batch
|
||||
C->>S: 批量保存操行分
|
||||
S->>M: 插入/更新分数数据
|
||||
M->>D: SQL执行
|
||||
D-->>M: 返回结果
|
||||
M-->>S: 返回成功
|
||||
S-->>C: 返回结果
|
||||
C-->>F: JSON响应
|
||||
F-->>T: 显示保存成功
|
||||
|
||||
Note over T,D: 学生处管理员查询学期统计
|
||||
T->>F: 选择学年学期查询
|
||||
F->>C: GET /api/statistics/semester-average
|
||||
C->>S: 计算学期平均分
|
||||
S->>M: 查询统计数据
|
||||
M->>D: SQL执行
|
||||
D-->>M: 返回原始数据
|
||||
M-->>S: 计算平均分
|
||||
S-->>C: 返回统计结果
|
||||
C-->>F: JSON响应
|
||||
F-->>T: 显示统计表格
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🎯 核心功能模块
|
||||
|
||||
### 1. 操行分录入管理
|
||||
|
||||
#### 业务描述
|
||||
|
||||
班主任每月为负责的班级学生录入操行分数,包含分数和备注信息。如果班主任负责多个班级,则通过多Tab页方式展示。系统需要验证班主任权限、检查数据完整性、防止重复录入等。
|
||||
|
||||
#### 技术实现
|
||||
|
||||
- **前端实现**: Vue 3 多Tab页组件,支持批量录入和数据验证,每个Tab页独立管理一个班级
|
||||
- **后端实现**: Spring Boot Controller + Service,通过`xg_class_msg.class_teacher_id`获取班主任负责的班级
|
||||
- **数据存储**: MySQL 数据库,支持历史数据追溯
|
||||
- **Tab页逻辑**: 根据班主任负责的班级数量动态生成Tab页,每个Tab页独立保存状态
|
||||
|
||||
#### 关键流程
|
||||
|
||||
1. 系统根据当前用户ID查询`xg_class_msg`表获取负责的班级
|
||||
2. 动态生成Tab页,每个Tab对应一个班级
|
||||
3. 班主任选择录入月份
|
||||
4. 系统加载对应班级学生列表
|
||||
5. 班主任为每位学生录入分数和备注
|
||||
6. 系统验证数据完整性和合理性
|
||||
7. 批量保存到数据库(支持跨Tab页批量保存)
|
||||
8. 更新录入状态记录
|
||||
|
||||
### 2. 学期统计分析
|
||||
|
||||
#### 业务描述
|
||||
|
||||
学生处管理员查看学生的学期操行平均分,系统自动计算每个学生的学期平均表现,并提供导出功能。
|
||||
|
||||
#### 技术实现
|
||||
|
||||
- **前端实现**: 数据表格组件,支持排序、筛选和导出
|
||||
- **后端实现**: 统计查询接口,包含缓存优化
|
||||
- **数据处理**: SQL聚合查询或Java计算逻辑
|
||||
|
||||
#### 关键流程
|
||||
|
||||
1. 管理员选择学年和学期
|
||||
2. 系统查询该学期所有学生的分数记录
|
||||
3. 计算每个学生的平均分
|
||||
4. 按班级或专业分组展示
|
||||
5. 支持数据导出功能
|
||||
|
||||
---
|
||||
|
||||
## 🔌 API 接口概览
|
||||
|
||||
### 接口分类
|
||||
|
||||
#### 基础 CRUD 接口
|
||||
|
||||
| 接口名称 | 请求方式 | 路径 | 功能描述 |
|
||||
| -------------- | -------- | --------------------------- | ---------------------- |
|
||||
| 查询操行分列表 | GET | /api/conduct-score/list | 分页查询操行分记录 |
|
||||
| 查询操行分详情 | GET | /api/conduct-score/{id} | 根据 ID 查询操行分详情 |
|
||||
| 新增操行分 | POST | /api/conduct-score | 创建新的操行分记录 |
|
||||
| 更新操行分 | PUT | /api/conduct-score/{id} | 更新指定操行分记录 |
|
||||
| 删除操行分 | DELETE | /api/conduct-score/{id} | 删除指定操行分记录 |
|
||||
|
||||
#### 业务逻辑接口
|
||||
|
||||
| 接口名称 | 请求方式 | 路径 | 功能描述 |
|
||||
| ---------------- | -------- | ----------------------------- | ------------------------ |
|
||||
| 批量录入操行分 | POST | /api/conduct-score/batch | 批量保存操行分 |
|
||||
| 班主任班级学生 | GET | /api/conduct-score/class-students | 获取班主任班级学生列表 |
|
||||
| 学期平均分统计 | GET | /api/statistics/semester-average | 查询学期平均分 |
|
||||
| 导出学期统计 | GET | /api/statistics/export | 导出学期统计数据 |
|
||||
| 验证录入权限 | GET | /api/conduct-score/check-permission | 检查班主任录入权限 |
|
||||
|
||||
### 接口规范
|
||||
|
||||
- **请求格式**: JSON
|
||||
- **响应格式**: 统一响应体结构
|
||||
- **认证方式**: JWT Token
|
||||
- **权限控制**: 基于角色的权限验证
|
||||
|
||||
---
|
||||
|
||||
## 🗄️ 数据模型
|
||||
|
||||
### 核心实体
|
||||
|
||||
#### 操行分表 (xg_conduct_score)
|
||||
|
||||
| 字段名 | 类型 | 长度 | 非空 | 默认值 | 说明 |
|
||||
| --------------- | ----------- | ------ | ----- | -------- | ------------------------------ |
|
||||
| id | BIGINT | - | Y | - | 主键 ID |
|
||||
| tenant_id | VARCHAR | 20 | Y | 000000 | 租户编号 |
|
||||
| academic_year | INT | 4 | Y | - | 学年(如:2024) |
|
||||
| semester | TINYINT | 1 | Y | - | 学期(1-第一学期,2-第二学期) |
|
||||
| month | TINYINT | 2 | Y | - | 月份(1-12) |
|
||||
| student_id | BIGINT | - | Y | - | 学生ID,关联xg_student_msg.id |
|
||||
| class_id | BIGINT | - | Y | - | 班级ID,关联xg_class_msg.id |
|
||||
| class_teacher_id| BIGINT | - | Y | - | 班主任ID,关联sys_user.id |
|
||||
| score | DECIMAL | 5,2 | Y | - | 操行分数(0.00-100.00) |
|
||||
| remark | VARCHAR | 500 | N | NULL | 备注信息 |
|
||||
| create_dept | BIGINT | - | N | NULL | 创建部门 |
|
||||
| create_by | BIGINT | - | N | NULL | 创建者 |
|
||||
| create_time | DATETIME | - | N | NULL | 创建时间 |
|
||||
| update_by | BIGINT | - | N | NULL | 更新者 |
|
||||
| update_time | DATETIME | - | N | NULL | 更新时间 |
|
||||
| deleted | TINYINT | 1 | Y | 0 | 删除标志(0代表存在 1代表删除)|
|
||||
|
||||
### 实体关系图
|
||||
|
||||
```mermaid
|
||||
erDiagram
|
||||
xg_conduct_score ||--o{ xg_student_msg : "关联学生"
|
||||
xg_conduct_score }o--|| xg_class_msg : "关联班级"
|
||||
xg_conduct_score }o--|| sys_user : "关联班主任"
|
||||
xg_class_msg ||--o{ xg_student_msg : "班级包含学生"
|
||||
xg_class_msg }o--|| sys_user : "班级有班主任"
|
||||
|
||||
xg_conduct_score {
|
||||
bigint id PK
|
||||
int academic_year
|
||||
tinyint semester
|
||||
tinyint month
|
||||
bigint student_id FK
|
||||
bigint class_id FK
|
||||
bigint class_teacher_id FK
|
||||
decimal score
|
||||
varchar remark
|
||||
datetime create_time
|
||||
}
|
||||
|
||||
xg_student_msg {
|
||||
bigint id PK
|
||||
varchar student_no
|
||||
varchar name
|
||||
varchar class_name
|
||||
}
|
||||
|
||||
xg_class_msg {
|
||||
bigint id PK
|
||||
varchar class_name
|
||||
bigint class_teacher_id FK
|
||||
}
|
||||
|
||||
sys_user {
|
||||
bigint id PK
|
||||
varchar user_name
|
||||
varchar nick_name
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🔄 业务流程
|
||||
|
||||
### 主要业务流程
|
||||
|
||||
#### 班主任录入操行分流程
|
||||
|
||||
```mermaid
|
||||
flowchart TD
|
||||
A[班主任登录] --> B{选择录入月份}
|
||||
B --> C[加载班级学生列表]
|
||||
C --> D{学生列表为空?}
|
||||
D -->|是| E[提示无学生数据]
|
||||
D -->|否| F[显示学生列表和录入表单]
|
||||
F --> G[录入分数和备注]
|
||||
G --> H{数据验证通过?}
|
||||
H -->|否| I[显示错误提示]
|
||||
I --> G
|
||||
H -->|是| J[批量保存数据]
|
||||
J --> K{保存成功?}
|
||||
K -->|否| L[显示保存失败信息]
|
||||
L --> J
|
||||
K -->|是| M[更新录入状态]
|
||||
M --> N[显示保存成功]
|
||||
N --> O[结束]
|
||||
```
|
||||
|
||||
#### 学期统计查询流程
|
||||
|
||||
```mermaid
|
||||
flowchart TD
|
||||
A[管理员选择学年学期] --> B[查询该学期操行分数据]
|
||||
B --> C{有数据?}
|
||||
C -->|否| D[显示无数据提示]
|
||||
C -->|是| E[按学生分组计算平均分]
|
||||
E --> F[按班级排序展示]
|
||||
F --> G{需要导出?}
|
||||
G -->|否| H[显示统计表格]
|
||||
G -->|是| I[生成Excel文件]
|
||||
I --> J[下载文件]
|
||||
J --> H
|
||||
H --> K[结束]
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🎨 前端设计
|
||||
|
||||
### 页面结构
|
||||
|
||||
#### 操行分录入页面 (ConductScoreInput.vue)
|
||||
|
||||
- **功能**: 班主任每月录入负责班级学生操行分
|
||||
- **组件**: 月份选择器、多Tab页、学生列表表格、批量编辑表单
|
||||
- **交互**: 多Tab页展示不同班级,支持批量保存、数据验证提示
|
||||
- **数据**: 通过`xg_class_msg.class_teacher_id`获取班主任负责的所有班级及学生信息
|
||||
- **特性**: 一个老师负责多个班级的场景,每个班级一个Tab页,Tab间独立录入
|
||||
|
||||
#### 学期统计页面 (SemesterStatistics.vue)
|
||||
|
||||
- **功能**: 学生处管理员查看学期平均分
|
||||
- **组件**: 学年学期选择器、统计数据表格、导出按钮
|
||||
- **交互**: 支持筛选排序、数据导出
|
||||
- **数据**: 学期平均分统计、学生基本信息
|
||||
|
||||
#### 操行分查询页面 (ConductScoreQuery.vue)
|
||||
|
||||
- **功能**: 查询历史操行分记录
|
||||
- **组件**: 查询条件表单、数据表格、分页组件
|
||||
- **交互**: 支持多条件筛选、详情查看
|
||||
- **数据**: 操行分历史记录、关联的学生和班级信息
|
||||
|
||||
### 组件设计
|
||||
|
||||
#### 批量录入组件 (BatchScoreInput.vue)
|
||||
|
||||
```typescript
|
||||
// 组件属性接口
|
||||
interface BatchScoreInputProps {
|
||||
academicYear: number; // 学年
|
||||
semester: number; // 学期
|
||||
month: number; // 月份
|
||||
classId: string; // 班级ID
|
||||
students: StudentInfo[]; // 学生列表
|
||||
}
|
||||
|
||||
// 组件事件接口
|
||||
interface BatchScoreInputEmits {
|
||||
save: [scores: ConductScore[]]; // 保存分数
|
||||
cancel: []; // 取消操作
|
||||
}
|
||||
```
|
||||
|
||||
#### 统计表格组件 (StatisticsTable.vue)
|
||||
|
||||
```typescript
|
||||
// 组件属性接口
|
||||
interface StatisticsTableProps {
|
||||
data: SemesterAverage[]; // 统计数据
|
||||
loading: boolean; // 加载状态
|
||||
showExport: boolean; // 是否显示导出按钮
|
||||
}
|
||||
|
||||
// 组件事件接口
|
||||
interface StatisticsTableEmits {
|
||||
export: [format: 'excel' | 'pdf']; // 导出数据
|
||||
sort: [field: string, order: 'asc' | 'desc']; // 排序
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 📝 开发规范
|
||||
|
||||
### 代码结构
|
||||
|
||||
#### 后端代码结构
|
||||
|
||||
```
|
||||
src/main/java/org/dromara/modules/conduct/
|
||||
├── controller/
|
||||
│ ├── ConductScoreController.java
|
||||
│ └── StatisticsController.java
|
||||
├── domain/
|
||||
│ ├── bo/
|
||||
│ │ ├── ConductScoreBo.java
|
||||
│ │ └── ConductScoreQueryBo.java
|
||||
│ └── vo/
|
||||
│ ├── ConductScoreVo.java
|
||||
│ ├── SemesterAverageVo.java
|
||||
│ └── ConductScoreDetailVo.java
|
||||
├── mapper/
|
||||
│ ├── ConductScoreMapper.java
|
||||
│ └── ConductScoreMapper.xml
|
||||
├── service/
|
||||
│ ├── IConductScoreService.java
|
||||
│ ├── IStatisticsService.java
|
||||
│ └── impl/
|
||||
│ ├── ConductScoreServiceImpl.java
|
||||
│ └── StatisticsServiceImpl.java
|
||||
└── utils/
|
||||
└── ConductScoreUtils.java
|
||||
```
|
||||
|
||||
#### 前端代码结构
|
||||
|
||||
```
|
||||
src/views/conduct/
|
||||
├── index.vue # 主页面
|
||||
├── components/
|
||||
│ ├── ConductScoreInput.vue # 录入组件
|
||||
│ ├── SemesterStatistics.vue # 统计组件
|
||||
│ └── ConductScoreQuery.vue # 查询组件
|
||||
├── types/
|
||||
│ └── index.ts # 类型定义
|
||||
└── api/
|
||||
└── index.ts # API接口
|
||||
```
|
||||
|
||||
### 命名规范
|
||||
|
||||
#### 后端命名规范
|
||||
|
||||
- **类名**: PascalCase (如: ConductScoreController, ConductScoreService)
|
||||
- **方法名**: camelCase (如: getConductScoreList, createConductScore)
|
||||
- **常量**: UPPER_SNAKE_CASE (如: MAX_SCORE_VALUE)
|
||||
- **包名**: 全小写 (如: com.example.module)
|
||||
|
||||
#### 前端命名规范
|
||||
|
||||
- **组件名**: PascalCase (如: ConductScoreList, ConductScoreForm)
|
||||
- **方法名**: camelCase (如: handleSubmit, getConductScoreInfo)
|
||||
- **变量名**: camelCase (如: conductScoreList, isLoading)
|
||||
- **常量**: UPPER_SNAKE_CASE (如: API_BASE_URL)
|
||||
|
||||
#### 数据库命名规范
|
||||
|
||||
- **表名**: 下划线命名 (如: xg_conduct_score)
|
||||
- **字段名**: 下划线命名 (如: academic_year, semester)
|
||||
- **索引名**: idx_表名_字段名 (如: idx_conduct_score_student_id)
|
||||
|
||||
---
|
||||
|
||||
## 🧪 测试策略
|
||||
|
||||
### 测试分类
|
||||
|
||||
#### 单元测试
|
||||
|
||||
- **覆盖范围**: Service 层业务逻辑、数据验证逻辑
|
||||
- **测试框架**: JUnit 5 + Mockito
|
||||
- **覆盖率要求**: > 80%
|
||||
|
||||
#### 集成测试
|
||||
|
||||
- **覆盖范围**: Controller 层 API 接口、数据库操作
|
||||
- **测试框架**: Spring Boot Test
|
||||
- **测试数据**: 测试数据库
|
||||
|
||||
#### 前端测试
|
||||
|
||||
- **覆盖范围**: 组件功能测试、表单验证
|
||||
- **测试框架**: Vue Test Utils + Jest
|
||||
- **测试类型**: 组件渲染、用户交互、数据绑定
|
||||
|
||||
### 测试用例设计
|
||||
|
||||
#### 功能测试用例
|
||||
|
||||
- **正常流程测试**: 验证正常的操行分录入和查询流程
|
||||
- **边界值测试**: 验证分数范围、日期范围等边界条件
|
||||
- **异常流程测试**: 验证错误处理和权限控制
|
||||
|
||||
#### 性能测试用例
|
||||
|
||||
- **响应时间测试**: 验证接口响应时间 < 200ms
|
||||
- **并发测试**: 验证批量录入时的并发处理能力
|
||||
- **大数据量测试**: 验证万人规模数据查询性能
|
||||
|
||||
---
|
||||
|
||||
## 🚀 部署运维
|
||||
|
||||
### 部署环境
|
||||
|
||||
#### 开发环境
|
||||
|
||||
- **部署方式**: 本地 Docker 容器
|
||||
- **数据库**: MySQL 8.0
|
||||
- **缓存**: Redis 7.0
|
||||
- **配置**: application-dev.yml
|
||||
|
||||
#### 生产环境
|
||||
|
||||
- **部署方式**: Kubernetes
|
||||
- **数据库**: MySQL 8.0(集群)
|
||||
- **缓存**: Redis 7.0(集群)
|
||||
- **配置**: application-prod.yml
|
||||
|
||||
### 监控指标
|
||||
|
||||
#### 业务指标
|
||||
|
||||
- **录入成功率**: 操行分录入操作的成功率
|
||||
- **查询响应时间**: 统计查询的平均响应时间
|
||||
- **数据完整性**: 操行分数据的完整性检查
|
||||
|
||||
#### 技术指标
|
||||
|
||||
- **接口响应时间**: 平均响应时间 < 200ms
|
||||
- **系统可用性**: 99.9%可用性
|
||||
- **错误率**: 错误率 < 0.1%
|
||||
|
||||
---
|
||||
|
||||
## 📅 开发计划
|
||||
|
||||
### 开发阶段
|
||||
|
||||
#### 第一阶段:基础框架(1周)
|
||||
|
||||
- [ ] 数据库表结构设计和创建
|
||||
- [ ] 基础 CRUD 接口开发
|
||||
- [ ] 基础页面和组件开发
|
||||
- [ ] 单元测试编写
|
||||
|
||||
#### 第二阶段:核心功能(2周)
|
||||
|
||||
- [ ] 操行分录入功能开发
|
||||
- [ ] 学期统计功能开发
|
||||
- [ ] 权限控制逻辑实现
|
||||
- [ ] 集成测试
|
||||
|
||||
#### 第三阶段:完善优化(1周)
|
||||
|
||||
- [ ] 功能完善和用户体验优化
|
||||
- [ ] 性能测试和优化
|
||||
- [ ] 文档完善
|
||||
- [ ] 验收测试
|
||||
|
||||
### 里程碑
|
||||
|
||||
- **里程碑 1**: 基础框架完成
|
||||
- **里程碑 2**: 核心功能完成
|
||||
- **里程碑 3**: 测试完成,准备发布
|
||||
- **里程碑 4**: 正式发布上线
|
||||
|
||||
---
|
||||
|
||||
## 🔧 开发工具
|
||||
|
||||
### 后端开发工具
|
||||
|
||||
- **IDE**: IntelliJ IDEA
|
||||
- **构建工具**: Maven
|
||||
- **代码质量**: SonarQube
|
||||
- **API 测试**: Postman
|
||||
|
||||
### 前端开发工具
|
||||
|
||||
- **IDE**: VSCode
|
||||
- **构建工具**: Vite
|
||||
- **代码规范**: ESLint + Prettier
|
||||
- **组件预览**: Storybook
|
||||
|
||||
### 数据库工具
|
||||
|
||||
- **管理工具**: Navicat Premium
|
||||
- **版本控制**: Flyway
|
||||
- **性能监控**: MySQL Performance Schema
|
||||
|
||||
---
|
||||
|
||||
## 📖 相关文档
|
||||
|
||||
- **项目总览**: `../项目总览/README.md`
|
||||
- **开发规范**: `../开发文档/README.md`
|
||||
- **API 接口**: `../开发文档/API.md`
|
||||
- **数据库设计**: `../设计文档/database/`
|
||||
- **变更记录**: `../变更管理/README.md`
|
||||
|
||||
---
|
||||
|
||||
## 📝 开发注意事项
|
||||
|
||||
### 重要提醒
|
||||
|
||||
1. **数据完整性**: 操行分数据关系到学生评价,必须确保数据准确性和完整性
|
||||
2. **权限控制**: 班主任只能录入本班学生,管理员查看权限需严格控制
|
||||
3. **性能优化**: 统计查询涉及大量数据计算,需要合理设计索引和缓存策略
|
||||
4. **用户体验**: 批量录入功能需要良好的交互设计和数据验证
|
||||
5. **业务规则**: 每月只能录入一次,不可重复录入同一学生的当月分数
|
||||
|
||||
### 技术要点
|
||||
|
||||
1. **雪花ID**: 主键使用雪花ID,确保分布式环境下的唯一性
|
||||
2. **逻辑删除**: 所有删除操作使用逻辑删除,保留历史数据
|
||||
3. **多租户**: 支持多租户数据隔离
|
||||
4. **审计字段**: 完整记录数据的创建和更新信息
|
||||
5. **数据验证**: 前后端都需进行数据验证,确保数据质量
|
||||
Reference in new issue
Block a user