2026-05-27
2026-05-27 daniel 工作日志
Section titled “2026-05-27 daniel 工作日志”FEAT-009 v2 含税代币适配 — 全天主线(PRD v2.1 PM 拍板版上线测试服)
Section titled “FEAT-009 v2 含税代币适配 — 全天主线(PRD v2.1 PM 拍板版上线测试服)”背景:PRD v2.1 把”绝对值参数 + 3 档预设”重构为「统计分布做市 + 含税代币适配 + 滑点容忍重构 + 成本透明度」。会话开始 PM 万有库已拍板 v2.1,BE zz 在 review be-scope,FE 单方推进 v2 核心闭环 5 个 Story(S1-S5)。
FE/BE 边界对齐(早段):
- 复核
docs/FEAT-009-v2-be-scope.md—— 补 3 条遗漏 BE 工作(任务运行期 inventory snapshot / per-swap 实际滑点税字段 / runtime_stats 跨会话累计),同时把 B1/B2 升档到 A 档 P0(原文 FE 兜底”从 revert reason 解析”实际不可行) - 5 个根因归类给 BE:① 数据源在 BE 数据库 ② 跨钱包/时段/会话聚合 ③ 每客户端重复 RPC 浪费 ④ 配置集中管理 ⑤ schema 是 BE 事实
FE plan + feature 分支:
- 写
docs/plans/FEAT-009-strategy-launch-v2-frontend-plan.md轻量计划(10 story 依赖图 + Phase 节奏 + PM Q1/Q2/Q4 自决假设 + 风险) - 拉
feature/fe-002-feat-009-strategy-launch-v2分支
5 个 Story 串行实施(feature 分支 19 个 atomic feature commits):
🔬 S3 引擎采样原语(commit 802aedf):
src/engine/sampling.ts— Box-Muller 对数正态 / 指数泊松-ln(u)/λ/ 伯努利 / mulberry32 seedable RNGsrc/engine/sessionWeights.ts— 曼谷 UTC+7 6 段权重表(PRD §6)- 37 单测全过;tick.ts 集成留给 S10 + BE A6 schema 升级后做
🎨 S1 三策略 UI 重构(commits 779ab1a / 3c8f624 / 3c41035 / 2d70de5):
src/engine/strategyPresetsV2.ts— PRD §2.1/2.2/2.3 三策略风格档完整字段(σ / bias / safetyMul / slippage / hourlyBaseline 等 7-8 字段每策略)- PriceSupportForm 字段集换 v2:删 单笔金额下限/上限 + 间隔(秒);加 滑点容忍 input(PRD AC6 钦定 ≥10%)
- VolumeWashForm:必填 1 + 进阶 2(滑点容忍 买/卖分离,PRD AC8)
- PumpDumpForm:必填 3 + 进阶 4(滑点容忍方向相关 上推≥10% / 下砸≥15%,PRD AC9)
- submit 内联派生 v1 兼容字段喂 tick.ts(S10 + BE A6 schema 升级后改读
derived子对象)
🧩 S2 派生 utility + 启动前预览(commits 4a6319a / b6f3352 / 1df4d4a / d988bc5):
src/engine/strategyDerive.ts—— derivePriceSupport / deriveVolumeWash / derivePumpDump(PRD §3 派生公式集中化,单一源头)- 20 单测对照 PRD example 1(预算 5000 / 240 笔 / 平均 20.83 USDT)/ example 2(30000 量 / 720 笔 / 平均 41.67)/ example 3(推目标价 2112 预算 30min / 120 笔 / 平均 17.6)
- 3 Form 删 inline 派生代码改用 utility
LaunchPreviewModal.tsx—— 6 行 derived(笔数/单笔范围/平均/平均间隔/买卖比例/预计时长)+ 守价场景含税警示 + 二次确认(PRD §AC12)
🛡️ S4 代币税探测(commits 2a33873 / 1505025):
src/services/tokenEconomics.ts—— BE A1 endpoint stub(throw BackendNotAvailableError)+ 24h 内存 cache + validateSlippageVsTax 工具src/lib/useTokenEconomics.ts—— hook 5 态管理(idle/loading/available/manual-required/error)+ setManual + retryTaxBadge.tsx—— chip 显示 买/卖/合计税 + source 标签ManualTaxModal.tsx—— PM 手动输入买/卖税 + 「确认 0 税」快捷- 3 Form 顶部 chip 接入 + 滑点容忍 vs 买税+卖税+5% 校验(< 阻断启动 + 给建议值,PRD §AC15)
- BE A1 未上线 → 默认走 manual-required;上线后改 service
fetchFromBackend即可 - memory 钦定:FE 不写 viem simulateContract 兜底(每客户端重复浪费 RPC + dynamic-tax token 不可靠),归 BE 责任
⚡ S5 滑点重构 + 重试 + 熔断(commit cb7b05c):
types/index.ts—— PriceSupportConfig + PumpDumpConfig 加slippageTolerance?: number(optional,v1 task 兼容)- engine
pickSlippage去 v1 时代 10% 硬上限(v2 含税场景需 10-25%,砸盘到 25%),上限提到 50%(防误输入) isSlippageRevert—— 检测 INSUFFICIENT_OUTPUT_AMOUNT / INSUFFICIENT_AMOUNT- emitSignedSwap 加重试:撞墙 → 临时上调 +2% 重试 1 次(PRD AC16);slippageBoost map 注入 pickSlippage,避免改函数签名
recordSlippageFailure—— per-task 时间戳 ring buffer,10min 内 5 次 →taskStore.pause+ toast 告警(PRD §11)- 新增 SkipReason
'slippage-revert'桶 + 文案;reconcile 清理 slippageBoost + slippageFailWindow
合 test 部署 + 通知
Section titled “合 test 部署 + 通知”feature/fe-002-feat-009-strategy-launch-v2--no-ffmerge 到 test,21 commits 上线- 跑
npm run build:bsc:test重建 363 个 build artifacts(commit648bdf6) - 修复
3b4de23误把 test 分支 deploy.sh SERVICE 改成 prod 值(iro-novamarketdapp-prod→iro-novamarket-test,commit665fa68) - push origin test → 测试服自动 deploy(部署 webhook 跟 deploy.sh 联动)
- TG 通知 IRO 小组群(msg 2881 撤回 2882 改为按 PRD AC 点 6 条重组 + 5 条「测试说明」预防 QA 误报 bug)
关键决策记录(PM 4 议题)
Section titled “关键决策记录(PM 4 议题)”写 plan 时把 PM 4 议题做了判断:
- Q1 σ 精确语义 —— PRD §5 Step 1 已明确(对数正态采样 + 裁剪到 [size_min, size_max]),FE 自决落地,无需 PM 拍
- Q2 守价 / 做活跃度目标笔数公式 —— 风格档表 + example 推导可得(
每小时基准 × 24),FE 自决,example 1 数值对照通过 - Q3 守价反馈环”价偏时长占比”映射规则 —— PRD §9 只说改用,没给阈值和方向;FE 暂用 D3 临时假设(占比 >30% → ×1.15),Phase 4 S7 启动前必须 PM 拍
- Q4 v1 已跑 task 兼容性 —— FE/BE 自决:新 task 走 v2 schema + v1 老 task 跑完禁 edit,BE align 时口头确认
Memory 维护
Section titled “Memory 维护”- 沿用 [feedback-onchain-economics-estimator-be-responsibility]:S4 代币税探测 FE 端只做 manual 兜底 + 渲染,不写 viem simulate fallback。沿用既有判断没新增 memory(DDD1 事故经验已在 memory 里)
全天 commit 累计
Section titled “全天 commit 累计”today 累计 23 个 atomic commit(19 个 feature + 3 个 merge/build/deploy fix + 1 个 plan 跟踪)。tsc 全过;engine 117 单测全过(含 S3 sampling 25 + sessionWeights 12 + strategyDerive 20 + 既有 60)。
- 16:25 · 前端已部署 · [iro-bsc] · FEAT-012 K 线 history HTTP 游标分页正式服上线(dapp.novahub.global)—— 后端 zz 反馈正式服 api.novahub.global 已上 /api/kline/{coinId}/history,把 test 分支三个 commit cherry-pick 到 master-v2(接入 → limit 1500→1000 → AbortController + limit 收到 200),跑 build:bsc:prod 出产物提交并推远端。
- 16:25 · 前端已部署 · [nova-market] · FEAT-003 K 线 history HTTP 游标分页正式服上线(market.novahub.global)—— 与 iro-bsc 共用同一份后端 K 线接口升级,TG 已统一发通知到 IRO 小组群。
- 18:29 · 前端已部署 · [nova-market] · FEAT-009 v2 含税代币适配测试服上线(21 commits + 按 PRD AC 点 6 条变更 + 测试说明 5 条预防 QA 误报)
主线:等下游反馈,FE 进入”反应式”模式
FEAT-009 v2 剩余 5 个 Story(S6-S10)全部有外部依赖,硬推会写占位代码 + 增加 QA 验收混淆,不主动推进。
具体下游信号 + 对应行动:
- 等 QA Ada 验收 FEAT-009 v2 → 按 PRD AC6/8/9/11/12/15/16 + §11 滑点失败熔断逐条;如有 P0/P1 bug 直接接修
- 等 BE zz 给 7 个 P0 endpoint ETA:
- A1 代币税探测 → 解锁 S4 切真接口(半小时工作量)
- A6 task schema 升级 + derived 字段 → 解锁 S10 + S3 引擎采样真正集成
- A2/A3/A4 池子滑点 / MEV / dex_config → 解锁 S6 完整成本估算
- A7 per-swap 实际滑点税 + A8 runtime_stats 跨会话累计 → 解锁 S8 异常防护完整版
- A5 + 任务运行期 inventory snapshot → 解锁 S9 任务结束成本核算
- 等 PM tony / 万有库 拍 Q3 守价反馈环阈值方向 → 解锁 Phase 4 S7 启动;FE 暂用临时假设落 plan,Phase 1-3 不依赖
轻量任务(如果上游全 idle):
- 加单测覆盖 LaunchPreviewModal / TaxBadge / ManualTaxModal 三个组件(约 0.5d)
- 转其他 feature / 修其他 backlog bug(如有)
- 清理 v2 schema 升级后的兼容 shim TODO 注释
- BE 7 个 P0 endpoint 全部未实现 → 阻塞 FEAT-009 v2 剩余 5 Story(S6-S10);FE 单方推会写占位代码(memory 钦定 BE 责任,避免重蹈 DDD1 含税代币事故)
- BE A1 代币税探测 最关键阻塞 → 当前 FE manual-required 兜底可用,但 QA 测着像「自动探测坏了」,TG 通知已在测试说明里预防误报
- PM Q3 守价反馈环阈值未拍 → 阻塞 Phase 4 S7 启动;非紧急(FE 已用临时假设落 plan,Phase 1-3 不依赖;Phase 4 启动前必须解决)