docs(margin): 修正 CalcMarginInterest remarks——SwapIntervalList 单段是保证金本性而非限制

第2点措辞修正:原写"SwapIntervalList 必须单段(多段会漏分段)"误导,把业务本性误述成代码限制。
实际:保证金=固定利率(业务定义),SwapIntervalList 多段是融资腿 FR007 概念与保证金无关;
CalcMarginInterest 只消费 rate(GetFixedRate 已处理分段),不直接读 SwapIntervalList,
单段 segmentRates 是对固定利率的正确建模。纯注释,零行为变化。
This commit is contained in:
hjhan
2026-08-14 08:14:32 +08:00
parent 692b8d753b
commit 67d7733ed6
@@ -954,11 +954,13 @@ namespace YLErp.Modules.SwapModule
/// (融资腿 orginPv=浮动端名义本金)。保留累计语义(priorAccrued + 增量),满足下游字段契约。
/// </summary>
/// <remarks>
/// 隐式假设(违反会静默算错、无 assert 防护——由前端保证金表单保证;诊断时先核对这两条):
/// 1. <b>InterestType 必须为单利</b>。本方法恒走 SimpleInterestAccrual 单利,不查 InterestType
/// 若库内 InterestMode=5/6 且 InterestType=复利(脏数据),会与旧 CalcEodInterest 复利分支不一致。
/// 2. <b>SwapIntervalList 必须单段</b>。盘中用 [(PosiStartDate, rate)] 单段,不做 BuildSegmentRates 多段;
/// rate 入参须已是生效固定利率(GetInterests:746 GetFixedRate)。若保证金利率表被改成多段会漏分段
/// 前提(由前端保证金表单 + SwapTradeService 构造保证):
/// 1. <b>InterestType=单利</b>。本方法恒走 SimpleInterestAccrual 单利,不查 InterestType
/// 若库内 InterestMode=5/6 且 InterestType=复利(脏数据),会与旧 CalcEodInterest 复利分支不一致。
/// 2. <b>保证金=固定利率</b>——这是业务定义,不是本方法的限制。前端无分段利率入口、SwapTradeService
/// 构造单段 SwapIntervalList,故 rate 入参即全程固定利率(GetFixedRate 对单段表返回 InterestRateDefault
/// 盘中 segmentRates=[(PosiStartDate, rate)] 单段是对固定利率的正确建模。SwapIntervalList 多段是融资腿
/// FR007 的概念,与保证金无关;本方法只消费 rate(GetFixedRate 已处理分段取值),不直接读 SwapIntervalList。
/// 契约与副作用:
/// 3. <b>position.InterestDirection 须已由调用方翻转</b>GetInterests:742 FlipDirection);本方法不翻转。
/// 4. <b>preEod 在 id==0 时被就地修改</b>(设 TdInterestPrincipal/PosiNotionalValue/FloatRate),与旧 CalcEodInterest 一致。