## StockChangeSourceEnum 取值与校验

本文件记录了 `stock.models.StockChangeSourceEnum` 的业务含义以及
`StockChangeRecord.clean()` 的校验规则，便于后续扩展时保持一致性。

### 入库来源（type = ADD）
- `1` 采购
- `2` 销退
- `3` 调入
- `4` 盘盈
- `5` 合并

### 出库来源（type = REMOVE）
- `6` 销售
- `7` 采购退货
- `8` 调出
- `9` 盘亏
- `10` 拆卷

### 校验逻辑
`StockChangeRecord.clean()` 会根据 `type` 判断允许的 `source_type`：

- 入库记录仅接受“入库来源”集合中的取值；
- 出库记录仅接受“出库来源”集合中的取值；
- 违背上述约束时会分别抛出
  “入库记录的来源类型无效”或“出库记录的来源类型无效”。

### 扩展指引
1. 新增来源枚举时，请根据业务属性将其划入入库或出库集合；
2. 更新 `StockChangeSourceEnum.incoming_values()` /
   `outgoing_values()` 返回的集合；
3. 同步补充 `stock/tests.py` 中
   `StockChangeRecordValidationTestCase` 的覆盖场景；
4. 若 API 文档涉及 `source_type` 取值，请同步修订。
