feat(welfare): 提现人工审核流程 + 看广告每日时长限流(防刷主闸) #17
Closed
marco
wants to merge 2 commits from
feat/wip-20260606 into main
pull from: feat/wip-20260606
merge into: WonderableAI:main
WonderableAI:main
WonderableAI:poc/wx-kf-compare
WonderableAI:fix/newbie-tier-restore-on-refund
WonderableAI:feat/device-info-table
WonderableAI:feat/inactivity-reset
WonderableAI:feat/wechat-login
WonderableAI:poc/wx-screenshot-compare
WonderableAI:feat/oppo-withdraw-push
WonderableAI:fix/sms-send-quota-count-success
WonderableAI:feat/inactive-account-clear
WonderableAI:fix/ad-reward-result-by-session
WonderableAI:feature/direct-vendor-push-main-20260702
WonderableAI:feat/llm-token-cost
WonderableAI:fix/withdraw-repeat-login-state
WonderableAI:feat/per-session-ad-revenue
WonderableAI:79ljh
WonderableAI:dev0708
WonderableAI:feat/coupon-success-rate
WonderableAI:feat/analytics-success-rate
WonderableAI:admin-custom-perms
WonderableAI:fix/dashboard-reward-coin-feed-scene
WonderableAI:7-6ljh
WonderableAI:feat/marquee-real-shuffle-and-browse
WonderableAI:origin/intern/chenshuobo/dashboard-jd-cps-20260628
WonderableAI:feat/marquee-preview-mode-and-default-nickname
WonderableAI:fix/invite-cash-ledger-reconcile
WonderableAI:feat/admin-dashboard-metrics
WonderableAI:feat/openobserve-api-metrics
WonderableAI:feat/ad-report-period-dau-arpu
WonderableAI:feat/admin-rbac-config-compare
WonderableAI:feat/meituan-cps-city-geo
WonderableAI:7-4ljh
WonderableAI:feat/compare-record-backend-harvest
WonderableAI:7-1ljh-invite-reward-notest
WonderableAI:7-3-ljh-testlab
WonderableAI:feat/api-docs-reorg
WonderableAI:refactor/simplify-login-ratelimit
WonderableAI:feature/direct-vendor-push-20260702
WonderableAI:7-1ljh
WonderableAI:fix/heartbeat-timeout-1h
WonderableAI:feat/h5-sgbridge
WonderableAI:feat/h5-offline-pool
WonderableAI:feat/feedback-type-reply-withdraw-type
WonderableAI:feat/ad-revenue-trace-aggregate
WonderableAI:fix/alembic-merge-heads
WonderableAI:intern/chenshuobo/dashboard-jd-cps-20260628
WonderableAI:chore/pangle-revenue-timer
WonderableAI:feat/coupon-data-dashboard
WonderableAI:6-29ljh
WonderableAI:feat/admin-adjust-cash-account
WonderableAI:feat/h5-sgbridge-gk
WonderableAI:feat/admin-feedback-pricereport-api
WonderableAI:fix/ad-revenue-ecpm-cap-appenv
WonderableAI:intern/chenshuobo/wechat-login-20260629
WonderableAI:feat/pangle-report-revenue
WonderableAI:feat/launch-confirm-self-evolution
WonderableAI:intern/chenshuobo/meituan-feed-improve-20260610
WonderableAI:feat/mine-h5
WonderableAI:perf/pricebot-shared-httpx-client
WonderableAI:feat/wysiwyg-display-coin
WonderableAI:fix/ad-ecpm-dedup-500
WonderableAI:feat/ad-revenue-report-paging-audit
WonderableAI:feature/draw-feed-ad
WonderableAI:feat/invite-v2-cash-reward
WonderableAI:feat/analytics-events
WonderableAI:feat/cps-day-user-drilldown
WonderableAI:feat/sms-login-rate-limit
WonderableAI:feat/admin-device-liveness
WonderableAI:fix/ad-reward-env-isolation
WonderableAI:feat/cps-wx-userinfo-auth
WonderableAI:feat/wx-cps-meituan-jd-uinfo-auth
WonderableAI:feat/withdrawal-rewarded-ad
WonderableAI:fix/wx-cps-click-dup-insert
WonderableAI:feat/ad-revenue-per-event
WonderableAI:intern/chenshuobo/alembic-merge-heads-20260623
WonderableAI:intern/chenshuobo/meituan-coupon-image-size-20260623
WonderableAI:feat/default-nickname-user-prefix
WonderableAI:feat/test-account
WonderableAI:feat/marquee-nickname-mask
WonderableAI:feat/a11y-liveness-pull
WonderableAI:fix/ad-config-default-feed-slot
WonderableAI:feat/withdraw-detail-tweaks
WonderableAI:intern/chenshuobo/feedback-review-20260622
WonderableAI:feat/compare-record-status
WonderableAI:feat/feed-ad-realcoin-orb
WonderableAI:feat/cps-distribution
WonderableAI:feat/ops-config-ad-flags-reconcile
WonderableAI:intern/chenshuobo/meituan-etl-nul-fix-20260616
WonderableAI:intern/chenshuobo/meituan-multi-city-etl-20260616
WonderableAI:feat/jd-and-launch-confirm
WonderableAI:feat/ad-revenue-report
WonderableAI:feat/a11y-liveness-heartbeat
WonderableAI:feat/jd-deeplink-invalid-share-switch
WonderableAI:integration/0615
WonderableAI:feature/6.14-coupon
WonderableAI:feat/feedback-iteration
WonderableAI:fix/admin-review-hardening
WonderableAI:feat/taobao-shopid-store-mapping
WonderableAI:fix/marquee-mask-deterministic
WonderableAI:feat/unbind-wechat-reviewing-confirm
WonderableAI:feat/nickname-maxlength-20
WonderableAI:feat/daily-auto-exchange
WonderableAI:coupon-checkout-funnel
WonderableAI:feat/home-facade-stats-and-marquee
WonderableAI:feat/meituan-precoupon
WonderableAI:feat/onboarding-completion
WonderableAI:intern/chenshuobo/meituan-etl-feed-20260610
WonderableAI:coupon_home_ui
WonderableAI:docs/coupon-tables
WonderableAI:fix/alembic-linearize-debug-trace
WonderableAI:feat/invite-landing-store
WonderableAI:feat/debug-trace-link
WonderableAI:feat/admin-price-report-review
WonderableAI:intern/chenshuobo/meituan-feed-tabs-20260609
WonderableAI:feat/home-feed-sort-tabs
WonderableAI:feat/ad-coin-ecpm-unit-audit
WonderableAI:feat/invite-display
WonderableAI:chore/merge-alembic-heads
WonderableAI:feat/coupon-flow-improvements
WonderableAI:feat/coin-system-phase2-ad-ecpm
WonderableAI:feature/withdraw-review-ops
WonderableAI:fix/created-at-beijing-tz
WonderableAI:feat/invite-mvp
WonderableAI:feat/coupon-daily-claim-gate
WonderableAI:intern/chenshuobo/meituan-coupon-etl-20260606
WonderableAI:feat/platform-stats-display
WonderableAI:feature/coupon-claim-integration
WonderableAI:feat/price-observation-pipeline
WonderableAI:feat/concurrency-multi-instance
WonderableAI:feat/sls-json-logging
WonderableAI:feat/wxpay-transfer-auth
WonderableAI:feat/admin-api-db-docs
WonderableAI:feat/pricebot-native-async
WonderableAI:feat/admin-app-config
WonderableAI:feat/recompare-deeplink
WonderableAI:feat/price-report
WonderableAI:feat/signin-remark-and-milestone-no-coin
WonderableAI:feat/ad-ecpm-and-cooldown
WonderableAI:feat/savings-accounting-clean
WonderableAI:feat/savings-accounting-m1
WonderableAI:feat/user-profile-feedback-api
WonderableAI:dev/integration
WonderableAI:feat/postgres-migration-and-bootstrap-script
WonderableAI:feat/welfare-video-round-cooldown
WonderableAI:feat/home-feed-ranking-mvp
WonderableAI:feature/welfare-withdraw-ad
WonderableAI:feat/user-order-records
2 Commits
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
|
|
c8328f976f | Merge branch 'main' of ssh://gitea.shaguabijia.com:222/WonderableAI/shaguabijia-app-server into feat/wip-20260606 | ||
|
|
939eabd7ab |
feat(welfare): 提现人工审核流程 + 看广告每日时长限流(防刷主闸)
提现人工审核(提现不再即时打款): - models/wallet.py: WithdrawOrder 状态机改为 reviewing →(审核通过)→ pending → success/failed;reviewing →(驳回)→ rejected(已退款), 默认态 pending → reviewing(扣现金建单但不打款);新增 user_name 列(实名, 微信达额转账要求) - admin/routers/withdraw.py + admin/schemas/wallet.py: 运营后台审核接口(通过触发微信转账 / 驳回退款) - api/v1/wallet.py + repositories/wallet.py: 发起提现进 reviewing 态, 驳回退回现金并写 withdraw_refund - schemas/welfare.py: 提现出参增 reviewing/rejected 状态 + fail_reason 看广告每日时长限流(防刷主闸 + 次数兜底): - 新增 models/ad_watch_log.py: 按 (user_id, watch_date) 聚合当日观看秒数 - 新增 repositories/ad_watch.py: watched_seconds_today / add_watch_seconds(夹 [0, MAX_SINGLE_WATCH_SECONDS]) - api/v1/ad.py: 新增 POST /ad/watch-report(JWT 取 user, 落时长返当日累计); /ad/reward-status 增 watched_seconds_today / limit / remaining - schemas/ad.py: WatchReportIn/Out - core/rewards.py: 新增 DAILY_AD_WATCH_SECONDS_LIMIT=50 分钟(主闸)+ MAX_SINGLE_WATCH_SECONDS=120; DAILY_AD_REWARD_LIMIT 20→200 改作次数兜底(防前端少报时长绕过时长闸, 又不误伤看短广告的正常用户) - repositories/ad_reward.py + models/__init__.py: 接入新表与时长闸 alembic: withdraw_review_and_ad_watch 迁移(withdraw_order.user_name 列 + ad_watch_log 表) tests: 补 test_ad_reward / test_withdraw Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> |