新增素材消耗,新增素材资源绑定表
This commit is contained in:
@@ -0,0 +1,26 @@
|
||||
"""add max_count column to user_oauth_app
|
||||
|
||||
Revision ID: 0a861ba0828b
|
||||
Revises: 780226f22449
|
||||
Create Date: 2026-06-12 11:42:53.099895
|
||||
"""
|
||||
from typing import Sequence, Union
|
||||
|
||||
from alembic import op
|
||||
import sqlalchemy as sa
|
||||
|
||||
|
||||
revision: str = '0a861ba0828b'
|
||||
down_revision: Union[str, None] = '780226f22449'
|
||||
branch_labels: Union[str, Sequence[str], None] = None
|
||||
depends_on: Union[str, Sequence[str], None] = None
|
||||
|
||||
|
||||
def upgrade() -> None:
|
||||
op.add_column('user_oauth_app', sa.Column('max_count', sa.BigInteger(), nullable=True, comment='应用最大可以授权多少个用户'))
|
||||
op.execute('UPDATE user_oauth_app SET max_count = 100 WHERE max_count IS NULL')
|
||||
op.alter_column('user_oauth_app', 'max_count', nullable=False)
|
||||
|
||||
|
||||
def downgrade() -> None:
|
||||
op.drop_column('user_oauth_app', 'max_count')
|
||||
@@ -0,0 +1,62 @@
|
||||
"""create material_cost table
|
||||
|
||||
Revision ID: 159b52ae3a59
|
||||
Revises: 906b205a5a40
|
||||
Create Date: 2026-06-12 16:04:20.512144
|
||||
"""
|
||||
from typing import Sequence, Union
|
||||
|
||||
from alembic import op
|
||||
import sqlalchemy as sa
|
||||
|
||||
|
||||
revision: str = '159b52ae3a59'
|
||||
down_revision: Union[str, None] = '906b205a5a40'
|
||||
branch_labels: Union[str, Sequence[str], None] = None
|
||||
depends_on: Union[str, Sequence[str], None] = None
|
||||
|
||||
|
||||
def upgrade() -> None:
|
||||
op.create_table('material_cost',
|
||||
sa.Column('id', sa.BigInteger(), autoincrement=True, nullable=False, comment='主键'),
|
||||
sa.Column('oauth_id', sa.String(length=64), nullable=False, comment='授权表user_oauth自增id'),
|
||||
sa.Column('advertiser_id', sa.String(length=64), nullable=True, comment='广告主id'),
|
||||
sa.Column('material_id', sa.String(length=64), nullable=True, comment='素材id'),
|
||||
sa.Column('consume_date', sa.Date(), nullable=False, comment='消耗日期'),
|
||||
sa.Column('stat_cost', sa.Float(), nullable=True, comment='消耗金额'),
|
||||
sa.Column('show_cnt', sa.BigInteger(), nullable=True, comment='展示数'),
|
||||
sa.Column('cpm_platform', sa.Float(), nullable=True, comment='平均千次展现费用(元)'),
|
||||
sa.Column('click_cnt', sa.BigInteger(), nullable=True, comment='点击数'),
|
||||
sa.Column('ctr', sa.Float(), nullable=True, comment='点击率'),
|
||||
sa.Column('cpc_platform', sa.Float(), nullable=True, comment='平均点击单价(元)'),
|
||||
sa.Column('convert_cnt', sa.BigInteger(), nullable=True, comment='转化数'),
|
||||
sa.Column('conversion_cost', sa.Float(), nullable=True, comment='平均转化成本(元)'),
|
||||
sa.Column('conversion_rate', sa.Float(), nullable=True, comment='转化率'),
|
||||
sa.Column('deep_convert_cnt', sa.BigInteger(), nullable=True, comment='深度转化数'),
|
||||
sa.Column('deep_convert_cost', sa.Float(), nullable=True, comment='深度转化成本(元)'),
|
||||
sa.Column('deep_convert_rate', sa.Float(), nullable=True, comment='深度转化率'),
|
||||
sa.Column('active', sa.BigInteger(), nullable=True, comment='激活数'),
|
||||
sa.Column('active_cost', sa.Float(), nullable=True, comment='激活成本(元)'),
|
||||
sa.Column('active_rate', sa.Float(), nullable=True, comment='激活率'),
|
||||
sa.Column('active_register', sa.BigInteger(), nullable=True, comment='注册数'),
|
||||
sa.Column('active_register_cost', sa.Float(), nullable=True, comment='注册成本(元)'),
|
||||
sa.Column('active_register_rate', sa.Float(), nullable=True, comment='注册率'),
|
||||
sa.Column('created_at', sa.DateTime(timezone=True), server_default=sa.text('now()'), nullable=False),
|
||||
sa.Column('updated_at', sa.DateTime(timezone=True), server_default=sa.text('now()'), nullable=False),
|
||||
sa.Column('deleted_at', sa.DateTime(timezone=True), nullable=True),
|
||||
sa.PrimaryKeyConstraint('id')
|
||||
)
|
||||
op.create_index(op.f('ix_material_cost_advertiser_id'), 'material_cost', ['advertiser_id'], unique=False)
|
||||
op.create_index(op.f('ix_material_cost_consume_date'), 'material_cost', ['consume_date'], unique=False)
|
||||
op.create_index(op.f('ix_material_cost_deleted_at'), 'material_cost', ['deleted_at'], unique=False)
|
||||
op.create_index(op.f('ix_material_cost_material_id'), 'material_cost', ['material_id'], unique=False)
|
||||
op.create_index(op.f('ix_material_cost_oauth_id'), 'material_cost', ['oauth_id'], unique=False)
|
||||
|
||||
|
||||
def downgrade() -> None:
|
||||
op.drop_index(op.f('ix_material_cost_oauth_id'), table_name='material_cost')
|
||||
op.drop_index(op.f('ix_material_cost_material_id'), table_name='material_cost')
|
||||
op.drop_index(op.f('ix_material_cost_deleted_at'), table_name='material_cost')
|
||||
op.drop_index(op.f('ix_material_cost_consume_date'), table_name='material_cost')
|
||||
op.drop_index(op.f('ix_material_cost_advertiser_id'), table_name='material_cost')
|
||||
op.drop_table('material_cost')
|
||||
@@ -0,0 +1,56 @@
|
||||
"""create resources_material table
|
||||
|
||||
Revision ID: 906b205a5a40
|
||||
Revises: 0a861ba0828b
|
||||
Create Date: 2026-06-12 15:47:28.291461
|
||||
"""
|
||||
from typing import Sequence, Union
|
||||
|
||||
from alembic import op
|
||||
import sqlalchemy as sa
|
||||
|
||||
|
||||
revision: str = '906b205a5a40'
|
||||
down_revision: Union[str, None] = '0a861ba0828b'
|
||||
branch_labels: Union[str, Sequence[str], None] = None
|
||||
depends_on: Union[str, Sequence[str], None] = None
|
||||
|
||||
|
||||
def upgrade() -> None:
|
||||
op.create_table('resources_material',
|
||||
sa.Column('id', sa.BigInteger(), autoincrement=True, nullable=False, comment='主键'),
|
||||
sa.Column('oauth_id', sa.String(length=64), nullable=False, comment='授权表user_oauth自增id'),
|
||||
sa.Column('advertiser_id', sa.String(length=64), nullable=True, comment='广告主id'),
|
||||
sa.Column('target_table', sa.String(length=64), nullable=True, comment='资源表名称'),
|
||||
sa.Column('target_id', sa.String(length=64), nullable=True, comment='资源表id'),
|
||||
sa.Column('material_id', sa.String(length=64), nullable=True, comment='素材id'),
|
||||
sa.Column('upload_id', sa.String(length=128), nullable=True, comment='上传资源平台id,图片id,视频id'),
|
||||
sa.Column('resource_type', sa.String(length=16), nullable=True, comment='资源类型,image或者video'),
|
||||
sa.Column('user_id', sa.String(length=64), nullable=True, comment='用户登录id'),
|
||||
sa.Column('created_at', sa.DateTime(timezone=True), server_default=sa.text('now()'), nullable=False),
|
||||
sa.Column('updated_at', sa.DateTime(timezone=True), server_default=sa.text('now()'), nullable=False),
|
||||
sa.Column('deleted_at', sa.DateTime(timezone=True), nullable=True),
|
||||
sa.PrimaryKeyConstraint('id')
|
||||
)
|
||||
op.create_index(op.f('ix_resources_material_advertiser_id'), 'resources_material', ['advertiser_id'], unique=False)
|
||||
op.create_index(op.f('ix_resources_material_deleted_at'), 'resources_material', ['deleted_at'], unique=False)
|
||||
op.create_index(op.f('ix_resources_material_material_id'), 'resources_material', ['material_id'], unique=False)
|
||||
op.create_index(op.f('ix_resources_material_oauth_id'), 'resources_material', ['oauth_id'], unique=False)
|
||||
op.create_index(op.f('ix_resources_material_resource_type'), 'resources_material', ['resource_type'], unique=False)
|
||||
op.create_index(op.f('ix_resources_material_target_id'), 'resources_material', ['target_id'], unique=False)
|
||||
op.create_index(op.f('ix_resources_material_target_table'), 'resources_material', ['target_table'], unique=False)
|
||||
op.create_index(op.f('ix_resources_material_upload_id'), 'resources_material', ['upload_id'], unique=False)
|
||||
op.create_index(op.f('ix_resources_material_user_id'), 'resources_material', ['user_id'], unique=False)
|
||||
|
||||
|
||||
def downgrade() -> None:
|
||||
op.drop_index(op.f('ix_resources_material_user_id'), table_name='resources_material')
|
||||
op.drop_index(op.f('ix_resources_material_upload_id'), table_name='resources_material')
|
||||
op.drop_index(op.f('ix_resources_material_target_table'), table_name='resources_material')
|
||||
op.drop_index(op.f('ix_resources_material_target_id'), table_name='resources_material')
|
||||
op.drop_index(op.f('ix_resources_material_resource_type'), table_name='resources_material')
|
||||
op.drop_index(op.f('ix_resources_material_oauth_id'), table_name='resources_material')
|
||||
op.drop_index(op.f('ix_resources_material_material_id'), table_name='resources_material')
|
||||
op.drop_index(op.f('ix_resources_material_deleted_at'), table_name='resources_material')
|
||||
op.drop_index(op.f('ix_resources_material_advertiser_id'), table_name='resources_material')
|
||||
op.drop_table('resources_material')
|
||||
@@ -0,0 +1,124 @@
|
||||
"""新增素材消耗表,新增资源素材绑定表,修改授权账户表授权id
|
||||
|
||||
Revision ID: acb510c75f6a
|
||||
Revises: 159b52ae3a59
|
||||
Create Date: 2026-06-12 17:03:27.447544
|
||||
"""
|
||||
from typing import Sequence, Union
|
||||
|
||||
from alembic import op
|
||||
import sqlalchemy as sa
|
||||
|
||||
|
||||
revision: str = 'acb510c75f6a'
|
||||
down_revision: Union[str, None] = '159b52ae3a59'
|
||||
branch_labels: Union[str, Sequence[str], None] = None
|
||||
depends_on: Union[str, Sequence[str], None] = None
|
||||
|
||||
|
||||
def upgrade() -> None:
|
||||
op.add_column('material_cost', sa.Column('attribution_next_day_open_cnt', sa.BigInteger(), nullable=True, comment='次留数'))
|
||||
op.add_column('material_cost', sa.Column('attribution_next_day_open_cost', sa.Float(), nullable=True, comment='次留成本'))
|
||||
op.add_column('material_cost', sa.Column('attribution_next_day_open_rate', sa.Float(), nullable=True, comment='次留率'))
|
||||
op.add_column('material_cost', sa.Column('active_pay', sa.BigInteger(), nullable=True, comment='首次付费数'))
|
||||
op.add_column('material_cost', sa.Column('active_pay_cost', sa.Float(), nullable=True, comment='首次付费成本(元)'))
|
||||
op.add_column('material_cost', sa.Column('active_pay_rate', sa.Float(), nullable=True, comment='首次付费率'))
|
||||
op.add_column('material_cost', sa.Column('phone', sa.BigInteger(), nullable=True, comment='点击电话按钮'))
|
||||
op.add_column('material_cost', sa.Column('form', sa.BigInteger(), nullable=True, comment='用户在门店落地页多线沟通提交表单的次数'))
|
||||
op.add_column('material_cost', sa.Column('download_start', sa.BigInteger(), nullable=True, comment='用户点击下载开始的次数'))
|
||||
op.add_column('material_cost', sa.Column('form_submit', sa.BigInteger(), nullable=True, comment='用户查看附加创意后,提交表单的次数'))
|
||||
op.add_column('material_cost', sa.Column('button', sa.BigInteger(), nullable=True, comment='用户点击按钮button的次数'))
|
||||
op.add_column('material_cost', sa.Column('view', sa.BigInteger(), nullable=True, comment='用户在关键页面的浏览次数'))
|
||||
op.add_column('material_cost', sa.Column('message', sa.BigInteger(), nullable=True, comment='用户点击短信咨询的次数'))
|
||||
op.add_column('material_cost', sa.Column('consult', sa.BigInteger(), nullable=True, comment='用户点击在线咨询按钮的次数'))
|
||||
op.add_column('material_cost', sa.Column('consult_effective', sa.BigInteger(), nullable=True, comment='用户在门店落地页多线沟通的在线咨询中有效咨询的次数'))
|
||||
op.add_column('material_cost', sa.Column('shopping', sa.BigInteger(), nullable=True, comment='用户购买商品的次数'))
|
||||
op.add_column('material_cost', sa.Column('customer_effective', sa.BigInteger(), nullable=True, comment='有效获客'))
|
||||
op.add_column('material_cost', sa.Column('attribution_game_in_app_ltv_1day', sa.Float(), nullable=True, comment='当日付费金额'))
|
||||
op.add_column('material_cost', sa.Column('attribution_game_in_app_roi_1day', sa.Float(), nullable=True, comment='当日付费ROI'))
|
||||
op.add_column('material_cost', sa.Column('loan_completion', sa.BigInteger(), nullable=True, comment='完件数互联网金融-贷款行业中,用户成功提交贷款额度申请的行为'))
|
||||
op.add_column('material_cost', sa.Column('loan_completion_cost', sa.Float(), nullable=True, comment='完件成本(元)'))
|
||||
op.add_column('material_cost', sa.Column('loan_completion_rate', sa.Float(), nullable=True, comment='完件率'))
|
||||
op.add_column('material_cost', sa.Column('loan_credit', sa.BigInteger(), nullable=True, comment='互联网金融-贷款行业中,用户提交贷款额度申请后,客户审批通过,给予用户可贷款的额度'))
|
||||
op.add_column('material_cost', sa.Column('loan_credit_cost', sa.Float(), nullable=True, comment='授信成本(元)'))
|
||||
op.add_column('material_cost', sa.Column('loan_credit_rate', sa.Float(), nullable=True, comment='授信率'))
|
||||
op.add_column('material_cost', sa.Column('in_app_order_gmv', sa.Float(), nullable=True, comment='当您使用"in_app_order"事件回传订单金额时,对应的GMV金额,引流电商订单GMV'))
|
||||
op.add_column('material_cost', sa.Column('in_app_order_roi', sa.Float(), nullable=True, comment='引流电商订单ROI'))
|
||||
op.add_column('material_cost', sa.Column('in_app_pay_gmv', sa.Float(), nullable=True, comment='引流电商支付GMV'))
|
||||
op.add_column('material_cost', sa.Column('in_app_pay_roi', sa.Float(), nullable=True, comment='引流电商支付ROI'))
|
||||
op.add_column('material_cost', sa.Column('total_play', sa.BigInteger(), nullable=True, comment='播放量播放时间大于0S的数量,在某些蜂窝网络环境下,需要您手动点击开始才会开始播放,因此有时播放数小于展示数。'))
|
||||
op.add_column('material_cost', sa.Column('valid_play', sa.BigInteger(), nullable=True, comment='有效播放数'))
|
||||
op.add_column('material_cost', sa.Column('valid_play_cost', sa.Float(), nullable=True, comment='有效播放成本(元)'))
|
||||
op.add_column('material_cost', sa.Column('valid_play_rate', sa.Float(), nullable=True, comment='有效播放率'))
|
||||
op.add_column('material_cost', sa.Column('valid_play_of_mille', sa.BigInteger(), nullable=True, comment='千次有效播放数'))
|
||||
op.add_column('material_cost', sa.Column('valid_play_cost_of_mille', sa.Float(), nullable=True, comment='千次有效播放成本(元)'))
|
||||
op.add_column('material_cost', sa.Column('average_play_time_per_play', sa.Float(), nullable=True, comment='平均单次播放时长'))
|
||||
op.add_column('material_cost', sa.Column('play_over_rate', sa.Float(), nullable=True, comment='完播率'))
|
||||
op.add_column('material_cost', sa.Column('dy_like', sa.BigInteger(), nullable=True, comment='点赞数'))
|
||||
op.add_column('material_cost', sa.Column('dy_comment', sa.BigInteger(), nullable=True, comment='评论量'))
|
||||
op.add_column('material_cost', sa.Column('dy_share', sa.BigInteger(), nullable=True, comment='分享量'))
|
||||
op.add_column('material_cost', sa.Column('report_cnt', sa.BigInteger(), nullable=True, comment='举报数'))
|
||||
op.add_column('user_oauth_account', sa.Column('oauth_id', sa.String(length=64), nullable=True, comment='授权表中的id'))
|
||||
op.execute('UPDATE user_oauth_account SET oauth_id = account_id WHERE oauth_id IS NULL')
|
||||
op.alter_column('user_oauth_account', 'oauth_id', nullable=False)
|
||||
op.alter_column('user_oauth_account', 'advertiser_id',
|
||||
existing_type=sa.VARCHAR(length=64),
|
||||
comment='广告主账户id',
|
||||
existing_comment='广告账户id',
|
||||
existing_nullable=True)
|
||||
op.drop_index(op.f('ix_user_oauth_account_account_id'), table_name='user_oauth_account')
|
||||
op.create_index(op.f('ix_user_oauth_account_oauth_id'), 'user_oauth_account', ['oauth_id'], unique=False)
|
||||
op.drop_column('user_oauth_account', 'account_id')
|
||||
|
||||
|
||||
def downgrade() -> None:
|
||||
op.add_column('user_oauth_account', sa.Column('account_id', sa.VARCHAR(length=64), autoincrement=False, nullable=False, comment='授权账户id(user_oauth表中同一个)'))
|
||||
op.drop_index(op.f('ix_user_oauth_account_oauth_id'), table_name='user_oauth_account')
|
||||
op.create_index(op.f('ix_user_oauth_account_account_id'), 'user_oauth_account', ['account_id'], unique=False)
|
||||
op.alter_column('user_oauth_account', 'advertiser_id',
|
||||
existing_type=sa.VARCHAR(length=64),
|
||||
comment='广告账户id',
|
||||
existing_comment='广告主账户id',
|
||||
existing_nullable=True)
|
||||
op.drop_column('user_oauth_account', 'oauth_id')
|
||||
op.drop_column('material_cost', 'report_cnt')
|
||||
op.drop_column('material_cost', 'dy_share')
|
||||
op.drop_column('material_cost', 'dy_comment')
|
||||
op.drop_column('material_cost', 'dy_like')
|
||||
op.drop_column('material_cost', 'play_over_rate')
|
||||
op.drop_column('material_cost', 'average_play_time_per_play')
|
||||
op.drop_column('material_cost', 'valid_play_cost_of_mille')
|
||||
op.drop_column('material_cost', 'valid_play_of_mille')
|
||||
op.drop_column('material_cost', 'valid_play_rate')
|
||||
op.drop_column('material_cost', 'valid_play_cost')
|
||||
op.drop_column('material_cost', 'valid_play')
|
||||
op.drop_column('material_cost', 'total_play')
|
||||
op.drop_column('material_cost', 'in_app_pay_roi')
|
||||
op.drop_column('material_cost', 'in_app_pay_gmv')
|
||||
op.drop_column('material_cost', 'in_app_order_roi')
|
||||
op.drop_column('material_cost', 'in_app_order_gmv')
|
||||
op.drop_column('material_cost', 'loan_credit_rate')
|
||||
op.drop_column('material_cost', 'loan_credit_cost')
|
||||
op.drop_column('material_cost', 'loan_credit')
|
||||
op.drop_column('material_cost', 'loan_completion_rate')
|
||||
op.drop_column('material_cost', 'loan_completion_cost')
|
||||
op.drop_column('material_cost', 'loan_completion')
|
||||
op.drop_column('material_cost', 'attribution_game_in_app_roi_1day')
|
||||
op.drop_column('material_cost', 'attribution_game_in_app_ltv_1day')
|
||||
op.drop_column('material_cost', 'customer_effective')
|
||||
op.drop_column('material_cost', 'shopping')
|
||||
op.drop_column('material_cost', 'consult_effective')
|
||||
op.drop_column('material_cost', 'consult')
|
||||
op.drop_column('material_cost', 'message')
|
||||
op.drop_column('material_cost', 'view')
|
||||
op.drop_column('material_cost', 'button')
|
||||
op.drop_column('material_cost', 'form_submit')
|
||||
op.drop_column('material_cost', 'download_start')
|
||||
op.drop_column('material_cost', 'form')
|
||||
op.drop_column('material_cost', 'phone')
|
||||
op.drop_column('material_cost', 'active_pay_rate')
|
||||
op.drop_column('material_cost', 'active_pay_cost')
|
||||
op.drop_column('material_cost', 'active_pay')
|
||||
op.drop_column('material_cost', 'attribution_next_day_open_rate')
|
||||
op.drop_column('material_cost', 'attribution_next_day_open_cost')
|
||||
op.drop_column('material_cost', 'attribution_next_day_open_cnt')
|
||||
Reference in New Issue
Block a user