# 医院物业SaaS管理后台 — 开发与测试规范 > 版本:v1.0 > 定位:开发团队统一规范,所有开发人员必须严格遵守 > 日期:2026-04-16 --- ## 一、后端开发规范 ### 1.1 代码分层规范 ``` Controller层:接收请求、参数校验、调用Service、返回响应 ↓ Service层:业务逻辑编排、事务管理、权限校验 ↓ Repository层:数据访问(MyBatis-Plus Mapper) ``` **严格分离原则**: | 类型 | 用途 | 位置 | |------|------|------| | DTO | 接收请求参数 | `dto/request/` | | VO | 返回响应数据 | `dto/response/` | | Entity | 数据库映射 | `entity/` | | 禁止 | Controller直接返回Entity | — | | 禁止 | Service层接收HttpServletRequest | — | ### 1.2 命名规范 | 对象 | 规范 | 示例 | |------|------|------| | 包名 | 全小写,模块开头 | `com.hospital.mgmt.modules.repair` | | 类名 | 大驼峰 | `RepairOrderService` | | 方法名 | 小驼峰,动词开头 | `createOrder`, `getById`, `listByStatus` | | 常量 | 全大写下划线 | `MAX_UPLOAD_SIZE` | | 数据库表名 | 小写下划线,模块前缀 | `repair_order`, `inspection_task` | | 数据库字段 | 小写下划线 | `created_at`, `tenant_id` | | 枚举值 | 全大写下划线 | `ACTIVE`, `PENDING` | | API路径 | 小写连字符,资源复数 | `/repair-orders`, `/check-in` | ### 1.3 数据库规范 - 所有业务表必须包含 `tenant_id` 字段 - 主键使用雪花算法生成 BIGINT - 逻辑删除:`deleted` 字段(0-正常,1-已删除) - 枚举值存储为 VARCHAR,禁止使用数字枚举 - JSON 字段用于存储动态配置(如 `check_items`, `skills`),禁止存储核心查询字段 - 索引规范: - 所有表自动在 `tenant_id` 上建立索引 - 业务编码字段建立唯一索引 - 状态+时间组合查询建立复合索引 - 禁止在 JSON 字段上建索引 ### 1.4 模块开发规范 - 详见 `05-接口规范.md` IModulePlugin 规范 - 每个模块必须实现 `IModulePlugin` 接口 - 模块目录结构: ``` modules/{module-code}/ ├── {ModuleCode}Module.java # IModulePlugin实现类 ├── config/ # 模块配置 ├── controller/ # REST控制器 ├── service/ # 业务服务 ├── entity/ # 数据实体 ├── dto/ # 数据传输对象 ├── repository/ # 数据访问层 ├── event/ # 模块事件 └── resources/ ├── module.yml # 模块描述文件 └── db/migration/ # 数据库迁移脚本 ``` - 模块间通信必须通过 Spring Event,禁止跨模块直接调用 Service - 新模块上线前必须通过审核清单(详见 `05-接口规范.md` 模块安全规范) ### 1.5 审计日志规范 - 所有写操作自动记录审计日志(AOP 切面统一处理) - 业务代码中只需在 Controller 方法上添加 `@AuditLog` 注解 - 记录内容自动采集:操作人、时间、IP、模块、操作类型 - 变更前后数据快照:UPDATE/DELETE 操作自动对比记录 - 禁止在业务代码中手动记录审计日志 --- ## 二、前端开发规范(Vue 3 + TypeScript) ### 2.1 组件规范 | 规范项 | 要求 | |--------|------| | 组件命名 | 大驼峰,多词组合(`RepairOrderList.vue`) | | 组件结构 | `