01 · 模块定位
营销拓客中心
从模板库选择节日主题 H5 创建活动页面、发布后生成链接和活码、提交报名进入 CRM、按模板和渠道归因统计;自建页面可转为模板并经审核后被其他活动复用。业务目标
管理渠道、活动、私域、活码、活动模板库和转介绍,形成可归因、可复盘、可复用的招生增长入口。
使用终端
PC Web 管理后台负责活动模板、H5 编辑、投放范围、活码和复盘;外部招生 H5/小程序报名页负责访问留资;迪诺学堂教师端 App/小程序负责员工领取活动、生成专属二维码/海报、分享推广、线索回流和个人推广战报。
验收主线
从模板库选择节日主题 H5 创建活动页面、发布后生成链接和活码、提交报名进入 CRM、按模板和渠道归因统计;自建页面可转为模板并经审核后被其他活动复用。
02 · 范围边界
明确本模块负责什么、依赖什么、不负责什么
边界清晰后,原型、接口和数据库设计才能避免重复建设。模块内范围
- 渠道台账
- 活动预算
- 落地页表单
- 活码归因
- 私域任务
- 转介绍奖励
- 招生公开课直播运营
- 活动模板库
- 节日主题海报/H5
- 页面模板沉淀
- 模板审核与版本管理
- 活码短链域名
- 活码访问安全
- 线索撞单处理
上游依赖
- 组织校区与账号权限
- 课程/客户/合同等主数据
- 审批流、消息模板、文件中心
- 必要的第三方接口密钥
下游输出
- 业务状态和待办
- 消息通知和审批记录
- 报表指标和数据快照
- 审计日志和接口回执
03 · 确认口径、后台配置与默认实施规则
营销拓客中心必须承接的已确认规则
本章节来自待决策与澄清清单的收口结果,已经转为本模块 PRD 的正式需求、配置项或默认实施规则。| 分类 | 事项 | 本模块落地要求 | 责任方 |
|---|---|---|---|
| 默认实施规则 | 接口设计说明书组织方式 | 采用单独 HTML 文件集中管理接口协议;模块 PRD 保留模块级接口摘要,避免每个模块重复写通用协议。 | 产品/研发 |
| 默认实施规则 | 接口错误码与重试中间件 | 所有外部接口和内部异步任务统一错误码、幂等键、重试次数、告警阈值和回执归档策略。 | 后端/测试/运维 |
04 · 业务流程
营销拓客中心主流程
流程用于指导原型图的页面顺序、按钮状态和异常分支。维护抖音、小红书、美团、公众号、地推、转介绍等渠道档案、预算归属、负责人和投放口径。
按活动、校区、渠道配置预算、成本、目标线索量、目标到访量和 ROI 预警。
配置报名表单字段、名额、校区、课程、优惠、到场签到和 CRM 分配规则。
为活动、海报、H5、公开课和课程资源生成活码,并记录扫码渠道、目标版本和转化结果。
把活动报名、扫码、公开课观看和未转化线索生成企微/私域触达任务。
支持老带新、分享海报、邀请裂变、奖励规则、归属校区和奖励发放记录。
联动直播能力中心创建公开课直播、报名页、观看评分和顾问跟进任务。
从系统内置和总部共享模板中选择海报、H5、表单或组合活动模板创建活动。
05 · 功能清单
按子模块拆到可设计、可开发、可测试的颗粒度
每一行功能都需要在原型中体现入口、状态、按钮、字段和反馈。| 一级功能 | 二级功能 | 功能说明 | 规则/验收 |
|---|---|---|---|
| 渠道台账 | 营销推广闭环操作 | 渠道台账需同时覆盖 PC Web 活动配置、外部 H5 访问留资、迪诺学堂教师端 App/小程序员工推广承接、CRM 线索回流和效果复盘。 | 必须校验活动发布状态、推广范围、员工角色、校区范围、归因参数、活码状态、表单防重和线索分配规则 |
| 渠道台账 | 业务处理 | 维护抖音、小红书、美团、公众号、地推、转介绍等渠道档案、预算归属、负责人和投放口径。 | 必须联动状态、权限、消息、审批和指标 |
| 渠道台账 | 异常闭环 | 渠道来源缺失处理 | 失败原因可见、可重试、可转人工、可追溯 |
| 活动预算 | 营销推广闭环操作 | 活动预算需同时覆盖 PC Web 活动配置、外部 H5 访问留资、迪诺学堂教师端 App/小程序员工推广承接、CRM 线索回流和效果复盘。 | 必须校验活动发布状态、推广范围、员工角色、校区范围、归因参数、活码状态、表单防重和线索分配规则 |
| 活动预算 | 业务处理 | 按活动、校区、渠道配置预算、成本、目标线索量、目标到访量和 ROI 预警。 | 必须联动状态、权限、消息、审批和指标 |
| 活动预算 | 异常闭环 | 预算超限处理 | 失败原因可见、可重试、可转人工、可追溯 |
| 落地页表单 | 营销推广闭环操作 | 落地页表单需同时覆盖 PC Web 活动配置、外部 H5 访问留资、迪诺学堂教师端 App/小程序员工推广承接、CRM 线索回流和效果复盘。 | 必须校验活动发布状态、推广范围、员工角色、校区范围、归因参数、活码状态、表单防重和线索分配规则 |
| 落地页表单 | 业务处理 | 配置报名表单字段、名额、校区、课程、优惠、到场签到和 CRM 分配规则。 | 必须联动状态、权限、消息、审批和指标 |
| 落地页表单 | 异常闭环 | 表单提交失败处理 | 失败原因可见、可重试、可转人工、可追溯 |
| 活码归因 | 营销推广闭环操作 | 活码归因需同时覆盖 PC Web 活动配置、外部 H5 访问留资、迪诺学堂教师端 App/小程序员工推广承接、CRM 线索回流和效果复盘。 | 必须校验活动发布状态、推广范围、员工角色、校区范围、归因参数、活码状态、表单防重和线索分配规则 |
| 活码归因 | 业务处理 | 为活动、海报、H5、公开课和课程资源生成活码,并记录扫码渠道、目标版本和转化结果。 | 必须联动状态、权限、消息、审批和指标 |
| 活码归因 | 异常闭环 | 来源丢失处理 | 失败原因可见、可重试、可转人工、可追溯 |
| 私域任务 | 营销推广闭环操作 | 私域任务需同时覆盖 PC Web 活动配置、外部 H5 访问留资、迪诺学堂教师端 App/小程序员工推广承接、CRM 线索回流和效果复盘。 | 必须校验活动发布状态、推广范围、员工角色、校区范围、归因参数、活码状态、表单防重和线索分配规则 |
| 私域任务 | 业务处理 | 把活动报名、扫码、公开课观看和未转化线索生成企微/私域触达任务。 | 必须联动状态、权限、消息、审批和指标 |
| 私域任务 | 异常闭环 | 触达任务未生成处理 | 失败原因可见、可重试、可转人工、可追溯 |
| 转介绍奖励 | 营销推广闭环操作 | 转介绍奖励需同时覆盖 PC Web 活动配置、外部 H5 访问留资、迪诺学堂教师端 App/小程序员工推广承接、CRM 线索回流和效果复盘。 | 必须校验活动发布状态、推广范围、员工角色、校区范围、归因参数、活码状态、表单防重和线索分配规则 |
| 转介绍奖励 | 业务处理 | 支持老带新、分享海报、邀请裂变、奖励规则、归属校区和奖励发放记录。 | 必须联动状态、权限、消息、审批和指标 |
| 转介绍奖励 | 异常闭环 | 奖励归属争议处理 | 失败原因可见、可重试、可转人工、可追溯 |
| 招生公开课直播运营 | 营销推广闭环操作 | 招生公开课直播运营需同时覆盖 PC Web 活动配置、外部 H5 访问留资、迪诺学堂教师端 App/小程序员工推广承接、CRM 线索回流和效果复盘。 | 必须校验活动发布状态、推广范围、员工角色、校区范围、归因参数、活码状态、表单防重和线索分配规则 |
| 招生公开课直播运营 | 业务处理 | 联动直播能力中心创建公开课直播、报名页、观看评分和顾问跟进任务。 | 必须联动状态、权限、消息、审批和指标 |
| 招生公开课直播运营 | 异常闭环 | 直播报名未沉淀线索处理 | 失败原因可见、可重试、可转人工、可追溯 |
| 活动模板库 | 营销推广闭环操作 | 活动模板库需同时覆盖 PC Web 活动配置、外部 H5 访问留资、迪诺学堂教师端 App/小程序员工推广承接、CRM 线索回流和效果复盘。 | 必须校验活动发布状态、推广范围、员工角色、校区范围、归因参数、活码状态、表单防重和线索分配规则 |
| 活动模板库 | 业务处理 | 从系统内置和总部共享模板中选择海报、H5、表单或组合活动模板创建活动。 | 必须联动状态、权限、消息、审批和指标 |
| 活动模板库 | 异常闭环 | 模板不可用处理 | 失败原因可见、可重试、可转人工、可追溯 |
| 节日主题海报/H5 | 营销推广闭环操作 | 节日主题海报/H5需同时覆盖 PC Web 活动配置、外部 H5 访问留资、迪诺学堂教师端 App/小程序员工推广承接、CRM 线索回流和效果复盘。 | 必须校验活动发布状态、推广范围、员工角色、校区范围、归因参数、活码状态、表单防重和线索分配规则 |
| 节日主题海报/H5 | 业务处理 | 内置 24 节气、传统节日、招生季、公开课等主题海报和宣传 H5,并支持按场景检索复用。 | 必须联动状态、权限、消息、审批和指标 |
| 节日主题海报/H5 | 异常闭环 | 模板素材缺失处理 | 失败原因可见、可重试、可转人工、可追溯 |
| 页面模板沉淀 | 营销推广闭环操作 | 页面模板沉淀需同时覆盖 PC Web 活动配置、外部 H5 访问留资、迪诺学堂教师端 App/小程序员工推广承接、CRM 线索回流和效果复盘。 | 必须校验活动发布状态、推广范围、员工角色、校区范围、归因参数、活码状态、表单防重和线索分配规则 |
| 页面模板沉淀 | 业务处理 | 自建活动页面可转为模板,保留页面结构、素材、表单、埋点和适用范围。 | 必须联动状态、权限、消息、审批和指标 |
| 页面模板沉淀 | 异常闭环 | 转模板审核失败处理 | 失败原因可见、可重试、可转人工、可追溯 |
| 模板审核与版本管理 | 营销推广闭环操作 | 模板审核与版本管理需同时覆盖 PC Web 活动配置、外部 H5 访问留资、迪诺学堂教师端 App/小程序员工推广承接、CRM 线索回流和效果复盘。 | 必须校验活动发布状态、推广范围、员工角色、校区范围、归因参数、活码状态、表单防重和线索分配规则 |
| 模板审核与版本管理 | 业务处理 | 模板上架、下架、驳回、版本升级和版权信息均需审核留痕。 | 必须联动状态、权限、消息、审批和指标 |
| 模板审核与版本管理 | 异常闭环 | 版本发布失败处理 | 失败原因可见、可重试、可转人工、可追溯 |
| 活码短链域名 | 营销推广闭环操作 | 活码短链域名需同时覆盖 PC Web 活动配置、外部 H5 访问留资、迪诺学堂教师端 App/小程序员工推广承接、CRM 线索回流和效果复盘。 | 必须校验活动发布状态、推广范围、员工角色、校区范围、归因参数、活码状态、表单防重和线索分配规则 |
| 活码短链域名 | 业务处理 | 配置短链域名、品牌路径、活动路径、有效期、跳转目标和域名健康状态。 | 必须联动状态、权限、消息、审批和指标 |
| 活码短链域名 | 异常闭环 | 短链域名异常处理 | 失败原因可见、可重试、可转人工、可追溯 |
| 活码访问安全 | 营销推广闭环操作 | 活码访问安全需同时覆盖 PC Web 活动配置、外部 H5 访问留资、迪诺学堂教师端 App/小程序员工推广承接、CRM 线索回流和效果复盘。 | 必须校验活动发布状态、推广范围、员工角色、校区范围、归因参数、活码状态、表单防重和线索分配规则 |
| 活码访问安全 | 业务处理 | 支持活码停用、过期、无权限、目标下架失效页、防刷限频、IP 黑名单和兜底页。 | 必须联动状态、权限、消息、审批和指标 |
| 活码访问安全 | 异常闭环 | 访问防刷触发处理 | 失败原因可见、可重试、可转人工、可追溯 |
| 线索撞单处理 | 营销推广闭环操作 | 线索撞单处理需同时覆盖 PC Web 活动配置、外部 H5 访问留资、迪诺学堂教师端 App/小程序员工推广承接、CRM 线索回流和效果复盘。 | 必须校验活动发布状态、推广范围、员工角色、校区范围、归因参数、活码状态、表单防重和线索分配规则 |
| 线索撞单处理 | 业务处理 | 活动报名进入 CRM 前执行撞单检测,返回重复线索、归属候选、合并建议和处理入口。 | 必须联动状态、权限、消息、审批和指标 |
| 线索撞单处理 | 异常闭环 | 重复报名待确认处理 | 失败原因可见、可重试、可转人工、可追溯 |
功能到数据对象/接口/表映射
| 功能域 | 承接对象 | 核心表 | 代表接口 | 状态机/状态字段 | 研发落地校验 |
|---|---|---|---|---|---|
| 渠道台账 | MarketingChannel、MarketingCampaign、EmployeeCampaignStat | mkt_channel、mkt_campaign、mkt_employee_campaign_stat | 建议接口资源组 /api/v1/marketing/campaigns | channel_type、biz_status | 新增/编辑/删除/审批/导出/回调均需校验租户、校区、角色、数据范围、逻辑删除、幂等和审计 |
| 活动预算 | MarketingChannel、MarketingCampaign、EmployeeCampaignStat | mkt_channel、mkt_campaign、mkt_employee_campaign_stat | 建议接口资源组 /api/v1/marketing/campaigns | channel_type、biz_status | 新增/编辑/删除/审批/导出/回调均需校验租户、校区、角色、数据范围、逻辑删除、幂等和审计 |
| 落地页表单 | MarketingPageTemplate、CampaignLandingPage、LiveQrCode | mkt_page_template、mkt_landing_page、mkt_live_qr_code | 建议接口资源组 /api/v1/marketing/landing-pages | template_type、festival_type、review_status、publish_status、biz_type | 新增/编辑/删除/审批/导出/回调均需校验租户、校区、角色、数据范围、逻辑删除、幂等和审计 |
| 活码归因 | CampaignLandingPage、LiveQrCode、ScanRecord | mkt_landing_page、mkt_live_qr_code、mkt_scan_record | 建议接口资源组 /api/v1/live-qrcodes | publish_status、biz_type | 新增/编辑/删除/审批/导出/回调均需校验租户、校区、角色、数据范围、逻辑删除、幂等和审计 |
| 私域任务 | MarketingChannel、MarketingCampaign、MarketingPageTemplate、CampaignLandingPage | mkt_channel、mkt_campaign、mkt_page_template、mkt_landing_page | 接口资源组 /api/v1/mkt/features/05 | channel_type、biz_status、template_type、festival_type、review_status、publish_status | 新增/编辑/删除/审批/导出/回调均需校验租户、校区、角色、数据范围、逻辑删除、幂等和审计 |
| 转介绍奖励 | MarketingChannel、MarketingCampaign、MarketingPageTemplate、CampaignLandingPage | mkt_channel、mkt_campaign、mkt_page_template、mkt_landing_page | 接口资源组 /api/v1/mkt/features/06 | channel_type、biz_status、template_type、festival_type、review_status、publish_status | 新增/编辑/删除/审批/导出/回调均需校验租户、校区、角色、数据范围、逻辑删除、幂等和审计 |
| 招生公开课直播运营 | MarketingChannel、MarketingCampaign、MarketingPageTemplate、CampaignLandingPage | mkt_channel、mkt_campaign、mkt_page_template、mkt_landing_page | 接口资源组 /api/v1/mkt/features/07 | channel_type、biz_status、template_type、festival_type、review_status、publish_status | 新增/编辑/删除/审批/导出/回调均需校验租户、校区、角色、数据范围、逻辑删除、幂等和审计 |
| 活动模板库 | MarketingPageTemplate、CampaignLandingPage、LiveQrCode | mkt_page_template、mkt_landing_page、mkt_live_qr_code | 建议接口资源组 /api/v1/marketing/landing-pages | template_type、festival_type、review_status、publish_status、biz_type | 新增/编辑/删除/审批/导出/回调均需校验租户、校区、角色、数据范围、逻辑删除、幂等和审计 |
| 节日主题海报/H5 | MarketingPageTemplate、CampaignLandingPage、LiveQrCode | mkt_page_template、mkt_landing_page、mkt_live_qr_code | 建议接口资源组 /api/v1/marketing/landing-pages | template_type、festival_type、review_status、publish_status、biz_type | 新增/编辑/删除/审批/导出/回调均需校验租户、校区、角色、数据范围、逻辑删除、幂等和审计 |
| 页面模板沉淀 | MarketingPageTemplate、CampaignLandingPage、LiveQrCode | mkt_page_template、mkt_landing_page、mkt_live_qr_code | 建议接口资源组 /api/v1/marketing/landing-pages | template_type、festival_type、review_status、publish_status、biz_type | 新增/编辑/删除/审批/导出/回调均需校验租户、校区、角色、数据范围、逻辑删除、幂等和审计 |
| 模板审核与版本管理 | MarketingPageTemplate、CampaignLandingPage、LiveQrCode | mkt_page_template、mkt_landing_page、mkt_live_qr_code | 建议接口资源组 /api/v1/marketing/landing-pages | template_type、festival_type、review_status、publish_status、biz_type | 新增/编辑/删除/审批/导出/回调均需校验租户、校区、角色、数据范围、逻辑删除、幂等和审计 |
| 活码短链域名 | CampaignLandingPage、LiveQrCode、ScanRecord | mkt_landing_page、mkt_live_qr_code、mkt_scan_record | 建议接口资源组 /api/v1/live-qrcodes | publish_status、biz_type | 新增/编辑/删除/审批/导出/回调均需校验租户、校区、角色、数据范围、逻辑删除、幂等和审计 |
| 活码访问安全 | CampaignLandingPage、LiveQrCode、ScanRecord | mkt_landing_page、mkt_live_qr_code、mkt_scan_record | 建议接口资源组 /api/v1/live-qrcodes | publish_status、biz_type | 新增/编辑/删除/审批/导出/回调均需校验租户、校区、角色、数据范围、逻辑删除、幂等和审计 |
| 线索撞单处理 | CampaignFormSubmit | mkt_form_submit | GET /api/v1/crm/activity-leads | submit_status | 新增/编辑/删除/审批/导出/回调均需校验租户、校区、角色、数据范围、逻辑删除、幂等和审计 |
06 · 原子级功能需求
用于研发任务拆分和测试用例追踪
需求编号可直接进入项目管理工具。| 编号 | 需求描述 | 入口页面 | 关键动作 | 输入校验 | 输出结果 | 异常处理 | 验收标准 |
|---|---|---|---|---|---|---|---|
| FR-MKT-001 | 支持抖音、小红书、美团、公众号、地推、转介绍等渠道 | 渠道档案 | 创建渠道 | 校验租户、校区、角色、数据范围、状态前置、必填、唯一和敏感操作授权 | 生成业务记录、状态流转、消息通知、审计日志、指标快照和必要的第三方任务 | 重复报名 | 主流程、异常流、权限流、接口失败和数据一致性均可通过测试 |
| FR-MKT-002 | 活动可配置报名表单、名额、校区、优惠、到场签到和 CRM 分配规则 | 优惠试算器 | 优惠试算、冲突检测或分摊反算 | 校验租户、校区、角色、数据范围、状态前置、必填、唯一和敏感操作授权 | 生成业务记录、状态流转、消息通知、审计日志、指标快照和必要的第三方任务 | 优惠规则冲突、需审批或分摊失败 | 主流程、异常流、权限流、接口失败和数据一致性均可通过测试 |
| FR-MKT-003 | 创建活动页面时支持从模板库选择模板创建,模板库内置 24 节气、传统节日、招生季、公开课等节日海报和主题宣传 H5 | 公开课直播转化 | 观看评分、意向标签或顾问跟进 | 校验租户、校区、角色、数据范围、状态前置、必填、唯一和敏感操作授权 | 生成业务记录、状态流转、消息通知、审计日志、指标快照和必要的第三方任务 | 线索沉淀失败或跟进任务未分配 | 主流程、异常流、权限流、接口失败和数据一致性均可通过测试 |
| FR-MKT-004 | 模板支持海报模板、H5 模板、表单模板和组合活动模板,按节日、主题、年级、课程、校区、渠道和使用场景分类检索 | 优惠试算器 | 优惠试算、冲突检测或分摊反算 | 校验租户、校区、角色、数据范围、状态前置、必填、唯一和敏感操作授权 | 生成业务记录、状态流转、消息通知、审计日志、指标快照和必要的第三方任务 | 优惠规则冲突、需审批或分摊失败 | 主流程、异常流、权限流、接口失败和数据一致性均可通过测试 |
| FR-MKT-005 | 自建活动页面支持一键转为模板,保留页面组件、素材、表单字段、活码规则、适用范围和转化埋点 | 活动模板库 | 转为模板 | 校验租户、校区、角色、数据范围、状态前置、必填、唯一和敏感操作授权 | 生成业务记录、状态流转、消息通知、审计日志、指标快照和必要的第三方任务 | 页面发布失败 | 主流程、异常流、权限流、接口失败和数据一致性均可通过测试 |
| FR-MKT-006 | 模板支持预览、复制、二次编辑、上下架、版本管理、品牌合规审核和素材替换 | 落地页/H5 编辑器 | 生成活码 | 校验租户、校区、角色、数据范围、状态前置、必填、唯一和敏感操作授权 | 生成业务记录、状态流转、消息通知、审计日志、指标快照和必要的第三方任务 | 模板审核驳回 | 主流程、异常流、权限流、接口失败和数据一致性均可通过测试 |
| FR-MKT-007 | 二维码记录校区、活动、模板、顾问、地推人员和来源参数 | 自建页面转模板 | 配置推广范围 | 校验租户、校区、角色、数据范围、状态前置、必填、唯一和敏感操作授权 | 生成业务记录、状态流转、消息通知、审计日志、指标快照和必要的第三方任务 | 自建页面转模板冲突 | 主流程、异常流、权限流、接口失败和数据一致性均可通过测试 |
| FR-MKT-008 | 表单提交后自动进入 CRM 并按规则分配 | 模板审核与版本管理 | 员工生成专属码 | 校验租户、校区、角色、数据范围、状态前置、必填、唯一和敏感操作授权 | 生成业务记录、状态流转、消息通知、审计日志、指标快照和必要的第三方任务 | 短链域名失效 | 主流程、异常流、权限流、接口失败和数据一致性均可通过测试 |
| FR-MKT-009 | 统计线索、有效、邀约、到访、试听、成交、回款、模板使用率、模板转化率和 ROI | 试听反馈台 | 到访签到、教师反馈或转化跟进 | 校验租户、校区、角色、数据范围、状态前置、必填、唯一和敏感操作授权 | 生成业务记录、状态流转、消息通知、审计日志、指标快照和必要的第三方任务 | 试听未到访、反馈缺失或转化任务未分配 | 主流程、异常流、权限流、接口失败和数据一致性均可通过测试 |
| FR-MKT-010 | 活码需支持短链域名配置、停用/过期/无权限/目标下架失效页、防刷限频、IP 黑名单、异常渠道告警和跳转失败兜底页。 | 指标异常处理 | 异常订阅、责任人处理或口径审批 | 校验租户、校区、角色、数据范围、状态前置、必填、唯一和敏感操作授权 | 生成业务记录、状态流转、消息通知、审计日志、指标快照和必要的第三方任务 | 指标延迟、责任人缺失或口径版本不一致 | 主流程、异常流、权限流、接口失败和数据一致性均可通过测试 |
| FR-MKT-011 | 多渠道同时报名需识别撞单,形成线索归属争议、合并建议和渠道归因留痕。 | 员工推广资产管理 | 查看 ROI | 校验租户、校区、角色、数据范围、状态前置、必填、唯一和敏感操作授权 | 生成业务记录、状态流转、消息通知、审计日志、指标快照和必要的第三方任务 | 重复报名 | 主流程、异常流、权限流、接口失败和数据一致性均可通过测试 |
07 · 关联闭环补充需求
营销拓客中心在跨模块闭环中的责任边界
本章节承接最终闭环核对清单,明确本模块需要补齐的页面、接口对象、异常兜底和验收口径。| 闭环项 | 本模块责任 | 关键场景 | 页面/功能补充 | 关联对象/接口 | 验收口径 |
|---|---|---|---|---|---|
| 活码短链 | 负责营销活动页、节日模板、宣传 H5 的活码创建、短链生成和转化跟踪 | 活动目标页面变化、二维码持续复用、渠道归因和失效页兜底 | 活码管理、短链管理、扫码明细、目标版本、失效页配置 | LiveQrCode/ScanRecord、MarketingPageTemplate/CampaignLandingPage、/api/v1/live-qrcodes | 扫码记录必须带渠道、活动、短链、版本和落地页目标 |
| 员工推广承接 | 负责把 PC Web 已发布活动同步到迪诺学堂教师端 App/小程序,并为员工生成专属链接、二维码和海报 | 市场人员、销售人员、课程顾问、班主任需要在移动端领取活动并转发推广 | 员工端营销推广工作台、可推广活动、我的二维码、我的海报、分享记录、推广战报 | EmployeePromotionAsset、EmployeeShareRecord、EmployeeCampaignStat、/api/v1/marketing/employee-promotion-assets | 每个员工推广链接都必须携带活动、页面、校区、渠道、员工和分享场景参数,访问、留资、线索和成交可回溯到员工 |
| 线索撞单 | 活动报名、表单导入、扫码留资进入 CRM 前执行重复检测 | 同一手机号、学员姓名或活动渠道重复提交 | 报名表单、线索导入结果、重复提示、转 CRM 确认弹窗 | Lead、/api/v1/marketing/leads/import、/api/v1/crm/leads | 重复线索标记、合并建议和归属候选必须返回给顾问或运营 |
08 · 页面与原型设计说明
页面清单、布局要求、按钮字段和状态
原型图设计需要覆盖列表、详情、表单、弹窗、空状态、异常状态和权限状态。| 终端 | 页面 | 用户 | 页面目标 | 布局结构 | 关键按钮 | 关键字段 | 异常状态 | 原型备注 |
|---|---|---|---|---|---|---|---|---|
| PC Web | 渠道档案 | 市场运营 | 维护渠道、预算、归因参数、负责人 | 营销页按模板选择、页面编辑、表单配置、活码发布和转化看板分步呈现,H5 端突出报名和分享。 | 选择模板、编辑页面、配置表单、生成活码、发布活动、转为模板、审核模板、查看转化 | 活动名称、模板分类、节日主题、表单字段、渠道参数、活码目标、短链域名、ROI、渠道来源、模板类型 | 模板不可用、素材缺失、短链异常、表单提交失败、重复报名、活码失效 | 需覆盖模板库、24 节气/传统节日海报 H5、自建转模板、活码动态目标、失效页和线索撞单。 建议 Figma Frame:MKT-渠道档案;需补齐正常、空态、加载、无权限、处理中、成功和失败状态。 |
| PC Web | 营销活动 | 市场运营 | 创建活动、配置表单、生成活码、统计 ROI | 营销页按模板选择、页面编辑、表单配置、活码发布和转化看板分步呈现,H5 端突出报名和分享。 | 选择模板、编辑页面、配置表单、生成活码、发布活动、转为模板、审核模板、查看转化 | 活动名称、模板分类、节日主题、表单字段、渠道参数、活码目标、短链域名、ROI、渠道来源、模板类型 | 模板不可用、素材缺失、短链异常、表单提交失败、重复报名、活码失效 | 需覆盖模板库、24 节气/传统节日海报 H5、自建转模板、活码动态目标、失效页和线索撞单。 建议 Figma Frame:MKT-营销活动;需补齐正常、空态、加载、无权限、处理中、成功和失败状态。 |
| H5/小程序 | 活动报名落地页 | 家长/潜客 | 提交报名、选择校区、预约体验、授权联系 | 营销页按模板选择、页面编辑、表单配置、活码发布和转化看板分步呈现,H5 端突出报名和分享。 | 选择模板、编辑页面、配置表单、生成活码、发布活动、转为模板、审核模板、查看转化 | 活动名称、模板分类、节日主题、表单字段、渠道参数、活码目标、短链域名、ROI、渠道来源、模板类型 | 模板不可用、素材缺失、短链异常、表单提交失败、重复报名、活码失效 | 需覆盖模板库、24 节气/传统节日海报 H5、自建转模板、活码动态目标、失效页和线索撞单。 建议 Figma Frame:MKT-活动报名落地页;需补齐正常、空态、加载、无权限、处理中、成功和失败状态。 |
| PC Web/H5 | 公开课直播转化看板 | 市场/课程顾问 | 按渠道、活码、直播观看和互动行为形成线索质量与转化分析 | 营销页按模板选择、页面编辑、表单配置、活码发布和转化看板分步呈现,H5 端突出报名和分享。 | 选择模板、编辑页面、配置表单、生成活码、发布活动、转为模板、审核模板、查看转化 | 活动名称、模板分类、节日主题、表单字段、渠道参数、活码目标、短链域名、ROI、渠道来源、模板类型 | 模板不可用、素材缺失、短链异常、表单提交失败、重复报名、活码失效 | 需覆盖模板库、24 节气/传统节日海报 H5、自建转模板、活码动态目标、失效页和线索撞单。 建议 Figma Frame:MKT-公开课直播转化看板;需补齐正常、空态、加载、无权限、处理中、成功和失败状态。 |
| PC Web | 活动模板库 | 总部市场/区域市场/校区运营 | 按 24 节气、传统节日、招生季、公开课等分类选择节日海报和主题宣传 H5 模板 | 营销页按模板选择、页面编辑、表单配置、活码发布和转化看板分步呈现,H5 端突出报名和分享。 | 选择模板、编辑页面、配置表单、生成活码、发布活动、转为模板、审核模板、查看转化 | 活动名称、模板分类、节日主题、表单字段、渠道参数、活码目标、短链域名、ROI、渠道来源、模板类型 | 模板不可用、素材缺失、短链异常、表单提交失败、重复报名、活码失效 | 需覆盖模板库、24 节气/传统节日海报 H5、自建转模板、活码动态目标、失效页和线索撞单。 建议 Figma Frame:MKT-活动模板库;需补齐正常、空态、加载、无权限、处理中、成功和失败状态。 |
| PC Web | 落地页/H5 编辑器 | 市场运营/课程顾问 | 从模板创建活动页面,支持组件编辑、表单配置、素材替换、链接发布和活码生成 | 营销页按模板选择、页面编辑、表单配置、活码发布和转化看板分步呈现,H5 端突出报名和分享。 | 选择模板、编辑页面、配置表单、生成活码、发布活动、转为模板、审核模板、查看转化 | 活动名称、模板分类、节日主题、表单字段、渠道参数、活码目标、短链域名、ROI、渠道来源、模板类型 | 模板不可用、素材缺失、短链异常、表单提交失败、重复报名、活码失效 | 需覆盖模板库、24 节气/传统节日海报 H5、自建转模板、活码动态目标、失效页和线索撞单。 建议 Figma Frame:MKT-落地页_h5_编辑器;需补齐正常、空态、加载、无权限、处理中、成功和失败状态。 |
| PC Web | 自建页面转模板 | 市场运营/总部市场 | 将已发布或草稿活动页面沉淀为模板,保留组件、表单、活码规则、素材和埋点 | 营销页按模板选择、页面编辑、表单配置、活码发布和转化看板分步呈现,H5 端突出报名和分享。 | 选择模板、编辑页面、配置表单、生成活码、发布活动、转为模板、审核模板、查看转化 | 活动名称、模板分类、节日主题、表单字段、渠道参数、活码目标、短链域名、ROI、渠道来源、模板类型 | 模板不可用、素材缺失、短链异常、表单提交失败、重复报名、活码失效 | 需覆盖模板库、24 节气/传统节日海报 H5、自建转模板、活码动态目标、失效页和线索撞单。 建议 Figma Frame:MKT-自建页面转模板;需补齐正常、空态、加载、无权限、处理中、成功和失败状态。 |
| PC Web | 模板审核与版本管理 | 总部市场/品牌审核 | 审核自建模板,上下架模板,管理版本、适用范围、品牌合规和使用统计 | 营销页按模板选择、页面编辑、表单配置、活码发布和转化看板分步呈现,H5 端突出报名和分享。 | 选择模板、编辑页面、配置表单、生成活码、发布活动、转为模板、审核模板、查看转化 | 活动名称、模板分类、节日主题、表单字段、渠道参数、活码目标、短链域名、ROI、渠道来源、模板类型 | 模板不可用、素材缺失、短链异常、表单提交失败、重复报名、活码失效 | 需覆盖模板库、24 节气/传统节日海报 H5、自建转模板、活码动态目标、失效页和线索撞单。 建议 Figma Frame:MKT-模板审核与版本管理;需补齐正常、空态、加载、无权限、处理中、成功和失败状态。 |
| PC Web | 活码短链与安全策略 | 市场运营/技术运营 | 维护短链域名、失效页、防刷限频、黑名单和异常渠道告警 | 营销页按模板选择、页面编辑、表单配置、活码发布和转化看板分步呈现,H5 端突出报名和分享。 | 选择模板、编辑页面、配置表单、生成活码、发布活动、转为模板、审核模板、查看转化 | 活动名称、模板分类、节日主题、表单字段、渠道参数、活码目标、短链域名、ROI、渠道来源、模板类型 | 模板不可用、素材缺失、短链异常、表单提交失败、重复报名、活码失效 | 需覆盖模板库、24 节气/传统节日海报 H5、自建转模板、活码动态目标、失效页和线索撞单。 建议 Figma Frame:MKT-活码短链与安全策略;需补齐正常、空态、加载、无权限、处理中、成功和失败状态。 |
| PC Web | 活动投放范围配置 | 总部市场/区域市场/校区运营 | 配置活动适用校区、可推广角色、可见员工范围、线索归属规则和有效期 | CRM 页采用左侧线索列表、右侧客户详情和底部跟进时间轴,试听页增加到访、反馈和转化任务区。 | 录入线索、查重合并、分配顾问、记录跟进、预约试听、填写反馈、发起仲裁 | 线索编号、家长手机号、学员姓名、来源渠道、保护期、归属顾问、试听课次、转化任务、活动名称、渠道来源 | 重复客户、保护期冲突、超时未跟进、试听未到访、教师反馈缺失、归属争议超时 | 需覆盖撞单提示、客户合并、归属仲裁、误合并恢复、试听未到访唤醒和二次转化。 建议 Figma Frame:MKT-活动投放范围配置;需补齐正常、空态、加载、无权限、处理中、成功和失败状态。 |
| PC Web | 员工推广资产管理 | 总部市场/区域市场/校区运营 | 查看员工专属链接、二维码、海报、启停状态、失效原因和归因参数 | 资产库存页采用左侧分类树、顶部仓库/校区筛选、中部台账表格,详情抽屉展示流水、成本、责任人和审计。 | 新增 SKU、采购申请、验收入库、领用出库、调拨、盘点、报损报废、维修派工 | 物料编码、分类、仓库/校区、库存数量、批次成本、供应商、责任人、盘点差异、活动名称、渠道来源 | 库存不足、编码重复、入库差异、责任人缺失、维修超期、成本调整失败 | 需覆盖图书仅进销存、固定资产责任人变更、维修工单、礼品库存、成本策略和财务凭证联动。 建议 Figma Frame:MKT-员工推广资产管理;需补齐正常、空态、加载、无权限、处理中、成功和失败状态。 |
| 迪诺学堂教师端 App/小程序 | 员工端营销推广工作台 | 课程顾问/销售人员/市场人员/班主任 | 查看可推广活动、活动说明、有效期、推广任务、线索回流和个人战报 | CRM 页采用左侧线索列表、右侧客户详情和底部跟进时间轴,试听页增加到访、反馈和转化任务区。 | 录入线索、查重合并、分配顾问、记录跟进、预约试听、填写反馈、发起仲裁 | 线索编号、家长手机号、学员姓名、来源渠道、保护期、归属顾问、试听课次、转化任务、活动名称、渠道来源 | 重复客户、保护期冲突、超时未跟进、试听未到访、教师反馈缺失、归属争议超时 | 需覆盖撞单提示、客户合并、归属仲裁、误合并恢复、试听未到访唤醒和二次转化。 建议 Figma Frame:MKT-员工端营销推广工作台;需补齐正常、空态、加载、无权限、处理中、成功和失败状态。 |
| 迪诺学堂教师端 App/小程序 | 我的专属二维码 | 课程顾问/销售人员/市场人员/班主任 | 生成并展示本人专属短链、二维码、活码目标、归因参数和失效提示 | 营销页按模板选择、页面编辑、表单配置、活码发布和转化看板分步呈现,H5 端突出报名和分享。 | 选择模板、编辑页面、配置表单、生成活码、发布活动、转为模板、审核模板、查看转化 | 活动名称、模板分类、节日主题、表单字段、渠道参数、活码目标、短链域名、ROI、渠道来源、模板类型 | 模板不可用、素材缺失、短链异常、表单提交失败、重复报名、活码失效 | 需覆盖模板库、24 节气/传统节日海报 H5、自建转模板、活码动态目标、失效页和线索撞单。 建议 Figma Frame:MKT-我的专属二维码;需补齐正常、空态、加载、无权限、处理中、成功和失败状态。 |
| 迪诺学堂教师端 App/小程序 | 我的分享海报 | 课程顾问/销售人员/市场人员/班主任 | 选择海报模板生成带本人二维码的活动海报,支持保存、分享、重新生成和过期提示 | 营销页按模板选择、页面编辑、表单配置、活码发布和转化看板分步呈现,H5 端突出报名和分享。 | 选择模板、编辑页面、配置表单、生成活码、发布活动、转为模板、审核模板、查看转化 | 活动名称、模板分类、节日主题、表单字段、渠道参数、活码目标、短链域名、ROI、渠道来源、模板类型 | 模板不可用、素材缺失、短链异常、表单提交失败、重复报名、活码失效 | 需覆盖模板库、24 节气/传统节日海报 H5、自建转模板、活码动态目标、失效页和线索撞单。 建议 Figma Frame:MKT-我的分享海报;需补齐正常、空态、加载、无权限、处理中、成功和失败状态。 |
| 迪诺学堂教师端 App/小程序 | 活动线索回流 | 课程顾问/销售人员/市场人员/班主任 | 查看本人推广产生的报名、扫码、试听预约、公开课报名和待跟进线索 | CRM 页采用左侧线索列表、右侧客户详情和底部跟进时间轴,试听页增加到访、反馈和转化任务区。 | 录入线索、查重合并、分配顾问、记录跟进、预约试听、填写反馈、发起仲裁 | 线索编号、家长手机号、学员姓名、来源渠道、保护期、归属顾问、试听课次、转化任务、活动名称、渠道来源 | 重复客户、保护期冲突、超时未跟进、试听未到访、教师反馈缺失、归属争议超时 | 需覆盖撞单提示、客户合并、归属仲裁、误合并恢复、试听未到访唤醒和二次转化。 建议 Figma Frame:MKT-活动线索回流;需补齐正常、空态、加载、无权限、处理中、成功和失败状态。 |
| 迪诺学堂教师端 App/小程序 | 我的推广战报 | 课程顾问/销售人员/市场人员/班主任 | 查看访问量、扫码量、留资数、线索数、试听数、成交数、转化率和排名 | CRM 页采用左侧线索列表、右侧客户详情和底部跟进时间轴,试听页增加到访、反馈和转化任务区。 | 录入线索、查重合并、分配顾问、记录跟进、预约试听、填写反馈、发起仲裁 | 线索编号、家长手机号、学员姓名、来源渠道、保护期、归属顾问、试听课次、转化任务、活动名称、渠道来源 | 重复客户、保护期冲突、超时未跟进、试听未到访、教师反馈缺失、归属争议超时 | 需覆盖撞单提示、客户合并、归属仲裁、误合并恢复、试听未到访唤醒和二次转化。 建议 Figma Frame:MKT-我的推广战报;需补齐正常、空态、加载、无权限、处理中、成功和失败状态。 |
| PC Web | 落地页/H5 编辑器 | 总部市场/区域市场/校区运营 | 从模板创建活动页面,支持组件编辑、表单配置、素材替换、链接发布和活码生成 | 营销页按模板选择、页面编辑、表单配置、活码发布和转化看板分步呈现,H5 端突出报名和分享。 | 选择模板、编辑页面、配置表单、生成活码、发布活动、转为模板、审核模板、查看转化 | 活动名称、模板分类、节日主题、表单字段、渠道参数、活码目标、短链域名、ROI、渠道来源、模板类型 | 模板不可用、素材缺失、短链异常、表单提交失败、重复报名、活码失效 | 需覆盖模板库、24 节气/传统节日海报 H5、自建转模板、活码动态目标、失效页和线索撞单。 建议 Figma Frame:MKT-落地页_h5_编辑器;需补齐正常、空态、加载、无权限、处理中、成功和失败状态。 |
| PC Web | 员工推广资产管理 | 总部市场/区域市场/校区运营 | 查看每个员工的专属链接、二维码、海报、启停状态、失效原因和归因参数 | 资产库存页采用左侧分类树、顶部仓库/校区筛选、中部台账表格,详情抽屉展示流水、成本、责任人和审计。 | 新增 SKU、采购申请、验收入库、领用出库、调拨、盘点、报损报废、维修派工 | 物料编码、分类、仓库/校区、库存数量、批次成本、供应商、责任人、盘点差异、活动名称、渠道来源 | 库存不足、编码重复、入库差异、责任人缺失、维修超期、成本调整失败 | 需覆盖图书仅进销存、固定资产责任人变更、维修工单、礼品库存、成本策略和财务凭证联动。 建议 Figma Frame:MKT-员工推广资产管理;需补齐正常、空态、加载、无权限、处理中、成功和失败状态。 |
| 迪诺学堂教师端 App/小程序 | 可推广活动详情 | 课程顾问/销售人员/市场人员/班主任 | 查看活动 H5 预览、适用校区、推广话术、优惠政策、报名表单和线索归属说明 | 合同页采用左侧学员与课程信息,中部报价/协议/退款主流程,右侧展示优惠分摊、审批流、签署和监管回执。 | 优惠试算、生成报价、发起审批、生成合同、发起签署、收款、监管备案、作废重签 | 学员、课程组合、原合同、优惠规则、应收/应退、补差退差、签署状态、监管状态、活动名称、渠道来源 | 优惠冲突、班级容量不足、补差未支付、签署失败、监管备案失败、权益重算失败 | 需覆盖多科联报、组合缴费、优惠互斥、补充协议、转班转课权益测算、退款冲销和监管回执。 建议 Figma Frame:MKT-可推广活动详情;需补齐正常、空态、加载、无权限、处理中、成功和失败状态。 |
| 外部招生 H5 | 员工专属活动页 | 外部家长/学员 | 通过员工专属链接访问活动页,提交后保留员工、校区、渠道和活动归因 | 营销页按模板选择、页面编辑、表单配置、活码发布和转化看板分步呈现,H5 端突出报名和分享。 | 选择模板、编辑页面、配置表单、生成活码、发布活动、转为模板、审核模板、查看转化 | 活动名称、模板分类、节日主题、表单字段、渠道参数、活码目标、短链域名、ROI、渠道来源、模板类型 | 模板不可用、素材缺失、短链异常、表单提交失败、重复报名、活码失效 | 需覆盖模板库、24 节气/传统节日海报 H5、自建转模板、活码动态目标、失效页和线索撞单。 建议 Figma Frame:MKT-员工专属活动页;需补齐正常、空态、加载、无权限、处理中、成功和失败状态。 |
| 外部招生 H5 | 推广链接失效页 | 外部家长/学员 | 活动停用、二维码过期、目标下架或风控拦截时展示原因和可用替代入口 | 家长端使用移动端卡片流和底部主按钮,重要操作采用二次确认弹窗并展示处理进度。 | 绑定学员、查看课表、提交请假、确认补课、改期取消、缴费、签署合同、提交工单 | 绑定学员、课程、合同、应缴金额、请假课次、补课候选、服务工单、服务消息、活动名称、渠道来源 | 绑定关系异常、补课候选过期、支付失败、合同签署失败、工单已关闭、消息发送失败 | 需覆盖微信小程序/H5 状态、合同缴费、补课候选确认、服务通知、工单进度和异常联系入口。 建议 Figma Frame:MKT-推广链接失效页;需补齐正常、空态、加载、无权限、处理中、成功和失败状态。 |
| PC Web/外部招生 H5/迪诺学堂教师端 App/小程序 | 模板库 | 总部市场/区域市场/校区运营/课程顾问/销售人员/市场人员/班主任/外部访客 | 围绕营销闭环完善模板库的入口、字段、状态、异常提示、处理进度和验收反馈 | 营销页按模板选择、页面编辑、表单配置、活码发布和转化看板分步呈现,H5 端突出报名和分享。 | 选择模板、编辑页面、配置表单、生成活码、发布活动、转为模板、审核模板、查看转化 | 活动名称、模板分类、节日主题、表单字段、渠道参数、活码目标、短链域名、ROI、渠道来源、模板类型 | 模板不可用、素材缺失、短链异常、表单提交失败、重复报名、活码失效 | 需覆盖模板库、24 节气/传统节日海报 H5、自建转模板、活码动态目标、失效页和线索撞单。 建议 Figma Frame:MKT-模板库;需补齐正常、空态、加载、无权限、处理中、成功和失败状态。 |
| PC Web/外部招生 H5/迪诺学堂教师端 App/小程序 | 活动编辑器 | 总部市场/区域市场/校区运营/课程顾问/销售人员/市场人员/班主任/外部访客 | 围绕营销闭环完善活动编辑器的入口、字段、状态、异常提示、处理进度和验收反馈 | 移动端采用顶部标题/状态区、内容卡片流和底部主按钮;平板端需要分栏布局和横屏适配。 | 查看、提交、保存、取消、确认、联系客服、创建渠道、选择模板 | 活动名称、渠道来源、模板类型、落地页链接、活码编号、推广范围、员工专属二维码、员工专属海报、预算金额、负责人 | 网络异常、权限不足、提交失败、状态已变化 | 需分别标注小程序、App、H5、平板和桌面壳的适配差异。 建议 Figma Frame:MKT-活动编辑器;需补齐正常、空态、加载、无权限、处理中、成功和失败状态。 |
| PC Web/外部招生 H5/迪诺学堂教师端 App/小程序 | 活码配置 | 总部市场/区域市场/校区运营/课程顾问/销售人员/市场人员/班主任/外部访客 | 围绕营销闭环完善活码配置的入口、字段、状态、异常提示、处理进度和验收反馈 | 营销页按模板选择、页面编辑、表单配置、活码发布和转化看板分步呈现,H5 端突出报名和分享。 | 选择模板、编辑页面、配置表单、生成活码、发布活动、转为模板、审核模板、查看转化 | 活动名称、模板分类、节日主题、表单字段、渠道参数、活码目标、短链域名、ROI、渠道来源、模板类型 | 模板不可用、素材缺失、短链异常、表单提交失败、重复报名、活码失效 | 需覆盖模板库、24 节气/传统节日海报 H5、自建转模板、活码动态目标、失效页和线索撞单。 建议 Figma Frame:MKT-活码配置;需补齐正常、空态、加载、无权限、处理中、成功和失败状态。 |
| PC Web/外部招生 H5/迪诺学堂教师端 App/小程序 | 线索表单 | 总部市场/区域市场/校区运营/课程顾问/销售人员/市场人员/班主任/外部访客 | 围绕营销闭环完善线索表单的入口、字段、状态、异常提示、处理进度和验收反馈 | CRM 页采用左侧线索列表、右侧客户详情和底部跟进时间轴,试听页增加到访、反馈和转化任务区。 | 录入线索、查重合并、分配顾问、记录跟进、预约试听、填写反馈、发起仲裁 | 线索编号、家长手机号、学员姓名、来源渠道、保护期、归属顾问、试听课次、转化任务、活动名称、渠道来源 | 重复客户、保护期冲突、超时未跟进、试听未到访、教师反馈缺失、归属争议超时 | 需覆盖撞单提示、客户合并、归属仲裁、误合并恢复、试听未到访唤醒和二次转化。 建议 Figma Frame:MKT-线索表单;需补齐正常、空态、加载、无权限、处理中、成功和失败状态。 |
| PC Web/外部招生 H5/迪诺学堂教师端 App/小程序 | CRM 跟进 | 总部市场/区域市场/校区运营/课程顾问/销售人员/市场人员/班主任/外部访客 | 围绕营销闭环完善CRM 跟进的入口、字段、状态、异常提示、处理进度和验收反馈 | 移动端采用顶部标题/状态区、内容卡片流和底部主按钮;平板端需要分栏布局和横屏适配。 | 查看、提交、保存、取消、确认、联系客服、创建渠道、选择模板 | 活动名称、渠道来源、模板类型、落地页链接、活码编号、推广范围、员工专属二维码、员工专属海报、预算金额、负责人 | 网络异常、权限不足、提交失败、状态已变化 | 需分别标注小程序、App、H5、平板和桌面壳的适配差异。 建议 Figma Frame:MKT-crm_跟进;需补齐正常、空态、加载、无权限、处理中、成功和失败状态。 |
| PC Web/外部招生 H5/迪诺学堂教师端 App/小程序 | 可推广活动 | 总部市场/区域市场/校区运营/课程顾问/销售人员/市场人员/班主任/外部访客 | 围绕员工端联动完善可推广活动的入口、字段、状态、异常提示、处理进度和验收反馈 | 移动端采用顶部标题/状态区、内容卡片流和底部主按钮;平板端需要分栏布局和横屏适配。 | 查看、提交、保存、取消、确认、联系客服、创建渠道、选择模板 | 活动名称、渠道来源、模板类型、落地页链接、活码编号、推广范围、员工专属二维码、员工专属海报、预算金额、负责人 | 网络异常、权限不足、提交失败、状态已变化 | 需分别标注小程序、App、H5、平板和桌面壳的适配差异。 建议 Figma Frame:MKT-可推广活动;需补齐正常、空态、加载、无权限、处理中、成功和失败状态。 |
| PC Web/外部招生 H5/迪诺学堂教师端 App/小程序 | 我的二维码 | 总部市场/区域市场/校区运营/课程顾问/销售人员/市场人员/班主任/外部访客 | 围绕员工端联动完善我的二维码的入口、字段、状态、异常提示、处理进度和验收反馈 | 移动端采用顶部标题/状态区、内容卡片流和底部主按钮;平板端需要分栏布局和横屏适配。 | 查看、提交、保存、取消、确认、联系客服、创建渠道、选择模板 | 活动名称、渠道来源、模板类型、落地页链接、活码编号、推广范围、员工专属二维码、员工专属海报、预算金额、负责人 | 网络异常、权限不足、提交失败、状态已变化 | 需分别标注小程序、App、H5、平板和桌面壳的适配差异。 建议 Figma Frame:MKT-我的二维码;需补齐正常、空态、加载、无权限、处理中、成功和失败状态。 |
| PC Web/外部招生 H5/迪诺学堂教师端 App/小程序 | 我的海报 | 总部市场/区域市场/校区运营/课程顾问/销售人员/市场人员/班主任/外部访客 | 围绕员工端联动完善我的海报的入口、字段、状态、异常提示、处理进度和验收反馈 | 移动端采用顶部标题/状态区、内容卡片流和底部主按钮;平板端需要分栏布局和横屏适配。 | 查看、提交、保存、取消、确认、联系客服、创建渠道、选择模板 | 活动名称、渠道来源、模板类型、落地页链接、活码编号、推广范围、员工专属二维码、员工专属海报、预算金额、负责人 | 网络异常、权限不足、提交失败、状态已变化 | 需分别标注小程序、App、H5、平板和桌面壳的适配差异。 建议 Figma Frame:MKT-我的海报;需补齐正常、空态、加载、无权限、处理中、成功和失败状态。 |
| PC Web/外部招生 H5/迪诺学堂教师端 App/小程序 | 分享记录 | 总部市场/区域市场/校区运营/课程顾问/销售人员/市场人员/班主任/外部访客 | 围绕员工端联动完善分享记录的入口、字段、状态、异常提示、处理进度和验收反馈 | 移动端采用顶部标题/状态区、内容卡片流和底部主按钮;平板端需要分栏布局和横屏适配。 | 查看、提交、保存、取消、确认、联系客服、创建渠道、选择模板 | 活动名称、渠道来源、模板类型、落地页链接、活码编号、推广范围、员工专属二维码、员工专属海报、预算金额、负责人 | 网络异常、权限不足、提交失败、状态已变化 | 需分别标注小程序、App、H5、平板和桌面壳的适配差异。 建议 Figma Frame:MKT-分享记录;需补齐正常、空态、加载、无权限、处理中、成功和失败状态。 |
| PC Web/外部招生 H5/迪诺学堂教师端 App/小程序 | 推广战报 | 总部市场/区域市场/校区运营/课程顾问/销售人员/市场人员/班主任/外部访客 | 围绕员工端联动完善推广战报的入口、字段、状态、异常提示、处理进度和验收反馈 | 移动端采用顶部标题/状态区、内容卡片流和底部主按钮;平板端需要分栏布局和横屏适配。 | 查看、提交、保存、取消、确认、联系客服、创建渠道、选择模板 | 活动名称、渠道来源、模板类型、落地页链接、活码编号、推广范围、员工专属二维码、员工专属海报、预算金额、负责人 | 网络异常、权限不足、提交失败、状态已变化 | 需分别标注小程序、App、H5、平板和桌面壳的适配差异。 建议 Figma Frame:MKT-推广战报;需补齐正常、空态、加载、无权限、处理中、成功和失败状态。 |
| PC Web/外部招生 H5/迪诺学堂教师端 App/小程序 | 模板详情 | 总部市场/区域市场/校区运营/课程顾问/销售人员/市场人员/班主任/外部访客 | 围绕模板治理完善模板详情的入口、字段、状态、异常提示、处理进度和验收反馈 | 营销页按模板选择、页面编辑、表单配置、活码发布和转化看板分步呈现,H5 端突出报名和分享。 | 选择模板、编辑页面、配置表单、生成活码、发布活动、转为模板、审核模板、查看转化 | 活动名称、模板分类、节日主题、表单字段、渠道参数、活码目标、短链域名、ROI、渠道来源、模板类型 | 模板不可用、素材缺失、短链异常、表单提交失败、重复报名、活码失效 | 需覆盖模板库、24 节气/传统节日海报 H5、自建转模板、活码动态目标、失效页和线索撞单。 建议 Figma Frame:MKT-模板详情;需补齐正常、空态、加载、无权限、处理中、成功和失败状态。 |
| PC Web/外部招生 H5/迪诺学堂教师端 App/小程序 | 转模板弹窗 | 总部市场/区域市场/校区运营/课程顾问/销售人员/市场人员/班主任/外部访客 | 围绕模板治理完善转模板弹窗的入口、字段、状态、异常提示、处理进度和验收反馈 | 营销页按模板选择、页面编辑、表单配置、活码发布和转化看板分步呈现,H5 端突出报名和分享。 | 选择模板、编辑页面、配置表单、生成活码、发布活动、转为模板、审核模板、查看转化 | 活动名称、模板分类、节日主题、表单字段、渠道参数、活码目标、短链域名、ROI、渠道来源、模板类型 | 模板不可用、素材缺失、短链异常、表单提交失败、重复报名、活码失效 | 需覆盖模板库、24 节气/传统节日海报 H5、自建转模板、活码动态目标、失效页和线索撞单。 建议 Figma Frame:MKT-转模板弹窗;需补齐正常、空态、加载、无权限、处理中、成功和失败状态。 |
09 · 页面到接口的前后端闭环矩阵
把原型页面、后端接口、数据对象、状态和消息审批绑定到一起
设计原型时,每个关键页面必须能解释前端展示什么、后端提交什么、状态怎么变、异常怎么处理。| 原型页面 | 关键接口 | 关联对象 | 状态流 | 审批/权限触发 | 消息/待办触达 | 原型验收要求 |
|---|---|---|---|---|---|---|
| 渠道档案 | POST /api/v1/marketing/employee-share-records | MarketingChannel | 待提交 -> 提交中 -> 提交成功 -> 疑似重复 -> 风控拦截 -> 生成线索失败 -> 已进入 CRM | 活动发布审批:活动 H5、表单、优惠、投放范围或可推广员工范围配置完成后发布 | 处理完成、失败和异常转人工均需触发站内通知或待办 | 原型需展示入口、主按钮、禁用原因、提交中、成功、失败、无权限、空状态和异常转人工入口 |
| 营销活动 | POST /api/v1/marketing/employee-share-records | MarketingCampaign | 待提交 -> 提交中 -> 提交成功 -> 疑似重复 -> 风控拦截 -> 生成线索失败 -> 已进入 CRM | 活动发布审批:活动 H5、表单、优惠、投放范围或可推广员工范围配置完成后发布 | 处理完成、失败和异常转人工均需触发站内通知或待办 | 原型需展示入口、主按钮、禁用原因、提交中、成功、失败、无权限、空状态和异常转人工入口 |
| 活动报名落地页 | POST /api/v1/marketing/employee-share-records | MarketingPageTemplate | 待提交 -> 提交中 -> 提交成功 -> 疑似重复 -> 风控拦截 -> 生成线索失败 -> 已进入 CRM | 活动发布审批:活动 H5、表单、优惠、投放范围或可推广员工范围配置完成后发布 | 处理完成、失败和异常转人工均需触发站内通知或待办 | 原型需展示入口、主按钮、禁用原因、提交中、成功、失败、无权限、空状态和异常转人工入口 |
| 公开课直播转化看板 | POST /api/v1/marketing/employee-share-records | CampaignLandingPage | 待提交 -> 提交中 -> 提交成功 -> 疑似重复 -> 风控拦截 -> 生成线索失败 -> 已进入 CRM | 活动发布审批:活动 H5、表单、优惠、投放范围或可推广员工范围配置完成后发布 | 处理完成、失败和异常转人工均需触发站内通知或待办 | 原型需展示入口、主按钮、禁用原因、提交中、成功、失败、无权限、空状态和异常转人工入口 |
| 活动模板库 | POST /api/v1/marketing/employee-share-records | LiveQrCode | 待提交 -> 提交中 -> 提交成功 -> 疑似重复 -> 风控拦截 -> 生成线索失败 -> 已进入 CRM | 活动发布审批:活动 H5、表单、优惠、投放范围或可推广员工范围配置完成后发布 | 处理完成、失败和异常转人工均需触发站内通知或待办 | 原型需展示入口、主按钮、禁用原因、提交中、成功、失败、无权限、空状态和异常转人工入口 |
| 落地页/H5 编辑器 | POST /api/v1/marketing/employee-share-records | ScanRecord | 待提交 -> 提交中 -> 提交成功 -> 疑似重复 -> 风控拦截 -> 生成线索失败 -> 已进入 CRM | 活动发布审批:活动 H5、表单、优惠、投放范围或可推广员工范围配置完成后发布 | 处理完成、失败和异常转人工均需触发站内通知或待办 | 原型需展示入口、主按钮、禁用原因、提交中、成功、失败、无权限、空状态和异常转人工入口 |
| 自建页面转模板 | POST /api/v1/marketing/employee-share-records | CampaignFormSubmit | 待提交 -> 提交中 -> 提交成功 -> 疑似重复 -> 风控拦截 -> 生成线索失败 -> 已进入 CRM | 活动发布审批:活动 H5、表单、优惠、投放范围或可推广员工范围配置完成后发布 | 处理完成、失败和异常转人工均需触发站内通知或待办 | 原型需展示入口、主按钮、禁用原因、提交中、成功、失败、无权限、空状态和异常转人工入口 |
| 模板审核与版本管理 | POST /api/v1/marketing/employee-share-records | EmployeePromotionAsset | 待提交 -> 提交中 -> 提交成功 -> 疑似重复 -> 风控拦截 -> 生成线索失败 -> 已进入 CRM | 活动发布审批:活动 H5、表单、优惠、投放范围或可推广员工范围配置完成后发布 | 处理完成、失败和异常转人工均需触发站内通知或待办 | 原型需展示入口、主按钮、禁用原因、提交中、成功、失败、无权限、空状态和异常转人工入口 |
| 活码短链与安全策略 | POST /api/v1/marketing/employee-share-records | EmployeeShareRecord | 待提交 -> 提交中 -> 提交成功 -> 疑似重复 -> 风控拦截 -> 生成线索失败 -> 已进入 CRM | 活动发布审批:活动 H5、表单、优惠、投放范围或可推广员工范围配置完成后发布 | 处理完成、失败和异常转人工均需触发站内通知或待办 | 原型需展示入口、主按钮、禁用原因、提交中、成功、失败、无权限、空状态和异常转人工入口 |
| 活动投放范围配置 | POST /api/v1/marketing/employee-share-records | EmployeeCampaignStat | 待提交 -> 提交中 -> 提交成功 -> 疑似重复 -> 风控拦截 -> 生成线索失败 -> 已进入 CRM | 活动发布审批:活动 H5、表单、优惠、投放范围或可推广员工范围配置完成后发布 | 处理完成、失败和异常转人工均需触发站内通知或待办 | 原型需展示入口、主按钮、禁用原因、提交中、成功、失败、无权限、空状态和异常转人工入口 |
| 员工推广资产管理 | POST /api/v1/marketing/employee-share-records | MarketingChannel | 待生成 -> 已生成 -> 分享中 -> 已停用 -> 已失效 -> 生成失败 | 活动发布审批:活动 H5、表单、优惠、投放范围或可推广员工范围配置完成后发布 | 处理完成、失败和异常转人工均需触发站内通知或待办 | 原型需展示入口、主按钮、禁用原因、提交中、成功、失败、无权限、空状态和异常转人工入口 |
| 员工端营销推广工作台 | POST /api/v1/marketing/employee-share-records | MarketingCampaign | 待提交 -> 提交中 -> 提交成功 -> 疑似重复 -> 风控拦截 -> 生成线索失败 -> 已进入 CRM | 活动发布审批:活动 H5、表单、优惠、投放范围或可推广员工范围配置完成后发布 | 处理完成、失败和异常转人工均需触发站内通知或待办 | 原型需展示入口、主按钮、禁用原因、提交中、成功、失败、无权限、空状态和异常转人工入口 |
10 · 原型、UI、研发、测试交付补充
把关键闭环补强为下一阶段可执行任务
本章节为正式 PRD 的交付要求,面向原型图、UI、开发、联调和测试分工。| 能力域 | 功能补充要求 | 原型交付要求 | UI 交互要求 | 研发实现要求 | 测试验收要求 |
|---|---|---|---|---|---|
| 营销闭环 | 补齐从模板选择、页面发布、活码生成、扫码统计、表单提交、线索查重、分配跟进到效果复盘的闭环。 | 模板库、活动编辑器、活码配置、线索表单、CRM 跟进 需要在原型中拆到列表、详情、表单、弹窗、空状态、失败态、无权限态和处理进度。 | UI 需清晰呈现状态标签、流程节点、主次按钮、危险操作确认、移动/平板/TV 适配和错误提示;PC 管理端遵循统一框架,仅输出信息架构和交互说明。 | 后端需提供接口幂等、权限校验、状态机、审计日志、消息/审批触发、异步补偿和跨模块数据一致性保障。 | 测试需覆盖主流程、异常流、权限流、重复提交、批量部分失败和数据一致性;每条线索能追溯活动、渠道、模板、活码和首次访问记录。 |
| 员工端联动 | 补齐活动发布到员工端、员工领取活动、生成专属链接/二维码/海报、分享记录、线索回流待办和个人推广战报。 | 员工端营销推广工作台、可推广活动、我的二维码、我的海报、分享记录、推广战报 需要在原型中拆到列表、详情、表单、弹窗、空状态、失败态、无权限态和处理进度。 | UI 需清晰呈现状态标签、流程节点、主次按钮、危险操作确认、移动/平板/TV 适配和错误提示;PC 管理端遵循统一框架,仅输出信息架构和交互说明。 | 后端需提供接口幂等、权限校验、状态机、审计日志、消息/审批触发、异步补偿和跨模块数据一致性保障。 | 测试需覆盖主流程、异常流、权限流、重复提交、批量部分失败和数据一致性;活动发布后授权员工可在迪诺学堂教师端 App/小程序看到并生成本人推广资产;线索可回流到本人或分配规则指定责任人。 |
| 模板治理 | 补充模板审核、上下架、版本复用、素材归属、适用校区和复制创建规则。 | 模板详情、转模板弹窗、模板审核页 需要在原型中拆到列表、详情、表单、弹窗、空状态、失败态、无权限态和处理进度。 | UI 需清晰呈现状态标签、流程节点、主次按钮、危险操作确认、移动/平板/TV 适配和错误提示;PC 管理端遵循统一框架,仅输出信息架构和交互说明。 | 后端需提供接口幂等、权限校验、状态机、审计日志、消息/审批触发、异步补偿和跨模块数据一致性保障。 | 测试需覆盖主流程、异常流、权限流、重复提交、批量部分失败和数据一致性;模板发布后有版本号和审核记录,停用模板不影响已发布页面。 |
| 异常状态 | 补齐二维码失效页、目标不可访问页、重复提交提示、访问频控和黑名单命中状态。 | 外部 H5、扫码页、提交成功页、失效页 需要在原型中拆到列表、详情、表单、弹窗、空状态、失败态、无权限态和处理进度。 | UI 需清晰呈现状态标签、流程节点、主次按钮、危险操作确认、移动/平板/TV 适配和错误提示;PC 管理端遵循统一框架,仅输出信息架构和交互说明。 | 后端需提供接口幂等、权限校验、状态机、审计日志、消息/审批触发、异步补偿和跨模块数据一致性保障。 | 测试需覆盖主流程、异常流、权限流、重复提交、批量部分失败和数据一致性;外部用户遇到异常时能看到原因和下一步操作入口。 |
11 · 数据对象与字段字典
明确页面、接口、数据库共同使用的数据语言
字段涉及敏感、人脸、财务、绩效时,原型需体现脱敏、授权和审计。核心对象
| 对象 | 说明 |
|---|---|
| MarketingChannel | 渠道档案与投放预算;落地表:mkt_channel |
| MarketingCampaign | 营销活动主数据;落地表:mkt_campaign |
| MarketingPageTemplate | 内置和自建活动模板库;落地表:mkt_page_template |
| CampaignLandingPage | 活动 H5/落地页实例;落地表:mkt_landing_page |
| LiveQrCode | 活码规则与动态跳转;落地表:mkt_live_qr_code |
| ScanRecord | 活码扫码与访问记录;落地表:mkt_scan_record |
| CampaignFormSubmit | 活动表单留资;落地表:mkt_form_submit |
| EmployeePromotionAsset | 员工专属推广链接、二维码和海报资产;落地表:mkt_employee_promotion_asset |
| EmployeeShareRecord | 员工活动分享和访问转化记录;落地表:mkt_employee_share_record |
| EmployeeCampaignStat | 员工活动推广效果快照;落地表:mkt_employee_campaign_stat |
关联引用对象
| 对象 | 说明 |
|---|---|
| Organization | 集团、区域、校区、部门组织树;引用来源:FND / sys_organization |
| User/Employee | 统一登录账号;引用来源:FND / sys_user |
| Employee | 员工基础档案;引用来源:FND / sys_employee |
| Role | 角色定义;引用来源:FND / sys_role |
| ApprovalFlow | 审批流配置;引用来源:FND / sys_approval_flow |
| MessageTemplate | 消息模板与多端触达配置;引用来源:FND / sys_message_template |
| AuditLog | 全平台操作审计日志;引用来源:FND / sys_audit_log |
| IntegrationLog | 接口调用日志;引用来源:OPEN / int_integration_log |
| SensitiveFieldPolicy | 敏感字段脱敏策略;引用来源:SEC / sec_sensitive_field_policy |
| Lead | 销售线索主表;引用来源:CRM / crm_lead |
| CustomerFamily | 客户家庭档案;引用来源:CRM / crm_customer_family |
| Student | 学员基础档案;引用来源:CRM / stu_student |
| PublicLiveConversion | 公开课直播转化线索;引用来源:LIVE / live_public_conversion |
| TeacherTodo | 教师/员工待办;引用来源:TTV / mob_teacher_todo |
完整字段字典
| 对象 | 字段 | 类型 | 必填 | 规则 | 数据级别 |
|---|---|---|---|---|---|
| MarketingChannel | id | BIGINT | 是 | 主键,雪花或号段生成,禁止复用 | 普通 |
| MarketingChannel | tenant_id | BIGINT | 是 | 集团/租户隔离字段,所有查询必须带租户上下文 | 普通 |
| MarketingChannel | org_id | BIGINT | 否 | 所属组织,集团级或公共配置为空 | 普通 |
| MarketingChannel | campus_id | BIGINT | 否 | 所属校区,跨校区或总部级数据为空 | 普通 |
| MarketingChannel | created_by | BIGINT | 是 | 创建人账号 ID | 普通 |
| MarketingChannel | created_at | DATETIME | 是 | 创建时间 | 普通 |
| MarketingChannel | updated_by | BIGINT | 否 | 最后更新人账号 ID | 普通 |
| MarketingChannel | updated_at | DATETIME | 否 | 最后更新时间 | 普通 |
| MarketingChannel | is_deleted | TINYINT | 是 | 是否已删除,0 未删除,1 已删除 | 普通 |
| MarketingChannel | deleted_at | DATETIME | 否 | 删除时间,未删除为空 | 普通 |
| MarketingChannel | deleted_by | BIGINT | 否 | 删除人账号 ID,未删除为空 | 普通 |
| MarketingChannel | version | INT | 是 | 乐观锁版本号,写操作必须校验 | 普通 |
| MarketingChannel | channel_code | VARCHAR(64) | 是 | 渠道编码,唯一 | 普通 |
| MarketingChannel | channel_name | VARCHAR(128) | 是 | 渠道名称 | 普通 |
| MarketingChannel | channel_type | VARCHAR(32) | 是 | 线上/线下/合作/自然流量 | 普通 |
| MarketingChannel | owner_id | BIGINT | 否 | 渠道负责人 | 普通 |
| MarketingChannel | budget_amount | DECIMAL(18,2) | 否 | 预算金额 | 普通 |
| MarketingChannel | roi_rule | JSON | 否 | ROI 统计规则 | 普通 |
| MarketingCampaign | id | BIGINT | 是 | 主键,雪花或号段生成,禁止复用 | 普通 |
| MarketingCampaign | tenant_id | BIGINT | 是 | 集团/租户隔离字段,所有查询必须带租户上下文 | 普通 |
| MarketingCampaign | org_id | BIGINT | 否 | 所属组织,集团级或公共配置为空 | 普通 |
| MarketingCampaign | campus_id | BIGINT | 否 | 所属校区,跨校区或总部级数据为空 | 普通 |
| MarketingCampaign | created_by | BIGINT | 是 | 创建人账号 ID | 普通 |
| MarketingCampaign | created_at | DATETIME | 是 | 创建时间 | 普通 |
| MarketingCampaign | updated_by | BIGINT | 否 | 最后更新人账号 ID | 普通 |
| MarketingCampaign | updated_at | DATETIME | 否 | 最后更新时间 | 普通 |
| MarketingCampaign | is_deleted | TINYINT | 是 | 是否已删除,0 未删除,1 已删除 | 普通 |
| MarketingCampaign | deleted_at | DATETIME | 否 | 删除时间,未删除为空 | 普通 |
| MarketingCampaign | deleted_by | BIGINT | 否 | 删除人账号 ID,未删除为空 | 普通 |
| MarketingCampaign | version | INT | 是 | 乐观锁版本号,写操作必须校验 | 普通 |
| MarketingCampaign | campaign_code | VARCHAR(64) | 是 | 活动编码,唯一 | 普通 |
| MarketingCampaign | campaign_name | VARCHAR(128) | 是 | 活动名称 | 普通 |
| MarketingCampaign | channel_id | BIGINT | 否 | 所属渠道 | 普通 |
| MarketingCampaign | campus_scope | JSON | 是 | 适用校区范围 | 普通 |
| MarketingCampaign | start_at | DATETIME | 是 | 开始时间 | 普通 |
| MarketingCampaign | end_at | DATETIME | 是 | 结束时间 | 普通 |
| MarketingCampaign | biz_status | VARCHAR(32) | 是 | 业务状态,取值来自状态机字典 | 普通 |
| MarketingCampaign | remark | VARCHAR(512) | 否 | 业务备注,敏感内容按权限脱敏 | 普通 |
| MarketingPageTemplate | id | BIGINT | 是 | 主键,雪花或号段生成,禁止复用 | 普通 |
| MarketingPageTemplate | tenant_id | BIGINT | 是 | 集团/租户隔离字段,所有查询必须带租户上下文 | 普通 |
| MarketingPageTemplate | org_id | BIGINT | 否 | 所属组织,集团级或公共配置为空 | 普通 |
| MarketingPageTemplate | campus_id | BIGINT | 否 | 所属校区,跨校区或总部级数据为空 | 普通 |
| MarketingPageTemplate | created_by | BIGINT | 是 | 创建人账号 ID | 普通 |
| MarketingPageTemplate | created_at | DATETIME | 是 | 创建时间 | 普通 |
| MarketingPageTemplate | updated_by | BIGINT | 否 | 最后更新人账号 ID | 普通 |
| MarketingPageTemplate | updated_at | DATETIME | 否 | 最后更新时间 | 普通 |
| MarketingPageTemplate | is_deleted | TINYINT | 是 | 是否已删除,0 未删除,1 已删除 | 普通 |
| MarketingPageTemplate | deleted_at | DATETIME | 否 | 删除时间,未删除为空 | 普通 |
| MarketingPageTemplate | deleted_by | BIGINT | 否 | 删除人账号 ID,未删除为空 | 普通 |
| MarketingPageTemplate | version | INT | 是 | 乐观锁版本号,写操作必须校验 | 普通 |
| MarketingPageTemplate | template_code | VARCHAR(64) | 是 | 模板编码,唯一 | 普通 |
| MarketingPageTemplate | template_name | VARCHAR(128) | 是 | 模板名称 | 普通 |
| MarketingPageTemplate | template_type | VARCHAR(32) | 是 | 节气/传统节日/公开课/招生活动/自建 | 普通 |
| MarketingPageTemplate | festival_type | VARCHAR(32) | 否 | 节日或节气分类 | 普通 |
| MarketingPageTemplate | template_schema | JSON | 是 | 页面结构、组件和默认文案 | 普通 |
| MarketingPageTemplate | review_status | VARCHAR(32) | 是 | 草稿/审核中/已通过/已驳回 | 普通 |
| MarketingPageTemplate | version_no | INT | 是 | 模板版本 | 普通 |
| CampaignLandingPage | id | BIGINT | 是 | 主键,雪花或号段生成,禁止复用 | 普通 |
| CampaignLandingPage | tenant_id | BIGINT | 是 | 集团/租户隔离字段,所有查询必须带租户上下文 | 普通 |
| CampaignLandingPage | org_id | BIGINT | 否 | 所属组织,集团级或公共配置为空 | 普通 |
| CampaignLandingPage | campus_id | BIGINT | 否 | 所属校区,跨校区或总部级数据为空 | 普通 |
| CampaignLandingPage | created_by | BIGINT | 是 | 创建人账号 ID | 普通 |
| CampaignLandingPage | created_at | DATETIME | 是 | 创建时间 | 普通 |
| CampaignLandingPage | updated_by | BIGINT | 否 | 最后更新人账号 ID | 普通 |
| CampaignLandingPage | updated_at | DATETIME | 否 | 最后更新时间 | 普通 |
| CampaignLandingPage | is_deleted | TINYINT | 是 | 是否已删除,0 未删除,1 已删除 | 普通 |
| CampaignLandingPage | deleted_at | DATETIME | 否 | 删除时间,未删除为空 | 普通 |
| CampaignLandingPage | deleted_by | BIGINT | 否 | 删除人账号 ID,未删除为空 | 普通 |
| CampaignLandingPage | version | INT | 是 | 乐观锁版本号,写操作必须校验 | 普通 |
| CampaignLandingPage | page_code | VARCHAR(64) | 是 | 页面编码,唯一 | 普通 |
| CampaignLandingPage | campaign_id | BIGINT | 是 | 关联营销活动 | 普通 |
| CampaignLandingPage | template_id | BIGINT | 否 | 来源模板 ID | 普通 |
| CampaignLandingPage | page_schema | JSON | 是 | 页面组件配置 | 普通 |
| CampaignLandingPage | publish_status | VARCHAR(32) | 是 | 草稿/已发布/已下线 | 普通 |
| CampaignLandingPage | published_url | VARCHAR(512) | 否 | 发布访问地址 | 普通 |
| CampaignLandingPage | tracking_config | JSON | 否 | 埋点和转化归因配置 | 普通 |
| LiveQrCode | id | BIGINT | 是 | 主键,雪花或号段生成,禁止复用 | 普通 |
| LiveQrCode | tenant_id | BIGINT | 是 | 集团/租户隔离字段,所有查询必须带租户上下文 | 普通 |
| LiveQrCode | org_id | BIGINT | 否 | 所属组织,集团级或公共配置为空 | 普通 |
| LiveQrCode | campus_id | BIGINT | 否 | 所属校区,跨校区或总部级数据为空 | 普通 |
| LiveQrCode | created_by | BIGINT | 是 | 创建人账号 ID | 普通 |
| LiveQrCode | created_at | DATETIME | 是 | 创建时间 | 普通 |
| LiveQrCode | updated_by | BIGINT | 否 | 最后更新人账号 ID | 普通 |
| LiveQrCode | updated_at | DATETIME | 否 | 最后更新时间 | 普通 |
| LiveQrCode | is_deleted | TINYINT | 是 | 是否已删除,0 未删除,1 已删除 | 普通 |
| LiveQrCode | deleted_at | DATETIME | 否 | 删除时间,未删除为空 | 普通 |
| LiveQrCode | deleted_by | BIGINT | 否 | 删除人账号 ID,未删除为空 | 普通 |
| LiveQrCode | version | INT | 是 | 乐观锁版本号,写操作必须校验 | 普通 |
| LiveQrCode | qr_code | VARCHAR(64) | 是 | 活码编码,唯一 | 普通 |
| LiveQrCode | biz_type | VARCHAR(64) | 是 | 活动页/资源/课程/直播/表单 | 普通 |
| LiveQrCode | target_rule | JSON | 是 | 动态目标规则 | 普通 |
| LiveQrCode | fallback_url | VARCHAR(512) | 否 | 失效或异常兜底地址 | 普通 |
| LiveQrCode | rate_limit_rule | JSON | 否 | 防刷规则 | 普通 |
| LiveQrCode | enabled | TINYINT | 是 | 是否启用 | 普通 |
| ScanRecord | id | BIGINT | 是 | 主键,雪花或号段生成,禁止复用 | 普通 |
| ScanRecord | tenant_id | BIGINT | 是 | 集团/租户隔离字段,所有查询必须带租户上下文 | 普通 |
| ScanRecord | org_id | BIGINT | 否 | 所属组织,集团级或公共配置为空 | 普通 |
| ScanRecord | campus_id | BIGINT | 否 | 所属校区,跨校区或总部级数据为空 | 普通 |
| ScanRecord | created_by | BIGINT | 是 | 创建人账号 ID | 普通 |
| ScanRecord | created_at | DATETIME | 是 | 创建时间 | 普通 |
| ScanRecord | updated_by | BIGINT | 否 | 最后更新人账号 ID | 普通 |
| ScanRecord | updated_at | DATETIME | 否 | 最后更新时间 | 普通 |
| ScanRecord | is_deleted | TINYINT | 是 | 是否已删除,0 未删除,1 已删除 | 普通 |
| ScanRecord | deleted_at | DATETIME | 否 | 删除时间,未删除为空 | 普通 |
| ScanRecord | deleted_by | BIGINT | 否 | 删除人账号 ID,未删除为空 | 普通 |
| ScanRecord | version | INT | 是 | 乐观锁版本号,写操作必须校验 | 普通 |
| ScanRecord | qr_code_id | BIGINT | 是 | 活码 ID | 普通 |
| ScanRecord | visitor_id | VARCHAR(128) | 否 | 匿名访客 ID | 普通 |
| ScanRecord | openid | VARCHAR(128) | 否 | 微信 OpenID,敏感 | 敏感 |
| ScanRecord | scan_at | DATETIME | 是 | 扫码时间 | 普通 |
| ScanRecord | resolved_target | VARCHAR(512) | 是 | 实际解析目标 | 普通 |
| ScanRecord | risk_result | VARCHAR(32) | 否 | 防刷风险结果 | 普通 |
| CampaignFormSubmit | id | BIGINT | 是 | 主键,雪花或号段生成,禁止复用 | 普通 |
| CampaignFormSubmit | tenant_id | BIGINT | 是 | 集团/租户隔离字段,所有查询必须带租户上下文 | 普通 |
| CampaignFormSubmit | org_id | BIGINT | 否 | 所属组织,集团级或公共配置为空 | 普通 |
| CampaignFormSubmit | campus_id | BIGINT | 否 | 所属校区,跨校区或总部级数据为空 | 普通 |
| CampaignFormSubmit | created_by | BIGINT | 是 | 创建人账号 ID | 普通 |
| CampaignFormSubmit | created_at | DATETIME | 是 | 创建时间 | 普通 |
| CampaignFormSubmit | updated_by | BIGINT | 否 | 最后更新人账号 ID | 普通 |
| CampaignFormSubmit | updated_at | DATETIME | 否 | 最后更新时间 | 普通 |
| CampaignFormSubmit | is_deleted | TINYINT | 是 | 是否已删除,0 未删除,1 已删除 | 普通 |
| CampaignFormSubmit | deleted_at | DATETIME | 否 | 删除时间,未删除为空 | 普通 |
| CampaignFormSubmit | deleted_by | BIGINT | 否 | 删除人账号 ID,未删除为空 | 普通 |
| CampaignFormSubmit | version | INT | 是 | 乐观锁版本号,写操作必须校验 | 普通 |
| CampaignFormSubmit | submit_no | VARCHAR(64) | 是 | 提交编号,唯一 | 普通 |
| CampaignFormSubmit | page_id | BIGINT | 是 | 页面 ID | 普通 |
| CampaignFormSubmit | guardian_mobile | VARCHAR(32) | 是 | 家长手机号,敏感 | 敏感 |
| CampaignFormSubmit | student_name | VARCHAR(64) | 否 | 学员姓名 | 普通 |
| CampaignFormSubmit | form_data | JSON | 是 | 表单完整提交数据 | 普通 |
| CampaignFormSubmit | lead_id | BIGINT | 否 | 转化生成线索 ID | 普通 |
| CampaignFormSubmit | submit_status | VARCHAR(32) | 是 | 成功/失败/重复/风控拦截 | 普通 |
| EmployeePromotionAsset | id | BIGINT | 是 | 主键,雪花或号段生成,禁止复用 | 普通 |
| EmployeePromotionAsset | tenant_id | BIGINT | 是 | 集团/租户隔离字段,所有查询必须带租户上下文 | 普通 |
| EmployeePromotionAsset | org_id | BIGINT | 否 | 所属组织,集团级或公共配置为空 | 普通 |
| EmployeePromotionAsset | campus_id | BIGINT | 否 | 所属校区,跨校区或总部级数据为空 | 普通 |
| EmployeePromotionAsset | created_by | BIGINT | 是 | 创建人账号 ID | 普通 |
| EmployeePromotionAsset | created_at | DATETIME | 是 | 创建时间 | 普通 |
| EmployeePromotionAsset | updated_by | BIGINT | 否 | 最后更新人账号 ID | 普通 |
| EmployeePromotionAsset | updated_at | DATETIME | 否 | 最后更新时间 | 普通 |
| EmployeePromotionAsset | is_deleted | TINYINT | 是 | 是否已删除,0 未删除,1 已删除 | 普通 |
| EmployeePromotionAsset | deleted_at | DATETIME | 否 | 删除时间,未删除为空 | 普通 |
| EmployeePromotionAsset | deleted_by | BIGINT | 否 | 删除人账号 ID,未删除为空 | 普通 |
| EmployeePromotionAsset | version | INT | 是 | 乐观锁版本号,写操作必须校验 | 普通 |
| EmployeePromotionAsset | asset_no | VARCHAR(64) | 是 | 推广资产编号,唯一 | 普通 |
| EmployeePromotionAsset | campaign_id | BIGINT | 是 | 关联营销活动 | 普通 |
| EmployeePromotionAsset | landing_page_id | BIGINT | 是 | 关联活动落地页 | 普通 |
| EmployeePromotionAsset | employee_id | BIGINT | 是 | 推广员工 ID | 普通 |
| EmployeePromotionAsset | campus_id_ref | BIGINT | 否 | 员工推广归属校区 | 普通 |
| EmployeePromotionAsset | qr_code_id | BIGINT | 否 | 关联活码 ID | 普通 |
| EmployeePromotionAsset | short_url | VARCHAR(512) | 否 | 员工专属短链 | 普通 |
| EmployeePromotionAsset | poster_file_id | BIGINT | 否 | 员工专属分享海报文件 | 普通 |
| EmployeePromotionAsset | share_params | JSON | 是 | campaignId/pageId/campusId/channelId/employeeId/shareScene 等归因参数 | 普通 |
| EmployeePromotionAsset | asset_status | VARCHAR(32) | 是 | 待生成/已生成/已停用/已失效 | 普通 |
| EmployeeShareRecord | id | BIGINT | 是 | 主键,雪花或号段生成,禁止复用 | 普通 |
| EmployeeShareRecord | tenant_id | BIGINT | 是 | 集团/租户隔离字段,所有查询必须带租户上下文 | 普通 |
| EmployeeShareRecord | org_id | BIGINT | 否 | 所属组织,集团级或公共配置为空 | 普通 |
| EmployeeShareRecord | campus_id | BIGINT | 否 | 所属校区,跨校区或总部级数据为空 | 普通 |
| EmployeeShareRecord | created_by | BIGINT | 是 | 创建人账号 ID | 普通 |
| EmployeeShareRecord | created_at | DATETIME | 是 | 创建时间 | 普通 |
| EmployeeShareRecord | updated_by | BIGINT | 否 | 最后更新人账号 ID | 普通 |
| EmployeeShareRecord | updated_at | DATETIME | 否 | 最后更新时间 | 普通 |
| EmployeeShareRecord | is_deleted | TINYINT | 是 | 是否已删除,0 未删除,1 已删除 | 普通 |
| EmployeeShareRecord | deleted_at | DATETIME | 否 | 删除时间,未删除为空 | 普通 |
| EmployeeShareRecord | deleted_by | BIGINT | 否 | 删除人账号 ID,未删除为空 | 普通 |
| EmployeeShareRecord | version | INT | 是 | 乐观锁版本号,写操作必须校验 | 普通 |
| EmployeeShareRecord | asset_id | BIGINT | 是 | 推广资产 ID | 普通 |
| EmployeeShareRecord | employee_id | BIGINT | 是 | 推广员工 ID | 普通 |
| EmployeeShareRecord | share_scene | VARCHAR(64) | 是 | 微信好友/朋友圈/企微/二维码海报/复制链接/线下物料 | 普通 |
| EmployeeShareRecord | share_at | DATETIME | 是 | 分享时间 | 普通 |
| EmployeeShareRecord | visitor_id | VARCHAR(128) | 否 | 访客匿名 ID | 普通 |
| EmployeeShareRecord | scan_record_id | BIGINT | 否 | 关联扫码记录 | 普通 |
| EmployeeShareRecord | form_submit_id | BIGINT | 否 | 关联表单提交 | 普通 |
| EmployeeShareRecord | lead_id | BIGINT | 否 | 关联 CRM 线索 | 普通 |
| EmployeeShareRecord | conversion_stage | VARCHAR(32) | 是 | 访问/留资/预约/到访/试听/签约/流失 | 普通 |
| EmployeeCampaignStat | id | BIGINT | 是 | 主键,雪花或号段生成,禁止复用 | 普通 |
| EmployeeCampaignStat | tenant_id | BIGINT | 是 | 集团/租户隔离字段,所有查询必须带租户上下文 | 普通 |
| EmployeeCampaignStat | org_id | BIGINT | 否 | 所属组织,集团级或公共配置为空 | 普通 |
| EmployeeCampaignStat | campus_id | BIGINT | 否 | 所属校区,跨校区或总部级数据为空 | 普通 |
| EmployeeCampaignStat | created_by | BIGINT | 是 | 创建人账号 ID | 普通 |
| EmployeeCampaignStat | created_at | DATETIME | 是 | 创建时间 | 普通 |
| EmployeeCampaignStat | updated_by | BIGINT | 否 | 最后更新人账号 ID | 普通 |
| EmployeeCampaignStat | updated_at | DATETIME | 否 | 最后更新时间 | 普通 |
| EmployeeCampaignStat | is_deleted | TINYINT | 是 | 是否已删除,0 未删除,1 已删除 | 普通 |
| EmployeeCampaignStat | deleted_at | DATETIME | 否 | 删除时间,未删除为空 | 普通 |
| EmployeeCampaignStat | deleted_by | BIGINT | 否 | 删除人账号 ID,未删除为空 | 普通 |
| EmployeeCampaignStat | version | INT | 是 | 乐观锁版本号,写操作必须校验 | 普通 |
| EmployeeCampaignStat | stat_date | DATE | 是 | 统计日期 | 普通 |
| EmployeeCampaignStat | campaign_id | BIGINT | 是 | 营销活动 ID | 普通 |
| EmployeeCampaignStat | employee_id | BIGINT | 是 | 员工 ID | 普通 |
| EmployeeCampaignStat | campus_id_ref | BIGINT | 否 | 归属校区 | 普通 |
| EmployeeCampaignStat | visit_count | INT | 是 | 访问量 | 普通 |
| EmployeeCampaignStat | scan_count | INT | 是 | 扫码量 | 普通 |
| EmployeeCampaignStat | submit_count | INT | 是 | 留资数 | 普通 |
| EmployeeCampaignStat | lead_count | INT | 是 | 线索数 | 普通 |
| EmployeeCampaignStat | trial_count | INT | 是 | 试听预约数 | 普通 |
| EmployeeCampaignStat | deal_count | INT | 是 | 成交数 | 普通 |
| EmployeeCampaignStat | roi_snapshot | JSON | 否 | 转化率、成交额和 ROI 快照 | 普通 |
引用对象字段字典
| 引用表 | 对象 | 字段 | 类型 | 必填 | 规则 | 数据级别 |
|---|---|---|---|---|---|---|
| sys_organization | Organization | id | BIGINT | 是 | 主键,雪花或号段生成,禁止复用 | 普通 |
| sys_organization | Organization | tenant_id | BIGINT | 是 | 集团/租户隔离字段,所有查询必须带租户上下文 | 普通 |
| sys_organization | Organization | org_id | BIGINT | 否 | 所属组织,集团级或公共配置为空 | 普通 |
| sys_organization | Organization | campus_id | BIGINT | 否 | 所属校区,跨校区或总部级数据为空 | 普通 |
| sys_organization | Organization | created_by | BIGINT | 是 | 创建人账号 ID | 普通 |
| sys_organization | Organization | created_at | DATETIME | 是 | 创建时间 | 普通 |
| sys_organization | Organization | updated_by | BIGINT | 否 | 最后更新人账号 ID | 普通 |
| sys_organization | Organization | updated_at | DATETIME | 否 | 最后更新时间 | 普通 |
| sys_organization | Organization | is_deleted | TINYINT | 是 | 是否已删除,0 未删除,1 已删除 | 普通 |
| sys_organization | Organization | deleted_at | DATETIME | 否 | 删除时间,未删除为空 | 普通 |
| sys_organization | Organization | deleted_by | BIGINT | 否 | 删除人账号 ID,未删除为空 | 普通 |
| sys_organization | Organization | version | INT | 是 | 乐观锁版本号,写操作必须校验 | 普通 |
| sys_organization | Organization | org_code | VARCHAR(64) | 是 | 组织编码,租户内唯一 | 普通 |
| sys_organization | Organization | org_name | VARCHAR(128) | 是 | 组织名称 | 普通 |
| sys_organization | Organization | org_type | VARCHAR(32) | 是 | 集团/区域/校区/部门/法人主体 | 普通 |
| sys_organization | Organization | parent_id | BIGINT | 否 | 上级组织 ID,根节点为空 | 普通 |
| sys_organization | Organization | sort_no | INT | 否 | 同级排序 | 普通 |
| sys_organization | Organization | enabled | TINYINT | 是 | 是否启用 | 普通 |
| sys_user | User/Employee | id | BIGINT | 是 | 主键,雪花或号段生成,禁止复用 | 普通 |
| sys_user | User/Employee | tenant_id | BIGINT | 是 | 集团/租户隔离字段,所有查询必须带租户上下文 | 普通 |
| sys_user | User/Employee | org_id | BIGINT | 否 | 所属组织,集团级或公共配置为空 | 普通 |
| sys_user | User/Employee | campus_id | BIGINT | 否 | 所属校区,跨校区或总部级数据为空 | 普通 |
| sys_user | User/Employee | created_by | BIGINT | 是 | 创建人账号 ID | 普通 |
| sys_user | User/Employee | created_at | DATETIME | 是 | 创建时间 | 普通 |
| sys_user | User/Employee | updated_by | BIGINT | 否 | 最后更新人账号 ID | 普通 |
| sys_user | User/Employee | updated_at | DATETIME | 否 | 最后更新时间 | 普通 |
| sys_user | User/Employee | is_deleted | TINYINT | 是 | 是否已删除,0 未删除,1 已删除 | 普通 |
| sys_user | User/Employee | deleted_at | DATETIME | 否 | 删除时间,未删除为空 | 普通 |
| sys_user | User/Employee | deleted_by | BIGINT | 否 | 删除人账号 ID,未删除为空 | 普通 |
| sys_user | User/Employee | version | INT | 是 | 乐观锁版本号,写操作必须校验 | 普通 |
| sys_user | User/Employee | user_no | VARCHAR(64) | 是 | 账号编号,唯一 | 普通 |
| sys_user | User/Employee | login_name | VARCHAR(64) | 是 | 登录名,唯一 | 普通 |
| sys_user | User/Employee | mobile | VARCHAR(32) | 否 | 手机号,敏感脱敏展示 | 敏感 |
| sys_user | User/Employee | password_hash | VARCHAR(255) | 否 | 密码哈希,禁止前端返回 | 高敏 |
| sys_user | User/Employee | user_type | VARCHAR(32) | 是 | 员工/学员/家长/外部账号 | 普通 |
| sys_user | User/Employee | login_status | VARCHAR(32) | 是 | 正常/锁定/停用/待激活 | 普通 |
| sys_employee | Employee | id | BIGINT | 是 | 主键,雪花或号段生成,禁止复用 | 普通 |
| sys_employee | Employee | tenant_id | BIGINT | 是 | 集团/租户隔离字段,所有查询必须带租户上下文 | 普通 |
| sys_employee | Employee | org_id | BIGINT | 否 | 所属组织,集团级或公共配置为空 | 普通 |
| sys_employee | Employee | campus_id | BIGINT | 否 | 所属校区,跨校区或总部级数据为空 | 普通 |
| sys_employee | Employee | created_by | BIGINT | 是 | 创建人账号 ID | 普通 |
| sys_employee | Employee | created_at | DATETIME | 是 | 创建时间 | 普通 |
| sys_employee | Employee | updated_by | BIGINT | 否 | 最后更新人账号 ID | 普通 |
| sys_employee | Employee | updated_at | DATETIME | 否 | 最后更新时间 | 普通 |
| sys_employee | Employee | is_deleted | TINYINT | 是 | 是否已删除,0 未删除,1 已删除 | 普通 |
| sys_employee | Employee | deleted_at | DATETIME | 否 | 删除时间,未删除为空 | 普通 |
| sys_employee | Employee | deleted_by | BIGINT | 否 | 删除人账号 ID,未删除为空 | 普通 |
| sys_employee | Employee | version | INT | 是 | 乐观锁版本号,写操作必须校验 | 普通 |
| sys_employee | Employee | employee_no | VARCHAR(64) | 是 | 工号,唯一 | 普通 |
| sys_employee | Employee | user_id | BIGINT | 否 | 关联账号 ID | 普通 |
| sys_employee | Employee | employee_name | VARCHAR(64) | 是 | 员工姓名 | 普通 |
| sys_employee | Employee | primary_campus_id | BIGINT | 否 | 主校区 ID | 普通 |
| sys_employee | Employee | job_title | VARCHAR(64) | 否 | 岗位名称 | 普通 |
| sys_employee | Employee | hire_status | VARCHAR(32) | 是 | 在职/试用/离职/停用 | 普通 |
| sys_role | Role | id | BIGINT | 是 | 主键,雪花或号段生成,禁止复用 | 普通 |
| sys_role | Role | tenant_id | BIGINT | 是 | 集团/租户隔离字段,所有查询必须带租户上下文 | 普通 |
| sys_role | Role | org_id | BIGINT | 否 | 所属组织,集团级或公共配置为空 | 普通 |
| sys_role | Role | campus_id | BIGINT | 否 | 所属校区,跨校区或总部级数据为空 | 普通 |
| sys_role | Role | created_by | BIGINT | 是 | 创建人账号 ID | 普通 |
| sys_role | Role | created_at | DATETIME | 是 | 创建时间 | 普通 |
| sys_role | Role | updated_by | BIGINT | 否 | 最后更新人账号 ID | 普通 |
| sys_role | Role | updated_at | DATETIME | 否 | 最后更新时间 | 普通 |
| sys_role | Role | is_deleted | TINYINT | 是 | 是否已删除,0 未删除,1 已删除 | 普通 |
| sys_role | Role | deleted_at | DATETIME | 否 | 删除时间,未删除为空 | 普通 |
| sys_role | Role | deleted_by | BIGINT | 否 | 删除人账号 ID,未删除为空 | 普通 |
| sys_role | Role | version | INT | 是 | 乐观锁版本号,写操作必须校验 | 普通 |
| sys_role | Role | role_code | VARCHAR(64) | 是 | 角色编码,唯一 | 普通 |
| sys_role | Role | role_name | VARCHAR(128) | 是 | 角色名称 | 普通 |
| sys_role | Role | role_level | VARCHAR(32) | 是 | 总部/区域/校区/个人 | 普通 |
| sys_role | Role | data_scope_type | VARCHAR(32) | 是 | 数据范围类型 | 普通 |
| sys_role | Role | enabled | TINYINT | 是 | 是否启用 | 普通 |
| sys_approval_flow | ApprovalFlow | id | BIGINT | 是 | 主键,雪花或号段生成,禁止复用 | 普通 |
| sys_approval_flow | ApprovalFlow | tenant_id | BIGINT | 是 | 集团/租户隔离字段,所有查询必须带租户上下文 | 普通 |
| sys_approval_flow | ApprovalFlow | org_id | BIGINT | 否 | 所属组织,集团级或公共配置为空 | 普通 |
| sys_approval_flow | ApprovalFlow | campus_id | BIGINT | 否 | 所属校区,跨校区或总部级数据为空 | 普通 |
| sys_approval_flow | ApprovalFlow | created_by | BIGINT | 是 | 创建人账号 ID | 普通 |
| sys_approval_flow | ApprovalFlow | created_at | DATETIME | 是 | 创建时间 | 普通 |
| sys_approval_flow | ApprovalFlow | updated_by | BIGINT | 否 | 最后更新人账号 ID | 普通 |
| sys_approval_flow | ApprovalFlow | updated_at | DATETIME | 否 | 最后更新时间 | 普通 |
| sys_approval_flow | ApprovalFlow | is_deleted | TINYINT | 是 | 是否已删除,0 未删除,1 已删除 | 普通 |
| sys_approval_flow | ApprovalFlow | deleted_at | DATETIME | 否 | 删除时间,未删除为空 | 普通 |
| sys_approval_flow | ApprovalFlow | deleted_by | BIGINT | 否 | 删除人账号 ID,未删除为空 | 普通 |
| sys_approval_flow | ApprovalFlow | version | INT | 是 | 乐观锁版本号,写操作必须校验 | 普通 |
| sys_approval_flow | ApprovalFlow | flow_code | VARCHAR(64) | 是 | 审批流编码,唯一 | 普通 |
| sys_approval_flow | ApprovalFlow | biz_type | VARCHAR(64) | 是 | 业务类型 | 普通 |
| sys_approval_flow | ApprovalFlow | flow_name | VARCHAR(128) | 是 | 审批流名称 | 普通 |
| sys_approval_flow | ApprovalFlow | condition_json | JSON | 否 | 触发条件 | 普通 |
| sys_approval_flow | ApprovalFlow | node_json | JSON | 是 | 节点、审批人和超时规则 | 普通 |
| sys_approval_flow | ApprovalFlow | version_no | INT | 是 | 审批流版本号 | 普通 |
| sys_approval_flow | ApprovalFlow | enabled | TINYINT | 是 | 是否启用 | 普通 |
| sys_message_template | MessageTemplate | id | BIGINT | 是 | 主键,雪花或号段生成,禁止复用 | 普通 |
| sys_message_template | MessageTemplate | tenant_id | BIGINT | 是 | 集团/租户隔离字段,所有查询必须带租户上下文 | 普通 |
| sys_message_template | MessageTemplate | org_id | BIGINT | 否 | 所属组织,集团级或公共配置为空 | 普通 |
| sys_message_template | MessageTemplate | campus_id | BIGINT | 否 | 所属校区,跨校区或总部级数据为空 | 普通 |
| sys_message_template | MessageTemplate | created_by | BIGINT | 是 | 创建人账号 ID | 普通 |
| sys_message_template | MessageTemplate | created_at | DATETIME | 是 | 创建时间 | 普通 |
| sys_message_template | MessageTemplate | updated_by | BIGINT | 否 | 最后更新人账号 ID | 普通 |
| sys_message_template | MessageTemplate | updated_at | DATETIME | 否 | 最后更新时间 | 普通 |
| sys_message_template | MessageTemplate | is_deleted | TINYINT | 是 | 是否已删除,0 未删除,1 已删除 | 普通 |
| sys_message_template | MessageTemplate | deleted_at | DATETIME | 否 | 删除时间,未删除为空 | 普通 |
| sys_message_template | MessageTemplate | deleted_by | BIGINT | 否 | 删除人账号 ID,未删除为空 | 普通 |
| sys_message_template | MessageTemplate | version | INT | 是 | 乐观锁版本号,写操作必须校验 | 普通 |
| sys_message_template | MessageTemplate | template_code | VARCHAR(64) | 是 | 模板编码,唯一 | 普通 |
| sys_message_template | MessageTemplate | template_name | VARCHAR(128) | 是 | 模板名称 | 普通 |
| sys_message_template | MessageTemplate | channel | VARCHAR(32) | 是 | 站内信/短信/微信小程序/企微/Push | 普通 |
| sys_message_template | MessageTemplate | receiver_rule | JSON | 是 | 接收人规则 | 普通 |
| sys_message_template | MessageTemplate | content_template | TEXT | 是 | 模板内容 | 普通 |
| sys_message_template | MessageTemplate | enabled | TINYINT | 是 | 是否启用 | 普通 |
| sys_audit_log | AuditLog | id | BIGINT | 是 | 主键,雪花或号段生成,禁止复用 | 普通 |
| sys_audit_log | AuditLog | tenant_id | BIGINT | 是 | 集团/租户隔离字段,所有查询必须带租户上下文 | 普通 |
| sys_audit_log | AuditLog | org_id | BIGINT | 否 | 所属组织,集团级或公共配置为空 | 普通 |
| sys_audit_log | AuditLog | campus_id | BIGINT | 否 | 所属校区,跨校区或总部级数据为空 | 普通 |
| sys_audit_log | AuditLog | created_by | BIGINT | 是 | 创建人账号 ID | 普通 |
| sys_audit_log | AuditLog | created_at | DATETIME | 是 | 创建时间 | 普通 |
| sys_audit_log | AuditLog | updated_by | BIGINT | 否 | 最后更新人账号 ID | 普通 |
| sys_audit_log | AuditLog | updated_at | DATETIME | 否 | 最后更新时间 | 普通 |
| sys_audit_log | AuditLog | is_deleted | TINYINT | 是 | 是否已删除,0 未删除,1 已删除 | 普通 |
| sys_audit_log | AuditLog | deleted_at | DATETIME | 否 | 删除时间,未删除为空 | 普通 |
| sys_audit_log | AuditLog | deleted_by | BIGINT | 否 | 删除人账号 ID,未删除为空 | 普通 |
| sys_audit_log | AuditLog | version | INT | 是 | 乐观锁版本号,写操作必须校验 | 普通 |
| sys_audit_log | AuditLog | operator_id | BIGINT | 是 | 操作人 ID | 普通 |
| sys_audit_log | AuditLog | biz_type | VARCHAR(64) | 是 | 业务类型 | 普通 |
| sys_audit_log | AuditLog | biz_id | BIGINT | 否 | 业务主键 ID | 普通 |
| sys_audit_log | AuditLog | action_code | VARCHAR(64) | 是 | 操作编码 | 普通 |
| sys_audit_log | AuditLog | before_snapshot | JSON | 否 | 变更前快照 | 普通 |
| sys_audit_log | AuditLog | after_snapshot | JSON | 否 | 变更后快照 | 普通 |
| sys_audit_log | AuditLog | ip_address | VARCHAR(64) | 否 | 操作 IP | 普通 |
| int_integration_log | IntegrationLog | id | BIGINT | 是 | 主键,雪花或号段生成,禁止复用 | 普通 |
| int_integration_log | IntegrationLog | tenant_id | BIGINT | 是 | 集团/租户隔离字段,所有查询必须带租户上下文 | 普通 |
| int_integration_log | IntegrationLog | org_id | BIGINT | 否 | 所属组织,集团级或公共配置为空 | 普通 |
| int_integration_log | IntegrationLog | campus_id | BIGINT | 否 | 所属校区,跨校区或总部级数据为空 | 普通 |
| int_integration_log | IntegrationLog | created_by | BIGINT | 是 | 创建人账号 ID | 普通 |
| int_integration_log | IntegrationLog | created_at | DATETIME | 是 | 创建时间 | 普通 |
| int_integration_log | IntegrationLog | updated_by | BIGINT | 否 | 最后更新人账号 ID | 普通 |
| int_integration_log | IntegrationLog | updated_at | DATETIME | 否 | 最后更新时间 | 普通 |
| int_integration_log | IntegrationLog | is_deleted | TINYINT | 是 | 是否已删除,0 未删除,1 已删除 | 普通 |
| int_integration_log | IntegrationLog | deleted_at | DATETIME | 否 | 删除时间,未删除为空 | 普通 |
| int_integration_log | IntegrationLog | deleted_by | BIGINT | 否 | 删除人账号 ID,未删除为空 | 普通 |
| int_integration_log | IntegrationLog | version | INT | 是 | 乐观锁版本号,写操作必须校验 | 普通 |
| int_integration_log | IntegrationLog | request_id | VARCHAR(128) | 是 | 请求 ID,幂等键 | 普通 |
| int_integration_log | IntegrationLog | system_code | VARCHAR(64) | 是 | 外部系统编码 | 普通 |
| int_integration_log | IntegrationLog | api_path | VARCHAR(512) | 是 | 接口路径 | 普通 |
| int_integration_log | IntegrationLog | biz_type | VARCHAR(64) | 否 | 业务类型 | 普通 |
| int_integration_log | IntegrationLog | biz_id | BIGINT | 否 | 业务 ID | 普通 |
| int_integration_log | IntegrationLog | request_payload | JSON | 否 | 请求报文,敏感字段脱敏 | 敏感 |
| int_integration_log | IntegrationLog | response_payload | JSON | 否 | 响应报文 | 普通 |
| int_integration_log | IntegrationLog | call_status | VARCHAR(32) | 是 | 成功/失败/超时/重试中 | 普通 |
| sec_sensitive_field_policy | SensitiveFieldPolicy | id | BIGINT | 是 | 主键,雪花或号段生成,禁止复用 | 普通 |
| sec_sensitive_field_policy | SensitiveFieldPolicy | tenant_id | BIGINT | 是 | 集团/租户隔离字段,所有查询必须带租户上下文 | 普通 |
| sec_sensitive_field_policy | SensitiveFieldPolicy | org_id | BIGINT | 否 | 所属组织,集团级或公共配置为空 | 普通 |
| sec_sensitive_field_policy | SensitiveFieldPolicy | campus_id | BIGINT | 否 | 所属校区,跨校区或总部级数据为空 | 普通 |
| sec_sensitive_field_policy | SensitiveFieldPolicy | created_by | BIGINT | 是 | 创建人账号 ID | 普通 |
| sec_sensitive_field_policy | SensitiveFieldPolicy | created_at | DATETIME | 是 | 创建时间 | 普通 |
| sec_sensitive_field_policy | SensitiveFieldPolicy | updated_by | BIGINT | 否 | 最后更新人账号 ID | 普通 |
| sec_sensitive_field_policy | SensitiveFieldPolicy | updated_at | DATETIME | 否 | 最后更新时间 | 普通 |
| sec_sensitive_field_policy | SensitiveFieldPolicy | is_deleted | TINYINT | 是 | 是否已删除,0 未删除,1 已删除 | 普通 |
| sec_sensitive_field_policy | SensitiveFieldPolicy | deleted_at | DATETIME | 否 | 删除时间,未删除为空 | 普通 |
| sec_sensitive_field_policy | SensitiveFieldPolicy | deleted_by | BIGINT | 否 | 删除人账号 ID,未删除为空 | 普通 |
| sec_sensitive_field_policy | SensitiveFieldPolicy | version | INT | 是 | 乐观锁版本号,写操作必须校验 | 普通 |
| sec_sensitive_field_policy | SensitiveFieldPolicy | field_code | VARCHAR(128) | 是 | 字段编码,唯一 | 普通 |
| sec_sensitive_field_policy | SensitiveFieldPolicy | biz_type | VARCHAR(64) | 是 | 业务类型 | 普通 |
| sec_sensitive_field_policy | SensitiveFieldPolicy | mask_rule | VARCHAR(64) | 是 | 脱敏规则 | 普通 |
| sec_sensitive_field_policy | SensitiveFieldPolicy | view_requires_approval | TINYINT | 是 | 明文查看是否需审批 | 普通 |
| sec_sensitive_field_policy | SensitiveFieldPolicy | watermark_required | TINYINT | 是 | 是否加水印 | 普通 |
| crm_lead | Lead | id | BIGINT | 是 | 主键,雪花或号段生成,禁止复用 | 普通 |
| crm_lead | Lead | tenant_id | BIGINT | 是 | 集团/租户隔离字段,所有查询必须带租户上下文 | 普通 |
| crm_lead | Lead | org_id | BIGINT | 否 | 所属组织,集团级或公共配置为空 | 普通 |
| crm_lead | Lead | campus_id | BIGINT | 否 | 所属校区,跨校区或总部级数据为空 | 普通 |
| crm_lead | Lead | created_by | BIGINT | 是 | 创建人账号 ID | 普通 |
| crm_lead | Lead | created_at | DATETIME | 是 | 创建时间 | 普通 |
| crm_lead | Lead | updated_by | BIGINT | 否 | 最后更新人账号 ID | 普通 |
| crm_lead | Lead | updated_at | DATETIME | 否 | 最后更新时间 | 普通 |
| crm_lead | Lead | is_deleted | TINYINT | 是 | 是否已删除,0 未删除,1 已删除 | 普通 |
| crm_lead | Lead | deleted_at | DATETIME | 否 | 删除时间,未删除为空 | 普通 |
| crm_lead | Lead | deleted_by | BIGINT | 否 | 删除人账号 ID,未删除为空 | 普通 |
| crm_lead | Lead | version | INT | 是 | 乐观锁版本号,写操作必须校验 | 普通 |
| crm_lead | Lead | lead_no | VARCHAR(64) | 是 | 线索编号,唯一 | 普通 |
| crm_lead | Lead | source_channel | VARCHAR(64) | 是 | 来源渠道 | 普通 |
| crm_lead | Lead | campaign_id | BIGINT | 否 | 来源活动 ID | 普通 |
| crm_lead | Lead | guardian_mobile | VARCHAR(32) | 是 | 家长手机号,敏感 | 敏感 |
| crm_lead | Lead | student_name | VARCHAR(64) | 否 | 学员姓名 | 普通 |
| crm_lead | Lead | intent_course_id | BIGINT | 否 | 意向课程 | 普通 |
| crm_lead | Lead | owner_id | BIGINT | 否 | 当前归属销售/顾问 | 普通 |
| crm_lead | Lead | protect_until | DATETIME | 否 | 保护期截止时间 | 普通 |
| crm_lead | Lead | duplicate_status | VARCHAR(32) | 是 | 未查重/疑似重复/已合并/已忽略 | 普通 |
| crm_lead | Lead | biz_status | VARCHAR(32) | 是 | 业务状态,取值来自状态机字典 | 普通 |
| crm_lead | Lead | remark | VARCHAR(512) | 否 | 业务备注,敏感内容按权限脱敏 | 普通 |
| crm_customer_family | CustomerFamily | id | BIGINT | 是 | 主键,雪花或号段生成,禁止复用 | 普通 |
| crm_customer_family | CustomerFamily | tenant_id | BIGINT | 是 | 集团/租户隔离字段,所有查询必须带租户上下文 | 普通 |
| crm_customer_family | CustomerFamily | org_id | BIGINT | 否 | 所属组织,集团级或公共配置为空 | 普通 |
| crm_customer_family | CustomerFamily | campus_id | BIGINT | 否 | 所属校区,跨校区或总部级数据为空 | 普通 |
| crm_customer_family | CustomerFamily | created_by | BIGINT | 是 | 创建人账号 ID | 普通 |
| crm_customer_family | CustomerFamily | created_at | DATETIME | 是 | 创建时间 | 普通 |
| crm_customer_family | CustomerFamily | updated_by | BIGINT | 否 | 最后更新人账号 ID | 普通 |
| crm_customer_family | CustomerFamily | updated_at | DATETIME | 否 | 最后更新时间 | 普通 |
| crm_customer_family | CustomerFamily | is_deleted | TINYINT | 是 | 是否已删除,0 未删除,1 已删除 | 普通 |
| crm_customer_family | CustomerFamily | deleted_at | DATETIME | 否 | 删除时间,未删除为空 | 普通 |
| crm_customer_family | CustomerFamily | deleted_by | BIGINT | 否 | 删除人账号 ID,未删除为空 | 普通 |
| crm_customer_family | CustomerFamily | version | INT | 是 | 乐观锁版本号,写操作必须校验 | 普通 |
| crm_customer_family | CustomerFamily | family_no | VARCHAR(64) | 是 | 家庭编号,唯一 | 普通 |
| crm_customer_family | CustomerFamily | primary_guardian_id | BIGINT | 否 | 主监护人 ID | 普通 |
| crm_customer_family | CustomerFamily | student_id | BIGINT | 否 | 主学员 ID | 普通 |
| crm_customer_family | CustomerFamily | owner_id | BIGINT | 否 | 客户归属人 | 普通 |
| crm_customer_family | CustomerFamily | risk_level | VARCHAR(32) | 否 | 风险等级 | 普通 |
| crm_customer_family | CustomerFamily | last_follow_at | DATETIME | 否 | 最近跟进时间 | 普通 |
| crm_customer_family | CustomerFamily | biz_status | VARCHAR(32) | 是 | 业务状态,取值来自状态机字典 | 普通 |
| crm_customer_family | CustomerFamily | remark | VARCHAR(512) | 否 | 业务备注,敏感内容按权限脱敏 | 普通 |
| stu_student | Student | id | BIGINT | 是 | 主键,雪花或号段生成,禁止复用 | 普通 |
| stu_student | Student | tenant_id | BIGINT | 是 | 集团/租户隔离字段,所有查询必须带租户上下文 | 普通 |
| stu_student | Student | org_id | BIGINT | 否 | 所属组织,集团级或公共配置为空 | 普通 |
| stu_student | Student | campus_id | BIGINT | 否 | 所属校区,跨校区或总部级数据为空 | 普通 |
| stu_student | Student | created_by | BIGINT | 是 | 创建人账号 ID | 普通 |
| stu_student | Student | created_at | DATETIME | 是 | 创建时间 | 普通 |
| stu_student | Student | updated_by | BIGINT | 否 | 最后更新人账号 ID | 普通 |
| stu_student | Student | updated_at | DATETIME | 否 | 最后更新时间 | 普通 |
| stu_student | Student | is_deleted | TINYINT | 是 | 是否已删除,0 未删除,1 已删除 | 普通 |
| stu_student | Student | deleted_at | DATETIME | 否 | 删除时间,未删除为空 | 普通 |
| stu_student | Student | deleted_by | BIGINT | 否 | 删除人账号 ID,未删除为空 | 普通 |
| stu_student | Student | version | INT | 是 | 乐观锁版本号,写操作必须校验 | 普通 |
| stu_student | Student | student_no | VARCHAR(64) | 是 | 学员编号,唯一 | 普通 |
| stu_student | Student | family_id | BIGINT | 否 | 家庭 ID | 普通 |
| stu_student | Student | student_name | VARCHAR(64) | 是 | 学员姓名 | 普通 |
| stu_student | Student | gender | VARCHAR(16) | 否 | 性别 | 普通 |
| stu_student | Student | birthday | DATE | 否 | 出生日期 | 普通 |
| stu_student | Student | grade | VARCHAR(32) | 否 | 年级 | 普通 |
| stu_student | Student | school_name | VARCHAR(128) | 否 | 学校名称 | 普通 |
| stu_student | Student | biz_status | VARCHAR(32) | 是 | 业务状态,取值来自状态机字典 | 普通 |
| stu_student | Student | remark | VARCHAR(512) | 否 | 业务备注,敏感内容按权限脱敏 | 普通 |
| live_public_conversion | PublicLiveConversion | id | BIGINT | 是 | 主键,雪花或号段生成,禁止复用 | 普通 |
| live_public_conversion | PublicLiveConversion | tenant_id | BIGINT | 是 | 集团/租户隔离字段,所有查询必须带租户上下文 | 普通 |
| live_public_conversion | PublicLiveConversion | org_id | BIGINT | 否 | 所属组织,集团级或公共配置为空 | 普通 |
| live_public_conversion | PublicLiveConversion | campus_id | BIGINT | 否 | 所属校区,跨校区或总部级数据为空 | 普通 |
| live_public_conversion | PublicLiveConversion | created_by | BIGINT | 是 | 创建人账号 ID | 普通 |
| live_public_conversion | PublicLiveConversion | created_at | DATETIME | 是 | 创建时间 | 普通 |
| live_public_conversion | PublicLiveConversion | updated_by | BIGINT | 否 | 最后更新人账号 ID | 普通 |
| live_public_conversion | PublicLiveConversion | updated_at | DATETIME | 否 | 最后更新时间 | 普通 |
| live_public_conversion | PublicLiveConversion | is_deleted | TINYINT | 是 | 是否已删除,0 未删除,1 已删除 | 普通 |
| live_public_conversion | PublicLiveConversion | deleted_at | DATETIME | 否 | 删除时间,未删除为空 | 普通 |
| live_public_conversion | PublicLiveConversion | deleted_by | BIGINT | 否 | 删除人账号 ID,未删除为空 | 普通 |
| live_public_conversion | PublicLiveConversion | version | INT | 是 | 乐观锁版本号,写操作必须校验 | 普通 |
| live_public_conversion | PublicLiveConversion | conversion_no | VARCHAR(64) | 是 | 转化编号,唯一 | 普通 |
| live_public_conversion | PublicLiveConversion | live_room_id | BIGINT | 是 | 直播间 ID | 普通 |
| live_public_conversion | PublicLiveConversion | visitor_id | VARCHAR(128) | 否 | 访客 ID | 普通 |
| live_public_conversion | PublicLiveConversion | lead_id | BIGINT | 否 | 生成线索 ID | 普通 |
| live_public_conversion | PublicLiveConversion | conversion_stage | VARCHAR(32) | 是 | 观看/留资/邀约/转化 | 普通 |
| live_public_conversion | PublicLiveConversion | conversion_payload | JSON | 否 | 转化明细 | 普通 |
| mob_teacher_todo | TeacherTodo | id | BIGINT | 是 | 主键,雪花或号段生成,禁止复用 | 普通 |
| mob_teacher_todo | TeacherTodo | tenant_id | BIGINT | 是 | 集团/租户隔离字段,所有查询必须带租户上下文 | 普通 |
| mob_teacher_todo | TeacherTodo | org_id | BIGINT | 否 | 所属组织,集团级或公共配置为空 | 普通 |
| mob_teacher_todo | TeacherTodo | campus_id | BIGINT | 否 | 所属校区,跨校区或总部级数据为空 | 普通 |
| mob_teacher_todo | TeacherTodo | created_by | BIGINT | 是 | 创建人账号 ID | 普通 |
| mob_teacher_todo | TeacherTodo | created_at | DATETIME | 是 | 创建时间 | 普通 |
| mob_teacher_todo | TeacherTodo | updated_by | BIGINT | 否 | 最后更新人账号 ID | 普通 |
| mob_teacher_todo | TeacherTodo | updated_at | DATETIME | 否 | 最后更新时间 | 普通 |
| mob_teacher_todo | TeacherTodo | is_deleted | TINYINT | 是 | 是否已删除,0 未删除,1 已删除 | 普通 |
| mob_teacher_todo | TeacherTodo | deleted_at | DATETIME | 否 | 删除时间,未删除为空 | 普通 |
| mob_teacher_todo | TeacherTodo | deleted_by | BIGINT | 否 | 删除人账号 ID,未删除为空 | 普通 |
| mob_teacher_todo | TeacherTodo | version | INT | 是 | 乐观锁版本号,写操作必须校验 | 普通 |
| mob_teacher_todo | TeacherTodo | todo_no | VARCHAR(64) | 是 | 待办编号,唯一 | 普通 |
| mob_teacher_todo | TeacherTodo | user_id | BIGINT | 是 | 接收人 ID | 普通 |
| mob_teacher_todo | TeacherTodo | todo_type | VARCHAR(64) | 是 | 签到/批改/审批/培训/直播/工资条/营销推广/线索跟进 | 普通 |
| mob_teacher_todo | TeacherTodo | biz_id | BIGINT | 是 | 业务 ID | 普通 |
| mob_teacher_todo | TeacherTodo | due_at | DATETIME | 否 | 截止时间 | 普通 |
| mob_teacher_todo | TeacherTodo | todo_status | VARCHAR(32) | 是 | 待处理/已处理/已过期 | 普通 |
JSON 字段结构与校验
| 表名 | 对象 | 字段 | 结构编码 | 结构定义 | 校验规则 | 示例 |
|---|---|---|---|---|---|---|
| mkt_channel | MarketingChannel | roi_rule | GENERIC | object | array | 必须符合字段说明中的业务结构;保存前进行 JSON Schema 校验并记录版本 | {"version":1,"items":[]} |
| mkt_campaign | MarketingCampaign | campus_scope | ORG_SCOPE | {scopeType:string, orgIds:number[], campusIds:number[], includeChildren:boolean} | 组织和校区必须在当前租户授权范围内 | {"scopeType":"CAMPUS","campusIds":[101,102],"includeChildren":false} |
| mkt_page_template | MarketingPageTemplate | template_schema | PAGE_SCHEMA | {components:[{type:string, props:object, sortNo:number}], theme:object, form:object, tracking:object} | 组件类型必须来自模板组件白名单;表单字段必须有唯一 fieldCode | {"components":[{"type":"banner","props":{"title":"开学季体验课"},"sortNo":1}],"form":{"fields":["guardianMobile"]}} |
| mkt_landing_page | CampaignLandingPage | page_schema | PAGE_SCHEMA | {components:[{type:string, props:object, sortNo:number}], theme:object, form:object, tracking:object} | 组件类型必须来自模板组件白名单;表单字段必须有唯一 fieldCode | {"components":[{"type":"banner","props":{"title":"开学季体验课"},"sortNo":1}],"form":{"fields":["guardianMobile"]}} |
| mkt_landing_page | CampaignLandingPage | tracking_config | TRACKING_CONFIG | {channelId:number, campaignId:number, qrCodeId?:number, utm:object, events:string[]} | 渠道、活动、事件编码必须存在;外链参数长度不超过 128 | {"channelId":12,"events":["view","submit"]} |
| mkt_live_qr_code | LiveQrCode | target_rule | TARGET_RULE | {ruleType:string, targetUrl:string, conditions:[{field:string, op:string, value:any}], versionNo:number} | 目标 URL 必须通过安全域名校验;版本号递增 | {"ruleType":"campus","targetUrl":"https://dinuo.cn/h5/a","versionNo":3} |
| mkt_live_qr_code | LiveQrCode | rate_limit_rule | RATE_LIMIT_RULE | {windowSeconds:number, maxCount:number, riskAction:string, whitelist?:string[]} | 频控窗口 1-86400 秒;风险动作取 PASS/BLOCK/CAPTCHA | {"windowSeconds":60,"maxCount":10,"riskAction":"BLOCK"} |
| mkt_form_submit | CampaignFormSubmit | form_data | FORM_DATA | {fieldCode:value, files?:number[], clientInfo?:object} | 必须包含表单模板定义的必填字段;手机号、姓名按敏感字段规则处理 | {"guardianMobile":"138****0000","studentName":"张同学"} |
| mkt_employee_promotion_asset | EmployeePromotionAsset | share_params | GENERIC | object | array | 必须符合字段说明中的业务结构;保存前进行 JSON Schema 校验并记录版本 | {"version":1,"items":[]} |
| mkt_employee_campaign_stat | EmployeeCampaignStat | roi_snapshot | AUDIT_SNAPSHOT | {before?:object, after?:object, changedFields:string[], maskPolicy:string} | 敏感字段必须按脱敏策略写入,不允许存储明文密码或密钥 | {"changedFields":["owner_id"],"maskPolicy":"MOBILE_MASK"} |
状态/枚举标准字典
| 表名 | 对象 | 字段 | 枚举编码 | 取值 | 终态/流转规则 | 字段说明 |
|---|---|---|---|---|---|---|
| mkt_channel | MarketingChannel | tenant_id | TENANT_ID | 集团、租户隔离字段 | 非终态,可按状态机或字典规则流转 | 集团/租户隔离字段,所有查询必须带租户上下文 |
| mkt_channel | MarketingChannel | is_deleted | BOOL_DELETED | 0 未删除、1 已删除 | 非终态,可按状态机或字典规则流转 | 是否已删除,0 未删除,1 已删除 |
| mkt_channel | MarketingChannel | channel_type | CHANNEL_TYPE | 线上、线下、合作、自然流量 | 非终态,可按状态机或字典规则流转 | 线上/线下/合作/自然流量 |
| mkt_campaign | MarketingCampaign | tenant_id | TENANT_ID | 集团、租户隔离字段 | 非终态,可按状态机或字典规则流转 | 集团/租户隔离字段,所有查询必须带租户上下文 |
| mkt_campaign | MarketingCampaign | is_deleted | BOOL_DELETED | 0 未删除、1 已删除 | 非终态,可按状态机或字典规则流转 | 是否已删除,0 未删除,1 已删除 |
| mkt_campaign | MarketingCampaign | campus_scope | CAMPUS_SCOPE | ALL_CAMPUS 全部校区、REGION_CAMPUS 区域校区、SELECTED_CAMPUS 指定校区、CURRENT_CAMPUS 当前校区、NONE 不限定校区 | 非终态,可按状态机或字典规则流转 | 适用校区范围 |
| mkt_campaign | MarketingCampaign | biz_status | BIZ_STATUS | DRAFT 草稿、SUBMITTED 已提交、PROCESSING 处理中、ACTIVE 生效中、SUSPENDED 已暂停、CLOSED 已关闭、CANCELLED 已取消 | 包含终态,终态禁止直接编辑,需走变更/红冲/撤回流程 | 业务状态,取值来自状态机字典 |
| mkt_page_template | MarketingPageTemplate | tenant_id | TENANT_ID | 集团、租户隔离字段 | 非终态,可按状态机或字典规则流转 | 集团/租户隔离字段,所有查询必须带租户上下文 |
| mkt_page_template | MarketingPageTemplate | is_deleted | BOOL_DELETED | 0 未删除、1 已删除 | 非终态,可按状态机或字典规则流转 | 是否已删除,0 未删除,1 已删除 |
| mkt_page_template | MarketingPageTemplate | template_type | TEMPLATE_TYPE | 节气、传统节日、公开课、招生活动、自建 | 非终态,可按状态机或字典规则流转 | 节气/传统节日/公开课/招生活动/自建 |
| mkt_page_template | MarketingPageTemplate | festival_type | FESTIVAL_TYPE | SOLAR_TERM_24 二十四节气、TRADITIONAL_FESTIVAL 传统节日、ADMISSION_SEASON 招生季、PUBLIC_CLASS 公开课、SCHOOL_ANNIVERSARY 校庆、CUSTOM_THEME 自定义主题 | 非终态,可按状态机或字典规则流转 | 节日或节气分类 |
| mkt_page_template | MarketingPageTemplate | review_status | REVIEW_STATUS | DRAFT 草稿、PENDING 审核中、APPROVED 已通过、REJECTED 已驳回、DISABLED 已停用 | 包含终态,终态禁止直接编辑,需走变更/红冲/撤回流程 | 草稿/审核中/已通过/已驳回 |
| mkt_landing_page | CampaignLandingPage | tenant_id | TENANT_ID | 集团、租户隔离字段 | 非终态,可按状态机或字典规则流转 | 集团/租户隔离字段,所有查询必须带租户上下文 |
| mkt_landing_page | CampaignLandingPage | is_deleted | BOOL_DELETED | 0 未删除、1 已删除 | 非终态,可按状态机或字典规则流转 | 是否已删除,0 未删除,1 已删除 |
| mkt_landing_page | CampaignLandingPage | publish_status | PUBLISH_STATUS | DRAFT 草稿、PUBLISHING 发布中、PUBLISHED 已发布、FAILED 发布失败、OFFLINE 已下线、ARCHIVED 已归档 | 包含终态,终态禁止直接编辑,需走变更/红冲/撤回流程 | 草稿/已发布/已下线 |
| mkt_live_qr_code | LiveQrCode | tenant_id | TENANT_ID | 集团、租户隔离字段 | 非终态,可按状态机或字典规则流转 | 集团/租户隔离字段,所有查询必须带租户上下文 |
| mkt_live_qr_code | LiveQrCode | is_deleted | BOOL_DELETED | 0 未删除、1 已删除 | 非终态,可按状态机或字典规则流转 | 是否已删除,0 未删除,1 已删除 |
| mkt_live_qr_code | LiveQrCode | biz_type | BIZ_TYPE | LEAD 线索、CUSTOMER 客户、CONTRACT 合同、ORDER 订单、PAYMENT 收款、REFUND 退费、LESSON 课次、CONSUMPTION 课消、EXPENSE 报销、VOUCHER 凭证、INVOICE 发票、LIVE 直播、PATROL 巡课、DEVICE 设备、MATERIAL 物料、PAYROLL 工资 | 非终态,可按状态机或字典规则流转 | 活动页/资源/课程/直播/表单 |
| mkt_live_qr_code | LiveQrCode | enabled | ENABLED_STATUS | 0 停用、1 启用 | 非终态,可按状态机或字典规则流转 | 是否启用 |
| mkt_scan_record | ScanRecord | tenant_id | TENANT_ID | 集团、租户隔离字段 | 非终态,可按状态机或字典规则流转 | 集团/租户隔离字段,所有查询必须带租户上下文 |
| mkt_scan_record | ScanRecord | is_deleted | BOOL_DELETED | 0 未删除、1 已删除 | 非终态,可按状态机或字典规则流转 | 是否已删除,0 未删除,1 已删除 |
| mkt_form_submit | CampaignFormSubmit | tenant_id | TENANT_ID | 集团、租户隔离字段 | 非终态,可按状态机或字典规则流转 | 集团/租户隔离字段,所有查询必须带租户上下文 |
| mkt_form_submit | CampaignFormSubmit | is_deleted | BOOL_DELETED | 0 未删除、1 已删除 | 非终态,可按状态机或字典规则流转 | 是否已删除,0 未删除,1 已删除 |
| mkt_form_submit | CampaignFormSubmit | submit_status | SUBMIT_STATUS | 成功、失败、重复、风控拦截 | 包含终态,终态禁止直接编辑,需走变更/红冲/撤回流程 | 成功/失败/重复/风控拦截 |
| mkt_employee_promotion_asset | EmployeePromotionAsset | tenant_id | TENANT_ID | 集团、租户隔离字段 | 非终态,可按状态机或字典规则流转 | 集团/租户隔离字段,所有查询必须带租户上下文 |
| mkt_employee_promotion_asset | EmployeePromotionAsset | is_deleted | BOOL_DELETED | 0 未删除、1 已删除 | 非终态,可按状态机或字典规则流转 | 是否已删除,0 未删除,1 已删除 |
| mkt_employee_promotion_asset | EmployeePromotionAsset | share_params | SHARE_PARAMS | campaignId、pageId、campusId、channelId、employeeId、shareScene 等归因参数 | 非终态,可按状态机或字典规则流转 | campaignId/pageId/campusId/channelId/employeeId/shareScene 等归因参数 |
| mkt_employee_promotion_asset | EmployeePromotionAsset | asset_status | ASSET_STATUS | 待生成、已生成、已停用、已失效 | 包含终态,终态禁止直接编辑,需走变更/红冲/撤回流程 | 待生成/已生成/已停用/已失效 |
| mkt_employee_share_record | EmployeeShareRecord | tenant_id | TENANT_ID | 集团、租户隔离字段 | 非终态,可按状态机或字典规则流转 | 集团/租户隔离字段,所有查询必须带租户上下文 |
| mkt_employee_share_record | EmployeeShareRecord | is_deleted | BOOL_DELETED | 0 未删除、1 已删除 | 非终态,可按状态机或字典规则流转 | 是否已删除,0 未删除,1 已删除 |
| mkt_employee_share_record | EmployeeShareRecord | share_scene | SHARE_SCENE | 微信好友、朋友圈、企微、二维码海报、复制链接、线下物料 | 非终态,可按状态机或字典规则流转 | 微信好友/朋友圈/企微/二维码海报/复制链接/线下物料 |
| mkt_employee_share_record | EmployeeShareRecord | conversion_stage | CONVERSION_STAGE | 访问、留资、预约、到访、试听、签约、流失 | 非终态,可按状态机或字典规则流转 | 访问/留资/预约/到访/试听/签约/流失 |
| mkt_employee_campaign_stat | EmployeeCampaignStat | tenant_id | TENANT_ID | 集团、租户隔离字段 | 非终态,可按状态机或字典规则流转 | 集团/租户隔离字段,所有查询必须带租户上下文 |
| mkt_employee_campaign_stat | EmployeeCampaignStat | is_deleted | BOOL_DELETED | 0 未删除、1 已删除 | 非终态,可按状态机或字典规则流转 | 是否已删除,0 未删除,1 已删除 |
敏感字段与数据安全策略
| 来源 | 表名 | 对象 | 字段 | 数据级别 | 脱敏/返回策略 | 明文查看条件 | 导出策略 | 审计要求 | 端侧展示规则 |
|---|---|---|---|---|---|---|---|---|---|
| 本模块对象 | mkt_campaign | MarketingCampaign | remark | 普通 | BIZ_FIELD_MASK | 按字段权限、数据范围和业务角色展示;明文查看按敏感字段审批规则执行 | 导出时按数据级别触发审批、水印、下载有效期和日志 | 查看、修改、删除、导出、下载和审批均记录操作审计 | 默认遵循总部、区域、校区、团队、本人数据范围和端侧最小可见原则 |
| 本模块对象 | mkt_scan_record | ScanRecord | openid | 敏感 | BIZ_FIELD_MASK | 按字段权限、数据范围和业务角色展示;明文查看按敏感字段审批规则执行 | 导出时按数据级别触发审批、水印、下载有效期和日志 | 查看、修改、删除、导出、下载和审批均记录操作审计 | 默认遵循总部、区域、校区、团队、本人数据范围和端侧最小可见原则 |
| 本模块对象 | mkt_form_submit | CampaignFormSubmit | guardian_mobile | 敏感 | MOBILE_MASK | 默认展示 138****0000;明文查看需字段权限或敏感字段查看审批 | 导出手机号必须触发导出审批、下载水印和有效期控制 | 明文查看、复制、导出和批量下载均写入 SensitiveAccessLog | PC 管理端按字段权限展示;移动端仅展示本人授权范围内脱敏信息 |
| 引用对象 | sys_user | User/Employee | mobile | 敏感 | MOBILE_MASK | 默认展示 138****0000;明文查看需字段权限或敏感字段查看审批 | 导出手机号必须触发导出审批、下载水印和有效期控制 | 明文查看、复制、导出和批量下载均写入 SensitiveAccessLog | PC 管理端按字段权限展示;移动端仅展示本人授权范围内脱敏信息 |
| 引用对象 | sys_user | User/Employee | password_hash | 高敏 | NEVER_RETURN | 禁止接口返回明文;仅密钥中心/鉴权服务按服务身份读取密钥引用 | 禁止导出;配置导出只允许导出脱敏引用和启停状态 | 配置新增、修改、启停、轮换和失败读取均记录安全审计 | 前端只展示已配置/未配置、到期时间和连通性状态,不展示密钥值 |
| 引用对象 | int_integration_log | IntegrationLog | request_payload | 敏感 | PAYLOAD_DESENSITIZE | 接口报文、快照和文件地址默认脱敏;排障查看需运维/安全授权 | 导出日志或报文时自动清理手机号、证件号、密钥、票据和人脸字段 | 查看报文、下载附件、失败重放和人工补偿均记录审计 | 业务端展示摘要和状态,完整报文仅运维/安全后台查看 |
| 引用对象 | int_integration_log | IntegrationLog | response_payload | 普通 | PAYLOAD_DESENSITIZE | 接口报文、快照和文件地址默认脱敏;排障查看需运维/安全授权 | 导出日志或报文时自动清理手机号、证件号、密钥、票据和人脸字段 | 查看报文、下载附件、失败重放和人工补偿均记录审计 | 业务端展示摘要和状态,完整报文仅运维/安全后台查看 |
| 引用对象 | sec_sensitive_field_policy | SensitiveFieldPolicy | mask_rule | 普通 | BIZ_FIELD_MASK | 按字段权限、数据范围和业务角色展示;明文查看按敏感字段审批规则执行 | 导出时按数据级别触发审批、水印、下载有效期和日志 | 查看、修改、删除、导出、下载和审批均记录操作审计 | 默认遵循总部、区域、校区、团队、本人数据范围和端侧最小可见原则 |
| 引用对象 | crm_lead | Lead | guardian_mobile | 敏感 | MOBILE_MASK | 默认展示 138****0000;明文查看需字段权限或敏感字段查看审批 | 导出手机号必须触发导出审批、下载水印和有效期控制 | 明文查看、复制、导出和批量下载均写入 SensitiveAccessLog | PC 管理端按字段权限展示;移动端仅展示本人授权范围内脱敏信息 |
| 引用对象 | crm_lead | Lead | remark | 普通 | BIZ_FIELD_MASK | 按字段权限、数据范围和业务角色展示;明文查看按敏感字段审批规则执行 | 导出时按数据级别触发审批、水印、下载有效期和日志 | 查看、修改、删除、导出、下载和审批均记录操作审计 | 默认遵循总部、区域、校区、团队、本人数据范围和端侧最小可见原则 |
| 引用对象 | crm_customer_family | CustomerFamily | remark | 普通 | BIZ_FIELD_MASK | 按字段权限、数据范围和业务角色展示;明文查看按敏感字段审批规则执行 | 导出时按数据级别触发审批、水印、下载有效期和日志 | 查看、修改、删除、导出、下载和审批均记录操作审计 | 默认遵循总部、区域、校区、团队、本人数据范围和端侧最小可见原则 |
| 引用对象 | stu_student | Student | remark | 普通 | BIZ_FIELD_MASK | 按字段权限、数据范围和业务角色展示;明文查看按敏感字段审批规则执行 | 导出时按数据级别触发审批、水印、下载有效期和日志 | 查看、修改、删除、导出、下载和审批均记录操作审计 | 默认遵循总部、区域、校区、团队、本人数据范围和端侧最小可见原则 |
| 引用对象 | live_public_conversion | PublicLiveConversion | conversion_payload | 普通 | PAYLOAD_DESENSITIZE | 接口报文、快照和文件地址默认脱敏;排障查看需运维/安全授权 | 导出日志或报文时自动清理手机号、证件号、密钥、票据和人脸字段 | 查看报文、下载附件、失败重放和人工补偿均记录审计 | 业务端展示摘要和状态,完整报文仅运维/安全后台查看 |
| 引用对象 | mob_teacher_todo | TeacherTodo | todo_type | 普通 | PAYROLL_MASK | 默认仅本人和授权人力/财务可见;社保、公积金字段按后台开关展示 | 工资条批量导出必须走高敏审批并限制下载次数 | 发布、撤回、重发、查看、确认、异议、导出全链路审计 | 教师/员工端仅查看本人电子工资条;PC 按岗位与审批展示 |
核心数据表完整字段
| 表名 | 对象 | 字段 | 类型 | 必填 | 规则 | 数据级别 |
|---|---|---|---|---|---|---|
| mkt_channel | MarketingChannel | id | BIGINT | 是 | 主键,雪花或号段生成,禁止复用 | 普通 |
| mkt_channel | MarketingChannel | tenant_id | BIGINT | 是 | 集团/租户隔离字段,所有查询必须带租户上下文 | 普通 |
| mkt_channel | MarketingChannel | org_id | BIGINT | 否 | 所属组织,集团级或公共配置为空 | 普通 |
| mkt_channel | MarketingChannel | campus_id | BIGINT | 否 | 所属校区,跨校区或总部级数据为空 | 普通 |
| mkt_channel | MarketingChannel | created_by | BIGINT | 是 | 创建人账号 ID | 普通 |
| mkt_channel | MarketingChannel | created_at | DATETIME | 是 | 创建时间 | 普通 |
| mkt_channel | MarketingChannel | updated_by | BIGINT | 否 | 最后更新人账号 ID | 普通 |
| mkt_channel | MarketingChannel | updated_at | DATETIME | 否 | 最后更新时间 | 普通 |
| mkt_channel | MarketingChannel | is_deleted | TINYINT | 是 | 是否已删除,0 未删除,1 已删除 | 普通 |
| mkt_channel | MarketingChannel | deleted_at | DATETIME | 否 | 删除时间,未删除为空 | 普通 |
| mkt_channel | MarketingChannel | deleted_by | BIGINT | 否 | 删除人账号 ID,未删除为空 | 普通 |
| mkt_channel | MarketingChannel | version | INT | 是 | 乐观锁版本号,写操作必须校验 | 普通 |
| mkt_channel | MarketingChannel | channel_code | VARCHAR(64) | 是 | 渠道编码,唯一 | 普通 |
| mkt_channel | MarketingChannel | channel_name | VARCHAR(128) | 是 | 渠道名称 | 普通 |
| mkt_channel | MarketingChannel | channel_type | VARCHAR(32) | 是 | 线上/线下/合作/自然流量 | 普通 |
| mkt_channel | MarketingChannel | owner_id | BIGINT | 否 | 渠道负责人 | 普通 |
| mkt_channel | MarketingChannel | budget_amount | DECIMAL(18,2) | 否 | 预算金额 | 普通 |
| mkt_channel | MarketingChannel | roi_rule | JSON | 否 | ROI 统计规则 | 普通 |
| mkt_campaign | MarketingCampaign | id | BIGINT | 是 | 主键,雪花或号段生成,禁止复用 | 普通 |
| mkt_campaign | MarketingCampaign | tenant_id | BIGINT | 是 | 集团/租户隔离字段,所有查询必须带租户上下文 | 普通 |
| mkt_campaign | MarketingCampaign | org_id | BIGINT | 否 | 所属组织,集团级或公共配置为空 | 普通 |
| mkt_campaign | MarketingCampaign | campus_id | BIGINT | 否 | 所属校区,跨校区或总部级数据为空 | 普通 |
| mkt_campaign | MarketingCampaign | created_by | BIGINT | 是 | 创建人账号 ID | 普通 |
| mkt_campaign | MarketingCampaign | created_at | DATETIME | 是 | 创建时间 | 普通 |
| mkt_campaign | MarketingCampaign | updated_by | BIGINT | 否 | 最后更新人账号 ID | 普通 |
| mkt_campaign | MarketingCampaign | updated_at | DATETIME | 否 | 最后更新时间 | 普通 |
| mkt_campaign | MarketingCampaign | is_deleted | TINYINT | 是 | 是否已删除,0 未删除,1 已删除 | 普通 |
| mkt_campaign | MarketingCampaign | deleted_at | DATETIME | 否 | 删除时间,未删除为空 | 普通 |
| mkt_campaign | MarketingCampaign | deleted_by | BIGINT | 否 | 删除人账号 ID,未删除为空 | 普通 |
| mkt_campaign | MarketingCampaign | version | INT | 是 | 乐观锁版本号,写操作必须校验 | 普通 |
| mkt_campaign | MarketingCampaign | campaign_code | VARCHAR(64) | 是 | 活动编码,唯一 | 普通 |
| mkt_campaign | MarketingCampaign | campaign_name | VARCHAR(128) | 是 | 活动名称 | 普通 |
| mkt_campaign | MarketingCampaign | channel_id | BIGINT | 否 | 所属渠道 | 普通 |
| mkt_campaign | MarketingCampaign | campus_scope | JSON | 是 | 适用校区范围 | 普通 |
| mkt_campaign | MarketingCampaign | start_at | DATETIME | 是 | 开始时间 | 普通 |
| mkt_campaign | MarketingCampaign | end_at | DATETIME | 是 | 结束时间 | 普通 |
| mkt_campaign | MarketingCampaign | biz_status | VARCHAR(32) | 是 | 业务状态,取值来自状态机字典 | 普通 |
| mkt_campaign | MarketingCampaign | remark | VARCHAR(512) | 否 | 业务备注,敏感内容按权限脱敏 | 普通 |
| mkt_page_template | MarketingPageTemplate | id | BIGINT | 是 | 主键,雪花或号段生成,禁止复用 | 普通 |
| mkt_page_template | MarketingPageTemplate | tenant_id | BIGINT | 是 | 集团/租户隔离字段,所有查询必须带租户上下文 | 普通 |
| mkt_page_template | MarketingPageTemplate | org_id | BIGINT | 否 | 所属组织,集团级或公共配置为空 | 普通 |
| mkt_page_template | MarketingPageTemplate | campus_id | BIGINT | 否 | 所属校区,跨校区或总部级数据为空 | 普通 |
| mkt_page_template | MarketingPageTemplate | created_by | BIGINT | 是 | 创建人账号 ID | 普通 |
| mkt_page_template | MarketingPageTemplate | created_at | DATETIME | 是 | 创建时间 | 普通 |
| mkt_page_template | MarketingPageTemplate | updated_by | BIGINT | 否 | 最后更新人账号 ID | 普通 |
| mkt_page_template | MarketingPageTemplate | updated_at | DATETIME | 否 | 最后更新时间 | 普通 |
| mkt_page_template | MarketingPageTemplate | is_deleted | TINYINT | 是 | 是否已删除,0 未删除,1 已删除 | 普通 |
| mkt_page_template | MarketingPageTemplate | deleted_at | DATETIME | 否 | 删除时间,未删除为空 | 普通 |
| mkt_page_template | MarketingPageTemplate | deleted_by | BIGINT | 否 | 删除人账号 ID,未删除为空 | 普通 |
| mkt_page_template | MarketingPageTemplate | version | INT | 是 | 乐观锁版本号,写操作必须校验 | 普通 |
| mkt_page_template | MarketingPageTemplate | template_code | VARCHAR(64) | 是 | 模板编码,唯一 | 普通 |
| mkt_page_template | MarketingPageTemplate | template_name | VARCHAR(128) | 是 | 模板名称 | 普通 |
| mkt_page_template | MarketingPageTemplate | template_type | VARCHAR(32) | 是 | 节气/传统节日/公开课/招生活动/自建 | 普通 |
| mkt_page_template | MarketingPageTemplate | festival_type | VARCHAR(32) | 否 | 节日或节气分类 | 普通 |
| mkt_page_template | MarketingPageTemplate | template_schema | JSON | 是 | 页面结构、组件和默认文案 | 普通 |
| mkt_page_template | MarketingPageTemplate | review_status | VARCHAR(32) | 是 | 草稿/审核中/已通过/已驳回 | 普通 |
| mkt_page_template | MarketingPageTemplate | version_no | INT | 是 | 模板版本 | 普通 |
| mkt_landing_page | CampaignLandingPage | id | BIGINT | 是 | 主键,雪花或号段生成,禁止复用 | 普通 |
| mkt_landing_page | CampaignLandingPage | tenant_id | BIGINT | 是 | 集团/租户隔离字段,所有查询必须带租户上下文 | 普通 |
| mkt_landing_page | CampaignLandingPage | org_id | BIGINT | 否 | 所属组织,集团级或公共配置为空 | 普通 |
| mkt_landing_page | CampaignLandingPage | campus_id | BIGINT | 否 | 所属校区,跨校区或总部级数据为空 | 普通 |
| mkt_landing_page | CampaignLandingPage | created_by | BIGINT | 是 | 创建人账号 ID | 普通 |
| mkt_landing_page | CampaignLandingPage | created_at | DATETIME | 是 | 创建时间 | 普通 |
| mkt_landing_page | CampaignLandingPage | updated_by | BIGINT | 否 | 最后更新人账号 ID | 普通 |
| mkt_landing_page | CampaignLandingPage | updated_at | DATETIME | 否 | 最后更新时间 | 普通 |
| mkt_landing_page | CampaignLandingPage | is_deleted | TINYINT | 是 | 是否已删除,0 未删除,1 已删除 | 普通 |
| mkt_landing_page | CampaignLandingPage | deleted_at | DATETIME | 否 | 删除时间,未删除为空 | 普通 |
| mkt_landing_page | CampaignLandingPage | deleted_by | BIGINT | 否 | 删除人账号 ID,未删除为空 | 普通 |
| mkt_landing_page | CampaignLandingPage | version | INT | 是 | 乐观锁版本号,写操作必须校验 | 普通 |
| mkt_landing_page | CampaignLandingPage | page_code | VARCHAR(64) | 是 | 页面编码,唯一 | 普通 |
| mkt_landing_page | CampaignLandingPage | campaign_id | BIGINT | 是 | 关联营销活动 | 普通 |
| mkt_landing_page | CampaignLandingPage | template_id | BIGINT | 否 | 来源模板 ID | 普通 |
| mkt_landing_page | CampaignLandingPage | page_schema | JSON | 是 | 页面组件配置 | 普通 |
| mkt_landing_page | CampaignLandingPage | publish_status | VARCHAR(32) | 是 | 草稿/已发布/已下线 | 普通 |
| mkt_landing_page | CampaignLandingPage | published_url | VARCHAR(512) | 否 | 发布访问地址 | 普通 |
| mkt_landing_page | CampaignLandingPage | tracking_config | JSON | 否 | 埋点和转化归因配置 | 普通 |
| mkt_live_qr_code | LiveQrCode | id | BIGINT | 是 | 主键,雪花或号段生成,禁止复用 | 普通 |
| mkt_live_qr_code | LiveQrCode | tenant_id | BIGINT | 是 | 集团/租户隔离字段,所有查询必须带租户上下文 | 普通 |
| mkt_live_qr_code | LiveQrCode | org_id | BIGINT | 否 | 所属组织,集团级或公共配置为空 | 普通 |
| mkt_live_qr_code | LiveQrCode | campus_id | BIGINT | 否 | 所属校区,跨校区或总部级数据为空 | 普通 |
| mkt_live_qr_code | LiveQrCode | created_by | BIGINT | 是 | 创建人账号 ID | 普通 |
| mkt_live_qr_code | LiveQrCode | created_at | DATETIME | 是 | 创建时间 | 普通 |
| mkt_live_qr_code | LiveQrCode | updated_by | BIGINT | 否 | 最后更新人账号 ID | 普通 |
| mkt_live_qr_code | LiveQrCode | updated_at | DATETIME | 否 | 最后更新时间 | 普通 |
| mkt_live_qr_code | LiveQrCode | is_deleted | TINYINT | 是 | 是否已删除,0 未删除,1 已删除 | 普通 |
| mkt_live_qr_code | LiveQrCode | deleted_at | DATETIME | 否 | 删除时间,未删除为空 | 普通 |
| mkt_live_qr_code | LiveQrCode | deleted_by | BIGINT | 否 | 删除人账号 ID,未删除为空 | 普通 |
| mkt_live_qr_code | LiveQrCode | version | INT | 是 | 乐观锁版本号,写操作必须校验 | 普通 |
| mkt_live_qr_code | LiveQrCode | qr_code | VARCHAR(64) | 是 | 活码编码,唯一 | 普通 |
| mkt_live_qr_code | LiveQrCode | biz_type | VARCHAR(64) | 是 | 活动页/资源/课程/直播/表单 | 普通 |
| mkt_live_qr_code | LiveQrCode | target_rule | JSON | 是 | 动态目标规则 | 普通 |
| mkt_live_qr_code | LiveQrCode | fallback_url | VARCHAR(512) | 否 | 失效或异常兜底地址 | 普通 |
| mkt_live_qr_code | LiveQrCode | rate_limit_rule | JSON | 否 | 防刷规则 | 普通 |
| mkt_live_qr_code | LiveQrCode | enabled | TINYINT | 是 | 是否启用 | 普通 |
| mkt_scan_record | ScanRecord | id | BIGINT | 是 | 主键,雪花或号段生成,禁止复用 | 普通 |
| mkt_scan_record | ScanRecord | tenant_id | BIGINT | 是 | 集团/租户隔离字段,所有查询必须带租户上下文 | 普通 |
| mkt_scan_record | ScanRecord | org_id | BIGINT | 否 | 所属组织,集团级或公共配置为空 | 普通 |
| mkt_scan_record | ScanRecord | campus_id | BIGINT | 否 | 所属校区,跨校区或总部级数据为空 | 普通 |
| mkt_scan_record | ScanRecord | created_by | BIGINT | 是 | 创建人账号 ID | 普通 |
| mkt_scan_record | ScanRecord | created_at | DATETIME | 是 | 创建时间 | 普通 |
| mkt_scan_record | ScanRecord | updated_by | BIGINT | 否 | 最后更新人账号 ID | 普通 |
| mkt_scan_record | ScanRecord | updated_at | DATETIME | 否 | 最后更新时间 | 普通 |
| mkt_scan_record | ScanRecord | is_deleted | TINYINT | 是 | 是否已删除,0 未删除,1 已删除 | 普通 |
| mkt_scan_record | ScanRecord | deleted_at | DATETIME | 否 | 删除时间,未删除为空 | 普通 |
| mkt_scan_record | ScanRecord | deleted_by | BIGINT | 否 | 删除人账号 ID,未删除为空 | 普通 |
| mkt_scan_record | ScanRecord | version | INT | 是 | 乐观锁版本号,写操作必须校验 | 普通 |
| mkt_scan_record | ScanRecord | qr_code_id | BIGINT | 是 | 活码 ID | 普通 |
| mkt_scan_record | ScanRecord | visitor_id | VARCHAR(128) | 否 | 匿名访客 ID | 普通 |
| mkt_scan_record | ScanRecord | openid | VARCHAR(128) | 否 | 微信 OpenID,敏感 | 敏感 |
| mkt_scan_record | ScanRecord | scan_at | DATETIME | 是 | 扫码时间 | 普通 |
| mkt_scan_record | ScanRecord | resolved_target | VARCHAR(512) | 是 | 实际解析目标 | 普通 |
| mkt_scan_record | ScanRecord | risk_result | VARCHAR(32) | 否 | 防刷风险结果 | 普通 |
| mkt_form_submit | CampaignFormSubmit | id | BIGINT | 是 | 主键,雪花或号段生成,禁止复用 | 普通 |
| mkt_form_submit | CampaignFormSubmit | tenant_id | BIGINT | 是 | 集团/租户隔离字段,所有查询必须带租户上下文 | 普通 |
| mkt_form_submit | CampaignFormSubmit | org_id | BIGINT | 否 | 所属组织,集团级或公共配置为空 | 普通 |
| mkt_form_submit | CampaignFormSubmit | campus_id | BIGINT | 否 | 所属校区,跨校区或总部级数据为空 | 普通 |
| mkt_form_submit | CampaignFormSubmit | created_by | BIGINT | 是 | 创建人账号 ID | 普通 |
| mkt_form_submit | CampaignFormSubmit | created_at | DATETIME | 是 | 创建时间 | 普通 |
| mkt_form_submit | CampaignFormSubmit | updated_by | BIGINT | 否 | 最后更新人账号 ID | 普通 |
| mkt_form_submit | CampaignFormSubmit | updated_at | DATETIME | 否 | 最后更新时间 | 普通 |
| mkt_form_submit | CampaignFormSubmit | is_deleted | TINYINT | 是 | 是否已删除,0 未删除,1 已删除 | 普通 |
| mkt_form_submit | CampaignFormSubmit | deleted_at | DATETIME | 否 | 删除时间,未删除为空 | 普通 |
| mkt_form_submit | CampaignFormSubmit | deleted_by | BIGINT | 否 | 删除人账号 ID,未删除为空 | 普通 |
| mkt_form_submit | CampaignFormSubmit | version | INT | 是 | 乐观锁版本号,写操作必须校验 | 普通 |
| mkt_form_submit | CampaignFormSubmit | submit_no | VARCHAR(64) | 是 | 提交编号,唯一 | 普通 |
| mkt_form_submit | CampaignFormSubmit | page_id | BIGINT | 是 | 页面 ID | 普通 |
| mkt_form_submit | CampaignFormSubmit | guardian_mobile | VARCHAR(32) | 是 | 家长手机号,敏感 | 敏感 |
| mkt_form_submit | CampaignFormSubmit | student_name | VARCHAR(64) | 否 | 学员姓名 | 普通 |
| mkt_form_submit | CampaignFormSubmit | form_data | JSON | 是 | 表单完整提交数据 | 普通 |
| mkt_form_submit | CampaignFormSubmit | lead_id | BIGINT | 否 | 转化生成线索 ID | 普通 |
| mkt_form_submit | CampaignFormSubmit | submit_status | VARCHAR(32) | 是 | 成功/失败/重复/风控拦截 | 普通 |
| mkt_employee_promotion_asset | EmployeePromotionAsset | id | BIGINT | 是 | 主键,雪花或号段生成,禁止复用 | 普通 |
| mkt_employee_promotion_asset | EmployeePromotionAsset | tenant_id | BIGINT | 是 | 集团/租户隔离字段,所有查询必须带租户上下文 | 普通 |
| mkt_employee_promotion_asset | EmployeePromotionAsset | org_id | BIGINT | 否 | 所属组织,集团级或公共配置为空 | 普通 |
| mkt_employee_promotion_asset | EmployeePromotionAsset | campus_id | BIGINT | 否 | 所属校区,跨校区或总部级数据为空 | 普通 |
| mkt_employee_promotion_asset | EmployeePromotionAsset | created_by | BIGINT | 是 | 创建人账号 ID | 普通 |
| mkt_employee_promotion_asset | EmployeePromotionAsset | created_at | DATETIME | 是 | 创建时间 | 普通 |
| mkt_employee_promotion_asset | EmployeePromotionAsset | updated_by | BIGINT | 否 | 最后更新人账号 ID | 普通 |
| mkt_employee_promotion_asset | EmployeePromotionAsset | updated_at | DATETIME | 否 | 最后更新时间 | 普通 |
| mkt_employee_promotion_asset | EmployeePromotionAsset | is_deleted | TINYINT | 是 | 是否已删除,0 未删除,1 已删除 | 普通 |
| mkt_employee_promotion_asset | EmployeePromotionAsset | deleted_at | DATETIME | 否 | 删除时间,未删除为空 | 普通 |
| mkt_employee_promotion_asset | EmployeePromotionAsset | deleted_by | BIGINT | 否 | 删除人账号 ID,未删除为空 | 普通 |
| mkt_employee_promotion_asset | EmployeePromotionAsset | version | INT | 是 | 乐观锁版本号,写操作必须校验 | 普通 |
| mkt_employee_promotion_asset | EmployeePromotionAsset | asset_no | VARCHAR(64) | 是 | 推广资产编号,唯一 | 普通 |
| mkt_employee_promotion_asset | EmployeePromotionAsset | campaign_id | BIGINT | 是 | 关联营销活动 | 普通 |
| mkt_employee_promotion_asset | EmployeePromotionAsset | landing_page_id | BIGINT | 是 | 关联活动落地页 | 普通 |
| mkt_employee_promotion_asset | EmployeePromotionAsset | employee_id | BIGINT | 是 | 推广员工 ID | 普通 |
| mkt_employee_promotion_asset | EmployeePromotionAsset | campus_id_ref | BIGINT | 否 | 员工推广归属校区 | 普通 |
| mkt_employee_promotion_asset | EmployeePromotionAsset | qr_code_id | BIGINT | 否 | 关联活码 ID | 普通 |
| mkt_employee_promotion_asset | EmployeePromotionAsset | short_url | VARCHAR(512) | 否 | 员工专属短链 | 普通 |
| mkt_employee_promotion_asset | EmployeePromotionAsset | poster_file_id | BIGINT | 否 | 员工专属分享海报文件 | 普通 |
| mkt_employee_promotion_asset | EmployeePromotionAsset | share_params | JSON | 是 | campaignId/pageId/campusId/channelId/employeeId/shareScene 等归因参数 | 普通 |
| mkt_employee_promotion_asset | EmployeePromotionAsset | asset_status | VARCHAR(32) | 是 | 待生成/已生成/已停用/已失效 | 普通 |
| mkt_employee_share_record | EmployeeShareRecord | id | BIGINT | 是 | 主键,雪花或号段生成,禁止复用 | 普通 |
| mkt_employee_share_record | EmployeeShareRecord | tenant_id | BIGINT | 是 | 集团/租户隔离字段,所有查询必须带租户上下文 | 普通 |
| mkt_employee_share_record | EmployeeShareRecord | org_id | BIGINT | 否 | 所属组织,集团级或公共配置为空 | 普通 |
| mkt_employee_share_record | EmployeeShareRecord | campus_id | BIGINT | 否 | 所属校区,跨校区或总部级数据为空 | 普通 |
| mkt_employee_share_record | EmployeeShareRecord | created_by | BIGINT | 是 | 创建人账号 ID | 普通 |
| mkt_employee_share_record | EmployeeShareRecord | created_at | DATETIME | 是 | 创建时间 | 普通 |
| mkt_employee_share_record | EmployeeShareRecord | updated_by | BIGINT | 否 | 最后更新人账号 ID | 普通 |
| mkt_employee_share_record | EmployeeShareRecord | updated_at | DATETIME | 否 | 最后更新时间 | 普通 |
| mkt_employee_share_record | EmployeeShareRecord | is_deleted | TINYINT | 是 | 是否已删除,0 未删除,1 已删除 | 普通 |
| mkt_employee_share_record | EmployeeShareRecord | deleted_at | DATETIME | 否 | 删除时间,未删除为空 | 普通 |
| mkt_employee_share_record | EmployeeShareRecord | deleted_by | BIGINT | 否 | 删除人账号 ID,未删除为空 | 普通 |
| mkt_employee_share_record | EmployeeShareRecord | version | INT | 是 | 乐观锁版本号,写操作必须校验 | 普通 |
| mkt_employee_share_record | EmployeeShareRecord | asset_id | BIGINT | 是 | 推广资产 ID | 普通 |
| mkt_employee_share_record | EmployeeShareRecord | employee_id | BIGINT | 是 | 推广员工 ID | 普通 |
| mkt_employee_share_record | EmployeeShareRecord | share_scene | VARCHAR(64) | 是 | 微信好友/朋友圈/企微/二维码海报/复制链接/线下物料 | 普通 |
| mkt_employee_share_record | EmployeeShareRecord | share_at | DATETIME | 是 | 分享时间 | 普通 |
| mkt_employee_share_record | EmployeeShareRecord | visitor_id | VARCHAR(128) | 否 | 访客匿名 ID | 普通 |
| mkt_employee_share_record | EmployeeShareRecord | scan_record_id | BIGINT | 否 | 关联扫码记录 | 普通 |
| mkt_employee_share_record | EmployeeShareRecord | form_submit_id | BIGINT | 否 | 关联表单提交 | 普通 |
| mkt_employee_share_record | EmployeeShareRecord | lead_id | BIGINT | 否 | 关联 CRM 线索 | 普通 |
| mkt_employee_share_record | EmployeeShareRecord | conversion_stage | VARCHAR(32) | 是 | 访问/留资/预约/到访/试听/签约/流失 | 普通 |
| mkt_employee_campaign_stat | EmployeeCampaignStat | id | BIGINT | 是 | 主键,雪花或号段生成,禁止复用 | 普通 |
| mkt_employee_campaign_stat | EmployeeCampaignStat | tenant_id | BIGINT | 是 | 集团/租户隔离字段,所有查询必须带租户上下文 | 普通 |
| mkt_employee_campaign_stat | EmployeeCampaignStat | org_id | BIGINT | 否 | 所属组织,集团级或公共配置为空 | 普通 |
| mkt_employee_campaign_stat | EmployeeCampaignStat | campus_id | BIGINT | 否 | 所属校区,跨校区或总部级数据为空 | 普通 |
| mkt_employee_campaign_stat | EmployeeCampaignStat | created_by | BIGINT | 是 | 创建人账号 ID | 普通 |
| mkt_employee_campaign_stat | EmployeeCampaignStat | created_at | DATETIME | 是 | 创建时间 | 普通 |
| mkt_employee_campaign_stat | EmployeeCampaignStat | updated_by | BIGINT | 否 | 最后更新人账号 ID | 普通 |
| mkt_employee_campaign_stat | EmployeeCampaignStat | updated_at | DATETIME | 否 | 最后更新时间 | 普通 |
| mkt_employee_campaign_stat | EmployeeCampaignStat | is_deleted | TINYINT | 是 | 是否已删除,0 未删除,1 已删除 | 普通 |
| mkt_employee_campaign_stat | EmployeeCampaignStat | deleted_at | DATETIME | 否 | 删除时间,未删除为空 | 普通 |
| mkt_employee_campaign_stat | EmployeeCampaignStat | deleted_by | BIGINT | 否 | 删除人账号 ID,未删除为空 | 普通 |
| mkt_employee_campaign_stat | EmployeeCampaignStat | version | INT | 是 | 乐观锁版本号,写操作必须校验 | 普通 |
| mkt_employee_campaign_stat | EmployeeCampaignStat | stat_date | DATE | 是 | 统计日期 | 普通 |
| mkt_employee_campaign_stat | EmployeeCampaignStat | campaign_id | BIGINT | 是 | 营销活动 ID | 普通 |
| mkt_employee_campaign_stat | EmployeeCampaignStat | employee_id | BIGINT | 是 | 员工 ID | 普通 |
| mkt_employee_campaign_stat | EmployeeCampaignStat | campus_id_ref | BIGINT | 否 | 归属校区 | 普通 |
| mkt_employee_campaign_stat | EmployeeCampaignStat | visit_count | INT | 是 | 访问量 | 普通 |
| mkt_employee_campaign_stat | EmployeeCampaignStat | scan_count | INT | 是 | 扫码量 | 普通 |
| mkt_employee_campaign_stat | EmployeeCampaignStat | submit_count | INT | 是 | 留资数 | 普通 |
| mkt_employee_campaign_stat | EmployeeCampaignStat | lead_count | INT | 是 | 线索数 | 普通 |
| mkt_employee_campaign_stat | EmployeeCampaignStat | trial_count | INT | 是 | 试听预约数 | 普通 |
| mkt_employee_campaign_stat | EmployeeCampaignStat | deal_count | INT | 是 | 成交数 | 普通 |
| mkt_employee_campaign_stat | EmployeeCampaignStat | roi_snapshot | JSON | 否 | 转化率、成交额和 ROI 快照 | 普通 |
数据表与对象映射
| 表名 | 对象 | 用途 | 完整字段 | 索引建议 |
|---|---|---|---|---|
| mkt_channel | MarketingChannel | 渠道档案与投放预算 | id(BIGINT,必填)、tenant_id(BIGINT,必填)、org_id(BIGINT)、campus_id(BIGINT)、created_by(BIGINT,必填)、created_at(DATETIME,必填)、updated_by(BIGINT)、updated_at(DATETIME)、is_deleted(TINYINT,必填)、deleted_at(DATETIME)、deleted_by(BIGINT)、version(INT,必填)、channel_code(VARCHAR(64),必填)、channel_name(VARCHAR(128),必填)、channel_type(VARCHAR(32),必填)、owner_id(BIGINT)、budget_amount(DECIMAL(18,2))、roi_rule(JSON) | uk_channel_code、idx_owner |
| mkt_campaign | MarketingCampaign | 营销活动主数据 | id(BIGINT,必填)、tenant_id(BIGINT,必填)、org_id(BIGINT)、campus_id(BIGINT)、created_by(BIGINT,必填)、created_at(DATETIME,必填)、updated_by(BIGINT)、updated_at(DATETIME)、is_deleted(TINYINT,必填)、deleted_at(DATETIME)、deleted_by(BIGINT)、version(INT,必填)、campaign_code(VARCHAR(64),必填)、campaign_name(VARCHAR(128),必填)、channel_id(BIGINT)、campus_scope(JSON,必填)、start_at(DATETIME,必填)、end_at(DATETIME,必填)、biz_status(VARCHAR(32),必填)、remark(VARCHAR(512)) | uk_campaign_code、idx_channel_time |
| mkt_page_template | MarketingPageTemplate | 内置和自建活动模板库 | id(BIGINT,必填)、tenant_id(BIGINT,必填)、org_id(BIGINT)、campus_id(BIGINT)、created_by(BIGINT,必填)、created_at(DATETIME,必填)、updated_by(BIGINT)、updated_at(DATETIME)、is_deleted(TINYINT,必填)、deleted_at(DATETIME)、deleted_by(BIGINT)、version(INT,必填)、template_code(VARCHAR(64),必填)、template_name(VARCHAR(128),必填)、template_type(VARCHAR(32),必填)、festival_type(VARCHAR(32))、template_schema(JSON,必填)、review_status(VARCHAR(32),必填)、version_no(INT,必填) | uk_template_code、idx_type_status |
| mkt_landing_page | CampaignLandingPage | 活动 H5/落地页实例 | id(BIGINT,必填)、tenant_id(BIGINT,必填)、org_id(BIGINT)、campus_id(BIGINT)、created_by(BIGINT,必填)、created_at(DATETIME,必填)、updated_by(BIGINT)、updated_at(DATETIME)、is_deleted(TINYINT,必填)、deleted_at(DATETIME)、deleted_by(BIGINT)、version(INT,必填)、page_code(VARCHAR(64),必填)、campaign_id(BIGINT,必填)、template_id(BIGINT)、page_schema(JSON,必填)、publish_status(VARCHAR(32),必填)、published_url(VARCHAR(512))、tracking_config(JSON) | uk_page_code、idx_campaign_status |
| mkt_live_qr_code | LiveQrCode | 活码规则与动态跳转 | id(BIGINT,必填)、tenant_id(BIGINT,必填)、org_id(BIGINT)、campus_id(BIGINT)、created_by(BIGINT,必填)、created_at(DATETIME,必填)、updated_by(BIGINT)、updated_at(DATETIME)、is_deleted(TINYINT,必填)、deleted_at(DATETIME)、deleted_by(BIGINT)、version(INT,必填)、qr_code(VARCHAR(64),必填)、biz_type(VARCHAR(64),必填)、target_rule(JSON,必填)、fallback_url(VARCHAR(512))、rate_limit_rule(JSON)、enabled(TINYINT,必填) | uk_qr_code、idx_biz_enabled |
| mkt_scan_record | ScanRecord | 活码扫码与访问记录 | id(BIGINT,必填)、tenant_id(BIGINT,必填)、org_id(BIGINT)、campus_id(BIGINT)、created_by(BIGINT,必填)、created_at(DATETIME,必填)、updated_by(BIGINT)、updated_at(DATETIME)、is_deleted(TINYINT,必填)、deleted_at(DATETIME)、deleted_by(BIGINT)、version(INT,必填)、qr_code_id(BIGINT,必填)、visitor_id(VARCHAR(128))、openid(VARCHAR(128))、scan_at(DATETIME,必填)、resolved_target(VARCHAR(512),必填)、risk_result(VARCHAR(32)) | idx_qr_time、idx_visitor |
| mkt_form_submit | CampaignFormSubmit | 活动表单留资 | id(BIGINT,必填)、tenant_id(BIGINT,必填)、org_id(BIGINT)、campus_id(BIGINT)、created_by(BIGINT,必填)、created_at(DATETIME,必填)、updated_by(BIGINT)、updated_at(DATETIME)、is_deleted(TINYINT,必填)、deleted_at(DATETIME)、deleted_by(BIGINT)、version(INT,必填)、submit_no(VARCHAR(64),必填)、page_id(BIGINT,必填)、guardian_mobile(VARCHAR(32),必填)、student_name(VARCHAR(64))、form_data(JSON,必填)、lead_id(BIGINT)、submit_status(VARCHAR(32),必填) | uk_submit_no、idx_page_mobile |
| mkt_employee_promotion_asset | EmployeePromotionAsset | 员工专属推广链接、二维码和海报资产 | id(BIGINT,必填)、tenant_id(BIGINT,必填)、org_id(BIGINT)、campus_id(BIGINT)、created_by(BIGINT,必填)、created_at(DATETIME,必填)、updated_by(BIGINT)、updated_at(DATETIME)、is_deleted(TINYINT,必填)、deleted_at(DATETIME)、deleted_by(BIGINT)、version(INT,必填)、asset_no(VARCHAR(64),必填)、campaign_id(BIGINT,必填)、landing_page_id(BIGINT,必填)、employee_id(BIGINT,必填)、campus_id_ref(BIGINT)、qr_code_id(BIGINT)、short_url(VARCHAR(512))、poster_file_id(BIGINT)、share_params(JSON,必填)、asset_status(VARCHAR(32),必填) | uk_asset_no、uk_campaign_employee_page、idx_employee_status |
| mkt_employee_share_record | EmployeeShareRecord | 员工活动分享和访问转化记录 | id(BIGINT,必填)、tenant_id(BIGINT,必填)、org_id(BIGINT)、campus_id(BIGINT)、created_by(BIGINT,必填)、created_at(DATETIME,必填)、updated_by(BIGINT)、updated_at(DATETIME)、is_deleted(TINYINT,必填)、deleted_at(DATETIME)、deleted_by(BIGINT)、version(INT,必填)、asset_id(BIGINT,必填)、employee_id(BIGINT,必填)、share_scene(VARCHAR(64),必填)、share_at(DATETIME,必填)、visitor_id(VARCHAR(128))、scan_record_id(BIGINT)、form_submit_id(BIGINT)、lead_id(BIGINT)、conversion_stage(VARCHAR(32),必填) | idx_asset_time、idx_employee_stage、idx_lead |
| mkt_employee_campaign_stat | EmployeeCampaignStat | 员工活动推广效果快照 | id(BIGINT,必填)、tenant_id(BIGINT,必填)、org_id(BIGINT)、campus_id(BIGINT)、created_by(BIGINT,必填)、created_at(DATETIME,必填)、updated_by(BIGINT)、updated_at(DATETIME)、is_deleted(TINYINT,必填)、deleted_at(DATETIME)、deleted_by(BIGINT)、version(INT,必填)、stat_date(DATE,必填)、campaign_id(BIGINT,必填)、employee_id(BIGINT,必填)、campus_id_ref(BIGINT)、visit_count(INT,必填)、scan_count(INT,必填)、submit_count(INT,必填)、lead_count(INT,必填)、trial_count(INT,必填)、deal_count(INT,必填)、roi_snapshot(JSON) | uk_date_campaign_employee、idx_employee_date、idx_campaign_date |
12 · 状态机与业务规则
约束业务对象如何流转、何时可编辑、何时触发审批
原型需要把状态标签、可操作按钮和禁用原因展示清楚。| 对象 | 状态 | 触发与说明 |
|---|---|---|
| 活动落地页 | 草稿 -> 编辑中 -> 待发布 -> 发布中 -> 已发布 -> 发布失败 -> 已停用 -> 已过期 | PC Web 从模板创建活动页,发布后生成链接、活码和员工端可推广活动 |
| 员工推广资产 | 待生成 -> 已生成 -> 分享中 -> 已停用 -> 已失效 -> 生成失败 | 员工在教师端领取活动后生成专属短链、二维码和海报,活动停用或超期后资产失效 |
| 员工分享记录 | 已分享 -> 已访问 -> 已扫码 -> 已留资 -> 已生成线索 -> 已预约试听 -> 已签约 -> 已流失 | 外部访问、扫码、留资和转化阶段均回写员工分享记录 |
| 活动表单留资 | 待提交 -> 提交中 -> 提交成功 -> 疑似重复 -> 风控拦截 -> 生成线索失败 -> 已进入 CRM | 外部 H5 表单提交后进入查重、风控、线索入库和 CRM 分配流程 |
| 推广战报快照 | 待统计 -> 统计中 -> 已生成 -> 部分失败 -> 已刷新 | 按员工、活动、校区和日期汇总访问、扫码、留资、试听、成交和 ROI |
营销拓客中心涉及该规则时,必须在前端提示、后端校验、审计日志和测试用例中同时覆盖。
营销拓客中心涉及该规则时,必须在前端提示、后端校验、审计日志和测试用例中同时覆盖。
营销拓客中心涉及该规则时,必须在前端提示、后端校验、审计日志和测试用例中同时覆盖。
营销拓客中心涉及该规则时,必须在前端提示、后端校验、审计日志和测试用例中同时覆盖。
营销拓客中心涉及该规则时,必须在前端提示、后端校验、审计日志和测试用例中同时覆盖。
营销拓客中心涉及该规则时,必须在前端提示、后端校验、审计日志和测试用例中同时覆盖。
13 · 权限、审批与消息
动作权限、数据范围、审批触发和消息触达必须闭环
权限需要覆盖菜单、按钮、字段、接口和导出。动作权限
- 创建渠道:需映射菜单、按钮、接口和字段权限
- 选择模板:需映射菜单、按钮、接口和字段权限
- 发布活动:需映射菜单、按钮、接口和字段权限
- 编辑 H5:需映射菜单、按钮、接口和字段权限
- 转为模板:需映射菜单、按钮、接口和字段权限
- 生成活码:需映射菜单、按钮、接口和字段权限
- 配置推广范围:需映射菜单、按钮、接口和字段权限
- 员工生成专属码:需映射菜单、按钮、接口和字段权限
- 分享海报:需映射菜单、按钮、接口和字段权限
- 分配线索:需映射菜单、按钮、接口和字段权限
- 查看 ROI:需映射菜单、按钮、接口和字段权限
数据范围
- 总部全量
- 区域辖区
- 校区本地
- 部门/岗位
- 本人负责
- 授权班级/学员
审批配置
| 审批名称 | 触发条件 | 流程 | 结果 | 留痕 |
|---|---|---|---|---|
| 活动发布审批 | 活动 H5、表单、优惠、投放范围或可推广员工范围配置完成后发布 | 市场运营 -> 区域市场/总部市场 -> 品牌审核可选 | 通过后发布 H5、生成活码并同步到员工端推广工作台 | 保留页面版本、表单字段、推广范围、归因规则和审核意见 |
| 自建页面转模板审批 | 校区或区域自建活动页面申请沉淀为可复用模板 | 申请人 -> 区域市场 -> 总部品牌审核 | 通过后进入模板库并按授权范围开放使用 | 保留页面快照、素材、表单、埋点和审核意见 |
| 推广资产停用审批 | 员工推广资产涉及违规素材、活动结束前停用或批量作废 | 市场运营 -> 校区/区域负责人 | 通过后员工二维码、短链和海报失效,外部访问进入失效页 | 保留停用原因、影响员工、影响线索和替代入口 |
| 敏感推广数据导出审批 | 导出员工活动线索、手机号、访问明细或转化明细 | 申请人 -> 市场负责人 -> 安全管理员 | 通过后限时导出并加水印 | 记录字段范围、下载人、下载 IP 和有效期 |
消息模板
| 消息 | 接收人 | 触发 | 渠道 | 变量 |
|---|---|---|---|---|
| 新活动可推广提醒 | 课程顾问/销售人员/市场人员/班主任 | PC Web 活动发布且员工在推广范围内 | 迪诺学堂教师端 App/小程序、站内信 | 活动名称、有效期、推广入口、专属码生成状态 |
| 员工推广码生成结果 | 课程顾问/销售人员/市场人员/班主任 | 员工生成专属链接、二维码或海报成功/失败 | 迪诺学堂教师端 App/小程序 | 活动名称、二维码、海报、失败原因、重试入口 |
| 活动线索回流提醒 | 课程顾问/销售人员/市场人员/班主任 | 本人推广链接产生报名、试听预约或公开课报名线索 | 迪诺学堂教师端 App/小程序 | 学员姓名、来源活动、归因渠道、跟进截止时间 |
| 推广资产失效提醒 | 课程顾问/销售人员/市场人员/班主任 | 活动停用、二维码过期、目标下架或员工不再在推广范围内 | 迪诺学堂教师端 App/小程序 | 活动名称、失效原因、替代活动入口 |
| 个人推广战报提醒 | 课程顾问/销售人员/市场人员/班主任/校区负责人 | 日/周/月推广战报刷新完成 | 迪诺学堂教师端 App/小程序、站内信 | 访问量、留资数、试听数、成交数、排名 |
14 · 接口与技术细节
接口需支持幂等、权限、审计、重试和回执
每个写接口必须有 requestId 或业务幂等键,外部回调必须验签和去重。| 接口 | 方法 | 方向 | 请求字段 | 响应字段 | 幂等/权限 |
|---|---|---|---|---|---|
| /api/v1/marketing/templates | POST/GET | PC Web 到平台 | templateType, festivalType, pageSchema, assets | templateId, reviewStatus, previewUrl | 模板编码唯一 |
| /api/v1/marketing/pages/publish | POST | PC Web 到平台 | pageId, publishChannel, trackingConfig | publishedUrl, versionNo, publishStatus | pageId + versionNo 幂等 |
| /api/v1/live-qrcodes | POST/GET | PC Web 到平台 | bizType, targetRule, expireAt, enabled | qrCode, shortUrl, currentTarget | qrCode 唯一 |
| /api/v1/marketing/mobile/campaigns | GET | 迪诺学堂教师端 App/小程序到营销服务 | employeeId, roleCode, campusId, keyword, status | campaigns, availableActions, assetSummary | 仅返回员工角色、校区和活动范围内可推广活动 |
| /api/v1/marketing/employee-promotion-assets | POST/GET | 迪诺学堂教师端 App/小程序到营销服务 | campaignId, pageId, employeeId, campusId, channelId, shareScene, requestId | assetId, shortUrl, qrCodeUrl, posterUrl, assetStatus | campaignId + pageId + employeeId 幂等;活动停用后不可新建 |
| /api/v1/marketing/employee-promotion-assets/{id}/poster | POST | 迪诺学堂教师端 App/小程序到营销服务 | assetId, posterTemplateId, employeeName, campusName, requestId | posterFileId, posterUrl, generateStatus | assetId + posterTemplateId 幂等 |
| /api/v1/marketing/employee-share-records | POST | 外部 H5/教师端到营销服务 | assetId, employeeId, shareScene, visitorId, scanRecordId, formSubmitId, leadId, conversionStage | recordId, statRefreshStatus | assetId + visitorId + conversionStage 去重 |
| /api/v1/marketing/employee-campaign-stats | GET | 迪诺学堂教师端 App/小程序到营销服务 | employeeId, campaignId, dateRange, campusId | visitCount, scanCount, submitCount, leadCount, trialCount, dealCount, roiSnapshot | 只能查看本人或授权团队推广数据 |
| /api/v1/marketing/leads/import | POST | PC Web 到平台 | campaignId, fileId, importRule, requestId | batchNo, successCount, failItems | requestId 幂等 |
| /api/v1/crm/leads/assign | POST | 营销到 CRM | leadIds, ownerId, assignRule | assignStatus, todoIds | 线索状态校验 |
前端约束
- 统一登录态和租户校区上下文
- 列表分页、筛选、排序、列显隐
- 表单本地校验与服务端错误映射
- 移动/平板/TV 按终端适配交互
后端约束
- 领域服务封装业务规则
- 写操作事务一致性
- 关键操作审计快照
- 异步任务失败重试和告警
集成约束
- 第三方接口统一走开放集成中心
- 回执文件归档
- 接口日志可按业务单号追踪
- 密钥和回调地址按环境隔离
15 · 数据库与存储设计
核心表建议、关键字段和索引方向
详细 DDL 已在平台技术设计文档中统一展开,本处保留模块核心表、关键字段和索引方向。| 表名 | 用途 | 核心字段 | 索引建议 |
|---|---|---|---|
| mkt_channel | 渠道档案与投放预算 | id、tenant_id、org_id、campus_id、created_by、created_at、updated_by、updated_at、is_deleted、deleted_at、deleted_by、version、channel_code、channel_name、channel_type、owner_id、budget_amount、roi_rule | uk_channel_code、idx_owner |
| mkt_campaign | 营销活动主数据 | id、tenant_id、org_id、campus_id、created_by、created_at、updated_by、updated_at、is_deleted、deleted_at、deleted_by、version、campaign_code、campaign_name、channel_id、campus_scope、start_at、end_at、biz_status、remark | uk_campaign_code、idx_channel_time |
| mkt_page_template | 内置和自建活动模板库 | id、tenant_id、org_id、campus_id、created_by、created_at、updated_by、updated_at、is_deleted、deleted_at、deleted_by、version、template_code、template_name、template_type、festival_type、template_schema、review_status、version_no | uk_template_code、idx_type_status |
| mkt_landing_page | 活动 H5/落地页实例 | id、tenant_id、org_id、campus_id、created_by、created_at、updated_by、updated_at、is_deleted、deleted_at、deleted_by、version、page_code、campaign_id、template_id、page_schema、publish_status、published_url、tracking_config | uk_page_code、idx_campaign_status |
| mkt_live_qr_code | 活码规则与动态跳转 | id、tenant_id、org_id、campus_id、created_by、created_at、updated_by、updated_at、is_deleted、deleted_at、deleted_by、version、qr_code、biz_type、target_rule、fallback_url、rate_limit_rule、enabled | uk_qr_code、idx_biz_enabled |
| mkt_scan_record | 活码扫码与访问记录 | id、tenant_id、org_id、campus_id、created_by、created_at、updated_by、updated_at、is_deleted、deleted_at、deleted_by、version、qr_code_id、visitor_id、openid、scan_at、resolved_target、risk_result | idx_qr_time、idx_visitor |
| mkt_form_submit | 活动表单留资 | id、tenant_id、org_id、campus_id、created_by、created_at、updated_by、updated_at、is_deleted、deleted_at、deleted_by、version、submit_no、page_id、guardian_mobile、student_name、form_data、lead_id、submit_status | uk_submit_no、idx_page_mobile |
| mkt_employee_promotion_asset | 员工专属推广链接、二维码和海报资产 | id、tenant_id、org_id、campus_id、created_by、created_at、updated_by、updated_at、is_deleted、deleted_at、deleted_by、version、asset_no、campaign_id、landing_page_id、employee_id、campus_id_ref、qr_code_id、short_url、poster_file_id、share_params、asset_status | uk_asset_no、uk_campaign_employee_page、idx_employee_status |
| mkt_employee_share_record | 员工活动分享和访问转化记录 | id、tenant_id、org_id、campus_id、created_by、created_at、updated_by、updated_at、is_deleted、deleted_at、deleted_by、version、asset_id、employee_id、share_scene、share_at、visitor_id、scan_record_id、form_submit_id、lead_id、conversion_stage | idx_asset_time、idx_employee_stage、idx_lead |
| mkt_employee_campaign_stat | 员工活动推广效果快照 | id、tenant_id、org_id、campus_id、created_by、created_at、updated_by、updated_at、is_deleted、deleted_at、deleted_by、version、stat_date、campaign_id、employee_id、campus_id_ref、visit_count、scan_count、submit_count、lead_count、trial_count、deal_count、roi_snapshot | uk_date_campaign_employee、idx_employee_date、idx_campaign_date |
DDL 草案
mkt_channelMarketingChannel
CREATE TABLE `mkt_channel` (
`id` BIGINT NOT NULL COMMENT '主键,雪花或号段生成,禁止复用;数据级别:普通',
`tenant_id` BIGINT NOT NULL COMMENT '集团/租户隔离字段,所有查询必须带租户上下文;数据级别:普通',
`org_id` BIGINT NULL COMMENT '所属组织,集团级或公共配置为空;数据级别:普通',
`campus_id` BIGINT NULL COMMENT '所属校区,跨校区或总部级数据为空;数据级别:普通',
`created_by` BIGINT NOT NULL COMMENT '创建人账号 ID;数据级别:普通',
`created_at` DATETIME NOT NULL COMMENT '创建时间;数据级别:普通',
`updated_by` BIGINT NULL COMMENT '最后更新人账号 ID;数据级别:普通',
`updated_at` DATETIME NULL COMMENT '最后更新时间;数据级别:普通',
`is_deleted` TINYINT NOT NULL DEFAULT 0 COMMENT '是否已删除,0 未删除,1 已删除;数据级别:普通',
`deleted_at` DATETIME NULL COMMENT '删除时间,未删除为空;数据级别:普通',
`deleted_by` BIGINT NULL COMMENT '删除人账号 ID,未删除为空;数据级别:普通',
`version` INT NOT NULL DEFAULT 1 COMMENT '乐观锁版本号,写操作必须校验;数据级别:普通',
`channel_code` VARCHAR(64) NOT NULL COMMENT '渠道编码,唯一;数据级别:普通',
`channel_name` VARCHAR(128) NOT NULL COMMENT '渠道名称;数据级别:普通',
`channel_type` VARCHAR(32) NOT NULL COMMENT '线上/线下/合作/自然流量;数据级别:普通',
`owner_id` BIGINT NULL COMMENT '渠道负责人;数据级别:普通',
`budget_amount` DECIMAL(18,2) NULL COMMENT '预算金额;数据级别:普通',
`roi_rule` JSON NULL COMMENT 'ROI 统计规则;数据级别:普通',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_channel_code` (`channel_code`),
KEY `idx_owner` (`owner_id`),
KEY `idx_tenant_deleted` (`tenant_id`, `is_deleted`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='MarketingChannel:渠道档案与投放预算';
mkt_campaignMarketingCampaign
CREATE TABLE `mkt_campaign` (
`id` BIGINT NOT NULL COMMENT '主键,雪花或号段生成,禁止复用;数据级别:普通',
`tenant_id` BIGINT NOT NULL COMMENT '集团/租户隔离字段,所有查询必须带租户上下文;数据级别:普通',
`org_id` BIGINT NULL COMMENT '所属组织,集团级或公共配置为空;数据级别:普通',
`campus_id` BIGINT NULL COMMENT '所属校区,跨校区或总部级数据为空;数据级别:普通',
`created_by` BIGINT NOT NULL COMMENT '创建人账号 ID;数据级别:普通',
`created_at` DATETIME NOT NULL COMMENT '创建时间;数据级别:普通',
`updated_by` BIGINT NULL COMMENT '最后更新人账号 ID;数据级别:普通',
`updated_at` DATETIME NULL COMMENT '最后更新时间;数据级别:普通',
`is_deleted` TINYINT NOT NULL DEFAULT 0 COMMENT '是否已删除,0 未删除,1 已删除;数据级别:普通',
`deleted_at` DATETIME NULL COMMENT '删除时间,未删除为空;数据级别:普通',
`deleted_by` BIGINT NULL COMMENT '删除人账号 ID,未删除为空;数据级别:普通',
`version` INT NOT NULL DEFAULT 1 COMMENT '乐观锁版本号,写操作必须校验;数据级别:普通',
`campaign_code` VARCHAR(64) NOT NULL COMMENT '活动编码,唯一;数据级别:普通',
`campaign_name` VARCHAR(128) NOT NULL COMMENT '活动名称;数据级别:普通',
`channel_id` BIGINT NULL COMMENT '所属渠道;数据级别:普通',
`campus_scope` JSON NOT NULL COMMENT '适用校区范围;数据级别:普通',
`start_at` DATETIME NOT NULL COMMENT '开始时间;数据级别:普通',
`end_at` DATETIME NOT NULL COMMENT '结束时间;数据级别:普通',
`biz_status` VARCHAR(32) NOT NULL COMMENT '业务状态,取值来自状态机字典;数据级别:普通',
`remark` VARCHAR(512) NULL COMMENT '业务备注,敏感内容按权限脱敏;数据级别:普通',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_campaign_code` (`campaign_code`),
KEY `idx_channel_time` (`channel_id`),
KEY `idx_tenant_deleted` (`tenant_id`, `is_deleted`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='MarketingCampaign:营销活动主数据';
mkt_page_templateMarketingPageTemplate
CREATE TABLE `mkt_page_template` (
`id` BIGINT NOT NULL COMMENT '主键,雪花或号段生成,禁止复用;数据级别:普通',
`tenant_id` BIGINT NOT NULL COMMENT '集团/租户隔离字段,所有查询必须带租户上下文;数据级别:普通',
`org_id` BIGINT NULL COMMENT '所属组织,集团级或公共配置为空;数据级别:普通',
`campus_id` BIGINT NULL COMMENT '所属校区,跨校区或总部级数据为空;数据级别:普通',
`created_by` BIGINT NOT NULL COMMENT '创建人账号 ID;数据级别:普通',
`created_at` DATETIME NOT NULL COMMENT '创建时间;数据级别:普通',
`updated_by` BIGINT NULL COMMENT '最后更新人账号 ID;数据级别:普通',
`updated_at` DATETIME NULL COMMENT '最后更新时间;数据级别:普通',
`is_deleted` TINYINT NOT NULL DEFAULT 0 COMMENT '是否已删除,0 未删除,1 已删除;数据级别:普通',
`deleted_at` DATETIME NULL COMMENT '删除时间,未删除为空;数据级别:普通',
`deleted_by` BIGINT NULL COMMENT '删除人账号 ID,未删除为空;数据级别:普通',
`version` INT NOT NULL DEFAULT 1 COMMENT '乐观锁版本号,写操作必须校验;数据级别:普通',
`template_code` VARCHAR(64) NOT NULL COMMENT '模板编码,唯一;数据级别:普通',
`template_name` VARCHAR(128) NOT NULL COMMENT '模板名称;数据级别:普通',
`template_type` VARCHAR(32) NOT NULL COMMENT '节气/传统节日/公开课/招生活动/自建;数据级别:普通',
`festival_type` VARCHAR(32) NULL COMMENT '节日或节气分类;数据级别:普通',
`template_schema` JSON NOT NULL COMMENT '页面结构、组件和默认文案;数据级别:普通',
`review_status` VARCHAR(32) NOT NULL COMMENT '草稿/审核中/已通过/已驳回;数据级别:普通',
`version_no` INT NOT NULL COMMENT '模板版本;数据级别:普通',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_template_code` (`template_code`),
KEY `idx_type_status` (`template_type`, `review_status`),
KEY `idx_tenant_deleted` (`tenant_id`, `is_deleted`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='MarketingPageTemplate:内置和自建活动模板库';
mkt_landing_pageCampaignLandingPage
CREATE TABLE `mkt_landing_page` (
`id` BIGINT NOT NULL COMMENT '主键,雪花或号段生成,禁止复用;数据级别:普通',
`tenant_id` BIGINT NOT NULL COMMENT '集团/租户隔离字段,所有查询必须带租户上下文;数据级别:普通',
`org_id` BIGINT NULL COMMENT '所属组织,集团级或公共配置为空;数据级别:普通',
`campus_id` BIGINT NULL COMMENT '所属校区,跨校区或总部级数据为空;数据级别:普通',
`created_by` BIGINT NOT NULL COMMENT '创建人账号 ID;数据级别:普通',
`created_at` DATETIME NOT NULL COMMENT '创建时间;数据级别:普通',
`updated_by` BIGINT NULL COMMENT '最后更新人账号 ID;数据级别:普通',
`updated_at` DATETIME NULL COMMENT '最后更新时间;数据级别:普通',
`is_deleted` TINYINT NOT NULL DEFAULT 0 COMMENT '是否已删除,0 未删除,1 已删除;数据级别:普通',
`deleted_at` DATETIME NULL COMMENT '删除时间,未删除为空;数据级别:普通',
`deleted_by` BIGINT NULL COMMENT '删除人账号 ID,未删除为空;数据级别:普通',
`version` INT NOT NULL DEFAULT 1 COMMENT '乐观锁版本号,写操作必须校验;数据级别:普通',
`page_code` VARCHAR(64) NOT NULL COMMENT '页面编码,唯一;数据级别:普通',
`campaign_id` BIGINT NOT NULL COMMENT '关联营销活动;数据级别:普通',
`template_id` BIGINT NULL COMMENT '来源模板 ID;数据级别:普通',
`page_schema` JSON NOT NULL COMMENT '页面组件配置;数据级别:普通',
`publish_status` VARCHAR(32) NOT NULL COMMENT '草稿/已发布/已下线;数据级别:普通',
`published_url` VARCHAR(512) NULL COMMENT '发布访问地址;数据级别:普通',
`tracking_config` JSON NULL COMMENT '埋点和转化归因配置;数据级别:普通',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_page_code` (`page_code`),
KEY `idx_campaign_status` (`campaign_id`, `publish_status`),
KEY `idx_tenant_deleted` (`tenant_id`, `is_deleted`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='CampaignLandingPage:活动 H5/落地页实例';
mkt_live_qr_codeLiveQrCode
CREATE TABLE `mkt_live_qr_code` (
`id` BIGINT NOT NULL COMMENT '主键,雪花或号段生成,禁止复用;数据级别:普通',
`tenant_id` BIGINT NOT NULL COMMENT '集团/租户隔离字段,所有查询必须带租户上下文;数据级别:普通',
`org_id` BIGINT NULL COMMENT '所属组织,集团级或公共配置为空;数据级别:普通',
`campus_id` BIGINT NULL COMMENT '所属校区,跨校区或总部级数据为空;数据级别:普通',
`created_by` BIGINT NOT NULL COMMENT '创建人账号 ID;数据级别:普通',
`created_at` DATETIME NOT NULL COMMENT '创建时间;数据级别:普通',
`updated_by` BIGINT NULL COMMENT '最后更新人账号 ID;数据级别:普通',
`updated_at` DATETIME NULL COMMENT '最后更新时间;数据级别:普通',
`is_deleted` TINYINT NOT NULL DEFAULT 0 COMMENT '是否已删除,0 未删除,1 已删除;数据级别:普通',
`deleted_at` DATETIME NULL COMMENT '删除时间,未删除为空;数据级别:普通',
`deleted_by` BIGINT NULL COMMENT '删除人账号 ID,未删除为空;数据级别:普通',
`version` INT NOT NULL DEFAULT 1 COMMENT '乐观锁版本号,写操作必须校验;数据级别:普通',
`qr_code` VARCHAR(64) NOT NULL COMMENT '活码编码,唯一;数据级别:普通',
`biz_type` VARCHAR(64) NOT NULL COMMENT '活动页/资源/课程/直播/表单;数据级别:普通',
`target_rule` JSON NOT NULL COMMENT '动态目标规则;数据级别:普通',
`fallback_url` VARCHAR(512) NULL COMMENT '失效或异常兜底地址;数据级别:普通',
`rate_limit_rule` JSON NULL COMMENT '防刷规则;数据级别:普通',
`enabled` TINYINT NOT NULL COMMENT '是否启用;数据级别:普通',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_qr_code` (`qr_code`),
KEY `idx_biz_enabled` (`biz_type`, `enabled`),
KEY `idx_tenant_deleted` (`tenant_id`, `is_deleted`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='LiveQrCode:活码规则与动态跳转';
mkt_scan_recordScanRecord
CREATE TABLE `mkt_scan_record` (
`id` BIGINT NOT NULL COMMENT '主键,雪花或号段生成,禁止复用;数据级别:普通',
`tenant_id` BIGINT NOT NULL COMMENT '集团/租户隔离字段,所有查询必须带租户上下文;数据级别:普通',
`org_id` BIGINT NULL COMMENT '所属组织,集团级或公共配置为空;数据级别:普通',
`campus_id` BIGINT NULL COMMENT '所属校区,跨校区或总部级数据为空;数据级别:普通',
`created_by` BIGINT NOT NULL COMMENT '创建人账号 ID;数据级别:普通',
`created_at` DATETIME NOT NULL COMMENT '创建时间;数据级别:普通',
`updated_by` BIGINT NULL COMMENT '最后更新人账号 ID;数据级别:普通',
`updated_at` DATETIME NULL COMMENT '最后更新时间;数据级别:普通',
`is_deleted` TINYINT NOT NULL DEFAULT 0 COMMENT '是否已删除,0 未删除,1 已删除;数据级别:普通',
`deleted_at` DATETIME NULL COMMENT '删除时间,未删除为空;数据级别:普通',
`deleted_by` BIGINT NULL COMMENT '删除人账号 ID,未删除为空;数据级别:普通',
`version` INT NOT NULL DEFAULT 1 COMMENT '乐观锁版本号,写操作必须校验;数据级别:普通',
`qr_code_id` BIGINT NOT NULL COMMENT '活码 ID;数据级别:普通',
`visitor_id` VARCHAR(128) NULL COMMENT '匿名访客 ID;数据级别:普通',
`openid` VARCHAR(128) NULL COMMENT '微信 OpenID,敏感;数据级别:敏感',
`scan_at` DATETIME NOT NULL COMMENT '扫码时间;数据级别:普通',
`resolved_target` VARCHAR(512) NOT NULL COMMENT '实际解析目标;数据级别:普通',
`risk_result` VARCHAR(32) NULL COMMENT '防刷风险结果;数据级别:普通',
PRIMARY KEY (`id`),
KEY `idx_qr_time` (`qr_code_id`),
KEY `idx_visitor` (`visitor_id`),
KEY `idx_tenant_deleted` (`tenant_id`, `is_deleted`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='ScanRecord:活码扫码与访问记录';
mkt_form_submitCampaignFormSubmit
CREATE TABLE `mkt_form_submit` (
`id` BIGINT NOT NULL COMMENT '主键,雪花或号段生成,禁止复用;数据级别:普通',
`tenant_id` BIGINT NOT NULL COMMENT '集团/租户隔离字段,所有查询必须带租户上下文;数据级别:普通',
`org_id` BIGINT NULL COMMENT '所属组织,集团级或公共配置为空;数据级别:普通',
`campus_id` BIGINT NULL COMMENT '所属校区,跨校区或总部级数据为空;数据级别:普通',
`created_by` BIGINT NOT NULL COMMENT '创建人账号 ID;数据级别:普通',
`created_at` DATETIME NOT NULL COMMENT '创建时间;数据级别:普通',
`updated_by` BIGINT NULL COMMENT '最后更新人账号 ID;数据级别:普通',
`updated_at` DATETIME NULL COMMENT '最后更新时间;数据级别:普通',
`is_deleted` TINYINT NOT NULL DEFAULT 0 COMMENT '是否已删除,0 未删除,1 已删除;数据级别:普通',
`deleted_at` DATETIME NULL COMMENT '删除时间,未删除为空;数据级别:普通',
`deleted_by` BIGINT NULL COMMENT '删除人账号 ID,未删除为空;数据级别:普通',
`version` INT NOT NULL DEFAULT 1 COMMENT '乐观锁版本号,写操作必须校验;数据级别:普通',
`submit_no` VARCHAR(64) NOT NULL COMMENT '提交编号,唯一;数据级别:普通',
`page_id` BIGINT NOT NULL COMMENT '页面 ID;数据级别:普通',
`guardian_mobile` VARCHAR(32) NOT NULL COMMENT '家长手机号,敏感;数据级别:敏感',
`student_name` VARCHAR(64) NULL COMMENT '学员姓名;数据级别:普通',
`form_data` JSON NOT NULL COMMENT '表单完整提交数据;数据级别:普通',
`lead_id` BIGINT NULL COMMENT '转化生成线索 ID;数据级别:普通',
`submit_status` VARCHAR(32) NOT NULL COMMENT '成功/失败/重复/风控拦截;数据级别:普通',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_submit_no` (`submit_no`),
KEY `idx_page_mobile` (`page_id`, `guardian_mobile`),
KEY `idx_tenant_deleted` (`tenant_id`, `is_deleted`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='CampaignFormSubmit:活动表单留资';
mkt_employee_promotion_assetEmployeePromotionAsset
CREATE TABLE `mkt_employee_promotion_asset` (
`id` BIGINT NOT NULL COMMENT '主键,雪花或号段生成,禁止复用;数据级别:普通',
`tenant_id` BIGINT NOT NULL COMMENT '集团/租户隔离字段,所有查询必须带租户上下文;数据级别:普通',
`org_id` BIGINT NULL COMMENT '所属组织,集团级或公共配置为空;数据级别:普通',
`campus_id` BIGINT NULL COMMENT '所属校区,跨校区或总部级数据为空;数据级别:普通',
`created_by` BIGINT NOT NULL COMMENT '创建人账号 ID;数据级别:普通',
`created_at` DATETIME NOT NULL COMMENT '创建时间;数据级别:普通',
`updated_by` BIGINT NULL COMMENT '最后更新人账号 ID;数据级别:普通',
`updated_at` DATETIME NULL COMMENT '最后更新时间;数据级别:普通',
`is_deleted` TINYINT NOT NULL DEFAULT 0 COMMENT '是否已删除,0 未删除,1 已删除;数据级别:普通',
`deleted_at` DATETIME NULL COMMENT '删除时间,未删除为空;数据级别:普通',
`deleted_by` BIGINT NULL COMMENT '删除人账号 ID,未删除为空;数据级别:普通',
`version` INT NOT NULL DEFAULT 1 COMMENT '乐观锁版本号,写操作必须校验;数据级别:普通',
`asset_no` VARCHAR(64) NOT NULL COMMENT '推广资产编号,唯一;数据级别:普通',
`campaign_id` BIGINT NOT NULL COMMENT '关联营销活动;数据级别:普通',
`landing_page_id` BIGINT NOT NULL COMMENT '关联活动落地页;数据级别:普通',
`employee_id` BIGINT NOT NULL COMMENT '推广员工 ID;数据级别:普通',
`campus_id_ref` BIGINT NULL COMMENT '员工推广归属校区;数据级别:普通',
`qr_code_id` BIGINT NULL COMMENT '关联活码 ID;数据级别:普通',
`short_url` VARCHAR(512) NULL COMMENT '员工专属短链;数据级别:普通',
`poster_file_id` BIGINT NULL COMMENT '员工专属分享海报文件;数据级别:普通',
`share_params` JSON NOT NULL COMMENT 'campaignId/pageId/campusId/channelId/employeeId/shareScene 等归因参数;数据级别:普通',
`asset_status` VARCHAR(32) NOT NULL COMMENT '待生成/已生成/已停用/已失效;数据级别:普通',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_asset_no` (`asset_no`),
UNIQUE KEY `uk_campaign_employee_page` (`campaign_id`, `employee_id`, `landing_page_id`),
KEY `idx_employee_status` (`employee_id`, `asset_status`),
KEY `idx_tenant_deleted` (`tenant_id`, `is_deleted`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='EmployeePromotionAsset:员工专属推广链接、二维码和海报资产';
mkt_employee_share_recordEmployeeShareRecord
CREATE TABLE `mkt_employee_share_record` (
`id` BIGINT NOT NULL COMMENT '主键,雪花或号段生成,禁止复用;数据级别:普通',
`tenant_id` BIGINT NOT NULL COMMENT '集团/租户隔离字段,所有查询必须带租户上下文;数据级别:普通',
`org_id` BIGINT NULL COMMENT '所属组织,集团级或公共配置为空;数据级别:普通',
`campus_id` BIGINT NULL COMMENT '所属校区,跨校区或总部级数据为空;数据级别:普通',
`created_by` BIGINT NOT NULL COMMENT '创建人账号 ID;数据级别:普通',
`created_at` DATETIME NOT NULL COMMENT '创建时间;数据级别:普通',
`updated_by` BIGINT NULL COMMENT '最后更新人账号 ID;数据级别:普通',
`updated_at` DATETIME NULL COMMENT '最后更新时间;数据级别:普通',
`is_deleted` TINYINT NOT NULL DEFAULT 0 COMMENT '是否已删除,0 未删除,1 已删除;数据级别:普通',
`deleted_at` DATETIME NULL COMMENT '删除时间,未删除为空;数据级别:普通',
`deleted_by` BIGINT NULL COMMENT '删除人账号 ID,未删除为空;数据级别:普通',
`version` INT NOT NULL DEFAULT 1 COMMENT '乐观锁版本号,写操作必须校验;数据级别:普通',
`asset_id` BIGINT NOT NULL COMMENT '推广资产 ID;数据级别:普通',
`employee_id` BIGINT NOT NULL COMMENT '推广员工 ID;数据级别:普通',
`share_scene` VARCHAR(64) NOT NULL COMMENT '微信好友/朋友圈/企微/二维码海报/复制链接/线下物料;数据级别:普通',
`share_at` DATETIME NOT NULL COMMENT '分享时间;数据级别:普通',
`visitor_id` VARCHAR(128) NULL COMMENT '访客匿名 ID;数据级别:普通',
`scan_record_id` BIGINT NULL COMMENT '关联扫码记录;数据级别:普通',
`form_submit_id` BIGINT NULL COMMENT '关联表单提交;数据级别:普通',
`lead_id` BIGINT NULL COMMENT '关联 CRM 线索;数据级别:普通',
`conversion_stage` VARCHAR(32) NOT NULL COMMENT '访问/留资/预约/到访/试听/签约/流失;数据级别:普通',
PRIMARY KEY (`id`),
KEY `idx_asset_time` (`asset_id`),
KEY `idx_employee_stage` (`employee_id`, `conversion_stage`),
KEY `idx_lead` (`lead_id`),
KEY `idx_tenant_deleted` (`tenant_id`, `is_deleted`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='EmployeeShareRecord:员工活动分享和访问转化记录';
mkt_employee_campaign_statEmployeeCampaignStat
CREATE TABLE `mkt_employee_campaign_stat` (
`id` BIGINT NOT NULL COMMENT '主键,雪花或号段生成,禁止复用;数据级别:普通',
`tenant_id` BIGINT NOT NULL COMMENT '集团/租户隔离字段,所有查询必须带租户上下文;数据级别:普通',
`org_id` BIGINT NULL COMMENT '所属组织,集团级或公共配置为空;数据级别:普通',
`campus_id` BIGINT NULL COMMENT '所属校区,跨校区或总部级数据为空;数据级别:普通',
`created_by` BIGINT NOT NULL COMMENT '创建人账号 ID;数据级别:普通',
`created_at` DATETIME NOT NULL COMMENT '创建时间;数据级别:普通',
`updated_by` BIGINT NULL COMMENT '最后更新人账号 ID;数据级别:普通',
`updated_at` DATETIME NULL COMMENT '最后更新时间;数据级别:普通',
`is_deleted` TINYINT NOT NULL DEFAULT 0 COMMENT '是否已删除,0 未删除,1 已删除;数据级别:普通',
`deleted_at` DATETIME NULL COMMENT '删除时间,未删除为空;数据级别:普通',
`deleted_by` BIGINT NULL COMMENT '删除人账号 ID,未删除为空;数据级别:普通',
`version` INT NOT NULL DEFAULT 1 COMMENT '乐观锁版本号,写操作必须校验;数据级别:普通',
`stat_date` DATE NOT NULL COMMENT '统计日期;数据级别:普通',
`campaign_id` BIGINT NOT NULL COMMENT '营销活动 ID;数据级别:普通',
`employee_id` BIGINT NOT NULL COMMENT '员工 ID;数据级别:普通',
`campus_id_ref` BIGINT NULL COMMENT '归属校区;数据级别:普通',
`visit_count` INT NOT NULL COMMENT '访问量;数据级别:普通',
`scan_count` INT NOT NULL COMMENT '扫码量;数据级别:普通',
`submit_count` INT NOT NULL COMMENT '留资数;数据级别:普通',
`lead_count` INT NOT NULL COMMENT '线索数;数据级别:普通',
`trial_count` INT NOT NULL COMMENT '试听预约数;数据级别:普通',
`deal_count` INT NOT NULL COMMENT '成交数;数据级别:普通',
`roi_snapshot` JSON NULL COMMENT '转化率、成交额和 ROI 快照;数据级别:普通',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_date_campaign_employee` (`stat_date`, `campaign_id`, `employee_id`),
KEY `idx_employee_date` (`employee_id`, `stat_date`),
KEY `idx_campaign_date` (`campaign_id`, `stat_date`),
KEY `idx_tenant_deleted` (`tenant_id`, `is_deleted`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='EmployeeCampaignStat:员工活动推广效果快照';
16 · 异常、指标、测试与初始化
保证模块上线后可运营、可追踪、可验收
测试要覆盖主流程、异常流、权限流、接口失败和数据一致性。异常状态
指标埋点
测试用例
| 编号 | 场景 | 前置 | 步骤 | 预期 | 优先级 |
|---|---|---|---|---|---|
| TC-MKT-EMP-001 | PC 发布活动同步到员工端 | 活动模板、H5 页面、投放范围、员工角色范围和归因规则已配置 | PC Web 发布活动后,员工登录迪诺学堂教师端 App/小程序查看可推广活动 | 授权员工 30 秒内可看到活动;非授权员工不可见;活动说明、有效期和归因规则展示正确 | 高 |
| TC-MKT-EMP-002 | 员工生成专属二维码和海报 | 员工在活动推广范围内且活动已发布 | 员工端点击生成专属链接、二维码和海报,并保存/分享 | 生成结果包含 campaignId、pageId、campusId、channelId、employeeId、shareScene;二维码和海报可访问;重复生成返回同一有效资产或新版本记录 | 高 |
| TC-MKT-EMP-003 | 外部 H5 留资回流员工 | 员工已分享专属活动链接,外部用户可访问 H5 | 外部用户提交报名或试听预约表单 | 表单成功后生成扫码/访问/表单/线索记录,CRM 线索归因到员工推广资产并生成员工端待办 | 高 |
| TC-MKT-EMP-004 | 推广资产失效兜底 | 活动被停用或员工不再在推广范围内 | 访问员工专属二维码和短链 | 外部页面展示失效原因和替代入口;员工端显示资产已失效并禁止继续分享 | 高 |
| TC-MKT-EMP-005 | 员工推广战报刷新 | 活动存在访问、扫码、留资、试听和成交数据 | 刷新员工个人推广战报和 PC 活动复盘 | 员工端只展示本人数据,PC 管理端可按校区/团队/员工汇总;访问、线索、成交指标一致 | 高 |
| TC-MKT-ENH-001 | 营销闭环交付闭环验收 | 模板库、活动编辑器、活码配置、线索表单、CRM 跟进相关基础数据、权限、审批流、消息模板和接口配置已初始化 | 按补齐从模板选择、页面发布、活码生成、扫码统计、表单提交、线索查重、分配跟进到效果复盘的闭环。执行前端提交、后端处理、状态流转、异常重试和消息触达 | 每条线索能追溯活动、渠道、模板、活码和首次访问记录。;同时产生审计日志、指标埋点和必要的补偿任务 | 高 |
| TC-MKT-ENH-002 | 员工端联动交付闭环验收 | 员工端营销推广工作台、可推广活动、我的二维码、我的海报、分享记录、推广战报相关基础数据、权限、审批流、消息模板和接口配置已初始化 | 按补齐活动发布到员工端、员工领取活动、生成专属链接/二维码/海报、分享记录、线索回流待办和个人推广战报。执行前端提交、后端处理、状态流转、异常重试和消息触达 | 活动发布后授权员工可在迪诺学堂教师端 App/小程序看到并生成本人推广资产;线索可回流到本人或分配规则指定责任人。;同时产生审计日志、指标埋点和必要的补偿任务 | 高 |
| TC-MKT-ENH-003 | 模板治理交付闭环验收 | 模板详情、转模板弹窗、模板审核页相关基础数据、权限、审批流、消息模板和接口配置已初始化 | 按补充模板审核、上下架、版本复用、素材归属、适用校区和复制创建规则。执行前端提交、后端处理、状态流转、异常重试和消息触达 | 模板发布后有版本号和审核记录,停用模板不影响已发布页面。;同时产生审计日志、指标埋点和必要的补偿任务 | 高 |
| TC-MKT-ENH-004 | 异常状态交付闭环验收 | 外部 H5、扫码页、提交成功页、失效页相关基础数据、权限、审批流、消息模板和接口配置已初始化 | 按补齐二维码失效页、目标不可访问页、重复提交提示、访问频控和黑名单命中状态。执行前端提交、后端处理、状态流转、异常重试和消息触达 | 外部用户遇到异常时能看到原因和下一步操作入口。;同时产生审计日志、指标埋点和必要的补偿任务 | 高 |
上线初始化
| 初始化项 | 动作 | 数据 | 验收 |
|---|---|---|---|
| 营销活动模板库初始化 | 初始化系统内置 24 节气、传统节日、招生季、公开课等海报和 H5 模板 | 模板分类、模板标签、页面组件、默认素材、表单字段、适用课程和渠道 | 市场运营可从模板库选择模板创建活动页面 |
| 活动员工推广范围 | 初始化活动可推广角色、校区范围、员工范围、线索归属规则、可分享渠道和有效期策略 | roleScope、campusScope、employeeScope、assignRule、shareScene、expireRule | 活动发布后授权员工可在教师端 App/小程序看到并生成本人推广资产 |
| 员工推广资产规则 | 初始化员工专属链接、二维码、海报生成策略、活码目标、短链域名、失效页和重试策略 | shortDomain、qrCodeRule、posterTemplate、fallbackPage、retryRule | 员工可稳定生成专属二维码和海报,活动停用后访问进入失效页 |
| 员工端推广消息模板 | 初始化新活动提醒、推广码生成结果、线索回流、资产失效和个人战报消息模板 | messageTemplate、pushChannel、receiverRule、variableMap | 活动发布、线索回流和战报刷新能触达对应员工 |
| 推广战报统计任务 | 初始化按员工、活动、校区和日期汇总访问、扫码、留资、试听、成交和 ROI 的定时任务 | statJob、metricDefinition、refreshTime、retryPolicy | 员工端和 PC 活动复盘的指标口径一致 |
| 营销闭环交付配置 | 初始化补齐从模板选择、页面发布、活码生成、扫码统计、表单提交、线索查重、分配跟进到效果复盘的闭环。所需的页面入口、功能开关、审批流、消息模板、状态枚举、异常原因和角色权限 | 模板库、活动编辑器、活码配置、线索表单、CRM 跟进 | 每条线索能追溯活动、渠道、模板、活码和首次访问记录。 |
| 员工端联动交付配置 | 初始化补齐活动发布到员工端、员工领取活动、生成专属链接/二维码/海报、分享记录、线索回流待办和个人推广战报。所需的页面入口、功能开关、审批流、消息模板、状态枚举、异常原因和角色权限 | 员工端营销推广工作台、可推广活动、我的二维码、我的海报、分享记录、推广战报 | 活动发布后授权员工可在迪诺学堂教师端 App/小程序看到并生成本人推广资产;线索可回流到本人或分配规则指定责任人。 |
| 模板治理交付配置 | 初始化补充模板审核、上下架、版本复用、素材归属、适用校区和复制创建规则。所需的页面入口、功能开关、审批流、消息模板、状态枚举、异常原因和角色权限 | 模板详情、转模板弹窗、模板审核页 | 模板发布后有版本号和审核记录,停用模板不影响已发布页面。 |
| 异常状态交付配置 | 初始化补齐二维码失效页、目标不可访问页、重复提交提示、访问频控和黑名单命中状态。所需的页面入口、功能开关、审批流、消息模板、状态枚举、异常原因和角色权限 | 外部 H5、扫码页、提交成功页、失效页 | 外部用户遇到异常时能看到原因和下一步操作入口。 |