# REV004 违约金规则确认(2026-04-15) ## 结论 当前后续实现应以以下业务规则作为真值: > **违约金 = 欠缴水费金额 × 0.1‰ × 逾期天数** 该规则意味着: - **按日计收**,不是按月滚动 - 计算基数是**欠缴水费金额** - **不含违约金本身** - **不得利滚利** ## 业务前提 违约金产生需满足: 1. 逾期未缴 2. 经供水单位通知后仍未缴 ## 对 REV004 的实现影响 ### 1. 计算模型 后续 `late-fee reduce` 的设计与实现,应以“按日计收”模型展开,而不是“按月滚动”模型。 ### 2. date-mode 减免理解 `lateFeeType=2`(按日期)应理解为: - 对指定日期区间内对应的逾期天数区间做减免 - 先计算该区间理论应收违约金 - 再形成: - `lateFeeBefore` - `reduceAmount` - `lateFeeAfter` ### 3. 需要补齐/确认的系统要素 除现有: - `lateFeeBeginDate` - `lateFee` - `penaltyCoefficient` 还应确认或补齐: - 欠缴本金 - 通知状态 / 通知时间 - 逾期起算日 - 逾期天数 - 上限规则(如部分地区 30%) - 60 日后续处置边界 ## 与当前仓库现状的关系 ### 当前已确认存在的模型字段 - `ChargeDO.lateFeeBeginDate` - `ChargeDO.lateFee` - `CostComponentDO.penaltyCoefficient` ### 当前未确认存在的现成实现 仓库中尚未确认存在: - 明确的“按日计收违约金”统一计算器 - 明确的“按日期区间重算违约金”统一服务 因此,当前应将该规则视为: - **业务规则真值输入** - 后续需要据此补正式实现 ## 使用建议 后续 PRD / 设计稿 / 代码实现,不建议再使用“按月滚动”表述;应统一表述为: > **按日计收、按区间减免、按期累计结果** ## 追加确认(2026-04-15) ### 系数来源模型 已进一步确认: - 逐项重算违约金时,系数来源为 `CostComponentDO.penaltyCoefficient`。 - 取数链路为:`ChargeDetailDO.costComponentCode -> CostComponentDO.code -> penaltyCoefficient`。 ### 参与计算范围 - 所有未缴费用项都参与。 - 不收违约金的费用项,不做额外白名单过滤,而是通过 `penaltyCoefficient = 0` 自然贡献 0。 ### 汇总口径 - 每个费用项先单独计算违约金; - 每项先四舍五入到分; - 最后再求和。 ### 当前仓库状态 - 已确认存在上述模型链路; - 但尚未发现现成“逐项按日期重算违约金”的统一实现。