package com.moka.gdtauto.entity;

import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.LocalDateTime;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;

import lombok.Data;

/**
 * 动态创意日报表 - 基类（供 req/rep 两张表共用）
 *
 * @author moka
 * @since 2026-03-03
 */
@Data
public abstract class BaseDailyAdgroupReport {

    /** 主键ID */
    @TableId(value = "id", type = IdType.AUTO)
    private Long id;
    private Long confId;

    /** 广告主账号ID */
    private Long accountId;

    private Long adgroupId;
    private String adgroupName;

    /** 账号组ID（来自 AccountGroup.id） */
    private Long groupId;

    /** 账号组名称 */
    private String groupName;

    /** 日期 */
    private LocalDate date;

    // ── 基础曝光点击 ──────────────────────────────────────────────────────────
    /** 曝光次数 */
    private Long viewCount;
    /** 曝光人数 */
    private Long viewUserCount;
    /** 人均曝光次数 */
    private BigDecimal avgViewPerUser;
    /** 点击次数 */
    private Long validClickCount;
    /** 点击人数 */
    private Long clickUserCount;
    /** 点击均价（分） */
    private Long cpc;
    /** 点击率 */
    private BigDecimal ctr;
    /** 可转化点击次数 */
    private Long valuableClickCount;
    /** 可转化点击成本（分） */
    private Long valuableClickCost;
    /** 可转化点击率 */
    private BigDecimal valuableClickRate;

    // ── 花费 ─────────────────────────────────────────────────────────────────
    /** 花费（分） */
    private Long cost;
    /** 一键起量消耗（分） */
    private Long acquisitionCost;
    /** 千次展现均价（分） */
    private Long thousandDisplayPrice;

    // ── 转化 ─────────────────────────────────────────────────────────────────
    /** 目标转化量 */
    private Long conversionsCount;
    /** 目标转化率 */
    private BigDecimal conversionsRate;
    /** 目标转化成本（分） */
    private Long conversionsCost;
    /** 深度目标转化量 */
    private Long deepConversionsCount;
    /** 深度目标转化率 */
    private BigDecimal deepConversionsRate;
    /** 深度转化成本（分） */
    private Long deepConversionsCost;
    /** 目标转化量（曝光归因） */
    private Long conversionsByDisplayCount;
    /** 目标转化率（曝光归因） */
    private BigDecimal conversionsByDisplayRate;
    /** 目标转化成本（曝光归因，分） */
    private Long conversionsByDisplayCost;
    /** 目标转化量（点击归因） */
    private Long conversionsByClickCount;
    /** 目标转化率（点击归因） */
    private BigDecimal conversionsByClickRate;
    /** 目标转化成本（点击归因，分） */
    private Long conversionsByClickCost;
    /** 目标转化量（在线预览） */
    private Long previewConversionsCount;
    /** 深度目标转化量（在线预览） */
    private Long previewDeepConversionsCount;

    // ── 视频播放 ──────────────────────────────────────────────────────────────
    /** 视频有效播放次数 */
    private Long videoOuterPlayCount;
    /** 视频有效播放人数 */
    private Long videoOuterPlayUserCount;
    /** 人均播放次数 */
    private BigDecimal avgUserPlayCount;
    /** 平均有效播放时长（秒） */
    private BigDecimal videoOuterPlayTimeCount;
    /** 平均有效播放进度 */
    private BigDecimal videoOuterPlayTimeAvgRate;
    /** 有效播放率 */
    private BigDecimal videoOuterPlayRate;
    /** 有效播放成本（分） */
    private Long videoOuterPlayCost;
    /** 10%进度播放次数 */
    private Long videoOuterPlay10Count;
    /** 25%进度播放次数 */
    private Long videoOuterPlay25Count;
    /** 50%进度播放次数 */
    private Long videoOuterPlay50Count;
    /** 75%进度播放次数 */
    private Long videoOuterPlay75Count;
    /** 90%进度播放次数 */
    private Long videoOuterPlay90Count;
    /** 95%进度播放次数 */
    private Long videoOuterPlay95Count;
    /** 100%进度播放次数 */
    private Long videoOuterPlay100Count;
    /** 3s播放完成次数 */
    private Long videoOuterPlay3sCount;
    /** 3s播放完成率 */
    private BigDecimal videoOuterPlay3sRate;
    /** 5s播放完成次数 */
    private Long videoOuterPlay5sCount;
    /** 7s播放完成次数 */
    private Long videoOuterPlay7sCount;

    // ── 互动 ─────────────────────────────────────────────────────────────────
    /** 阅读次数 */
    private Long readCount;
    /** 阅读成本（分） */
    private Long readCost;
    /** 评论次数 */
    private Long commentCount;
    /** 评论成本（分） */
    private Long commentCost;
    /** 点赞次数 */
    private Long praiseCount;
    /** 点赞成本（分） */
    private Long praiseCost;
    /** 分享次数 */
    private Long forwardCount;
    /** 分享成本（分） */
    private Long forwardCost;
    /** 不感兴趣点击次数 */
    private Long noInterestCount;

    // ── 素材点击 ──────────────────────────────────────────────────────────────
    /** 素材点击次数 */
    private Long liveStreamCrtClickCnt;
    /** 外层图片点击次数 */
    private Long clickImageCount;
    /** 头像点击次数 */
    private Long clickHeadCount;
    /** 文字链点击次数 */
    private Long clickDetailCount;
    /** 本地门店点击次数 */
    private Long clickPoiCount;
    /** 顶部运营位点击次数 */
    private Long zoneHeaderClickCount;
    /** 官方信息区点击次数 */
    private Long basicInfoClientCount;
    /** 官方账号区点击次数 */
    private Long accountInfoClickCount;
    /** 官方账号区直播中头像点击次数 */
    private Long clkAccountLivingStatusPv;
    /** 官方账号区小程序组件点击次数 */
    private Long clkAccountinfoWeappPv;
    /** 官方账号区视频号组件点击次数 */
    private Long clkAccountinfoFinderPv;
    /** 官方账号区公众号组件点击次数 */
    private Long clkAccountinfoBizPv;
    /** 官方账号区系列tab总点击次数 */
    private Long clkAccountInfoProducttabPv;
    /** 官方账号区商品卡总点击次数 */
    private Long clkAccountInfoProductdetailPv;
    /** 热门活动区点击次数 */
    private Long activityInfoClickCount;

    // ── 线索 ─────────────────────────────────────────────────────────────────
    /** 综合销售线索人数 */
    private Long overallLeadsPurchaseCount;
    /** 有效线索次数 */
    private Long effectiveLeadsCount;
    /** 有效线索成本（分） */
    private Long effectiveCost;
    /** 有效线索人数 */
    private Long effectLeadsPurchaseCount;
    /** 有效线索成本人数（分） */
    private Long effectLeadsPurchaseCost;

    // ── 落地页 ────────────────────────────────────────────────────────────────
    /** 落地页曝光次数 */
    private Long platformPageViewCount;
    /** 落地页曝光率 */
    private BigDecimal platformPageViewRate;
    /** 落地页组件点击次数 */
    private Long lanButtonClickCount;
    /** 落地页组件点击人数 */
    private Long lanJumpButtonClickers;
    /** 落地页点击成本（分） */
    private Long lanButtonClickCost;
    /** 落地页点击率（人数） */
    private BigDecimal lanJumpButtonCtr;
    /** 落地页点击成本人数（分） */
    private Long lanJumpButtonClickCost;

    // ── 关键页面 ──────────────────────────────────────────────────────────────
    /** 关键页面访问次数 */
    private Long keyPageViewCount;
    /** 关键页面访问次数（曝光归因） */
    private Long keyPageViewByDisplayCount;
    /** 关键页面访问次数（点击归因） */
    private Long keyPageViewByClickCount;
    /** 关键页面访问人数 */
    private Long keyPageUv;
    /** 关键页面访问成本（分） */
    private Long keyPageViewCost;
    /** 关键页面访问率 */
    private BigDecimal keyPageViewRate;

    // ── 商品页 ────────────────────────────────────────────────────────────────
    /** 商品页浏览次数 */
    private Long landingCommodityDetailExpPv;
    /** 商品页浏览次数（曝光归因） */
    private Long appCommodityPageViewByDisplayCount;
    /** 商品页浏览次数（点击归因） */
    private Long appCommodityPageViewByClickCount;
    /** 商品页浏览人数 */
    private Long viewCommodityPageUv;
    /** 商品页浏览率 */
    private BigDecimal webCommodityPageViewRate;
    /** 商品页浏览成本（分） */
    private Long webCommodityPageViewCost;

    // ── 导航 ─────────────────────────────────────────────────────────────────
    /** 自有页导航次数 */
    private Long ownPageNavigationCount;
    /** 自有页导航成本（分） */
    private Long ownPageNaviCost;
    /** 平台页导航次数 */
    private Long platformPageNavigationCount;
    /** 平台页导航成本（分） */
    private Long platformPageNavigationCost;
    /** 平台页门店点击次数 */
    private Long platformShopNavigationCount;
    /** 平台页门店页导航成本（分） */
    private Long platformShopNavigationCost;

    // ── 活动页/加粉 ───────────────────────────────────────────────────────────
    /** 活动页面访问次数 */
    private Long activePageViews;
    /** 活动页面访问人数 */
    private Long activePageViewers;
    /** 活动页面互动次数 */
    private Long activePageInteractionAmount;
    /** 活动页面互动人数 */
    private Long activePageInteractionUsers;
    /** 加粉引导页浏览次数 */
    private Long guideToFollowPageViews;
    /** 加粉引导页浏览人数 */
    private Long guideToFollowPageViewers;
    /** 加粉引导页互动次数 */
    private Long guideToFollowPageInteractionAmount;
    /** 加粉引导页互动人数 */
    private Long guideToFollowPageInteractionUsers;
    /** 落地页曝光人数 */
    private Long platformKeyPageViewUserCount;

    // ── 在线咨询 ──────────────────────────────────────────────────────────────
    /** 在线咨询次数 */
    private Long pageConsultCount;
    /** 在线咨询人数 */
    private Long consultUvCount;
    /** 在线咨询率 */
    private BigDecimal pageConsultRate;
    /** 在线咨询成本（分） */
    private Long pageConsultCost;
    /** 咨询留资人数 */
    private Long consultLeaveInfoUsers;
    /** 咨询留咨成本（分） */
    private Long consultLeaveInfoCost;
    /** 潜在客户线索次数-咨询 */
    private Long potentialConsultCount;
    /** 有效线索次数-咨询 */
    private Long effectiveConsultCount;
    /** 附加创意智能咨询次数 */
    private Long toolConsultCount;

    // ── 表单预约 ──────────────────────────────────────────────────────────────
    /** 表单预约次数 */
    private Long pageReservationCount;
    /** 表单预约次数（曝光归因） */
    private Long pageReservationByDisplayCount;
    /** 表单预约次数（点击归因） */
    private Long pageReservationByClickCount;
    /** 表单预约人数 */
    private Long reservationUv;
    /** 表单预约金额（分） */
    private Long reservationAmount;
    /** 表单预约成本（分） */
    private Long pageReservationCost;
    /** 表单预约成本人数（分） */
    private Long pageReservationCostWithPeople;
    /** 表单预约率 */
    private BigDecimal pageReservationRate;
    /** 表单预约ROI */
    private BigDecimal pageReservationRoi;
    /** 公众号内表单预约人数 */
    private Long bizReservationUv;
    /** 公众号内表单预约率 */
    private BigDecimal bizReservationFollowRate;
    /** 附加创意表单预约次数 */
    private Long externalFormReservationCount;
    /** 潜在客户线索次数-表单 */
    private Long potentialReserveCount;
    /** 意向表单人数 */
    private Long reservationCheckUv;
    /** 意向表单成本（分） */
    private Long reservationCheckUvCost;
    /** 意向表单率（人数） */
    private BigDecimal reservationCheckUvRate;
    /** 有效线索次数-表单 */
    private Long effectiveReserveCount;
    /** 有效线索人数-表单 */
    private Long validLeadsUv;
    /** 排程人数 */
    private Long tryOutIntentionUv;
    /** 无效线索人数 */
    private Long ineffectiveLeadsUv;

    // ── 优惠券 ────────────────────────────────────────────────────────────────
    /** 领券次数 */
    private Long couponGetPv;
    /** 领券成本（分） */
    private Long couponGetCost;
    /** 领券率 */
    private BigDecimal couponGetRate;
    /** 平台页卡券点击次数 */
    private Long platformCouponClickCount;
    /** 平台页卡券购买次数 */
    private Long purchaseAmountWithCoupon;
    /** 平台页卡券购买率 */
    private BigDecimal couponPurchaseRate;
    /** 平台页卡券购买成本（分） */
    private Long purchaseAmountWithCouponCost;
    /** 优惠券使用次数 */
    private Long couponUsageNumber;

    // ── 电话直拨 ──────────────────────────────────────────────────────────────
    /** 电话直拨次数 */
    private Long pagePhoneCallDirectCount;
    /** 电话直拨率 */
    private BigDecimal pagePhoneCallDirectRate;
    /** 电话直拨成本（分） */
    private Long pagePhoneCallDirectCost;
    /** 潜在客户线索次数-电话 */
    private Long potentialPhoneCount;
    /** 潜在客户人数-电话 */
    private Long potentialCustomerPhoneUv;
    /** 有效线索次数-电话 */
    private Long effectivePhoneCount;
    /** 有效线索人数-电话 */
    private Long validPhoneUv;

    // ── ROI收益（LTV） ────────────────────────────────────────────────────────
    /** 1天收益（分） */
    @TableField("income_val_1")
    private Long incomeVal1;
    /** 1天ROI */
    @TableField("income_roi_1")
    private BigDecimal incomeRoi1;
    /** 3天收益（分） */
    @TableField("income_val_3")
    private Long incomeVal3;
    /** 3天ROI */
    @TableField("income_roi_3")
    private BigDecimal incomeRoi3;
    /** 7天收益（分） */
    @TableField("income_val_7")
    private Long incomeVal7;
    /** 7天ROI */
    @TableField("income_roi_7")
    private BigDecimal incomeRoi7;
    /** 14天收益（分） */
    @TableField("income_val_14")
    private Long incomeVal14;
    /** 14天ROI */
    @TableField("income_roi_14")
    private BigDecimal incomeRoi14;
    /** 24小时收益（分） */
    @TableField("income_val_24h")
    private Long incomeVal24h;
    /** 1天24小时ROI */
    @TableField("income_roi_1_24h")
    @com.alibaba.fastjson2.annotation.JSONField(name = "incomeRoi124h")
    private BigDecimal incomeRoi124h;

    // ── 审计字段 ──────────────────────────────────────────────────────────────
    /** 创建时间 */
    private LocalDateTime createdTime;

    /** 更新时间 */
    private LocalDateTime updatedTime;
}
