锦麟 王
|
fb59c6180a
|
支持审批流程中的分支网关和节点触发条件
|
2026-07-07 15:47:17 +08:00 |
|
tengyufan
|
cf15877bfd
|
fix: 新增交易时开始日期默认值取系统日期,不再按CHN日历调整到下一工作日
问题:系统日期0703在CHN日历中为假日,GetNonHoliday将默认TradeDate
调整为0706,但预期行为是默认值始终取系统日期0703
修改:TradeDate默认值赋值处跳过GetNonHoliday调整,直接使用
valuedateBLL.ValueDate
|
2026-07-03 13:57:59 +08:00 |
|
tengyufan
|
2e50bb2615
|
fix: 修复交易参数页面保存按钮不显示的问题
FunctionRight.xml 中 系统日期设置/交易特批/出金特批/交易相关/
平仓行权复核/平仓行权审批 等权限挂在 FunctionParent"系统管理"下,
导致 DB 中 key 为"系统管理-XXX",但代码引用"系统参数-XXX",
HasRight 始终找不到,保存按钮不显示。
修复:修改 FunctionRight.xml,新增独立 FunctionParent"系统参数"节点
将22个系统参数权限移入,与代码引用的 key 对齐。
|
2026-07-03 13:13:48 +08:00 |
|
hjhan
|
cc8b862d04
|
fix: ETF交易确认书 债券名称置空
|
2026-07-03 11:28:07 +08:00 |
|
hjhan
|
b6faa6fd1c
|
fix: 国联民生确认书模板 0-> 0.00
|
2026-07-03 11:24:04 +08:00 |
|
hjhan
|
32bcf9beb9
|
refactor(swap): FindTrade seam上提基类消除三子类重复
SwapDealService/SwapEodPositionService/SwapFlowEventService 三处 FindTrade(int)
签名和实现完全一致(DbContext.trade.Find),上提到 SwapTradeBaseService 基类。
核对确认可安全上提的只有 FindTrade(三者逐字一致):
- FindTradeExtend 不可上提: SwapEodPositionService 用 FirstOrDefault,
SwapFlowEventService 用 First(找不到抛异常),语义不同。
- FindPositions 不可上提: SwapEodPositionService 含 IsInitial 持仓,
SwapFlowEventService 排除 IsInitial + AsNoTracking,语义不同。
测试 stub override FindTrade 跨基类层级正常工作,C# virtual 多态不受影响。
SwapModule 171测试全绿,无回归。
|
2026-07-03 09:52:57 +08:00 |
|
hjhan
|
b501e21904
|
test(swap): 启用MergeCompose场景6/7+SwapFlowEventService录制钩子+RecordingSwapFlowEventService
1. MergeComposeScenarioTest 场景6/7 启用(去掉Ignore):
此前失败是stale binary(未重新编译),重新build后8场景全部通过。
- 场景6 单条merge无持仓→DealNoPosition创建交易
- 场景7 两条merge无持仓→创建交易+平仓
2. SwapFlowEventService 补OnBefore/OnAfterMergePageEvent录制钩子(默认空实现):
- OnBefore: DB查询完成、合成逻辑执行前触发,可捕获输入快照
- OnAfter: PersistEvents后触发,捕获输出事件
生产路径为空方法体,零行为影响。
3. 移植RecordingSwapFlowEventService(借鉴testable分支):
override OnAfterMergePageEvent录制golden文件,备用录制工具。
内联GoldenFileModel(简单POCO)。FullRecord_WithPreBookingPositions连库测试自动跳过。
SwapModule 171测试全绿,无回归。
|
2026-07-03 09:38:05 +08:00 |
|
hjhan
|
f0ef37b599
|
test(swap): SwapFlowEventService seam改造+MergePageEventScenarioTest(6场景全绿)
借鉴 testable 分支,只取 seam(排除 PosiPnl/NetSettmentAmount 公式改动和 MergePageEvent 拆分),
填补当前分支对开平仓合成(MergePageEvent)零覆盖的空白。
SwapFlowEventService 新增11个 protected virtual seam:
- FindTrade/FindTradeExtend/FindPositions/FindAndInvalidateFutureEvents
- GetUnderlying/GetNextBusinessDay/ResolvePositionId
- PersistEvents(替代InitEvent内联Add+SaveChanges)/BeginTransaction/CommitTransaction/RollbackTransaction
MergePageEvent/InitEvent: private→protected virtual,内联DB调用替换为seam。
InitEvent 移除 DbContext.swap_flow_event.Add(转入PersistEvents,纯函数化)。
SwapTradeBaseService.UpdateDbOption: public void→public virtual(测试override用)。
新增测试(借鉴testable分支):
- TestableSwapFlowEventService.cs(集中式共享包装类)
- MergePageEventScenarioTest.cs(6场景全绿):
Scenario1 单条无持仓开仓 / Scenario2 同向追加 / Scenario3 反向全平
Scenario4 反向部分平+开 / Scenario5 一开一平 / Scenario6 复杂组合
**未借鉴**:SearchPositionFlowEvent的PosiPnl/NetSettmentAmount公式改动(行为变更)、
MergePageEvent拆分ProcessSingleFlow等(非必需重构)。
SwapModule 169测试全绿(+6),无回归。
|
2026-07-03 09:26:13 +08:00 |
|
hjhan
|
6e9bae94c5
|
test(swap): MergeRestModeCompose seam调用替换+移植MergeComposeScenarioTest(6/8场景)
借鉴 testable 分支,把 SwapTradeAutoService 的 MergeRestModeCompose/MergeRestModelItem/
DealNoPosition/DealHasPosition 内联DB调用替换为seam调用,生产行为不变。
替换的调用点:
- MergeRestModeCompose: FindActiveSwapTrades/FindTradeExtends/FindActivePositions/GetNextBusinessDayBefore/QueryFloatRates
- MergeRestModelItem: FindClient/GetEtradingRule/FindAssetUnit/FindUnderlying/GetSwapFloatRate/FindFlowEventsForCashCheck/FindValidTrades/SaveChanges
- DealNoPosition: CreateNewSwapTrade/AutoSwapUnwind
- DealHasPosition: AutoSwapUnwind
新增测试(借鉴testable分支):
- TestableSwapTradeAutoService.cs(集中式共享包装类)
- MergeComposeScenarioTest.cs(8场景):
Scenario1-5/8 通过: 客户/权限/账户/标的校验链 + 空流水返回
Scenario6/7 [Ignore]: 创建交易路径,DealNoPosition内部实现细节待对齐后启用
SwapModule 163测试全绿(+6),无回归。
|
2026-07-03 09:20:59 +08:00 |
|
hjhan
|
6b24e6e979
|
refactor(swap): SwapTradeAutoService补18个virtual seam(借鉴testable分支)
借鉴 origin/glms/feature/refactor-swap-event-testable 的可测性改造,
当前分支 SwapTradeAutoService 此前0个seam,纯新增#region可测试化区域,无冲突。
18个protected virtual seam(默认实现=原代码,行为不变):
- 日历: GetNextBusinessDay/GetNextBusinessDayBefore
- 计算: CalculateBondYtm
- 持久化: PersistMerge/SetModelOpt/SaveChanges
- 查询: FindActiveSwapTrades/FindTradeExtends/FindActivePositions/FindActivePositionsAll/
QueryFloatRates/FindClient/FindAssetUnit/FindUnderlying/FindFlowEventsForCashCheck/FindValidTrades
- 协作服务: GetEtradingRule/GetSwapFloatRate/CreateNewSwapTrade/AutoSwapUnwind
为后续 MergeComposeScenarioTest(自动簿记流程测试)铺路。
SwapModule 157测试全绿,seam未被override时按生产实现执行,行为不变。
|
2026-07-03 09:08:12 +08:00 |
|
hjhan
|
178f1d7db8
|
docs(swap): 借鉴testable分支的Seam实践指南(团队规范沉淀)
从 origin/glms/feature/refactor-swap-event-testable 的 docs/seams-pattern-practice-guide.md 借鉴。
内容:Protected Virtual Seams 模式方法论、依赖类型提取策略表、可测试子类模式、
三层测试体系(合成+黄金+端到端)、命名约定、渐进节奏、6条经验教训。
与当前分支已采用的 seam 模式(SwapDealService/SwapEodPositionService)一致,作团队规范。
|
2026-07-03 09:05:37 +08:00 |
|
hjhan
|
e4a92c93ee
|
feat(swap): 后端只读校验告警-搬FrontendCalcReference+SwapIncome/SwapUnwind插校验
前端保持快速反馈(用户改输入立即算),后端不替代前端,仅做合理性兜底校验。
1. 搬FrontendCalcReference到YLErpDAL/Helpers(测试与生产共用同一份公式,避免分叉)
- 从FrontendCalcCharacterizationTest提取,改public,8个FC测试搬迁后全绿验证一致
2. SwapDealService新增ValidateFrontendPnL只读校验:
- 从unwindData.FlowEvents取浮动腿,PosiGrossPrice==0时跳过(避免误报)
- 调FrontendCalcReference重算,与前端传值逐字段比对
- 差异>0.01记Logger.Error(带输入快照便于排查)
- 整体try/catch吞异常,校验自身错误绝不阻断交易
- SwapUnwind/SwapIncome各插一处(FindTrade后、ExecuteInTransaction前)
不碰NLog配置(告警进Console,生产由运维采集)。SwapModule 157测试全绿。
|
2026-07-03 09:04:57 +08:00 |
|
hjhan
|
129e4bed0d
|
test(swap): 补ApproveSwapTrade/ApplySwapTrade测试+3个seam(借鉴testable分支)
借鉴 origin/glms/feature/refactor-swap-event-testable 的 SwapUnwindScenarioTest 场景4/5,
补全当前分支缺失的平仓审批流程覆盖。
SwapDealService 新增3个 protected virtual seam:
- FindSwapEvent(查待审核事件)
- FindFlowEventsByEventId(查事件关联流水)
- CloseReCheckSetTrade(前置校验包装)
ApproveSwapTrade/ApplySwapTrade 重构为调seam,生产行为不变。
SwapDealSettlementTest 新增2个测试(SD_005/006,共6个):
- SD_005 ApproveSwapTrade 全平仓审核: 反序列化swap_event.EventData→资金流水→TradeStatus
- SD_006 ApplySwapTrade 提交审核: CloseReCheck前置校验+SwapRealizedPnL=SwapCloseAmount
融合策略: 保留当前分支SwapIncome资金流水断言独特价值(SD_001/002),
借鉴testable分支审批流程覆盖(SD_005/006),不二选一。
SwapModule 157测试全绿,无回归。
|
2026-07-03 08:30:36 +08:00 |
|
hjhan
|
cf0d965ff8
|
test(swap): 前端计算逻辑特征化测试(8场景含用户可变输入)
用C#忠实重写前端JS公式作参考实现(FrontendCalcReference),冻结前端计算行为,
为后端校验/重算兜底提供金标准(注:前端保持快速反馈,不搬到后端)。
8个场景覆盖用户可变输入分支:
- FC_001-005 平仓页: 默认值/改标的价格/改平仓数量/改利息金额/非债券空头方向因子
- FC_006-008 结息页: 全量结算/改标的价格/含利息腿与预付金腿总额
参考实现内部用规范命名(EntryDirtyPrice/ExitDirtyFeePrice/floatRatio/longRatio),
践行《互换价格字段命名规范决策文档》,作命名规范活样板。
|
2026-07-03 08:22:55 +08:00 |
|
hjhan
|
a207927f1b
|
test(swap): SwapDealService抽7个virtual seam + 手动结算内存测试
攻克SwapIncome/SwapUnwind零单元测试覆盖的盲区(此前仅DBRecording,CI不跑)。
SwapDealService补7个protected virtual seam(参考已验证的SwapEodPositionService模式):
- FindTrade/AddClientCash/SaveSwapDeal(原private改protected virtual)
- SaveAllChanges/ExecuteInTransaction/CallSaveSwapTradeClientCash/TriggerRealtimeSwapPosition
生产实现行为不变,SwapIncome/SwapUnwind/ApproveSwapTrade重构为调seam。
新增SwapDealSettlementTest.cs(4个内存测试):
- SD_001 SwapIncome资金流水金额=-SwapRealizedPnL
- SD_002 含预付金返息双流水
- SD_003 SwapUnwind全平仓持仓归零+状态变更
- SD_004 DealFloatPosition含费价重算(后端唯二真做计算处)
红灯验证通过(改错金额符号测试立即失败)。
|
2026-07-03 08:22:43 +08:00 |
|
hjhan
|
782e1f6a7a
|
refactor(swap): 债券价格÷100转换收敛到BondPriceConverter统一入口
消除9处价格转换字面量(*0.01m/*100),统一走BondPriceConverter.ToStorage/ToDisplay。
- 新增YLErpDAL/Helpers/BondPriceConverter.cs(含可空重载)
- 批次1(危险字面量): BondPaymentService/RealtimePnlCalc/RealTimeClientBanlanceService/SwapTradeAutoService
- 批次2-4(调用收敛): SwapFlowService/SwapFlowImportService/SwapEndConfirmService/EodPriceProvider/EodPriceQueryService
- RealtimePnlCalc:601/602价格×数量维度交织处加注释,不机械合并
不改bondPriceMultiple常量值,纯调用方式收敛。SwapModule 155测试全绿,行为不变。
|
2026-07-03 08:22:27 +08:00 |
|
锦麟 王
|
de0e7f791b
|
BugFix 计算中都使用GrossPrice
|
2026-07-02 20:46:58 +08:00 |
|
wjl
|
bfb69c2eae
|
Bugfix 修改字段错误
|
2026-07-02 19:24:14 +08:00 |
|
wjl
|
6b2ec7c8c1
|
回退TradingAmountAvg的修改,后续全价(含费)或者全价(不含费)再梳理
|
2026-07-02 18:50:58 +08:00 |
|
hjhan
|
ed80745bf2
|
字段命名建议
|
2026-07-02 18:09:27 +08:00 |
|
锦麟 王
|
96ddaee582
|
Merge branch 'glms/feature/1.4.2' of http://git.yiliantech.com/gitlab/otc-dev/zszq-trs into glms/feature/1.4.2
|
2026-07-02 17:25:26 +08:00 |
|
锦麟 王
|
dcf649f27e
|
#EQD-6402 手动互换-保存后价格精度不正确
|
2026-07-02 17:25:07 +08:00 |
|
张名锐
|
64299aa744
|
cleanup: remove leftover risk engine references
|
2026-07-02 16:19:26 +08:00 |
|
张名锐
|
c94a717183
|
Revert "feat: 新增风控引擎RiskEngine模块(第一版骨架)"
This reverts commit 4140293b36.
|
2026-07-02 16:14:43 +08:00 |
|
张名锐
|
8cff296be3
|
Revert "feat: 风控引擎核心重构 - 表达式树编译 + Roslyn Scripting + 规则模型合并"
This reverts commit 3e357312c2.
|
2026-07-02 16:14:24 +08:00 |
|
张名锐
|
d5a4eab2ec
|
Revert "feat(风控引擎): RiskRuleService/RiskRuleController 权限控制及需求对齐"
This reverts commit a259b745ce.
|
2026-07-02 16:14:04 +08:00 |
|
张名锐
|
d01253a5da
|
Revert "feat: 规则双模式公式表达式(RuleExpr)& 字段精简重构"
This reverts commit 28ed20e527.
|
2026-07-02 16:13:41 +08:00 |
|
张名锐
|
4ac18c4810
|
Revert "feat(risk-engine): 完善风控规则种子数据与 CRUD 接口优化"
This reverts commit c2fc699e57.
|
2026-07-02 16:05:42 +08:00 |
|
张名锐
|
75dc6f182b
|
Revert "refactor(risk-engine): ConditionJson 改为 RuleCondition 数组格式,精简 DTO 命名"
This reverts commit 3bf90e25ef.
|
2026-07-02 16:05:40 +08:00 |
|
张名锐
|
d0e6b31d5c
|
Revert "优化调整规则管理"
This reverts commit e8ef5be862.
|
2026-07-02 16:05:38 +08:00 |
|
张名锐
|
dae112d199
|
Revert "fix(risk-engine): 修复多个风控引擎问题"
This reverts commit d7c09c793a.
|
2026-07-02 16:02:49 +08:00 |
|
张名锐
|
d1804710f3
|
Revert "优化字段类型"
This reverts commit 10b08f8f21.
|
2026-07-02 16:02:49 +08:00 |
|
张名锐
|
7347e527a7
|
Revert "修改URL地址"
This reverts commit 5caad4d0ff.
|
2026-07-02 16:02:43 +08:00 |
|
张名锐
|
eb778677e9
|
Revert "修改风控规则操作权限"
This reverts commit f53ef95222.
|
2026-07-02 16:02:41 +08:00 |
|
张名锐
|
1a15918f3d
|
Revert "修改风控规则操作权限"
This reverts commit 29ac61e2d5.
|
2026-07-02 16:01:38 +08:00 |
|
张名锐
|
b2dce0e4f7
|
fix(swap): 修复互换交易流程事件数据填充问题
- 添加SwapTradeNo、EventType和EventReason字段到流程事件
- 修正EventType枚举类型从SwapEventTypeEnum改为SwapFlowEventTypeEnum
- 在SaveSwapDeal方法中添加交易信息验证逻辑
- 提取FillSwapFlowEvent方法统一处理流程事件数据填充
- 优化数据库保存操作确保数据一致性
|
2026-07-02 14:28:47 +08:00 |
|
张名锐
|
3534ebb342
|
fix(trade): 修正对客交易判断逻辑
- 修改了GuolianContractNoGenerator中对客交易的判断条件
- 将判断标准从"乙方=对客"改为"甲方=对客"
- 更新了相关注释以反映新的业务规则
|
2026-07-02 14:07:19 +08:00 |
|
张名锐
|
7d52311220
|
fix(swap-trade): 修正展期平仓页面数量显示问题
- 将浮仓数量字段从 floatPosition.Quantity 更新为 deal.CloseQty
- 确保页面显示正确的平仓数量信息
|
2026-07-02 13:32:02 +08:00 |
|
张名锐
|
23d58ed064
|
Merge remote-tracking branch 'origin/glms/feature/1.4.2' into glms/feature/1.4.2
|
2026-07-02 13:22:05 +08:00 |
|
锦麟 王
|
365711b5ff
|
自动互换分红时,期末结算全价使用PosiGrossPrice
|
2026-07-02 13:02:14 +08:00 |
|
hjhan
|
f88da59874
|
日期 事件 期望行为
D1=2026-01-06 无事件(Copy 分支) TdPosiDividend=1天增量,PosiDividendSum=增量
D2=2026-01-07 部分平仓 30%(EventType=2, Quantity=300, DividendIn=按比例) PosiQuantity→700,TdPosiDividend按(700)算,PosiDividendSum递推
D3=2026-01-08 无事件 增量按剩余700算
D4=2026-01-09 互换结算(EventType=3, DividendIn=部分待实现金额,不扣持仓) PosiQuantity不变=700,TdCloseDividend=互换DividendIn,PosiDividendSum递推
D5=2026-01-10 无事件 继续按700累积
D6=2026-01-11 全平(EventType=2, Quantity=700, 全部待实现作DividendIn) PosiQuantity→0,PosiDividendSum=0(else分支)
|
2026-07-02 12:59:16 +08:00 |
|
hjhan
|
0910969e3f
|
fix(swap): PosiDividendSum精度差异修复(GLMS-20260105-0007)
问题:互换后PosiDividendSum=-89999.64(应为-90000),差0.36元。
根因:UpdateEodPosition cs:1635从头重算PosiDividendSum
(Round(全程,2)-已实现),与CopyEodPosition逐天递增
(每天Round(增量,2)累积)产生舍入误差累积。
修复:cs:1635改为递增模式
PosiDividendSum = eod.PosiDividendSum + TdPosiDividend - TdCloseDividend
与InterestIncomeSum的递增模式一致,避免从头重算的精度差异。
验证(golden录制/回放TDD):
- 真实数据录制GLMS-20260105-0007的eod快照+输入数据
- 回放重新调UpdateEodPosition:修复前=-89999.64(红灯),
修复后=-90000(绿灯,精确匹配)
- 121个测试全通过,无回归
|
2026-07-02 10:47:23 +08:00 |
|
tengyufan
|
56f9f980c2
|
Merge remote-tracking branch 'origin/glms/feature/1.4.2' into glms/feature/1.4.2
|
2026-07-02 10:31:58 +08:00 |
|
tengyufan
|
535eac0f62
|
fix: 交易日历IB逻辑收窄——仅成交日期默认值使用银行间日历
- 回退 ylotc.calendar.js 至纯CHN,恢复全部日期选择器为证券交易所交易日历
- SwapTrade2Controller 新增 GetBestCountry 按年份判断IB数据是否存在
- 仅成交日期(TradeDate)默认值使用IB优先/CHN回退,开始日期和到期日期保持CHN
- 平仓及其他交易页面日期选择器不再受银行间日历影响
|
2026-07-02 10:31:47 +08:00 |
|
hjhan
|
0e045d89db
|
test(swap): GLMS-20260105-0007分红精度差异golden红灯(复现0.36差异)
用真实测试库数据录制golden,回放复现0.36精度差异:
- 互换前 PosiDividendSum=-90400,互换支付-400
- 期望 PosiDividendSum=-90000,实际=-89999.64,差异0.36
- 回放断言失败(红灯坐实bug)
根因:UpdateEodPosition cs:1635从头重算PosiDividendSum
(Round(全程,2)-已实现),与CopyEodPosition逐天递增
(每天Round(增量,2)累积)产生舍入误差。
录制方法Record_FromRealDB标[Ignore],手动跑生成golden。
回放方法Replay_VerifyPrecisionDiff进CI,当前红灯(期望=-90000,实际=-89999.64)。
|
2026-07-02 10:28:23 +08:00 |
|
张名锐
|
13b9c2a451
|
refactor(Trade_Self): 优化互换交易编辑权限判断逻辑
- 提取互换事件检查条件为独立变量 hasSwapDealEvent
- 添加对平仓、互换、自动互换事件类型的检查
- 将复杂条件判断重构为更清晰的逻辑结构
- 保持原有业务逻辑不变的情况下提高代码可读性
|
2026-07-02 10:14:42 +08:00 |
|
hjhan
|
d11e332ff3
|
test(swap): golden录制/回放基础设施+DealInterests场景
引入golden回放框架,补充合成测试的精确值验证缺口。
新增GoldenReplayFramework.cs:
- GoldenScenarioModel: 通用golden数据模型(输入+期望输出)
- GoldenAssert: 精确字段对比(容许指定位数误差),逐字段验证
新增DealInterestsGoldenReplayTest.cs:
- Record_AllGoldenScenarios: 生成golden JSON(标Ignore,手动跑)
- Replay_AllGoldenFiles: 读golden重跑+精确对比(进CI)
2个golden场景:
- 互换结清后待实现归零: InterestIncomeSum=0.82191780822(精确到11位)
- 普通日归档递增(回放暂不支持自动重放,留后续)
golden文件持久化到Resources/GoldenFiles/DealInterestsGolden/
价值:重构时如果任何字段变了(哪怕第8位小数),回放立刻失败。
守恒测试验证大方向对,golden验证精确值对。
验证: 119+1(回放)=120全通过。
|
2026-07-02 09:37:18 +08:00 |
|
hjhan
|
64f0c82bbb
|
test(swap): 多步生命周期守恒测试(数学不变量验证)
用数学守恒约束验证利息在多次操作后不丢失/不重复。
这类测试的价值:不管代码怎么改,只要守恒不成立就报错。
4个守恒场景:
- MS_001: 连续收盘10天,每天增量之和=10天总利息(防指数增长/丢失)
- MS_002: 半平50%+后续全平,两次利息都>0不为负(防consumedInterest扣过头)
- MS_003: 互换结清后再平仓只有增量(单利靠eod归零传递)
- MS_004: 多次互换(第5天+第10天)+最终平仓(第15天),
累计consumed+平仓=全程复利利息(守恒不变量)
StubDealService支持构造注入consumedInterest和floatRate。
CalcEodInterest返回(当日增量,全程累计)元组,正确区分TdInterestAmount和InterestAmount。
验证: 115+4=119全通过。
|
2026-07-02 09:20:41 +08:00 |
|
hjhan
|
fb0ab3e948
|
test(swap): ClearSwapPositions重收盘清理合成测试(78751f0a覆盖)
验证78751f0a的核心修复:重收盘清理自动互换资金记录时排除手动互换。
4个测试场景:
- CSW_001: 自动互换资金记录被正确选中删除
- CSW_002: 手动互换资金记录被排除(manualClientCashIds排除逻辑)
- CSW_003: 已在excludedClientCashIds中的记录不重复选中
- CSW_004: 预付金返息记录也参与清理(手动被排除)
Stub override 3个虚方法注入内存数据:
FindFlowEventsByEventIds/FindManualClientCashIds/FindClientCashRecords
至此4个最近修复全部有合成测试覆盖:
①复利consumedInterest(✅) ②eod InterestIncomeSum(✅)
③重收盘误删资金(✅) ④分红重复计算(✅)
验证: 111+4=115全通过。
|
2026-07-02 09:11:38 +08:00 |
|
hjhan
|
17005aa539
|
refactor(swap): ClearSwapPositions接缝-GetLegacyAutoSwapClientCashRecords可测化
SwapTradeBaseService加3个protected virtual虚方法:
- FindFlowEventsByEventIds: 查flow_event(原DbContext.swap_flow_event)
- FindManualClientCashIds: 查手动互换ClientCashId(原DbContext.swap_event)
- FindClientCashInCashOut: 查资金记录(原DbContext.ClientCashInCashOut)
GetLegacyAutoSwapClientCashRecords改为protected virtual,
内部3处DB查询替换为调虚方法。
这是78751f0a(重收盘误删资金修复)的核心逻辑:
GetLegacyAutoSwapClientCashRecords负责排除manualClientCashIds,
确保手动互换资金记录不被误删。
验证: 111个测试全通过。
|
2026-07-02 09:08:05 +08:00 |
|