78d970f420
- 新表 coupon_session(一次领券一行,trace_id 唯一):POST /api/v1/coupon/session 两段 upsert(发起 started / 收尾 completed·failed·abandoned),记全程耗时、各平台耗时、 机型/ROM、app_env、trace_url、origin_package(发起来源)。 - admin GET /admin/api/coupon-data:发起/完成数 + 平均耗时 + P5/P50/P95/P99(Python 算分位, SQLite 无 percentile)+ 按天/小时趋势 + 明细分页 + join 用户手机号/昵称,app_env 默认 prod; 另加 GET /admin/api/coupon-data/user-records 供「点手机号看该用户全部领券」抽屉。 - 迁移拆 3 个:建表 coupon_session_table + trace_url 加列 + origin_package 加列 (建表迁移已被某环境应用后改它不重跑,故新列单独加列迁移)。 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> --------- Co-authored-by: zzhyyyyy <2685922758@qq.com> Reviewed-on: #99 Co-authored-by: zhuzihao <zhuzihao@wonderable.ai> Co-committed-by: zhuzihao <zhuzihao@wonderable.ai>
46 lines
2.3 KiB
Python
46 lines
2.3 KiB
Python
"""所有 ORM model 必须在这里 import 一次,Alembic / metadata 才能扫到。"""
|
|
from app.models.ad_ecpm import AdEcpmRecord # noqa: F401
|
|
from app.models.ad_feed_reward import AdFeedRewardRecord # noqa: F401
|
|
from app.models.ad_pangle_revenue import AdPangleDailyRevenue # noqa: F401
|
|
from app.models.ad_reward import AdRewardRecord # noqa: F401
|
|
from app.models.ad_watch_log import AdWatchLog # noqa: F401
|
|
from app.models.admin import AdminAuditLog, AdminUser # noqa: F401
|
|
from app.models.analytics_event import AnalyticsEvent # noqa: F401
|
|
from app.models.app_config import AppConfig # noqa: F401
|
|
from app.models.comparison import ComparisonRecord # noqa: F401
|
|
from app.models.cps_activity import CpsActivity # noqa: F401
|
|
from app.models.cps_group import CpsGroup # noqa: F401
|
|
from app.models.cps_link import CpsClick, CpsLink # noqa: F401
|
|
from app.models.cps_order import CpsOrder # noqa: F401
|
|
from app.models.cps_wx_user import CpsWxUser # noqa: F401
|
|
from app.models.comparison_milestone import ComparisonMilestoneClaim # noqa: F401
|
|
from app.models.device import DeviceLiveness # noqa: F401
|
|
from app.models.coupon_state import ( # noqa: F401
|
|
CouponClaimRecord,
|
|
CouponDailyCompletion,
|
|
CouponPromptEngagement,
|
|
CouponSession,
|
|
)
|
|
from app.models.feedback import Feedback # noqa: F401
|
|
from app.models.invite import InviteRelation # noqa: F401
|
|
from app.models.invite_fingerprint import InviteFingerprint # noqa: F401
|
|
from app.models.launch_confirm_sample import LaunchConfirmSample # noqa: F401
|
|
from app.models.meituan_coupon import MeituanCoupon # noqa: F401
|
|
from app.models.onboarding import OnboardingCompletion # noqa: F401
|
|
from app.models.ops_marquee_seed import OpsMarqueeSeed # noqa: F401
|
|
from app.models.ops_stat_config import OpsStatConfig # noqa: F401
|
|
from app.models.price_observation import PriceObservation # noqa: F401
|
|
from app.models.price_report import PriceReport # noqa: F401
|
|
from app.models.savings import SavingsRecord # noqa: F401
|
|
from app.models.signin import SigninBoostRecord, SigninRecord # noqa: F401
|
|
from app.models.store_mapping import StoreMapping # noqa: F401
|
|
from app.models.task import UserTask # noqa: F401
|
|
from app.models.user import User # noqa: F401
|
|
from app.models.wallet import ( # noqa: F401
|
|
CashTransaction,
|
|
CoinAccount,
|
|
CoinTransaction,
|
|
InviteCashTransaction,
|
|
WithdrawOrder,
|
|
)
|