Files
ccdi/CLAUDE.md

363 lines
10 KiB
Markdown
Raw Normal View History

2026-01-26 18:49:46 +08:00
# CLAUDE.md
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
2026-02-24 16:10:27 +08:00
## 项目概述
2026-01-26 18:49:46 +08:00
2026-02-24 16:10:27 +08:00
**纪检初核系统** - 基于 **若依管理系统 v3.9.1** 构建的企业级前后端分离管理系统,用于员工异常行为风险识别。
2026-01-26 18:49:46 +08:00
2026-02-24 16:10:27 +08:00
### 技术栈版本
2026-01-26 18:49:46 +08:00
2026-02-24 16:10:27 +08:00
| 后端技术 | 版本 | 前端技术 | 版本 |
|-----------------------------|--------|------------|---------|
| Spring Boot | 3.5.8 | Vue.js | 2.6.12 |
| Java | 17 | Element UI | 2.15.14 |
| MyBatis Spring Boot Starter | 3.0.5 | Vuex | 3.6.0 |
| MySQL Connector | 8.2.0 | Vue Router | 3.4.9 |
| SpringDoc OpenAPI | 2.8.14 | Axios | 0.28.1 |
| EasyExcel | 3.3.4 | ECharts | 5.4.0 |
| Quartz | 2.5.2 | Sass | 1.32.13 |
2026-01-26 18:49:46 +08:00
2026-02-24 16:10:27 +08:00
---
2026-01-26 18:49:46 +08:00
2026-02-24 16:10:27 +08:00
## 常用命令
2026-01-26 18:49:46 +08:00
2026-02-24 16:10:27 +08:00
### 后端 (Maven)
2026-01-26 18:49:46 +08:00
```bash
2026-02-24 16:10:27 +08:00
# 编译项目
2026-01-26 18:49:46 +08:00
mvn clean compile
2026-02-24 16:10:27 +08:00
# 运行应用 (开发环境)
2026-01-26 18:49:46 +08:00
mvn spring-boot:run
2026-02-24 16:10:27 +08:00
# 打包部署
2026-01-26 18:49:46 +08:00
mvn clean package
2026-02-24 16:10:27 +08:00
# Windows 启动
ry.bat
# Linux/Mac 启动
./ry.sh start
2026-01-26 18:49:46 +08:00
```
2026-02-24 16:10:27 +08:00
### 前端 (npm)
2026-01-26 18:49:46 +08:00
```bash
cd ruoyi-ui
2026-02-24 16:10:27 +08:00
# 安装依赖 (推荐使用国内镜像)
npm install --registry=https://registry.npmmirror.com
2026-01-26 18:49:46 +08:00
2026-02-24 16:10:27 +08:00
# 开发服务器 (端口 80)
2026-01-26 18:49:46 +08:00
npm run dev
2026-02-24 16:10:27 +08:00
# 生产构建
2026-01-26 18:49:46 +08:00
npm run build:prod
2026-02-24 16:10:27 +08:00
# 预览生产构建
2026-01-26 18:49:46 +08:00
npm run preview
```
2026-02-24 16:10:27 +08:00
### 数据库初始化
2026-01-26 18:49:46 +08:00
```bash
mysql -u root -p < sql/ry_20250522.sql
mysql -u root -p < sql/quartz.sql
```
2026-02-24 16:10:27 +08:00
---
2026-01-26 18:49:46 +08:00
2026-02-24 16:10:27 +08:00
## 模块架构
2026-01-26 18:49:46 +08:00
```
2026-02-24 16:10:27 +08:00
ccdi/
├── ruoyi-admin/ # 主应用入口 (Spring Boot 启动类)
├── ruoyi-framework/ # 核心框架 (Security, Config, Filters)
├── ruoyi-system/ # 系统管理 (Users, Roles, Menus, Depts)
├── ruoyi-common/ # 通用工具 (annotations, utils, constants)
├── ruoyi-quartz/ # 定时任务
├── ruoyi-generator/ # 代码生成器
├── ruoyi-ccdi/ # 【核心业务模块】纪检初核业务
├── ruoyi-ui/ # 前端 Vue 应用
├── sql/ # 数据库脚本
├── bin/ # 启动脚本
└── doc/ # 项目文档
2026-01-26 18:49:46 +08:00
```
2026-02-24 16:10:27 +08:00
### 模块依赖关系
2026-01-26 18:49:46 +08:00
```
2026-02-24 16:10:27 +08:00
ruoyi-admin (启动模块)
├── ruoyi-framework (核心安全配置)
├── ruoyi-system (系统核心业务)
├── ruoyi-common (共享工具)
├── ruoyi-quartz (定时任务)
├── ruoyi-generator (代码生成)
└── ruoyi-ccdi (纪检业务模块)
2026-01-26 18:49:46 +08:00
```
2026-02-24 16:10:27 +08:00
### ruoyi-ccdi 业务模块 (核心)
2026-01-26 18:49:46 +08:00
2026-02-24 16:10:27 +08:00
自定义业务模块,包含以下核心功能:
2026-01-26 18:49:46 +08:00
2026-02-24 16:10:27 +08:00
| 功能 | Controller | 实体类 |
|----------|---------------------------------------|-----------------------------|
| 员工基础信息 | CcdiBaseStaffController | CcdiBaseStaff |
| 中介黑名单 | CcdiIntermediaryController | CcdiBizIntermediary |
| 员工家庭关系 | CcdiStaffFmyRelationController | CcdiStaffFmyRelation |
| 员工企业关系 | CcdiStaffEnterpriseRelationController | CcdiStaffEnterpriseRelation |
| 信贷客户家庭关系 | CcdiCustFmyRelationController | CcdiCustFmyRelation |
| 信贷客户企业关系 | CcdiCustEnterpriseRelationController | CcdiCustEnterpriseRelation |
| 员工调动记录 | CcdiStaffTransferController | CcdiStaffTransfer |
| 员工招聘记录 | CcdiStaffRecruitmentController | CcdiStaffRecruitment |
| 采购交易 | CcdiPurchaseTransactionController | CcdiPurchaseTransaction |
2026-01-26 18:49:46 +08:00
2026-02-24 16:10:27 +08:00
**分层结构:**
2026-01-26 18:49:46 +08:00
2026-02-24 16:10:27 +08:00
- Controller: `ruoyi-ccdi/src/main/java/com/ruoyi/ccdi/controller/`
- Service: `ruoyi-ccdi/src/main/java/com/ruoyi/ccdi/service/`
- Mapper: `ruoyi-ccdi/src/main/java/com/ruoyi/ccdi/mapper/`
- Domain: `ruoyi-ccdi/src/main/java/com/ruoyi/ccdi/domain/`
- dto/: 数据传输对象
- vo/: 视图对象
- excel/: Excel导入导出实体
- XML映射: `ruoyi-ccdi/src/main/resources/mapper/ccdi/`
2026-01-26 18:49:46 +08:00
2026-02-24 16:10:27 +08:00
---
2026-01-26 18:49:46 +08:00
2026-02-24 16:10:27 +08:00
## 后端开发规范
2026-01-26 18:49:46 +08:00
2026-02-24 16:10:27 +08:00
### 通用规范
2026-01-26 18:49:46 +08:00
2026-02-24 16:10:27 +08:00
- **新模块命名**: 项目英文名首字母集合 + 主要功能 (如 `ruoyi-ccdi`)
- **代码分离**: 新功能代码与若依框架自带代码分离Controller 放在新模块中
- **审计字段**: 实体类不继承 BaseEntity单独添加审计字段通过注释实现自动插入
2026-01-26 18:49:46 +08:00
2026-02-24 16:10:27 +08:00
### Java 代码风格
2026-01-26 18:49:46 +08:00
2026-02-24 16:10:27 +08:00
```java
// 使用 @Data 注解
@Data
public class CcdiBaseStaff {
// 审计字段通过注释实现自动插入
/** 创建者 */
private String createBy;
/** 创建时间 */
private Date createTime;
/** 更新者 */
private String updateBy;
/** 更新时间 */
private Date updateTime;
}
// 服务层使用 @Resource 注入
@Resource
private ICcdiBaseStaffService baseStaffService;
```
2026-01-26 18:49:46 +08:00
2026-02-24 16:10:27 +08:00
### 分层规范
2026-01-26 18:49:46 +08:00
2026-02-24 16:10:27 +08:00
- **Controller**: 所有接口添加 Swagger 注释,分页使用 MyBatis Plus Page
- **Service**: 简单 CRUD 用 MyBatis Plus 方法,复杂操作在 XML 写 SQL
- **DTO/VO**: 接口传参使用独立 DTO返回使用独立 VO不与 entity 混用
2026-01-26 18:49:46 +08:00
2026-02-24 16:10:27 +08:00
### API 响应格式
2026-01-26 18:49:46 +08:00
```java
2026-02-24 16:10:27 +08:00
// 成功
2026-01-26 18:49:46 +08:00
AjaxResult.success("操作成功", data);
2026-02-24 16:10:27 +08:00
// 错误
2026-01-26 18:49:46 +08:00
AjaxResult.error("操作失败");
2026-02-24 16:10:27 +08:00
// 分页
Page<CcdiBaseStaff> page = new Page<>(pageNum, pageSize);
IPage<CcdiBaseStaff> result = baseStaffMapper.selectPage(page, queryWrapper);
return AjaxResult.success(result);
2026-01-26 18:49:46 +08:00
```
2026-02-24 16:10:27 +08:00
---
2026-01-26 18:49:46 +08:00
2026-02-24 16:10:27 +08:00
## 前端开发规范
### 目录结构
```
ruoyi-ui/src/
├── api/ # API 请求定义 (与后端 Controller 对应)
├── views/ # 页面组件 (按功能模块组织)
│ ├── ccdiBaseStaff/
│ ├── ccdiIntermediary/
│ └── ...
├── components/ # 可复用组件 (复杂组件需拆分)
├── router/ # 路由配置
└── store/ # Vuex 状态管理
```
### API 调用示例
2026-01-26 18:49:46 +08:00
```javascript
import request from '@/utils/request'
2026-02-24 16:10:27 +08:00
export function listStaff(query) {
2026-01-26 18:49:46 +08:00
return request({
2026-02-24 16:10:27 +08:00
url: '/ccdi/baseStaff/list',
2026-01-26 18:49:46 +08:00
method: 'get',
params: query
})
}
2026-02-24 16:10:27 +08:00
```
2026-01-26 18:49:46 +08:00
2026-02-24 16:10:27 +08:00
### 菜单联动
添加页面和组件后,需要同步修改数据库中的菜单表 (`sys_menu`)。
---
## 特殊功能
### 异步导入
支持大数据量异步 Excel 导入,通过 taskId 查询导入状态:
```java
@PostMapping("/import")
public AjaxResult asyncImport(@RequestParam("file") MultipartFile file) {
String taskId = asyncImportService.startImport(file);
return AjaxResult.success("导入任务已启动", taskId);
}
@GetMapping("/import/status/{taskId}")
public AjaxResult getImportStatus(@PathVariable String taskId) {
return AjaxResult.success(asyncImportService.getStatus(taskId));
2026-01-26 18:49:46 +08:00
}
```
2026-02-24 16:10:27 +08:00
### EasyExcel 字典下拉框
2026-01-26 18:49:46 +08:00
2026-02-24 16:10:27 +08:00
导入模板支持字典下拉框配置,提升数据录入准确性。
2026-01-26 18:49:46 +08:00
2026-02-24 16:10:27 +08:00
### 权限控制
2026-01-26 18:49:46 +08:00
2026-02-24 16:10:27 +08:00
基于 Spring Security + JWT 的角色菜单权限系统:
- 权限格式: `system:user:edit`, `ccdi:staff:list`
- 数据权限: 支持全部、自定义、部门等范围
---
## 测试与验证
### 测试账号
- **用户名**: `admin`
- **密码**: `admin123`
### 登录获取 Token
2026-01-26 18:49:46 +08:00
```bash
2026-02-24 16:10:27 +08:00
# 登录接口
POST /login/test?username=admin&password=admin123
```
### API 文档
- **Swagger UI**: `/swagger-ui/index.html`
- **API Docs**: `/v3/api-docs`
### 测试规范
- 不在命令行启动后端进行测试
- 生成可执行的测试脚本进行验证
- 测试完成后保存接口输出并生成测试用例报告
---
## 配置说明
| 配置项 | 值 |
|---------|-------------------|
| 后端端口 | 8080 |
| 前端开发端口 | 80 |
| 默认管理员 | admin/admin123 |
| JWT 有效期 | 30 分钟 |
| 文件上传限制 | 单文件 10MB, 总计 20MB |
### 配置文件位置
| 配置 | 路径 |
|----------|------------------------------------------------------|
| 主配置 | `ruoyi-admin/src/main/resources/application.yml` |
| 开发环境 | `ruoyi-admin/src/main/resources/application-dev.yml` |
| 数据库连接 | `application-dev.yml` |
| Redis 配置 | `application-dev.yml` |
---
## 重要文件路径
2026-01-26 18:49:46 +08:00
2026-02-24 16:10:27 +08:00
| 用途 | 路径 |
|---------------|--------------------------------------------------------------------------------|
| 应用入口 | `ruoyi-admin/src/main/java/com/ruoyi/RuoYiApplication.java` |
| 安全配置 | `ruoyi-framework/src/main/java/com/ruoyi/framework/config/SecurityConfig.java` |
| 业务 Controller | `ruoyi-ccdi/src/main/java/com/ruoyi/ccdi/controller/` |
| 业务 Mapper XML | `ruoyi-ccdi/src/main/resources/mapper/ccdi/` |
| Vue 路由 | `ruoyi-ui/src/router/index.js` |
| Vuex Store | `ruoyi-ui/src/store/` |
| 前端 API | `ruoyi-ui/src/api/` |
2026-01-26 18:49:46 +08:00
2026-02-24 16:10:27 +08:00
---
2026-01-26 18:49:46 +08:00
2026-02-24 16:10:27 +08:00
## 数据库规范
- **新建表名**: 需要加上项目英文名首字母集合前缀 (如 `ccdi_base_staff`)
---
## 文档管理
- **文档语言**: 使用简体中文编写 .md 文档
- **文档目录**: 所有生成的文档放在 `doc/` 目录下,按类型分类
- **需求分析**: 在 `doc/` 目录下新建文件夹,以需求内容命名
2026-01-26 18:49:46 +08:00
2026-02-24 16:10:27 +08:00
### doc 目录结构
```
doc/
├── api-docs/ # API 文档
├── database/ # 数据库相关
├── design/ # 设计文档
├── implementation/ # 实施文档
├── requirements/ # 需求文档
└── test-scripts/ # 测试脚本
2026-01-26 18:49:46 +08:00
```
2026-02-24 16:10:27 +08:00
---
## OpenSpec 工作流
项目使用 OpenSpec 进行规范驱动开发,参考 `openspec/AGENTS.md`
### 何时创建 Proposal
**需要创建:**
- 新功能或能力
- 破坏性变更 (API, 数据库结构)
- 架构变更
- 改变行为的性能优化
**无需创建:**
- Bug 修复 (恢复预期行为)
- 拼写错误、格式、注释
- 非破坏性依赖更新
- 配置变更
---
## 沟通规范
- 永远使用简体中文进行思考和对话