d7c29c0883
- rewards: 激励视频实发改按 calculate_ad_reward_coin(eCPM, 当日第N次) 公式;AD_REWARD_COIN/MAX_AD_REWARD_COIN 降为历史兼容口径;新增 SIGNIN_BOOST_COIN=2000 - 签到膨胀: Day1-13 看完激励视频额外发固定金币、Day14 不允许 (signin.py / signin-boost) - ad_session_id 幂等: ad_ecpm/ad_reward/ad_feed_reward 记录加 ad_session_id 列 + 唯一索引(新迁移 coin_reward_phase2 / ad_feed_reward_session) - ad.py + schemas + repositories: ecpm-report / feed-reward / reward-status / test-grant 改造;config_schema 增 signin_boost_coin;admin stats overview 补充 - 同步 docs/api + docs/database + docs/integrations/pangle 及 tests(test_ad_reward / test_welfare) Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> --------- Co-authored-by: OuYingJun1024 <1034284404@qq.com> Reviewed-on: #28 Co-authored-by: ouzhou <ouzhou@wonderable.ai> Co-committed-by: ouzhou <ouzhou@wonderable.ai>
39 lines
871 B
Python
39 lines
871 B
Python
"""add ad_session_id to ad feed reward record
|
|
|
|
Revision ID: ad_feed_reward_session
|
|
Revises: coin_reward_phase2
|
|
Create Date: 2026-06-09
|
|
"""
|
|
|
|
from __future__ import annotations
|
|
|
|
from alembic import op
|
|
import sqlalchemy as sa
|
|
|
|
|
|
revision = "ad_feed_reward_session"
|
|
down_revision = "coin_reward_phase2"
|
|
branch_labels = None
|
|
depends_on = None
|
|
|
|
|
|
def upgrade() -> None:
|
|
op.add_column(
|
|
"ad_feed_reward_record",
|
|
sa.Column("ad_session_id", sa.String(length=64), nullable=True),
|
|
)
|
|
op.create_index(
|
|
op.f("ix_ad_feed_reward_record_ad_session_id"),
|
|
"ad_feed_reward_record",
|
|
["ad_session_id"],
|
|
unique=False,
|
|
)
|
|
|
|
|
|
def downgrade() -> None:
|
|
op.drop_index(
|
|
op.f("ix_ad_feed_reward_record_ad_session_id"),
|
|
table_name="ad_feed_reward_record",
|
|
)
|
|
op.drop_column("ad_feed_reward_record", "ad_session_id")
|