feat(trial): mirror payment-api shadow copies for Reviewer P0 #1 EligibilityResult (LES-1184)
背景
跟随 fly_moon_payment MR(同 LES-1184 Reviewer P0 #1)—— TrialFacadeService 接口签名变了(新增 checkEligibility(Long),旧 isEligible 标 @Deprecated),新增 TrialEligibilityMissReason 枚举和 TrialEligibilityResultVO。
fly_moon_payment/flymoon-payment-api,待 payment-api Maven 包 bump 并发布到 Nexus(当前 cached 版本 1.0.20260508 不含本批新类)后,删除本副本走 Nexus 解析。Dubbo 按 FQN 解析服务,本仓库副本必须与 payment 侧接口签名 byte-for-byte 一致。
改动清单
-
flymoon-agent-provider/.../service/TrialFacadeService.java:新增checkEligibility(Long),旧isEligible标@Deprecated -
flymoon-agent-provider/.../enums/TrialEligibilityMissReason.java(新):9 个枚举值副本 -
flymoon-agent-provider/.../vo/TrialEligibilityResultVO.java(新):{eligible, reason}结构副本 -
flymoon-agent-provider/.../vo/TrialPopupCheckVO.java:新增reason字段,与 payment 一致
测试
-
mvn compileflymoon-agent-provider通过 -
mvn test-compile通过(agent 侧未消费新checkEligibility,本 PR 不调用,仅保持 Dubbo facade 形状匹配)
线下验证
- 环境:s1
- 构建:build_image_flymoon_agent #158
- 部署:DM_s1_flymoon_agent
- 验证:本仓库改动是 Dubbo facade 副本同步,无新业务路径。验证方法是确认服务启动后通过
/api/trial/popup/check能拿到reason字段(即 payment 侧的响应能成功跨 Dubbo 反序列化到 agent,再回前端)
相关
- Issue: LES-1184
- payment 主 MR:fly_moon_payment!84
- 前端 MR:jennie!264
- Agent-Task-Id: 20260515-les1184-p0
执行报告(dev-workflow Stage 7)
任务摘要
- 类型:feat(架构改进 + 可观测性)
- 范围:跨仓库(fly_moon_payment + fly_moon_agent + jennie)
- 验收标准(Reviewer 给的 #1+#2+#3 三条):全部
✅ -
#1 isEligible 返回结构化结果 →
TrialEligibilityResultVO {eligible, reason} -
#1 /popup/check 透出 reason →
TrialPopupCheckVO.reason+ 前端trial_popup_aborted埋点 - #1 MissReason 覆盖 5 条规则 + ROLLOUT_GATE + PRICE_NOT_CONFIGURED(实际 9 个:含 NULL_USER_ID / NO_REGISTRATION_RECORD 兜底)
-
#2 deploy smoke:
scripts/jenkins-deploy-smoke-trial.sh已加,Jenkins pipeline 接入由 ops 跟进 -
#2 counter:log-based
[funnel.trial.eligibility_check / popup_check] result=...(Micrometer 接入留 follow-up) - #3 priceId 短路:PlanConfigServiceImpl 没动,priceId 检查放在 TrialEligibilityService 规则 0b(rollout 后、DB 前),打 MissReason=PRICE_NOT_CONFIGURED
-
#1 isEligible 返回结构化结果 →
改动清单(commit)
- fly_moon_payment
63ec6bf(10 files +507/-44) - fly_moon_agent
f2fb05ce(4 files +75) - jennie
35ed5f8a(1 file +41/-1)
部署(s1 SIT)
-
build_image_flymoon_payment #239
✅ 1m40s -
DM_s1_flymoon_payment #183
✅ 1m13s -
build_image_flymoon_agent #158
✅ 1m03s -
DM_s1_flymoon_agent #130
✅ 1m36s -
build_image_lessie_ai_web #794
✅ 1m22s -
DM_s1_lessie_ai_web #217
✅ 0m30s
测试
- 单测:
flymoon-payment-providermvn test → 139 / 139 全绿(TrialEligibilityServiceTest 含 9 个新 case:null user / rollout / priceId(null|blank|trialPlan-null) / already-paid-with-reason / pass-with-null / funnel-anchor / sanity) - agent:
mvn compile+mvn test-compile全绿 - 前端:
npx tsc --noEmit0 错,biome check src/models/trial.ts0 错
风险与后续
- 风险:本 PR 不修改 Nacos 也不改 Jenkinsfile / Grafana rules——ops 仍需推齐
trialPlan.subscription.priceId=<sit-trial-price>+trialPlan.rollout.enabled=true uidWhitelist=[QA uid],然后跑一次scripts/jenkins-deploy-smoke-trial.sh验证三种 exit code 都按预期工作 - 下一步:Reviewer 复审 → 合并 → ops 推 Nacos → smoke 跑绿 → Fifi 在 s1.jennie.im 验证弹窗
- Follow-up(不在本 PR):Reviewer P1 #4 sendBeacon / #5 recordDismiss / 小架构债 / Micrometer 接入 / payment-api Nexus bump
审计
- Agent-Task-Id: 20260515-les1184-p0