|
@@ -0,0 +1,446 @@
|
|
|
|
|
+-- =============================================================================
|
|
|
|
|
+-- 平台埋点统计系统 - 完整建表脚本(最终版)
|
|
|
|
|
+-- =============================================================================
|
|
|
|
|
+-- 【新环境】仅需执行本文件一次即可。
|
|
|
|
|
+--
|
|
|
|
|
+-- 表结构说明:
|
|
|
|
|
+-- A. 基础表(4张) 事件日志、AI请求、日汇总KPI、任务日志
|
|
|
|
|
+-- B. 明细表(12张) 用户/商户/内容/品类/AI对话/举报 × (今日表+历史表)
|
|
|
|
|
+--
|
|
|
|
|
+-- 数据流:
|
|
|
|
|
+-- 白天埋点/统计 → 写入 *_today
|
|
|
|
|
+-- 零点 analyticsArchiveDaily → 归档至 *_history(stat_date=昨日)
|
|
|
|
|
+-- → TRUNCATE *_today → 删除30天前历史
|
|
|
|
|
+--
|
|
|
|
|
+-- XXL-JOB 调度建议:
|
|
|
|
|
+-- analyticsArchiveDaily 0 0 0 * * ? 零点归档
|
|
|
|
|
+-- analyticsCalculateTodayHourly 0 0 * * * ? 每小时汇总当日
|
|
|
|
|
+-- analyticsCalculateYesterdayDaily 0 0 2 * * ? 凌晨2点汇总前日
|
|
|
|
|
+-- analyticsCalculateRetention 0 0 3 * * ? 凌晨3点计算留存
|
|
|
|
|
+--
|
|
|
|
|
+-- 经营品类 business_category / shop_type 枚举:
|
|
|
|
|
+-- 1美食 2休闲娱乐 3生活服务 4旅游 5酒店 6购物 7其他
|
|
|
|
|
+--
|
|
|
|
|
+-- 实体对照:
|
|
|
|
|
+-- analytics_event → AnalyticsEvent
|
|
|
|
|
+-- analytics_ai_request → AnalyticsAiRequest
|
|
|
|
|
+-- analytics_daily_summary → AnalyticsDailySummary
|
|
|
|
|
+-- analytics_stat_job_log → AnalyticsStatJobLog
|
|
|
|
|
+-- analytics_user_stat_today → AnalyticsUserStatToday
|
|
|
|
|
+-- analytics_user_stat_history → AnalyticsUserStat
|
|
|
|
|
+-- analytics_merchant_stat_today → AnalyticsMerchantStatToday
|
|
|
|
|
+-- analytics_merchant_stat_history → AnalyticsMerchantStat
|
|
|
|
|
+-- analytics_content_stat_today → AnalyticsContentStat
|
|
|
|
|
+-- analytics_content_stat_history → AnalyticsContentStatHistory
|
|
|
|
|
+-- analytics_category_daily_today → AnalyticsCategoryDailyToday
|
|
|
|
|
+-- analytics_category_daily_history → AnalyticsCategoryDaily
|
|
|
|
|
+-- analytics_ai_chat_stat_today → AnalyticsAiChatStat
|
|
|
|
|
+-- analytics_ai_chat_stat_history → AnalyticsAiChatStatHistory
|
|
|
|
|
+-- analytics_report_record_today → AnalyticsReportRecord
|
|
|
|
|
+-- analytics_report_record_history → AnalyticsReportRecordHistory
|
|
|
|
|
+--
|
|
|
|
|
+-- 【旧环境升级】勿直接执行本文件,请参考:
|
|
|
|
|
+-- analytics_tables_dashboard_upgrade.sql(v1→v2增量)
|
|
|
|
|
+-- 脚本末尾「旧库迁移」RENAME 说明(单表明细 → today/history)
|
|
|
|
|
+-- =============================================================================
|
|
|
|
|
+
|
|
|
|
|
+SET NAMES utf8mb4;
|
|
|
|
|
+
|
|
|
|
|
+-- #############################################################################
|
|
|
|
|
+-- PART A. 基础表
|
|
|
|
|
+-- #############################################################################
|
|
|
|
|
+
|
|
|
|
|
+-- -----------------------------------------------------------------------------
|
|
|
|
|
+-- A1. 埋点事件表(原始日志,日汇总数据源)
|
|
|
|
|
+-- -----------------------------------------------------------------------------
|
|
|
|
|
+CREATE TABLE IF NOT EXISTS `analytics_event` (
|
|
|
|
|
+ `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键',
|
|
|
|
|
+ `event_id` varchar(64) NOT NULL COMMENT '事件唯一ID(幂等,前端UUID)',
|
|
|
|
|
+ `event_code` varchar(64) NOT NULL COMMENT '事件编码(见 AnalyticsEventCode)',
|
|
|
|
|
+ `event_subtype` varchar(32) DEFAULT NULL COMMENT '事件子类型(审核ai_pass/manual_pass/reject;注册漏斗步骤等)',
|
|
|
|
|
+ `user_id` bigint DEFAULT NULL COMMENT '用户ID',
|
|
|
|
|
+ `merchant_id` bigint DEFAULT NULL COMMENT '商户/店铺ID',
|
|
|
|
|
+ `target_id` bigint DEFAULT NULL COMMENT '目标对象ID(如内容ID、订单ID)',
|
|
|
|
|
+ `content_type` tinyint DEFAULT NULL COMMENT '内容形态(1动态2打卡3二手商品)',
|
|
|
|
|
+ `business_category` tinyint DEFAULT NULL COMMENT '经营品类(1美食2休闲娱乐3生活服务4旅游5酒店6购物7其他)',
|
|
|
|
|
+ `shop_type` tinyint DEFAULT NULL COMMENT '商户店铺类型(冗余,便于聚合)',
|
|
|
|
|
+ `amount` decimal(14,2) DEFAULT NULL COMMENT '金额(元,支付等)',
|
|
|
|
|
+ `duration_ms` bigint DEFAULT NULL COMMENT '时长(毫秒,心跳/会话等)',
|
|
|
|
|
+ `device_type` varchar(16) DEFAULT NULL COMMENT '设备类型(IOS/ANDROID/H5等)',
|
|
|
|
|
+ `channel` varchar(64) DEFAULT NULL COMMENT '渠道(应用商店/小程序等)',
|
|
|
|
|
+ `city` varchar(64) DEFAULT NULL COMMENT '城市',
|
|
|
|
|
+ `event_time` datetime(3) NOT NULL COMMENT '事件发生时间',
|
|
|
|
|
+ `created_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '入库时间',
|
|
|
|
|
+ PRIMARY KEY (`id`),
|
|
|
|
|
+ UNIQUE KEY `uk_event_id` (`event_id`),
|
|
|
|
|
+ KEY `idx_event_code_time` (`event_code`, `event_time`),
|
|
|
|
|
+ KEY `idx_event_code_subtype_time` (`event_code`, `event_subtype`, `event_time`),
|
|
|
|
|
+ KEY `idx_user_time` (`user_id`, `event_time`),
|
|
|
|
|
+ KEY `idx_merchant_time` (`merchant_id`, `event_time`),
|
|
|
|
|
+ KEY `idx_business_category_time` (`business_category`, `event_time`)
|
|
|
|
|
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='埋点事件表(原始日志)';
|
|
|
|
|
+
|
|
|
|
|
+-- -----------------------------------------------------------------------------
|
|
|
|
|
+-- A2. AI 请求明细(单次 API 调用耗时,不按今日/历史拆分)
|
|
|
|
|
+-- -----------------------------------------------------------------------------
|
|
|
|
|
+CREATE TABLE IF NOT EXISTS `analytics_ai_request` (
|
|
|
|
|
+ `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键',
|
|
|
|
|
+ `request_id` varchar(64) NOT NULL COMMENT '请求唯一ID(幂等)',
|
|
|
|
|
+ `api_name` varchar(128) NOT NULL COMMENT 'AI接口名称',
|
|
|
|
|
+ `api_url` varchar(512) NOT NULL COMMENT 'AI接口地址',
|
|
|
|
|
+ `response_duration_ms` bigint NOT NULL DEFAULT 0 COMMENT '响应时长(毫秒)',
|
|
|
|
|
+ `is_timeout` tinyint NOT NULL DEFAULT 0 COMMENT '是否超时(0否1是)',
|
|
|
|
|
+ `created_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '记录时间',
|
|
|
|
|
+ PRIMARY KEY (`id`),
|
|
|
|
|
+ UNIQUE KEY `uk_request_id` (`request_id`),
|
|
|
|
|
+ KEY `idx_api_name` (`api_name`),
|
|
|
|
|
+ KEY `idx_created_time` (`created_time`)
|
|
|
|
|
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='AI请求明细(单次调用)';
|
|
|
|
|
+
|
|
|
|
|
+-- -----------------------------------------------------------------------------
|
|
|
|
|
+-- A3. 平台日统计主表(四页看板 KPI,按自然日一行)
|
|
|
|
|
+-- -----------------------------------------------------------------------------
|
|
|
|
|
+CREATE TABLE IF NOT EXISTS `analytics_daily_summary` (
|
|
|
|
|
+ `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键',
|
|
|
|
|
+ `stat_date` date NOT NULL COMMENT '统计日期',
|
|
|
|
|
+ `dau` int NOT NULL DEFAULT 0 COMMENT '日活跃用户数(DAU)',
|
|
|
|
|
+ `mau` int NOT NULL DEFAULT 0 COMMENT '月活MAU(近30日去重快照)',
|
|
|
|
|
+ `new_user_count` int NOT NULL DEFAULT 0 COMMENT '当日新增注册用户数',
|
|
|
|
|
+ `register_page_view_count` int NOT NULL DEFAULT 0 COMMENT '注册漏斗-进入注册页',
|
|
|
|
|
+ `register_phone_submit_count` int NOT NULL DEFAULT 0 COMMENT '注册漏斗-提交手机号',
|
|
|
|
|
+ `register_otp_pass_count` int NOT NULL DEFAULT 0 COMMENT '注册漏斗-验证码通过',
|
|
|
|
|
+ `register_password_set_count` int NOT NULL DEFAULT 0 COMMENT '注册漏斗-设置密码',
|
|
|
|
|
+ `register_success_count` int NOT NULL DEFAULT 0 COMMENT '注册漏斗-注册成功',
|
|
|
|
|
+ `ai_chat_count` int NOT NULL DEFAULT 0 COMMENT '当日AI对话次数',
|
|
|
|
|
+ `ai_chat_user_count` int NOT NULL DEFAULT 0 COMMENT '当日对话用户数(去重)',
|
|
|
|
|
+ `content_publish_count` int NOT NULL DEFAULT 0 COMMENT '当日内容发布数',
|
|
|
|
|
+ `merchant_visit_uv` int NOT NULL DEFAULT 0 COMMENT '当日商家访问UV',
|
|
|
|
|
+ `merchant_expose_count` bigint NOT NULL DEFAULT 0 COMMENT '商家曝光次数(漏斗)',
|
|
|
|
|
+ `merchant_click_count` bigint NOT NULL DEFAULT 0 COMMENT '商家点击次数(漏斗)',
|
|
|
|
|
+ `merchant_detail_view_count` bigint NOT NULL DEFAULT 0 COMMENT '商家详情浏览次数(漏斗)',
|
|
|
|
|
+ `merchant_contact_count` bigint NOT NULL DEFAULT 0 COMMENT '商家电话/导航次数(漏斗)',
|
|
|
|
|
+ `ai_response_duration_total_ms` bigint NOT NULL DEFAULT 0 COMMENT 'AI响应总时长(毫秒)',
|
|
|
|
|
+ `ai_request_count` int NOT NULL DEFAULT 0 COMMENT 'AI请求次数',
|
|
|
|
|
+ `online_user_count` int NOT NULL DEFAULT 0 COMMENT '当前在线用户数(快照)',
|
|
|
|
|
+ `pay_user_count` int NOT NULL DEFAULT 0 COMMENT '当日支付用户数(去重)',
|
|
|
|
|
+ `conversion_rate` decimal(10,4) DEFAULT NULL COMMENT '转化率(%)',
|
|
|
|
|
+ `avg_order_amount` decimal(10,2) DEFAULT NULL COMMENT '客单价(元)',
|
|
|
|
|
+ `today_conversion_rate` decimal(10,4) DEFAULT NULL COMMENT '当日转化率(%)',
|
|
|
|
|
+ `total_register_user_count` int NOT NULL DEFAULT 0 COMMENT '累计注册用户数',
|
|
|
|
|
+ `last_7d_new_user_count` int NOT NULL DEFAULT 0 COMMENT '近7日新用户数',
|
|
|
|
|
+ `last_7d_active_user_count` int NOT NULL DEFAULT 0 COMMENT '近7日活跃用户数',
|
|
|
|
|
+ `last_30d_active_user_count` int NOT NULL DEFAULT 0 COMMENT '近30日活跃用户数',
|
|
|
|
|
+ `next_day_retained_count` int NOT NULL DEFAULT 0 COMMENT '前日注册用户次日留存数',
|
|
|
|
|
+ `next_day_retention_rate` decimal(10,4) DEFAULT NULL COMMENT '次日留存率(%)',
|
|
|
|
|
+ `audit_pass_count` int NOT NULL DEFAULT 0 COMMENT '审核通过总次数',
|
|
|
|
|
+ `audit_submit_count` int NOT NULL DEFAULT 0 COMMENT '审核提交次数',
|
|
|
|
|
+ `audit_ai_pass_count` int NOT NULL DEFAULT 0 COMMENT 'AI审核通过次数',
|
|
|
|
|
+ `audit_manual_pass_count` int NOT NULL DEFAULT 0 COMMENT '人工审核通过次数',
|
|
|
|
|
+ `audit_reject_count` int NOT NULL DEFAULT 0 COMMENT '审核驳回次数',
|
|
|
|
|
+ `audit_pass_rate` decimal(10,4) DEFAULT NULL COMMENT '审核通过率(%)',
|
|
|
|
|
+ `content_interaction_count` int NOT NULL DEFAULT 0 COMMENT '当日内容互动总数',
|
|
|
|
|
+ `report_handle_count` int NOT NULL DEFAULT 0 COMMENT '当日举报处理数',
|
|
|
|
|
+ `report_submit_count` int NOT NULL DEFAULT 0 COMMENT '当日举报提交数',
|
|
|
|
|
+ `yesterday_report_handle_rate` decimal(10,4) DEFAULT NULL COMMENT '昨日举报处理率(%)',
|
|
|
|
|
+ `report_handle_rate` decimal(10,4) DEFAULT NULL COMMENT '当日举报处理率(%)',
|
|
|
|
|
+ `total_settled_merchant_count` int NOT NULL DEFAULT 0 COMMENT '累计入驻商家数',
|
|
|
|
|
+ `today_gmv` decimal(14,2) NOT NULL DEFAULT 0.00 COMMENT '当日GMV(元)',
|
|
|
|
|
+ `verify_rate` decimal(10,4) DEFAULT NULL COMMENT '核销率(%)',
|
|
|
|
|
+ `merchant_review_rate` decimal(10,4) DEFAULT NULL COMMENT '商家评价率(%)',
|
|
|
|
|
+ PRIMARY KEY (`id`),
|
|
|
|
|
+ UNIQUE KEY `uk_stat_date` (`stat_date`)
|
|
|
|
|
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='平台日统计主表(看板KPI)';
|
|
|
|
|
+
|
|
|
|
|
+-- -----------------------------------------------------------------------------
|
|
|
|
|
+-- A4. 统计任务执行日志
|
|
|
|
|
+-- -----------------------------------------------------------------------------
|
|
|
|
|
+CREATE TABLE IF NOT EXISTS `analytics_stat_job_log` (
|
|
|
|
|
+ `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键',
|
|
|
|
|
+ `job_id` varchar(64) NOT NULL COMMENT '任务实例ID(UUID)',
|
|
|
|
|
+ `stat_date` date NOT NULL COMMENT '统计目标日期',
|
|
|
|
|
+ `scope` varchar(32) NOT NULL COMMENT '统计范围(ALL/USER/MERCHANT/CONTENT/DAILY等,见 AnalyticsStatScope)',
|
|
|
|
|
+ `trigger_type` varchar(16) NOT NULL COMMENT '触发方式(SCHEDULE定时/MANUAL手动)',
|
|
|
|
|
+ `status` tinyint NOT NULL DEFAULT 0 COMMENT '状态(0执行中1成功2失败)',
|
|
|
|
|
+ `start_time` datetime NOT NULL COMMENT '开始时间',
|
|
|
|
|
+ `end_time` datetime DEFAULT NULL COMMENT '结束时间',
|
|
|
|
|
+ `error_msg` varchar(1000) DEFAULT NULL COMMENT '失败错误信息',
|
|
|
|
|
+ `created_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
|
|
|
|
+ PRIMARY KEY (`id`),
|
|
|
|
|
+ KEY `idx_stat_date` (`stat_date`),
|
|
|
|
|
+ KEY `idx_job_id` (`job_id`)
|
|
|
|
|
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='统计任务执行日志';
|
|
|
|
|
+
|
|
|
|
|
+-- #############################################################################
|
|
|
|
|
+-- PART B. 明细表(今日表 + 历史表,历史保留至少30天)
|
|
|
|
|
+-- #############################################################################
|
|
|
|
|
+
|
|
|
|
|
+-- -----------------------------------------------------------------------------
|
|
|
|
|
+-- B1. 用户明细(今日表 uk_user_id;历史表 uk_date_user)
|
|
|
|
|
+-- -----------------------------------------------------------------------------
|
|
|
|
|
+CREATE TABLE IF NOT EXISTS `analytics_user_stat_today` (
|
|
|
|
|
+ `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键',
|
|
|
|
|
+ `user_id` bigint NOT NULL COMMENT '用户ID',
|
|
|
|
|
+ `first_launch_time` datetime DEFAULT NULL COMMENT '当日首次启动时间',
|
|
|
|
|
+ `last_active_time` datetime DEFAULT NULL COMMENT '最后活跃/心跳时间(在线用户筛选)',
|
|
|
|
|
+ `city` varchar(64) DEFAULT NULL COMMENT '城市',
|
|
|
|
|
+ `province` varchar(64) DEFAULT NULL COMMENT '省份',
|
|
|
|
|
+ `device_type` varchar(16) DEFAULT NULL COMMENT '设备类型(IOS 17/Android 14等)',
|
|
|
|
|
+ `user_phone` varchar(20) DEFAULT NULL COMMENT '手机号(展示层脱敏)',
|
|
|
|
|
+ `gender` tinyint DEFAULT NULL COMMENT '性别(0未知1男2女)',
|
|
|
|
|
+ `age` int DEFAULT NULL COMMENT '年龄',
|
|
|
|
|
+ `age_group` varchar(16) DEFAULT NULL COMMENT '年龄段(18-24/25-29等)',
|
|
|
|
|
+ `register_time` datetime DEFAULT NULL COMMENT '注册时间',
|
|
|
|
|
+ `channel` varchar(64) DEFAULT NULL COMMENT '注册/获客渠道',
|
|
|
|
|
+ `is_new_user` tinyint NOT NULL DEFAULT 0 COMMENT '是否当日新注册用户(0否1是)',
|
|
|
|
|
+ `online_duration_min` int NOT NULL DEFAULT 0 COMMENT '当日累计在线时长(分钟)',
|
|
|
|
|
+ PRIMARY KEY (`id`),
|
|
|
|
|
+ UNIQUE KEY `uk_user_id` (`user_id`),
|
|
|
|
|
+ KEY `idx_last_active` (`last_active_time`),
|
|
|
|
|
+ KEY `idx_register_time` (`register_time`),
|
|
|
|
|
+ KEY `idx_is_new_user` (`is_new_user`)
|
|
|
|
|
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='用户明细-今日(DAU/新增/在线)';
|
|
|
|
|
+
|
|
|
|
|
+CREATE TABLE IF NOT EXISTS `analytics_user_stat_history` (
|
|
|
|
|
+ `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键',
|
|
|
|
|
+ `stat_date` date NOT NULL COMMENT '统计日期(归档日)',
|
|
|
|
|
+ `user_id` bigint NOT NULL COMMENT '用户ID',
|
|
|
|
|
+ `first_launch_time` datetime DEFAULT NULL COMMENT '当日首次启动时间',
|
|
|
|
|
+ `last_active_time` datetime DEFAULT NULL COMMENT '最后活跃时间',
|
|
|
|
|
+ `city` varchar(64) DEFAULT NULL COMMENT '城市',
|
|
|
|
|
+ `province` varchar(64) DEFAULT NULL COMMENT '省份',
|
|
|
|
|
+ `device_type` varchar(16) DEFAULT NULL COMMENT '设备类型',
|
|
|
|
|
+ `user_phone` varchar(20) DEFAULT NULL COMMENT '手机号',
|
|
|
|
|
+ `gender` tinyint DEFAULT NULL COMMENT '性别(0未知1男2女)',
|
|
|
|
|
+ `age` int DEFAULT NULL COMMENT '年龄',
|
|
|
|
|
+ `age_group` varchar(16) DEFAULT NULL COMMENT '年龄段',
|
|
|
|
|
+ `register_time` datetime DEFAULT NULL COMMENT '注册时间',
|
|
|
|
|
+ `channel` varchar(64) DEFAULT NULL COMMENT '渠道',
|
|
|
|
|
+ `is_new_user` tinyint NOT NULL DEFAULT 0 COMMENT '是否当日新注册用户(0否1是)',
|
|
|
|
|
+ `online_duration_min` int NOT NULL DEFAULT 0 COMMENT '当日在线时长(分钟)',
|
|
|
|
|
+ PRIMARY KEY (`id`),
|
|
|
|
|
+ UNIQUE KEY `uk_date_user` (`stat_date`, `user_id`),
|
|
|
|
|
+ KEY `idx_stat_date` (`stat_date`),
|
|
|
|
|
+ KEY `idx_user_id` (`user_id`),
|
|
|
|
|
+ KEY `idx_last_active` (`last_active_time`)
|
|
|
|
|
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='用户明细-历史(保留30天)';
|
|
|
|
|
+
|
|
|
|
|
+-- -----------------------------------------------------------------------------
|
|
|
|
|
+-- B2. 商户明细(今日表 uk_merchant_id;历史表 uk_date_merchant)
|
|
|
|
|
+-- -----------------------------------------------------------------------------
|
|
|
|
|
+CREATE TABLE IF NOT EXISTS `analytics_merchant_stat_today` (
|
|
|
|
|
+ `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键',
|
|
|
|
|
+ `merchant_id` bigint NOT NULL COMMENT '商家/店铺ID',
|
|
|
|
|
+ `shop_type` tinyint DEFAULT NULL COMMENT '店铺类型(1美食2休闲娱乐3生活服务)',
|
|
|
|
|
+ `visit_uv` int NOT NULL DEFAULT 0 COMMENT '访问UV(当日去重访客累计)',
|
|
|
|
|
+ `visit_pv` int NOT NULL DEFAULT 0 COMMENT '访问PV(当日浏览次数累计)',
|
|
|
|
|
+ `gmv` decimal(14,2) NOT NULL DEFAULT 0.00 COMMENT '当日GMV(元)',
|
|
|
|
|
+ `pay_count` int NOT NULL DEFAULT 0 COMMENT '支付笔数',
|
|
|
|
|
+ `pay_user_count` int NOT NULL DEFAULT 0 COMMENT '支付用户数(去重)',
|
|
|
|
|
+ `verify_count` int NOT NULL DEFAULT 0 COMMENT '核销次数',
|
|
|
|
|
+ `expose_count` int NOT NULL DEFAULT 0 COMMENT '曝光次数(漏斗)',
|
|
|
|
|
+ `click_count` int NOT NULL DEFAULT 0 COMMENT '点击次数(漏斗)',
|
|
|
|
|
+ `detail_view_count` int NOT NULL DEFAULT 0 COMMENT '详情页浏览次数(漏斗)',
|
|
|
|
|
+ `contact_count` int NOT NULL DEFAULT 0 COMMENT '电话/导航次数(漏斗)',
|
|
|
|
|
+ `review_count` int NOT NULL DEFAULT 0 COMMENT '评价数',
|
|
|
|
|
+ `review_rate` decimal(10,4) DEFAULT NULL COMMENT '评价率(%)',
|
|
|
|
|
+ `verify_conversion_rate` decimal(10,4) DEFAULT NULL COMMENT '核销转化率(%)',
|
|
|
|
|
+ `settle_time` datetime DEFAULT NULL COMMENT '入驻时间',
|
|
|
|
|
+ `settle_status` tinyint DEFAULT NULL COMMENT '入驻状态',
|
|
|
|
|
+ PRIMARY KEY (`id`),
|
|
|
|
|
+ UNIQUE KEY `uk_merchant_id` (`merchant_id`),
|
|
|
|
|
+ KEY `idx_shop_type` (`shop_type`),
|
|
|
|
|
+ KEY `idx_visit_pv` (`visit_pv`)
|
|
|
|
|
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='商户明细-今日(访问UV/PV/转化)';
|
|
|
|
|
+
|
|
|
|
|
+CREATE TABLE IF NOT EXISTS `analytics_merchant_stat_history` (
|
|
|
|
|
+ `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键',
|
|
|
|
|
+ `stat_date` date NOT NULL COMMENT '统计日期(归档日)',
|
|
|
|
|
+ `merchant_id` bigint NOT NULL COMMENT '商家/店铺ID',
|
|
|
|
|
+ `shop_type` tinyint DEFAULT NULL COMMENT '店铺类型(1美食2休闲娱乐3生活服务)',
|
|
|
|
|
+ `visit_uv` int NOT NULL DEFAULT 0 COMMENT '访问UV',
|
|
|
|
|
+ `visit_pv` int NOT NULL DEFAULT 0 COMMENT '访问PV',
|
|
|
|
|
+ `gmv` decimal(14,2) NOT NULL DEFAULT 0.00 COMMENT '当日GMV(元)',
|
|
|
|
|
+ `pay_count` int NOT NULL DEFAULT 0 COMMENT '支付笔数',
|
|
|
|
|
+ `pay_user_count` int NOT NULL DEFAULT 0 COMMENT '支付用户数',
|
|
|
|
|
+ `verify_count` int NOT NULL DEFAULT 0 COMMENT '核销次数',
|
|
|
|
|
+ `expose_count` int NOT NULL DEFAULT 0 COMMENT '曝光次数',
|
|
|
|
|
+ `click_count` int NOT NULL DEFAULT 0 COMMENT '点击次数',
|
|
|
|
|
+ `detail_view_count` int NOT NULL DEFAULT 0 COMMENT '详情浏览次数',
|
|
|
|
|
+ `contact_count` int NOT NULL DEFAULT 0 COMMENT '电话/导航次数',
|
|
|
|
|
+ `review_count` int NOT NULL DEFAULT 0 COMMENT '评价数',
|
|
|
|
|
+ `review_rate` decimal(10,4) DEFAULT NULL COMMENT '评价率(%)',
|
|
|
|
|
+ `verify_conversion_rate` decimal(10,4) DEFAULT NULL COMMENT '核销转化率(%)',
|
|
|
|
|
+ `settle_time` datetime DEFAULT NULL COMMENT '入驻时间',
|
|
|
|
|
+ `settle_status` tinyint DEFAULT NULL COMMENT '入驻状态',
|
|
|
|
|
+ PRIMARY KEY (`id`),
|
|
|
|
|
+ UNIQUE KEY `uk_date_merchant` (`stat_date`, `merchant_id`),
|
|
|
|
|
+ KEY `idx_stat_date` (`stat_date`),
|
|
|
|
|
+ KEY `idx_merchant_id` (`merchant_id`),
|
|
|
|
|
+ KEY `idx_gmv` (`stat_date`, `gmv`)
|
|
|
|
|
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='商户明细-历史(保留30天)';
|
|
|
|
|
+
|
|
|
|
|
+-- -----------------------------------------------------------------------------
|
|
|
|
|
+-- B3. 内容明细(今日表 uk_content_type_id;历史表 uk_date_content)
|
|
|
|
|
+-- -----------------------------------------------------------------------------
|
|
|
|
|
+CREATE TABLE IF NOT EXISTS `analytics_content_stat_today` (
|
|
|
|
|
+ `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键',
|
|
|
|
|
+ `content_id` bigint NOT NULL COMMENT '内容ID',
|
|
|
|
|
+ `content_type` tinyint NOT NULL COMMENT '内容形态(1动态2打卡3二手商品)',
|
|
|
|
|
+ `business_category` tinyint DEFAULT NULL COMMENT '经营品类(1美食2休闲娱乐3生活服务4旅游5酒店6购物7其他)',
|
|
|
|
|
+ `author_type` tinyint NOT NULL COMMENT '作者类型(1用户2商家)',
|
|
|
|
|
+ `author_id` bigint NOT NULL COMMENT '作者ID',
|
|
|
|
|
+ `content_title` varchar(256) DEFAULT NULL COMMENT '内容标题快照',
|
|
|
|
|
+ `publish_time` datetime DEFAULT NULL COMMENT '发布时间',
|
|
|
|
|
+ `interaction_count` int NOT NULL DEFAULT 0 COMMENT '互动总数(点赞+评论+分享等)',
|
|
|
|
|
+ `like_count` int NOT NULL DEFAULT 0 COMMENT '点赞数',
|
|
|
|
|
+ `comment_count` int NOT NULL DEFAULT 0 COMMENT '评论数',
|
|
|
|
|
+ `share_count` int NOT NULL DEFAULT 0 COMMENT '分享数',
|
|
|
|
|
+ `status` tinyint DEFAULT NULL COMMENT '内容状态',
|
|
|
|
|
+ `audit_user_id` bigint DEFAULT NULL COMMENT '审核人用户ID',
|
|
|
|
|
+ `audit_status` tinyint DEFAULT NULL COMMENT '审核状态',
|
|
|
|
|
+ `audit_type` tinyint DEFAULT NULL COMMENT '审核方式(1AI2人工)',
|
|
|
|
|
+ `audit_time` datetime DEFAULT NULL COMMENT '审核时间',
|
|
|
|
|
+ PRIMARY KEY (`id`),
|
|
|
|
|
+ UNIQUE KEY `uk_content` (`content_type`, `content_id`),
|
|
|
|
|
+ KEY `idx_interaction` (`interaction_count`),
|
|
|
|
|
+ KEY `idx_publish_time` (`publish_time`),
|
|
|
|
|
+ KEY `idx_business_category` (`business_category`),
|
|
|
|
|
+ KEY `idx_author` (`author_type`, `author_id`)
|
|
|
|
|
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='内容明细-今日(发布/互动)';
|
|
|
|
|
+
|
|
|
|
|
+CREATE TABLE IF NOT EXISTS `analytics_content_stat_history` (
|
|
|
|
|
+ `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键',
|
|
|
|
|
+ `stat_date` date NOT NULL COMMENT '统计日期(归档日)',
|
|
|
|
|
+ `content_id` bigint NOT NULL COMMENT '内容ID',
|
|
|
|
|
+ `content_type` tinyint NOT NULL COMMENT '内容形态(1动态2打卡3二手商品)',
|
|
|
|
|
+ `business_category` tinyint DEFAULT NULL COMMENT '经营品类(1美食2休闲娱乐3生活服务4旅游5酒店6购物7其他)',
|
|
|
|
|
+ `author_type` tinyint NOT NULL COMMENT '作者类型(1用户2商家)',
|
|
|
|
|
+ `author_id` bigint NOT NULL COMMENT '作者ID',
|
|
|
|
|
+ `content_title` varchar(256) DEFAULT NULL COMMENT '内容标题快照',
|
|
|
|
|
+ `publish_time` datetime DEFAULT NULL COMMENT '发布时间',
|
|
|
|
|
+ `interaction_count` int NOT NULL DEFAULT 0 COMMENT '互动总数',
|
|
|
|
|
+ `like_count` int NOT NULL DEFAULT 0 COMMENT '点赞数',
|
|
|
|
|
+ `comment_count` int NOT NULL DEFAULT 0 COMMENT '评论数',
|
|
|
|
|
+ `share_count` int NOT NULL DEFAULT 0 COMMENT '分享数',
|
|
|
|
|
+ `status` tinyint DEFAULT NULL COMMENT '内容状态',
|
|
|
|
|
+ `audit_user_id` bigint DEFAULT NULL COMMENT '审核人用户ID',
|
|
|
|
|
+ `audit_status` tinyint DEFAULT NULL COMMENT '审核状态',
|
|
|
|
|
+ `audit_type` tinyint DEFAULT NULL COMMENT '审核方式(1AI2人工)',
|
|
|
|
|
+ `audit_time` datetime DEFAULT NULL COMMENT '审核时间',
|
|
|
|
|
+ PRIMARY KEY (`id`),
|
|
|
|
|
+ UNIQUE KEY `uk_date_content` (`stat_date`, `content_type`, `content_id`),
|
|
|
|
|
+ KEY `idx_stat_date` (`stat_date`),
|
|
|
|
|
+ KEY `idx_interaction` (`interaction_count`)
|
|
|
|
|
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='内容明细-历史(保留30天)';
|
|
|
|
|
+
|
|
|
|
|
+-- -----------------------------------------------------------------------------
|
|
|
|
|
+-- B4. 经营品类日统计(今日表 uk_category;历史表 uk_date_category)
|
|
|
|
|
+-- -----------------------------------------------------------------------------
|
|
|
|
|
+CREATE TABLE IF NOT EXISTS `analytics_category_daily_today` (
|
|
|
|
|
+ `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键',
|
|
|
|
|
+ `business_category` tinyint NOT NULL COMMENT '经营品类(1美食2休闲娱乐3生活服务4旅游5酒店6购物7其他)',
|
|
|
|
|
+ `gmv` decimal(14,2) NOT NULL DEFAULT 0.00 COMMENT '品类GMV(元)',
|
|
|
|
|
+ `pay_count` int NOT NULL DEFAULT 0 COMMENT '支付笔数',
|
|
|
|
|
+ `merchant_visit_uv` int NOT NULL DEFAULT 0 COMMENT '品类商家访问UV',
|
|
|
|
|
+ `content_publish_count` int NOT NULL DEFAULT 0 COMMENT '品类内容发布数',
|
|
|
|
|
+ `content_interaction_count` int NOT NULL DEFAULT 0 COMMENT '品类内容互动数',
|
|
|
|
|
+ PRIMARY KEY (`id`),
|
|
|
|
|
+ UNIQUE KEY `uk_category` (`business_category`)
|
|
|
|
|
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='经营品类日统计-今日(看板饼图)';
|
|
|
|
|
+
|
|
|
|
|
+CREATE TABLE IF NOT EXISTS `analytics_category_daily_history` (
|
|
|
|
|
+ `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键',
|
|
|
|
|
+ `stat_date` date NOT NULL COMMENT '统计日期(归档日)',
|
|
|
|
|
+ `business_category` tinyint NOT NULL COMMENT '经营品类(1美食2休闲娱乐3生活服务4旅游5酒店6购物7其他)',
|
|
|
|
|
+ `gmv` decimal(14,2) NOT NULL DEFAULT 0.00 COMMENT '品类GMV(元)',
|
|
|
|
|
+ `pay_count` int NOT NULL DEFAULT 0 COMMENT '支付笔数',
|
|
|
|
|
+ `merchant_visit_uv` int NOT NULL DEFAULT 0 COMMENT '品类商家访问UV',
|
|
|
|
|
+ `content_publish_count` int NOT NULL DEFAULT 0 COMMENT '品类内容发布数',
|
|
|
|
|
+ `content_interaction_count` int NOT NULL DEFAULT 0 COMMENT '品类内容互动数',
|
|
|
|
|
+ PRIMARY KEY (`id`),
|
|
|
|
|
+ UNIQUE KEY `uk_date_category` (`stat_date`, `business_category`),
|
|
|
|
|
+ KEY `idx_stat_date` (`stat_date`)
|
|
|
|
|
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='经营品类日统计-历史(保留30天)';
|
|
|
|
|
+
|
|
|
|
|
+-- -----------------------------------------------------------------------------
|
|
|
|
|
+-- B5. AI 对话明细(今日表 uk_chat_id;历史表 uk_date_chat)
|
|
|
|
|
+-- -----------------------------------------------------------------------------
|
|
|
|
|
+CREATE TABLE IF NOT EXISTS `analytics_ai_chat_stat_today` (
|
|
|
|
|
+ `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键',
|
|
|
|
|
+ `chat_id` varchar(64) NOT NULL COMMENT '对话ID(幂等)',
|
|
|
|
|
+ `user_id` bigint NOT NULL COMMENT '用户ID',
|
|
|
|
|
+ `start_time` datetime NOT NULL COMMENT '对话开始时间',
|
|
|
|
|
+ `message_count` int NOT NULL DEFAULT 0 COMMENT '消息条数',
|
|
|
|
|
+ `ai_response_duration_ms` bigint NOT NULL DEFAULT 0 COMMENT 'AI累计响应时长(毫秒)',
|
|
|
|
|
+ PRIMARY KEY (`id`),
|
|
|
|
|
+ UNIQUE KEY `uk_chat_id` (`chat_id`),
|
|
|
|
|
+ KEY `idx_user_id` (`user_id`),
|
|
|
|
|
+ KEY `idx_start_time` (`start_time`)
|
|
|
|
|
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='AI对话明细-今日';
|
|
|
|
|
+
|
|
|
|
|
+CREATE TABLE IF NOT EXISTS `analytics_ai_chat_stat_history` (
|
|
|
|
|
+ `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键',
|
|
|
|
|
+ `stat_date` date NOT NULL COMMENT '统计日期(归档日)',
|
|
|
|
|
+ `chat_id` varchar(64) NOT NULL COMMENT '对话ID',
|
|
|
|
|
+ `user_id` bigint NOT NULL COMMENT '用户ID',
|
|
|
|
|
+ `start_time` datetime NOT NULL COMMENT '对话开始时间',
|
|
|
|
|
+ `message_count` int NOT NULL DEFAULT 0 COMMENT '消息条数',
|
|
|
|
|
+ `ai_response_duration_ms` bigint NOT NULL DEFAULT 0 COMMENT 'AI累计响应时长(毫秒)',
|
|
|
|
|
+ PRIMARY KEY (`id`),
|
|
|
|
|
+ UNIQUE KEY `uk_date_chat` (`stat_date`, `chat_id`),
|
|
|
|
|
+ KEY `idx_stat_date` (`stat_date`),
|
|
|
|
|
+ KEY `idx_user_id` (`user_id`)
|
|
|
|
|
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='AI对话明细-历史(保留30天)';
|
|
|
|
|
+
|
|
|
|
|
+-- -----------------------------------------------------------------------------
|
|
|
|
|
+-- B6. 举报明细(今日表 uk_report_id;历史表 uk_date_report)
|
|
|
|
|
+-- -----------------------------------------------------------------------------
|
|
|
|
|
+CREATE TABLE IF NOT EXISTS `analytics_report_record_today` (
|
|
|
|
|
+ `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键',
|
|
|
|
|
+ `report_id` varchar(64) NOT NULL COMMENT '举报单号(幂等)',
|
|
|
|
|
+ `content_id` bigint DEFAULT NULL COMMENT '被举报内容ID',
|
|
|
|
|
+ `content_type` tinyint DEFAULT NULL COMMENT '内容类型(1动态2打卡3二手商品)',
|
|
|
|
|
+ `content_title` varchar(256) DEFAULT NULL COMMENT '内容标题快照',
|
|
|
|
|
+ `report_type` varchar(32) NOT NULL COMMENT '举报类型(不实信息/色情低俗等)',
|
|
|
|
|
+ `status` tinyint NOT NULL DEFAULT 0 COMMENT '处理状态(0处理中1已处理)',
|
|
|
|
|
+ `reporter_user_id` bigint DEFAULT NULL COMMENT '举报人用户ID',
|
|
|
|
|
+ `report_time` datetime NOT NULL COMMENT '举报时间',
|
|
|
|
|
+ `handle_time` datetime DEFAULT NULL COMMENT '处理完成时间',
|
|
|
|
|
+ `handle_user_id` bigint DEFAULT NULL COMMENT '处理人用户ID',
|
|
|
|
|
+ `created_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '入库时间',
|
|
|
|
|
+ PRIMARY KEY (`id`),
|
|
|
|
|
+ UNIQUE KEY `uk_report_id` (`report_id`),
|
|
|
|
|
+ KEY `idx_report_time` (`report_time`),
|
|
|
|
|
+ KEY `idx_status_time` (`status`, `report_time`)
|
|
|
|
|
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='举报明细-今日';
|
|
|
|
|
+
|
|
|
|
|
+CREATE TABLE IF NOT EXISTS `analytics_report_record_history` (
|
|
|
|
|
+ `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键',
|
|
|
|
|
+ `stat_date` date NOT NULL COMMENT '统计日期(归档日)',
|
|
|
|
|
+ `report_id` varchar(64) NOT NULL COMMENT '举报单号',
|
|
|
|
|
+ `content_id` bigint DEFAULT NULL COMMENT '被举报内容ID',
|
|
|
|
|
+ `content_type` tinyint DEFAULT NULL COMMENT '内容类型(1动态2打卡3二手商品)',
|
|
|
|
|
+ `content_title` varchar(256) DEFAULT NULL COMMENT '内容标题快照',
|
|
|
|
|
+ `report_type` varchar(32) NOT NULL COMMENT '举报类型',
|
|
|
|
|
+ `status` tinyint NOT NULL DEFAULT 0 COMMENT '处理状态(0处理中1已处理)',
|
|
|
|
|
+ `reporter_user_id` bigint DEFAULT NULL COMMENT '举报人用户ID',
|
|
|
|
|
+ `report_time` datetime NOT NULL COMMENT '举报时间',
|
|
|
|
|
+ `handle_time` datetime DEFAULT NULL COMMENT '处理完成时间',
|
|
|
|
|
+ `handle_user_id` bigint DEFAULT NULL COMMENT '处理人用户ID',
|
|
|
|
|
+ `created_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '入库时间',
|
|
|
|
|
+ PRIMARY KEY (`id`),
|
|
|
|
|
+ UNIQUE KEY `uk_date_report` (`stat_date`, `report_id`),
|
|
|
|
|
+ KEY `idx_stat_date` (`stat_date`),
|
|
|
|
|
+ KEY `idx_report_time` (`report_time`)
|
|
|
|
|
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='举报明细-历史(保留30天)';
|
|
|
|
|
+
|
|
|
|
|
+-- #############################################################################
|
|
|
|
|
+-- 旧库迁移说明(已有 v1 单表明细时,备份后手动执行,勿与新环境混用)
|
|
|
|
|
+-- #############################################################################
|
|
|
|
|
+-- RENAME TABLE analytics_user_stat TO analytics_user_stat_history;
|
|
|
|
|
+-- RENAME TABLE analytics_merchant_stat TO analytics_merchant_stat_history;
|
|
|
|
|
+-- RENAME TABLE analytics_content_stat TO analytics_content_stat_today;
|
|
|
|
|
+-- RENAME TABLE analytics_category_daily TO analytics_category_daily_history;
|
|
|
|
|
+-- RENAME TABLE analytics_ai_chat_stat TO analytics_ai_chat_stat_today;
|
|
|
|
|
+-- RENAME TABLE analytics_report_record TO analytics_report_record_today;
|
|
|
|
|
+-- 然后 CREATE 缺失的 *_today 表(见上文 PART B,仅执行 today 部分)。
|