---
name: code-quality
description: 通用编码质量规范。适用于所有前端项目，与具体技术栈无关。当涉及任何代码实施、审计任务时，PM 必须参考此 Skill 并将要点注入子 Agent。
---

# 通用编码质量规范

## 1. TypeScript 严格模式

- **禁止** `any` 类型。所有变量、参数、返回值必须有明确类型。
- props 和 state 必须严格类型化，使用 `interface` 或 `type` 定义。
- 接口定义统一放在 `data.d.ts` 文件中，便于服务层和组件层共享。
- 无隐式 `any`，无未使用变量，确保通过所有 lint 规则。

## 2. 组件规模红线

- **严禁**单个 React 组件文件（`.tsx`）超过 **500 行**。
- 超过必须进行拆分：
  - **UI 子组件化**: 将可复用的 UI 片段提取为独立组件。
  - **逻辑 Hooks 化**: 将复杂业务逻辑抽离到自定义 Hooks 中。
  - **Utils 分离**: 纯计算函数抽离到 `utils/` 目录。
- 原则：保持 UI 组件简洁、逻辑模块化。

## 3. 安全规范

### 3.1 金额/货币精度

- **绝不**使用原始浮点运算处理金额。
- 使用精度安全库（如 `big.js`、`decimal.js`）或将金额作为**整数（分）**处理。
- UI 层展示时再进行格式化转换。

### 3.2 XSS 防护

- **禁止** `dangerouslySetInnerHTML` 或绕过 React 转义的直接 DOM 操作。
- 任何动态内容都必须经过清理（sanitize）。

### 3.3 权限控制

- 敏感操作、路由或 UI 元素必须受权限系统保护。
- 检查"基于 ID"的未授权访问风险。

## 4. 数据交互规范

### 4.1 服务层隔离

- **所有**页面数据交互必须通过 `src/services/` 层封装的函数。
- **禁止**在组件（JSX）中内联 mock 数据或直接发起请求。
- Mock 数据统一放在项目约定的 `mock/` 目录。

### 4.2 加载状态

- 所有异步操作（请求、提交、删除等）**必须**显示加载状态（按钮 spinner 或骨架屏）。

### 4.3 防重复点击

- 所有操作按钮在执行期间必须被禁用（通过 loading + disabled 联动）。
- 防止用户双击导致重复提交。

## 5. 代码卫生

- **零 Lint 策略**: 代码必须通过所有 linting 规则。
- 无隐式 `any`，无未使用变量，hooks 中无缺失依赖数组。
- 保持 import 整洁，无未使用的导入。
