SuperAPI AI 工具集

tres-asc845-swap-reprice-skill

办公与效率

查看项目

更新于 10-15 19:56

技能介绍

用途:该技能在 TRES Finance 中实现 ASC 845(非货币性交易)下的等值交换处理。在同步交换中,让出资产(流出)的公允价值是取得资产(流入)公允价值的最佳证据,因此技能会重新计价流入腿以匹配流出腿,使清算账户净额归零。适用情形包括:月末后 swaps/trade 清算账户仍有非零余额;用户希望对一批交换交易应用 ASC 845;用户提到 setBatchUseCounterpartyFiatValue 等操作。

前置条件:需要 TRES Finance MCP 连接(user-tres-finance),所有 GraphQL 调用经该 MCP 的 execute 工具执行;变量键与嵌套输入字段必须使用 camelCase(如 timestamp_Gte 而非 timestamp_gte)。用户须指定目标 ERP 账户(要归零的清算账户,如 Swaps Clearing Account)、交易范围(日期区间 timestamp_Gte/timestamp_Lte 或指定交易哈希),并在变更执行前确认。

用法流程:1)收集参数:目标 ERP 账户名称或 ID、日期范围或交易哈希列表、可选活动标签(如 STAKING LOCKUP、SWAP,通过 tx_Classification_Activity_In 过滤,若省略则包含全部;注意使用该过滤时 classification 为 null 的交易会被排除)、币种(默认 USD)、以及 dry-run 预览或执行模式。2)查询子交易:使用 subTransaction 查询获取范围内的子交易,字段包括 id、amount、balanceFactor、timestamp、fiatValue、isManualFiatValue、belongsTo、asset.assetClass.symbol、tx 及其 classification.activity、flowRule 等;按每批 50 条分页以避免超时,合并结果保存为 JSON。3)运行编排脚本:在 skill 的 scripts 目录执行 orchestrate_reprice.py,传入输入 JSON、账户名或账户值、输出计划与变更文件:

cd "${CLAUDE_PLUGIN_ROOT}/skills/tres-asc845-swap-reprice-skill/scripts" &&
python3 orchestrate_reprice.py
--input /path/to/swap_reprice_input.json
--account-name "Swaps Clearing Account"
--output /path/to/reprice_plan.json
--mutations-output /path/to/reprice_mutations.json

按 ERP 账号过滤时用 --account-value 代替 --account-name;用户要求活动过滤时传 --activity-tags SWAP "STAKING LOCKUP"。脚本向 stdout 打印预览,并输出 repricing 计划与可直接执行的 setManualFiatValue 变量。仅需底层重计价(无编排)可直接使用 reprice_swaps.py。

重计价逻辑:计算流出法币总额与流入法币总额之差,按各流入代币数量比例分摊差额,保留原定价为基础并做最小调整。情形一(一出一入):流入新法币值等于流出法币值。情形二(一出多入):差额=流出法币值-流入法币值合计,按各流入 amount 占流入代币总量比例分摊,流入新值=原值+差额×比例。情形三(多出一入):流入新值等于各流出法币值合计。情形四(多出多入):用总额差额按同样比例分摊。边界处理:若流入代币总量为 0,则等额分摊;若子交易已是 isManualFiatValue=true,标记供用户复核;仅有流出或仅有流入的交易跳过;组内最后一个流入吸收舍入余差以保证精确匹配。

执行与验证:先向用户展示重计价计划的逐交易对照(交易标识、流出合计、流入前值、流入后值、调整额)及汇总统计(受影响交易数、流出法币总额、流入前后法币总额、清算账户残差前后对比、被覆盖的已手工定价子交易数)。未经用户明确确认不得执行变更;确认后逐条执行 setManualFiatValue(变量取自 reprice_mutations.json),逐笔而非批量执行以便优雅处理锁定期间错误;若追求速度可用 setBatchManualFiatValue,但仅适用于同一批次子交易应具有同一单价的情况(其参数为 ids 列表与 Float 型 newUnitValue,按 newUnitValue×amount 计算)。执行后重新查询并重新汇总,确认清算账户已归零。注意 setManualFiatValue 的 newFiatValue 为字符串类型。

错误处理:锁定期间会警告用户,需先通过 deleteLockedPeriod 解锁,应用更改后再用 createLockedPeriod 重新锁定;流出 fiatValue 为空则跳过并标记;流出合计为 0 则跳过;已手工定价的子交易会标记,但仅在用户确认批次后仍会覆盖。

限制:具体支持的链、币种范围、权限与计费方式等资料未提供。