sling_aptsell/ddl_autoflowdemo.sql

4162 lines
250 KiB
SQL
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

create table `autoflow-demo`.aldebaran_alembic_version
(
version_num varchar(32) not null
primary key
);
create table `autoflow-demo`.alembic_version
(
version_num varchar(32) not null
primary key
);
create table `autoflow-demo`.auth_roles
(
id int auto_increment
primary key,
create_time datetime default CURRENT_TIMESTAMP null,
update_time datetime default CURRENT_TIMESTAMP null,
code varchar(100) not null,
name varchar(100) not null,
description varchar(255) null,
is_system tinyint(1) default 0 not null,
permissions json null,
constraint code
unique (code),
constraint ix_auth_roles_code
unique (code)
);
create table `autoflow-demo`.auth_user_roles
(
id int auto_increment
primary key,
create_time datetime default CURRENT_TIMESTAMP null,
update_time datetime default CURRENT_TIMESTAMP null,
user_id char(36) not null,
role_id int not null,
crm_user_id varchar(100) null,
constraint fk_1
foreign key (role_id) references `autoflow-demo`.auth_roles (id)
);
create index ix_auth_user_roles_crm_user_id
on `autoflow-demo`.auth_user_roles (crm_user_id);
create index ix_auth_user_roles_user_id
on `autoflow-demo`.auth_user_roles (user_id);
create table `autoflow-demo`.bi_reports
(
id int auto_increment
primary key,
report_id varchar(255) not null comment '报告ID',
plan_id varchar(255) null comment '执行计划ID',
execution_id varchar(255) not null comment '执行ID, naming convention: <plan_id>_<version>',
report_type varchar(64) not null comment '报告类型,例如: previsit, postvisit, quarterly, etc.',
report_name varchar(255) null comment '报告名称',
report_status varchar(32) default 'published' null comment '报告状态: draft, published, archived',
report_content mediumtext null comment '报告内容,包含所有分析结果',
report_content_en mediumtext null comment '报告内容英文',
report_content_multi_lang mediumtext null comment '报告内容(多语言)',
report_metadata text null comment '报告元数据,例如生成参数、来源等',
version int default 1 null comment '报告版本号',
created_by varchar(64) null comment '创建人',
updated_by varchar(64) null comment '更新人',
created_at datetime default CURRENT_TIMESTAMP not null comment '创建时间',
updated_at datetime default CURRENT_TIMESTAMP not null on update CURRENT_TIMESTAMP comment '更新时间',
account_id varchar(255) null comment '关联客户唯一ID用于避免报告查询时解析report_content',
constraint execution_id
unique (execution_id)
)
comment '销售报告表';
create index idx_bi_reports_type_account_created
on `autoflow-demo`.bi_reports (report_type, account_id, created_at);
create index idx_created_at
on `autoflow-demo`.bi_reports (created_at);
create index idx_execution_id
on `autoflow-demo`.bi_reports (execution_id);
create index idx_report_id
on `autoflow-demo`.bi_reports (report_id);
create index idx_report_type
on `autoflow-demo`.bi_reports (report_type);
create table `autoflow-demo`.corporation
(
id bigint auto_increment comment '主键ID自增序列'
primary key,
corp_name varchar(255) not null comment '企业全称',
group_id varchar(255) null comment '集团名称',
social_credit_code varchar(18) null comment '统一社会信用代码18位国家标准',
registered_country varchar(255) null comment '企业注册国家/地区',
tenant_key varchar(128) null comment '飞书租户唯一标识',
app_id varchar(64) null comment '飞书应用ID',
app_secret varchar(256) null comment '飞书应用密钥',
business_status varchar(20) null comment '经营状态(如存续、吊销等)',
creator varchar(255) null comment '创建者',
create_time datetime default CURRENT_TIMESTAMP null comment '创建时间',
updater varchar(255) null comment '更新者',
update_time datetime default CURRENT_TIMESTAMP null on update CURRENT_TIMESTAMP comment '最后更新时间',
version int default 1 null comment '数据版本',
delete_flag tinyint(1) default 0 null comment '删除标识, 1已删除',
corp_en_name varchar(255) not null comment '企业en名称',
extra_info json null comment '扩展信息'
);
create table `autoflow-demo`.crm_account_assessment
(
id int auto_increment
primary key,
unique_id varchar(255) not null comment '唯一性ID必填',
assessment_date date not null comment '日期',
account_id varchar(255) null comment '客户ID',
account_name varchar(255) null comment '客户名称',
customer_type varchar(50) null comment '客户类型(end_customer/partner)',
account_level varchar(255) null comment '客户等级',
is_first_visit tinyint(1) null comment '是否首次拜访',
assessment_flag text null comment '评估结果(red/yellow/green)',
assessment_description text null comment '评估描述',
assessment_description_en text null comment '评估描述英文',
opportunity_ids text null comment '商机UniqueID列表, json Array格式',
opportunity_names text null comment '商机名称列表, json Array格式',
follow_up_note text null comment '销售跟进记录',
follow_up_note_en text null comment '销售跟进记录(英文)',
follow_up_next_step text null comment '销售跟进下一步',
follow_up_next_step_en text null comment '销售跟进下一步(英文)',
correlation_id varchar(255) null comment '关联ID用于链接到CRMDailyAccountStatistics',
create_time datetime default CURRENT_TIMESTAMP not null comment '创建时间',
update_time datetime default CURRENT_TIMESTAMP not null comment '更新时间',
created_at datetime default CURRENT_TIMESTAMP not null comment '创建时间',
updated_at datetime default CURRENT_TIMESTAMP not null on update CURRENT_TIMESTAMP comment '更新时间'
)
comment '客户评估表';
create table `autoflow-demo`.crm_account_opportunity_assessment
(
id int auto_increment
primary key,
unique_id varchar(255) not null comment '唯一性ID必填',
assessment_date date not null comment '评估日期',
account_id varchar(255) null comment '客户ID',
account_name varchar(255) null comment '客户名称',
opportunity_id varchar(255) null comment '商机IDNULL表示未关联商机',
opportunity_name varchar(255) null comment '商机名称NULL表示未关联商机',
assessment_flag text null comment '评估结果(red/yellow/green)',
assessment_description text null comment '评估描述',
assessment_description_en text null comment '评估描述(英文)',
customer_type varchar(50) null comment '客户类型(end_customer/partner)',
account_level varchar(255) null comment '客户等级',
is_first_visit tinyint(1) null comment '是否首次拜访',
follow_up_note text null comment '销售跟进记录',
follow_up_note_en text null comment '销售跟进记录(英文)',
follow_up_next_step text null comment '销售跟进下一步',
follow_up_next_step_en text null comment '销售跟进下一步(英文)',
correlation_id varchar(255) null comment '关联ID用于链接到部门/公司汇总',
create_time datetime default CURRENT_TIMESTAMP not null comment '创建时间',
update_time datetime default CURRENT_TIMESTAMP not null comment '更新时间',
created_at datetime default CURRENT_TIMESTAMP not null comment '创建时间',
updated_at datetime default CURRENT_TIMESTAMP not null on update CURRENT_TIMESTAMP comment '更新时间'
)
comment '客户商机评估表';
create index idx_account_opportunity_date
on `autoflow-demo`.crm_account_opportunity_assessment (account_id, opportunity_id, assessment_date);
create index idx_assessment_date
on `autoflow-demo`.crm_account_opportunity_assessment (assessment_date);
create index idx_correlation_id
on `autoflow-demo`.crm_account_opportunity_assessment (correlation_id);
create index idx_opportunity_id
on `autoflow-demo`.crm_account_opportunity_assessment (opportunity_id);
create table `autoflow-demo`.crm_account_review_execution_index
(
id int auto_increment
primary key,
account_id varchar(255) not null comment '客户唯一性ID',
execution_id varchar(255) not null comment '最新review2报告的execution_id',
report_id varchar(255) null comment '报告ID',
plan_id varchar(255) null comment '执行计划ID',
report_created_time datetime not null comment '报告创建时间',
last_updated_time datetime default CURRENT_TIMESTAMP not null comment '索引最后更新时间',
create_time datetime default CURRENT_TIMESTAMP not null comment '索引创建时间',
created_at datetime default CURRENT_TIMESTAMP not null comment '创建时间',
updated_at datetime default CURRENT_TIMESTAMP not null on update CURRENT_TIMESTAMP comment '更新时间',
constraint account_id
unique (account_id)
)
comment '客户复盘执行索引表';
create index idx_execution_id
on `autoflow-demo`.crm_account_review_execution_index (execution_id);
create index idx_report_created_time
on `autoflow-demo`.crm_account_review_execution_index (report_created_time);
create table `autoflow-demo`.crm_accounts
(
id int auto_increment comment '主键ID'
primary key,
unique_id varchar(255) null comment '唯一性ID必填',
customer_name varchar(255) null comment '客户名称(必填)',
customer_source varchar(255) null comment '客户来源(必填)',
person_in_charge varchar(255) null comment '负责人',
department varchar(255) null comment '负责人主属部门',
customer_level varchar(255) null comment '客户等级',
industry varchar(255) null comment '客户行业(必填)',
phone varchar(255) null comment '电话',
website text null comment '网址',
email varchar(255) null comment '邮件',
remarks text null comment '备注',
allocation_status varchar(255) null comment '分配状态',
deal_status varchar(255) null comment '成交状态',
last_follow_up datetime null comment '最后跟进时间',
last_deal_time datetime null comment '最后一次成交时间',
allocation_time datetime null comment '领取/分配时间',
business_type varchar(255) null comment '业务类型(必填)',
life_status varchar(255) null comment '生命状态',
belonging_department varchar(255) null comment '归属部门',
creator varchar(255) null comment '创建人',
creation_time datetime null comment '创建时间',
last_modifier varchar(255) null comment '最后修改人',
last_modified_time datetime null comment '最后修改时间',
customer_identifier varchar(255) null comment '客户标识',
customer_code varchar(255) null comment '客户编号',
earliest_deal_date datetime null comment '最早成交日期',
latest_deal_date datetime null comment '最新成交日期',
customer_abbreviation varchar(255) null comment '客户简称',
customer_attribute varchar(255) null comment '客户属性',
partner varchar(255) null comment '合作伙伴',
belonging_pool varchar(255) null comment '所属公海',
legal_representative varchar(255) null comment '法定代表人',
country varchar(255) null comment '国家',
province varchar(255) null comment '',
city varchar(255) null comment '',
district varchar(255) null comment '',
address varchar(512) null comment '详细地址',
customer_scale_new varchar(255) null comment '客户规模-新',
first_deal_date varchar(255) null comment '最早成交日期(归档日期)',
account_level varchar(255) null comment 'Name Account 分级',
key_actions text null comment 'top 3 key action',
daily_followup text null comment '客户日常跟进',
account_type varchar(255) null comment '实体类型',
delete_flag tinyint(1) null comment '删除标识0-正常1-已删除)',
extra json null comment '扩展内容',
support_person json null comment '辅助人员列表JSON格式存储多个辅助人员的userid和name',
status varchar(255) null comment '客户状态("未生效"、"审核中"、"活跃"、"已废弃"',
person_in_charge_id varchar(255) null comment '负责人ID对应crm_user.user_id',
constraint uq_crm_accounts_unique_id
unique (unique_id)
)
comment '客户表';
create table `autoflow-demo`.crm_accounts_snapshot
(
id int auto_increment comment '主键ID'
primary key,
unique_id varchar(255) null comment '唯一性ID必填',
customer_name varchar(255) null comment '客户名称(必填)',
customer_source varchar(255) null comment '客户来源(必填)',
person_in_charge varchar(255) null comment '负责人',
department varchar(255) null comment '负责人主属部门',
customer_level varchar(255) null comment '客户等级',
industry varchar(255) null comment '客户行业(必填)',
phone varchar(255) null comment '电话',
website text null comment '网址',
email varchar(255) null comment '邮件',
remarks text null comment '备注',
allocation_status varchar(255) null comment '分配状态',
deal_status varchar(255) null comment '成交状态',
last_follow_up datetime null comment '最后跟进时间',
last_deal_time datetime null comment '最后一次成交时间',
allocation_time datetime null comment '领取/分配时间',
business_type varchar(255) null comment '业务类型(必填)',
life_status varchar(255) null comment '生命状态',
belonging_department varchar(255) null comment '归属部门',
creator varchar(255) null comment '创建人',
creation_time datetime null comment '创建时间',
last_modifier varchar(255) null comment '最后修改人',
last_modified_time datetime null comment '最后修改时间',
customer_identifier varchar(255) null comment '客户标识',
customer_code varchar(255) null comment '客户编号',
earliest_deal_date datetime null comment '最早成交日期',
latest_deal_date datetime null comment '最新成交日期',
customer_abbreviation varchar(255) null comment '客户简称',
customer_attribute varchar(255) null comment '客户属性',
partner varchar(255) null comment '合作伙伴',
belonging_pool varchar(255) null comment '所属公海',
legal_representative varchar(255) null comment '法定代表人',
country varchar(255) null comment '国家',
province varchar(255) null comment '',
city varchar(255) null comment '',
district varchar(255) null comment '',
address varchar(512) null comment '详细地址',
customer_scale_new varchar(255) null comment '客户规模-新',
first_deal_date varchar(255) null comment '最早成交日期(归档日期)',
account_level varchar(255) null comment 'Name Account 分级',
key_actions text null comment 'top 3 key action',
daily_followup text null comment '客户日常跟进',
snapshot_date date null comment '快照日期',
account_type varchar(255) null comment '实体类型',
delete_flag tinyint(1) null comment '删除标识0-正常1-已删除)',
extra json null comment '扩展内容',
support_person json null comment '辅助人员列表JSON格式存储多个辅助人员的userid和name',
status varchar(255) null comment '客户状态("未生效"、"审核中"、"活跃"、"已废弃"',
person_in_charge_id varchar(255) null comment '负责人ID对应crm_user.user_id',
constraint uq_snapshot_unique_id_snapshot_date
unique (unique_id, snapshot_date)
)
comment '客户表快照';
create table `autoflow-demo`.crm_achievement_timeseries
(
id bigint auto_increment
primary key,
period_type varchar(10) not null comment 'yearly, quarterly, monthly',
period varchar (20) not null comment 'FY26, FY26Q1, 2025-04',
scope_type varchar(20) not null comment 'company, department, owner',
scope_id varchar(100) null comment 'department_id or owner_id; NULL for company',
scope_name varchar(200) null comment 'department or owner name; NULL for company',
granularity varchar(10) not null comment 'daily or weekly',
point_date date not null comment 'date this data point represents',
target decimal(18, 2) null comment 'target line',
cum_closed decimal(18, 2) null comment 'Closed Won by close_date ≤ point_date',
cum_commit_sales decimal(18, 2) null comment 'cum_closed + sales Commit projected',
cum_commit_ai decimal(18, 2) null comment 'cum_closed + AI Commit projected',
cum_upside_sales decimal(18, 2) null comment 'cum_closed + Commit + Upside projected',
version int default 1 not null,
is_active tinyint(1) default 1 not null comment '1=active, 0=superseded',
superseded_at datetime null,
superseded_by varchar(100) null,
as_of_date date not null comment 'run_date when this snapshot was computed',
data_cutoff_date date null comment 'Data cut-off (inclusive). When NULL, treat as_of_date as cut-off.',
computed_at datetime not null,
execution_id varchar(100) null
)
comment 'Pre-computed cumulative achievement time-series for line chart';
create index idx_ts_as_of
on `autoflow-demo`.crm_achievement_timeseries (as_of_date, is_active);
create index idx_ts_lookup
on `autoflow-demo`.crm_achievement_timeseries (period_type, period, scope_type, scope_id, granularity, as_of_date,
point_date, is_active);
create index idx_ts_version
on `autoflow-demo`.crm_achievement_timeseries (period, version, is_active);
create table `autoflow-demo`.crm_acv_targets
(
id int auto_increment
primary key,
fiscal_year varchar(9) not null comment '财年如2026/2027',
quarter varchar(8) null comment '季度如Q1、Q2、Q3、Q4NULL表示全年',
category varchar(255) null comment '类别(FCST/FCST_NE)',
department varchar(255) null comment '部门',
owner varchar(255) null comment '负责人',
target_acv decimal(18, 2) not null comment 'ACV目标',
notes text null comment '备注',
create_time datetime default CURRENT_TIMESTAMP not null comment '创建时间',
update_time datetime default CURRENT_TIMESTAMP not null comment '更新时间',
biz_key varchar(16) as (null) comment '业务主键如FY26Q1全年为FY26',
created_at datetime default CURRENT_TIMESTAMP not null comment '创建时间',
updated_at datetime default CURRENT_TIMESTAMP not null on update CURRENT_TIMESTAMP comment '更新时间'
)
comment '按财年/季度保存ACV目标quarter为NULL表示全年';
create table `autoflow-demo`.crm_alembic_version
(
version_num varchar(32) not null
primary key
);
create table `autoflow-demo`.crm_api_clients
(
id int auto_increment comment '主键ID'
primary key,
client_id varchar(255) null comment '客户端ID',
client_secret_hash varchar(255) null comment '客户端密钥哈希',
client_name varchar(255) null comment '客户端名称',
is_active tinyint(1) null comment '是否激活',
access_token_expiry_hours int null comment '访问令牌过期时间(小时)',
refresh_token_expiry_days int null comment '刷新令牌过期时间(天)',
created_at timestamp null comment '创建时间',
updated_at timestamp null comment '更新时间'
)
comment 'CRM API 客户端';
create table `autoflow-demo`.crm_api_refresh_tokens
(
id int auto_increment comment '主键ID'
primary key,
client_id varchar(255) null comment '客户端ID',
token_hash varchar(255) null comment '令牌哈希',
expires_at timestamp not null comment '过期时间',
is_revoked tinyint(1) null comment '是否撤销',
created_at timestamp null comment '创建时间'
)
comment 'CRM API 刷新令牌';
create table `autoflow-demo`.crm_charge_audit
(
id int auto_increment
primary key,
execution_id varchar(255) not null comment '工作流执行ID',
plan_id varchar(255) not null comment '执行计划ID',
report_id varchar(255) null comment '报告ID',
version int null comment '执行版本',
step_id varchar(255) null comment '产生计费项的步骤ID',
charge_item_type varchar(100) not null comment '计费项类型',
business_object_type varchar(100) not null comment '业务对象类型如account/opportunity',
business_object_id varchar(255) not null comment '业务对象ID',
business_object_name varchar(255) null comment '业务对象名称',
trace_id varchar(100) not null comment '外部计费trace_id',
operator varchar(100) not null comment '操作人',
item_url varchar(500) null comment '计费项结果URL',
review_detail varchar(500) not null comment '计费明细链接或引用',
ai_module_key varchar(100) not null comment 'AI模块key',
status varchar(50) default 'pending' not null comment 'pending/sent/failed/skipped',
external_usage_record_id varchar(255) null comment '外部用量记录ID',
external_sync_status varchar(100) null comment '外部同步状态',
charge_request json null comment '发送给外部计费服务的请求',
charge_response json null comment '外部计费服务响应',
error_message text null comment '错误信息',
created_at datetime default CURRENT_TIMESTAMP not null comment '创建时间',
updated_at datetime default CURRENT_TIMESTAMP not null on update CURRENT_TIMESTAMP comment '更新时间',
charged_at datetime null comment '发送计费时间',
constraint uq_crm_charge_audit_business_item
unique (execution_id, ai_module_key, business_object_type, business_object_id),
constraint uq_crm_charge_audit_trace_id
unique (trace_id)
)
comment 'AI计费审计表';
create index idx_crm_charge_audit_business_object
on `autoflow-demo`.crm_charge_audit (business_object_type, business_object_id);
create index idx_crm_charge_audit_execution
on `autoflow-demo`.crm_charge_audit (execution_id, plan_id);
create index idx_crm_charge_audit_status
on `autoflow-demo`.crm_charge_audit (status);
create table `autoflow-demo`.crm_contacts
(
id int auto_increment comment '主键ID'
primary key,
unique_id varchar(255) not null comment '唯一性ID必填',
name varchar(255) not null comment '联系人姓名(必填)',
customer_id varchar(255) null comment '客户名称_唯一性ID',
customer_name varchar(255) null comment '客户名称',
department1 varchar(255) null comment '部门1',
position1 varchar(255) null comment '职务1',
gender varchar(10) null comment '性别',
birthday date null comment '生日',
key_decision_maker varchar(255) null comment '关键决策人',
mobile1 varchar(255) null comment '手机',
phone1 varchar(255) null comment '电话',
email varchar(255) null comment '邮件',
address varchar(255) null comment '联系地址',
responsible_person varchar(255) not null comment '负责人(必填)',
responsible_department varchar(255) null comment '负责人主属部门',
affiliate_department varchar(255) null comment '归属部门',
attitude varchar(255) null comment '态度',
status varchar(255) null comment '状态',
department varchar(255) null comment '部门',
position varchar(255) null comment '职务',
email_account varchar(255) null comment '邮箱账号',
wechat varchar(255) null comment '微信',
position_id varchar(255) null comment '联系人职务_唯一性ID',
position_name varchar(255) null comment '联系人职务',
source varchar(255) null comment '来源',
direct_superior varchar(255) null comment '直属上级',
direct_superior_id varchar(255) null comment '直属上级_唯一性ID',
last_modified_time datetime null comment '最后修改时间',
delete_flag tinyint(1) null comment '删除标识0-正常1-已删除)',
extra json null comment '扩展内容',
constraint uq_crm_contacts_unique_id
unique (unique_id)
)
comment '联系人信息表';
create table `autoflow-demo`.crm_daily_account_statistics
(
id int auto_increment
primary key,
unique_id varchar(255) not null comment '唯一性ID',
report_date date not null comment '日期',
sales_id varchar(255) null comment '销售ID',
sales_name varchar(255) null comment '销售名字',
department_id varchar(255) null comment '部门ID',
department_name varchar(255) null comment '部门名字',
assessment_red_count int null comment '评估为red的次数',
assessment_yellow_count int null comment '评估为yellow的次数',
assessment_green_count int null comment '评估为green的次数',
end_customer_total_follow_up int null comment '总跟进最终客户数',
end_customer_total_first_visit int null comment '总首次拜访最终客户数',
end_customer_total_multi_visit int null comment '总多次拜访最终客户数',
partner_total_follow_up int null comment '总跟进合作伙伴数',
partner_total_first_visit int null comment '总首次拜访合作伙伴数',
partner_total_multi_visit int null comment '总多次拜访合作伙伴数',
create_time datetime default CURRENT_TIMESTAMP not null comment '创建时间',
update_time datetime default CURRENT_TIMESTAMP not null comment '更新时间',
created_at datetime default CURRENT_TIMESTAMP not null comment '创建时间',
updated_at datetime default CURRENT_TIMESTAMP not null on update CURRENT_TIMESTAMP comment '更新时间'
)
comment '客户日报统计表';
create table `autoflow-demo`.crm_data_authority
(
id bigint auto_increment comment '主键ID自增序列'
primary key,
data_id varchar(255) null comment '数据id',
user_id varchar(255) null comment '用户id',
crm_id varchar(255) null comment 'CRM用户id',
type varchar(255) null comment '数据类型',
create_time datetime null comment '创建时间',
update_time datetime null comment '最后更新时间',
delete_flag tinyint(1) null comment '删除标识, True已删除',
constraint uq_crm_data_authority
unique (data_id, crm_id, type)
)
comment 'crm数据权限表';
create index idx_crm_data_authority_crm_id
on `autoflow-demo`.crm_data_authority (crm_id);
create index idx_crm_data_authority_data_id
on `autoflow-demo`.crm_data_authority (data_id);
create index idx_crm_data_authority_type
on `autoflow-demo`.crm_data_authority (type);
create index idx_crm_data_authority_user_id
on `autoflow-demo`.crm_data_authority (user_id);
create table `autoflow-demo`.crm_data_quality_warnings
(
id int auto_increment
primary key,
unique_id varchar(255) not null comment '唯一性ID',
scan_id varchar(255) not null comment '扫描ID',
rule_id varchar(255) not null comment '规则ID',
severity varchar(50) default 'warning' not null comment '严重级别',
status varchar(50) default 'active' not null comment '状态(active/resolved)',
identity_hash varchar(64) not null comment '规则发现项身份哈希',
source_table varchar(255) not null comment '源表',
source_field varchar(255) null comment '源字段',
source_value varchar(255) null comment '源字段值',
handbook_id varchar(64) null comment 'Playbook handbook_id',
affected_count int default 0 not null comment '影响记录数',
sample_entity_ids text null comment '样例实体ID(JSON)',
details text null comment '规则上下文(JSON)',
first_seen_at datetime default CURRENT_TIMESTAMP not null comment '首次发现时间',
last_seen_at datetime default CURRENT_TIMESTAMP not null comment '最近发现时间',
resolved_at datetime null comment '解决时间',
created_at datetime default CURRENT_TIMESTAMP not null comment '创建时间',
updated_at datetime default CURRENT_TIMESTAMP not null on update CURRENT_TIMESTAMP comment '更新时间',
constraint idx_dq_warning_identity_status
unique (identity_hash, status)
)
comment '数据质量告警表';
create index idx_dq_warning_last_seen
on `autoflow-demo`.crm_data_quality_warnings (last_seen_at);
create index idx_dq_warning_rule_status
on `autoflow-demo`.crm_data_quality_warnings (rule_id, status);
create index idx_dq_warning_severity_status
on `autoflow-demo`.crm_data_quality_warnings (severity, status);
create table `autoflow-demo`.crm_department
(
id int auto_increment comment '主键ID自增'
primary key,
unique_id varchar(255) not null comment '部门唯一标识',
department_name varchar(255) not null comment '部门名称',
parent_department_id varchar(255) null comment '父部门ID',
description text null comment '部门描述',
is_active tinyint(1) default 1 null comment '是否启用',
creator varchar(255) null comment '创建人',
creation_time datetime null comment '创建时间',
last_modifier varchar(255) null comment '最后修改人',
last_modified_time datetime null comment '最后修改时间',
delete_flag tinyint(1) null comment '删除标识0-正常1-已删除)',
extra json null comment '扩展内容',
constraint uq_crm_department_unique_id
unique (unique_id)
)
comment 'CRM 部门表';
create table `autoflow-demo`.crm_department_daily_summary
(
id int auto_increment
primary key,
unique_id varchar(255) not null comment '唯一性ID必填',
report_date date not null comment '日期',
summary_type varchar(50) not null comment '汇总类型(department/company)',
department_id varchar(255) null comment '部门ID仅当summary_type=department时',
department_name varchar(255) null comment '部门名称仅当summary_type=department时',
assessment_red_count int default 0 null comment '评估为red的次数',
assessment_yellow_count int default 0 null comment '评估为yellow的次数',
assessment_green_count int default 0 null comment '评估为green的次数',
total_assessments int default 0 null comment '总评估数',
total_first_visit int default 0 null comment '总首次拜访数',
total_multi_visit int default 0 null comment '总多次拜访数',
end_customer_total_red_count int default 0 null comment '最终客户总计评估为red的次数',
end_customer_total_yellow_count int default 0 null comment '最终客户总计评估为yellow的次数',
end_customer_total_green_count int default 0 null comment '最终客户总计评估为green的次数',
end_customer_total_count int default 0 null comment '最终客户总计数量',
end_customer_first_visit_red_count int default 0 null comment '最终客户首次跟进评估为red的次数',
end_customer_first_visit_yellow_count int default 0 null comment '最终客户首次跟进评估为yellow的次数',
end_customer_first_visit_green_count int default 0 null comment '最终客户首次跟进评估为green的次数',
end_customer_first_visit_count int default 0 null comment '最终客户首次跟进数量',
end_customer_regular_visit_red_count int default 0 null comment '最终客户多次跟进评估为red的次数',
end_customer_regular_visit_yellow_count int default 0 null comment '最终客户多次跟进评估为yellow的次数',
end_customer_regular_visit_green_count int default 0 null comment '最终客户多次跟进评估为green的次数',
end_customer_regular_visit_count int default 0 null comment '最终客户多次跟进数量',
partner_total_count int default 0 null comment '合作伙伴总计数量',
partner_first_visit_count int default 0 null comment '合作伙伴首次跟进数量',
partner_regular_visit_count int default 0 null comment '合作伙伴多次跟进数量',
partner_red_count int default 0 null comment '合作伙伴评估为red的次数',
partner_yellow_count int default 0 null comment '合作伙伴评估为yellow的次数',
partner_green_count int default 0 null comment '合作伙伴评估为green的次数',
summary_content text null comment '汇总内容(中文)',
summary_content_en text null comment '汇总内容(英文)',
summary_first_visit text null comment '首次拜访汇总内容(中文)',
summary_regular_visit text null comment '多次拜访汇总内容(中文)',
key_highlights text null comment '关键亮点JSON格式',
key_concerns text null comment '关键关注点JSON格式',
create_time datetime default CURRENT_TIMESTAMP not null comment '创建时间',
update_time datetime default CURRENT_TIMESTAMP not null comment '更新时间',
summary_red text null comment '红灯评估汇总(中文;【首次跟进】与【多次跟进】分段)',
summary_yellow text null comment '黄灯评估汇总(中文;【首次跟进】与【多次跟进】分段)',
summary_green text null comment '绿灯评估汇总(中文;【首次跟进】与【多次跟进】分段)',
created_at datetime default CURRENT_TIMESTAMP not null comment '创建时间',
updated_at datetime default CURRENT_TIMESTAMP not null on update CURRENT_TIMESTAMP comment '更新时间'
)
comment '部门/公司日报汇总表';
create index idx_department_date
on `autoflow-demo`.crm_department_daily_summary (department_id, report_date);
create index idx_report_date_type
on `autoflow-demo`.crm_department_daily_summary (report_date, summary_type);
create index idx_unique_id
on `autoflow-demo`.crm_department_daily_summary (unique_id);
create table `autoflow-demo`.crm_eval_metrics
(
id int auto_increment
primary key,
unique_id varchar(255) not null comment '唯一性ID',
metric_name varchar(255) not null comment '指标名称',
metric_type varchar(255) not null comment '指标类型',
account_id varchar(255) null comment '客户ID',
opportunity_id varchar(255) null comment '商机ID',
metric_value float null comment '指标值',
metric_content text null comment '指标内容',
metric_unit varchar(255) null comment '指标单位',
metric_description text null comment '指标描述',
eval_time datetime null comment '评估时间',
is_active tinyint(1) default 1 null comment '是否为当前有效评估',
owner varchar(255) null comment '负责人姓名用于owner级别KPI',
owner_id varchar(255) null comment '负责人唯一性ID用于owner级别KPI',
department varchar(255) null comment '部门名称用于department级别KPI',
department_id varchar(255) null comment '部门唯一性ID用于department级别KPI',
time_period varchar(50) null comment '时间周期如Q1+Q2+Q3+Q4用于Review 1s',
report_date date null comment '报告日期(报告生成的日期)',
report_datetime datetime null comment '报告精确时间',
report_week_of_year int null comment '年内周数(1-53)',
report_month_of_year int null comment '年内月份(1-12)',
report_quarter_of_year int null comment '年内季度(1-4)',
report_year int null comment '报告年份',
execution_id varchar(255) null comment '工作流执行ID关联到报告',
create_time datetime default CURRENT_TIMESTAMP not null comment '创建时间',
update_time datetime default CURRENT_TIMESTAMP not null comment '更新时间',
created_at datetime default CURRENT_TIMESTAMP not null comment '创建时间',
updated_at datetime default CURRENT_TIMESTAMP not null on update CURRENT_TIMESTAMP comment '更新时间'
)
comment '评估指标表';
create index idx_execution_id
on `autoflow-demo`.crm_eval_metrics (execution_id);
create index idx_owner_dept_period
on `autoflow-demo`.crm_eval_metrics (owner, department, time_period);
create index idx_owner_id_dept_id
on `autoflow-demo`.crm_eval_metrics (owner_id, department_id);
create index idx_report_date
on `autoflow-demo`.crm_eval_metrics (report_date);
create index idx_report_year_month
on `autoflow-demo`.crm_eval_metrics (report_year, report_month_of_year);
create index idx_report_year_quarter
on `autoflow-demo`.crm_eval_metrics (report_year, report_quarter_of_year);
create index idx_report_year_week
on `autoflow-demo`.crm_eval_metrics (report_year, report_week_of_year);
create table `autoflow-demo`.crm_external_ingest_audit
(
id bigint auto_increment comment '主键ID自增'
primary key,
table_name varchar(64) not null comment '表名',
unique_id varchar(255) not null comment '唯一ID',
action varchar(16) not null comment '动作insert/update',
ingested_at datetime default CURRENT_TIMESTAMP not null comment '写入时间'
);
create index idx_crm_audit_table_time
on `autoflow-demo`.crm_external_ingest_audit (table_name, ingested_at);
create index idx_crm_audit_table_uid_time
on `autoflow-demo`.crm_external_ingest_audit (table_name, unique_id, ingested_at);
create table `autoflow-demo`.crm_forecast_type_mappings
(
id int auto_increment
primary key,
internal_type varchar(50) not null comment '内部类型键 (e.g. commit, closed_won, upside, pipeline, lost_cancel)',
customer_values text not null comment '客户侧文本值列表JSON数组不区分大小写匹配',
display_order int not null comment '前端展示顺序(数字越小越靠前)',
is_active tinyint(1) default 1 not null comment '是否启用',
description text null comment '配置描述',
create_time datetime default CURRENT_TIMESTAMP not null comment '创建时间',
update_time datetime default CURRENT_TIMESTAMP not null comment '更新时间',
created_at datetime default CURRENT_TIMESTAMP not null comment '创建时间',
updated_at datetime default CURRENT_TIMESTAMP not null on update CURRENT_TIMESTAMP comment '更新时间',
constraint idx_crm_ftm_internal_type
unique (internal_type)
)
comment 'Forecast type 标准映射表';
create index idx_crm_ftm_display_order
on `autoflow-demo`.crm_forecast_type_mappings (display_order);
create index idx_crm_ftm_is_active
on `autoflow-demo`.crm_forecast_type_mappings (is_active);
create table `autoflow-demo`.crm_ingest_push_audit
(
id bigint auto_increment
primary key,
push_key varchar(128) null,
table_name varchar(64) not null,
status varchar(16) not null,
inserted int default 0 not null,
updated int default 0 not null,
skipped int default 0 not null,
error_message text null,
detail_json json null,
created_at timestamp default CURRENT_TIMESTAMP not null,
updated_at timestamp default CURRENT_TIMESTAMP not null on update CURRENT_TIMESTAMP
)
charset = utf8mb4;
create index idx_created_at
on `autoflow-demo`.crm_ingest_push_audit (created_at);
create index idx_push_key
on `autoflow-demo`.crm_ingest_push_audit (push_key);
create index idx_status
on `autoflow-demo`.crm_ingest_push_audit (status);
create index idx_table_name
on `autoflow-demo`.crm_ingest_push_audit (table_name);
create table `autoflow-demo`.crm_ka_accounts
(
id int auto_increment
primary key,
account_id varchar(255) not null comment '客户唯一性ID',
account_name varchar(255) not null comment '客户名称',
create_time datetime default CURRENT_TIMESTAMP not null comment '创建时间',
status varchar(20) null comment '状态: active, inactive',
flag varchar(255) null comment '标志位,区分不同类别的KA客户',
created_at datetime default CURRENT_TIMESTAMP not null comment '创建时间',
updated_at datetime default CURRENT_TIMESTAMP not null on update CURRENT_TIMESTAMP comment '更新时间'
)
comment 'KA客户表';
create index idx_account
on `autoflow-demo`.crm_ka_accounts (account_id);
create table `autoflow-demo`.crm_key_opportunities
(
id int auto_increment
primary key,
opportunity_id varchar(255) not null comment '商机唯一性ID',
opportunity_name varchar(255) not null comment '商机名称',
account_id varchar(255) not null comment '客户唯一性ID',
account_name varchar(255) not null comment '客户名称',
opportunity_stage varchar(255) null comment '商机阶段',
expected_closing_quarter varchar(50) null comment '预期成交季度',
create_time datetime default CURRENT_TIMESTAMP not null comment '创建时间',
status varchar(20) default 'active' null comment '状态: active, inactive',
flag varchar(255) null comment '标志位,区分不同用途的关键商机',
created_at datetime default CURRENT_TIMESTAMP not null comment '创建时间',
updated_at datetime default CURRENT_TIMESTAMP not null on update CURRENT_TIMESTAMP comment '更新时间'
)
comment '关键商机表';
create index idx_account_id
on `autoflow-demo`.crm_key_opportunities (account_id);
create index idx_expected_closing_quarter
on `autoflow-demo`.crm_key_opportunities (expected_closing_quarter);
create index idx_flag
on `autoflow-demo`.crm_key_opportunities (flag);
create index idx_opportunity_id
on `autoflow-demo`.crm_key_opportunities (opportunity_id);
create index idx_status
on `autoflow-demo`.crm_key_opportunities (status);
create table `autoflow-demo`.crm_log_processing_status
(
id int auto_increment
primary key,
unique_id varchar(255) not null comment '唯一性ID必填',
source_table varchar(255) null comment '源数据表名',
source_field_name varchar(255) null comment '源字段名称',
source_id int null comment '源数据ID',
source_unique_id varchar(255) null comment '源数据唯一性ID',
processing_status varchar(50) default 'PENDING' not null comment '处理状态PENDING/PROCESSING/PROCESSED/FAILED',
processing_stage varchar(50) null comment '处理阶段INITIAL/EXTRACT/TRANSFORM/LOAD',
processing_attempts int default 0 not null comment '处理尝试次数',
last_processing_time datetime null comment '最后处理时间',
processing_error text null comment '处理错误信息',
processing_mode varchar(50) null comment '处理模式APPEND/CREATE',
flag varchar(255) null comment '标志位,标记该数据被处理的任务',
source_data_hash varchar(64) null comment '源数据哈希值(用于检测变更)',
created_at datetime default CURRENT_TIMESTAMP not null comment '创建时间',
updated_at datetime default CURRENT_TIMESTAMP not null on update CURRENT_TIMESTAMP comment '更新时间'
)
comment '日志处理状态跟踪表';
create index idx_log_processing_flag_status_source
on `autoflow-demo`.crm_log_processing_status (flag, processing_status, source_unique_id);
create index idx_log_processing_source_unique_id
on `autoflow-demo`.crm_log_processing_status (source_unique_id);
create index idx_processing_status
on `autoflow-demo`.crm_log_processing_status (processing_status);
create index idx_source_id
on `autoflow-demo`.crm_log_processing_status (source_id);
create index idx_source_table
on `autoflow-demo`.crm_log_processing_status (source_table);
create table `autoflow-demo`.crm_message_dispatch_logs
(
id int auto_increment
primary key,
message_id varchar(255) not null comment 'Message ID',
work_item_id varchar(255) null comment 'Work item ID',
event_type varchar(100) not null comment 'Dispatch event type',
detail json null comment 'Event detail',
error_message text null comment 'Error message',
created_at datetime default CURRENT_TIMESTAMP not null comment 'Create time'
)
comment 'Internal message dispatch logs';
create index idx_message_dispatch_logs_message
on `autoflow-demo`.crm_message_dispatch_logs (message_id);
create index idx_message_dispatch_logs_work_item
on `autoflow-demo`.crm_message_dispatch_logs (work_item_id);
create table `autoflow-demo`.crm_message_inbox
(
id int auto_increment
primary key,
message_id varchar(255) not null comment 'Message public ID',
message_type varchar(100) not null comment 'Message type, e.g. crm.visit_record.saved',
source_system varchar(100) not null comment 'Source system',
source_table varchar(255) null comment 'Source table',
source_unique_id varchar(255) null comment 'Source unique ID',
dedupe_key varchar(512) not null comment 'Idempotency key',
payload_hash varchar(64) not null comment 'Canonical payload SHA-256 hash',
payload json not null comment 'Raw message payload',
status varchar(50) default 'RECEIVED' not null comment 'Message status',
priority int default 0 not null comment 'Higher value is claimed first',
available_at datetime default CURRENT_TIMESTAMP not null comment 'Earliest dispatch time',
received_at datetime default CURRENT_TIMESTAMP not null comment 'Message receipt time',
orchestrated_at datetime null comment 'Work item orchestration time',
completed_at datetime null comment 'Terminal completion time',
attempt_count int default 0 not null comment 'Orchestration attempts',
last_error text null comment 'Last orchestration error',
trace_id varchar(255) null comment 'Upstream trace ID',
created_at datetime default CURRENT_TIMESTAMP not null comment 'Create time',
updated_at datetime default CURRENT_TIMESTAMP not null on update CURRENT_TIMESTAMP comment 'Update time',
constraint dedupe_key
unique (dedupe_key),
constraint message_id
unique (message_id)
)
comment 'Internal message inbox';
create index idx_message_inbox_source
on `autoflow-demo`.crm_message_inbox (source_table, source_unique_id);
create index idx_message_inbox_status_available
on `autoflow-demo`.crm_message_inbox (status, available_at, priority);
create table `autoflow-demo`.crm_message_work_item_deps
(
work_item_id varchar(255) not null comment 'Dependent work item ID',
depends_on_work_item_id varchar(255) not null comment 'Prerequisite work item ID',
dependency_type varchar(50) default 'SUCCESS' not null comment 'SUCCESS/COMPLETION/OUTPUT_EXISTS',
output_condition json null comment 'Optional output condition',
created_at datetime default CURRENT_TIMESTAMP not null comment 'Create time',
primary key (work_item_id, depends_on_work_item_id)
)
comment 'Internal message work item dependencies';
create index idx_message_work_item_deps_depends_on
on `autoflow-demo`.crm_message_work_item_deps (depends_on_work_item_id);
create table `autoflow-demo`.crm_message_work_items
(
id int auto_increment
primary key,
work_item_id varchar(255) not null comment 'Work item public ID',
message_id varchar(255) not null comment 'Parent message ID',
work_type varchar(100) default 'workflow_plan' not null comment 'Work item type',
queue_name varchar(100) default 'workflow_parallel' not null comment 'Logical queue name',
priority int default 0 not null comment 'Higher value is claimed first',
plan_id varchar(255) null comment 'Workflow plan ID',
execution_id varchar(255) null comment 'Workflow execution ID',
report_id varchar(255) null comment 'Workflow report ID',
bootstrap_inputs json null comment 'Workflow bootstrap inputs',
status varchar(50) default 'PENDING' not null comment 'Work item status',
attempt_count int default 0 not null comment 'Dispatch attempts',
max_attempts int default 3 not null comment 'Max dispatch attempts',
available_at datetime default CURRENT_TIMESTAMP not null comment 'Earliest dispatch time',
claimed_by varchar(255) null comment 'Dispatcher identity',
claimed_at datetime null comment 'Claim time',
started_at datetime null comment 'Start time',
submitted_at datetime null comment 'Celery submission time',
finished_at datetime null comment 'Terminal time',
last_error text null comment 'Last error',
output_ref json null comment 'Output references or guard results',
created_at datetime default CURRENT_TIMESTAMP not null comment 'Create time',
updated_at datetime default CURRENT_TIMESTAMP not null on update CURRENT_TIMESTAMP comment 'Update time',
constraint work_item_id
unique (work_item_id)
)
comment 'Internal message work items';
create index idx_message_work_items_execution
on `autoflow-demo`.crm_message_work_items (execution_id);
create index idx_message_work_items_message
on `autoflow-demo`.crm_message_work_items (message_id);
create index idx_message_work_items_ready
on `autoflow-demo`.crm_message_work_items (status, queue_name, available_at, priority);
create table `autoflow-demo`.crm_opportunities
(
id int auto_increment comment '主键ID'
primary key,
unique_id varchar(255) null comment '唯一性ID必填',
opportunity_name varchar(255) null comment '商机名称(必填)',
competitor_name varchar(255) null comment '友商名称',
former_name varchar(255) null comment '曾用名',
partner_opportunity_filing_id_unique_id varchar(255) null comment '合作伙伴商机报备编号_唯一性ID',
partner_opportunity_filing_number varchar(255) null comment '合作伙伴商机报备编号',
filing_opportunity_number varchar(255) null comment '报备商机编号',
call_high_notes text null comment 'Call high 情况',
department varchar(255) null comment '归属部门',
current_year_service_forecast float null comment '当财年 Service 收入预测金额(不含税)',
customer_budget_status text null comment '客户预算情况',
todo_and_followup text null comment 'Todo & follow up',
is_framework_quote varchar(255) null comment '是否框架协议报价商机',
customer_id varchar(255) null comment '客户名称_唯一性ID必填',
customer_name varchar(255) null comment '客户名称(必填)',
customer_type varchar(255) null comment '客户属性',
owner varchar(255) null comment '负责人(必填)',
customer_business_scenario varchar(255) null comment '客户业务场景',
forecast_type varchar(255) null comment '预测类型',
estimated_tcv int null comment '预估 TCV',
estimated_acv int null comment '预估 ACV',
expected_closing_date varchar(255) null comment '预计成交日期',
expected_closing_quarter varchar(255) null comment '预计成交季度',
opportunity_type varchar(255) null comment '商机类型',
signing_type varchar(255) null comment '签约类型',
general_agent varchar(255) null comment '总代理',
presales_owner varchar(255) null comment '售前负责人',
opportunity_source varchar(255) null comment '商机来源',
ppl_product_type varchar(255) null comment 'PPL 产品类型',
latest_followup_date_new varchar(255) null comment '最近跟进日期-新',
remarks text null comment '备注说明',
quotation_status varchar(255) null comment '报价单状态',
create_time varchar(255) null comment '创建时间',
last_modifier varchar(255) null comment '最后修改人',
opportunity_stage varchar(255) null comment '商机阶段(必填)',
stage_status varchar(255) null comment '阶段状态',
stage_change_time varchar(255) null comment '阶段变更时间',
last_modified_time datetime null comment '最后修改时间',
business_type varchar(255) null comment '业务类型(必填)',
last_followup_time varchar(255) null comment '最后跟进时间',
owner_main_department varchar(255) null comment '负责人主属部门',
weekly_update text null comment 'Weekly Update',
sl_pull_in varchar(255) null comment 'SL Pull IN',
lost_reason varchar(255) null comment '丢标原因',
bidding_time varchar(255) null comment '招标时间',
renew_risk_level varchar(255) null comment 'Renew 风险度',
customer_category varchar(255) null comment '客户分类',
quotation_order_status varchar(255) null comment '报价/下单状态',
source varchar(255) null comment '来源',
project_contribution text null comment '立项贡献(立项报告的内容)',
project_date varchar(255) null comment '立项日期',
budget_approval_status varchar(255) null comment '预算审批是否完成',
sales_order_archive_status varchar(255) null comment '销售订单归档状态',
is_channel_reported_opportunity varchar(255) null comment '是否渠道报备商机(必填)',
is_project_approved varchar(255) null comment '是否立项',
ops_cd_project_retrospective_schedule text null comment 'ops cd 项目进展倒排时间表',
ops_cd_critical_issues text null comment 'ops cd 重大问题卡点',
ops_cd_business_progress text null comment 'ops cd 商务进展',
kd_closure_milestone text null comment 'KD-关单节点',
kd_decision_chain text null comment 'KD-决策链条',
kd_competitor_strategy text null comment 'KD-友商策略和动态',
kd_breakthrough_basis text null comment 'KD-突破单依据',
key_deal_tag varchar(255) null comment 'key deal 标签',
product_capability_needs text null comment 'KD-急需产品能力(售前更新)',
kp_deal_flag_operations varchar(255) null comment 'KP deal 标记(运营)',
next_stage text null comment '下一阶段解决策略及资源需求',
is_poc varchar(255) null comment '是否进行poc',
poc_status varchar(255) null comment 'PoC 状态',
sales_order_review_status varchar(255) null comment '销售订单审核状态',
delete_flag tinyint(1) null comment '删除标识0-正常1-已删除)',
extra json null comment '扩展内容',
support_person json null comment '辅助人员列表JSON格式存储多个辅助人员的userid和name',
expected_closing_month varchar(255) null comment '预计成交月份(如"2025-01"格式)',
eu_sales varchar(255) null comment 'EU销售人员',
project_delivery_date varchar(255) null comment '项目交付日期',
payment_received_date varchar(255) null comment '回款时间',
invoice_date varchar(255) null comment '开票时间',
belonging_department varchar(255) null comment '归属部门默认用ETL填写owner部门',
department_percentage varchar(255) null comment '部门百分比(默认填写"100%"',
owner_id varchar(255) null comment '负责人ID对应crm_user.user_id',
expected_closing_year int null comment '业绩归属年度',
owner_department_id varchar(255) null comment '负责人部门ID关联crm_user.department_id',
owner_department_name varchar(255) null comment '负责人部门名称来自crm_user.department',
derived_close_date date null comment 'APTSell derived close date (when CRM close_date is missing)',
close_date date null comment '实际成单日期Closed Won',
constraint uq_crm_opportunities_unique_id
unique (unique_id)
)
comment '商机表';
create table `autoflow-demo`.crm_opportunities_snapshot
(
id int auto_increment comment '主键ID'
primary key,
unique_id varchar(255) null comment '唯一性ID必填',
opportunity_name varchar(255) null comment '商机名称(必填)',
competitor_name varchar(255) null comment '友商名称',
former_name varchar(255) null comment '曾用名',
partner_opportunity_filing_id_unique_id varchar(255) null comment '合作伙伴商机报备编号_唯一性ID',
partner_opportunity_filing_number varchar(255) null comment '合作伙伴商机报备编号',
filing_opportunity_number varchar(255) null comment '报备商机编号',
call_high_notes text null comment 'Call high 情况',
department varchar(255) null comment '归属部门',
current_year_service_forecast float null comment '当财年 Service 收入预测金额(不含税)',
customer_budget_status text null comment '客户预算情况',
todo_and_followup text null comment 'Todo & follow up',
is_framework_quote varchar(255) null comment '是否框架协议报价商机',
customer_id varchar(255) null comment '客户名称_唯一性ID必填',
customer_name varchar(255) null comment '客户名称(必填)',
customer_type varchar(255) null comment '客户属性',
owner varchar(255) null comment '负责人(必填)',
customer_business_scenario varchar(255) null comment '客户业务场景',
forecast_type varchar(255) null comment '预测类型',
estimated_tcv int null comment '预估 TCV',
estimated_acv int null comment '预估 ACV',
expected_closing_date varchar(255) null comment '预计成交日期',
expected_closing_quarter varchar(255) null comment '预计成交季度',
opportunity_type varchar(255) null comment '商机类型',
signing_type varchar(255) null comment '签约类型',
general_agent varchar(255) null comment '总代理',
presales_owner varchar(255) null comment '售前负责人',
opportunity_source varchar(255) null comment '商机来源',
ppl_product_type varchar(255) null comment 'PPL 产品类型',
latest_followup_date_new varchar(255) null comment '最近跟进日期-新',
remarks text null comment '备注说明',
quotation_status varchar(255) null comment '报价单状态',
create_time varchar(255) null comment '创建时间',
last_modifier varchar(255) null comment '最后修改人',
opportunity_stage varchar(255) null comment '商机阶段(必填)',
stage_status varchar(255) null comment '阶段状态',
stage_change_time varchar(255) null comment '阶段变更时间',
last_modified_time datetime null comment '最后修改时间',
business_type varchar(255) null comment '业务类型(必填)',
last_followup_time varchar(255) null comment '最后跟进时间',
owner_main_department varchar(255) null comment '负责人主属部门',
weekly_update text null comment 'Weekly Update',
sl_pull_in varchar(255) null comment 'SL Pull IN',
lost_reason varchar(255) null comment '丢标原因',
bidding_time varchar(255) null comment '招标时间',
renew_risk_level varchar(255) null comment 'Renew 风险度',
customer_category varchar(255) null comment '客户分类',
quotation_order_status varchar(255) null comment '报价/下单状态',
source varchar(255) null comment '来源',
project_contribution text null comment '立项贡献(立项报告的内容)',
project_date varchar(255) null comment '立项日期',
budget_approval_status varchar(255) null comment '预算审批是否完成',
sales_order_archive_status varchar(255) null comment '销售订单归档状态',
is_channel_reported_opportunity varchar(255) null comment '是否渠道报备商机(必填)',
is_project_approved varchar(255) null comment '是否立项',
ops_cd_project_retrospective_schedule text null comment 'ops cd 项目进展倒排时间表',
ops_cd_critical_issues text null comment 'ops cd 重大问题卡点',
ops_cd_business_progress text null comment 'ops cd 商务进展',
kd_closure_milestone text null comment 'KD-关单节点',
kd_decision_chain text null comment 'KD-决策链条',
kd_competitor_strategy text null comment 'KD-友商策略和动态',
kd_breakthrough_basis text null comment 'KD-突破单依据',
key_deal_tag varchar(255) null comment 'key deal 标签',
product_capability_needs text null comment 'KD-急需产品能力(售前更新)',
snapshot_date date null comment '快照日期',
kp_deal_flag_operations varchar(255) null comment 'KP deal 标记(运营)',
next_stage text null comment '下一阶段解决策略及资源需求',
is_poc varchar(255) null comment '是否进行poc',
poc_status varchar(255) null comment 'PoC 状态',
sales_order_review_status varchar(255) null comment '销售订单审核状态',
delete_flag tinyint(1) null comment '删除标识0-正常1-已删除)',
extra json null comment '扩展内容',
support_person json null comment '辅助人员列表JSON格式存储多个辅助人员的userid和name',
expected_closing_month varchar(255) null comment '预计成交月份(如"2025-01"格式)',
eu_sales varchar(255) null comment 'EU销售人员',
project_delivery_date varchar(255) null comment '项目交付日期',
payment_received_date varchar(255) null comment '回款时间',
invoice_date varchar(255) null comment '开票时间',
belonging_department varchar(255) null comment '归属部门默认用ETL填写owner部门',
department_percentage varchar(255) null comment '部门百分比(默认填写"100%"',
owner_id varchar(255) null comment '负责人ID对应crm_user.user_id',
expected_closing_year int null comment '业绩归属年度',
owner_department_id varchar(255) null comment '负责人部门ID关联crm_user.department_id',
owner_department_name varchar(255) null comment '负责人部门名称来自crm_user.department',
derived_close_date date null comment 'APTSell derived close date (when CRM close_date is missing)',
close_date date null comment '实际成单日期(快照)',
constraint uq_snapshot_unique_id_snapshot_date
unique (unique_id, snapshot_date)
)
comment '商机表快照';
create index idx_opportunity_snapshot_date_stage_owner
on `autoflow-demo`.crm_opportunities_snapshot (snapshot_date, opportunity_stage, unique_id, owner_id);
create index idx_snapshot_date
on `autoflow-demo`.crm_opportunities_snapshot (snapshot_date);
create table `autoflow-demo`.crm_opportunity_review_execution_index
(
id int auto_increment
primary key,
opportunity_id varchar(255) not null comment '商机唯一性ID',
execution_id varchar(255) not null comment '关联账户的最新review2报告的execution_id',
account_id varchar(255) null comment '关联的账户ID',
report_id varchar(255) null comment '报告ID',
plan_id varchar(255) null comment '执行计划ID',
report_created_time datetime not null comment '报告创建时间',
last_updated_time datetime default CURRENT_TIMESTAMP not null comment '索引最后更新时间',
create_time datetime default CURRENT_TIMESTAMP not null comment '索引创建时间',
created_at datetime default CURRENT_TIMESTAMP not null comment '创建时间',
updated_at datetime default CURRENT_TIMESTAMP not null on update CURRENT_TIMESTAMP comment '更新时间',
constraint opportunity_id
unique (opportunity_id)
)
comment '商机复盘执行索引表';
create index idx_account_id
on `autoflow-demo`.crm_opportunity_review_execution_index (account_id);
create index idx_execution_id
on `autoflow-demo`.crm_opportunity_review_execution_index (execution_id);
create index idx_report_created_time
on `autoflow-demo`.crm_opportunity_review_execution_index (report_created_time);
create table `autoflow-demo`.crm_opportunity_stage_stay_bucket
(
opportunity_id varchar(255) not null comment 'Opportunity id (crm_opportunities.unique_id)',
opportunity_stage varchar(255) not null comment 'Stage name (non-closed stages only)',
stay_days int default 0 not null comment 'Cumulative days in this stage (bucket count)',
updated_at datetime default CURRENT_TIMESTAMP not null on update CURRENT_TIMESTAMP comment '更新时间',
created_at datetime default CURRENT_TIMESTAMP not null comment '创建时间',
primary key (opportunity_id, opportunity_stage)
)
comment '商机阶段停留时间汇总表';
create index idx_updated_at
on `autoflow-demo`.crm_opportunity_stage_stay_bucket (updated_at);
create table `autoflow-demo`.crm_opportunity_stage_stay_daily
(
opportunity_id varchar(255) not null comment 'Opportunity id (crm_opportunities.unique_id)',
opportunity_stage varchar(255) not null comment 'Stage name (non-closed stages only)',
snapshot_date date not null comment 'Date this (opp, stage) was observed in snapshot',
primary key (opportunity_id, opportunity_stage, snapshot_date)
)
comment 'FR-ST-1: Idempotent daily ledger for stage stay; bucket is derived from this table';
create index idx_snapshot_date
on `autoflow-demo`.crm_opportunity_stage_stay_daily (snapshot_date);
create table `autoflow-demo`.crm_orders
(
id bigint auto_increment comment '主键ID自增序列'
primary key,
signing_date datetime null comment '签约日期',
service_duration_months varchar(255) null comment '服务时长/月(订阅/维保)',
total_margin_percentage varchar(255) null comment 'Margin%(总代+经销)',
customer_name varchar(255) null comment '客户名称',
arr varchar(255) null comment 'ARR',
maintenance_ratio varchar(255) null comment '维保比例',
renew_arr varchar(255) null comment 'Renew ARR',
customer_id varchar(255) null comment '客户id',
sales_type varchar(255) null comment '销售类型',
product_subscription_amount decimal(18, 2) null comment '产品订阅金额',
shipping_status varchar(255) null comment '发货状态',
shipping_address varchar(255) null comment '收货地址',
sales_order_amount decimal(18, 2) null comment '销售订单金额',
third_level_distributor varchar(255) null comment '经销商三级',
planned_payment_amount decimal(18, 2) null comment '已计划回款金额',
created_by varchar(1024) null comment '创建人',
service_end_date_subscription_maintenance datetime null comment '服务结束日期(订阅/维保)',
outsourcing_cost decimal(18, 2) null comment '外采(外包)成本',
performance_accounting_sales_department varchar(1024) null comment '业绩核算销售所在部门',
project_name varchar(255) null comment '项目名称',
expected_renewal_time_fy varchar(255) null comment '应续约时间(FY)',
new_arr varchar(255) null comment 'New ARR',
owner varchar(1024) null comment '负责人',
product_perpetual_license_amount decimal(18, 2) null comment '产品永久授权金额',
split_ratio varchar(255) null comment '拆分比例',
contract_archiving_status varchar(255) null comment '合同归档状态',
pending_payment_amount varchar(512) null comment '待回款金额',
invoice_status varchar(512) null comment '开票状态',
order_type varchar(255) null comment '订单类型',
is_general_agent varchar(512) null comment '是否总代理',
source varchar(255) null comment '数据来源',
contract_type varchar(255) null comment '合同类型',
reported_partner_name varchar(255) null comment '报备合作伙伴名称',
commission_info varchar(255) null comment '提成信息',
has_sub_agents varchar(255) null comment '是否有下级代理商',
man_day_service_amount decimal(18, 2) null comment '人天服务金额',
old_service_end_date datetime null comment '服务结束日期(旧)',
owning_department varchar(1024) null comment '归属部门',
unique_id varchar(255) null comment '唯一性ID必填',
maintenance_service_amount decimal(18, 2) null comment '维保服务金额',
partner_id varchar(255) null comment '合作伙伴',
payment_status varchar(512) null comment '回款状态',
sales_order_amount_excluding_tax varchar(255) null comment '销售订单金额(不含税)',
arr_excluding_tax varchar(255) null comment 'ARR不含税',
settle_type varchar(255) null comment '结算方式',
contract_name varchar(255) null comment '合同名称',
second_level_distributor varchar(255) null comment '经销商二级',
opportunity_id varchar(255) null comment '商机id',
quote_id varchar(255) null comment '报价单编号',
total_payment_amount decimal(18, 2) null comment '累计回款金额',
is_framework_order varchar(255) null comment '是否框架下订单',
first_level_distributor varchar(255) null comment '经销商一级',
service_start_date_subscription_maintenance datetime null comment '服务开始日期(订阅/维保)',
previous_name varchar(255) null comment '曾用名',
owner_department varchar(255) null comment '负责人主属部门',
creation_time datetime null comment '创建时间',
sales_order_number varchar(255) null comment '销售订单编号',
invoice_completion_status varchar(255) null comment '开票完成状态',
contracting_party varchar(255) null comment '签约主体',
delivery_acceptance_progress text null comment '交付/验收进展',
product_type varchar(255) null comment '产品类型',
renewal_type varchar(1024) null comment '续约类型',
delivery_comment varchar(255) null comment '发货备注',
profit_statement varchar(1024) null comment '利润表',
opportunity_number varchar(255) null comment '商机编号',
last_modified_time datetime null comment '最后修改时间',
life_status varchar(255) null comment '生命状态',
framework_agreement_id varchar(255) null comment '框架协议名称',
acv varchar(255) null comment 'ACV',
contracting_partner varchar(255) null comment '合作伙伴(签约方)',
renewal_status varchar(255) null comment '续约状态',
resource varchar(255) null comment '来源',
contract_attribute varchar(255) null comment '合同属性',
remark text null comment '备注',
last_modified_by varchar(1024) null comment '最后修改人',
delivery_time datetime null comment '发货时间',
opportunity_name varchar(255) null comment '商机名称',
sales_organization varchar(255) null comment '销售组织',
delete_flag tinyint(1) null comment '删除标识0-正常1-已删除)',
extra json null comment '扩展内容'
)
comment '订单表';
create table `autoflow-demo`.crm_payment_plans
(
id bigint auto_increment comment '主键ID自增序列'
primary key,
actual_payment_fiscal_quarter varchar(512) null comment '实际回款日期-财年&季度',
lock_rule text null comment '锁定规则',
action_tag varchar(1024) null comment 'Action tag-多选',
extend_obj_data_id varchar(255) null comment 'extend_obj_data_id',
remind_time varchar(255) null comment '提前几日提醒',
life_status_before_invalid varchar(255) null comment '作废前生命状态',
order_amount varchar(255) null comment '销售订单金额',
contract_party varchar(255) null comment '签约方',
plan_payment_status varchar(255) null comment '状态',
owner_department varchar(255) null comment '负责人所在部门',
latest_plan_payment_fiscal_quarter varchar(512) null comment '最新计划回款日期-财年&季度',
plan_payment_method varchar(255) null comment '计划回款方式',
plan_payment_amount decimal(18, 2) null comment '计划回款金额(元)',
pending_payment_amount varchar(512) null comment '待回款金额',
plan_payment_ratio varchar(512) null comment '计划回款占比',
lock_status varchar(255) null comment '锁定状态',
first_plan_payment_fiscal_quarter varchar(512) null comment '首次计划回款日期-财年&季度',
create_time datetime null comment '创建时间',
booking_fiscal_year varchar(512) null comment 'Booking财年',
version varchar(255) null comment 'version',
created_by varchar(1024) null comment '创建人',
relevant_team varchar(1024) null comment '相关团队',
data_own_department varchar(1024) null comment '归属部门',
next_plan_description text null comment '下一步计划说明',
name varchar(255) null comment '回款计划编号',
unique_id varchar(255) null comment '唯一性ID必填',
order_id varchar(255) null comment '销售订单编号',
data_refresh_flag varchar(255) null comment '刷数据',
first_payment_overdue_days varchar(512) null comment '首次回款计划-逾期天数-后台计算',
approve_employee_id varchar(1024) null comment '当前审批人',
remark text null comment '备注',
contract_date varchar(512) null comment '签约日期',
origin_source varchar(255) null comment '数据来源',
lock_user varchar(1024) null comment '加锁人',
actual_payment_date datetime null comment '实际回款日期',
partner_id varchar(255) null comment '合作伙伴',
overdue_reason varchar(1024) null comment '逾期归因',
is_deleted tinyint(1) null comment 'is_deleted',
attachment varchar(1024) null comment '附件',
actual_payment_amount decimal(18, 2) null comment '实际回款金额(元)',
overdue_payment_reason text null comment '逾期回款原因',
latest_payment_overdue_days varchar(512) null comment '最新回款计划-逾期天数',
latest_plan_payment_date datetime null comment '最新计划回款日期',
backend_process_status varchar(255) null comment '后台处理状态',
next_plan varchar(255) null comment '下一步计划',
out_owner varchar(1024) null comment '外部负责人',
out_resources varchar(255) null comment '外部来源',
owner varchar(1024) null comment '负责人',
last_modified_time datetime null comment '最后修改时间',
life_status varchar(255) null comment '生命状态',
last_modified_by varchar(1024) null comment '最后修改人',
out_tenant_id varchar(255) null comment '外部企业',
record_type varchar(255) null comment '业务类型',
overdue_description_and_next_plan varchar(2048) null comment '逾期说明及下一步计划-刷数据至下一步计划说明',
account_id varchar(255) null comment '客户id',
plan_payment_time datetime null comment '首次计划回款日期',
target_payment_date datetime null comment 'Target 回款日期',
order_by varchar(255) null comment 'order_by',
first_plan_overdue_month varchar(512) null comment '首次计划回款-逾期月份',
contract_entity varchar(255) null comment '签约主体',
account_name varchar(255) null comment '客户名称',
delete_flag tinyint(1) null comment '删除标识0-正常1-已删除)',
extra json null comment '扩展内容'
)
comment '回款计划表';
create table `autoflow-demo`.crm_playbook
(
id int auto_increment
primary key,
handbook_id varchar(64) not null comment '销售手册ID',
name varchar(255) not null comment '销售手册名称',
description text null comment '描述',
is_active tinyint(1) default 1 null comment '是否启用',
is_default tinyint(1) default 0 null comment '是否默认销售手册',
created_by varchar(255) null comment '创建人',
updated_by varchar(255) null comment '更新人',
created_at datetime default CURRENT_TIMESTAMP not null comment '创建时间',
updated_at datetime default CURRENT_TIMESTAMP not null on update CURRENT_TIMESTAMP comment '更新时间',
constraint idx_crm_playbook_handbook_id
unique (handbook_id)
)
comment 'Playbook元数据表';
create index idx_crm_playbook_active
on `autoflow-demo`.crm_playbook (is_active);
create index idx_crm_playbook_default
on `autoflow-demo`.crm_playbook (is_default);
create table `autoflow-demo`.crm_playbook_mapping
(
id int auto_increment
primary key,
field_name varchar(100) not null comment '字段名 (e.g., business_type, opportunity_stage)',
field_value varchar(255) not null comment '字段值 (e.g., 新签, Discovery)',
handbook_id varchar(64) not null comment '关联的playbook handbook_id',
description text null comment '描述',
is_active tinyint(1) null comment '是否启用',
priority int null comment '优先级,高优先级优先匹配',
created_by varchar(255) null comment '创建人',
updated_by varchar(255) null comment '更新人',
created_at datetime default CURRENT_TIMESTAMP not null comment '创建时间',
updated_at datetime default CURRENT_TIMESTAMP not null on update CURRENT_TIMESTAMP comment '更新时间',
constraint idx_field_mapping
unique (field_name, field_value)
)
comment 'Playbook字段映射表';
create index idx_handbook_id
on `autoflow-demo`.crm_playbook_mapping (handbook_id);
create index idx_is_active_priority
on `autoflow-demo`.crm_playbook_mapping (is_active, priority);
create table `autoflow-demo`.crm_playbook_stage_metrics
(
id int auto_increment
primary key,
unique_id varchar(255) not null comment '唯一性IDUUID',
handbook_id varchar(64) not null comment '销售手册ID关联diagnostic_playbook',
sales_stage varchar(255) not null comment '销售阶段名称',
stage_sequence int null comment '阶段顺序,用于计算剩余阶段所需时间',
avg_stay_days int default 0 not null comment '平均停留天数(初始为固定值,后续从历史数据计算)',
median_stay_days int null comment '中位数停留天数(可选)',
min_stay_days int null comment '最小停留天数(可选)',
max_stay_days int null comment '最大停留天数(可选)',
sample_size int null comment '计算平均值所用的样本数量',
data_source varchar(50) default 'fixed' null comment '数据来源fixed(固定值)/calculated(历史计算)/manual(人工设置)',
calculation_period_start date null comment '计算时间段起始仅data_source=calculated时有效',
calculation_period_end date null comment '计算时间段结束',
is_active tinyint(1) default 1 null comment '是否启用',
version varchar(32) default '1.0' null comment '配置版本',
description text null comment '备注说明',
created_by varchar(255) null comment '创建人',
updated_by varchar(255) null comment '更新人',
created_at datetime default CURRENT_TIMESTAMP not null comment '创建时间',
updated_at datetime default CURRENT_TIMESTAMP not null on update CURRENT_TIMESTAMP comment '更新时间',
constraint idx_handbook_stage
unique (handbook_id, sales_stage)
)
comment '销售阶段平均停留时间表用于AI FCST评估';
create index idx_handbook_active
on `autoflow-demo`.crm_playbook_stage_metrics (handbook_id, is_active);
create index idx_handbook_sequence
on `autoflow-demo`.crm_playbook_stage_metrics (handbook_id, stage_sequence);
create index idx_unique_id
on `autoflow-demo`.crm_playbook_stage_metrics (unique_id);
create table `autoflow-demo`.crm_poc
(
id int auto_increment comment '主键ID自增序列'
primary key,
unique_id varchar(255) not null comment '唯一标识ID',
account_id varchar(255) null comment '客户ID',
account_name varchar(255) null comment '客户名称',
opportunity_name varchar(255) null comment '商机名称',
opportunity_id varchar(255) null comment '商机ID',
owner varchar(255) null comment '负责人',
is_poc varchar(10) null comment '是否POC',
poc_status varchar(20) null comment 'POC状态',
poc_result varchar(20) null comment 'POC结果',
poc_end_date date null comment 'POC结束日期',
created_by varchar(255) null comment '创建人',
created_time datetime default CURRENT_TIMESTAMP null comment '创建时间',
last_modified_by varchar(255) null comment '最后修改人',
last_modified_time datetime default CURRENT_TIMESTAMP null on update CURRENT_TIMESTAMP comment '最后修改时间',
is_deleted tinyint(1) null comment '删除标记',
client_id varchar(255) null comment '客户端ID',
owner_id varchar(255) null comment '负责人ID对应crm_user.user_id',
constraint uq_crm_poc_unique_id
unique (unique_id)
)
comment 'POC管理表';
create table `autoflow-demo`.crm_push_notification
(
id int auto_increment
primary key,
unique_id varchar(255) not null comment '唯一性ID必填',
title varchar(255) not null comment '通知标题',
content text null comment '通知内容',
notification_type varchar(50) not null comment '通知类型workflow_complete/workflow_started/workflow_failed/custom',
priority varchar(20) null comment '优先级high/medium/low',
plan_id varchar(255) null comment '关联的工作流计划ID',
execution_id varchar(255) null comment '关联的工作流执行ID',
report_id varchar(255) null comment '关联的报告ID',
tenant_id varchar(255) not null comment '租户ID',
correlation_id varchar(255) null comment '关联ID用于追踪相关联的业务实体',
status varchar(50) not null comment '通知状态pending/scheduled/sent/failed/cancelled',
scheduled_time datetime null comment '计划发送时间',
trigger_condition varchar(100) null comment '触发条件immediate/workflow_complete/delay/custom',
delay_minutes int null comment '延迟发送分钟数',
target_service varchar(100) null comment '目标第三方服务名称webhook/email/sms/slack/dingtalk等',
api_endpoint varchar(500) null comment '第三方服务API端点',
http_method varchar(10) null comment 'HTTP方法GET/POST/PUT等',
request_payload text null comment '发送给第三方服务的完整请求载荷JSON格式',
request_headers text null comment 'HTTP请求头JSON格式',
auth_config text null comment '认证配置JSON格式支持Bearer Token/API Key等',
max_retry_attempts int null comment '最大重试次数',
current_retry_count int null comment '当前重试次数',
retry_interval_minutes int null comment '重试间隔(分钟)',
next_retry_time datetime null comment '下次重试时间',
last_sent_time datetime null comment '最后发送时间',
response_status_code int null comment '第三方服务响应状态码',
response_body text null comment '第三方服务响应内容',
error_message text null comment '错误信息',
linked_account_ids text null comment '关联的客户ID列表JSON格式',
linked_opportunity_ids text null comment '关联的商机ID列表JSON格式',
business_context text null comment '业务上下文信息JSON格式用于动态生成通知内容',
created_by varchar(255) null comment '创建人',
created_by_id varchar(255) null comment '创建人ID',
tags varchar(255) null comment '标签(逗号分隔)',
notes text null comment '备注信息',
create_time datetime default CURRENT_TIMESTAMP not null comment '创建时间',
update_time datetime default CURRENT_TIMESTAMP not null comment '更新时间',
completed_time datetime null comment '完成时间',
expired_time datetime null comment '过期时间',
created_at datetime default CURRENT_TIMESTAMP not null comment '创建时间',
updated_at datetime default CURRENT_TIMESTAMP not null on update CURRENT_TIMESTAMP comment '更新时间'
)
comment '推送通知配置表';
create table `autoflow-demo`.crm_report_index
(
id int auto_increment
primary key,
unique_id varchar(255) not null comment '唯一性ID',
report_id int not null comment '报告ID, 对应CRMReport表的id',
report_id_code varchar(255) not null comment '报告ID编码, 对应CRMReport表的report_id',
execution_id varchar(255) not null comment '执行ID',
plan_id varchar(255) not null comment '计划ID',
report_type varchar(64) not null comment '报告类型: review1/review1s/review2/review5/previsit/daily',
report_calendar_type varchar(64) not null comment '报告周期类型: daily/weekly/monthly/quarterly/yearly',
report_status varchar(32) not null comment '报告状态: draft/published/archived',
report_date date not null comment '报告日期',
report_datetime datetime not null comment '报告精确时间',
report_week_of_year int not null comment '年内周数(1-53)',
report_month_of_year int not null comment '年内月份(1-12)',
report_quarter_of_year int not null comment '年内季度(1-4)',
report_year int not null comment '报告年份',
created_by varchar(255) null comment '创建人',
department_id varchar(255) null comment '部门ID',
department_name varchar(255) null comment '部门名字',
create_time datetime default CURRENT_TIMESTAMP not null comment '创建时间',
update_time datetime default CURRENT_TIMESTAMP not null comment '更新时间',
created_at datetime default CURRENT_TIMESTAMP not null comment '创建时间',
updated_at datetime default CURRENT_TIMESTAMP not null on update CURRENT_TIMESTAMP comment '更新时间'
)
comment '报告索引表';
create index idx_execution_id
on `autoflow-demo`.crm_report_index (execution_id);
create index idx_report_id
on `autoflow-demo`.crm_report_index (report_id);
create index idx_report_type_date
on `autoflow-demo`.crm_report_index (report_type, report_date);
create index idx_unique_id
on `autoflow-demo`.crm_report_index (unique_id);
create table `autoflow-demo`.crm_review_achievement_change_analysis
(
id bigint auto_increment
primary key,
unique_id varchar(255) not null,
session_id varchar(255) not null,
calc_phase varchar(16) not null,
snapshot_period varchar(32) not null,
report_date date null,
analysis_content mediumtext not null,
created_at datetime default CURRENT_TIMESTAMP not null,
updated_at datetime default CURRENT_TIMESTAMP not null on update CURRENT_TIMESTAMP
)
comment '复盘业绩变化分析JSON单表存储';
create index idx_review_change_analysis_session_phase
on `autoflow-demo`.crm_review_achievement_change_analysis (session_id, calc_phase);
create index idx_review_change_analysis_snapshot_period
on `autoflow-demo`.crm_review_achievement_change_analysis (snapshot_period, calc_phase);
create table `autoflow-demo`.crm_review_attendee
(
id int auto_increment
primary key,
unique_id varchar(255) not null comment 'Unique identifier',
session_id varchar(255) not null comment 'FK → crm_review_session.unique_id',
user_id varchar(255) not null comment 'User ID',
crm_user_id varchar(255) not null comment 'CRM user ID (matches opportunity.owner_id)',
user_name varchar(255) null comment 'User name',
department_id varchar(255) null comment 'Department ID',
department_name varchar(255) null comment 'Department name',
is_leader tinyint(1) null comment 'Is department lead',
is_primary_dept tinyint(1) null comment 'Is primary department',
has_submitted tinyint(1) default 0 null,
submitted_at datetime null,
submission_count int default 0 null,
modification_count int default 0 null,
last_modified_at datetime null,
created_at datetime default CURRENT_TIMESTAMP not null comment '创建时间',
updated_at datetime default CURRENT_TIMESTAMP not null on update CURRENT_TIMESTAMP comment '更新时间',
constraint idx_session_user
unique (session_id, user_id)
)
comment '复盘参与者表';
create index idx_crm_user_id
on `autoflow-demo`.crm_review_attendee (crm_user_id);
create index idx_has_submitted
on `autoflow-demo`.crm_review_attendee (has_submitted);
create index idx_session_id
on `autoflow-demo`.crm_review_attendee (session_id);
create table `autoflow-demo`.crm_review_attendee_todo_stats
(
id int auto_increment
primary key,
unique_id varchar(255) not null comment '唯一性ID',
session_id varchar(255) not null comment 'FK → crm_review_session.unique_id',
owner_id varchar(255) not null comment 'Attendee CRM user ID (matches crm_review_attendee.crm_user_id)',
owner_name varchar(255) null comment 'Attendee display name',
department_id varchar(255) null comment 'Attendee department ID',
department_name varchar(255) null comment 'Attendee department name',
period varchar (32) not null comment 'Review period (e.g., 2026-W11)',
report_date date not null comment 'Workflow report date (used as "today" for overdue calc)',
calc_phase varchar(32) not null comment 'first | second',
total_this_week int default 0 not null comment '本周任务总数due_date在本周区间的任务数',
completed_this_week int default 0 not null comment '本周任务已完成本周任务中ai_status=COMPLETED的数量',
incomplete_this_week int default 0 not null comment '本周未完成:本周任务中未完成的数量',
historical_overdue_completed_this_week int default 0 not null comment '历史逾期本周完成due_date早于本周但在本周完成的任务数',
current_total_overdue int default 0 not null comment '当前总逾期due_date早于report_date且未完成/未取消的任务数',
created_at datetime default CURRENT_TIMESTAMP not null comment '创建时间',
updated_at datetime default CURRENT_TIMESTAMP not null on update CURRENT_TIMESTAMP comment '更新时间',
constraint uk_review_attendee_todo_stats
unique (session_id, owner_id, calc_phase)
)
comment '复盘参与者任务统计表';
create index idx_review_attendee_todo_stats_owner
on `autoflow-demo`.crm_review_attendee_todo_stats (owner_id);
create index idx_review_attendee_todo_stats_session
on `autoflow-demo`.crm_review_attendee_todo_stats (session_id);
create table `autoflow-demo`.crm_review_department
(
id int auto_increment
primary key,
unique_id varchar(255) not null comment '唯一性ID必填',
department_id varchar(255) not null comment 'FK → crm_department.unique_id',
department_name varchar(255) null comment 'Department name (denormalized)',
parent_department_id varchar(255) null comment 'Parent department ID',
is_active tinyint(1) default 1 null comment 'Whether review is enabled for this dept',
review_frequency varchar(32) null comment 'weekly/monthly/quarterly',
include_sub_departments tinyint(1) default 1 null comment 'Whether to include sub-depts in review',
created_at datetime default CURRENT_TIMESTAMP not null comment '创建时间',
updated_at datetime default CURRENT_TIMESTAMP not null on update CURRENT_TIMESTAMP comment '更新时间',
created_by varchar(255) null comment 'User who added this dept to review list'
)
comment '复盘部门配置表';
create index idx_active
on `autoflow-demo`.crm_review_department (is_active);
create index idx_department_id
on `autoflow-demo`.crm_review_department (department_id);
create index idx_parent_id
on `autoflow-demo`.crm_review_department (parent_department_id);
create table `autoflow-demo`.crm_review_kpi_metric_opp_link
(
id int auto_increment
primary key,
kpi_metric_unique_id varchar(255) not null comment 'Logical FK -> crm_review_kpi_metrics.unique_id',
snapshot_unique_id varchar(255) not null comment 'Logical FK -> crm_review_opp_branch_snapshot.unique_id',
session_id varchar(255) not null comment 'Redundant for filter',
opportunity_id varchar(255) not null comment 'Redundant for filter',
snapshot_period varchar(32) not null comment 'Redundant for filter (e.g., 2026-W15)',
scope_type varchar(32) not null comment 'owner | department | company',
scope_id varchar(255) null comment 'Owner/department id; null for company',
metric_name varchar(255) not null comment 'closed | commit_sales | commit_ai | upside_sales',
calc_phase varchar(32) not null comment 'first | second',
create_time datetime default CURRENT_TIMESTAMP not null comment '创建时间',
update_time datetime default CURRENT_TIMESTAMP not null comment '更新时间',
created_at datetime default CURRENT_TIMESTAMP not null comment '创建时间',
updated_at datetime default CURRENT_TIMESTAMP not null on update CURRENT_TIMESTAMP comment '更新时间',
constraint uniq_kpi_snapshot
unique (kpi_metric_unique_id, snapshot_unique_id)
)
comment '复盘KPI指标与商机快照关联表用于UI下钻';
create index idx_kpi_metric_unique_id
on `autoflow-demo`.crm_review_kpi_metric_opp_link (kpi_metric_unique_id);
create index idx_opportunity_period
on `autoflow-demo`.crm_review_kpi_metric_opp_link (opportunity_id, snapshot_period);
create index idx_session_metric
on `autoflow-demo`.crm_review_kpi_metric_opp_link (session_id, metric_name);
create table `autoflow-demo`.crm_review_kpi_metrics
(
id int auto_increment
primary key,
unique_id varchar(255) not null,
session_id varchar(255) not null,
scope_type varchar(32) not null,
scope_id varchar(255) null,
scope_name varchar(255) null,
parent_scope_id varchar(255) null,
metric_category varchar(64) not null,
metric_name varchar(255) not null,
metric_value decimal(18, 4) null comment 'Current period value',
metric_value_prev decimal(18, 4) null comment 'Previous period value',
metric_delta decimal(18, 4) null comment 'Change value',
metric_rate decimal(8, 4) null comment 'Rate 0-1 (e.g., 0.288 = 28.8%)',
metric_unit varchar(32) null,
metric_content text null,
metric_content_en text null,
calc_phase varchar(32) null,
period_type varchar(32) null,
period varchar (32) null,
report_date date null,
report_year int null,
report_week_of_year int null,
create_time datetime default CURRENT_TIMESTAMP not null comment '创建时间',
update_time datetime default CURRENT_TIMESTAMP not null comment '更新时间',
created_at datetime default CURRENT_TIMESTAMP not null comment '创建时间',
updated_at datetime default CURRENT_TIMESTAMP not null on update CURRENT_TIMESTAMP comment '更新时间'
)
comment '复盘KPI指标表';
create index idx_period_scope_metric
on `autoflow-demo`.crm_review_kpi_metrics (period, scope_type, metric_name);
create index idx_session_scope_cat
on `autoflow-demo`.crm_review_kpi_metrics (session_id, scope_type, metric_category);
create index idx_session_scope_metric
on `autoflow-demo`.crm_review_kpi_metrics (session_id, scope_id, metric_name);
create table `autoflow-demo`.crm_review_opp_audit_log
(
id char(32) not null
primary key,
session_id varchar(255) not null comment 'FK → crm_review_session.unique_id',
change_scope varchar(64) not null comment 'Field name that was changed',
old_value text null comment 'Previous value (string representation)',
new_value text null comment 'New value (string representation)',
change_type varchar(32) default 'UPDATE' not null comment 'Type: UPDATE',
edit_phase varchar(32) null comment 'initial/meeting - which phase the change was made',
updated_by varchar(255) not null comment 'User name who made the change',
updated_by_id varchar(255) not null comment 'User ID who made the change',
created_at datetime default CURRENT_TIMESTAMP null,
updated_at datetime default CURRENT_TIMESTAMP null
)
comment 'Audit log for branch snapshot modifications';
create index idx_session_id
on `autoflow-demo`.crm_review_opp_audit_log (session_id);
create index idx_updated_at
on `autoflow-demo`.crm_review_opp_audit_log (updated_at);
create index idx_updated_by_id
on `autoflow-demo`.crm_review_opp_audit_log (updated_by_id);
create table `autoflow-demo`.crm_review_opp_branch_snapshot
(
id int auto_increment
primary key,
unique_id varchar(255) not null comment 'Unique record ID',
opportunity_id varchar(255) not null,
owner_id varchar(255) null comment 'Owner crm_user_id',
owner_name varchar(255) null,
owner_department_id varchar(255) null,
owner_department_name varchar(255) null,
snapshot_period varchar(32) not null comment 'Period (e.g., 2026-W10)',
snapshot_date date not null,
account_id varchar(255) null,
account_name varchar(255) null,
opportunity_name varchar(255) null,
forecast_type varchar(255) null,
forecast_amount decimal(18, 2) null,
forecast_amount_source varchar(64) null,
opportunity_stage varchar(255) null,
expected_closing_date varchar(255) null,
baseline_forecast_type varchar(255) null,
baseline_forecast_amount decimal(18, 2) null,
baseline_forecast_amount_source varchar(64) null,
baseline_opportunity_stage varchar(255) null,
baseline_expected_closing_date varchar(255) null,
baseline_frozen_at datetime null,
crm_forecast_type varchar(255) null,
crm_forecast_amount decimal(18, 2) null,
crm_forecast_amount_source varchar(64) null,
crm_opportunity_stage varchar(255) null,
crm_expected_closing_date varchar(255) null,
ai_commit_1st varchar(32) null,
ai_stage_1st varchar(255) null,
ai_expected_closing_date_1st varchar(255) null,
ai_evaluated_1st_at datetime null,
ai_commit_2nd varchar(32) null,
ai_stage_2nd varchar(255) null,
ai_expected_closing_date_2nd varchar(255) null,
ai_evaluated_2nd_at datetime null,
ai_commit varchar(32) null comment 'Latest AI commit assessment (Commit/NotCommit)',
ai_stage varchar(255) null comment 'Latest AI stage assessment',
ai_expected_closing_date varchar(255) null comment 'Latest AI expected closing date',
ai_evaluated_at datetime null comment 'Timestamp of latest AI evaluation',
ai_eval_source varchar(10) null comment 'Source of AI eval: 1st or 2nd',
stage_stay int null comment 'Days in current stage (from crm_opportunity_stage_stay_bucket)',
expected_closing_quarter varchar(50) null,
close_date date null,
is_closed tinyint(1) null,
customer_type varchar(255) null,
was_changed_to_commit tinyint(1) null,
was_modified tinyint(1) null,
last_modified_by varchar(255) null,
last_modified_by_id varchar(255) null,
modification_count int default 0 null,
initial_edit_modification_count int null,
meeting_edit_modification_count int null,
create_time datetime default CURRENT_TIMESTAMP not null comment '创建时间',
update_time datetime default CURRENT_TIMESTAMP not null comment '更新时间',
opp_create_time datetime null comment '商机创建时间来源CRM',
baseline_expected_closing_quarter varchar(50) null,
crm_expected_closing_quarter varchar(50) null,
crm_opportunity_type varchar(255) null comment 'CRM original opportunity type',
expected_closing_month varchar(50) null comment '标准化预计成交月如FY26M02',
baseline_expected_closing_month varchar(50) null comment '冻结基线预计成交月如FY26M02',
crm_expected_closing_month varchar(50) null comment 'CRM原始预计成交月标准化值如FY26M02',
created_at datetime default CURRENT_TIMESTAMP not null comment '创建时间',
updated_at datetime default CURRENT_TIMESTAMP not null on update CURRENT_TIMESTAMP comment '更新时间',
constraint idx_opp_period
unique (opportunity_id, snapshot_period)
)
comment '复盘商机快照表';
create index idx_ai_commit
on `autoflow-demo`.crm_review_opp_branch_snapshot (ai_commit);
create index idx_owner_period
on `autoflow-demo`.crm_review_opp_branch_snapshot (owner_id, snapshot_period);
create index idx_snapshot_period
on `autoflow-demo`.crm_review_opp_branch_snapshot (snapshot_period);
create index idx_stage_stay
on `autoflow-demo`.crm_review_opp_branch_snapshot (stage_stay);
create index idx_was_changed
on `autoflow-demo`.crm_review_opp_branch_snapshot (was_changed_to_commit);
create table `autoflow-demo`.crm_review_opp_branch_snapshot_cache
(
id int auto_increment
primary key,
unique_id varchar(255) not null comment 'Unique record ID',
opportunity_id varchar(255) not null,
owner_id varchar(255) null comment 'Owner crm_user_id',
owner_name varchar(255) null,
owner_department_id varchar(255) null,
owner_department_name varchar(255) null,
snapshot_period varchar(32) not null comment 'Period (e.g., 2026-W10)',
snapshot_date date not null,
account_id varchar(255) null,
account_name varchar(255) null,
opportunity_name varchar(255) null,
forecast_type varchar(255) null,
forecast_amount decimal(18, 2) null,
forecast_amount_source varchar(64) null,
opportunity_stage varchar(255) null,
expected_closing_date varchar(255) null,
baseline_forecast_type varchar(255) null,
baseline_forecast_amount decimal(18, 2) null,
baseline_forecast_amount_source varchar(64) null,
baseline_opportunity_stage varchar(255) null,
baseline_expected_closing_date varchar(255) null,
baseline_expected_closing_quarter varchar(50) null,
baseline_frozen_at datetime null,
crm_forecast_type varchar(255) null,
crm_forecast_amount decimal(18, 2) null,
crm_forecast_amount_source varchar(64) null,
crm_opportunity_stage varchar(255) null,
crm_expected_closing_date varchar(255) null,
crm_expected_closing_quarter varchar(50) null,
ai_commit_1st varchar(32) null,
ai_stage_1st varchar(255) null,
ai_expected_closing_date_1st varchar(255) null,
ai_evaluated_1st_at datetime null,
ai_commit_2nd varchar(32) null,
ai_stage_2nd varchar(255) null,
ai_expected_closing_date_2nd varchar(255) null,
ai_evaluated_2nd_at datetime null,
ai_commit varchar(32) null comment 'Latest AI commit assessment (Commit/NotCommit)',
ai_stage varchar(255) null comment 'Latest AI stage assessment',
ai_expected_closing_date varchar(255) null comment 'Latest AI expected closing date',
ai_evaluated_at datetime null comment 'Timestamp of latest AI evaluation',
ai_eval_source varchar(10) null comment 'Source of AI eval: 1st or 2nd',
stage_stay int null comment 'Days in current stage (from crm_opportunity_stage_stay_bucket)',
expected_closing_quarter varchar(50) null,
close_date date null,
is_closed tinyint(1) null,
customer_type varchar(255) null,
was_changed_to_commit tinyint(1) null,
was_modified tinyint(1) null,
last_modified_by varchar(255) null,
last_modified_by_id varchar(255) null,
modification_count int default 0 null,
initial_edit_modification_count int null,
meeting_edit_modification_count int null,
opp_create_time datetime null comment '商机创建时间来源CRM',
create_time datetime default CURRENT_TIMESTAMP not null comment '创建时间',
update_time datetime default CURRENT_TIMESTAMP not null comment '更新时间',
crm_opportunity_type varchar(255) null comment 'CRM original opportunity type',
expected_closing_month varchar(50) null comment '标准化预计成交月如FY26M02',
baseline_expected_closing_month varchar(50) null comment '冻结基线预计成交月如FY26M02',
crm_expected_closing_month varchar(50) null comment 'CRM原始预计成交月标准化值如FY26M02',
created_at datetime default CURRENT_TIMESTAMP not null comment '创建时间',
updated_at datetime default CURRENT_TIMESTAMP not null on update CURRENT_TIMESTAMP comment '更新时间',
constraint idx_opp_period_cache
unique (opportunity_id, snapshot_period)
)
comment '复盘商机快照缓存表T1初始化时同步生成由第三方服务负责后续同步';
create index idx_ai_commit_cache
on `autoflow-demo`.crm_review_opp_branch_snapshot_cache (ai_commit);
create index idx_owner_period_cache
on `autoflow-demo`.crm_review_opp_branch_snapshot_cache (owner_id, snapshot_period);
create index idx_snapshot_period_cache
on `autoflow-demo`.crm_review_opp_branch_snapshot_cache (snapshot_period);
create index idx_stage_stay_cache
on `autoflow-demo`.crm_review_opp_branch_snapshot_cache (stage_stay);
create index idx_was_changed_cache
on `autoflow-demo`.crm_review_opp_branch_snapshot_cache (was_changed_to_commit);
create table `autoflow-demo`.crm_review_opp_comment
(
id bigint auto_increment
primary key,
unique_id varchar(255) not null comment 'Stable comment UUID',
session_id varchar(255) not null comment 'FK → crm_review_session.unique_id',
opportunity_id varchar(255) not null comment 'CRM opportunity ID',
content text not null comment 'Comment body text',
created_at datetime default CURRENT_TIMESTAMP not null comment '创建时间',
updated_at datetime default CURRENT_TIMESTAMP not null on update CURRENT_TIMESTAMP comment '更新时间',
target_type varchar(64) null comment 'RiskProgressType value: RISK | PROGRESS | OPP_SUMMARY | OPP_REQS_INSIGHT; NULL = general opp comment',
target_id varchar(255) null comment 'CRMReviewOppRiskProgress.unique_id of the anchored entity',
parent_id varchar(255) null comment 'CRMReviewOppComment.unique_id of parent comment; NULL = top-level',
is_deleted tinyint(1) default 0 not null comment 'Soft-delete flag; content is blanked on delete',
is_edited tinyint(1) default 0 not null comment 'Set to True on first edit; UI shows "(edited)" badge',
submitted_by varchar(255) not null comment 'CRM user ID of the submitter',
submitted_by_name varchar(255) not null comment 'Display name at submit time',
constraint uk_opp_comment_unique_id
unique (unique_id)
)
comment '复盘商机评论表(含回复树与目标锚定)';
create index idx_opp_comment_parent
on `autoflow-demo`.crm_review_opp_comment (parent_id);
create index idx_opp_comment_session_opp
on `autoflow-demo`.crm_review_opp_comment (session_id, opportunity_id);
create index idx_opp_comment_submitter
on `autoflow-demo`.crm_review_opp_comment (submitted_by);
create index idx_opp_comment_target
on `autoflow-demo`.crm_review_opp_comment (target_type, target_id);
create table `autoflow-demo`.crm_review_opp_risk_progress
(
id bigint auto_increment
primary key,
unique_id varchar(255) not null,
session_id varchar(255) not null,
scope_type varchar(32) not null,
scope_id varchar(255) null,
department_id varchar(255) null,
snapshot_id varchar(255) null,
opportunity_id varchar(255) null,
owner_id varchar(255) null,
record_type varchar(32) not null,
type_code varchar(64) not null,
type_name varchar(128) not null,
category varchar(64) null,
level varchar(32) null,
severity varchar(16) null,
source varchar(128) null,
metric_name varchar(64) null,
ai_assessment varchar(255) null,
sales_assessment varchar(255) null,
judgment_rule text null,
gap_description text null,
detail_description text null,
solution text null,
evidence json null,
financial_impact decimal(18, 2) null,
previous_value decimal(18, 2) null,
current_value decimal(18, 2) null,
rate_of_change decimal(8, 4) null,
status varchar(32) null,
detected_at datetime default CURRENT_TIMESTAMP not null,
resolved_at datetime null,
resolved_by varchar(255) null,
resolution_type varchar(32) null,
resolution_note text null,
calc_phase varchar(16) not null,
snapshot_period varchar(32) not null,
metadata json null,
created_at datetime default CURRENT_TIMESTAMP not null,
updated_at datetime default CURRENT_TIMESTAMP not null on update CURRENT_TIMESTAMP,
created_by varchar(255) null,
updated_by varchar(255) null,
summary text null,
parent_id varchar(255) null comment '父风险记录的 unique_idNULL 表示根级别风险',
part_key varchar(64) null comment '在父卡片内的逻辑分区标识,如 commit_risk / upside_fill / pipeline',
display_order smallint null comment '在父卡片内的渲染顺序',
constraint uk_risk_part
unique (parent_id, part_key),
constraint uk_session_scope_type_period
unique (session_id, scope_type, scope_id, type_code, snapshot_period, calc_phase)
)
comment '风险与进展追踪表';
create index idx_department
on `autoflow-demo`.crm_review_opp_risk_progress (department_id);
create index idx_detected_at
on `autoflow-demo`.crm_review_opp_risk_progress (detected_at);
create index idx_opportunity
on `autoflow-demo`.crm_review_opp_risk_progress (opportunity_id);
create index idx_owner
on `autoflow-demo`.crm_review_opp_risk_progress (owner_id);
create index idx_parent_id
on `autoflow-demo`.crm_review_opp_risk_progress (parent_id);
create index idx_record_type
on `autoflow-demo`.crm_review_opp_risk_progress (record_type);
create index idx_session_scope
on `autoflow-demo`.crm_review_opp_risk_progress (session_id, scope_type, scope_id);
create index idx_snapshot_period
on `autoflow-demo`.crm_review_opp_risk_progress (snapshot_period);
create index idx_status
on `autoflow-demo`.crm_review_opp_risk_progress (status);
create index idx_type_code
on `autoflow-demo`.crm_review_opp_risk_progress (type_code);
create table `autoflow-demo`.crm_review_progress_category
(
id bigint auto_increment
primary key,
unique_id varchar(255) not null,
code varchar(64) not null,
name_zh varchar(128) not null,
name_en varchar(128) null,
category_group varchar(64) null,
default_level varchar(32) null,
detection_source varchar(64) null,
detection_rules json null,
is_active tinyint(1) null,
sort_order int null,
created_at datetime default CURRENT_TIMESTAMP not null,
updated_at datetime default CURRENT_TIMESTAMP not null on update CURRENT_TIMESTAMP,
constraint code
unique (code)
)
comment '进展类别配置表';
create index idx_is_active
on `autoflow-demo`.crm_review_progress_category (is_active);
create table `autoflow-demo`.crm_review_progress_threshold
(
id bigint auto_increment
primary key,
unique_id varchar(255) not null,
scope_type varchar(32) not null comment '范围类型department/company',
scope_id varchar(255) not null comment '范围ID部门ID或company',
progress_code varchar(64) not null comment '进展编码,例如 MAJOR_NEW_ORDER',
threshold_value decimal(18, 2) not null comment '阈值金额',
description text null comment '阈值说明',
is_active tinyint(1) default 1 null comment '是否启用',
created_at datetime default CURRENT_TIMESTAMP not null,
updated_at datetime default CURRENT_TIMESTAMP not null on update CURRENT_TIMESTAMP,
constraint uk_scope_progress_code
unique (scope_type, scope_id, progress_code)
)
comment '商机进展阈值配置表';
create index idx_progress_code_active
on `autoflow-demo`.crm_review_progress_threshold (progress_code, is_active);
create index idx_scope_type_scope_id
on `autoflow-demo`.crm_review_progress_threshold (scope_type, scope_id);
create table `autoflow-demo`.crm_review_risk_aggregation
(
id bigint auto_increment
primary key,
unique_id varchar(255) not null,
session_id varchar(255) not null,
scope_type varchar(32) not null,
scope_id varchar(255) not null,
scope_name varchar(255) null,
snapshot_period varchar(32) not null,
calc_phase varchar(16) not null,
total_risks int null,
total_progress int null,
critical_risks int null,
high_risks int null,
medium_risks int null,
low_risks int null,
open_risks int null,
resolved_risks int null,
total_risk_amount decimal(18, 2) null,
total_progress_amount decimal(18, 2) null,
risk_breakdown json null,
progress_breakdown json null,
previous_period_risks int null,
risk_trend varchar(16) null,
computed_at datetime default CURRENT_TIMESTAMP not null,
created_at datetime default CURRENT_TIMESTAMP not null,
updated_at datetime default CURRENT_TIMESTAMP not null on update CURRENT_TIMESTAMP,
constraint uk_session_scope_period
unique (session_id, scope_type, scope_id, snapshot_period, calc_phase)
)
comment '风险聚合汇总表';
create index idx_computed_at
on `autoflow-demo`.crm_review_risk_aggregation (computed_at);
create index idx_period_phase
on `autoflow-demo`.crm_review_risk_aggregation (snapshot_period, calc_phase);
create index idx_session_scope
on `autoflow-demo`.crm_review_risk_aggregation (session_id, scope_type, scope_id);
create table `autoflow-demo`.crm_review_risk_category
(
id bigint auto_increment
primary key,
unique_id varchar(255) not null,
code varchar(64) not null,
name_zh varchar(128) not null,
name_en varchar(128) null,
category_group varchar(64) null,
default_level varchar(32) null,
default_severity varchar(16) null,
detection_source varchar(64) null,
detection_rules text null,
auto_resolve tinyint(1) null,
requires_acknowledgment tinyint(1) null,
is_active tinyint(1) null,
sort_order int null,
created_at datetime default CURRENT_TIMESTAMP not null,
updated_at datetime default CURRENT_TIMESTAMP not null on update CURRENT_TIMESTAMP,
solution text null,
constraint code
unique (code)
)
comment '风险类别配置表';
create index idx_category_group
on `autoflow-demo`.crm_review_risk_category (category_group);
create index idx_is_active
on `autoflow-demo`.crm_review_risk_category (is_active);
create table `autoflow-demo`.crm_review_risk_opportunity_relation
(
id bigint auto_increment
primary key,
unique_id varchar(255) not null,
risk_unique_id varchar(255) not null comment '关联 crm_review_opp_risk_progress.unique_id',
type_name varchar(128) null comment '冗余的风险类型名称,用于加速查询',
session_id varchar(255) not null,
snapshot_period varchar(32) not null,
calc_phase varchar(16) not null,
opportunity_id varchar(255) not null,
owner_id varchar(255) null,
department_id varchar(255) null,
relation_reason text null,
relation_rank int null,
relation_weight decimal(8, 4) null,
metadata json null,
created_at datetime default CURRENT_TIMESTAMP not null,
updated_at datetime default CURRENT_TIMESTAMP not null on update CURRENT_TIMESTAMP,
constraint uk_risk_opp_relation
unique (risk_unique_id, opportunity_id)
)
comment '风险与商机关联关系表';
create index idx_opportunity_id
on `autoflow-demo`.crm_review_risk_opportunity_relation (opportunity_id);
create index idx_risk_unique_id
on `autoflow-demo`.crm_review_risk_opportunity_relation (risk_unique_id);
create index idx_session_period_phase
on `autoflow-demo`.crm_review_risk_opportunity_relation (session_id, snapshot_period, calc_phase);
create table `autoflow-demo`.crm_review_session
(
id int auto_increment
primary key,
unique_id varchar(255) not null comment 'Unique session identifier (UUID)',
session_name varchar(255) null comment 'Display name',
department_id varchar(255) not null comment 'FK → crm_department.unique_id',
department_name varchar(255) null comment 'Department name',
review_type varchar(64) not null comment 'Review type',
period_type varchar(32) not null comment 'weekly/monthly/quarterly',
period varchar (32) not null comment 'Period identifier (e.g., 2026-W10)',
fiscal_year varchar(16) null comment 'Fiscal year',
stage varchar(32) not null comment 'initial_edit/first_calculating/first_calc_ready/lead_review/second_calculating/completed. Note: FCST eval starts async at T1 during initial_edit (background optimization)',
review_phase varchar(32) null comment 'not_started/edit/closed - controls if attendees can edit',
t1_time datetime not null comment 'T1: Session launch',
t2_time datetime not null comment 'T2: First calc',
t3_time datetime not null comment 'T3: Open to lead',
t4_time datetime not null comment 'T4: Second calc',
initial_window_open_time datetime null comment 'When initial edit window opened',
initial_window_close_time datetime null comment 'When initial edit window closed',
first_calc_start_time datetime null,
first_calc_end_time datetime null,
first_calc_execution_id varchar(255) null,
meeting_opened_by varchar(255) null,
meeting_opened_by_id varchar(255) null,
meeting_opened_at datetime null,
meeting_closed_at datetime null,
meeting_open_count int null,
meeting_total_duration_minutes int null,
second_calc_start_time datetime null,
second_calc_end_time datetime null,
second_calc_execution_id varchar(255) null,
launched_by varchar(255) null,
launched_by_id varchar(255) null,
plan_id varchar(255) null,
report_date date not null,
report_week_of_year int null,
report_month_of_year int null,
report_quarter_of_year int null,
report_year int not null,
period_start date not null comment 'Start date of the review period',
period_end date not null comment 'End date of the review period',
report_fy_quarter varchar(10) null comment 'Report fiscal year quarter for performance queries',
create_time datetime default CURRENT_TIMESTAMP not null comment '创建时间',
update_time datetime default CURRENT_TIMESTAMP not null comment '更新时间',
created_at datetime default CURRENT_TIMESTAMP not null comment '创建时间',
updated_at datetime default CURRENT_TIMESTAMP not null on update CURRENT_TIMESTAMP comment '更新时间'
)
comment '复盘会话表';
create index idx_department_id
on `autoflow-demo`.crm_review_session (department_id);
create index idx_report_fy_quarter
on `autoflow-demo`.crm_review_session (report_fy_quarter);
create index idx_report_year_week
on `autoflow-demo`.crm_review_session (report_year, report_week_of_year);
create index idx_review_phase
on `autoflow-demo`.crm_review_session (review_phase);
create index idx_stage
on `autoflow-demo`.crm_review_session (stage);
create index idx_t1_time
on `autoflow-demo`.crm_review_session (t1_time);
create index idx_t2_time
on `autoflow-demo`.crm_review_session (t2_time);
create index idx_t3_time
on `autoflow-demo`.crm_review_session (t3_time);
create index idx_t4_time
on `autoflow-demo`.crm_review_session (t4_time);
create index idx_unique_id
on `autoflow-demo`.crm_review_session (unique_id);
create table `autoflow-demo`.crm_sales_activities
(
id int auto_increment
primary key,
unique_id varchar(255) not null comment '唯一性ID必填',
category varchar(50) null comment '活动类别如update/callhigh/其他)',
data_source varchar(100) null comment '数据来源URL/飞书/CRM/Chatbot/等)',
record_date date not null comment '记录日期YYYY-MM-DD',
location varchar(255) null comment '活动地点',
communication_medium varchar(255) null comment '活动形式及沟通方式(如:线上会议/线下会议/电话/邮件/拜访/演示/提案等)',
internal_participants text null comment '内部参与者JSON格式',
external_participants text null comment '外部参与者即客户JSON格式',
key_stakeholders text null comment '关键干系人',
account_id varchar(255) null comment '关联的客户ID',
account_name varchar(255) null comment '关联的客户名称',
opportunity_id varchar(255) null comment '关联的商机ID',
opportunity_name varchar(255) null comment '关联的商机名称',
linked_account_ids text null comment 'Mandatory: 关联的客户ID列表JSON格式',
linked_opportunity_ids text null comment 'Mandatory: 关联的商机ID列表JSON格式',
owner_id varchar(255) null comment '负责人ID',
owner_name varchar(255) null comment '负责人姓名',
summary varchar(500) not null comment '活动摘要',
detailed_notes text null comment '详细记录',
next_steps text null comment '下一步行动计划',
blockers text null comment '当前障碍或挑战,即要解决的问题',
core_biz_info text null comment '核心业务信息',
deal_probability_change varchar(50) null comment '成单概率变化(上升/下降/不变)',
customer_sentiment varchar(50) null comment '客户态度(积极/中性/消极)',
correlation_id varchar(255) null comment '关联ID',
creator varchar(255) null comment '创建人',
creator_id varchar(255) null comment '创建人唯一性ID',
create_time datetime default CURRENT_TIMESTAMP not null comment '创建时间',
last_modifier varchar(255) null comment '最后修改人',
last_modified_time datetime default CURRENT_TIMESTAMP not null comment '最后修改时间',
created_at datetime default CURRENT_TIMESTAMP not null comment '创建时间',
updated_at datetime default CURRENT_TIMESTAMP not null on update CURRENT_TIMESTAMP comment '更新时间'
)
comment '销售活动记录表';
create index idx_account_id
on `autoflow-demo`.crm_sales_activities (account_id);
create index idx_activity_type
on `autoflow-demo`.crm_sales_activities (communication_medium);
create index idx_correlation_id
on `autoflow-demo`.crm_sales_activities (correlation_id);
create index idx_opportunity_id
on `autoflow-demo`.crm_sales_activities (opportunity_id);
create index idx_record_date
on `autoflow-demo`.crm_sales_activities (record_date);
create table `autoflow-demo`.crm_sales_records
(
id bigint auto_increment comment '主键ID自增序列'
primary key,
unique_id varchar(255) null comment '唯一性ID必填',
related_api_names varchar(1024) null comment '关联业务对象',
lock_rule varchar(1024) null comment '锁定规则',
active_record_type varchar(255) null comment '跟进类型',
active_record_content text null comment '记录内容',
origin_source varchar(255) null comment '数据来源',
lock_user varchar(1024) null comment '加锁人',
extend_obj_data_id varchar(255) null comment '扩展字段在mt_data中的记录ID',
is_deleted tinyint(1) null comment 'is_deleted',
life_status_before_invalid varchar(255) null comment '作废前生命状态',
owner_department varchar(255) null comment '负责人主属部门',
out_owner varchar(1024) null comment '外部负责人',
owner varchar(1024) null comment '负责人',
lock_status varchar(255) null comment '锁定状态',
last_modified_time datetime null comment '最后修改时间',
create_time datetime null comment '创建时间',
life_status varchar(255) null comment '生命状态',
related_object_data varchar(1024) null comment '关联业务数据',
last_modified_by varchar(1024) null comment '最后修改人',
out_tenant_id varchar(255) null comment '外部企业',
version decimal(18, 2) null comment 'version',
created_by varchar(1024) null comment '创建人',
relevant_team varchar(1024) null comment '相关团队',
record_type varchar(255) null comment '业务类型',
related_object varchar(1024) null comment '关联业务模块',
field_zzD04__c text null comment '跟进记录内容',
data_own_department varchar(1024) null comment '归属部门',
name varchar(255) null comment '记录ID',
order_by decimal(18, 2) null comment 'order_by',
opportunity_id varchar(255) null comment '商机ID',
next_action_plan text null comment '下一步行动计划',
visiting_personnel varchar(255) null comment '拜访人员',
delete_flag tinyint(1) null comment '删除标识0-正常1-已删除)',
extra json null comment '扩展内容'
)
comment '销售记录表';
create table `autoflow-demo`.crm_sentinel_events
(
id int auto_increment
primary key,
event_id varchar(255) not null comment 'Public event ID',
check_name varchar(100) not null comment 'Check name e.g. stale_task',
severity varchar(20) not null comment 'INFO/WARNING/CRITICAL',
status varchar(20) default 'OPEN' not null comment 'OPEN/RESOLVED/SUPPRESSED',
subject_type varchar(100) not null comment 'task_execution/work_item/celery_queue/db_session',
subject_id varchar(255) not null comment 'Subject identifier',
message text not null comment 'Human-readable description',
detail json null comment 'Structured payload',
resolved_at datetime null comment 'When finding was resolved',
created_at datetime default CURRENT_TIMESTAMP not null comment 'Create time',
updated_at datetime default CURRENT_TIMESTAMP not null on update CURRENT_TIMESTAMP comment 'Update time',
constraint idx_sentinel_event_id
unique (event_id)
)
comment 'Sentinel health monitor events';
create index idx_sentinel_check_status
on `autoflow-demo`.crm_sentinel_events (check_name, status);
create index idx_sentinel_open_lookup
on `autoflow-demo`.crm_sentinel_events (check_name, subject_id, status);
create index idx_sentinel_severity_status_created
on `autoflow-demo`.crm_sentinel_events (severity, status, created_at);
create index idx_sentinel_subject
on `autoflow-demo`.crm_sentinel_events (subject_type, subject_id);
create table `autoflow-demo`.crm_sentinel_schedule_log
(
id int auto_increment
primary key,
log_id varchar(255) not null comment 'Public log ID',
plan_id varchar(255) not null comment 'Workflow plan ID',
execution_id varchar(255) not null comment 'Expected task execution ID',
triggered_at datetime not null comment 'When trigger succeeded',
trigger_source varchar(50) default 'manual' not null comment 'cronicle/manual',
verified_at datetime null comment 'When submission check completed',
status varchar(20) default 'PENDING' not null comment 'PENDING/VERIFIED/MISSING',
created_at datetime default CURRENT_TIMESTAMP not null comment 'Create time',
updated_at datetime default CURRENT_TIMESTAMP not null on update CURRENT_TIMESTAMP comment 'Update time',
constraint idx_sentinel_schedule_log_id
unique (log_id)
)
comment 'Sentinel scheduled trigger audit log';
create index idx_sentinel_schedule_execution
on `autoflow-demo`.crm_sentinel_schedule_log (execution_id);
create index idx_sentinel_schedule_plan_status
on `autoflow-demo`.crm_sentinel_schedule_log (plan_id, status);
create table `autoflow-demo`.crm_stage
(
id bigint auto_increment comment '主键ID自增序列'
primary key,
workflow_id varchar(255) null comment '阶段推进器版本号',
workflow_name varchar(255) null comment '流程名称',
accumulate_time decimal(18, 2) null comment '任务历史停留时长',
life_status_before_invalid varchar(255) null comment '作废前生命状态',
activity_id varchar(255) null comment '节点定义id',
state varchar(255) null comment '任务状态',
candidate_ids text null comment '待处理人',
total_spent_time varchar(512) null comment '任务停留总时长',
timeout_time varchar(512) null comment '超时时长',
create_time timestamp null comment '创建时间',
stage_id varchar(255) null comment '所属阶段',
link_app_type decimal(18, 2) null comment '外部业务类型',
link_app_id varchar(255) null comment '外部所属业务',
version decimal(18, 2) null comment 'version',
created_by json null comment '创建人',
relevant_team json null comment '相关团队',
start_time timestamp null comment '任务开始时间',
is_time_out tinyint(1) null comment '是否超时',
data_own_department json null comment '归属部门',
object_api_name varchar(255) null comment '关联对象',
object_describe_id varchar(255) null comment 'object_describe_id',
name varchar(255) null comment '名称',
_id varchar(255) null comment '_id',
remind_latency decimal(18, 2) null comment '允许停留时长',
object_record_type varchar(255) null comment '对象业务类型',
object_data_id varchar(255) null comment '关联数据',
origin_source varchar(255) null comment '数据来源',
is_deleted tinyint(1) null comment 'is_deleted',
recent_enter_time timestamp null comment '最近进入任务时间',
out_owner json null comment '外部负责人',
owner json null comment '负责人',
actual_duration decimal(18, 2) null comment '耗时(仅工作时间)',
last_modified_time timestamp null comment '最后修改时间',
processor_ids json null comment '已执行人',
life_status varchar(255) null comment '生命状态',
end_time timestamp null comment '任务结束时间',
last_modified_by json null comment '最后修改人',
out_tenant_id varchar(255) null comment '外部企业',
record_type varchar(255) null comment '业务类型',
related_object json null comment '所属对象',
workflow_instance_id varchar(255) null comment '所属阶段实例',
current_candidate_ids text null comment '当前待处理人',
read_employee json null comment '已读人员',
order_by decimal(18, 2) null comment 'order_by',
source_workflow_id varchar(255) null comment '流程的apiName',
stage_field_api_name varchar(255) null comment '对象字段',
delete_flag tinyint(1) null comment '删除标识0-正常1-已删除)',
extra json null comment '扩展内容'
)
comment '阶段表';
create table `autoflow-demo`.crm_sync_status
(
table_name varchar(100) not null comment '表名'
primary key,
last_sync_time datetime null comment '最后同步时间',
sync_type enum ('full', 'incremental') null comment '同步类型',
total_records int null comment '总记录数',
sync_status enum ('success', 'failed', 'running') null comment '同步状态',
error_message text null comment '错误信息',
created_at datetime default CURRENT_TIMESTAMP null comment '创建时间',
updated_at datetime default CURRENT_TIMESTAMP null on update CURRENT_TIMESTAMP comment '更新时间'
)
comment 'CRM同步状态表';
create table `autoflow-demo`.crm_system_configurations
(
id int auto_increment
primary key,
config_type varchar(255) not null comment '配置类型如CommunicationCategory/VisitStatus/UserRoles等',
config_key varchar(255) not null comment '配置键',
config_value varchar(255) not null comment '配置值',
is_active tinyint(1) not null comment '是否启用',
description text null comment '配置描述',
create_time datetime default CURRENT_TIMESTAMP not null comment '创建时间',
update_time datetime default CURRENT_TIMESTAMP not null comment '更新时间',
created_at datetime default CURRENT_TIMESTAMP not null comment '创建时间',
updated_at datetime default CURRENT_TIMESTAMP not null on update CURRENT_TIMESTAMP comment '更新时间'
)
comment '系统配置表';
create index idx_config_key
on `autoflow-demo`.crm_system_configurations (config_key);
create index idx_config_type
on `autoflow-demo`.crm_system_configurations (config_type);
create index idx_config_type_key
on `autoflow-demo`.crm_system_configurations (config_type, config_key);
create table `autoflow-demo`.crm_todo_merge_events
(
id int auto_increment
primary key,
unique_id varchar(255) not null comment '唯一性ID',
job_id varchar(255) null comment '合并任务ID',
survivor_todo_id varchar(255) not null comment '保留的待办唯一ID',
merged_todo_id varchar(255) null comment '被合并并软删除的待办唯一ID',
incoming_source varchar(50) null comment '新待办来源',
survivor_source varchar(50) null comment '保留待办来源',
decision varchar(100) not null comment '合并决策',
merge_action varchar(100) null comment 'LLM合并动作',
duplicate_reason text null comment '重复判断原因',
llm_decision_json json null comment 'LLM原始决策',
validated_decision_json json null comment '校验后的决策',
raw_candidate_json json null comment '新待办候选内容',
created_at datetime default CURRENT_TIMESTAMP not null comment '创建时间'
)
comment '待办合并审计表';
create index idx_todo_merge_events_decision
on `autoflow-demo`.crm_todo_merge_events (decision);
create index idx_todo_merge_events_job
on `autoflow-demo`.crm_todo_merge_events (job_id);
create index idx_todo_merge_events_merged
on `autoflow-demo`.crm_todo_merge_events (merged_todo_id);
create index idx_todo_merge_events_survivor
on `autoflow-demo`.crm_todo_merge_events (survivor_todo_id);
create table `autoflow-demo`.crm_todo_merge_jobs
(
id int auto_increment
primary key,
job_id varchar(255) not null comment '合并任务ID',
status varchar(50) default 'PENDING' not null comment '任务状态',
trigger_source varchar(100) null comment '触发来源',
scope_key varchar(512) null comment '合并范围键',
new_todo_ids_json json not null comment '新建待办ID列表',
candidate_todo_ids_json json null comment '候选待办ID列表',
attempt_count int default 0 not null comment '尝试次数',
last_error text null comment '最近错误',
created_at datetime default CURRENT_TIMESTAMP not null comment '创建时间',
started_at datetime null comment '开始时间',
completed_at datetime null comment '完成时间',
updated_at datetime default CURRENT_TIMESTAMP not null on update CURRENT_TIMESTAMP comment '更新时间',
constraint job_id
unique (job_id)
)
comment '待办语义合并任务表';
create index idx_todo_merge_jobs_scope
on `autoflow-demo`.crm_todo_merge_jobs (scope_key);
create index idx_todo_merge_jobs_status
on `autoflow-demo`.crm_todo_merge_jobs (status);
create table `autoflow-demo`.crm_todo_metrics_facts
(
id char(32) not null
primary key,
anchor varchar(20) not null,
grain varchar(10) not null,
period_start date not null,
period_end date not null,
hour_of_day int default 0 not null,
subject_type varchar(20) not null,
subject_id varchar(100) not null,
data_source varchar(100) default '' not null,
metric varchar(50) not null,
value_int int default 0 not null,
created_at datetime default CURRENT_TIMESTAMP null,
updated_at datetime default CURRENT_TIMESTAMP null,
constraint ux_crm_todo_metrics_facts
unique (anchor, grain, period_start, period_end, hour_of_day, subject_type, subject_id, data_source, metric)
);
create index idx_todo_company_week_anchor_metric_ds
on `autoflow-demo`.crm_todo_metrics_facts (anchor, grain, subject_type, subject_id, metric, data_source,
period_start);
create index ix_crm_todo_metrics_facts_anchor_grain_period_metric_ds
on `autoflow-demo`.crm_todo_metrics_facts (anchor, grain, period_start, period_end, metric, data_source);
create index ix_crm_todo_metrics_facts_subject_period_metric
on `autoflow-demo`.crm_todo_metrics_facts (subject_type, subject_id, period_start, metric);
create table `autoflow-demo`.crm_todos
(
id int auto_increment
primary key,
unique_id varchar(255) not null comment '唯一性ID必填',
title varchar(255) not null comment '待办事项标题',
description text null comment '详细描述',
status varchar(50) null comment '状态(待处理/进行中/已完成/已取消)系统状态',
priority varchar(50) null comment '优先级(高/中/低)',
start_date date null comment '开始日期',
due_date date null comment '截止日期',
reminder_date date null comment '提醒日期',
owner_status varchar(50) null comment '负责人状态(待处理/进行中/已完成/已取消)',
ai_status varchar(50) null comment 'AI建议状态待处理/进行中/已完成/已取消)',
ai_note text null comment 'AI建议备注',
eval_time datetime null comment '评估时间',
owner_id varchar(255) null comment '负责人唯一性ID',
owner_name varchar(255) null comment '负责人姓名',
opportunity_id varchar(255) null comment '关联的商机唯一ID',
opportunity_name varchar(255) null comment '关联的商机名称',
opportunity_stage varchar(255) null comment '关联的商机阶段',
account_id varchar(255) null comment '关联的客户唯一ID',
account_name varchar(255) null comment '关联的客户名称',
department varchar(255) null comment '部门',
department_id varchar(255) null comment '部门唯一性ID',
internal_participants text null comment '内部参与者JSON格式',
external_participants text null comment '外部参与者即客户JSON格式',
linked_account_ids text null comment 'Mandatory: 关联的客户ID列表JSON格式',
linked_opportunity_ids text null comment 'Mandatory: 关联的商机ID列表JSON格式',
todo_type varchar(50) null comment '待办类型(跟进/会议/电话/邮件/其他)',
category varchar(50) null comment '分类(销售/客户服务/内部协调等)',
tags varchar(255) null comment '标签(逗号分隔)',
todo_suggestion text null comment '待办建议',
suggested_material text null comment '建议材料',
playbook_item_ref varchar(255) null comment '销售手册项目引用格式playbook_{stage}_{idx}如playbook_Qualification_0多个引用用逗号分隔',
completion_date datetime null comment '完成日期',
completion_note text null comment '完成说明',
user_update_time datetime null comment '用户更新时间(用户更新状态、完成说明或截止日期时的时间戳)',
data_source varchar(50) null comment '数据来源Review/Playbook/Meeting/Chatbot/CRM/等)',
creator varchar(255) null comment '创建人',
creator_id varchar(255) null comment '创建人唯一性ID',
create_time datetime default CURRENT_TIMESTAMP not null comment '创建时间',
last_modifier varchar(255) null comment '最后修改人',
update_time datetime default CURRENT_TIMESTAMP not null comment '最后修改时间',
is_deleted tinyint(1) default 0 null comment '是否删除',
delete_time datetime null comment '删除时间',
correlation_id varchar(255) null comment '关联ID',
created_at datetime default CURRENT_TIMESTAMP not null comment '创建时间',
updated_at datetime default CURRENT_TIMESTAMP not null on update CURRENT_TIMESTAMP comment '更新时间'
)
comment '待办事项表';
create index idx_crm_todos_account_id
on `autoflow-demo`.crm_todos (account_id, is_deleted);
create index idx_crm_todos_opportunity_id
on `autoflow-demo`.crm_todos (opportunity_id, is_deleted);
create index idx_crm_todos_overdue
on `autoflow-demo`.crm_todos (ai_status, due_date, is_deleted);
create index idx_crm_todos_owner_id
on `autoflow-demo`.crm_todos (owner_id, is_deleted);
create table `autoflow-demo`.crm_todos_weekly_metrics
(
id char(32) not null
primary key,
week_start date not null,
week_end date not null,
assignee_id varchar(100) not null,
department_id varchar(100) not null,
metric varchar(50) not null,
data_source varchar(100) default '' not null,
value int default 0 not null,
created_at datetime default CURRENT_TIMESTAMP null,
updated_at datetime default CURRENT_TIMESTAMP null,
constraint ux_crm_todos_weekly_metrics
unique (week_start, week_end, assignee_id, department_id, metric, data_source)
);
create index ix_week_start_week_end_dept_id_metric_data_source
on `autoflow-demo`.crm_todos_weekly_metrics (week_start, week_end, department_id, metric, data_source);
create index ix_week_start_week_end_metric_data_source
on `autoflow-demo`.crm_todos_weekly_metrics (week_start, week_end, metric, data_source);
create table `autoflow-demo`.crm_tracked_field_snapshots
(
id int auto_increment
primary key,
unique_id varchar(255) not null comment '唯一性ID必填',
source_table varchar(255) null comment '源数据表名',
source_id int null comment '源数据记录ID',
source_unique_id varchar(255) null comment '源数据记录唯一性ID',
source_field_name varchar(255) null comment '源数据字段名称',
last_processed_content text null comment '最后处理内容',
last_processed_hash varchar(255) null comment '最后处理哈希值',
last_processed_time datetime null comment '最后处理时间',
delta_content text null comment '增量内容',
flag varchar(255) null comment '标志位,标记该数据被处理的任务',
create_time datetime default CURRENT_TIMESTAMP not null comment '创建时间',
update_time datetime default CURRENT_TIMESTAMP not null comment '更新时间',
created_at datetime default CURRENT_TIMESTAMP not null comment '创建时间',
updated_at datetime default CURRENT_TIMESTAMP not null on update CURRENT_TIMESTAMP comment '更新时间'
)
comment '跟踪字段快照表';
create index idx_unique_id
on `autoflow-demo`.crm_tracked_field_snapshots (unique_id);
create table `autoflow-demo`.crm_user
(
unique_id varchar(64) null,
user_name varchar(255) null,
department varchar(255) null,
role varchar(255) null,
created_time datetime null,
updated_time datetime null,
sf_raw json null,
extra json null,
manager_id varchar(255) null comment '上级管理者ID',
region_name varchar(255) null comment '所属区域名称',
role_type varchar(50) null comment '角色类型(管理/成员)',
id int auto_increment comment '主键ID'
primary key,
department_id varchar(255) null comment '部门ID关联 crm_department.unique_id',
delete_flag tinyint(1) null comment '删除标识0-正常1-已删除)',
client_id varchar(64) null comment '客户/租户ID',
email varchar(255) null comment '邮箱',
phone varchar(50) null comment '电话号码',
constraint uq_crm_user_unique_id
unique (unique_id)
)
comment 'CRM 用户表';
create table `autoflow-demo`.crm_visit_metrics_facts
(
id char(32) not null
primary key,
anchor varchar(20) not null,
grain varchar(10) not null,
period_start date not null,
period_end date not null,
subject_type varchar(20) not null,
subject_id varchar(100) not null,
department_id varchar(100) default '' not null,
department_name varchar(255) default '' not null,
metric varchar(50) not null,
weekday_iso int default 0 not null,
value_int int default 0 not null,
created_at datetime default CURRENT_TIMESTAMP null,
updated_at datetime default CURRENT_TIMESTAMP null,
constraint ux_crm_visit_metrics_facts
unique (anchor, grain, period_start, period_end, subject_type, subject_id, department_id, metric, weekday_iso)
);
create index idx_visit_company_week_anchor_metric
on `autoflow-demo`.crm_visit_metrics_facts (anchor, grain, subject_type, subject_id, metric, weekday_iso,
period_start);
create index ix_crm_visit_metrics_facts_anchor_grain_period_metric
on `autoflow-demo`.crm_visit_metrics_facts (anchor, grain, period_start, period_end, metric);
create index ix_crm_visit_metrics_facts_dept_period_metric
on `autoflow-demo`.crm_visit_metrics_facts (department_id, period_start, period_end, metric);
create index ix_crm_visit_metrics_facts_subject_period
on `autoflow-demo`.crm_visit_metrics_facts (subject_type, subject_id, period_start, period_end);
create table `autoflow-demo`.crm_weekly_followup_entity_summary
(
id char(32) not null
primary key,
week_start date not null,
week_end date not null,
department_id varchar(100) null,
department_name varchar(255) not null,
entity_type varchar(50) not null,
entity_id varchar(255) not null,
account_id varchar(255) null,
account_name varchar(255) null,
opportunity_id varchar(255) null,
opportunity_name varchar(255) null,
partner_id varchar(255) null,
partner_name varchar(255) null,
owner_user_id varchar(64) null,
owner_name varchar(255) null,
progress text null,
risks text null,
evidence_record_ids text null,
comments json null,
created_at datetime default CURRENT_TIMESTAMP not null,
updated_at datetime default CURRENT_TIMESTAMP not null,
constraint ux_crm_weekly_followup_entity
unique (week_start, week_end, department_name, entity_type, entity_id)
);
create index idx_weekly_followup_entity_dept
on `autoflow-demo`.crm_weekly_followup_entity_summary (department_name);
create index idx_weekly_followup_entity_dept_id
on `autoflow-demo`.crm_weekly_followup_entity_summary (department_id);
create index idx_weekly_followup_entity_entity
on `autoflow-demo`.crm_weekly_followup_entity_summary (entity_type, entity_id);
create index idx_weekly_followup_entity_owner
on `autoflow-demo`.crm_weekly_followup_entity_summary (owner_user_id);
create index idx_weekly_followup_entity_week
on `autoflow-demo`.crm_weekly_followup_entity_summary (week_start, week_end);
create table `autoflow-demo`.crm_weekly_followup_leader_engagement
(
id char(32) not null
primary key,
summary_id char(32) not null,
week_start date not null,
week_end date not null,
department_id varchar(100) default '' not null,
department_name varchar(255) default '' not null,
leader_user_id varchar(64) not null,
reviewed_at datetime null,
commented_at datetime null,
created_at datetime default CURRENT_TIMESTAMP null,
updated_at datetime default CURRENT_TIMESTAMP null,
constraint ux_weekly_followup_leader_engagement
unique (summary_id, leader_user_id)
);
create index idx_weekly_followup_leader_engagement_leader_reviewed
on `autoflow-demo`.crm_weekly_followup_leader_engagement (leader_user_id, reviewed_at);
create index idx_weekly_followup_leader_engagement_summary
on `autoflow-demo`.crm_weekly_followup_leader_engagement (summary_id);
create index idx_weekly_followup_leader_engagement_week_dept
on `autoflow-demo`.crm_weekly_followup_leader_engagement (week_start, week_end, department_name);
create index idx_weekly_followup_leader_engagement_week_dept_id
on `autoflow-demo`.crm_weekly_followup_leader_engagement (week_start, week_end, department_id);
create table `autoflow-demo`.crm_weekly_followup_summary
(
id char(32) not null
primary key,
week_start date not null,
week_end date not null,
summary_type varchar(50) not null,
department_id varchar(100) default '' not null,
department_name varchar(255) default '' not null,
title varchar(255) default '' not null,
summary_content text null,
created_at datetime default CURRENT_TIMESTAMP not null,
updated_at datetime default CURRENT_TIMESTAMP not null,
constraint ux_crm_weekly_followup_summary
unique (week_start, week_end, summary_type, department_name)
);
create index idx_weekly_followup_summary_dept_id
on `autoflow-demo`.crm_weekly_followup_summary (department_id);
create index idx_weekly_followup_summary_type_dept
on `autoflow-demo`.crm_weekly_followup_summary (summary_type, department_name);
create index idx_weekly_followup_summary_week
on `autoflow-demo`.crm_weekly_followup_summary (week_start, week_end);
create table `autoflow-demo`.crm_writeback_logs
(
id bigint auto_increment comment '主键ID'
primary key,
writeback_type varchar(50) not null comment '回写类型VISIT_RECORD',
unique_id varchar(100) not null comment '来源拜访记录ID原始数据表的主键',
external_id varchar(100) null comment 'CRM对象记录ID回写成功后获得',
status varchar(20) not null comment '状态SUCCESS, FAILED',
request_data text null comment '请求数据JSON',
response_data text null comment '响应数据JSON',
error_message text null comment '错误信息',
execution_time int null comment '执行时间(毫秒)',
create_time datetime default CURRENT_TIMESTAMP not null comment '创建时间'
)
comment 'CRM数据回写日志表';
create index idx_create_time
on `autoflow-demo`.crm_writeback_logs (create_time);
create index idx_external_id
on `autoflow-demo`.crm_writeback_logs (external_id);
create index idx_status
on `autoflow-demo`.crm_writeback_logs (status);
create index idx_type_status_time
on `autoflow-demo`.crm_writeback_logs (writeback_type, status, create_time);
create index idx_unique_status
on `autoflow-demo`.crm_writeback_logs (unique_id, status);
create table `autoflow-demo`.department_mirror
(
id int auto_increment
primary key,
create_time datetime default CURRENT_TIMESTAMP null,
update_time datetime default CURRENT_TIMESTAMP null,
unique_id varchar(100) not null,
department_name varchar(255) not null,
parent_id varchar(100) null,
path varchar(500) null,
is_active tinyint(1) default 1 not null,
description varchar(500) null,
constraint ix_department_mirror_unique_id
unique (unique_id),
constraint unique_id
unique (unique_id)
);
create index ix_department_mirror_parent_id
on `autoflow-demo`.department_mirror (parent_id);
create index ix_department_mirror_path
on `autoflow-demo`.department_mirror (path);
create table `autoflow-demo`.diagnostic_playbook
(
id int auto_increment
primary key,
plan_id varchar(64) not null comment '执行计划ID',
report_id varchar(64) null comment '报告ID',
execution_id varchar(255) not null comment '执行ID, naming convention: plan_<plan_id>_<version>',
handbook_id varchar(64) not null comment '手册ID',
name varchar(255) not null comment '手册名称',
version varchar(255) not null comment '手册版本',
status varchar(255) not null comment '手册状态: active(生效中), draft(草稿), archived(已归档), deprecated(已废弃)',
type varchar(255) not null comment '手册类型',
sequence int not null comment '销售阶段顺序用于确定阶段的先后顺序从1开始',
sales_stage varchar(255) null comment '销售阶段',
sales_key_activities text null comment '销售关键动作',
sales_deliverables text null comment '交付成果',
sales_exit_criteria text null comment '阶段转化标准',
sales_key_info text null comment '关键获取信息(CRM必填项)',
sales_outcomes text null comment '销售阶段任务',
customer_behavior_purchase text null comment '客户采购行为',
customer_behavior_supporting text null comment '客户支持行为',
sales_alerts text null comment '预警',
fcst_eval_checklist text null comment 'FCST评估清单',
fcst_eval_guidance text null comment 'FCST评估指引',
created_at datetime default CURRENT_TIMESTAMP not null comment '创建时间',
updated_at datetime default CURRENT_TIMESTAMP not null on update CURRENT_TIMESTAMP comment '更新时间',
stage_category varchar(64) null comment '阶段语义分类: open/closed_won/closed_lost/cancelled',
stage_attributes json null comment '阶段行为属性覆盖(JSON)'
)
comment '诊断Playbook表';
create index idx_diagnostic_playbook_stage_category
on `autoflow-demo`.diagnostic_playbook (handbook_id, stage_category);
create index idx_diagnostic_playbook_stage_lookup
on `autoflow-demo`.diagnostic_playbook (handbook_id, status, sales_stage);
create table `autoflow-demo`.embedding_models
(
created_at datetime default CURRENT_TIMESTAMP null,
updated_at datetime default CURRENT_TIMESTAMP null,
id int auto_increment
primary key,
name varchar(64) not null,
provider varchar(32) not null,
model varchar(256) not null,
config json null,
credentials blob null,
is_default tinyint(1) not null,
vector_dimension int not null
);
create table `autoflow-demo`.entities
(
name varchar(512) not null,
description text null,
meta json null,
entity_type enum ('original', 'synopsis') not null,
synopsis_info json null,
id int auto_increment
primary key,
description_vec vector(1536) null comment 'hnsw(distance=cosine)',
meta_vec vector(1536) null comment 'hnsw(distance=cosine)',
graph_type enum ('general', 'playbook', 'crm') default 'general' not null
);
create index idx_entity_graph_type
on `autoflow-demo`.entities (graph_type);
create index idx_entity_type
on `autoflow-demo`.entities (entity_type);
create table `autoflow-demo`.entities_1
(
id int auto_increment
primary key,
name varchar(512) not null,
description text null,
meta json null,
entity_type enum ('original', 'synopsis') not null,
synopsis_info json null,
description_vec vector(1024) not null,
meta_vec vector(1024) not null,
graph_type enum ('general', 'playbook', 'crm') default 'general' not null
);
create index idx_entity_name
on `autoflow-demo`.entities_1 (name);
create index idx_entity_type
on `autoflow-demo`.entities_1 (entity_type);
create index vec_idx_description_vec
on `autoflow-demo`.entities_1 (description_vec);
create index vec_idx_meta_vec
on `autoflow-demo`.entities_1 (meta_vec);
create table `autoflow-demo`.entities_2
(
id int auto_increment
primary key,
name varchar(512) not null,
description text null,
meta json null,
entity_type enum ('original', 'synopsis') not null,
synopsis_info json null,
description_vec vector(1024) not null,
meta_vec vector(1024) not null,
graph_type enum ('general', 'playbook', 'crm') default 'general' not null
);
create index idx_entity_name
on `autoflow-demo`.entities_2 (name);
create index idx_entity_type
on `autoflow-demo`.entities_2 (entity_type);
create index vec_idx_description_vec
on `autoflow-demo`.entities_2 (description_vec);
create index vec_idx_meta_vec
on `autoflow-demo`.entities_2 (meta_vec);
create table `autoflow-demo`.feishu_billing_usage_report
(
id char(32) not null
primary key,
trace_id varchar(220) not null,
ai_module_key varchar(128) not null,
operator varchar(128) not null,
review_detail text null,
status varchar(20) not null,
last_api_code int null,
last_message text null,
attempts int not null,
last_exception_type varchar(200) null,
created_at datetime default CURRENT_TIMESTAMP null,
updated_at datetime default CURRENT_TIMESTAMP null,
constraint ux_feishu_billing_usage_report_trace
unique (trace_id)
);
create index idx_feishu_billing_usage_module_created
on `autoflow-demo`.feishu_billing_usage_report (ai_module_key, created_at);
create index idx_feishu_billing_usage_status_created
on `autoflow-demo`.feishu_billing_usage_report (status, created_at);
create table `autoflow-demo`.llms
(
created_at datetime default CURRENT_TIMESTAMP null,
updated_at datetime default CURRENT_TIMESTAMP null,
id int auto_increment
primary key,
name varchar(64) not null,
provider varchar(32) not null,
model varchar(256) not null,
config json null,
credentials blob null,
is_default tinyint(1) not null
);
create table `autoflow-demo`.local_contacts
(
id int auto_increment comment '主键ID自增'
primary key,
unique_id varchar(255) not null comment '唯一性ID必填',
name varchar(255) not null comment '联系人姓名(必填)',
customer_id varchar(255) not null comment '客户ID关联crm_accounts.unique_id必填',
customer_name varchar(255) not null comment '客户名称(必填)',
position varchar(255) not null comment '联系人职位(必填)',
gender varchar(10) null comment '性别',
mobile varchar(255) null comment '手机',
phone varchar(255) null comment '电话',
email varchar(255) null comment '邮件',
wechat varchar(255) null comment '微信',
address varchar(512) null comment '联系地址',
key_decision_maker tinyint(1) null comment '是否为关键决策人',
source varchar(255) null comment '来源',
remarks text null comment '备注',
delete_flag tinyint(1) null comment '删除标识',
created_at datetime default CURRENT_TIMESTAMP null comment '创建时间',
updated_at datetime default CURRENT_TIMESTAMP null comment '更新时间',
created_by char(32) null comment '创建人ID',
updated_by char(32) null comment '最后修改人ID',
crm_unique_id varchar(255) null comment 'CRM系统唯一ID回写后填充',
synced_to_crm tinyint(1) null comment '是否已同步到CRM',
synced_at datetime null comment '同步到CRM的时间',
department varchar(255) null comment '部门',
direct_superior varchar(255) null comment '直属上级',
status varchar(255) null comment '状态',
business_relationship varchar(255) null comment '商务关系',
constraint idx_local_contacts_unique_id
unique (unique_id)
);
create index idx_local_contacts_customer_id
on `autoflow-demo`.local_contacts (customer_id);
create index idx_local_contacts_customer_name
on `autoflow-demo`.local_contacts (customer_name);
create index idx_local_contacts_delete_flag
on `autoflow-demo`.local_contacts (delete_flag);
create index idx_local_contacts_name
on `autoflow-demo`.local_contacts (name);
create table `autoflow-demo`.oauth_alembic_version
(
version_num varchar(32) not null
primary key
);
create table `autoflow-demo`.relationships
(
description text null,
meta json null,
weight int not null,
source_entity_id int not null,
target_entity_id int not null,
last_modified_at datetime null,
id int auto_increment
primary key,
description_vec vector(1536) null comment 'hnsw(distance=cosine)',
chunk_id char(32) null,
document_id int null,
graph_type enum ('general', 'playbook', 'crm') default 'general' not null,
constraint fk_1
foreign key (source_entity_id) references `autoflow-demo`.entities (id),
constraint fk_2
foreign key (target_entity_id) references `autoflow-demo`.entities (id)
);
create index idx_relationship_graph_type
on `autoflow-demo`.relationships (graph_type);
create table `autoflow-demo`.relationships_1
(
id int auto_increment
primary key,
description text null,
meta json null,
weight int not null,
source_entity_id int not null,
target_entity_id int not null,
last_modified_at datetime null,
document_id int null,
chunk_id char(32) null,
description_vec vector(1024) not null,
graph_type enum ('general', 'playbook', 'crm') default 'general' not null,
constraint fk_1
foreign key (source_entity_id) references `autoflow-demo`.entities_1 (id),
constraint fk_2
foreign key (target_entity_id) references `autoflow-demo`.entities_1 (id)
);
create index idx_relationship_chunk_id
on `autoflow-demo`.relationships_1 (chunk_id);
create index idx_relationship_document_id
on `autoflow-demo`.relationships_1 (document_id);
create index idx_relationship_graph_chunk
on `autoflow-demo`.relationships_1 (graph_type, chunk_id);
create index idx_relationship_graph_doc
on `autoflow-demo`.relationships_1 (graph_type, document_id);
create index idx_relationship_graph_type
on `autoflow-demo`.relationships_1 (graph_type);
create index vec_idx_description_vec
on `autoflow-demo`.relationships_1 (description_vec);
create table `autoflow-demo`.relationships_2
(
id int auto_increment
primary key,
description text null,
meta json null,
weight int not null,
source_entity_id int not null,
target_entity_id int not null,
last_modified_at datetime null,
document_id int null,
chunk_id char(32) null,
description_vec vector(1024) not null,
graph_type enum ('general', 'playbook', 'crm') default 'general' not null,
constraint fk_1
foreign key (source_entity_id) references `autoflow-demo`.entities_2 (id),
constraint fk_2
foreign key (target_entity_id) references `autoflow-demo`.entities_2 (id)
);
create index idx_relationship_chunk_id
on `autoflow-demo`.relationships_2 (chunk_id);
create index idx_relationship_document_id
on `autoflow-demo`.relationships_2 (document_id);
create index idx_relationship_graph_chunk
on `autoflow-demo`.relationships_2 (graph_type, chunk_id);
create index idx_relationship_graph_doc
on `autoflow-demo`.relationships_2 (graph_type, document_id);
create index idx_relationship_graph_type
on `autoflow-demo`.relationships_2 (graph_type);
create index vec_idx_description_vec
on `autoflow-demo`.relationships_2 (description_vec);
create table `autoflow-demo`.reranker_models
(
created_at datetime default CURRENT_TIMESTAMP null,
updated_at datetime default CURRENT_TIMESTAMP null,
name varchar(64) not null,
provider varchar(32) not null,
model varchar(256) not null,
top_n int not null,
config json null,
is_default tinyint(1) not null,
id int auto_increment
primary key,
credentials blob null
);
create table `autoflow-demo`.chat_engines
(
created_at datetime default CURRENT_TIMESTAMP null,
updated_at datetime default CURRENT_TIMESTAMP null,
id int auto_increment
primary key,
name varchar(256) not null,
engine_options json null,
is_default tinyint(1) not null,
deleted_at datetime null,
llm_id int null,
fast_llm_id int null,
reranker_id int null,
is_public tinyint(1) not null,
constraint fk_1
foreign key (fast_llm_id) references `autoflow-demo`.llms (id),
constraint fk_2
foreign key (llm_id) references `autoflow-demo`.llms (id),
constraint fk_3
foreign key (reranker_id) references `autoflow-demo`.reranker_models (id)
);
create table `autoflow-demo`.semantic_cache
(
id int auto_increment
primary key,
query text null,
query_vec vector(1536) null comment 'hnsw(distance=cosine)',
value text null,
value_vec vector(1536) null comment 'hnsw(distance=cosine)',
meta json null,
created_at datetime default CURRENT_TIMESTAMP null,
updated_at datetime default CURRENT_TIMESTAMP null
);
create table `autoflow-demo`.site_settings
(
created_at datetime(6) default CURRENT_TIMESTAMP(6) null,
updated_at datetime(6) default CURRENT_TIMESTAMP(6) null on update CURRENT_TIMESTAMP(6),
id int auto_increment
primary key,
name varchar(256) not null,
data_type varchar(256) not null,
value json null,
constraint name
unique (name)
);
create table `autoflow-demo`.staff_action_logs
(
id int auto_increment
primary key,
action varchar(255) not null,
action_time datetime default CURRENT_TIMESTAMP null,
target_type varchar(255) not null,
target_id int not null,
`before` json null,
after json null
);
create table `autoflow-demo`.user
(
id bigint auto_increment comment 'db主键id'
primary key,
uid varchar(255) null comment '为用户生成的uid',
user_id varchar(255) null comment '用户自定义/企业飞书内id',
role varchar(255) null comment '用户角色',
name varchar(255) null comment '用户姓名',
en_name varchar(255) null comment '用户英文名',
avatar_url varchar(255) null comment '用户头像URL',
email varchar(255) null comment '用户邮箱',
mobile varchar(20) null comment '用户手机号',
password varchar(255) null comment '用户密码',
email_verified datetime null comment '邮箱验证时间',
corporation_id varchar(255) null comment '企业ID',
open_id varchar(255) null comment '开放ID',
union_id varchar(255) null comment '统一ID',
enterprise_email varchar(255) null comment '企业邮箱',
tenant_key varchar(255) null comment '租户密钥',
employee_no varchar(255) null comment '员工编号',
creator varchar(255) null comment '创建者',
create_time datetime default CURRENT_TIMESTAMP null comment '创建时间',
updater varchar(255) null comment '更新者',
update_time datetime default CURRENT_TIMESTAMP null on update CURRENT_TIMESTAMP comment '最后更新时间',
version int default 1 null comment '数据版本',
delete_flag tinyint(1) default 0 null comment '删除标识, 1已删除',
channel varchar(255) null comment '登录渠道',
ask_user_id varchar(255) null comment 'ask服务的email',
ask_id varchar(255) null comment 'ask服务的id',
fxiaoke_id varchar(255) null comment 'fxiaoke用户id',
extra_info json null comment '扩展信息'
);
create index idx_delete_flag
on `autoflow-demo`.user (delete_flag);
create table `autoflow-demo`.user_department_relation
(
id int auto_increment
primary key,
create_time datetime default CURRENT_TIMESTAMP null,
update_time datetime default CURRENT_TIMESTAMP null,
user_id char(36) null,
crm_user_id varchar(100) not null,
department_id varchar(100) not null,
is_primary tinyint(1) default 0 not null,
is_leader tinyint(1) default 0 not null,
title varchar(100) null,
user_name varchar(100) null,
is_active tinyint(1) default 1 not null
);
create index ix_user_department_relation_crm_user_id
on `autoflow-demo`.user_department_relation (crm_user_id);
create index ix_user_department_relation_department_id
on `autoflow-demo`.user_department_relation (department_id);
create index ix_user_department_relation_is_active
on `autoflow-demo`.user_department_relation (is_active);
create index ix_user_department_relation_is_leader
on `autoflow-demo`.user_department_relation (is_leader);
create index ix_user_department_relation_is_primary
on `autoflow-demo`.user_department_relation (is_primary);
create index ix_user_department_relation_user_id
on `autoflow-demo`.user_department_relation (user_id);
create table `autoflow-demo`.user_reporting_relation
(
id int auto_increment
primary key,
from_user_id varchar(100) not null comment '上级用户IDCRM用户ID表示 from_user_id 是 to_user_id 的上级',
to_user_id varchar(100) not null comment '下级用户IDCRM用户ID表示 to_user_id 是 from_user_id 的下级',
level int default 1 not null comment '层级1=直接上级/下级2=间接上级/下级,以此类推)',
is_active tinyint(1) default 1 not null comment '关系是否有效',
create_time datetime default CURRENT_TIMESTAMP null,
update_time datetime default CURRENT_TIMESTAMP null,
constraint uq_user_reporting_relation
unique (from_user_id, to_user_id, level)
);
create index ix_user_reporting_relation_from_user_active
on `autoflow-demo`.user_reporting_relation (from_user_id, is_active);
create index ix_user_reporting_relation_from_user_id
on `autoflow-demo`.user_reporting_relation (from_user_id);
create index ix_user_reporting_relation_from_user_level
on `autoflow-demo`.user_reporting_relation (from_user_id, level, is_active);
create index ix_user_reporting_relation_is_active
on `autoflow-demo`.user_reporting_relation (is_active);
create index ix_user_reporting_relation_level
on `autoflow-demo`.user_reporting_relation (level);
create index ix_user_reporting_relation_to_user_active
on `autoflow-demo`.user_reporting_relation (to_user_id, is_active);
create index ix_user_reporting_relation_to_user_id
on `autoflow-demo`.user_reporting_relation (to_user_id);
create index ix_user_reporting_relation_to_user_level
on `autoflow-demo`.user_reporting_relation (to_user_id, level, is_active);
create table `autoflow-demo`.users
(
id char(32) not null
primary key,
email varchar(255) not null,
hashed_password varchar(255) not null,
is_active tinyint(1) not null,
is_superuser tinyint(1) not null,
is_verified tinyint(1) not null,
created_at datetime default CURRENT_TIMESTAMP null,
updated_at datetime default CURRENT_TIMESTAMP null,
constraint ix_users_email
unique (email)
);
create table `autoflow-demo`.api_keys
(
created_at datetime default CURRENT_TIMESTAMP null,
updated_at datetime default CURRENT_TIMESTAMP null,
id int auto_increment
primary key,
description varchar(100) not null,
hashed_secret varchar(255) not null,
api_key_display varchar(100) not null,
is_active tinyint(1) not null,
user_id char(32) not null,
constraint hashed_secret
unique (hashed_secret),
constraint fk_1
foreign key (user_id) references `autoflow-demo`.users (id)
);
create table `autoflow-demo`.chats
(
created_at datetime default CURRENT_TIMESTAMP null,
updated_at datetime default CURRENT_TIMESTAMP null,
id char(32) not null
primary key,
title varchar(256) not null,
engine_id int null,
engine_options json null,
deleted_at datetime null,
user_id char(32) null,
browser_id varchar(50) null,
origin varchar(256) null,
visibility int not null,
chat_type enum ('default', 'client_visit_guide', 'review_session') default 'default' not null,
constraint fk_1
foreign key (engine_id) references `autoflow-demo`.chat_engines (id),
constraint fk_2
foreign key (user_id) references `autoflow-demo`.users (id)
);
create table `autoflow-demo`.chat_messages
(
created_at datetime default CURRENT_TIMESTAMP null,
updated_at datetime default CURRENT_TIMESTAMP null,
id int auto_increment
primary key,
ordinal int not null,
role varchar(64) not null,
content text null,
error text null,
sources json null,
trace_url varchar(512) null,
finished_at datetime null,
chat_id char(32) not null,
user_id char(32) null,
graph_data json null,
post_verification_result_url varchar(512) null,
meta json null,
is_best_answer tinyint(1) default 0 not null,
constraint fk_1
foreign key (chat_id) references `autoflow-demo`.chats (id),
constraint fk_2
foreign key (user_id) references `autoflow-demo`.users (id)
);
create index ix_chat_message_is_best_answer
on `autoflow-demo`.chat_messages (is_best_answer);
create index ix_chats_id
on `autoflow-demo`.chats (id);
create table `autoflow-demo`.crm_sales_visit_records
(
id int auto_increment
primary key,
account_name varchar(255) null,
account_id varchar(255) null,
opportunity_name varchar(255) null,
opportunity_id varchar(255) null,
partner_name varchar(255) null,
customer_lead_source varchar(255) null,
visit_object_category varchar(255) null,
contact_position varchar(255) null,
contact_name varchar(255) null,
contact_id varchar(255) null comment '联系人ID关联local_contacts或crm_contacts的unique_id',
recorder varchar(255) null,
collaborative_participants text null,
visit_communication_date date null,
counterpart_location varchar(255) null,
visit_communication_method varchar(255) null,
communication_duration varchar(255) null,
expectation_achieved varchar(255) null,
followup_record text null,
followup_quality_level_zh varchar(100) null,
followup_quality_reason_zh text null,
next_steps text null,
next_steps_quality_level_zh varchar(100) null,
next_steps_quality_reason_zh text null,
attachment longtext null,
parent_record varchar(255) null,
remarks text null,
last_modified_time datetime null,
record_id varchar(100) null,
is_first_visit tinyint(1) null,
recorder_id char(32) null,
visit_type varchar(20) null,
visit_url text null,
is_call_high tinyint(1) null,
subject varchar(50) null,
followup_content text null,
followup_record_zh text null,
next_steps_zh text null,
followup_record_en text null,
followup_quality_level_en varchar(100) null,
followup_quality_reason_en text null,
next_steps_en text null,
next_steps_quality_level_en varchar(100) null,
next_steps_quality_reason_en text null,
partner_id varchar(255) null,
visit_start_time varchar(19) null,
visit_end_time varchar(19) null,
record_type varchar(50) null,
visit_purpose varchar(255) null,
latitude decimal(10, 7) null comment '纬度,范围 -90 到 90',
longitude decimal(11, 7) null comment '经度,范围 -180 到 180',
comments json null comment '评论列表人工可编辑JSON数组',
contacts json null comment '联系人列表支持多个联系人JSON数组',
recorder_department_id varchar(100) null comment '记录人部门ID快照',
recorder_department_name varchar(255) null comment '记录人部门名称(快照)',
assessment_flag varchar(10) null,
assessment_description text null,
card_push_status varchar(32) null,
external_collaboration_partner_name varchar(255) null,
external_collaboration_partner_id varchar(255) null,
constraint fk_recorder_id
foreign key (recorder_id) references `autoflow-demo`.users (id)
);
create index idx_account_name
on `autoflow-demo`.crm_sales_visit_records (account_name);
create index idx_card_push_status
on `autoflow-demo`.crm_sales_visit_records (card_push_status);
create index idx_contact_id
on `autoflow-demo`.crm_sales_visit_records (contact_id);
create index idx_is_first_visit
on `autoflow-demo`.crm_sales_visit_records (is_first_visit);
create index idx_recorder
on `autoflow-demo`.crm_sales_visit_records (recorder);
create index idx_subject
on `autoflow-demo`.crm_sales_visit_records (subject);
create index idx_visit_date
on `autoflow-demo`.crm_sales_visit_records (visit_communication_date);
create index idx_visit_record_account_id
on `autoflow-demo`.crm_sales_visit_records (account_id);
create index idx_visit_record_last_modified_time
on `autoflow-demo`.crm_sales_visit_records (last_modified_time);
create index idx_visit_record_partner_name
on `autoflow-demo`.crm_sales_visit_records (partner_name);
create index idx_visit_record_recorder_date
on `autoflow-demo`.crm_sales_visit_records (recorder_id, visit_communication_date);
create index idx_visit_record_recorder_department_id
on `autoflow-demo`.crm_sales_visit_records (recorder_department_id);
create index idx_visit_record_recorder_id
on `autoflow-demo`.crm_sales_visit_records (recorder_id);
create index idx_visit_type
on `autoflow-demo`.crm_sales_visit_records (visit_type);
create table `autoflow-demo`.data_sources
(
created_at datetime default CURRENT_TIMESTAMP null,
updated_at datetime default CURRENT_TIMESTAMP null,
id int auto_increment
primary key,
name varchar(256) not null,
description varchar(512) not null,
data_source_type varchar(256) not null,
config json null,
build_kg_index tinyint(1) not null,
user_id char(32) null,
llm_id int null,
deleted_at datetime null,
constraint fk_1
foreign key (user_id) references `autoflow-demo`.users (id),
constraint fk_2
foreign key (llm_id) references `autoflow-demo`.llms (id)
);
create table `autoflow-demo`.document_contents
(
id int auto_increment comment '自增主键ID'
primary key,
user_id char(32) not null comment '用户ID',
visit_record_id varchar(128) null comment '关联的拜访记录ID',
document_type varchar(50) not null comment '文档类型: feishu_doc, feishu_minute, file',
source_url text not null comment '原文档URL',
raw_content mediumtext not null comment '原始文档内容',
title varchar(500) null comment '文档标题',
file_size int null comment '文件大小(字节)',
created_at datetime default CURRENT_TIMESTAMP not null comment '创建时间',
updated_at datetime default CURRENT_TIMESTAMP not null comment '更新时间',
meeting_summary mediumtext null,
summary_status varchar(20) null,
qa_pairs json null comment '从文档内容中抽取的问答对列表',
qa_extract_status varchar(20) null comment '问答对抽取状态: success, failed',
risk_info mediumtext null comment '从文档内容中提取的风险信息',
risk_extract_status varchar(20) null comment '风险信息提取状态: success, failed',
constraint fk_document_contents_user_id
foreign key (user_id) references `autoflow-demo`.users (id)
);
create table `autoflow-demo`.customer_documents
(
id int auto_increment comment '自增主键ID'
primary key,
file_category varchar(255) not null comment '文件类别如ABP、CallHigh等',
account_name varchar(255) not null comment '客户名称',
account_id varchar(255) not null comment '客户ID',
document_url text not null comment '文档链接',
document_type varchar(255) null comment '文档类型',
document_title varchar(500) null comment '文档标题',
uploader_id char(32) not null comment '上传者ID',
uploader_name varchar(255) not null comment '上传者姓名',
created_at datetime not null comment '创建时间',
updated_at datetime not null comment '更新时间',
document_content_id int null comment '关联的文档内容ID',
constraint fk_customer_documents_document_content_id
foreign key (document_content_id) references `autoflow-demo`.document_contents (id),
constraint fk_2
foreign key (document_content_id) references `autoflow-demo`.document_contents (id),
constraint fk_customer_documents_uploader_id
foreign key (uploader_id) references `autoflow-demo`.users (id),
constraint fk_1
foreign key (uploader_id) references `autoflow-demo`.users (id)
);
create index idx_created_at
on `autoflow-demo`.document_contents (created_at);
create index idx_document_type
on `autoflow-demo`.document_contents (document_type);
create index idx_qa_extract_status
on `autoflow-demo`.document_contents (qa_extract_status);
create index idx_risk_extract_status
on `autoflow-demo`.document_contents (risk_extract_status);
create index idx_summary_status
on `autoflow-demo`.document_contents (summary_status);
create index idx_user_id
on `autoflow-demo`.document_contents (user_id);
create index idx_user_type
on `autoflow-demo`.document_contents (user_id, document_type);
create index idx_visit_record_id
on `autoflow-demo`.document_contents (visit_record_id);
create table `autoflow-demo`.evaluation_datasets
(
created_at datetime default CURRENT_TIMESTAMP null,
updated_at datetime default CURRENT_TIMESTAMP null,
id int auto_increment
primary key,
name varchar(255) not null,
user_id char(32) null,
constraint fk_1
foreign key (user_id) references `autoflow-demo`.users (id)
);
create table `autoflow-demo`.evaluation_dataset_items
(
created_at datetime default CURRENT_TIMESTAMP null,
updated_at datetime default CURRENT_TIMESTAMP null,
id int auto_increment
primary key,
query text null,
reference text null,
retrieved_contexts json null,
extra json null,
evaluation_dataset_id int null,
constraint fk_1
foreign key (evaluation_dataset_id) references `autoflow-demo`.evaluation_datasets (id)
);
create table `autoflow-demo`.evaluation_tasks
(
created_at datetime default CURRENT_TIMESTAMP null,
updated_at datetime default CURRENT_TIMESTAMP null,
id int auto_increment
primary key,
name varchar(255) not null,
user_id char(32) null,
dataset_id int null,
constraint fk_1
foreign key (user_id) references `autoflow-demo`.users (id)
);
create table `autoflow-demo`.evaluation_task_items
(
created_at datetime default CURRENT_TIMESTAMP null,
updated_at datetime default CURRENT_TIMESTAMP null,
id int auto_increment
primary key,
chat_engine varchar(255) not null,
status varchar(32) not null,
query text null,
reference text null,
response text null,
retrieved_contexts json null,
extra json null,
error_msg text null,
factual_correctness float null,
semantic_similarity float null,
evaluation_task_id int null,
constraint fk_1
foreign key (evaluation_task_id) references `autoflow-demo`.evaluation_tasks (id)
);
create table `autoflow-demo`.feedbacks
(
created_at datetime default CURRENT_TIMESTAMP null,
updated_at datetime default CURRENT_TIMESTAMP null,
feedback_type enum ('LIKE', 'DISLIKE') not null,
comment varchar(500) not null,
id int auto_increment
primary key,
chat_id char(32) not null,
chat_message_id int not null,
user_id char(32) null,
origin varchar(256) null,
constraint fk_1
foreign key (chat_id) references `autoflow-demo`.chats (id),
constraint fk_2
foreign key (chat_message_id) references `autoflow-demo`.chat_messages (id),
constraint fk_3
foreign key (user_id) references `autoflow-demo`.users (id)
);
create table `autoflow-demo`.knowledge_bases
(
id int auto_increment
primary key,
name varchar(255) not null,
description mediumtext null,
index_methods json null,
llm_id int null,
embedding_model_id int null,
documents_total int not null,
data_sources_total int not null,
created_by char(32) null,
created_at datetime default CURRENT_TIMESTAMP null,
updated_by char(32) null,
updated_at datetime default CURRENT_TIMESTAMP null,
deleted_by char(32) null,
deleted_at datetime null,
chunking_config json null,
constraint fk_1
foreign key (created_by) references `autoflow-demo`.users (id),
constraint fk_2
foreign key (deleted_by) references `autoflow-demo`.users (id),
constraint fk_3
foreign key (embedding_model_id) references `autoflow-demo`.embedding_models (id),
constraint fk_4
foreign key (llm_id) references `autoflow-demo`.llms (id),
constraint fk_5
foreign key (updated_by) references `autoflow-demo`.users (id)
);
create table `autoflow-demo`.knowledge_base_datasources
(
knowledge_base_id int not null,
data_source_id int not null,
primary key (knowledge_base_id, data_source_id),
constraint fk_1
foreign key (data_source_id) references `autoflow-demo`.data_sources (id),
constraint fk_2
foreign key (knowledge_base_id) references `autoflow-demo`.knowledge_bases (id)
);
create table `autoflow-demo`.oauth_accounts
(
uid char(36) not null comment '主键ID'
primary key,
user_id char(32) not null comment '用户ID外键关联users.id',
provider varchar(50) not null comment 'OAuth提供商feishu, dingtalk, wecom, github, google等',
open_id varchar(255) null comment '开放ID',
union_id varchar(255) null comment '统一ID',
user_id_in_platform varchar(255) null comment '钉钉/飞书内部用户ID',
password varchar(100) null comment '用户密码,适用于系统内账号密码注册',
tenant_key varchar(255) null comment '租户密钥',
corporation_id bigint null comment '企业ID',
create_time datetime default CURRENT_TIMESTAMP null comment '创建时间',
update_time datetime default CURRENT_TIMESTAMP null on update CURRENT_TIMESTAMP comment '更新时间',
constraint uq_oauth_user
unique (user_id, provider, open_id, user_id_in_platform),
constraint fk_oauth_user_id
foreign key (user_id) references `autoflow-demo`.users (id)
);
create index idx_oauth_open_id
on `autoflow-demo`.oauth_accounts (open_id);
create index idx_oauth_provider
on `autoflow-demo`.oauth_accounts (provider);
create index idx_oauth_union_id
on `autoflow-demo`.oauth_accounts (union_id);
create index idx_oauth_user_provider
on `autoflow-demo`.oauth_accounts (user_id, provider);
create index ix_oauth_user_id_in_platform
on `autoflow-demo`.oauth_accounts (user_id_in_platform);
create table `autoflow-demo`.recommend_questions
(
created_at datetime default CURRENT_TIMESTAMP null,
updated_at datetime default CURRENT_TIMESTAMP null,
id int auto_increment
primary key,
questions json null,
chat_message_id int not null,
constraint fk_1
foreign key (chat_message_id) references `autoflow-demo`.chat_messages (id)
);
create index ix_recommend_questions_chat_message_id
on `autoflow-demo`.recommend_questions (chat_message_id);
create table `autoflow-demo`.uploads
(
created_at datetime default CURRENT_TIMESTAMP null,
updated_at datetime default CURRENT_TIMESTAMP null,
id int auto_increment
primary key,
name varchar(255) not null,
size int not null,
path varchar(255) not null,
mime_type varchar(128) not null,
user_id char(32) null,
meta json null,
category varchar(100) as (null),
constraint fk_1
foreign key (user_id) references `autoflow-demo`.users (id)
);
create table `autoflow-demo`.documents
(
created_at datetime default CURRENT_TIMESTAMP null,
updated_at datetime default CURRENT_TIMESTAMP null,
id int auto_increment
primary key,
hash varchar(32) not null,
name varchar(256) not null,
content mediumtext null,
mime_type varchar(128) not null,
source_uri varchar(512) not null,
meta json null,
last_modified_at datetime null,
index_status enum ('NOT_STARTED', 'PENDING', 'RUNNING', 'COMPLETED', 'FAILED') not null,
index_result text null,
data_source_id int null,
knowledge_base_id int null,
file_id int null,
constraint fk_d_on_data_source_id
foreign key (data_source_id) references `autoflow-demo`.data_sources (id),
constraint fk_d_on_knowledge_base_id
foreign key (knowledge_base_id) references `autoflow-demo`.knowledge_bases (id),
constraint fk_documents_on_file_id
foreign key (file_id) references `autoflow-demo`.uploads (id)
);
create table `autoflow-demo`.chunks
(
created_at datetime default CURRENT_TIMESTAMP null,
updated_at datetime default CURRENT_TIMESTAMP null,
id char(32) not null
primary key,
hash varchar(64) not null,
text text null,
meta json null,
embedding vector(1536) null comment 'hnsw(distance=cosine)',
document_id int null,
relations json null,
source_uri varchar(512) null,
index_status enum ('NOT_STARTED', 'PENDING', 'RUNNING', 'COMPLETED', 'FAILED') not null,
index_result text null,
playbook_index_status enum ('NOT_STARTED', 'PENDING', 'RUNNING', 'COMPLETED', 'FAILED') not null,
playbook_index_result text null,
crm_index_status enum ('NOT_STARTED', 'PENDING', 'RUNNING', 'COMPLETED', 'FAILED') not null,
crm_index_result text null,
constraint fk_1
foreign key (document_id) references `autoflow-demo`.documents (id)
);
create index ix_chunks_id
on `autoflow-demo`.chunks (id);
create table `autoflow-demo`.chunks_1
(
created_at datetime default CURRENT_TIMESTAMP null,
updated_at datetime default CURRENT_TIMESTAMP null,
id char(32) not null
primary key,
hash varchar(64) not null,
text text null,
meta json null,
embedding vector(1024) not null,
document_id int null,
relations json null,
source_uri varchar(512) null,
index_status enum ('NOT_STARTED', 'PENDING', 'RUNNING', 'COMPLETED', 'FAILED') not null,
index_result text null,
playbook_index_status enum ('NOT_STARTED', 'PENDING', 'RUNNING', 'COMPLETED', 'FAILED') not null,
playbook_index_result text null,
crm_index_status enum ('NOT_STARTED', 'PENDING', 'RUNNING', 'COMPLETED', 'FAILED') not null,
crm_index_result text null,
constraint fk_1
foreign key (document_id) references `autoflow-demo`.documents (id)
);
create index ix_chunks_1_id
on `autoflow-demo`.chunks_1 (id);
create index vec_idx_embedding
on `autoflow-demo`.chunks_1 (embedding);
create table `autoflow-demo`.chunks_2
(
created_at datetime default CURRENT_TIMESTAMP null,
updated_at datetime default CURRENT_TIMESTAMP null,
id char(32) not null
primary key,
hash varchar(64) not null,
text text null,
meta json null,
embedding vector(1024) not null,
document_id int null,
relations json null,
source_uri varchar(512) null,
index_status enum ('NOT_STARTED', 'PENDING', 'RUNNING', 'COMPLETED', 'FAILED') not null,
index_result text null,
playbook_index_status enum ('NOT_STARTED', 'PENDING', 'RUNNING', 'COMPLETED', 'FAILED') not null,
playbook_index_result text null,
crm_index_status enum ('NOT_STARTED', 'PENDING', 'RUNNING', 'COMPLETED', 'FAILED') not null,
crm_index_result text null,
constraint fk_1
foreign key (document_id) references `autoflow-demo`.documents (id)
);
create index ix_chunks_2_id
on `autoflow-demo`.chunks_2 (id);
create index vec_idx_embedding
on `autoflow-demo`.chunks_2 (embedding);
create index ix_documents_file_id
on `autoflow-demo`.documents (file_id);
create table `autoflow-demo`.file_permissions
(
id int auto_increment
primary key,
file_id int not null,
user_id char(32) null,
permission_type enum ('read', 'owner') default 'read' not null,
granted_by char(32) not null,
granted_at datetime default CURRENT_TIMESTAMP not null,
expires_at datetime null,
constraint fk_1
foreign key (file_id) references `autoflow-demo`.uploads (id),
constraint fk_2
foreign key (granted_by) references `autoflow-demo`.users (id),
constraint fk_3
foreign key (user_id) references `autoflow-demo`.users (id)
);
create index ix_file_permissions_file_id
on `autoflow-demo`.file_permissions (file_id);
create index ix_file_permissions_file_id_user_id
on `autoflow-demo`.file_permissions (file_id, user_id);
create index ix_file_permissions_user_id
on `autoflow-demo`.file_permissions (user_id);
create index ix_uploads_category
on `autoflow-demo`.uploads (category);
create table `autoflow-demo`.user_profiles
(
id int auto_increment
primary key,
user_id char(32) null,
oauth_user_id char(36) null,
feishu_open_id varchar(255) null,
name varchar(255) null,
department varchar(255) null,
position varchar(255) null,
direct_manager_id char(36) null,
direct_manager_name varchar(255) null,
is_active tinyint(1) not null,
create_time datetime null,
update_time datetime null,
platform varchar(50) null,
open_id varchar(255) null,
notification_tags varchar(1000) null,
role varchar(100) null,
en_name varchar(100) null,
avatar_url text null,
email varchar(255) null,
phone varchar(50) null,
crm_user_id varchar(100) null,
extra json null,
constraint fk_1
foreign key (user_id) references `autoflow-demo`.users (id)
);
create index idx_user_profiles_department_is_active
on `autoflow-demo`.user_profiles (department, is_active);
create index idx_user_profiles_direct_manager_id_is_active
on `autoflow-demo`.user_profiles (direct_manager_id, is_active);
create index ix_user_profiles_oauth_user_id
on `autoflow-demo`.user_profiles (oauth_user_id);
create index ix_user_profiles_open_id
on `autoflow-demo`.user_profiles (open_id);
create index ix_user_profiles_platform
on `autoflow-demo`.user_profiles (platform);
create index ix_user_profiles_user_id
on `autoflow-demo`.user_profiles (user_id);
create table `autoflow-demo`.user_sessions
(
token varchar(43) not null
primary key,
created_at datetime default CURRENT_TIMESTAMP null,
user_id char(32) not null,
constraint fk_1
foreign key (user_id) references `autoflow-demo`.users (id)
);
create table `autoflow-demo`.user_sessions_archive_20260522
(
token varchar(43) not null
primary key,
created_at datetime default CURRENT_TIMESTAMP null,
user_id char(32) not null,
constraint fk_1
foreign key (user_id) references `autoflow-demo`.users (id)
);
create index ix_users_id
on `autoflow-demo`.users (id);