# `relations-v1` 干支关系事实

`relations-v1` 负责检测命盘中明确出现的干支组合，不负责判断吉凶，也不修改 `ziping-strength-v1` 的旺衰决策量。

## 当前范围

### 天干

- 五合：甲己、乙庚、丙辛、丁壬、戊癸；
- 五行相克：木克土、土克水、水克火、火克金、金克木。

只检测年、月、日、时四个明透天干。藏干之间以及藏干与明干之间的关系暂不输出。

### 地支

- 六合：子丑、寅亥、卯戌、辰酉、巳申、午未；
- 三合：申子辰、亥卯未、寅午戌、巳酉丑；
- 六冲：子午、丑未、寅申、卯酉、辰戌、巳亥；
- 六害：子未、丑午、寅巳、卯辰、申亥、酉戌；
- 子卯刑；
- 寅巳申三刑、丑戌未三刑；
- 辰、午、酉、亥自刑。

三刑采用保守口径：只有三个成员全部出现在四柱中时，才输出 `subtype: "triple"`。只有其中两个时不输出三刑事实，避免把有流派分歧的“半刑”静默当成确定结果。

三合也采用完整口径：三个成员齐全才输出 `branch-three-combination`。半合、拱合、暗合和三会不在 v1 范围内。

## 合与合化分离

例如丁与壬同时出现时，可以确定存在天干五合关系，因此输出：

```ts
{
  type: 'stem-combination',
  members: [
    { pillar: 'month', position: 'stem', value: '丁' },
    { pillar: 'day', position: 'stem', value: '壬' },
  ],
  candidateElement: 'wood',
}
```

`candidateElement` 只表示传统关系表中的候选化行，不表示已经成功化木。是否合化需要月令、透干、通根等另一套显式规则。

## 关系可以重叠

同一对干支可以同时存在不同维度的事实。例如丁壬既属于五合，按五行关系又是壬水克丁火。`relations-v1` 会同时输出两条事实，不替调用方决定哪条关系优先。

## 不参与旺衰分数

`relations-v1` 的输出不会自动：

- 把某个根冲掉；
- 把被合天干移除；
- 修改五行属性；
- 增减旺衰决策量；
- 生成吉凶、性格或事件断语。

`ziping-strength-v2` 已采用保守口径消费这些事实：直接涉及日主的天干相克计入 1 单位泄耗克，六冲涉及根时计入 1 单位减力但不删除根；其余关系逐条记录为未计分事实。完整规则见 [algorithm-v2.md](./algorithm-v2.md)。
