09-项目目录结构.md
5.32 KB
09-项目目录结构
一、仓库顶层
.
├── CLAUDE.md # Claude Code 主指令
├── README.md # 项目说明(人工补充)
├── .env.local # 本地凭据(不入 git)
├── .gitignore
├── .githooks/ # 项目级 git hooks
│ └── pre-push # push 前触发本地全量测试闸门
├── scripts/ # 工具脚本
│ ├── test.sh # 全量测试入口
│ └── setup-test-db.sh # DROP+CREATE 测试库
├── sql/
│ └── migrations/ # Flyway 顺序迁移文件
│ └── V1__initial_schema.sql
├── docs/ # 见 § 四
├── backend/ # 后端工程(Spring Boot + Maven)
└── frontend/ # 前端工程(React + Vite)
二、后端目录
根包名:com.xly.erp
backend/
├── pom.xml
└── src/
├── main/
│ ├── java/<根包路径>/
│ │ ├── ErpApplication.java # Spring Boot 启动类
│ │ ├── common/ # 通用组件
│ │ │ ├── response/ # 统一响应封装
│ │ │ ├── exception/ # 全局异常处理
│ │ │ ├── security/ # JWT / Security 配置
│ │ │ └── util/
│ │ └── module/ # 业务模块(按 docs/01 模块代码分目录)
│ │ ├── usr/ # USR 用户管理
│ │ │ ├── controller/
│ │ │ ├── service/
│ │ │ ├── mapper/
│ │ │ ├── entity/
│ │ │ ├── dto/
│ │ │ └── vo/
│ │ └── mod/ # MOD 模块管理
│ │ ├── controller/
│ │ ├── service/
│ │ ├── mapper/
│ │ ├── entity/
│ │ ├── dto/
│ │ └── vo/
│ └── resources/
│ ├── application.yml # 主配置
│ ├── application-dev.yml # dev profile
│ ├── application-test.yml # test profile
│ └── mapper/ # MyBatis-Plus XML(按模块子目录)
└── test/
└── java/<根包路径>/
└── module/ # 与 main 同结构,测试代码
三、前端目录
frontend/
├── package.json
├── vite.config.ts
├── index.html
└── src/
├── main.tsx # 应用入口
├── App.tsx # 根组件 + 全局 ConfigProvider
├── api/ # 接口封装(按模块分文件,如 usr.ts / mod.ts)
├── components/ # 通用组件
├── layouts/ # 布局组件(MainLayout 等)
├── pages/ # 业务页面(按模块分目录)
│ ├── usr/ # USR 用户管理
│ │ ├── UserList.tsx
│ │ ├── UserForm.tsx
│ │ └── UserDetail.tsx
│ └── mod/ # MOD 模块管理
│ └── ModuleTree.tsx
├── store/ # Redux Toolkit slices
├── hooks/ # 自定义 hooks
├── router/ # 路由配置
├── utils/ # 工具函数(日期、金额、权限判断等)
└── styles/ # 全局样式 / 主题 token
四、docs/ 结构
docs/
├── 01-需求清单/ # 每模块一子目录(_module.md 模块头 + REQ-*.md 卡片)
├── 02-开发计划.md
├── 03-数据库设计文档.md
├── 04-技术规范.md
├── 05-API接口契约.md
├── 06-UI交互规范.md
├── 07-环境配置.md
├── 08-模块任务管理.md
├── 09-项目目录结构.md
├── 10-验收检查清单.md
└── superpowers/ # CC 运行时产物
五、命名与放置约定
-
根包:
com.xly.erp,所有 Java 类必须在此包或其子包下 -
前端命名空间:以
src/为根,按模块代码(小写)建子目录 -
Controller:放
module/<mod>/controller/,类名<Entity>Controller,提供 RESTful 接口 -
Service:接口
<Entity>Service+ 实现<Entity>ServiceImpl,放module/<mod>/service/[impl/] -
Mapper:接口放
module/<mod>/mapper/,XML 放resources/mapper/<mod>/ -
DTO:入参对象,放
module/<mod>/dto/,命名<Action><Entity>DTO(如CreateUserDTO) -
VO:响应对象,放
module/<mod>/vo/,命名<Entity>VO或<Entity><Scope>VO(如UserListVO) -
Entity:与数据库表 1:1 映射,放
module/<mod>/entity/ -
前端组件:通用组件放
src/components/,业务专用组件放src/pages/<mod>/components/ -
前端页面:每个 REQ 一个页面文件,放
src/pages/<mod>/,PascalCase 命名 -
前端路由:集中在
src/router/,按模块分文件后聚合