# FMS 开发规范 > 规则等级:[MUST] = 必须遵守,违反即错误 [SHOULD] = 应当遵守,例外需说明 [NEVER] = 禁止 --- ## 1. 代码风格 [MUST — 最高优先级] - [MUST] **写法统一**:同类场景(API 调用、错误处理、状态管理)使用一致的写法,新增代码模仿现有同类代码的风格,不自创写法。 - [MUST] **不滥用语法糖**:能用 `if/else` 就不用三元/`?.短路`;能用 `for` 循环就不用 `reduce`/`flatMap`/解构嵌套。判断标准:不熟悉此代码的人能否一眼看懂? - [MUST] **禁止无用嵌套**:减少不必要的中变量、回调套回调、过度抽象。 - [MUST] **可读性 >= 简洁性**:写得短但看不懂 → 不合格;写得稍长但一目了然 → 合格。 ## 2. 构建与测试 - [NEVER] 完成功能后**不主动执行构建或启动服务**。 - [SHOULD] 可运行测试验证改动:后端 `./mvnw test`,前端 `pnpm fmt:check`。 - [MUST] 只有用户明确要求时,才执行构建或启动服务。 - [MUST] 交付时说明:是否执行了测试 + 测试结果 + 未执行构建。 ## 3. 后端接口 - [MUST] **只用通用接口**完成所有数据操作: - 查询:`POST /data/loaddata` - 分页:`POST /data/page` - 保存:`POST /data/saveobjt` - 取号:`GET /data/nextid` - [NEVER] 新增业务专用接口、新增 Service 类/文件。 - [NEVER] 修改通用接口的 URL、参数、返回值结构或处理逻辑。 - [MUST] 如通用接口确实无法满足需求:先说明原因 + 拟修改内容 + 影响范围,取得用户确认后再实施。 - [MUST] `bigint` 类型(如 `b_id`)序列化到前端时必须转为**字符串**。 ## 4. 前端实现 - [MUST] 表格使用项目封装的 **`fms-table`** 组件,不从零实现表格。 - [MUST] 表单输入控件**不添加 `placeholder`**,用 `label` 或说明文字表达意图。 - [MUST] 优先复用项目现有组件和 Antdv Next 组件能力,不重复造轮子。 - [SHOULD] 页面中出现 ≥2 处相同/相近功能时,提取为可复用组件、composable 或 service 方法。 - [SHOULD] 抽取复用以确有收益为前提,不为简单逻辑增加无意义的封装。 - [MUST] 不添加 `@media` 响应式断点,按桌面端实现。 - [MUST] 新增 CSS 加 `scoped`,不影响其他页面。 ## 5. CSS 规范 - [MUST] 样式写在 `