1887 lines
246 KiB
Plaintext
1887 lines
246 KiB
Plaintext
-- 文件:schema_ODS_doc.sql
|
||
-- 说明:ODS 层 DDL,表名与示例 JSON 前缀对应,用于本地回放/调试。
|
||
-- 编码:UTF-8
|
||
SET client_encoding TO "UTF8";
|
||
|
||
DROP SCHEMA IF EXISTS billiards_ods CASCADE;
|
||
CREATE SCHEMA IF NOT EXISTS billiards_ods;
|
||
|
||
CREATE TABLE IF NOT EXISTS billiards_ods.member_profiles (
|
||
tenant_id BIGINT,
|
||
register_site_id BIGINT,
|
||
site_name TEXT,
|
||
id BIGINT PRIMARY KEY,
|
||
system_member_id BIGINT,
|
||
member_card_grade_code BIGINT,
|
||
member_card_grade_name TEXT,
|
||
mobile TEXT,
|
||
nickname TEXT,
|
||
point NUMERIC(18,2),
|
||
growth_value NUMERIC(18,2),
|
||
referrer_member_id BIGINT,
|
||
status INT,
|
||
user_status INT,
|
||
create_time TIMESTAMP,
|
||
source_file TEXT,
|
||
source_endpoint TEXT,
|
||
fetched_at TIMESTAMPTZ DEFAULT now(),
|
||
payload JSONB NOT NULL
|
||
);
|
||
|
||
COMMENT ON TABLE billiards_ods.member_profiles IS '对应JSON字段:member_profiles.json,说明:ODS 原始明细表(保留payload),示例值及对应分析:详见 member_profiles-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.member_profiles.tenant_id IS '对应JSON字段:tenant_id,说明::,示例值及对应分析:租户/品牌 ID。';
|
||
COMMENT ON COLUMN billiards_ods.member_profiles.register_site_id IS '对应JSON字段:register_site_id,说明::,示例值及对应分析:会员的注册门店 ID。';
|
||
COMMENT ON COLUMN billiards_ods.member_profiles.site_name IS '对应JSON字段:site_name,说明::,示例值及对应分析:注册门店名称,属于冗余字段,用于直接展示。';
|
||
COMMENT ON COLUMN billiards_ods.member_profiles.id IS '对应JSON字段:id,说明::,示例值及对应分析:这是“租户内会员账户”的主键 ID。';
|
||
COMMENT ON COLUMN billiards_ods.member_profiles.system_member_id IS '对应JSON字段:system_member_id,说明:(结合其它文件):,示例值及对应分析:这是“系统级会员 ID”,在全平台唯一,用来把一个会员在不同门店/不同卡类型下的账户统一到一个“人”的维度上。';
|
||
COMMENT ON COLUMN billiards_ods.member_profiles.member_card_grade_code IS '对应JSON字段:member_card_grade_code,说明:类型:int,示例值及对应分析:唯一值个数:4';
|
||
COMMENT ON COLUMN billiards_ods.member_profiles.member_card_grade_name IS '对应JSON字段:member_card_grade_name,说明::,示例值及对应分析:这是“会员卡种类/等级”的定义字段。';
|
||
COMMENT ON COLUMN billiards_ods.member_profiles.mobile IS '对应JSON字段:mobile,说明::,示例值及对应分析:会员绑定的手机号码。';
|
||
COMMENT ON COLUMN billiards_ods.member_profiles.nickname IS '对应JSON字段:nickname,说明::,示例值及对应分析:会员在当前租户下的显示名称(可以是姓名,也可以是昵称)。';
|
||
COMMENT ON COLUMN billiards_ods.member_profiles.point IS '对应JSON字段:point,说明::,示例值及对应分析:当前积分余额(这条会员账户的积分值)。';
|
||
COMMENT ON COLUMN billiards_ods.member_profiles.growth_value IS '对应JSON字段:growth_value,说明:(按常见会员体系设计):,示例值及对应分析:成长值 / 经验值,用于会员等级晋升的累计指标。';
|
||
COMMENT ON COLUMN billiards_ods.member_profiles.referrer_member_id IS '对应JSON字段:referrer_member_id,说明:(按命名推断):,示例值及对应分析:推荐人会员 ID,用于记录该会员是由哪位老会员推荐。';
|
||
COMMENT ON COLUMN billiards_ods.member_profiles.status IS '对应JSON字段:status,说明:(按命名推断):,示例值及对应分析:帐户状态(偏“卡状态/档案状态”)。';
|
||
COMMENT ON COLUMN billiards_ods.member_profiles.user_status IS '对应JSON字段:user_status,说明:(结合行业惯例):,示例值及对应分析:用户账号状态(偏“用户逻辑”层面的状态)。';
|
||
COMMENT ON COLUMN billiards_ods.member_profiles.create_time IS '对应JSON字段:create_time,说明::,示例值及对应分析:会员账户的创建时间(即这条档案/这张卡在系统中被创建的时间)。';
|
||
COMMENT ON COLUMN billiards_ods.member_profiles.source_file IS '对应JSON字段:source_file,说明:原始文件名(含时间戳后缀),示例值及对应分析:???????';
|
||
COMMENT ON COLUMN billiards_ods.member_profiles.source_endpoint IS '对应JSON字段:source_endpoint,说明:抓取来源接口/URL 标识,示例值及对应分析:???????';
|
||
COMMENT ON COLUMN billiards_ods.member_profiles.fetched_at IS '对应JSON字段:fetched_at,说明:入库时间(ETL 拉取时间),示例值及对应分析:???????';
|
||
COMMENT ON COLUMN billiards_ods.member_profiles.payload IS '对应JSON字段:payload,说明:完整原始 JSON 内容,示例值及对应分析:???????';
|
||
|
||
CREATE TABLE IF NOT EXISTS billiards_ods.member_balance_changes (
|
||
tenant_id BIGINT,
|
||
site_id BIGINT,
|
||
register_site_id BIGINT,
|
||
registerSiteName TEXT,
|
||
paySiteName TEXT,
|
||
id BIGINT PRIMARY KEY,
|
||
tenant_member_id BIGINT,
|
||
tenant_member_card_id BIGINT,
|
||
system_member_id BIGINT,
|
||
memberName TEXT,
|
||
memberMobile TEXT,
|
||
card_type_id BIGINT,
|
||
memberCardTypeName TEXT,
|
||
account_data NUMERIC(18,2),
|
||
before NUMERIC(18,2),
|
||
after NUMERIC(18,2),
|
||
refund_amount NUMERIC(18,2),
|
||
from_type INT,
|
||
payment_method INT,
|
||
relate_id BIGINT,
|
||
remark TEXT,
|
||
operator_id BIGINT,
|
||
operator_name TEXT,
|
||
is_delete INT,
|
||
create_time TIMESTAMP,
|
||
source_file TEXT,
|
||
source_endpoint TEXT,
|
||
fetched_at TIMESTAMPTZ DEFAULT now(),
|
||
payload JSONB NOT NULL
|
||
);
|
||
|
||
COMMENT ON TABLE billiards_ods.member_balance_changes IS '对应JSON字段:member_balance_changes.json,说明:ODS 原始明细表(保留payload),示例值及对应分析:详见 member_balance_changes-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.member_balance_changes.tenant_id IS '对应JSON字段:tenant_id,说明::租户/商户 ID,本数据中是固定值(同一品牌/商户)。,示例值及对应分析:?? member_balance_changes-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.member_balance_changes.site_id IS '对应JSON字段:site_id,说明:表示本次余额变动的发生门店,绝大多数也在“朗朗桌球”,少数特殊业务(活动抵用券结算)显示为 site_id=0、paySiteName 为空。,示例值及对应分析:?? member_balance_changes-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.member_balance_changes.register_site_id IS '对应JSON字段:register_site_id,说明:已在前文说明:办卡门店的 ID 与名称,所有记录一致,说明所有卡均在“朗朗桌球”注册。,示例值及对应分析:?? member_balance_changes-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.member_balance_changes.registerSiteName IS '对应JSON字段:registerSiteName,说明:已在前文说明:办卡门店的 ID 与名称,所有记录一致,说明所有卡均在“朗朗桌球”注册。,示例值及对应分析:?? member_balance_changes-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.member_balance_changes.paySiteName IS '对应JSON字段:paySiteName,说明:表示本次余额变动的发生门店,绝大多数也在“朗朗桌球”,少数特殊业务(活动抵用券结算)显示为 site_id=0、paySiteName 为空。,示例值及对应分析:?? member_balance_changes-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.member_balance_changes.id IS '对应JSON字段:id,说明::余额变更记录的主键 ID,唯一标识这一条“账户余额变化事件”。,示例值及对应分析:?? member_balance_changes-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.member_balance_changes.tenant_member_id IS '对应JSON字段:tenant_member_id,说明::商户维度的会员 ID(租户内会员主键)。,示例值及对应分析:关联:';
|
||
COMMENT ON COLUMN billiards_ods.member_balance_changes.tenant_member_card_id IS '对应JSON字段:tenant_member_card_id,说明::会员卡账户 ID,在租户内唯一标识某张卡。,示例值及对应分析:关联:';
|
||
COMMENT ON COLUMN billiards_ods.member_balance_changes.system_member_id IS '对应JSON字段:system_member_id,说明::系统级(全局)会员 ID。,示例值及对应分析:关联:';
|
||
COMMENT ON COLUMN billiards_ods.member_balance_changes.memberName IS '对应JSON字段:memberName,说明::会员姓名或称呼(非昵称字段)。,示例值及对应分析:说明:例如“陈腾鑫”“胡先生”“江先生”等,多为中文姓名或带“先生”称呼。';
|
||
COMMENT ON COLUMN billiards_ods.member_balance_changes.memberMobile IS '对应JSON字段:memberMobile,说明::会员手机号。,示例值及对应分析:说明:字符型存储,完整手机号,用来识别会员与联系客户。';
|
||
COMMENT ON COLUMN billiards_ods.member_balance_changes.card_type_id IS '对应JSON字段:card_type_id,说明::卡种类型 ID,用于区分不同卡种。,示例值及对应分析:?? member_balance_changes-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.member_balance_changes.memberCardTypeName IS '对应JSON字段:memberCardTypeName,说明::卡种名称,与 card_type_id 一一对应,是一个 卡种枚举名称。,示例值及对应分析:?? member_balance_changes-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.member_balance_changes.account_data IS '对应JSON字段:account_data,说明::本次变动的金额(元),正数表示增加,负数表示减少。,示例值及对应分析:特点:';
|
||
COMMENT ON COLUMN billiards_ods.member_balance_changes.before IS '对应JSON字段:before,说明::本次变动前,该卡账户的余额(元)。,示例值及对应分析:说明:';
|
||
COMMENT ON COLUMN billiards_ods.member_balance_changes.after IS '对应JSON字段:after,说明::本次变动后,该卡账户的余额(元)。,示例值及对应分析:重要关系:';
|
||
COMMENT ON COLUMN billiards_ods.member_balance_changes.refund_amount IS '对应JSON字段:refund_amount,说明:(推测):与退款业务相关的金额字段,但在当前这份导出中实际未使用:,示例值及对应分析:可能用于标记“其中有多少金额是以‘退款’形式回流的”,或区分“退回余额”和“原路退回”两种模式。';
|
||
COMMENT ON COLUMN billiards_ods.member_balance_changes.from_type IS '对应JSON字段:from_type,说明:(根据金额符号与 remark 综合推断):,示例值及对应分析:1:日常消费扣款';
|
||
COMMENT ON COLUMN billiards_ods.member_balance_changes.payment_method IS '对应JSON字段:payment_method,说明:类型:int,枚举,示例值及对应分析:值分布:';
|
||
COMMENT ON COLUMN billiards_ods.member_balance_changes.relate_id IS '对应JSON字段:relate_id,说明:(推测):关联业务记录的 ID:,示例值及对应分析:例如某次充值记录的 ID、某张订单/结算单 ID、某次活动抵用券核销记录 ID 等。';
|
||
COMMENT ON COLUMN billiards_ods.member_balance_changes.remark IS '对应JSON字段:remark,说明::,示例值及对应分析:当为空时,说明这条变动没有额外备注说明。';
|
||
COMMENT ON COLUMN billiards_ods.member_balance_changes.operator_id IS '对应JSON字段:operator_id,说明::执行此次余额变更操作的员工 ID。,示例值及对应分析:?? member_balance_changes-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.member_balance_changes.operator_name IS '对应JSON字段:operator_name,说明::操作员姓名(带职位前缀),是对 operator_id 的可读冗余字段。,示例值及对应分析:9. 状态字段与标志';
|
||
COMMENT ON COLUMN billiards_ods.member_balance_changes.is_delete IS '对应JSON字段:is_delete,说明::逻辑删除标记:,示例值及对应分析:0:正常;';
|
||
COMMENT ON COLUMN billiards_ods.member_balance_changes.create_time IS '对应JSON字段:create_time,说明::本条余额变更记录的创建时间,通常接近交易发生时间。,示例值及对应分析:说明:可与订单、支付记录的时间做对齐,构造时序链路(但你现在不要求做时序分析,这里只说明结构)。';
|
||
COMMENT ON COLUMN billiards_ods.member_balance_changes.source_file IS '对应JSON字段:source_file,说明:原始文件名(含时间戳后缀),示例值及对应分析:???????';
|
||
COMMENT ON COLUMN billiards_ods.member_balance_changes.source_endpoint IS '对应JSON字段:source_endpoint,说明:抓取来源接口/URL 标识,示例值及对应分析:???????';
|
||
COMMENT ON COLUMN billiards_ods.member_balance_changes.fetched_at IS '对应JSON字段:fetched_at,说明:入库时间(ETL 拉取时间),示例值及对应分析:???????';
|
||
COMMENT ON COLUMN billiards_ods.member_balance_changes.payload IS '对应JSON字段:payload,说明:完整原始 JSON 内容,示例值及对应分析:???????';
|
||
|
||
CREATE TABLE IF NOT EXISTS billiards_ods.member_stored_value_cards (
|
||
tenant_id BIGINT,
|
||
tenant_member_id BIGINT,
|
||
system_member_id BIGINT,
|
||
register_site_id BIGINT,
|
||
site_name TEXT,
|
||
id BIGINT PRIMARY KEY,
|
||
member_card_grade_code BIGINT,
|
||
member_card_grade_code_name TEXT,
|
||
member_card_type_name TEXT,
|
||
member_name TEXT,
|
||
member_mobile TEXT,
|
||
card_type_id BIGINT,
|
||
card_no TEXT,
|
||
card_physics_type TEXT,
|
||
balance NUMERIC(18,2),
|
||
denomination NUMERIC(18,2),
|
||
table_discount NUMERIC(10,4),
|
||
goods_discount NUMERIC(10,4),
|
||
assistant_discount NUMERIC(10,4),
|
||
assistant_reward_discount NUMERIC(10,4),
|
||
table_service_discount NUMERIC(10,4),
|
||
assistant_service_discount NUMERIC(10,4),
|
||
coupon_discount NUMERIC(10,4),
|
||
goods_service_discount NUMERIC(10,4),
|
||
assistant_discount_sub_switch INT,
|
||
table_discount_sub_switch INT,
|
||
goods_discount_sub_switch INT,
|
||
assistant_reward_discount_sub_switch INT,
|
||
table_service_deduct_radio NUMERIC(10,4),
|
||
assistant_service_deduct_radio NUMERIC(10,4),
|
||
goods_service_deduct_radio NUMERIC(10,4),
|
||
assistant_deduct_radio NUMERIC(10,4),
|
||
table_deduct_radio NUMERIC(10,4),
|
||
goods_deduct_radio NUMERIC(10,4),
|
||
coupon_deduct_radio NUMERIC(10,4),
|
||
assistant_reward_deduct_radio NUMERIC(10,4),
|
||
tableCardDeduct NUMERIC(18,2),
|
||
tableServiceCardDeduct NUMERIC(18,2),
|
||
goodsCarDeduct NUMERIC(18,2),
|
||
goodsServiceCardDeduct NUMERIC(18,2),
|
||
assistantCardDeduct NUMERIC(18,2),
|
||
assistantServiceCardDeduct NUMERIC(18,2),
|
||
assistantRewardCardDeduct NUMERIC(18,2),
|
||
cardSettleDeduct NUMERIC(18,2),
|
||
couponCardDeduct NUMERIC(18,2),
|
||
deliveryFeeDeduct NUMERIC(18,2),
|
||
use_scene INT,
|
||
able_cross_site INT,
|
||
able_site_transfer INT,
|
||
is_allow_give INT,
|
||
is_allow_order_deduct INT,
|
||
is_delete INT,
|
||
bind_password TEXT,
|
||
goods_discount_range_type INT,
|
||
goodsCategoryId BIGINT,
|
||
tableAreaId BIGINT,
|
||
effect_site_id BIGINT,
|
||
start_time TIMESTAMP,
|
||
end_time TIMESTAMP,
|
||
disable_start_time TIMESTAMP,
|
||
disable_end_time TIMESTAMP,
|
||
last_consume_time TIMESTAMP,
|
||
create_time TIMESTAMP,
|
||
status INT,
|
||
sort INT,
|
||
tenantAvatar TEXT,
|
||
tenantName TEXT,
|
||
pdAssisnatLevel TEXT,
|
||
cxAssisnatLevel TEXT,
|
||
source_file TEXT,
|
||
source_endpoint TEXT,
|
||
fetched_at TIMESTAMPTZ DEFAULT now(),
|
||
payload JSONB NOT NULL
|
||
);
|
||
|
||
COMMENT ON TABLE billiards_ods.member_stored_value_cards IS '对应JSON字段:member_stored_value_cards.json,说明:ODS 原始明细表(保留payload),示例值及对应分析:详见 member_stored_value_cards-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.member_stored_value_cards.tenant_id IS '对应JSON字段:tenant_id,说明::租户/品牌 ID,与其他 JSON 中 tenant_id 一致。,示例值及对应分析:?? member_stored_value_cards-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.member_stored_value_cards.tenant_member_id IS '对应JSON字段:tenant_member_id,说明::当前商户(品牌/租户)中会员的主键 ID。,示例值及对应分析:枚举特征:';
|
||
COMMENT ON COLUMN billiards_ods.member_stored_value_cards.system_member_id IS '对应JSON字段:system_member_id,说明::系统级会员 ID(跨门店统一主键)。,示例值及对应分析:枚举特征:';
|
||
COMMENT ON COLUMN billiards_ods.member_stored_value_cards.register_site_id IS '对应JSON字段:register_site_id,说明::卡首次办理的门店 ID。,示例值及对应分析:对应门店的 site_id;本数据中所有卡都是在同一家门店开卡。';
|
||
COMMENT ON COLUMN billiards_ods.member_stored_value_cards.site_name IS '对应JSON字段:site_name,说明::卡归属门店名称(视图中的展示字段)。,示例值及对应分析:?? member_stored_value_cards-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.member_stored_value_cards.id IS '对应JSON字段:id,说明:?????? member_stored_value_cards-Analysis.md,示例值及对应分析:?? member_stored_value_cards-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.member_stored_value_cards.member_card_grade_code IS '对应JSON字段:member_card_grade_code,说明::卡等级/卡类代码,和下面两个名称字段一一对应。,示例值及对应分析:枚举:';
|
||
COMMENT ON COLUMN billiards_ods.member_stored_value_cards.member_card_grade_code_name IS '对应JSON字段:member_card_grade_code_name,说明::卡等级/卡类名称。,示例值及对应分析:枚举值(与上面 code 一一对应):';
|
||
COMMENT ON COLUMN billiards_ods.member_stored_value_cards.member_card_type_name IS '对应JSON字段:member_card_type_name,说明::卡类型名称,实际与 member_card_grade_code_name 一致。,示例值及对应分析:枚举值同上。';
|
||
COMMENT ON COLUMN billiards_ods.member_stored_value_cards.member_name IS '对应JSON字段:member_name,说明::持卡会员姓名快照。,示例值及对应分析:特点:存在 null(20 张卡没有绑定会员名字)。';
|
||
COMMENT ON COLUMN billiards_ods.member_stored_value_cards.member_mobile IS '对应JSON字段:member_mobile,说明::持卡会员手机号快照。,示例值及对应分析:特点:与 member_name 对应,多数有值,少量为 null。';
|
||
COMMENT ON COLUMN billiards_ods.member_stored_value_cards.card_type_id IS '对应JSON字段:card_type_id,说明::卡种 ID(定义“这是哪一种卡”)。,示例值及对应分析:枚举(按数据分布):';
|
||
COMMENT ON COLUMN billiards_ods.member_stored_value_cards.card_no IS '对应JSON字段:card_no,说明:(推测):实体卡物理卡号/条码号。当前这批卡看起来全部为“无物理卡号”(可能是全部虚拟卡或卡号隐藏不导出)。,示例值及对应分析:?? member_stored_value_cards-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.member_stored_value_cards.card_physics_type IS '对应JSON字段:card_physics_type,说明::物理卡类型。,示例值及对应分析:当前数据:全部为 1。';
|
||
COMMENT ON COLUMN billiards_ods.member_stored_value_cards.balance IS '对应JSON字段:balance,说明::当前卡内余额(主要针对储值卡、部分券卡)。,示例值及对应分析:特征:';
|
||
COMMENT ON COLUMN billiards_ods.member_stored_value_cards.denomination IS '对应JSON字段:denomination,说明:(推测):面额/初始储值额度。,示例值及对应分析:本页数据未填充此字段;可能在分类型卡(如次卡/券)中才有意义,或者另有配置表。';
|
||
COMMENT ON COLUMN billiards_ods.member_stored_value_cards.table_discount IS '对应JSON字段:table_discount,说明::,示例值及对应分析:采用“几折”的记法:10=不打折,9=九折,8=八折。';
|
||
COMMENT ON COLUMN billiards_ods.member_stored_value_cards.goods_discount IS '对应JSON字段:goods_discount,说明::,示例值及对应分析:采用“几折”的记法:10=不打折,9=九折,8=八折。';
|
||
COMMENT ON COLUMN billiards_ods.member_stored_value_cards.assistant_discount IS '对应JSON字段:assistant_discount,说明::,示例值及对应分析:采用“几折”的记法:10=不打折,9=九折,8=八折。';
|
||
COMMENT ON COLUMN billiards_ods.member_stored_value_cards.assistant_reward_discount IS '对应JSON字段:assistant_reward_discount,说明::,示例值及对应分析:采用“几折”的记法:10=不打折,9=九折,8=八折。';
|
||
COMMENT ON COLUMN billiards_ods.member_stored_value_cards.table_service_discount IS '对应JSON字段:table_service_discount,说明::,示例值及对应分析:采用“几折”的记法:10=不打折,9=九折,8=八折。';
|
||
COMMENT ON COLUMN billiards_ods.member_stored_value_cards.assistant_service_discount IS '对应JSON字段:assistant_service_discount,说明::,示例值及对应分析:采用“几折”的记法:10=不打折,9=九折,8=八折。';
|
||
COMMENT ON COLUMN billiards_ods.member_stored_value_cards.coupon_discount IS '对应JSON字段:coupon_discount,说明:?????? member_stored_value_cards-Analysis.md,示例值及对应分析:?? member_stored_value_cards-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.member_stored_value_cards.goods_service_discount IS '对应JSON字段:goods_service_discount,说明::,示例值及对应分析:采用“几折”的记法:10=不打折,9=九折,8=八折。';
|
||
COMMENT ON COLUMN billiards_ods.member_stored_value_cards.assistant_discount_sub_switch IS '对应JSON字段:assistant_discount_sub_switch,说明:(推测):“折扣是否叠加/替换其他折扣”的开关。,示例值及对应分析:可能枚举:';
|
||
COMMENT ON COLUMN billiards_ods.member_stored_value_cards.table_discount_sub_switch IS '对应JSON字段:table_discount_sub_switch,说明:(推测):“折扣是否叠加/替换其他折扣”的开关。,示例值及对应分析:可能枚举:';
|
||
COMMENT ON COLUMN billiards_ods.member_stored_value_cards.goods_discount_sub_switch IS '对应JSON字段:goods_discount_sub_switch,说明:(推测):“折扣是否叠加/替换其他折扣”的开关。,示例值及对应分析:可能枚举:';
|
||
COMMENT ON COLUMN billiards_ods.member_stored_value_cards.assistant_reward_discount_sub_switch IS '对应JSON字段:assistant_reward_discount_sub_switch,说明:(推测):“折扣是否叠加/替换其他折扣”的开关。,示例值及对应分析:可能枚举:';
|
||
COMMENT ON COLUMN billiards_ods.member_stored_value_cards.table_service_deduct_radio IS '对应JSON字段:table_service_deduct_radio,说明::允许从该卡余额中抵扣的比例(百分比)。,示例值及对应分析:100.0 表示允许 100% 用卡余额支付该类消费;';
|
||
COMMENT ON COLUMN billiards_ods.member_stored_value_cards.assistant_service_deduct_radio IS '对应JSON字段:assistant_service_deduct_radio,说明::允许从该卡余额中抵扣的比例(百分比)。,示例值及对应分析:100.0 表示允许 100% 用卡余额支付该类消费;';
|
||
COMMENT ON COLUMN billiards_ods.member_stored_value_cards.goods_service_deduct_radio IS '对应JSON字段:goods_service_deduct_radio,说明::允许从该卡余额中抵扣的比例(百分比)。,示例值及对应分析:100.0 表示允许 100% 用卡余额支付该类消费;';
|
||
COMMENT ON COLUMN billiards_ods.member_stored_value_cards.assistant_deduct_radio IS '对应JSON字段:assistant_deduct_radio,说明::允许从该卡余额中抵扣的比例(百分比)。,示例值及对应分析:100.0 表示允许 100% 用卡余额支付该类消费;';
|
||
COMMENT ON COLUMN billiards_ods.member_stored_value_cards.table_deduct_radio IS '对应JSON字段:table_deduct_radio,说明::允许从该卡余额中抵扣的比例(百分比)。,示例值及对应分析:100.0 表示允许 100% 用卡余额支付该类消费;';
|
||
COMMENT ON COLUMN billiards_ods.member_stored_value_cards.goods_deduct_radio IS '对应JSON字段:goods_deduct_radio,说明::允许从该卡余额中抵扣的比例(百分比)。,示例值及对应分析:100.0 表示允许 100% 用卡余额支付该类消费;';
|
||
COMMENT ON COLUMN billiards_ods.member_stored_value_cards.coupon_deduct_radio IS '对应JSON字段:coupon_deduct_radio,说明::允许从该卡余额中抵扣的比例(百分比)。,示例值及对应分析:100.0 表示允许 100% 用卡余额支付该类消费;';
|
||
COMMENT ON COLUMN billiards_ods.member_stored_value_cards.assistant_reward_deduct_radio IS '对应JSON字段:assistant_reward_deduct_radio,说明:?????? member_stored_value_cards-Analysis.md,示例值及对应分析:?? member_stored_value_cards-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.member_stored_value_cards.tableCardDeduct IS '对应JSON字段:tableCardDeduct,说明::针对台费/商品/助教三类消费的扣卡金额配置(类似“每小时从卡里扣 xx 元”或“每次抵扣 xx 元”的规则)。,示例值及对应分析:当前:所有为 0,说明在卡定义层面并没有指定固定扣卡金额,而是按照一般储值逻辑消费。';
|
||
COMMENT ON COLUMN billiards_ods.member_stored_value_cards.tableServiceCardDeduct IS '对应JSON字段:tableServiceCardDeduct,说明::如果系统中区分“储值金、服务金、奖励金”等子账户,这三个字段对应“服务金”子账户的扣款配置。,示例值及对应分析:当前未启用。';
|
||
COMMENT ON COLUMN billiards_ods.member_stored_value_cards.goodsCarDeduct IS '对应JSON字段:goodsCarDeduct,说明::针对台费/商品/助教三类消费的扣卡金额配置(类似“每小时从卡里扣 xx 元”或“每次抵扣 xx 元”的规则)。,示例值及对应分析:当前:所有为 0,说明在卡定义层面并没有指定固定扣卡金额,而是按照一般储值逻辑消费。';
|
||
COMMENT ON COLUMN billiards_ods.member_stored_value_cards.goodsServiceCardDeduct IS '对应JSON字段:goodsServiceCardDeduct,说明::如果系统中区分“储值金、服务金、奖励金”等子账户,这三个字段对应“服务金”子账户的扣款配置。,示例值及对应分析:当前未启用。';
|
||
COMMENT ON COLUMN billiards_ods.member_stored_value_cards.assistantCardDeduct IS '对应JSON字段:assistantCardDeduct,说明::针对台费/商品/助教三类消费的扣卡金额配置(类似“每小时从卡里扣 xx 元”或“每次抵扣 xx 元”的规则)。,示例值及对应分析:当前:所有为 0,说明在卡定义层面并没有指定固定扣卡金额,而是按照一般储值逻辑消费。';
|
||
COMMENT ON COLUMN billiards_ods.member_stored_value_cards.assistantServiceCardDeduct IS '对应JSON字段:assistantServiceCardDeduct,说明::如果系统中区分“储值金、服务金、奖励金”等子账户,这三个字段对应“服务金”子账户的扣款配置。,示例值及对应分析:当前未启用。';
|
||
COMMENT ON COLUMN billiards_ods.member_stored_value_cards.assistantRewardCardDeduct IS '对应JSON字段:assistantRewardCardDeduct,说明::助教奖励金方向扣款的配置。,示例值及对应分析:当前未启用。';
|
||
COMMENT ON COLUMN billiards_ods.member_stored_value_cards.cardSettleDeduct IS '对应JSON字段:cardSettleDeduct,说明:已在扣卡规则部分说明,当前为 0。,示例值及对应分析:?? member_stored_value_cards-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.member_stored_value_cards.couponCardDeduct IS '对应JSON字段:couponCardDeduct,说明::与卡绑定的“券额度扣除配置”。,示例值及对应分析:?? member_stored_value_cards-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.member_stored_value_cards.deliveryFeeDeduct IS '对应JSON字段:deliveryFeeDeduct,说明::配送费可否/多少从卡中抵扣,目前无业务发生。,示例值及对应分析:综合来看:本门店的卡片在“规则配置层”预留了大量细粒度控制字段,但目前实际使用只体现在“balance”和“可用范围”,折扣和具体扣卡规则基本都未启用(全部保持默认值 10 折、100%比例、0 扣款),真正扣款逻辑在交易流水中体现。';
|
||
COMMENT ON COLUMN billiards_ods.member_stored_value_cards.use_scene IS '对应JSON字段:use_scene,说明::卡使用场景说明(比如“仅店内使用”“仅团建”等),本门店尚未使用此字段。,示例值及对应分析:2. 会员信息与关联字段';
|
||
COMMENT ON COLUMN billiards_ods.member_stored_value_cards.able_cross_site IS '对应JSON字段:able_cross_site,说明::是否允许跨店使用。,示例值及对应分析:1:可以跨门店使用;';
|
||
COMMENT ON COLUMN billiards_ods.member_stored_value_cards.able_site_transfer IS '对应JSON字段:able_site_transfer,说明:?????? member_stored_value_cards-Analysis.md,示例值及对应分析:?? member_stored_value_cards-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.member_stored_value_cards.is_allow_give IS '对应JSON字段:is_allow_give,说明::是否允许转赠/转让给其他会员。,示例值及对应分析:0:不允许;';
|
||
COMMENT ON COLUMN billiards_ods.member_stored_value_cards.is_allow_order_deduct IS '对应JSON字段:is_allow_order_deduct,说明::是否允许在“订单层面统一扣款”。,示例值及对应分析:0:不允许(仅按项目扣卡);';
|
||
COMMENT ON COLUMN billiards_ods.member_stored_value_cards.is_delete IS '对应JSON字段:is_delete,说明::逻辑删除标志。,示例值及对应分析:0:未删除;';
|
||
COMMENT ON COLUMN billiards_ods.member_stored_value_cards.bind_password IS '对应JSON字段:bind_password,说明::卡绑定密码,用于消费或查询验证(目前未启用)。,示例值及对应分析:?? member_stored_value_cards-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.member_stored_value_cards.goods_discount_range_type IS '对应JSON字段:goods_discount_range_type,说明:?????? member_stored_value_cards-Analysis.md,示例值及对应分析:?? member_stored_value_cards-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.member_stored_value_cards.goodsCategoryId IS '对应JSON字段:goodsCategoryId,说明:已上文说明:均为扩展限定维度,当前全部为空列表。,示例值及对应分析:?? member_stored_value_cards-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.member_stored_value_cards.tableAreaId IS '对应JSON字段:tableAreaId,说明:已上文说明:均为扩展限定维度,当前全部为空列表。,示例值及对应分析:?? member_stored_value_cards-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.member_stored_value_cards.effect_site_id IS '对应JSON字段:effect_site_id,说明:(推测):卡片限定生效门店 ID。,示例值及对应分析:为 0 时,配合 able_cross_site=1,可解释为“所有门店可用”。';
|
||
COMMENT ON COLUMN billiards_ods.member_stored_value_cards.start_time IS '对应JSON字段:start_time,说明::卡片生效开始时间(有效期起始)。,示例值及对应分析:?? member_stored_value_cards-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.member_stored_value_cards.end_time IS '对应JSON字段:end_time,说明::卡片有效期结束时间。,示例值及对应分析:start_time / end_time 组合就是卡的有效期。不同卡种有效期配置不同,如储值卡长效、月卡固定一个月等。';
|
||
COMMENT ON COLUMN billiards_ods.member_stored_value_cards.disable_start_time IS '对应JSON字段:disable_start_time,说明::停用时间段(比如临时冻结卡的起止时间)。,示例值及对应分析:当前未启用,所有卡都是“未进入停用窗口”。';
|
||
COMMENT ON COLUMN billiards_ods.member_stored_value_cards.disable_end_time IS '对应JSON字段:disable_end_time,说明::停用时间段(比如临时冻结卡的起止时间)。,示例值及对应分析:当前未启用,所有卡都是“未进入停用窗口”。';
|
||
COMMENT ON COLUMN billiards_ods.member_stored_value_cards.last_consume_time IS '对应JSON字段:last_consume_time,说明::最近一次消费时间。,示例值及对应分析:特点:';
|
||
COMMENT ON COLUMN billiards_ods.member_stored_value_cards.create_time IS '对应JSON字段:create_time,说明::卡片创建时间(开卡时间)。,示例值及对应分析:?? member_stored_value_cards-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.member_stored_value_cards.status IS '对应JSON字段:status,说明:(推测):,示例值及对应分析:1:正常可用;';
|
||
COMMENT ON COLUMN billiards_ods.member_stored_value_cards.sort IS '对应JSON字段:sort,说明::在前端展示或某些列表中的排序权重。,示例值及对应分析:具体取值分布不重要,主要反映展示优先级。';
|
||
COMMENT ON COLUMN billiards_ods.member_stored_value_cards.tenantAvatar IS '对应JSON字段:tenantAvatar,说明::品牌头像 URL(未配置)。,示例值及对应分析:?? member_stored_value_cards-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.member_stored_value_cards.tenantName IS '对应JSON字段:tenantName,说明::租户/品牌名称(当前导出为空)。,示例值及对应分析:?? member_stored_value_cards-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.member_stored_value_cards.pdAssisnatLevel IS '对应JSON字段:pdAssisnatLevel,说明:已上文说明:均为扩展限定维度,当前全部为空列表。,示例值及对应分析:?? member_stored_value_cards-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.member_stored_value_cards.cxAssisnatLevel IS '对应JSON字段:cxAssisnatLevel,说明:已上文说明:均为扩展限定维度,当前全部为空列表。,示例值及对应分析:?? member_stored_value_cards-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.member_stored_value_cards.source_file IS '对应JSON字段:source_file,说明:原始文件名(含时间戳后缀),示例值及对应分析:???????';
|
||
COMMENT ON COLUMN billiards_ods.member_stored_value_cards.source_endpoint IS '对应JSON字段:source_endpoint,说明:抓取来源接口/URL 标识,示例值及对应分析:???????';
|
||
COMMENT ON COLUMN billiards_ods.member_stored_value_cards.fetched_at IS '对应JSON字段:fetched_at,说明:入库时间(ETL 拉取时间),示例值及对应分析:???????';
|
||
COMMENT ON COLUMN billiards_ods.member_stored_value_cards.payload IS '对应JSON字段:payload,说明:完整原始 JSON 内容,示例值及对应分析:???????';
|
||
|
||
CREATE TABLE IF NOT EXISTS billiards_ods.recharge_settlements (
|
||
id BIGINT PRIMARY KEY,
|
||
tenantid BIGINT,
|
||
siteid BIGINT,
|
||
sitename TEXT,
|
||
balanceamount NUMERIC(18,2),
|
||
cardamount NUMERIC(18,2),
|
||
cashamount NUMERIC(18,2),
|
||
couponamount NUMERIC(18,2),
|
||
createtime TIMESTAMPTZ,
|
||
memberid BIGINT,
|
||
membername TEXT,
|
||
tenantmembercardid BIGINT,
|
||
membercardtypename TEXT,
|
||
memberphone TEXT,
|
||
tableid BIGINT,
|
||
consumemoney NUMERIC(18,2),
|
||
onlineamount NUMERIC(18,2),
|
||
operatorid BIGINT,
|
||
operatorname TEXT,
|
||
revokeorderid BIGINT,
|
||
revokeordername TEXT,
|
||
revoketime TIMESTAMPTZ,
|
||
payamount NUMERIC(18,2),
|
||
pointamount NUMERIC(18,2),
|
||
refundamount NUMERIC(18,2),
|
||
settlename TEXT,
|
||
settlerelateid BIGINT,
|
||
settlestatus INT,
|
||
settletype INT,
|
||
paytime TIMESTAMPTZ,
|
||
roundingamount NUMERIC(18,2),
|
||
paymentmethod INT,
|
||
adjustamount NUMERIC(18,2),
|
||
assistantcxmoney NUMERIC(18,2),
|
||
assistantpdmoney NUMERIC(18,2),
|
||
couponsaleamount NUMERIC(18,2),
|
||
memberdiscountamount NUMERIC(18,2),
|
||
tablechargemoney NUMERIC(18,2),
|
||
goodsmoney NUMERIC(18,2),
|
||
realgoodsmoney NUMERIC(18,2),
|
||
servicemoney NUMERIC(18,2),
|
||
prepaymoney NUMERIC(18,2),
|
||
salesmanname TEXT,
|
||
orderremark TEXT,
|
||
salesmanuserid BIGINT,
|
||
canberevoked BOOLEAN,
|
||
pointdiscountprice NUMERIC(18,2),
|
||
pointdiscountcost NUMERIC(18,2),
|
||
activitydiscount NUMERIC(18,2),
|
||
serialnumber BIGINT,
|
||
assistantmanualdiscount NUMERIC(18,2),
|
||
allcoupondiscount NUMERIC(18,2),
|
||
goodspromotionmoney NUMERIC(18,2),
|
||
assistantpromotionmoney NUMERIC(18,2),
|
||
isusecoupon BOOLEAN,
|
||
isusediscount BOOLEAN,
|
||
isactivity BOOLEAN,
|
||
isbindmember BOOLEAN,
|
||
isfirst INT,
|
||
rechargecardamount NUMERIC(18,2),
|
||
giftcardamount NUMERIC(18,2),
|
||
source_file TEXT,
|
||
source_endpoint TEXT,
|
||
fetched_at TIMESTAMPTZ DEFAULT now(),
|
||
payload JSONB NOT NULL
|
||
);
|
||
|
||
COMMENT ON TABLE billiards_ods.recharge_settlements IS '对应JSON字段:recharge_settlements.json,说明:ODS 原始明细表(保留payload),示例值及对应分析:详见 recharge_settlements-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.recharge_settlements.id IS '对应JSON字段:id,说明::本条充值结算记录的主键 ID(唯一标识一条充值/撤销记录)。,示例值及对应分析:唯一性:74 条记录全部不同。';
|
||
COMMENT ON COLUMN billiards_ods.recharge_settlements.tenantid IS '对应JSON字段:tenantid,说明:?????? recharge_settlements-Analysis.md,示例值及对应分析:?? recharge_settlements-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.recharge_settlements.siteid IS '对应JSON字段:siteid,说明:?????? recharge_settlements-Analysis.md,示例值及对应分析:?? recharge_settlements-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.recharge_settlements.sitename IS '对应JSON字段:sitename,说明:?????? recharge_settlements-Analysis.md,示例值及对应分析:?? recharge_settlements-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.recharge_settlements.balanceamount IS '对应JSON字段:balanceamount,说明:?????? recharge_settlements-Analysis.md,示例值及对应分析:?? recharge_settlements-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.recharge_settlements.cardamount IS '对应JSON字段:cardamount,说明:?????? recharge_settlements-Analysis.md,示例值及对应分析:?? recharge_settlements-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.recharge_settlements.cashamount IS '对应JSON字段:cashamount,说明:?????? recharge_settlements-Analysis.md,示例值及对应分析:?? recharge_settlements-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.recharge_settlements.couponamount IS '对应JSON字段:couponamount,说明:?????? recharge_settlements-Analysis.md,示例值及对应分析:?? recharge_settlements-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.recharge_settlements.createtime IS '对应JSON字段:createtime,说明:?????? recharge_settlements-Analysis.md,示例值及对应分析:?? recharge_settlements-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.recharge_settlements.memberid IS '对应JSON字段:memberid,说明:?????? recharge_settlements-Analysis.md,示例值及对应分析:?? recharge_settlements-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.recharge_settlements.membername IS '对应JSON字段:membername,说明:?????? recharge_settlements-Analysis.md,示例值及对应分析:?? recharge_settlements-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.recharge_settlements.tenantmembercardid IS '对应JSON字段:tenantmembercardid,说明:?????? recharge_settlements-Analysis.md,示例值及对应分析:?? recharge_settlements-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.recharge_settlements.membercardtypename IS '对应JSON字段:membercardtypename,说明:?????? recharge_settlements-Analysis.md,示例值及对应分析:?? recharge_settlements-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.recharge_settlements.memberphone IS '对应JSON字段:memberphone,说明:?????? recharge_settlements-Analysis.md,示例值及对应分析:?? recharge_settlements-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.recharge_settlements.tableid IS '对应JSON字段:tableid,说明:?????? recharge_settlements-Analysis.md,示例值及对应分析:?? recharge_settlements-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.recharge_settlements.consumemoney IS '对应JSON字段:consumemoney,说明:?????? recharge_settlements-Analysis.md,示例值及对应分析:?? recharge_settlements-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.recharge_settlements.onlineamount IS '对应JSON字段:onlineamount,说明:?????? recharge_settlements-Analysis.md,示例值及对应分析:?? recharge_settlements-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.recharge_settlements.operatorid IS '对应JSON字段:operatorid,说明:?????? recharge_settlements-Analysis.md,示例值及对应分析:?? recharge_settlements-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.recharge_settlements.operatorname IS '对应JSON字段:operatorname,说明:?????? recharge_settlements-Analysis.md,示例值及对应分析:?? recharge_settlements-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.recharge_settlements.revokeorderid IS '对应JSON字段:revokeorderid,说明:?????? recharge_settlements-Analysis.md,示例值及对应分析:?? recharge_settlements-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.recharge_settlements.revokeordername IS '对应JSON字段:revokeordername,说明:?????? recharge_settlements-Analysis.md,示例值及对应分析:?? recharge_settlements-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.recharge_settlements.revoketime IS '对应JSON字段:revoketime,说明:?????? recharge_settlements-Analysis.md,示例值及对应分析:?? recharge_settlements-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.recharge_settlements.payamount IS '对应JSON字段:payamount,说明:?????? recharge_settlements-Analysis.md,示例值及对应分析:?? recharge_settlements-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.recharge_settlements.pointamount IS '对应JSON字段:pointamount,说明:?????? recharge_settlements-Analysis.md,示例值及对应分析:?? recharge_settlements-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.recharge_settlements.refundamount IS '对应JSON字段:refundamount,说明:?????? recharge_settlements-Analysis.md,示例值及对应分析:?? recharge_settlements-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.recharge_settlements.settlename IS '对应JSON字段:settlename,说明:?????? recharge_settlements-Analysis.md,示例值及对应分析:?? recharge_settlements-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.recharge_settlements.settlerelateid IS '对应JSON字段:settlerelateid,说明:?????? recharge_settlements-Analysis.md,示例值及对应分析:?? recharge_settlements-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.recharge_settlements.settlestatus IS '对应JSON字段:settlestatus,说明:?????? recharge_settlements-Analysis.md,示例值及对应分析:?? recharge_settlements-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.recharge_settlements.settletype IS '对应JSON字段:settletype,说明:?????? recharge_settlements-Analysis.md,示例值及对应分析:?? recharge_settlements-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.recharge_settlements.paytime IS '对应JSON字段:paytime,说明:?????? recharge_settlements-Analysis.md,示例值及对应分析:?? recharge_settlements-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.recharge_settlements.roundingamount IS '对应JSON字段:roundingamount,说明:?????? recharge_settlements-Analysis.md,示例值及对应分析:?? recharge_settlements-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.recharge_settlements.paymentmethod IS '对应JSON字段:paymentmethod,说明:?????? recharge_settlements-Analysis.md,示例值及对应分析:?? recharge_settlements-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.recharge_settlements.adjustamount IS '对应JSON字段:adjustamount,说明:?????? recharge_settlements-Analysis.md,示例值及对应分析:?? recharge_settlements-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.recharge_settlements.assistantcxmoney IS '对应JSON字段:assistantcxmoney,说明:?????? recharge_settlements-Analysis.md,示例值及对应分析:?? recharge_settlements-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.recharge_settlements.assistantpdmoney IS '对应JSON字段:assistantpdmoney,说明:?????? recharge_settlements-Analysis.md,示例值及对应分析:?? recharge_settlements-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.recharge_settlements.couponsaleamount IS '对应JSON字段:couponsaleamount,说明:?????? recharge_settlements-Analysis.md,示例值及对应分析:?? recharge_settlements-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.recharge_settlements.memberdiscountamount IS '对应JSON字段:memberdiscountamount,说明:?????? recharge_settlements-Analysis.md,示例值及对应分析:?? recharge_settlements-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.recharge_settlements.tablechargemoney IS '对应JSON字段:tablechargemoney,说明:?????? recharge_settlements-Analysis.md,示例值及对应分析:?? recharge_settlements-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.recharge_settlements.goodsmoney IS '对应JSON字段:goodsmoney,说明:?????? recharge_settlements-Analysis.md,示例值及对应分析:?? recharge_settlements-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.recharge_settlements.realgoodsmoney IS '对应JSON字段:realgoodsmoney,说明:?????? recharge_settlements-Analysis.md,示例值及对应分析:?? recharge_settlements-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.recharge_settlements.servicemoney IS '对应JSON字段:servicemoney,说明:?????? recharge_settlements-Analysis.md,示例值及对应分析:?? recharge_settlements-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.recharge_settlements.prepaymoney IS '对应JSON字段:prepaymoney,说明:?????? recharge_settlements-Analysis.md,示例值及对应分析:?? recharge_settlements-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.recharge_settlements.salesmanname IS '对应JSON字段:salesmanname,说明:?????? recharge_settlements-Analysis.md,示例值及对应分析:?? recharge_settlements-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.recharge_settlements.orderremark IS '对应JSON字段:orderremark,说明:?????? recharge_settlements-Analysis.md,示例值及对应分析:?? recharge_settlements-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.recharge_settlements.salesmanuserid IS '对应JSON字段:salesmanuserid,说明:?????? recharge_settlements-Analysis.md,示例值及对应分析:?? recharge_settlements-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.recharge_settlements.canberevoked IS '对应JSON字段:canberevoked,说明:?????? recharge_settlements-Analysis.md,示例值及对应分析:?? recharge_settlements-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.recharge_settlements.pointdiscountprice IS '对应JSON字段:pointdiscountprice,说明:?????? recharge_settlements-Analysis.md,示例值及对应分析:?? recharge_settlements-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.recharge_settlements.pointdiscountcost IS '对应JSON字段:pointdiscountcost,说明:?????? recharge_settlements-Analysis.md,示例值及对应分析:?? recharge_settlements-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.recharge_settlements.activitydiscount IS '对应JSON字段:activitydiscount,说明:?????? recharge_settlements-Analysis.md,示例值及对应分析:?? recharge_settlements-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.recharge_settlements.serialnumber IS '对应JSON字段:serialnumber,说明:?????? recharge_settlements-Analysis.md,示例值及对应分析:?? recharge_settlements-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.recharge_settlements.assistantmanualdiscount IS '对应JSON字段:assistantmanualdiscount,说明:?????? recharge_settlements-Analysis.md,示例值及对应分析:?? recharge_settlements-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.recharge_settlements.allcoupondiscount IS '对应JSON字段:allcoupondiscount,说明:?????? recharge_settlements-Analysis.md,示例值及对应分析:?? recharge_settlements-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.recharge_settlements.goodspromotionmoney IS '对应JSON字段:goodspromotionmoney,说明:?????? recharge_settlements-Analysis.md,示例值及对应分析:?? recharge_settlements-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.recharge_settlements.assistantpromotionmoney IS '对应JSON字段:assistantpromotionmoney,说明:?????? recharge_settlements-Analysis.md,示例值及对应分析:?? recharge_settlements-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.recharge_settlements.isusecoupon IS '对应JSON字段:isusecoupon,说明:?????? recharge_settlements-Analysis.md,示例值及对应分析:?? recharge_settlements-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.recharge_settlements.isusediscount IS '对应JSON字段:isusediscount,说明:?????? recharge_settlements-Analysis.md,示例值及对应分析:?? recharge_settlements-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.recharge_settlements.isactivity IS '对应JSON字段:isactivity,说明:?????? recharge_settlements-Analysis.md,示例值及对应分析:?? recharge_settlements-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.recharge_settlements.isbindmember IS '对应JSON字段:isbindmember,说明:?????? recharge_settlements-Analysis.md,示例值及对应分析:?? recharge_settlements-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.recharge_settlements.isfirst IS '对应JSON字段:isfirst,说明:?????? recharge_settlements-Analysis.md,示例值及对应分析:?? recharge_settlements-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.recharge_settlements.rechargecardamount IS '对应JSON字段:rechargecardamount,说明:?????? recharge_settlements-Analysis.md,示例值及对应分析:?? recharge_settlements-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.recharge_settlements.giftcardamount IS '对应JSON字段:giftcardamount,说明:?????? recharge_settlements-Analysis.md,示例值及对应分析:?? recharge_settlements-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.recharge_settlements.source_file IS '对应JSON字段:source_file,说明:原始文件名(含时间戳后缀),示例值及对应分析:???????';
|
||
COMMENT ON COLUMN billiards_ods.recharge_settlements.source_endpoint IS '对应JSON字段:source_endpoint,说明:抓取来源接口/URL 标识,示例值及对应分析:???????';
|
||
COMMENT ON COLUMN billiards_ods.recharge_settlements.fetched_at IS '对应JSON字段:fetched_at,说明:入库时间(ETL 拉取时间),示例值及对应分析:???????';
|
||
COMMENT ON COLUMN billiards_ods.recharge_settlements.payload IS '对应JSON字段:payload,说明:完整原始 JSON 内容,示例值及对应分析:???????';
|
||
|
||
CREATE TABLE IF NOT EXISTS billiards_ods.settlement_records (
|
||
id BIGINT PRIMARY KEY,
|
||
tenantid BIGINT,
|
||
siteid BIGINT,
|
||
sitename TEXT,
|
||
balanceamount NUMERIC(18,2),
|
||
cardamount NUMERIC(18,2),
|
||
cashamount NUMERIC(18,2),
|
||
couponamount NUMERIC(18,2),
|
||
createtime TIMESTAMPTZ,
|
||
memberid BIGINT,
|
||
membername TEXT,
|
||
tenantmembercardid BIGINT,
|
||
membercardtypename TEXT,
|
||
memberphone TEXT,
|
||
tableid BIGINT,
|
||
consumemoney NUMERIC(18,2),
|
||
onlineamount NUMERIC(18,2),
|
||
operatorid BIGINT,
|
||
operatorname TEXT,
|
||
revokeorderid BIGINT,
|
||
revokeordername TEXT,
|
||
revoketime TIMESTAMPTZ,
|
||
payamount NUMERIC(18,2),
|
||
pointamount NUMERIC(18,2),
|
||
refundamount NUMERIC(18,2),
|
||
settlename TEXT,
|
||
settlerelateid BIGINT,
|
||
settlestatus INT,
|
||
settletype INT,
|
||
paytime TIMESTAMPTZ,
|
||
roundingamount NUMERIC(18,2),
|
||
paymentmethod INT,
|
||
adjustamount NUMERIC(18,2),
|
||
assistantcxmoney NUMERIC(18,2),
|
||
assistantpdmoney NUMERIC(18,2),
|
||
couponsaleamount NUMERIC(18,2),
|
||
memberdiscountamount NUMERIC(18,2),
|
||
tablechargemoney NUMERIC(18,2),
|
||
goodsmoney NUMERIC(18,2),
|
||
realgoodsmoney NUMERIC(18,2),
|
||
servicemoney NUMERIC(18,2),
|
||
prepaymoney NUMERIC(18,2),
|
||
salesmanname TEXT,
|
||
orderremark TEXT,
|
||
salesmanuserid BIGINT,
|
||
canberevoked BOOLEAN,
|
||
pointdiscountprice NUMERIC(18,2),
|
||
pointdiscountcost NUMERIC(18,2),
|
||
activitydiscount NUMERIC(18,2),
|
||
serialnumber BIGINT,
|
||
assistantmanualdiscount NUMERIC(18,2),
|
||
allcoupondiscount NUMERIC(18,2),
|
||
goodspromotionmoney NUMERIC(18,2),
|
||
assistantpromotionmoney NUMERIC(18,2),
|
||
isusecoupon BOOLEAN,
|
||
isusediscount BOOLEAN,
|
||
isactivity BOOLEAN,
|
||
isbindmember BOOLEAN,
|
||
isfirst INT,
|
||
rechargecardamount NUMERIC(18,2),
|
||
giftcardamount NUMERIC(18,2),
|
||
source_file TEXT,
|
||
source_endpoint TEXT,
|
||
fetched_at TIMESTAMPTZ DEFAULT now(),
|
||
payload JSONB NOT NULL
|
||
);
|
||
|
||
COMMENT ON TABLE billiards_ods.settlement_records IS '对应JSON字段:settlement_records.json,说明:ODS 原始明细表(保留payload),示例值及对应分析:详见 settlement_records-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.settlement_records.id IS '对应JSON字段:id,说明::结账记录主键 ID(订单结算 ID)。,示例值及对应分析:结构关联:';
|
||
COMMENT ON COLUMN billiards_ods.settlement_records.tenantid IS '对应JSON字段:tenantid,说明:?????? settlement_records-Analysis.md,示例值及对应分析:?? settlement_records-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.settlement_records.siteid IS '对应JSON字段:siteid,说明:?????? settlement_records-Analysis.md,示例值及对应分析:?? settlement_records-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.settlement_records.sitename IS '对应JSON字段:sitename,说明:?????? settlement_records-Analysis.md,示例值及对应分析:?? settlement_records-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.settlement_records.balanceamount IS '对应JSON字段:balanceamount,说明:?????? settlement_records-Analysis.md,示例值及对应分析:?? settlement_records-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.settlement_records.cardamount IS '对应JSON字段:cardamount,说明:?????? settlement_records-Analysis.md,示例值及对应分析:?? settlement_records-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.settlement_records.cashamount IS '对应JSON字段:cashamount,说明:?????? settlement_records-Analysis.md,示例值及对应分析:?? settlement_records-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.settlement_records.couponamount IS '对应JSON字段:couponamount,说明:?????? settlement_records-Analysis.md,示例值及对应分析:?? settlement_records-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.settlement_records.createtime IS '对应JSON字段:createtime,说明:?????? settlement_records-Analysis.md,示例值及对应分析:?? settlement_records-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.settlement_records.memberid IS '对应JSON字段:memberid,说明:?????? settlement_records-Analysis.md,示例值及对应分析:?? settlement_records-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.settlement_records.membername IS '对应JSON字段:membername,说明:?????? settlement_records-Analysis.md,示例值及对应分析:?? settlement_records-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.settlement_records.tenantmembercardid IS '对应JSON字段:tenantmembercardid,说明:?????? settlement_records-Analysis.md,示例值及对应分析:?? settlement_records-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.settlement_records.membercardtypename IS '对应JSON字段:membercardtypename,说明:?????? settlement_records-Analysis.md,示例值及对应分析:?? settlement_records-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.settlement_records.memberphone IS '对应JSON字段:memberphone,说明:?????? settlement_records-Analysis.md,示例值及对应分析:?? settlement_records-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.settlement_records.tableid IS '对应JSON字段:tableid,说明:?????? settlement_records-Analysis.md,示例值及对应分析:?? settlement_records-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.settlement_records.consumemoney IS '对应JSON字段:consumemoney,说明:?????? settlement_records-Analysis.md,示例值及对应分析:?? settlement_records-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.settlement_records.onlineamount IS '对应JSON字段:onlineamount,说明:?????? settlement_records-Analysis.md,示例值及对应分析:?? settlement_records-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.settlement_records.operatorid IS '对应JSON字段:operatorid,说明:?????? settlement_records-Analysis.md,示例值及对应分析:?? settlement_records-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.settlement_records.operatorname IS '对应JSON字段:operatorname,说明:?????? settlement_records-Analysis.md,示例值及对应分析:?? settlement_records-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.settlement_records.revokeorderid IS '对应JSON字段:revokeorderid,说明:?????? settlement_records-Analysis.md,示例值及对应分析:?? settlement_records-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.settlement_records.revokeordername IS '对应JSON字段:revokeordername,说明:?????? settlement_records-Analysis.md,示例值及对应分析:?? settlement_records-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.settlement_records.revoketime IS '对应JSON字段:revoketime,说明:?????? settlement_records-Analysis.md,示例值及对应分析:?? settlement_records-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.settlement_records.payamount IS '对应JSON字段:payamount,说明:?????? settlement_records-Analysis.md,示例值及对应分析:?? settlement_records-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.settlement_records.pointamount IS '对应JSON字段:pointamount,说明:?????? settlement_records-Analysis.md,示例值及对应分析:?? settlement_records-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.settlement_records.refundamount IS '对应JSON字段:refundamount,说明:?????? settlement_records-Analysis.md,示例值及对应分析:?? settlement_records-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.settlement_records.settlename IS '对应JSON字段:settlename,说明:?????? settlement_records-Analysis.md,示例值及对应分析:?? settlement_records-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.settlement_records.settlerelateid IS '对应JSON字段:settlerelateid,说明:?????? settlement_records-Analysis.md,示例值及对应分析:?? settlement_records-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.settlement_records.settlestatus IS '对应JSON字段:settlestatus,说明:?????? settlement_records-Analysis.md,示例值及对应分析:?? settlement_records-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.settlement_records.settletype IS '对应JSON字段:settletype,说明:?????? settlement_records-Analysis.md,示例值及对应分析:?? settlement_records-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.settlement_records.paytime IS '对应JSON字段:paytime,说明:?????? settlement_records-Analysis.md,示例值及对应分析:?? settlement_records-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.settlement_records.roundingamount IS '对应JSON字段:roundingamount,说明:?????? settlement_records-Analysis.md,示例值及对应分析:?? settlement_records-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.settlement_records.paymentmethod IS '对应JSON字段:paymentmethod,说明:?????? settlement_records-Analysis.md,示例值及对应分析:?? settlement_records-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.settlement_records.adjustamount IS '对应JSON字段:adjustamount,说明:?????? settlement_records-Analysis.md,示例值及对应分析:?? settlement_records-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.settlement_records.assistantcxmoney IS '对应JSON字段:assistantcxmoney,说明:?????? settlement_records-Analysis.md,示例值及对应分析:?? settlement_records-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.settlement_records.assistantpdmoney IS '对应JSON字段:assistantpdmoney,说明:?????? settlement_records-Analysis.md,示例值及对应分析:?? settlement_records-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.settlement_records.couponsaleamount IS '对应JSON字段:couponsaleamount,说明:?????? settlement_records-Analysis.md,示例值及对应分析:?? settlement_records-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.settlement_records.memberdiscountamount IS '对应JSON字段:memberdiscountamount,说明:?????? settlement_records-Analysis.md,示例值及对应分析:?? settlement_records-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.settlement_records.tablechargemoney IS '对应JSON字段:tablechargemoney,说明:?????? settlement_records-Analysis.md,示例值及对应分析:?? settlement_records-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.settlement_records.goodsmoney IS '对应JSON字段:goodsmoney,说明:?????? settlement_records-Analysis.md,示例值及对应分析:?? settlement_records-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.settlement_records.realgoodsmoney IS '对应JSON字段:realgoodsmoney,说明:?????? settlement_records-Analysis.md,示例值及对应分析:?? settlement_records-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.settlement_records.servicemoney IS '对应JSON字段:servicemoney,说明:?????? settlement_records-Analysis.md,示例值及对应分析:?? settlement_records-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.settlement_records.prepaymoney IS '对应JSON字段:prepaymoney,说明:?????? settlement_records-Analysis.md,示例值及对应分析:?? settlement_records-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.settlement_records.salesmanname IS '对应JSON字段:salesmanname,说明:?????? settlement_records-Analysis.md,示例值及对应分析:?? settlement_records-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.settlement_records.orderremark IS '对应JSON字段:orderremark,说明:?????? settlement_records-Analysis.md,示例值及对应分析:?? settlement_records-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.settlement_records.salesmanuserid IS '对应JSON字段:salesmanuserid,说明:?????? settlement_records-Analysis.md,示例值及对应分析:?? settlement_records-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.settlement_records.canberevoked IS '对应JSON字段:canberevoked,说明:?????? settlement_records-Analysis.md,示例值及对应分析:?? settlement_records-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.settlement_records.pointdiscountprice IS '对应JSON字段:pointdiscountprice,说明:?????? settlement_records-Analysis.md,示例值及对应分析:?? settlement_records-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.settlement_records.pointdiscountcost IS '对应JSON字段:pointdiscountcost,说明:?????? settlement_records-Analysis.md,示例值及对应分析:?? settlement_records-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.settlement_records.activitydiscount IS '对应JSON字段:activitydiscount,说明:?????? settlement_records-Analysis.md,示例值及对应分析:?? settlement_records-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.settlement_records.serialnumber IS '对应JSON字段:serialnumber,说明:?????? settlement_records-Analysis.md,示例值及对应分析:?? settlement_records-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.settlement_records.assistantmanualdiscount IS '对应JSON字段:assistantmanualdiscount,说明:?????? settlement_records-Analysis.md,示例值及对应分析:?? settlement_records-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.settlement_records.allcoupondiscount IS '对应JSON字段:allcoupondiscount,说明:?????? settlement_records-Analysis.md,示例值及对应分析:?? settlement_records-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.settlement_records.goodspromotionmoney IS '对应JSON字段:goodspromotionmoney,说明:?????? settlement_records-Analysis.md,示例值及对应分析:?? settlement_records-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.settlement_records.assistantpromotionmoney IS '对应JSON字段:assistantpromotionmoney,说明:?????? settlement_records-Analysis.md,示例值及对应分析:?? settlement_records-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.settlement_records.isusecoupon IS '对应JSON字段:isusecoupon,说明:?????? settlement_records-Analysis.md,示例值及对应分析:?? settlement_records-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.settlement_records.isusediscount IS '对应JSON字段:isusediscount,说明:?????? settlement_records-Analysis.md,示例值及对应分析:?? settlement_records-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.settlement_records.isactivity IS '对应JSON字段:isactivity,说明:?????? settlement_records-Analysis.md,示例值及对应分析:?? settlement_records-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.settlement_records.isbindmember IS '对应JSON字段:isbindmember,说明:?????? settlement_records-Analysis.md,示例值及对应分析:?? settlement_records-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.settlement_records.isfirst IS '对应JSON字段:isfirst,说明:?????? settlement_records-Analysis.md,示例值及对应分析:?? settlement_records-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.settlement_records.rechargecardamount IS '对应JSON字段:rechargecardamount,说明:?????? settlement_records-Analysis.md,示例值及对应分析:?? settlement_records-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.settlement_records.giftcardamount IS '对应JSON字段:giftcardamount,说明:?????? settlement_records-Analysis.md,示例值及对应分析:?? settlement_records-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.settlement_records.source_file IS '对应JSON字段:source_file,说明:原始文件名(含时间戳后缀),示例值及对应分析:???????';
|
||
COMMENT ON COLUMN billiards_ods.settlement_records.source_endpoint IS '对应JSON字段:source_endpoint,说明:抓取来源接口/URL 标识,示例值及对应分析:???????';
|
||
COMMENT ON COLUMN billiards_ods.settlement_records.fetched_at IS '对应JSON字段:fetched_at,说明:入库时间(ETL 拉取时间),示例值及对应分析:???????';
|
||
COMMENT ON COLUMN billiards_ods.settlement_records.payload IS '对应JSON字段:payload,说明:完整原始 JSON 内容,示例值及对应分析:???????';
|
||
|
||
CREATE TABLE IF NOT EXISTS billiards_ods.assistant_cancellation_records (
|
||
id BIGINT PRIMARY KEY,
|
||
siteId BIGINT,
|
||
siteProfile JSONB,
|
||
assistantName TEXT,
|
||
assistantAbolishAmount NUMERIC(18,2),
|
||
assistantOn INT,
|
||
pdChargeMinutes INT,
|
||
tableAreaId BIGINT,
|
||
tableArea TEXT,
|
||
tableId BIGINT,
|
||
tableName TEXT,
|
||
trashReason TEXT,
|
||
createTime TIMESTAMP,
|
||
source_file TEXT,
|
||
source_endpoint TEXT,
|
||
fetched_at TIMESTAMPTZ DEFAULT now(),
|
||
payload JSONB NOT NULL
|
||
);
|
||
|
||
COMMENT ON TABLE billiards_ods.assistant_cancellation_records IS '对应JSON字段:assistant_cancellation_records.json,说明:ODS 原始明细表(保留payload),示例值及对应分析:详见 assistant_cancellation_records-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.assistant_cancellation_records.id IS '对应JSON字段:id,说明:?????? assistant_cancellation_records-Analysis.md,示例值及对应分析:?? assistant_cancellation_records-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.assistant_cancellation_records.siteId IS '对应JSON字段:siteId,说明:?????? assistant_cancellation_records-Analysis.md,示例值及对应分析:?? assistant_cancellation_records-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.assistant_cancellation_records.siteProfile IS '对应JSON字段:siteProfile,说明:?????? assistant_cancellation_records-Analysis.md,示例值及对应分析:?? assistant_cancellation_records-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.assistant_cancellation_records.assistantName IS '对应JSON字段:assistantName,说明:?????? assistant_cancellation_records-Analysis.md,示例值及对应分析:?? assistant_cancellation_records-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.assistant_cancellation_records.assistantAbolishAmount IS '对应JSON字段:assistantAbolishAmount,说明:?????? assistant_cancellation_records-Analysis.md,示例值及对应分析:?? assistant_cancellation_records-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.assistant_cancellation_records.assistantOn IS '对应JSON字段:assistantOn,说明:?????? assistant_cancellation_records-Analysis.md,示例值及对应分析:?? assistant_cancellation_records-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.assistant_cancellation_records.pdChargeMinutes IS '对应JSON字段:pdChargeMinutes,说明:?????? assistant_cancellation_records-Analysis.md,示例值及对应分析:?? assistant_cancellation_records-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.assistant_cancellation_records.tableAreaId IS '对应JSON字段:tableAreaId,说明:?????? assistant_cancellation_records-Analysis.md,示例值及对应分析:?? assistant_cancellation_records-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.assistant_cancellation_records.tableArea IS '对应JSON字段:tableArea,说明:?????? assistant_cancellation_records-Analysis.md,示例值及对应分析:?? assistant_cancellation_records-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.assistant_cancellation_records.tableId IS '对应JSON字段:tableId,说明:?????? assistant_cancellation_records-Analysis.md,示例值及对应分析:?? assistant_cancellation_records-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.assistant_cancellation_records.tableName IS '对应JSON字段:tableName,说明:?????? assistant_cancellation_records-Analysis.md,示例值及对应分析:?? assistant_cancellation_records-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.assistant_cancellation_records.trashReason IS '对应JSON字段:trashReason,说明:?????? assistant_cancellation_records-Analysis.md,示例值及对应分析:?? assistant_cancellation_records-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.assistant_cancellation_records.createTime IS '对应JSON字段:createTime,说明:?????? assistant_cancellation_records-Analysis.md,示例值及对应分析:?? assistant_cancellation_records-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.assistant_cancellation_records.source_file IS '对应JSON字段:source_file,说明:原始文件名(含时间戳后缀),示例值及对应分析:???????';
|
||
COMMENT ON COLUMN billiards_ods.assistant_cancellation_records.source_endpoint IS '对应JSON字段:source_endpoint,说明:抓取来源接口/URL 标识,示例值及对应分析:???????';
|
||
COMMENT ON COLUMN billiards_ods.assistant_cancellation_records.fetched_at IS '对应JSON字段:fetched_at,说明:入库时间(ETL 拉取时间),示例值及对应分析:???????';
|
||
COMMENT ON COLUMN billiards_ods.assistant_cancellation_records.payload IS '对应JSON字段:payload,说明:完整原始 JSON 内容,示例值及对应分析:???????';
|
||
|
||
CREATE TABLE IF NOT EXISTS billiards_ods.assistant_accounts_master (
|
||
id BIGINT PRIMARY KEY,
|
||
tenant_id BIGINT,
|
||
site_id BIGINT,
|
||
assistant_no TEXT,
|
||
nickname TEXT,
|
||
real_name TEXT,
|
||
mobile TEXT,
|
||
team_id BIGINT,
|
||
team_name TEXT,
|
||
user_id BIGINT,
|
||
level TEXT,
|
||
assistant_status INT,
|
||
work_status INT,
|
||
leave_status INT,
|
||
entry_time TIMESTAMP,
|
||
resign_time TIMESTAMP,
|
||
start_time TIMESTAMP,
|
||
end_time TIMESTAMP,
|
||
create_time TIMESTAMP,
|
||
update_time TIMESTAMP,
|
||
order_trade_no TEXT,
|
||
staff_id BIGINT,
|
||
staff_profile_id BIGINT,
|
||
system_role_id BIGINT,
|
||
avatar TEXT,
|
||
gender INT,
|
||
height NUMERIC(18,2),
|
||
weight NUMERIC(18,2),
|
||
job_num TEXT,
|
||
show_status INT,
|
||
show_sort INT,
|
||
sum_grade NUMERIC(18,2),
|
||
assistant_grade NUMERIC(18,2),
|
||
get_grade_times INT,
|
||
introduce TEXT,
|
||
video_introduction_url TEXT,
|
||
group_id BIGINT,
|
||
group_name TEXT,
|
||
shop_name TEXT,
|
||
charge_way INT,
|
||
entry_type INT,
|
||
allow_cx INT,
|
||
is_guaranteed INT,
|
||
salary_grant_enabled INT,
|
||
light_status INT,
|
||
online_status INT,
|
||
is_delete INT,
|
||
cx_unit_price NUMERIC(18,2),
|
||
pd_unit_price NUMERIC(18,2),
|
||
last_table_id BIGINT,
|
||
last_table_name TEXT,
|
||
person_org_id BIGINT,
|
||
serial_number BIGINT,
|
||
is_team_leader INT,
|
||
criticism_status INT,
|
||
ding_talk_synced INT,
|
||
site_light_cfg_id BIGINT,
|
||
light_equipment_id TEXT,
|
||
entry_sign_status INT,
|
||
resign_sign_status INT,
|
||
source_file TEXT,
|
||
source_endpoint TEXT,
|
||
fetched_at TIMESTAMPTZ DEFAULT now(),
|
||
payload JSONB NOT NULL
|
||
);
|
||
|
||
COMMENT ON TABLE billiards_ods.assistant_accounts_master IS '对应JSON字段:assistant_accounts_master.json,说明:ODS 原始明细表(保留payload),示例值及对应分析:详见 assistant_accounts_master-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.assistant_accounts_master.id IS '对应JSON字段:id,说明::助教账号主键 ID,在“助教流水.json”中对应 site_assistant_id。,示例值及对应分析:作用:所有与助教相关的事实表(助教流水、助教排班等)都会通过这个 ID 关联到该维表。';
|
||
COMMENT ON COLUMN billiards_ods.assistant_accounts_master.tenant_id IS '对应JSON字段:tenant_id,说明::品牌/租户 ID,对应“非球科技”系统中该商户的唯一标识。,示例值及对应分析:用途:多门店时用来区分不同商户。';
|
||
COMMENT ON COLUMN billiards_ods.assistant_accounts_master.site_id IS '对应JSON字段:site_id,说明::门店 ID,对应本次数据的这家球房(朗朗桌球)。,示例值及对应分析:关联:与其它 JSON(台费流水、库存、销售等)中的 site_id 一致。';
|
||
COMMENT ON COLUMN billiards_ods.assistant_accounts_master.assistant_no IS '对应JSON字段:assistant_no,说明:(结合字段名推测):助教工号 / 编号,便于业务侧识别。,示例值及对应分析:关联:在“助教流水.json”中有 assistantNo,与此字段对应。';
|
||
COMMENT ON COLUMN billiards_ods.assistant_accounts_master.nickname IS '对应JSON字段:nickname,说明::助教在前台展示的昵称,如“佳怡”“周周”“球球”等。,示例值及对应分析:用途:与真实姓名区分,用于顾客侧展示。如在助教流水中 nickname 就是这个值。';
|
||
COMMENT ON COLUMN billiards_ods.assistant_accounts_master.real_name IS '对应JSON字段:real_name,说明::助教真实姓名,如“何海婷”“梁婷婷”等。,示例值及对应分析:关联:在“助教流水.json”的 assistantName 与此一致。';
|
||
COMMENT ON COLUMN billiards_ods.assistant_accounts_master.mobile IS '对应JSON字段:mobile,说明::助教手机号,用于登录绑定、通知、钉钉同步等。,示例值及对应分析:?? assistant_accounts_master-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.assistant_accounts_master.team_id IS '对应JSON字段:team_id,说明::助教所属团队 ID。,示例值及对应分析:关联:在“助教流水.json”中 assistant_team_id 与此一致。';
|
||
COMMENT ON COLUMN billiards_ods.assistant_accounts_master.team_name IS '对应JSON字段:team_name,说明::团队名称,展示用,和 team_id 一一对应。,示例值及对应分析:group_id';
|
||
COMMENT ON COLUMN billiards_ods.assistant_accounts_master.level IS '对应JSON字段:level,说明:(结合“助教流水中的 assistant_level / levelName 推测”):,示例值及对应分析:8:助教管理/管理员(和流水里的 "助教管理" 对应)';
|
||
COMMENT ON COLUMN billiards_ods.assistant_accounts_master.assistant_status IS '对应JSON字段:assistant_status,说明:(推测):账号启用状态:,示例值及对应分析:1:启用';
|
||
COMMENT ON COLUMN billiards_ods.assistant_accounts_master.work_status IS '对应JSON字段:work_status,说明::,示例值及对应分析:1:在岗/可排班';
|
||
COMMENT ON COLUMN billiards_ods.assistant_accounts_master.leave_status IS '对应JSON字段:leave_status,说明:类型:int,枚举。,示例值及对应分析:观测:';
|
||
COMMENT ON COLUMN billiards_ods.assistant_accounts_master.entry_time IS '对应JSON字段:entry_time,说明::入职时间。,示例值及对应分析:?? assistant_accounts_master-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.assistant_accounts_master.resign_time IS '对应JSON字段:resign_time,说明::离职日期;使用“远未来日期”作为“未离职”的占位。,示例值及对应分析:entry_type';
|
||
COMMENT ON COLUMN billiards_ods.assistant_accounts_master.start_time IS '对应JSON字段:start_time,说明:(推测):当前配置生效的开始日期。,示例值及对应分析:?? assistant_accounts_master-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.assistant_accounts_master.end_time IS '对应JSON字段:end_time,说明::当前配置生效的结束日期(例如一个周期性的排班/合同周期)。,示例值及对应分析:last_table_id';
|
||
COMMENT ON COLUMN billiards_ods.assistant_accounts_master.create_time IS '对应JSON字段:create_time,说明::账号创建时间。,示例值及对应分析:?? assistant_accounts_master-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.assistant_accounts_master.update_time IS '对应JSON字段:update_time,说明::账号最近一次被修改的时间(例如修改等级、昵称等)。,示例值及对应分析:?? assistant_accounts_master-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.assistant_accounts_master.order_trade_no IS '对应JSON字段:order_trade_no,说明:(推测):该助教最近一次关联的订单号,用于快速跳转或回溯最近服务行为。,示例值及对应分析:9. 灯控、钉钉等系统集成相关字段';
|
||
COMMENT ON COLUMN billiards_ods.assistant_accounts_master.staff_id IS '对应JSON字段:staff_id,说明:(推测):预留给“人事系统员工 ID”的字段,目前未接入或未启用。,示例值及对应分析:?? assistant_accounts_master-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.assistant_accounts_master.staff_profile_id IS '对应JSON字段:staff_profile_id,说明:(推测):人事档案 ID,与第三方 HR 系统或内部员工档案集成使用,当前未启用。,示例值及对应分析:4. 等级、计费与薪资配置字段';
|
||
COMMENT ON COLUMN billiards_ods.assistant_accounts_master.system_role_id IS '对应JSON字段:system_role_id,说明:?????? assistant_accounts_master-Analysis.md,示例值及对应分析:?? assistant_accounts_master-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.assistant_accounts_master.avatar IS '对应JSON字段:avatar,说明::助教头像地址。,示例值及对应分析:introduce';
|
||
COMMENT ON COLUMN billiards_ods.assistant_accounts_master.gender IS '对应JSON字段:gender,说明:(结合常见约定与值分布推测):,示例值及对应分析:0:未填/保密';
|
||
COMMENT ON COLUMN billiards_ods.assistant_accounts_master.show_status IS '对应JSON字段:show_status,说明:(推测):前台展示状态:,示例值及对应分析:1:在助教选择界面展示。';
|
||
COMMENT ON COLUMN billiards_ods.assistant_accounts_master.show_sort IS '对应JSON字段:show_sort,说明::前台展示排序权重,值越小/越大对应不同的排序策略(当前看起来与 assistant_no 有一定对应关系)。,示例值及对应分析:online_status';
|
||
COMMENT ON COLUMN billiards_ods.assistant_accounts_master.sum_grade IS '对应JSON字段:sum_grade,说明::评分总和,用于计算平均分(assistant_grade = sum_grade / get_grade_times),当前为 0。,示例值及对应分析:?? assistant_accounts_master-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.assistant_accounts_master.get_grade_times IS '对应JSON字段:get_grade_times,说明::累计被评分次数。,示例值及对应分析:charge_way';
|
||
COMMENT ON COLUMN billiards_ods.assistant_accounts_master.video_introduction_url IS '对应JSON字段:video_introduction_url,说明::助教个人视频介绍地址。,示例值及对应分析:height';
|
||
COMMENT ON COLUMN billiards_ods.assistant_accounts_master.user_id IS '对应JSON字段:user_id,说明:账号对应的用户 ID/员工 ID,用于跨表关联。';
|
||
COMMENT ON COLUMN billiards_ods.assistant_accounts_master.height IS '对应JSON字段:height,说明:身高(数值),可空。';
|
||
COMMENT ON COLUMN billiards_ods.assistant_accounts_master.weight IS '对应JSON字段:weight,说明:体重(数值),可空。';
|
||
COMMENT ON COLUMN billiards_ods.assistant_accounts_master.job_num IS '对应JSON字段:job_num,说明:工号/岗位编号,保留原始取值。';
|
||
COMMENT ON COLUMN billiards_ods.assistant_accounts_master.assistant_grade IS '对应JSON字段:assistant_grade,说明:平均评分,通常 = sum_grade/get_grade_times。';
|
||
COMMENT ON COLUMN billiards_ods.assistant_accounts_master.introduce IS '对应JSON字段:introduce,说明:个人简介/自我介绍,可空。';
|
||
COMMENT ON COLUMN billiards_ods.assistant_accounts_master.group_id IS '对应JSON字段:group_id,说明:分组/自定义分组 ID。';
|
||
COMMENT ON COLUMN billiards_ods.assistant_accounts_master.group_name IS '对应JSON字段:group_name,说明:分组名称。';
|
||
COMMENT ON COLUMN billiards_ods.assistant_accounts_master.shop_name IS '对应JSON字段:shop_name,说明:门店名称冗余。';
|
||
COMMENT ON COLUMN billiards_ods.assistant_accounts_master.charge_way IS '对应JSON字段:charge_way,说明:收费方式枚举,保留原值。';
|
||
COMMENT ON COLUMN billiards_ods.assistant_accounts_master.entry_type IS '对应JSON字段:entry_type,说明:入职类型枚举,保留原值。';
|
||
COMMENT ON COLUMN billiards_ods.assistant_accounts_master.allow_cx IS '对应JSON字段:allow_cx,说明:是否允许超休/冲销(0/1)。';
|
||
COMMENT ON COLUMN billiards_ods.assistant_accounts_master.is_guaranteed IS '对应JSON字段:is_guaranteed,说明:是否保底(0/1)。';
|
||
COMMENT ON COLUMN billiards_ods.assistant_accounts_master.salary_grant_enabled IS '对应JSON字段:salary_grant_enabled,说明:薪资发放/补贴开关,枚举。';
|
||
COMMENT ON COLUMN billiards_ods.assistant_accounts_master.light_status IS '对应JSON字段:light_status,说明:灯控状态/模式,保留原值。';
|
||
COMMENT ON COLUMN billiards_ods.assistant_accounts_master.online_status IS '对应JSON字段:online_status,说明:在线状态标记(0/1等)。';
|
||
COMMENT ON COLUMN billiards_ods.assistant_accounts_master.is_delete IS '对应JSON字段:is_delete,说明:逻辑删除标记(0=有效,1=删除)。';
|
||
COMMENT ON COLUMN billiards_ods.assistant_accounts_master.cx_unit_price IS '对应JSON字段:cx_unit_price,说明:超休单价/冲销单价,金额类。';
|
||
COMMENT ON COLUMN billiards_ods.assistant_accounts_master.pd_unit_price IS '对应JSON字段:pd_unit_price,说明:排钟/点钟单价,金额类。';
|
||
COMMENT ON COLUMN billiards_ods.assistant_accounts_master.last_table_id IS '对应JSON字段:last_table_id,说明:最近服务桌台 ID。';
|
||
COMMENT ON COLUMN billiards_ods.assistant_accounts_master.last_table_name IS '对应JSON字段:last_table_name,说明:最近服务桌台名称。';
|
||
COMMENT ON COLUMN billiards_ods.assistant_accounts_master.person_org_id IS '对应JSON字段:person_org_id,说明:人员组织 ID/部门 ID。';
|
||
COMMENT ON COLUMN billiards_ods.assistant_accounts_master.serial_number IS '对应JSON字段:serial_number,说明:序列号/排序号,保留原值。';
|
||
COMMENT ON COLUMN billiards_ods.assistant_accounts_master.is_team_leader IS '对应JSON字段:is_team_leader,说明:是否组长(0/1)。';
|
||
COMMENT ON COLUMN billiards_ods.assistant_accounts_master.criticism_status IS '对应JSON字段:criticism_status,说明:处罚/警告状态标记,枚举。';
|
||
COMMENT ON COLUMN billiards_ods.assistant_accounts_master.ding_talk_synced IS '对应JSON字段:ding_talk_synced,说明:是否已同步钉钉(0/1)。';
|
||
COMMENT ON COLUMN billiards_ods.assistant_accounts_master.site_light_cfg_id IS '对应JSON字段:site_light_cfg_id,说明:门店灯控配置 ID。';
|
||
COMMENT ON COLUMN billiards_ods.assistant_accounts_master.light_equipment_id IS '对应JSON字段:light_equipment_id,说明:灯控设备 ID/硬件编号。';
|
||
COMMENT ON COLUMN billiards_ods.assistant_accounts_master.entry_sign_status IS '对应JSON字段:entry_sign_status,说明:入职签署状态,枚举。';
|
||
COMMENT ON COLUMN billiards_ods.assistant_accounts_master.resign_sign_status IS '对应JSON字段:resign_sign_status,说明:离职签署状态,枚举。';
|
||
COMMENT ON COLUMN billiards_ods.assistant_accounts_master.source_file IS '对应JSON字段:source_file,说明:原始文件名(含时间戳后缀),示例值及对应分析:???????';
|
||
COMMENT ON COLUMN billiards_ods.assistant_accounts_master.source_endpoint IS '对应JSON字段:source_endpoint,说明:抓取来源接口/URL 标识,示例值及对应分析:???????';
|
||
COMMENT ON COLUMN billiards_ods.assistant_accounts_master.fetched_at IS '对应JSON字段:fetched_at,说明:入库时间(ETL 拉取时间),示例值及对应分析:???????';
|
||
COMMENT ON COLUMN billiards_ods.assistant_accounts_master.payload IS '对应JSON字段:payload,说明:完整原始 JSON 内容,示例值及对应分析:???????';
|
||
|
||
CREATE TABLE IF NOT EXISTS billiards_ods.assistant_service_records (
|
||
id BIGINT PRIMARY KEY,
|
||
tenant_id BIGINT,
|
||
site_id BIGINT,
|
||
siteProfile JSONB,
|
||
site_table_id BIGINT,
|
||
order_settle_id BIGINT,
|
||
order_trade_no TEXT,
|
||
order_pay_id BIGINT,
|
||
order_assistant_id BIGINT,
|
||
order_assistant_type INT,
|
||
assistantName TEXT,
|
||
assistantNo TEXT,
|
||
assistant_level TEXT,
|
||
assistant_team_id BIGINT,
|
||
nickname TEXT,
|
||
ledger_name TEXT,
|
||
ledger_group_name TEXT,
|
||
ledger_amount NUMERIC(18,2),
|
||
ledger_count NUMERIC(18,4),
|
||
ledger_unit_price NUMERIC(18,4),
|
||
ledger_status INT,
|
||
ledger_start_time TIMESTAMP,
|
||
ledger_end_time TIMESTAMP,
|
||
manual_discount_amount NUMERIC(18,2),
|
||
member_discount_amount NUMERIC(18,2),
|
||
coupon_deduct_money NUMERIC(18,2),
|
||
service_money NUMERIC(18,2),
|
||
projected_income NUMERIC(18,2),
|
||
real_use_seconds INT,
|
||
income_seconds INT,
|
||
start_use_time TIMESTAMP,
|
||
last_use_time TIMESTAMP,
|
||
create_time TIMESTAMP,
|
||
is_single_order INT,
|
||
is_delete INT,
|
||
is_trash INT,
|
||
trash_reason TEXT,
|
||
trash_applicant_id BIGINT,
|
||
trash_applicant_name TEXT,
|
||
operator_id BIGINT,
|
||
operator_name TEXT,
|
||
salesman_name TEXT,
|
||
salesman_org_id BIGINT,
|
||
salesman_user_id BIGINT,
|
||
person_org_id BIGINT,
|
||
add_clock INT,
|
||
returns_clock INT,
|
||
composite_grade NUMERIC(10,2),
|
||
composite_grade_time TIMESTAMP,
|
||
skill_grade NUMERIC(10,2),
|
||
service_grade NUMERIC(10,2),
|
||
sum_grade NUMERIC(10,2),
|
||
grade_status INT,
|
||
get_grade_times INT,
|
||
is_not_responding INT,
|
||
is_confirm INT,
|
||
payload JSONB NOT NULL,
|
||
source_file TEXT,
|
||
source_endpoint TEXT,
|
||
fetched_at TIMESTAMPTZ DEFAULT now()
|
||
);
|
||
|
||
COMMENT ON TABLE billiards_ods.assistant_service_records IS '对应JSON字段:assistant_service_records.json,说明:ODS 原始明细表(保留payload),示例值及对应分析:详见 assistant_service_records-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.assistant_service_records.id IS '对应JSON字段:id,说明::本条助教流水记录的主键 ID(流水唯一标识)。,示例值及对应分析:作用:在系统内部唯一定位这一条助教服务记录。';
|
||
COMMENT ON COLUMN billiards_ods.assistant_service_records.tenant_id IS '对应JSON字段:tenant_id,说明::租户/品牌 ID;你这份数据中是固定值(同一个商户)。,示例值及对应分析:关联:全库所有表都有,作为“商户维度”的过滤键。';
|
||
COMMENT ON COLUMN billiards_ods.assistant_service_records.site_id IS '对应JSON字段:site_id,说明::门店 ID,本数据中指“朗朗桌球”这一家门店。,示例值及对应分析:关联:';
|
||
COMMENT ON COLUMN billiards_ods.assistant_service_records.siteProfile IS '对应JSON字段:siteProfile,说明::门店信息快照,包括 id、shop_name、address 等,和其他 JSON 里的 siteProfile 一致。,示例值及对应分析:作用:冗余门店信息,方便查看(而不是每次都联表看门店档案)。';
|
||
COMMENT ON COLUMN billiards_ods.assistant_service_records.site_table_id IS '对应JSON字段:site_table_id,说明::球台 ID。,示例值及对应分析:关联:';
|
||
COMMENT ON COLUMN billiards_ods.assistant_service_records.order_settle_id IS '对应JSON字段:order_settle_id,说明::订单结算 ID,相当于“结账单号”的内部主键。,示例值及对应分析:关联:';
|
||
COMMENT ON COLUMN billiards_ods.assistant_service_records.order_trade_no IS '对应JSON字段:order_trade_no,说明::订单交易号,整个订单层面的编号。,示例值及对应分析:关联:';
|
||
COMMENT ON COLUMN billiards_ods.assistant_service_records.order_pay_id IS '对应JSON字段:order_pay_id,说明::关联到“支付记录”的主键 ID。,示例值及对应分析:作用:可以和支付记录中的 id / relate_id 等字段对应,找到这条助教服务对应的支付流水。';
|
||
COMMENT ON COLUMN billiards_ods.assistant_service_records.order_assistant_id IS '对应JSON字段:order_assistant_id,说明::订单中“助教项目明细”的内部 ID。,示例值及对应分析:作用:如果订单里有多条助教项目(比如换助教、多个时间段),此字段唯一标识这一条助教明细。';
|
||
COMMENT ON COLUMN billiards_ods.assistant_service_records.order_assistant_type IS '对应JSON字段:order_assistant_type,说明:(推测):,示例值及对应分析:1:常规助教服务(主课/基础课)。';
|
||
COMMENT ON COLUMN billiards_ods.assistant_service_records.assistantName IS '对应JSON字段:assistantName,说明::助教姓名,如“何海婷”“胡敏”等。,示例值及对应分析:备注:和助教账号档案里的 real_name 一致。';
|
||
COMMENT ON COLUMN billiards_ods.assistant_service_records.assistantNo IS '对应JSON字段:assistantNo,说明::助教编号,例如 "27"。,示例值及对应分析:关联:在助教账号表里也有 assistant_no 字段,对应工号/编号。';
|
||
COMMENT ON COLUMN billiards_ods.assistant_service_records.assistant_level IS '对应JSON字段:assistant_level,说明::助教等级名称,与 assistant_level 一一对应(初级/中级/高级/助教管理)。,示例值及对应分析:备注:属于展示用的冗余字段。';
|
||
COMMENT ON COLUMN billiards_ods.assistant_service_records.assistant_team_id IS '对应JSON字段:assistant_team_id,说明::当前这条助教服务所对应的“课程/技能名称”。,示例值及对应分析:当 order_assistant_type = 1 时,多为“基础课”。';
|
||
COMMENT ON COLUMN billiards_ods.assistant_service_records.nickname IS '对应JSON字段:nickname,说明::助教对外昵称,如“佳怡”“周周”“球球”等。,示例值及对应分析:说明:从数据看,这个 nickname 是“助教昵称”,不是顾客昵称(容易混淆)。';
|
||
COMMENT ON COLUMN billiards_ods.assistant_service_records.ledger_name IS '对应JSON字段:ledger_name,说明:?????? assistant_service_records-Analysis.md,示例值及对应分析:?? assistant_service_records-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.assistant_service_records.ledger_group_name IS '对应JSON字段:ledger_group_name,说明:(推测):助教项目所属的“计费分组/套餐分组名称”,例如某种助教套餐或业务组名称。,示例值及对应分析:目前未被实际使用。';
|
||
COMMENT ON COLUMN billiards_ods.assistant_service_records.ledger_amount IS '对应JSON字段:ledger_amount,说明::按标准单价计算出来的应收金额(近似 = ledger_unit_price × income_seconds / 3600)。,示例值及对应分析:说明:从数据看,这个金额对应“按原价计费”的金额,未扣除各种优惠。';
|
||
COMMENT ON COLUMN billiards_ods.assistant_service_records.ledger_count IS '对应JSON字段:ledger_count,说明::台账记录的计时总秒数。,示例值及对应分析:特点:';
|
||
COMMENT ON COLUMN billiards_ods.assistant_service_records.ledger_unit_price IS '对应JSON字段:ledger_unit_price,说明::助教服务 标准单价(通常是标价:每小时、每节课的单价)。,示例值及对应分析:特点:如 98.0、108.0、190.0 等。';
|
||
COMMENT ON COLUMN billiards_ods.assistant_service_records.ledger_status IS '对应JSON字段:ledger_status,说明:(推测):助教流水记录状态:,示例值及对应分析:1:正常有效。';
|
||
COMMENT ON COLUMN billiards_ods.assistant_service_records.ledger_start_time IS '对应JSON字段:ledger_start_time,说明::台账层面记录的开始时间。,示例值及对应分析:说明:与 start_use_time 在当前数据中完全一致,可以视为“计费起始时间”。';
|
||
COMMENT ON COLUMN billiards_ods.assistant_service_records.ledger_end_time IS '对应JSON字段:ledger_end_time,说明::台账层面的结束时间。,示例值及对应分析:说明:与 last_use_time 一致,可以视为“计费结束时间”。对于 real_use_seconds = 0 的记录,开始和结束时间相同,说明只是预约/录入,并未实际服务。';
|
||
COMMENT ON COLUMN billiards_ods.assistant_service_records.manual_discount_amount IS '对应JSON字段:manual_discount_amount,说明::收银员手动给予的减免金额(人工改价)。,示例值及对应分析:当前导出时间段内暂未出现手动打折的情况。';
|
||
COMMENT ON COLUMN billiards_ods.assistant_service_records.member_discount_amount IS '对应JSON字段:member_discount_amount,说明::由会员卡折扣产生的优惠金额。,示例值及对应分析:说明:尽管字段里是 0,但实际折扣可能已经体现在 projected_income 与 ledger_amount 的差额中,这里只是未单独拆出。';
|
||
COMMENT ON COLUMN billiards_ods.assistant_service_records.coupon_deduct_money IS '对应JSON字段:coupon_deduct_money,说明::由“优惠券/代金券/团购券”等 直接抵扣到这条助教服务上的金额。,示例值及对应分析:说明:';
|
||
COMMENT ON COLUMN billiards_ods.assistant_service_records.service_money IS '对应JSON字段:service_money,说明:(推测):用于记录与助教结算的金额(平台预留的“成本/分成”字段)。,示例值及对应分析:当前数据中未启用这个机制,所以全为 0。';
|
||
COMMENT ON COLUMN billiards_ods.assistant_service_records.projected_income IS '对应JSON字段:projected_income,说明::实际结算计入门店的金额(已经考虑折扣、卡权益、券等后的结果)。,示例值及对应分析:从数据:projected_income 明显低于 ledger_amount,说明中间有折扣,但折扣的明细并不全由下面几个字段体现(很多是卡权益内生折扣)。';
|
||
COMMENT ON COLUMN billiards_ods.assistant_service_records.real_use_seconds IS '对应JSON字段:real_use_seconds,说明::实际使用时长(秒)。,示例值及对应分析:特点:';
|
||
COMMENT ON COLUMN billiards_ods.assistant_service_records.income_seconds IS '对应JSON字段:income_seconds,说明::计费秒数 / 应计收入对应的时间。,示例值及对应分析:特点:';
|
||
COMMENT ON COLUMN billiards_ods.assistant_service_records.start_use_time IS '对应JSON字段:start_use_time,说明::助教实际开始服务时间。,示例值及对应分析:特点:正常情况下与 ledger_start_time 相同。';
|
||
COMMENT ON COLUMN billiards_ods.assistant_service_records.last_use_time IS '对应JSON字段:last_use_time,说明::最后一次使用(实际服务)时间。,示例值及对应分析:特点:正常结束时与 ledger_end_time 相同;如果服务还未真正开始或立即结束,开始/结束时间可能相同。';
|
||
COMMENT ON COLUMN billiards_ods.assistant_service_records.create_time IS '对应JSON字段:create_time,说明::这条助教流水记录创建时间(一般接近结算/下单时间)。,示例值及对应分析:?? assistant_service_records-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.assistant_service_records.is_single_order IS '对应JSON字段:is_single_order,说明:(推测):是否单独订单:,示例值及对应分析:1:本助教服务作为单独订单结算(或单独拆项)。';
|
||
COMMENT ON COLUMN billiards_ods.assistant_service_records.is_delete IS '对应JSON字段:is_delete,说明::逻辑删除标志。,示例值及对应分析:0:未删除;';
|
||
COMMENT ON COLUMN billiards_ods.assistant_service_records.is_trash IS '对应JSON字段:is_trash,说明::是否已废除/作废:,示例值及对应分析:0:正常有效;';
|
||
COMMENT ON COLUMN billiards_ods.assistant_service_records.trash_reason IS '对应JSON字段:trash_reason,说明::废除原因(文本说明),例如“顾客取消”“录入错误”等。,示例值及对应分析:当前数据为空字符串,说明当前导出时间段没有被废除的助教流水记录。';
|
||
COMMENT ON COLUMN billiards_ods.assistant_service_records.trash_applicant_id IS '对应JSON字段:trash_applicant_id,说明::提出废除申请的员工 ID(通常是操作员/管理员)。,示例值及对应分析:当前数据全为 0,因此短期内没有发生废除操作。';
|
||
COMMENT ON COLUMN billiards_ods.assistant_service_records.trash_applicant_name IS '对应JSON字段:trash_applicant_name,说明::废除申请人姓名。,示例值及对应分析:?? assistant_service_records-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.assistant_service_records.operator_id IS '对应JSON字段:operator_id,说明::操作员 ID(录入/结算这条助教服务的员工)。,示例值及对应分析:关联:可与员工/账号表对应(本次导出未单独给员工表,但其他 JSON 里多处出现该 ID)。';
|
||
COMMENT ON COLUMN billiards_ods.assistant_service_records.operator_name IS '对应JSON字段:operator_name,说明::操作员姓名,与 operator_id 一起使用,便于直接阅读。,示例值及对应分析:user_id';
|
||
COMMENT ON COLUMN billiards_ods.assistant_service_records.salesman_name IS '对应JSON字段:salesman_name,说明::关联的“营业员/销售员姓名”,用于提成归属。,示例值及对应分析:观测:本数据中多数为空字符串,说明助教流水没有配置单独的营业员。';
|
||
COMMENT ON COLUMN billiards_ods.assistant_service_records.salesman_org_id IS '对应JSON字段:salesman_org_id,说明::营业员所属组织/部门 ID。,示例值及对应分析:观测:多为 0。';
|
||
COMMENT ON COLUMN billiards_ods.assistant_service_records.salesman_user_id IS '对应JSON字段:salesman_user_id,说明::营业员用户 ID。,示例值及对应分析:观测:多为 0,代表未指定。';
|
||
COMMENT ON COLUMN billiards_ods.assistant_service_records.person_org_id IS '对应JSON字段:person_org_id,说明:同样在上文说明:助教所属人事组织 ID。,示例值及对应分析:9. 作废 / 废除相关字段';
|
||
COMMENT ON COLUMN billiards_ods.assistant_service_records.add_clock IS '对应JSON字段:add_clock,说明:(推测):加钟秒数,即在原有预约/服务基础上临时追加的时长。,示例值及对应分析:说明:值均为 60 的倍数(分钟级加钟),如 600 秒=10 分钟。';
|
||
COMMENT ON COLUMN billiards_ods.assistant_service_records.returns_clock IS '对应JSON字段:returns_clock,说明:(推测):退钟秒数(取消加钟或提前结束退回的时间)。,示例值及对应分析:当前数据里没有退钟场景,所以全为 0,但字段设计已经预留。';
|
||
COMMENT ON COLUMN billiards_ods.assistant_service_records.composite_grade IS '对应JSON字段:composite_grade,说明::综合评分(例如技能+服务加权后的平均分),当前数据没有实际评分。,示例值及对应分析:?? assistant_service_records-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.assistant_service_records.composite_grade_time IS '对应JSON字段:composite_grade_time,说明:(推测):最近一次评价时间/综合评分更新时间。现在都是默认“无效时间”。,示例值及对应分析:3. 桌台 / 门店维度字段';
|
||
COMMENT ON COLUMN billiards_ods.assistant_service_records.skill_grade IS '对应JSON字段:skill_grade,说明:(推测):顾客对“技能表现”的评分(整数或打分等级)。,示例值及对应分析:当前数据中还未产生评分记录,所以都是默认值 0。';
|
||
COMMENT ON COLUMN billiards_ods.assistant_service_records.service_grade IS '对应JSON字段:service_grade,说明:(推测):顾客对“服务态度”的评分。,示例值及对应分析:?? assistant_service_records-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.assistant_service_records.sum_grade IS '对应JSON字段:sum_grade,说明::累计评分总和(可能用于计算平均分),当前为 0。,示例值及对应分析:?? assistant_service_records-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.assistant_service_records.grade_status IS '对应JSON字段:grade_status,说明:(推测):评价状态,比如:,示例值及对应分析:1 = 未评价/正常;';
|
||
COMMENT ON COLUMN billiards_ods.assistant_service_records.get_grade_times IS '对应JSON字段:get_grade_times,说明::该条记录对应的评价次数(或该助教被评价次数快照)。,示例值及对应分析:?? assistant_service_records-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.assistant_service_records.is_not_responding IS '对应JSON字段:is_not_responding,说明:(推测):是否存在“爽约/未响应”情况:,示例值及对应分析:0:正常;';
|
||
COMMENT ON COLUMN billiards_ods.assistant_service_records.is_confirm IS '对应JSON字段:is_confirm,说明:(推测):确认状态,例如:,示例值及对应分析:1:待确认;';
|
||
COMMENT ON COLUMN billiards_ods.assistant_service_records.payload IS '对应JSON字段:payload,说明:完整原始 JSON 内容,示例值及对应分析:???????';
|
||
COMMENT ON COLUMN billiards_ods.assistant_service_records.source_file IS '对应JSON字段:source_file,说明:原始文件名(含时间戳后缀),示例值及对应分析:???????';
|
||
COMMENT ON COLUMN billiards_ods.assistant_service_records.source_endpoint IS '对应JSON字段:source_endpoint,说明:抓取来源接口/URL 标识,示例值及对应分析:???????';
|
||
COMMENT ON COLUMN billiards_ods.assistant_service_records.fetched_at IS '对应JSON字段:fetched_at,说明:入库时间(ETL 拉取时间),示例值及对应分析:???????';
|
||
|
||
CREATE TABLE IF NOT EXISTS billiards_ods.site_tables_master (
|
||
id BIGINT PRIMARY KEY,
|
||
site_id BIGINT,
|
||
siteName TEXT,
|
||
"appletQrCodeUrl" TEXT,
|
||
areaName TEXT,
|
||
audit_status INT,
|
||
charge_free INT,
|
||
create_time TIMESTAMP,
|
||
delay_lights_time INT,
|
||
is_online_reservation INT,
|
||
is_rest_area INT,
|
||
light_status INT,
|
||
only_allow_groupon INT,
|
||
order_delay_time INT,
|
||
self_table INT,
|
||
show_status INT,
|
||
site_table_area_id BIGINT,
|
||
tableStatusName TEXT,
|
||
table_cloth_use_Cycle INT,
|
||
table_cloth_use_time TIMESTAMP,
|
||
table_name TEXT,
|
||
table_price NUMERIC(18,2),
|
||
table_status INT,
|
||
temporary_light_second INT,
|
||
virtual_table INT,
|
||
source_file TEXT,
|
||
source_endpoint TEXT,
|
||
fetched_at TIMESTAMPTZ DEFAULT now(),
|
||
payload JSONB NOT NULL
|
||
);
|
||
|
||
COMMENT ON TABLE billiards_ods.site_tables_master IS '对应JSON字段:site_tables_master.json,说明:ODS 原始明细表(保留payload),示例值及对应分析:详见 site_tables_master-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.site_tables_master.id IS '对应JSON字段:id,说明::台桌主键 ID。,示例值及对应分析:关联:';
|
||
COMMENT ON COLUMN billiards_ods.site_tables_master.site_id IS '对应JSON字段:site_id,说明::门店 ID。,示例值及对应分析:关联:';
|
||
COMMENT ON COLUMN billiards_ods.site_tables_master.siteName IS '对应JSON字段:siteName,说明::门店名称快照,冗余字段,配合 site_id 使用。,示例值及对应分析:?? site_tables_master-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.site_tables_master."appletQrCodeUrl" IS '对应JSON字段:appletQrCodeUrl,说明::小程序二维码 URL。 一般用于:,示例值及对应分析:打印二维码贴在台上,顾客扫码可呼叫服务、查看账单或发起线上预约;';
|
||
COMMENT ON COLUMN billiards_ods.site_tables_master.areaName IS '对应JSON字段:areaName,说明::区域名称,用于前台展示和区域维度管理。,示例值及对应分析:结构特征:';
|
||
COMMENT ON COLUMN billiards_ods.site_tables_master.audit_status IS '对应JSON字段:audit_status,说明:(结合命名惯例):,示例值及对应分析:2:已审核/已启用;';
|
||
COMMENT ON COLUMN billiards_ods.site_tables_master.charge_free IS '对应JSON字段:charge_free,说明:(推测):,示例值及对应分析:0:正常计费;';
|
||
COMMENT ON COLUMN billiards_ods.site_tables_master.create_time IS '对应JSON字段:create_time,说明::台桌配置的创建时间或最近一次创建/复制时间。,示例值及对应分析:三、与其它 JSON 的字段级关联关系(结构视角)';
|
||
COMMENT ON COLUMN billiards_ods.site_tables_master.delay_lights_time IS '对应JSON字段:delay_lights_time,说明:(推测):台灯熄灭延迟时间(单位多半是秒或分钟),用于结账后延时关灯。,示例值及对应分析:本门店未启用延迟关灯功能(全部为 0)。';
|
||
COMMENT ON COLUMN billiards_ods.site_tables_master.is_online_reservation IS '对应JSON字段:is_online_reservation,说明:(结合值分布推断):,示例值及对应分析:1:允许线上预约(可在小程序/线上平台预约这张台);';
|
||
COMMENT ON COLUMN billiards_ods.site_tables_master.is_rest_area IS '对应JSON字段:is_rest_area,说明:(推测):,示例值及对应分析:0:正常计费区域;';
|
||
COMMENT ON COLUMN billiards_ods.site_tables_master.light_status IS '对应JSON字段:light_status,说明:(结合命名推断):,示例值及对应分析:该字段是台灯/灯光状态开关位:';
|
||
COMMENT ON COLUMN billiards_ods.site_tables_master.only_allow_groupon IS '对应JSON字段:only_allow_groupon,说明:(结合命名推断):,示例值及对应分析:1:仅允许团购/券预约使用(团购专用台);';
|
||
COMMENT ON COLUMN billiards_ods.site_tables_master.order_delay_time IS '对应JSON字段:order_delay_time,说明:(推测):订单层面允许的“自动延时时长”(例如到点后自动延长多少时间继续计费)。,示例值及对应分析:本门店未使用此功能。';
|
||
COMMENT ON COLUMN billiards_ods.site_tables_master.self_table IS '对应JSON字段:self_table,说明:(推测):,示例值及对应分析:1:“本门店自有台”,非共享或外部配置;';
|
||
COMMENT ON COLUMN billiards_ods.site_tables_master.show_status IS '对应JSON字段:show_status,说明:(推测):,示例值及对应分析:1:正常在前台“开台列表”中展示;';
|
||
COMMENT ON COLUMN billiards_ods.site_tables_master.site_table_area_id IS '对应JSON字段:site_table_area_id,说明::门店维度的“台桌区域 ID”。,示例值及对应分析:关系:';
|
||
COMMENT ON COLUMN billiards_ods.site_tables_master.tableStatusName IS '对应JSON字段:tableStatusName,说明::table_status 的中文名称,仅为展示用途。,示例值及对应分析:?? site_tables_master-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.site_tables_master.table_cloth_use_Cycle IS '对应JSON字段:table_cloth_use_Cycle,说明:(推测):,示例值及对应分析:台呢使用周期阈值,例如达到某个秒数后提醒更换;';
|
||
COMMENT ON COLUMN billiards_ods.site_tables_master.table_cloth_use_time IS '对应JSON字段:table_cloth_use_time,说明:(结合命名和数值特征):,示例值及对应分析:台呢使用累计时长,单位极大概率为“秒”:';
|
||
COMMENT ON COLUMN billiards_ods.site_tables_master.table_name IS '对应JSON字段:table_name,说明::台号/台名称,用于前台操作界面展示,也出现在小票和各种流水中的 ledger_name 或 tableName 字段。,示例值及对应分析:?? site_tables_master-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.site_tables_master.table_price IS '对应JSON字段:table_price,说明:(结构角度):,示例值及对应分析:设计上应为“台的基础单价”字段(例如按小时或按局单价);';
|
||
COMMENT ON COLUMN billiards_ods.site_tables_master.table_status IS '对应JSON字段:table_status,说明::台当前运行状态,真实反映某一时刻台的占用/暂停情况。,示例值及对应分析:?? site_tables_master-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.site_tables_master.temporary_light_second IS '对应JSON字段:temporary_light_second,说明:(推测):临时点灯时长(秒),例如手动临时开灯一段时间。,示例值及对应分析:本门店未使用。';
|
||
COMMENT ON COLUMN billiards_ods.site_tables_master.virtual_table IS '对应JSON字段:virtual_table,说明:(推测):,示例值及对应分析:0:物理台(实体存在的桌);';
|
||
COMMENT ON COLUMN billiards_ods.site_tables_master.source_file IS '对应JSON字段:source_file,说明:原始文件名(含时间戳后缀),示例值及对应分析:???????';
|
||
COMMENT ON COLUMN billiards_ods.site_tables_master.source_endpoint IS '对应JSON字段:source_endpoint,说明:抓取来源接口/URL 标识,示例值及对应分析:???????';
|
||
COMMENT ON COLUMN billiards_ods.site_tables_master.fetched_at IS '对应JSON字段:fetched_at,说明:入库时间(ETL 拉取时间),示例值及对应分析:???????';
|
||
COMMENT ON COLUMN billiards_ods.site_tables_master.payload IS '对应JSON字段:payload,说明:完整原始 JSON 内容,示例值及对应分析:???????';
|
||
|
||
CREATE TABLE IF NOT EXISTS billiards_ods.table_fee_discount_records (
|
||
id BIGINT PRIMARY KEY,
|
||
tenant_id BIGINT,
|
||
site_id BIGINT,
|
||
siteProfile JSONB,
|
||
site_table_id BIGINT,
|
||
tableProfile JSONB,
|
||
tenant_table_area_id BIGINT,
|
||
adjust_type INT,
|
||
ledger_amount NUMERIC(18,2),
|
||
ledger_count NUMERIC(18,4),
|
||
ledger_name TEXT,
|
||
ledger_status INT,
|
||
applicant_id BIGINT,
|
||
applicant_name TEXT,
|
||
operator_id BIGINT,
|
||
operator_name TEXT,
|
||
order_settle_id BIGINT,
|
||
order_trade_no TEXT,
|
||
is_delete INT,
|
||
create_time TIMESTAMP,
|
||
source_file TEXT,
|
||
source_endpoint TEXT,
|
||
fetched_at TIMESTAMPTZ DEFAULT now(),
|
||
payload JSONB NOT NULL
|
||
);
|
||
|
||
COMMENT ON TABLE billiards_ods.table_fee_discount_records IS '对应JSON字段:table_fee_discount_records.json,说明:ODS 原始明细表(保留payload),示例值及对应分析:详见 table_fee_discount_records-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.table_fee_discount_records.id IS '对应JSON字段:id,说明::台费打折 / 调整流水主键 ID。,示例值及对应分析:作用:在“台费调账表”中唯一标识一条折扣/调账操作。';
|
||
COMMENT ON COLUMN billiards_ods.table_fee_discount_records.tenant_id IS '对应JSON字段:tenant_id,说明::租户/品牌 ID。,示例值及对应分析:作用:标识记录属于哪一个商户(同一个“非球科技”租户)。';
|
||
COMMENT ON COLUMN billiards_ods.table_fee_discount_records.site_id IS '对应JSON字段:site_id,说明::门店 ID,本批数据全部为同一家门店(朗朗桌球)。,示例值及对应分析:关联:';
|
||
COMMENT ON COLUMN billiards_ods.table_fee_discount_records.siteProfile IS '对应JSON字段:siteProfile,说明::门店信息快照,用于报表时直接读取,无需再联门店档案。,示例值及对应分析:?? table_fee_discount_records-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.table_fee_discount_records.site_table_id IS '对应JSON字段:site_table_id,说明::台桌 ID。,示例值及对应分析:关联:';
|
||
COMMENT ON COLUMN billiards_ods.table_fee_discount_records.tableProfile IS '对应JSON字段:tableProfile,说明::折扣发生时,对应台桌的配置信息快照。,示例值及对应分析:?? table_fee_discount_records-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.table_fee_discount_records.tenant_table_area_id IS '对应JSON字段:tenant_table_area_id,说明::租户维度的“台桌区域 ID”。,示例值及对应分析:关联:';
|
||
COMMENT ON COLUMN billiards_ods.table_fee_discount_records.adjust_type IS '对应JSON字段:adjust_type,说明:(根据文件含义 + 命名 + 数据):,示例值及对应分析:文件名是“台费打折”,字段名为“调整类型”,当前所有记录都是 1,即“台费打折/台费减免”这一种调整类型。';
|
||
COMMENT ON COLUMN billiards_ods.table_fee_discount_records.ledger_amount IS '对应JSON字段:ledger_amount,说明:(关键点):,示例值及对应分析:通过与 台费流水.json 做对比,可以明确:';
|
||
COMMENT ON COLUMN billiards_ods.table_fee_discount_records.ledger_count IS '对应JSON字段:ledger_count,说明::,示例值及对应分析:这里不是“秒数”,而是“调整次数/条数”的量化,目前固定为 1,表示“一次调账事件”。';
|
||
COMMENT ON COLUMN billiards_ods.table_fee_discount_records.ledger_name IS '对应JSON字段:ledger_name,说明:(推测):,示例值及对应分析:设计上应该用于记录“调账项目名称”或“打折原因描述”(例如某种优惠规则名称),但当前门店并未使用该字段。';
|
||
COMMENT ON COLUMN billiards_ods.table_fee_discount_records.ledger_status IS '对应JSON字段:ledger_status,说明::,示例值及对应分析:1:生效调整(当前有效的台费打折 / 调账记录);';
|
||
COMMENT ON COLUMN billiards_ods.table_fee_discount_records.applicant_id IS '对应JSON字段:applicant_id,说明::打折/调账申请人 ID。,示例值及对应分析:作用:记录谁发起了这次台费调整。 本时段内所有调整均由同一位员工发起。';
|
||
COMMENT ON COLUMN billiards_ods.table_fee_discount_records.applicant_name IS '对应JSON字段:applicant_name,说明::申请人姓名(带角色描述),为 applicant_id 的冗余显示字段。,示例值及对应分析:?? table_fee_discount_records-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.table_fee_discount_records.operator_id IS '对应JSON字段:operator_id,说明::实际执行调账操作的操作员 ID。,示例值及对应分析:说明:这段时间内,“申请人”和“操作员”是同一个人。';
|
||
COMMENT ON COLUMN billiards_ods.table_fee_discount_records.operator_name IS '对应JSON字段:operator_name,说明::操作员姓名。,示例值及对应分析:?? table_fee_discount_records-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.table_fee_discount_records.order_settle_id IS '对应JSON字段:order_settle_id,说明::结算单/小票 ID。,示例值及对应分析:关联:';
|
||
COMMENT ON COLUMN billiards_ods.table_fee_discount_records.order_trade_no IS '对应JSON字段:order_trade_no,说明::订单交易号。,示例值及对应分析:关联:';
|
||
COMMENT ON COLUMN billiards_ods.table_fee_discount_records.is_delete IS '对应JSON字段:is_delete,说明::逻辑删除标志:,示例值及对应分析:0:未删除(有效记录);';
|
||
COMMENT ON COLUMN billiards_ods.table_fee_discount_records.create_time IS '对应JSON字段:create_time,说明::台费调整记录的创建时间,即打折操作被执行的时间戳。,示例值及对应分析:说明:与台费流水中的 create_time(结算时间)相互配合,可以还原调整发生于结账之前还是之后。';
|
||
COMMENT ON COLUMN billiards_ods.table_fee_discount_records.source_file IS '对应JSON字段:source_file,说明:原始文件名(含时间戳后缀),示例值及对应分析:???????';
|
||
COMMENT ON COLUMN billiards_ods.table_fee_discount_records.source_endpoint IS '对应JSON字段:source_endpoint,说明:抓取来源接口/URL 标识,示例值及对应分析:???????';
|
||
COMMENT ON COLUMN billiards_ods.table_fee_discount_records.fetched_at IS '对应JSON字段:fetched_at,说明:入库时间(ETL 拉取时间),示例值及对应分析:???????';
|
||
COMMENT ON COLUMN billiards_ods.table_fee_discount_records.payload IS '对应JSON字段:payload,说明:完整原始 JSON 内容,示例值及对应分析:???????';
|
||
|
||
CREATE TABLE IF NOT EXISTS billiards_ods.table_fee_transactions (
|
||
id BIGINT PRIMARY KEY,
|
||
tenant_id BIGINT,
|
||
site_id BIGINT,
|
||
siteProfile JSONB,
|
||
site_table_id BIGINT,
|
||
site_table_area_id BIGINT,
|
||
site_table_area_name TEXT,
|
||
tenant_table_area_id BIGINT,
|
||
order_trade_no TEXT,
|
||
order_pay_id BIGINT,
|
||
order_settle_id BIGINT,
|
||
ledger_name TEXT,
|
||
ledger_amount NUMERIC(18,2),
|
||
ledger_count NUMERIC(18,4),
|
||
ledger_unit_price NUMERIC(18,4),
|
||
ledger_status INT,
|
||
ledger_start_time TIMESTAMP,
|
||
ledger_end_time TIMESTAMP,
|
||
start_use_time TIMESTAMP,
|
||
last_use_time TIMESTAMP,
|
||
real_table_use_seconds INT,
|
||
real_table_charge_money NUMERIC(18,2),
|
||
add_clock_seconds INT,
|
||
adjust_amount NUMERIC(18,2),
|
||
coupon_promotion_amount NUMERIC(18,2),
|
||
member_discount_amount NUMERIC(18,2),
|
||
used_card_amount NUMERIC(18,2),
|
||
mgmt_fee NUMERIC(18,2),
|
||
service_money NUMERIC(18,2),
|
||
fee_total NUMERIC(18,2),
|
||
is_single_order INT,
|
||
is_delete INT,
|
||
member_id BIGINT,
|
||
operator_id BIGINT,
|
||
operator_name TEXT,
|
||
salesman_name TEXT,
|
||
salesman_org_id BIGINT,
|
||
salesman_user_id BIGINT,
|
||
create_time TIMESTAMP,
|
||
payload JSONB NOT NULL,
|
||
source_file TEXT,
|
||
source_endpoint TEXT,
|
||
fetched_at TIMESTAMPTZ DEFAULT now()
|
||
);
|
||
|
||
COMMENT ON TABLE billiards_ods.table_fee_transactions IS '对应JSON字段:table_fee_transactions.json,说明:ODS 原始明细表(保留payload),示例值及对应分析:详见 table_fee_transactions-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.table_fee_transactions.id IS '对应JSON字段:id,说明::台费流水记录主键(事实表主键)。,示例值及对应分析:?? table_fee_transactions-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.table_fee_transactions.tenant_id IS '对应JSON字段:tenant_id,说明::租户/品牌 ID。本文件所有记录都属于同一租户。,示例值及对应分析:关联:与所有其它 JSON 中的 tenant_id 一致,用于跨表做“商户维度”的过滤。';
|
||
COMMENT ON COLUMN billiards_ods.table_fee_transactions.site_id IS '对应JSON字段:site_id,说明::门店 ID,本次数据全部来自同一门店(朗朗桌球)。,示例值及对应分析:关联:';
|
||
COMMENT ON COLUMN billiards_ods.table_fee_transactions.siteProfile IS '对应JSON字段:siteProfile,说明::当前门店的完整档案快照,冗余到流水表中,便于报表直接读取而无需再联表门店档案。,示例值及对应分析:三、与其它 JSON 的结构关联关系(从字段层面)';
|
||
COMMENT ON COLUMN billiards_ods.table_fee_transactions.site_table_id IS '对应JSON字段:site_table_id,说明::球台 ID。,示例值及对应分析:关联:';
|
||
COMMENT ON COLUMN billiards_ods.table_fee_transactions.site_table_area_id IS '对应JSON字段:site_table_area_id,说明::门店内“台桌区域” ID(站在门店物理布局的角度)。,示例值及对应分析:关联:';
|
||
COMMENT ON COLUMN billiards_ods.table_fee_transactions.site_table_area_name IS '对应JSON字段:site_table_area_name,说明::台桌区域的名称,用于门店表现和区域统计。,示例值及对应分析:4. 会员维度与相关字段';
|
||
COMMENT ON COLUMN billiards_ods.table_fee_transactions.tenant_table_area_id IS '对应JSON字段:tenant_table_area_id,说明::租户维度的台桌区域 ID(品牌层面的同一类区域)。,示例值及对应分析:关联:';
|
||
COMMENT ON COLUMN billiards_ods.table_fee_transactions.order_trade_no IS '对应JSON字段:order_trade_no,说明::订单交易号,是整笔订单的主编号。,示例值及对应分析:关联:';
|
||
COMMENT ON COLUMN billiards_ods.table_fee_transactions.order_pay_id IS '对应JSON字段:order_pay_id,说明::订单支付记录 ID。,示例值及对应分析:关联:';
|
||
COMMENT ON COLUMN billiards_ods.table_fee_transactions.order_settle_id IS '对应JSON字段:order_settle_id,说明::结算单号/结账 ID,对应一次结账操作。,示例值及对应分析:关联:';
|
||
COMMENT ON COLUMN billiards_ods.table_fee_transactions.ledger_name IS '对应JSON字段:ledger_name,说明::台号名称,实际展示给员工/顾客看的桌台编号。,示例值及对应分析:备注:与 site_table_id 一一对应,是桌台维表中的名称字段冗余到流水里的快照。';
|
||
COMMENT ON COLUMN billiards_ods.table_fee_transactions.ledger_amount IS '对应JSON字段:ledger_amount,说明::按单价与计费时长计算出的原始应收台费金额。,示例值及对应分析:近似关系:ledger_amount ≈ ledger_unit_price × ledger_count / 3600,考虑到四舍五入会有小数差。';
|
||
COMMENT ON COLUMN billiards_ods.table_fee_transactions.ledger_count IS '对应JSON字段:ledger_count,说明::台账记录的计费秒数,计费用秒数(应收时长)。,示例值及对应分析:特点:';
|
||
COMMENT ON COLUMN billiards_ods.table_fee_transactions.ledger_unit_price IS '对应JSON字段:ledger_unit_price,说明::台费结算时设置的 每小时单价/计费单价。,示例值及对应分析:用途:与 ledger_count 共同决定原始应收额。';
|
||
COMMENT ON COLUMN billiards_ods.table_fee_transactions.ledger_status IS '对应JSON字段:ledger_status,说明:(推测):,示例值及对应分析:1:正常已结算台费;';
|
||
COMMENT ON COLUMN billiards_ods.table_fee_transactions.ledger_start_time IS '对应JSON字段:ledger_start_time,说明::台账上的计费起始时间。,示例值及对应分析:关系:';
|
||
COMMENT ON COLUMN billiards_ods.table_fee_transactions.ledger_end_time IS '对应JSON字段:ledger_end_time,说明::台账上的计费结束时间。,示例值及对应分析:关系:';
|
||
COMMENT ON COLUMN billiards_ods.table_fee_transactions.start_use_time IS '对应JSON字段:start_use_time,说明::台开始使用的时间(实际开台时间)。,示例值及对应分析:特点:在数据中,与 ledger_start_time 完全相同(见下)。';
|
||
COMMENT ON COLUMN billiards_ods.table_fee_transactions.last_use_time IS '对应JSON字段:last_use_time,说明::最后使用/操作时间。,示例值及对应分析:特点:';
|
||
COMMENT ON COLUMN billiards_ods.table_fee_transactions.real_table_use_seconds IS '对应JSON字段:real_table_use_seconds,说明::实际使用的总秒数(系统真实统计的使用时长)。,示例值及对应分析:关系:';
|
||
COMMENT ON COLUMN billiards_ods.table_fee_transactions.real_table_charge_money IS '对应JSON字段:real_table_charge_money,说明::台费中实际向顾客收取的金额(现金/实付维度,未含券方承担或内部调账的那一部分)。,示例值及对应分析:特点:';
|
||
COMMENT ON COLUMN billiards_ods.table_fee_transactions.add_clock_seconds IS '对应JSON字段:add_clock_seconds,说明::加钟秒数,在原有使用基础上追加的时长。,示例值及对应分析:观测:';
|
||
COMMENT ON COLUMN billiards_ods.table_fee_transactions.adjust_amount IS '对应JSON字段:adjust_amount,说明::调整金额/调账金额,用于将台费金额转移或冲减到其它项目,或手工调整。,示例值及对应分析:特点:';
|
||
COMMENT ON COLUMN billiards_ods.table_fee_transactions.coupon_promotion_amount IS '对应JSON字段:coupon_promotion_amount,说明::由优惠券/活动/团购(平台/门店促销)承担的优惠金额,直接抵扣在台费上。,示例值及对应分析:特点:当 real_table_charge_money = 0 且该字段为 ledger_amount 时,说明整笔台费是由券促销全额承担。';
|
||
COMMENT ON COLUMN billiards_ods.table_fee_transactions.member_discount_amount IS '对应JSON字段:member_discount_amount,说明:上文已说明,这里补充与金额的结构关系:,示例值及对应分析:功能:表示由会员折扣或会员权益承担的那部分金额。';
|
||
COMMENT ON COLUMN billiards_ods.table_fee_transactions.used_card_amount IS '对应JSON字段:used_card_amount,说明::由储值卡、次卡等“卡内余额”抵扣的金额。,示例值及对应分析:说明:字段设计已预留,但本段时间内台费没有通过储值卡扣款,或者卡扣款在其他表体现。';
|
||
COMMENT ON COLUMN billiards_ods.table_fee_transactions.mgmt_fee IS '对应JSON字段:mgmt_fee,说明:(推测):管理费字段,用于未来支持“台费附加管理费/服务费”的功能。,示例值及对应分析:当前未启用。';
|
||
COMMENT ON COLUMN billiards_ods.table_fee_transactions.service_money IS '对应JSON字段:service_money,说明:(推测):门店用于记录“服务费/成本/分成金额”的字段,类似助教流水里的 service_money。,示例值及对应分析:说明:当前门店未启用此字段结算台费。';
|
||
COMMENT ON COLUMN billiards_ods.table_fee_transactions.fee_total IS '对应JSON字段:fee_total,说明::各种附加费用(如管理费、服务费)合计值。,示例值及对应分析:说明:和 mgmt_fee 一样,目前作为预留字段,没有实际使用。';
|
||
COMMENT ON COLUMN billiards_ods.table_fee_transactions.is_single_order IS '对应JSON字段:is_single_order,说明:(推测):,示例值及对应分析:1:该台费记录对应的是一个独立计费单元(单独结算的桌费);';
|
||
COMMENT ON COLUMN billiards_ods.table_fee_transactions.is_delete IS '对应JSON字段:is_delete,说明::逻辑删除标志:,示例值及对应分析:0:未删除(有效记录);';
|
||
COMMENT ON COLUMN billiards_ods.table_fee_transactions.member_id IS '对应JSON字段:member_id,说明::门店/租户内的会员 ID。,示例值及对应分析:关联:';
|
||
COMMENT ON COLUMN billiards_ods.table_fee_transactions.operator_id IS '对应JSON字段:operator_id,说明::操作员 ID,负责开台/结账的员工账号 ID。,示例值及对应分析:关联:与员工/账号体系中的用户 ID 对应(与助教账号的 user_id 属于同一种 ID 体系)。';
|
||
COMMENT ON COLUMN billiards_ods.table_fee_transactions.operator_name IS '对应JSON字段:operator_name,说明::操作员姓名(冗余字段),便于直接阅读,不必再联表员工档案。,示例值及对应分析:?? table_fee_transactions-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.table_fee_transactions.salesman_name IS '对应JSON字段:salesman_name,说明::业务员/营业员姓名,如果台费有单独提成员工,这里记录归属人。,示例值及对应分析:当前门店未启用该字段做提成归属。';
|
||
COMMENT ON COLUMN billiards_ods.table_fee_transactions.salesman_org_id IS '对应JSON字段:salesman_org_id,说明::营业员所属机构/部门 ID。,示例值及对应分析:8. 状态 / 标记类字段';
|
||
COMMENT ON COLUMN billiards_ods.table_fee_transactions.salesman_user_id IS '对应JSON字段:salesman_user_id,说明::营业员的用户 ID(与 salesman_name 搭配)。,示例值及对应分析:?? table_fee_transactions-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.table_fee_transactions.create_time IS '对应JSON字段:create_time,说明::这条台费流水记录的创建时间,通常接近结账时间。,示例值及对应分析:?? table_fee_transactions-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.table_fee_transactions.payload IS '对应JSON字段:payload,说明:完整原始 JSON 内容,示例值及对应分析:???????';
|
||
COMMENT ON COLUMN billiards_ods.table_fee_transactions.source_file IS '对应JSON字段:source_file,说明:原始文件名(含时间戳后缀),示例值及对应分析:???????';
|
||
COMMENT ON COLUMN billiards_ods.table_fee_transactions.source_endpoint IS '对应JSON字段:source_endpoint,说明:抓取来源接口/URL 标识,示例值及对应分析:???????';
|
||
COMMENT ON COLUMN billiards_ods.table_fee_transactions.fetched_at IS '对应JSON字段:fetched_at,说明:入库时间(ETL 拉取时间),示例值及对应分析:???????';
|
||
|
||
CREATE TABLE IF NOT EXISTS billiards_ods.goods_stock_movements (
|
||
siteGoodsStockId BIGINT PRIMARY KEY,
|
||
tenantId BIGINT,
|
||
siteId BIGINT,
|
||
siteGoodsId BIGINT,
|
||
goodsName TEXT,
|
||
goodsCategoryId BIGINT,
|
||
goodsSecondCategoryId BIGINT,
|
||
unit TEXT,
|
||
price NUMERIC(18,4),
|
||
stockType INT,
|
||
changeNum NUMERIC(18,4),
|
||
startNum NUMERIC(18,4),
|
||
endNum NUMERIC(18,4),
|
||
changeNumA NUMERIC(18,4),
|
||
startNumA NUMERIC(18,4),
|
||
endNumA NUMERIC(18,4),
|
||
remark TEXT,
|
||
operatorName TEXT,
|
||
createTime TIMESTAMP,
|
||
source_file TEXT,
|
||
source_endpoint TEXT,
|
||
fetched_at TIMESTAMPTZ DEFAULT now(),
|
||
payload JSONB NOT NULL
|
||
);
|
||
|
||
COMMENT ON TABLE billiards_ods.goods_stock_movements IS '对应JSON字段:goods_stock_movements.json,说明:ODS 原始明细表(保留payload),示例值及对应分析:详见 goods_stock_movements-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.goods_stock_movements.siteGoodsStockId IS '对应JSON字段:siteGoodsStockId,说明::门店某个“商品库存记录”的主键 ID。,示例值及对应分析:特点:每条库存变动记录对应一个 siteGoodsStockId,同一个商品可能在不同库存记录中出现(例如不同仓位或不同批次)。';
|
||
COMMENT ON COLUMN billiards_ods.goods_stock_movements.tenantId IS '对应JSON字段:tenantId,说明::租户/品牌 ID。,示例值及对应分析:观测:全部记录相同值,说明属于同一商户。';
|
||
COMMENT ON COLUMN billiards_ods.goods_stock_movements.siteId IS '对应JSON字段:siteId,说明::门店 ID。,示例值及对应分析:观测:本文件中所有记录的 siteId 都相同,对应“朗朗桌球”这家门店。';
|
||
COMMENT ON COLUMN billiards_ods.goods_stock_movements.siteGoodsId IS '对应JSON字段:siteGoodsId,说明::门店维度的商品 ID。,示例值及对应分析:特点:';
|
||
COMMENT ON COLUMN billiards_ods.goods_stock_movements.goodsName IS '对应JSON字段:goodsName,说明::商品名称。,示例值及对应分析:示例值:';
|
||
COMMENT ON COLUMN billiards_ods.goods_stock_movements.goodsCategoryId IS '对应JSON字段:goodsCategoryId,说明::商品一级分类 ID。,示例值及对应分析:观测:当前 100 条样本中约有 5 个不同 ID,对应如“酒水类”“食品小吃类”“香烟类”等大类(仅从命名与商品名推断)。';
|
||
COMMENT ON COLUMN billiards_ods.goods_stock_movements.goodsSecondCategoryId IS '对应JSON字段:goodsSecondCategoryId,说明::商品二级分类 ID。,示例值及对应分析:观测:样本中约有 7 个不同 ID,如饮料中的“矿泉水/功能饮料/碳酸饮料”等。';
|
||
COMMENT ON COLUMN billiards_ods.goods_stock_movements.unit IS '对应JSON字段:unit,说明::库存计量单位。,示例值及对应分析:说明:库存数量(startNum、endNum、changeNum)均以这里的单位计数。';
|
||
COMMENT ON COLUMN billiards_ods.goods_stock_movements.price IS '对应JSON字段:price,说明::商品单价(单位金额)。,示例值及对应分析:观测特征:';
|
||
COMMENT ON COLUMN billiards_ods.goods_stock_movements.stockType IS '对应JSON字段:stockType,说明:(基于数据行为推断):,示例值及对应分析:1:出库类变动 典型情况是销售出库,库存减少 1 或 2;例如顾客点了一瓶饮料,对应一条 stockType=1, changeNum=-1 的记录。';
|
||
COMMENT ON COLUMN billiards_ods.goods_stock_movements.changeNum IS '对应JSON字段:changeNum,说明::本次库存数量变化值。,示例值及对应分析:特点及取值:';
|
||
COMMENT ON COLUMN billiards_ods.goods_stock_movements.startNum IS '对应JSON字段:startNum,说明::变动前(这次出入库之前)的库存数量。,示例值及对应分析:示例: 如记录:startNum = 28, changeNum = -1, endNum = 27。';
|
||
COMMENT ON COLUMN billiards_ods.goods_stock_movements.endNum IS '对应JSON字段:endNum,说明::变动后(出入库之后)的库存数量。,示例值及对应分析:结构关系:';
|
||
COMMENT ON COLUMN billiards_ods.goods_stock_movements.changeNumA IS '对应JSON字段:changeNumA,说明::辅助单位的变化量(与 changeNum 对应的第二计量单位变化),当前未使用。,示例值及对应分析:结论: startNumA / endNumA / changeNumA 是为“一个商品有两种计量单位(如箱与瓶)”而设计的预留字段。 目前门店只在单一单位层面管理库存,故全部为 0。';
|
||
COMMENT ON COLUMN billiards_ods.goods_stock_movements.startNumA IS '对应JSON字段:startNumA,说明:(推测):辅助计量单位的起始库存(例如件/箱等第二单位)。,示例值及对应分析:当前门店在样本时间段内没有启用多单位库存管理,因此全部为 0。';
|
||
COMMENT ON COLUMN billiards_ods.goods_stock_movements.endNumA IS '对应JSON字段:endNumA,说明::辅助单位的变动后库存,同样未启用。,示例值及对应分析:?? goods_stock_movements-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.goods_stock_movements.remark IS '对应JSON字段:remark,说明::备注信息,用于手工记录本次变更的特殊原因说明(例如“盘点差异调整”“报损”)。,示例值及对应分析:当前样本中没有填入任何备注,但字段已预留,适用于盘点或手工调整场景。';
|
||
COMMENT ON COLUMN billiards_ods.goods_stock_movements.operatorName IS '对应JSON字段:operatorName,说明::执行此次库存变动的操作人。,示例值及对应分析:观测值:';
|
||
COMMENT ON COLUMN billiards_ods.goods_stock_movements.createTime IS '对应JSON字段:createTime,说明::这条库存变动记录的创建时间,即发生库存变更的时间点。,示例值及对应分析:特点:';
|
||
COMMENT ON COLUMN billiards_ods.goods_stock_movements.source_file IS '对应JSON字段:source_file,说明:原始文件名(含时间戳后缀),示例值及对应分析:???????';
|
||
COMMENT ON COLUMN billiards_ods.goods_stock_movements.source_endpoint IS '对应JSON字段:source_endpoint,说明:抓取来源接口/URL 标识,示例值及对应分析:???????';
|
||
COMMENT ON COLUMN billiards_ods.goods_stock_movements.fetched_at IS '对应JSON字段:fetched_at,说明:入库时间(ETL 拉取时间),示例值及对应分析:???????';
|
||
COMMENT ON COLUMN billiards_ods.goods_stock_movements.payload IS '对应JSON字段:payload,说明:完整原始 JSON 内容,示例值及对应分析:???????';
|
||
|
||
CREATE TABLE IF NOT EXISTS billiards_ods.stock_goods_category_tree (
|
||
id BIGINT PRIMARY KEY,
|
||
tenant_id BIGINT,
|
||
category_name TEXT,
|
||
alias_name TEXT,
|
||
pid BIGINT,
|
||
business_name TEXT,
|
||
tenant_goods_business_id BIGINT,
|
||
open_salesman INT,
|
||
categoryBoxes JSONB,
|
||
sort INT,
|
||
is_warehousing INT,
|
||
source_file TEXT,
|
||
source_endpoint TEXT,
|
||
fetched_at TIMESTAMPTZ DEFAULT now(),
|
||
payload JSONB NOT NULL
|
||
);
|
||
|
||
COMMENT ON TABLE billiards_ods.stock_goods_category_tree IS '对应JSON字段:stock_goods_category_tree.json,说明:ODS 原始明细表(保留payload),示例值及对应分析:详见 stock_goods_category_tree-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.stock_goods_category_tree.id IS '对应JSON字段:id,说明:?????? stock_goods_category_tree-Analysis.md,示例值及对应分析:?? stock_goods_category_tree-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.stock_goods_category_tree.tenant_id IS '对应JSON字段:tenant_id,说明:?????? stock_goods_category_tree-Analysis.md,示例值及对应分析:?? stock_goods_category_tree-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.stock_goods_category_tree.category_name IS '对应JSON字段:category_name,说明:?????? stock_goods_category_tree-Analysis.md,示例值及对应分析:?? stock_goods_category_tree-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.stock_goods_category_tree.alias_name IS '对应JSON字段:alias_name,说明:?????? stock_goods_category_tree-Analysis.md,示例值及对应分析:?? stock_goods_category_tree-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.stock_goods_category_tree.pid IS '对应JSON字段:pid,说明:?????? stock_goods_category_tree-Analysis.md,示例值及对应分析:?? stock_goods_category_tree-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.stock_goods_category_tree.business_name IS '对应JSON字段:business_name,说明:?????? stock_goods_category_tree-Analysis.md,示例值及对应分析:?? stock_goods_category_tree-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.stock_goods_category_tree.tenant_goods_business_id IS '对应JSON字段:tenant_goods_business_id,说明:?????? stock_goods_category_tree-Analysis.md,示例值及对应分析:?? stock_goods_category_tree-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.stock_goods_category_tree.open_salesman IS '对应JSON字段:open_salesman,说明:?????? stock_goods_category_tree-Analysis.md,示例值及对应分析:?? stock_goods_category_tree-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.stock_goods_category_tree.categoryBoxes IS '对应JSON字段:categoryBoxes,说明:?????? stock_goods_category_tree-Analysis.md,示例值及对应分析:?? stock_goods_category_tree-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.stock_goods_category_tree.sort IS '对应JSON字段:sort,说明:?????? stock_goods_category_tree-Analysis.md,示例值及对应分析:?? stock_goods_category_tree-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.stock_goods_category_tree.is_warehousing IS '对应JSON字段:is_warehousing,说明::分类节点主键 ID(在商品分类维度中的唯一标识)。,示例值及对应分析:特征:';
|
||
COMMENT ON COLUMN billiards_ods.stock_goods_category_tree.source_file IS '对应JSON字段:source_file,说明:原始文件名(含时间戳后缀),示例值及对应分析:???????';
|
||
COMMENT ON COLUMN billiards_ods.stock_goods_category_tree.source_endpoint IS '对应JSON字段:source_endpoint,说明:抓取来源接口/URL 标识,示例值及对应分析:???????';
|
||
COMMENT ON COLUMN billiards_ods.stock_goods_category_tree.fetched_at IS '对应JSON字段:fetched_at,说明:入库时间(ETL 拉取时间),示例值及对应分析:???????';
|
||
COMMENT ON COLUMN billiards_ods.stock_goods_category_tree.payload IS '对应JSON字段:payload,说明:完整原始 JSON 内容,示例值及对应分析:???????';
|
||
|
||
CREATE TABLE IF NOT EXISTS billiards_ods.goods_stock_summary (
|
||
siteGoodsId BIGINT PRIMARY KEY,
|
||
goodsName TEXT,
|
||
goodsUnit TEXT,
|
||
goodsCategoryId BIGINT,
|
||
goodsCategorySecondId BIGINT,
|
||
categoryName TEXT,
|
||
rangeStartStock NUMERIC(18,4),
|
||
rangeEndStock NUMERIC(18,4),
|
||
rangeIn NUMERIC(18,4),
|
||
rangeOut NUMERIC(18,4),
|
||
rangeSale NUMERIC(18,4),
|
||
rangeSaleMoney NUMERIC(18,2),
|
||
rangeInventory NUMERIC(18,4),
|
||
currentStock NUMERIC(18,4),
|
||
source_file TEXT,
|
||
source_endpoint TEXT,
|
||
fetched_at TIMESTAMPTZ DEFAULT now(),
|
||
payload JSONB NOT NULL
|
||
);
|
||
|
||
COMMENT ON TABLE billiards_ods.goods_stock_summary IS '对应JSON字段:goods_stock_summary.json,说明:ODS 原始明细表(保留payload),示例值及对应分析:详见 goods_stock_summary-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.goods_stock_summary.siteGoodsId IS '对应JSON字段:siteGoodsId,说明:?????? goods_stock_summary-Analysis.md,示例值及对应分析:?? goods_stock_summary-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.goods_stock_summary.goodsName IS '对应JSON字段:goodsName,说明:?????? goods_stock_summary-Analysis.md,示例值及对应分析:?? goods_stock_summary-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.goods_stock_summary.goodsUnit IS '对应JSON字段:goodsUnit,说明:?????? goods_stock_summary-Analysis.md,示例值及对应分析:?? goods_stock_summary-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.goods_stock_summary.goodsCategoryId IS '对应JSON字段:goodsCategoryId,说明:?????? goods_stock_summary-Analysis.md,示例值及对应分析:?? goods_stock_summary-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.goods_stock_summary.goodsCategorySecondId IS '对应JSON字段:goodsCategorySecondId,说明:?????? goods_stock_summary-Analysis.md,示例值及对应分析:?? goods_stock_summary-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.goods_stock_summary.categoryName IS '对应JSON字段:categoryName,说明:?????? goods_stock_summary-Analysis.md,示例值及对应分析:?? goods_stock_summary-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.goods_stock_summary.rangeStartStock IS '对应JSON字段:rangeStartStock,说明:?????? goods_stock_summary-Analysis.md,示例值及对应分析:?? goods_stock_summary-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.goods_stock_summary.rangeEndStock IS '对应JSON字段:rangeEndStock,说明:?????? goods_stock_summary-Analysis.md,示例值及对应分析:?? goods_stock_summary-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.goods_stock_summary.rangeIn IS '对应JSON字段:rangeIn,说明:?????? goods_stock_summary-Analysis.md,示例值及对应分析:?? goods_stock_summary-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.goods_stock_summary.rangeOut IS '对应JSON字段:rangeOut,说明:?????? goods_stock_summary-Analysis.md,示例值及对应分析:?? goods_stock_summary-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.goods_stock_summary.rangeSale IS '对应JSON字段:rangeSale,说明:?????? goods_stock_summary-Analysis.md,示例值及对应分析:?? goods_stock_summary-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.goods_stock_summary.rangeSaleMoney IS '对应JSON字段:rangeSaleMoney,说明:?????? goods_stock_summary-Analysis.md,示例值及对应分析:?? goods_stock_summary-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.goods_stock_summary.rangeInventory IS '对应JSON字段:rangeInventory,说明:?????? goods_stock_summary-Analysis.md,示例值及对应分析:?? goods_stock_summary-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.goods_stock_summary.currentStock IS '对应JSON字段:currentStock,说明:?????? goods_stock_summary-Analysis.md,示例值及对应分析:?? goods_stock_summary-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.goods_stock_summary.source_file IS '对应JSON字段:source_file,说明:原始文件名(含时间戳后缀),示例值及对应分析:???????';
|
||
COMMENT ON COLUMN billiards_ods.goods_stock_summary.source_endpoint IS '对应JSON字段:source_endpoint,说明:抓取来源接口/URL 标识,示例值及对应分析:???????';
|
||
COMMENT ON COLUMN billiards_ods.goods_stock_summary.fetched_at IS '对应JSON字段:fetched_at,说明:入库时间(ETL 拉取时间),示例值及对应分析:???????';
|
||
COMMENT ON COLUMN billiards_ods.goods_stock_summary.payload IS '对应JSON字段:payload,说明:完整原始 JSON 内容,示例值及对应分析:???????';
|
||
|
||
CREATE TABLE IF NOT EXISTS billiards_ods.payment_transactions (
|
||
id BIGINT PRIMARY KEY,
|
||
site_id BIGINT,
|
||
siteProfile JSONB,
|
||
relate_type INT,
|
||
relate_id BIGINT,
|
||
pay_amount NUMERIC(18,2),
|
||
pay_status INT,
|
||
pay_time TIMESTAMP,
|
||
create_time TIMESTAMP,
|
||
payment_method INT,
|
||
online_pay_channel INT,
|
||
source_file TEXT,
|
||
source_endpoint TEXT,
|
||
fetched_at TIMESTAMPTZ DEFAULT now(),
|
||
payload JSONB NOT NULL
|
||
);
|
||
|
||
COMMENT ON TABLE billiards_ods.payment_transactions IS '对应JSON字段:payment_transactions.json,说明:ODS 原始明细表(保留payload),示例值及对应分析:详见 payment_transactions-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.payment_transactions.id IS '对应JSON字段:id,说明:?????? payment_transactions-Analysis.md,示例值及对应分析:?? payment_transactions-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.payment_transactions.site_id IS '对应JSON字段:site_id,说明:?????? payment_transactions-Analysis.md,示例值及对应分析:?? payment_transactions-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.payment_transactions.siteProfile IS '对应JSON字段:siteProfile,说明:?????? payment_transactions-Analysis.md,示例值及对应分析:?? payment_transactions-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.payment_transactions.relate_type IS '对应JSON字段:relate_type,说明:?????? payment_transactions-Analysis.md,示例值及对应分析:?? payment_transactions-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.payment_transactions.relate_id IS '对应JSON字段:relate_id,说明:?????? payment_transactions-Analysis.md,示例值及对应分析:?? payment_transactions-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.payment_transactions.pay_amount IS '对应JSON字段:pay_amount,说明:?????? payment_transactions-Analysis.md,示例值及对应分析:?? payment_transactions-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.payment_transactions.pay_status IS '对应JSON字段:pay_status,说明:?????? payment_transactions-Analysis.md,示例值及对应分析:?? payment_transactions-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.payment_transactions.pay_time IS '对应JSON字段:pay_time,说明:?????? payment_transactions-Analysis.md,示例值及对应分析:?? payment_transactions-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.payment_transactions.create_time IS '对应JSON字段:create_time,说明:?????? payment_transactions-Analysis.md,示例值及对应分析:?? payment_transactions-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.payment_transactions.payment_method IS '对应JSON字段:payment_method,说明:?????? payment_transactions-Analysis.md,示例值及对应分析:?? payment_transactions-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.payment_transactions.online_pay_channel IS '对应JSON字段:online_pay_channel,说明:?????? payment_transactions-Analysis.md,示例值及对应分析:?? payment_transactions-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.payment_transactions.source_file IS '对应JSON字段:source_file,说明:原始文件名(含时间戳后缀),示例值及对应分析:???????';
|
||
COMMENT ON COLUMN billiards_ods.payment_transactions.source_endpoint IS '对应JSON字段:source_endpoint,说明:抓取来源接口/URL 标识,示例值及对应分析:???????';
|
||
COMMENT ON COLUMN billiards_ods.payment_transactions.fetched_at IS '对应JSON字段:fetched_at,说明:入库时间(ETL 拉取时间),示例值及对应分析:???????';
|
||
COMMENT ON COLUMN billiards_ods.payment_transactions.payload IS '对应JSON字段:payload,说明:完整原始 JSON 内容,示例值及对应分析:???????';
|
||
|
||
CREATE TABLE IF NOT EXISTS billiards_ods.refund_transactions (
|
||
id BIGINT PRIMARY KEY,
|
||
tenant_id BIGINT,
|
||
tenantName TEXT,
|
||
site_id BIGINT,
|
||
siteProfile JSONB,
|
||
relate_type INT,
|
||
relate_id BIGINT,
|
||
pay_sn TEXT,
|
||
pay_amount NUMERIC(18,2),
|
||
refund_amount NUMERIC(18,2),
|
||
round_amount NUMERIC(18,2),
|
||
pay_status INT,
|
||
pay_time TIMESTAMP,
|
||
create_time TIMESTAMP,
|
||
payment_method INT,
|
||
pay_terminal INT,
|
||
pay_config_id BIGINT,
|
||
online_pay_channel INT,
|
||
online_pay_type INT,
|
||
channel_fee NUMERIC(18,2),
|
||
channel_payer_id TEXT,
|
||
channel_pay_no TEXT,
|
||
member_id BIGINT,
|
||
member_card_id BIGINT,
|
||
cashier_point_id BIGINT,
|
||
operator_id BIGINT,
|
||
action_type INT,
|
||
check_status INT,
|
||
is_revoke INT,
|
||
is_delete INT,
|
||
balance_frozen_amount NUMERIC(18,2),
|
||
card_frozen_amount NUMERIC(18,2),
|
||
source_file TEXT,
|
||
source_endpoint TEXT,
|
||
fetched_at TIMESTAMPTZ DEFAULT now(),
|
||
payload JSONB NOT NULL
|
||
);
|
||
|
||
COMMENT ON TABLE billiards_ods.refund_transactions IS '对应JSON字段:refund_transactions.json,说明:ODS 原始明细表(保留payload),示例值及对应分析:详见 refund_transactions-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.refund_transactions.id IS '对应JSON字段:id,说明::本条 退款流水 的唯一 ID。,示例值及对应分析:特点:';
|
||
COMMENT ON COLUMN billiards_ods.refund_transactions.tenant_id IS '对应JSON字段:tenant_id,说明::租户/品牌 ID,全系统维度标识该商户。,示例值及对应分析:特点:本文件中所有记录相同。';
|
||
COMMENT ON COLUMN billiards_ods.refund_transactions.tenantName IS '对应JSON字段:tenantName,说明::租户(商户)名称。,示例值及对应分析:特点:本文件中固定为“朗朗桌球”,完全冗余于 siteProfile.shop_name。';
|
||
COMMENT ON COLUMN billiards_ods.refund_transactions.site_id IS '对应JSON字段:site_id,说明::门店 ID。,示例值及对应分析:特点:本文件中所有记录相同(单门店)。';
|
||
COMMENT ON COLUMN billiards_ods.refund_transactions.siteProfile IS '对应JSON字段:siteProfile,说明::门店信息快照,结构与其他 JSON 中的 siteProfile 完全一致。包含字段包括但不限于:,示例值及对应分析:id:门店 ID(= site_id);';
|
||
COMMENT ON COLUMN billiards_ods.refund_transactions.relate_type IS '对应JSON字段:relate_type,说明::本退款对应的“业务类型”。,示例值及对应分析:结合支付记录的 relate_type 推测:';
|
||
COMMENT ON COLUMN billiards_ods.refund_transactions.relate_id IS '对应JSON字段:relate_id,说明::本次退款关联的业务 ID。,示例值及对应分析:对于 relate_type = 2:应该对应某个订单/结算的主键;';
|
||
COMMENT ON COLUMN billiards_ods.refund_transactions.pay_sn IS '对应JSON字段:pay_sn,说明:?????? refund_transactions-Analysis.md,示例值及对应分析:?? refund_transactions-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.refund_transactions.pay_amount IS '对应JSON字段:pay_amount,说明::本次退款的 资金变动金额。,示例值及对应分析:特征很重要:';
|
||
COMMENT ON COLUMN billiards_ods.refund_transactions.refund_amount IS '对应JSON字段:refund_amount,说明:(推测):,示例值及对应分析:设计上本应显示“实际退款金额”(正数),与 pay_amount 配合使用;';
|
||
COMMENT ON COLUMN billiards_ods.refund_transactions.round_amount IS '对应JSON字段:round_amount,说明:(推测):,示例值及对应分析:舍入金额/抹零金额;';
|
||
COMMENT ON COLUMN billiards_ods.refund_transactions.pay_status IS '对应JSON字段:pay_status,说明:(推测):,示例值及对应分析:支付/退款状态枚举:';
|
||
COMMENT ON COLUMN billiards_ods.refund_transactions.pay_time IS '对应JSON字段:pay_time,说明::退款在支付渠道层面实际发生的时间。,示例值及对应分析:特点:';
|
||
COMMENT ON COLUMN billiards_ods.refund_transactions.create_time IS '对应JSON字段:create_time,说明::本条退款流水在系统内创建时间。,示例值及对应分析:特点:';
|
||
COMMENT ON COLUMN billiards_ods.refund_transactions.payment_method IS '对应JSON字段:payment_method,说明:(推测):,示例值及对应分析:支付/退款的 方式类型:';
|
||
COMMENT ON COLUMN billiards_ods.refund_transactions.pay_terminal IS '对应JSON字段:pay_terminal,说明:(推测):,示例值及对应分析:退款所使用的 终端类型:';
|
||
COMMENT ON COLUMN billiards_ods.refund_transactions.pay_config_id IS '对应JSON字段:pay_config_id,说明:(推测):,示例值及对应分析:支付配置 ID,例如商户在“非球科技”内配置的某一条支付通道(某个微信商户号、银联通道)的主键。';
|
||
COMMENT ON COLUMN billiards_ods.refund_transactions.online_pay_channel IS '对应JSON字段:online_pay_channel,说明:(推测):,示例值及对应分析:线上支付的 渠道编号,例如:';
|
||
COMMENT ON COLUMN billiards_ods.refund_transactions.online_pay_type IS '对应JSON字段:online_pay_type,说明:(推测):,示例值及对应分析:在线退款的类型:';
|
||
COMMENT ON COLUMN billiards_ods.refund_transactions.channel_fee IS '对应JSON字段:channel_fee,说明:(推测):,示例值及对应分析:第三方支付渠道对本次退款收取的手续费;';
|
||
COMMENT ON COLUMN billiards_ods.refund_transactions.channel_payer_id IS '对应JSON字段:channel_payer_id,说明:(推测):,示例值及对应分析:支付渠道侧的 payer ID,例如微信 openid、银行卡号掩码等。';
|
||
COMMENT ON COLUMN billiards_ods.refund_transactions.channel_pay_no IS '对应JSON字段:channel_pay_no,说明:(推测):,示例值及对应分析:第三方支付平台的交易号(如微信支付单号、支付宝交易号等)。';
|
||
COMMENT ON COLUMN billiards_ods.refund_transactions.member_id IS '对应JSON字段:member_id,说明::,示例值及对应分析:租户内部的会员 ID(对应会员档案中的某个主键)。';
|
||
COMMENT ON COLUMN billiards_ods.refund_transactions.member_card_id IS '对应JSON字段:member_card_id,说明::,示例值及对应分析:关联的会员卡账户 ID(对应“储值卡列表”或“会员档案”中的某一张卡)。';
|
||
COMMENT ON COLUMN billiards_ods.refund_transactions.cashier_point_id IS '对应JSON字段:cashier_point_id,说明:(推测):,示例值及对应分析:收银点 ID,例如前台 1、前台 2、自助机等。';
|
||
COMMENT ON COLUMN billiards_ods.refund_transactions.operator_id IS '对应JSON字段:operator_id,说明::,示例值及对应分析:执行该退款操作的操作员 ID。';
|
||
COMMENT ON COLUMN billiards_ods.refund_transactions.action_type IS '对应JSON字段:action_type,说明:(推测):,示例值及对应分析:行为类型:';
|
||
COMMENT ON COLUMN billiards_ods.refund_transactions.check_status IS '对应JSON字段:check_status,说明:(推测):,示例值及对应分析:审核状态:';
|
||
COMMENT ON COLUMN billiards_ods.refund_transactions.is_revoke IS '对应JSON字段:is_revoke,说明:(推测):,示例值及对应分析:是否撤销型退款/撤销原支付:';
|
||
COMMENT ON COLUMN billiards_ods.refund_transactions.is_delete IS '对应JSON字段:is_delete,说明::逻辑删除标志。,示例值及对应分析:0:未删除;';
|
||
COMMENT ON COLUMN billiards_ods.refund_transactions.balance_frozen_amount IS '对应JSON字段:balance_frozen_amount,说明:(推测):,示例值及对应分析:涉及会员储值卡退款时,暂时冻结的余额金额;';
|
||
COMMENT ON COLUMN billiards_ods.refund_transactions.card_frozen_amount IS '对应JSON字段:card_frozen_amount,说明::与上一个类似,偏向“某张卡的被冻结金额”,也与会员卡/储值账户相关。,示例值及对应分析:状态同上:本数据中未发生“卡冻结退款”。';
|
||
COMMENT ON COLUMN billiards_ods.refund_transactions.source_file IS '对应JSON字段:source_file,说明:原始文件名(含时间戳后缀),示例值及对应分析:???????';
|
||
COMMENT ON COLUMN billiards_ods.refund_transactions.source_endpoint IS '对应JSON字段:source_endpoint,说明:抓取来源接口/URL 标识,示例值及对应分析:???????';
|
||
COMMENT ON COLUMN billiards_ods.refund_transactions.fetched_at IS '对应JSON字段:fetched_at,说明:入库时间(ETL 拉取时间),示例值及对应分析:???????';
|
||
COMMENT ON COLUMN billiards_ods.refund_transactions.payload IS '对应JSON字段:payload,说明:完整原始 JSON 内容,示例值及对应分析:???????';
|
||
|
||
CREATE TABLE IF NOT EXISTS billiards_ods.platform_coupon_redemption_records (
|
||
id BIGINT PRIMARY KEY,
|
||
verify_id BIGINT,
|
||
certificate_id TEXT,
|
||
coupon_code TEXT,
|
||
coupon_name TEXT,
|
||
coupon_channel INT,
|
||
groupon_type INT,
|
||
group_package_id BIGINT,
|
||
sale_price NUMERIC(18,2),
|
||
coupon_money NUMERIC(18,2),
|
||
coupon_free_time NUMERIC(18,2),
|
||
coupon_cover TEXT,
|
||
coupon_remark TEXT,
|
||
use_status INT,
|
||
consume_time TIMESTAMP,
|
||
create_time TIMESTAMP,
|
||
deal_id TEXT,
|
||
channel_deal_id TEXT,
|
||
site_id BIGINT,
|
||
site_order_id BIGINT,
|
||
table_id BIGINT,
|
||
tenant_id BIGINT,
|
||
operator_id BIGINT,
|
||
operator_name TEXT,
|
||
is_delete INT,
|
||
siteProfile JSONB,
|
||
source_file TEXT,
|
||
source_endpoint TEXT,
|
||
fetched_at TIMESTAMPTZ DEFAULT now(),
|
||
payload JSONB NOT NULL
|
||
);
|
||
|
||
COMMENT ON TABLE billiards_ods.platform_coupon_redemption_records IS '对应JSON字段:platform_coupon_redemption_records.json,说明:ODS 原始明细表(保留payload),示例值及对应分析:详见 platform_coupon_redemption_records-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.platform_coupon_redemption_records.id IS '对应JSON字段:id,说明:?????? platform_coupon_redemption_records-Analysis.md,示例值及对应分析:?? platform_coupon_redemption_records-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.platform_coupon_redemption_records.verify_id IS '对应JSON字段:verify_id,说明:?????? platform_coupon_redemption_records-Analysis.md,示例值及对应分析:?? platform_coupon_redemption_records-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.platform_coupon_redemption_records.certificate_id IS '对应JSON字段:certificate_id,说明:?????? platform_coupon_redemption_records-Analysis.md,示例值及对应分析:?? platform_coupon_redemption_records-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.platform_coupon_redemption_records.coupon_code IS '对应JSON字段:coupon_code,说明:?????? platform_coupon_redemption_records-Analysis.md,示例值及对应分析:?? platform_coupon_redemption_records-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.platform_coupon_redemption_records.coupon_name IS '对应JSON字段:coupon_name,说明:?????? platform_coupon_redemption_records-Analysis.md,示例值及对应分析:?? platform_coupon_redemption_records-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.platform_coupon_redemption_records.coupon_channel IS '对应JSON字段:coupon_channel,说明:?????? platform_coupon_redemption_records-Analysis.md,示例值及对应分析:?? platform_coupon_redemption_records-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.platform_coupon_redemption_records.groupon_type IS '对应JSON字段:groupon_type,说明:?????? platform_coupon_redemption_records-Analysis.md,示例值及对应分析:?? platform_coupon_redemption_records-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.platform_coupon_redemption_records.group_package_id IS '对应JSON字段:group_package_id,说明:?????? platform_coupon_redemption_records-Analysis.md,示例值及对应分析:?? platform_coupon_redemption_records-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.platform_coupon_redemption_records.sale_price IS '对应JSON字段:sale_price,说明:?????? platform_coupon_redemption_records-Analysis.md,示例值及对应分析:?? platform_coupon_redemption_records-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.platform_coupon_redemption_records.coupon_money IS '对应JSON字段:coupon_money,说明:?????? platform_coupon_redemption_records-Analysis.md,示例值及对应分析:?? platform_coupon_redemption_records-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.platform_coupon_redemption_records.coupon_free_time IS '对应JSON字段:coupon_free_time,说明:?????? platform_coupon_redemption_records-Analysis.md,示例值及对应分析:?? platform_coupon_redemption_records-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.platform_coupon_redemption_records.coupon_cover IS '对应JSON字段:coupon_cover,说明:?????? platform_coupon_redemption_records-Analysis.md,示例值及对应分析:?? platform_coupon_redemption_records-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.platform_coupon_redemption_records.coupon_remark IS '对应JSON字段:coupon_remark,说明:?????? platform_coupon_redemption_records-Analysis.md,示例值及对应分析:?? platform_coupon_redemption_records-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.platform_coupon_redemption_records.use_status IS '对应JSON字段:use_status,说明:?????? platform_coupon_redemption_records-Analysis.md,示例值及对应分析:?? platform_coupon_redemption_records-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.platform_coupon_redemption_records.consume_time IS '对应JSON字段:consume_time,说明:?????? platform_coupon_redemption_records-Analysis.md,示例值及对应分析:?? platform_coupon_redemption_records-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.platform_coupon_redemption_records.create_time IS '对应JSON字段:create_time,说明:?????? platform_coupon_redemption_records-Analysis.md,示例值及对应分析:?? platform_coupon_redemption_records-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.platform_coupon_redemption_records.deal_id IS '对应JSON字段:deal_id,说明:?????? platform_coupon_redemption_records-Analysis.md,示例值及对应分析:?? platform_coupon_redemption_records-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.platform_coupon_redemption_records.channel_deal_id IS '对应JSON字段:channel_deal_id,说明:任意一个 ID 字段缺失时(如部分记录 deal_id=0),仍然可以通过其他字段(coupon_name + sale_price + coupon_money + channel_deal_id)唯一识别该产品。,示例值及对应分析:这种多字段冗余,结构上提升了抗“配置缺失”的能力。';
|
||
COMMENT ON COLUMN billiards_ods.platform_coupon_redemption_records.site_id IS '对应JSON字段:site_id,说明:?????? platform_coupon_redemption_records-Analysis.md,示例值及对应分析:?? platform_coupon_redemption_records-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.platform_coupon_redemption_records.site_order_id IS '对应JSON字段:site_order_id,说明:?????? platform_coupon_redemption_records-Analysis.md,示例值及对应分析:?? platform_coupon_redemption_records-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.platform_coupon_redemption_records.table_id IS '对应JSON字段:table_id,说明:?????? platform_coupon_redemption_records-Analysis.md,示例值及对应分析:?? platform_coupon_redemption_records-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.platform_coupon_redemption_records.tenant_id IS '对应JSON字段:tenant_id,说明:?????? platform_coupon_redemption_records-Analysis.md,示例值及对应分析:?? platform_coupon_redemption_records-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.platform_coupon_redemption_records.operator_id IS '对应JSON字段:operator_id,说明:?????? platform_coupon_redemption_records-Analysis.md,示例值及对应分析:?? platform_coupon_redemption_records-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.platform_coupon_redemption_records.operator_name IS '对应JSON字段:operator_name,说明:?????? platform_coupon_redemption_records-Analysis.md,示例值及对应分析:?? platform_coupon_redemption_records-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.platform_coupon_redemption_records.is_delete IS '对应JSON字段:is_delete,说明:?????? platform_coupon_redemption_records-Analysis.md,示例值及对应分析:?? platform_coupon_redemption_records-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.platform_coupon_redemption_records.siteProfile IS '对应JSON字段:siteProfile,说明:?????? platform_coupon_redemption_records-Analysis.md,示例值及对应分析:?? platform_coupon_redemption_records-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.platform_coupon_redemption_records.source_file IS '对应JSON字段:source_file,说明:原始文件名(含时间戳后缀),示例值及对应分析:???????';
|
||
COMMENT ON COLUMN billiards_ods.platform_coupon_redemption_records.source_endpoint IS '对应JSON字段:source_endpoint,说明:抓取来源接口/URL 标识,示例值及对应分析:???????';
|
||
COMMENT ON COLUMN billiards_ods.platform_coupon_redemption_records.fetched_at IS '对应JSON字段:fetched_at,说明:入库时间(ETL 拉取时间),示例值及对应分析:???????';
|
||
COMMENT ON COLUMN billiards_ods.platform_coupon_redemption_records.payload IS '对应JSON字段:payload,说明:完整原始 JSON 内容,示例值及对应分析:???????';
|
||
|
||
CREATE TABLE IF NOT EXISTS billiards_ods.tenant_goods_master (
|
||
id BIGINT PRIMARY KEY,
|
||
tenant_id BIGINT,
|
||
goods_name TEXT,
|
||
goods_bar_code TEXT,
|
||
goods_category_id BIGINT,
|
||
goods_second_category_id BIGINT,
|
||
categoryName TEXT,
|
||
unit TEXT,
|
||
goods_number TEXT,
|
||
goods_state INT,
|
||
sale_channel INT,
|
||
able_discount INT,
|
||
able_site_transfer INT,
|
||
is_delete INT,
|
||
is_warehousing INT,
|
||
isInSite INT,
|
||
cost_price NUMERIC(18,4),
|
||
cost_price_type INT,
|
||
market_price NUMERIC(18,4),
|
||
min_discount_price NUMERIC(18,4),
|
||
common_sale_royalty NUMERIC(18,4),
|
||
point_sale_royalty NUMERIC(18,4),
|
||
pinyin_initial TEXT,
|
||
commodityCode TEXT,
|
||
commodity_code TEXT,
|
||
goods_cover TEXT,
|
||
supplier_id BIGINT,
|
||
remark_name TEXT,
|
||
create_time TIMESTAMP,
|
||
update_time TIMESTAMP,
|
||
payload JSONB NOT NULL,
|
||
source_file TEXT,
|
||
source_endpoint TEXT,
|
||
fetched_at TIMESTAMPTZ DEFAULT now()
|
||
);
|
||
|
||
COMMENT ON TABLE billiards_ods.tenant_goods_master IS '对应JSON字段:tenant_goods_master.json,说明:ODS 原始明细表(保留payload),示例值及对应分析:详见 tenant_goods_master-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.tenant_goods_master.id IS '对应JSON字段:id,说明::商品档案主键 ID,唯一标识一条商品。,示例值及对应分析:作用:作为其他业务表(销售明细、库存流水、门店商品表等)的外键,通常以 tenant_goods_id 或类似字段出现。';
|
||
COMMENT ON COLUMN billiards_ods.tenant_goods_master.tenant_id IS '对应JSON字段:tenant_id,说明::租户/品牌 ID。,示例值及对应分析:作用:和其它 JSON 中的 tenant_id / tenantId 一致,用于区分不同商户(本次数据只包含同一租户)。';
|
||
COMMENT ON COLUMN billiards_ods.tenant_goods_master.goods_name IS '对应JSON字段:goods_name,说明::商品名称(前台展示名称)。,示例值及对应分析:特征:';
|
||
COMMENT ON COLUMN billiards_ods.tenant_goods_master.goods_bar_code IS '对应JSON字段:goods_bar_code,说明::商品条码(EAN 等),目前未维护。,示例值及对应分析:说明:';
|
||
COMMENT ON COLUMN billiards_ods.tenant_goods_master.goods_category_id IS '对应JSON字段:goods_category_id,说明::商品一级分类 ID。,示例值及对应分析:取值情况:';
|
||
COMMENT ON COLUMN billiards_ods.tenant_goods_master.goods_second_category_id IS '对应JSON字段:goods_second_category_id,说明::商品二级分类 ID。,示例值及对应分析:取值情况:';
|
||
COMMENT ON COLUMN billiards_ods.tenant_goods_master.categoryName IS '对应JSON字段:categoryName,说明::商品一级分类名称(业务可读)。,示例值及对应分析:取值情况:';
|
||
COMMENT ON COLUMN billiards_ods.tenant_goods_master.unit IS '对应JSON字段:unit,说明::计量单位。,示例值及对应分析:取值(共 12 种左右):';
|
||
COMMENT ON COLUMN billiards_ods.tenant_goods_master.goods_number IS '对应JSON字段:goods_number,说明::商品内部编码(自定义货号/系统货号)。,示例值及对应分析:特征:';
|
||
COMMENT ON COLUMN billiards_ods.tenant_goods_master.goods_state IS '对应JSON字段:goods_state,说明:(推测):商品状态(上架/下架等)。,示例值及对应分析:1:正常/上架;';
|
||
COMMENT ON COLUMN billiards_ods.tenant_goods_master.sale_channel IS '对应JSON字段:sale_channel,说明:(推测):销售渠道类型,如“门店堂食/线下零售/线上小程序”等的一种编码。,示例值及对应分析:现有数据只有一个值,说明本门店目前仅通过一种渠道销售这些商品。';
|
||
COMMENT ON COLUMN billiards_ods.tenant_goods_master.able_discount IS '对应JSON字段:able_discount,说明:(推测):是否允许参与折扣/打折。,示例值及对应分析:1:允许折扣;';
|
||
COMMENT ON COLUMN billiards_ods.tenant_goods_master.able_site_transfer IS '对应JSON字段:able_site_transfer,说明:(推测):,示例值及对应分析:字面意思是“是否允许门店间调拨/门店级操作”:';
|
||
COMMENT ON COLUMN billiards_ods.tenant_goods_master.is_delete IS '对应JSON字段:is_delete,说明::逻辑删除标志。,示例值及对应分析:0:未删除(有效商品);';
|
||
COMMENT ON COLUMN billiards_ods.tenant_goods_master.is_warehousing IS '对应JSON字段:is_warehousing,说明:(推测):是否启用库存管理。,示例值及对应分析:1:该商品纳入库存管理;';
|
||
COMMENT ON COLUMN billiards_ods.tenant_goods_master.isInSite IS '对应JSON字段:isInSite,说明:(从命名推测):是否在当前门店启用/上架。,示例值及对应分析:现象:';
|
||
COMMENT ON COLUMN billiards_ods.tenant_goods_master.cost_price IS '对应JSON字段:cost_price,说明::成本价格。,示例值及对应分析:特征:';
|
||
COMMENT ON COLUMN billiards_ods.tenant_goods_master.cost_price_type IS '对应JSON字段:cost_price_type,说明:(推测):,示例值及对应分析:不同的成本价格来源或计算方式,如:';
|
||
COMMENT ON COLUMN billiards_ods.tenant_goods_master.market_price IS '对应JSON字段:market_price,说明::商品标价 / 售价(标准销售单价)。,示例值及对应分析:特征:';
|
||
COMMENT ON COLUMN billiards_ods.tenant_goods_master.min_discount_price IS '对应JSON字段:min_discount_price,说明::该商品允许售卖的最低价格(底价)。,示例值及对应分析:特征:';
|
||
COMMENT ON COLUMN billiards_ods.tenant_goods_master.common_sale_royalty IS '对应JSON字段:common_sale_royalty,说明:(推测):普通销售提成比例或提成金额的配置字段。,示例值及对应分析:当前门店未在商品档案上配置员工提成规则,全部为 0。';
|
||
COMMENT ON COLUMN billiards_ods.tenant_goods_master.point_sale_royalty IS '对应JSON字段:point_sale_royalty,说明:(推测):积分销售提成/积分赠送规则相关配置。,示例值及对应分析:当前同样未启用。';
|
||
COMMENT ON COLUMN billiards_ods.tenant_goods_master.pinyin_initial IS '对应JSON字段:pinyin_initial,说明::拼音首字母/助记码。,示例值及对应分析:特征:';
|
||
COMMENT ON COLUMN billiards_ods.tenant_goods_master.commodityCode IS '对应JSON字段:commodityCode,说明::,示例值及对应分析:与 commodity_code 是同一信息的数组形式(冗余存储),便于支持一个商品对应多个编码的场景。';
|
||
COMMENT ON COLUMN billiards_ods.tenant_goods_master.commodity_code IS '对应JSON字段:commodity_code,说明::商品编码(通常为对外商品编码或条码)。,示例值及对应分析:特征:';
|
||
COMMENT ON COLUMN billiards_ods.tenant_goods_master.goods_cover IS '对应JSON字段:goods_cover,说明::商品封面图片 URL 地址。,示例值及对应分析:特征:';
|
||
COMMENT ON COLUMN billiards_ods.tenant_goods_master.supplier_id IS '对应JSON字段:supplier_id,说明::供应商 ID,用于关联到供应商档案。,示例值及对应分析:当前所有商品都未挂接具体供应商(或门店未使用供应链管理模块)。';
|
||
COMMENT ON COLUMN billiards_ods.tenant_goods_master.remark_name IS '对应JSON字段:remark_name,说明:(从命名推断):商品备注名/别名,通常用来配置简写或特殊显示名称。,示例值及对应分析:当前门店尚未使用该字段,字段设计为将来扩展预留。';
|
||
COMMENT ON COLUMN billiards_ods.tenant_goods_master.create_time IS '对应JSON字段:create_time,说明::商品档案创建时间。,示例值及对应分析:特征:';
|
||
COMMENT ON COLUMN billiards_ods.tenant_goods_master.update_time IS '对应JSON字段:update_time,说明::商品档案最近一次修改时间。,示例值及对应分析:分布:';
|
||
COMMENT ON COLUMN billiards_ods.tenant_goods_master.payload IS '对应JSON字段:payload,说明:完整原始 JSON 内容,示例值及对应分析:???????';
|
||
COMMENT ON COLUMN billiards_ods.tenant_goods_master.source_file IS '对应JSON字段:source_file,说明:原始文件名(含时间戳后缀),示例值及对应分析:???????';
|
||
COMMENT ON COLUMN billiards_ods.tenant_goods_master.source_endpoint IS '对应JSON字段:source_endpoint,说明:抓取来源接口/URL 标识,示例值及对应分析:???????';
|
||
COMMENT ON COLUMN billiards_ods.tenant_goods_master.fetched_at IS '对应JSON字段:fetched_at,说明:入库时间(ETL 拉取时间),示例值及对应分析:???????';
|
||
|
||
CREATE TABLE IF NOT EXISTS billiards_ods.group_buy_packages (
|
||
id BIGINT PRIMARY KEY,
|
||
package_id BIGINT,
|
||
package_name TEXT,
|
||
selling_price NUMERIC(18,2),
|
||
coupon_money NUMERIC(18,2),
|
||
date_type INT,
|
||
date_info TEXT,
|
||
start_time TIMESTAMP,
|
||
end_time TIMESTAMP,
|
||
start_clock TEXT,
|
||
end_clock TEXT,
|
||
add_start_clock TEXT,
|
||
add_end_clock TEXT,
|
||
duration INT,
|
||
usable_count INT,
|
||
usable_range INT,
|
||
table_area_id BIGINT,
|
||
table_area_name TEXT,
|
||
table_area_id_list JSONB,
|
||
tenant_table_area_id BIGINT,
|
||
tenant_table_area_id_list JSONB,
|
||
site_id BIGINT,
|
||
site_name TEXT,
|
||
tenant_id BIGINT,
|
||
card_type_ids JSONB,
|
||
group_type INT,
|
||
system_group_type INT,
|
||
type INT,
|
||
effective_status INT,
|
||
is_enabled INT,
|
||
is_delete INT,
|
||
max_selectable_categories INT,
|
||
area_tag_type INT,
|
||
creator_name TEXT,
|
||
create_time TIMESTAMP,
|
||
source_file TEXT,
|
||
source_endpoint TEXT,
|
||
fetched_at TIMESTAMPTZ DEFAULT now(),
|
||
payload JSONB NOT NULL
|
||
);
|
||
|
||
COMMENT ON TABLE billiards_ods.group_buy_packages IS '对应JSON字段:group_buy_packages.json,说明:ODS 原始明细表(保留payload),示例值及对应分析:详见 group_buy_packages-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.group_buy_packages.id IS '对应JSON字段:id,说明::门店侧套餐 ID,本文件内部的主键。,示例值及对应分析:特点:17 条记录中均为不同的大整数 ID。';
|
||
COMMENT ON COLUMN billiards_ods.group_buy_packages.package_id IS '对应JSON字段:package_id,说明::“上层套餐 ID” 或“总部/系统级套餐 ID”。,示例值及对应分析:特点:';
|
||
COMMENT ON COLUMN billiards_ods.group_buy_packages.package_name IS '对应JSON字段:package_name,说明::团购套餐名称,用于前台展示和核销界面。,示例值及对应分析:示例:';
|
||
COMMENT ON COLUMN billiards_ods.group_buy_packages.selling_price IS '对应JSON字段:selling_price,说明:(结合字段命名):,示例值及对应分析:语义上应该是“团购售卖价”(顾客在平台购买券时的成交价格)。';
|
||
COMMENT ON COLUMN billiards_ods.group_buy_packages.coupon_money IS '对应JSON字段:coupon_money,说明::券面值或内部结算面值,表示该套餐在门店侧对应的金额额度。,示例值及对应分析:示例(对应套餐名称):';
|
||
COMMENT ON COLUMN billiards_ods.group_buy_packages.date_type IS '对应JSON字段:date_type,说明:(推测):,示例值及对应分析:典型用法:区分“全部日期可用 / 工作日 / 周末 / 指定日期”等。';
|
||
COMMENT ON COLUMN billiards_ods.group_buy_packages.date_info IS '对应JSON字段:date_info,说明:(推测):,示例值及对应分析:预留字段,通常用来存储更细粒度的日期信息,如具体日期列表、节假日特殊规则(可能是 JSON 字符串或编码)。';
|
||
COMMENT ON COLUMN billiards_ods.group_buy_packages.start_time IS '对应JSON字段:start_time,说明::套餐开始生效的日期时间。,示例值及对应分析:示例:"2025-07-20 00:00:00" 等。';
|
||
COMMENT ON COLUMN billiards_ods.group_buy_packages.end_time IS '对应JSON字段:end_time,说明::套餐失效的日期时间(到这个时间点后不可使用)。,示例值及对应分析:示例:形如 "2025-11-30 23:59:59",部分记录使用 9999-12-31 23:59:59 风格的极大日期表示长期有效(本数据中如有这种值,可解读为“长期有效”)。';
|
||
COMMENT ON COLUMN billiards_ods.group_buy_packages.start_clock IS '对应JSON字段:start_clock,说明::每日可用起始时间点(第一段)。,示例值及对应分析:说明:配合 end_clock 使用,定义一个日内时段。';
|
||
COMMENT ON COLUMN billiards_ods.group_buy_packages.end_clock IS '对应JSON字段:end_clock,说明::每日可用的结束时间点(第一段)。,示例值及对应分析:结构说明:';
|
||
COMMENT ON COLUMN billiards_ods.group_buy_packages.add_start_clock IS '对应JSON字段:add_start_clock,说明:(推测):附加可用时间段的起始时间(第二段)。,示例值及对应分析:例如有的套餐可以在两个不连续的时段使用:早场 + 夜场,则可用第一段 start_clock / end_clock 和第二段 add_start_clock / add_end_clock 组合。';
|
||
COMMENT ON COLUMN billiards_ods.group_buy_packages.add_end_clock IS '对应JSON字段:add_end_clock,说明::附加时段结束时间,多数情况配合 "00:00:00" 或 "10:00:00" 使用。,示例值及对应分析:整体理解:';
|
||
COMMENT ON COLUMN billiards_ods.group_buy_packages.duration IS '对应JSON字段:duration,说明::套餐内包含的时长(秒)。,示例值及对应分析:与名称一致:';
|
||
COMMENT ON COLUMN billiards_ods.group_buy_packages.usable_count IS '对应JSON字段:usable_count,说明::可使用次数上限。,示例值及对应分析:数据特征说明:';
|
||
COMMENT ON COLUMN billiards_ods.group_buy_packages.usable_range IS '对应JSON字段:usable_range,说明:吻合(A区中八/B区中八/斯诺克/KTV/包厢等)。,示例值及对应分析:通过该关联,系统在核销时可以校验:';
|
||
COMMENT ON COLUMN billiards_ods.group_buy_packages.table_area_id IS '对应JSON字段:table_area_id,说明:(推测):,示例值及对应分析:原始设计应为“单一台区 ID”,当套餐只限一个区域可以用这个字段存储。';
|
||
COMMENT ON COLUMN billiards_ods.group_buy_packages.table_area_name IS '对应JSON字段:table_area_name,说明::套餐适用的“门店台区名称”,用于显示和筛选。,示例值及对应分析:说明:这个字段是对区域 ID 维度的文字描述,便于直观理解。';
|
||
COMMENT ON COLUMN billiards_ods.group_buy_packages.table_area_id_list IS '对应JSON字段:table_area_id_list,说明:(推测):,示例值及对应分析:用来存放具体台区 ID 列表(例如 "1,2,3"),实现更细粒度的台桌限制。';
|
||
COMMENT ON COLUMN billiards_ods.group_buy_packages.tenant_table_area_id IS '对应JSON字段:tenant_table_area_id,说明:(推测):,示例值及对应分析:与 table_area_id 类似,是租户层级的台区 ID,原本用于单区选择。';
|
||
COMMENT ON COLUMN billiards_ods.group_buy_packages.tenant_table_area_id_list IS '对应JSON字段:tenant_table_area_id_list,说明:(推测):,示例值及对应分析:实际代表“台区集合 ID”或“租户台区配置 ID”,用来限制套餐可用的台区范围。';
|
||
COMMENT ON COLUMN billiards_ods.group_buy_packages.site_id IS '对应JSON字段:site_id,说明::门店 ID。,示例值及对应分析:特点:全表值相同,且与其他 JSON 文件中的 site_id 一致,对应“朗朗桌球”这家门店。';
|
||
COMMENT ON COLUMN billiards_ods.group_buy_packages.site_name IS '对应JSON字段:site_name,说明::门店名称。,示例值及对应分析:观测值:全部为 "朗朗桌球"。';
|
||
COMMENT ON COLUMN billiards_ods.group_buy_packages.tenant_id IS '对应JSON字段:tenant_id,说明::租户 ID(品牌/商户 ID)。,示例值及对应分析:特点:全表值相同,说明所有套餐定义属于同一商户(同一品牌)。';
|
||
COMMENT ON COLUMN billiards_ods.group_buy_packages.card_type_ids IS '对应JSON字段:card_type_ids,说明:(推测):,示例值及对应分析:原意是“适用会员卡类型 ID 列表”,例如某套餐只允许某几种会员卡使用,可以在此配置。';
|
||
COMMENT ON COLUMN billiards_ods.group_buy_packages.group_type IS '对应JSON字段:group_type,说明:(推测):,示例值及对应分析:团购类型,例如:';
|
||
COMMENT ON COLUMN billiards_ods.group_buy_packages.system_group_type IS '对应JSON字段:system_group_type,说明:(推测):,示例值及对应分析:系统内对团购类型更底层的划分,比如:';
|
||
COMMENT ON COLUMN billiards_ods.group_buy_packages.type IS '对应JSON字段:type,说明:(推测):,示例值及对应分析:内部业务子类型,具体含义需要结合系统文档;仅从数据无法确定是“台费类 vs 包厢类”还是“平台套餐 vs 自定义套餐”。';
|
||
COMMENT ON COLUMN billiards_ods.group_buy_packages.effective_status IS '对应JSON字段:effective_status,说明:(结合命名和数据特征推断):,示例值及对应分析:1:有效(在当前时间区间内、配置正常,可核销使用)。';
|
||
COMMENT ON COLUMN billiards_ods.group_buy_packages.is_enabled IS '对应JSON字段:is_enabled,说明::启用状态。,示例值及对应分析:从其他表的统一风格来看,1 一般表示“启用 / 上架”,2 表示“停用 / 下架”。';
|
||
COMMENT ON COLUMN billiards_ods.group_buy_packages.is_delete IS '对应JSON字段:is_delete,说明::逻辑删除标志。,示例值及对应分析:0:正常;';
|
||
COMMENT ON COLUMN billiards_ods.group_buy_packages.max_selectable_categories IS '对应JSON字段:max_selectable_categories,说明:?????? group_buy_packages-Analysis.md,示例值及对应分析:?? group_buy_packages-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.group_buy_packages.area_tag_type IS '对应JSON字段:area_tag_type,说明:(推测):区域标记类型:,示例值及对应分析:1 很可能代表“按台区标签限制”,例如 A区、中八区、包厢、KTV 等。';
|
||
COMMENT ON COLUMN billiards_ods.group_buy_packages.creator_name IS '对应JSON字段:creator_name,说明::创建人信息,一般包含“角色:姓名”。,示例值及对应分析:示例:"管理员:郑丽珊"';
|
||
COMMENT ON COLUMN billiards_ods.group_buy_packages.create_time IS '对应JSON字段:create_time,说明::该套餐在系统中创建的时间。,示例值及对应分析:特点:每条记录各不相同,覆盖了 2025-07 至 2025-10 的创建时间。';
|
||
COMMENT ON COLUMN billiards_ods.group_buy_packages.source_file IS '对应JSON字段:source_file,说明:原始文件名(含时间戳后缀),示例值及对应分析:???????';
|
||
COMMENT ON COLUMN billiards_ods.group_buy_packages.source_endpoint IS '对应JSON字段:source_endpoint,说明:抓取来源接口/URL 标识,示例值及对应分析:???????';
|
||
COMMENT ON COLUMN billiards_ods.group_buy_packages.fetched_at IS '对应JSON字段:fetched_at,说明:入库时间(ETL 拉取时间),示例值及对应分析:???????';
|
||
COMMENT ON COLUMN billiards_ods.group_buy_packages.payload IS '对应JSON字段:payload,说明:完整原始 JSON 内容,示例值及对应分析:???????';
|
||
|
||
CREATE TABLE IF NOT EXISTS billiards_ods.group_buy_redemption_records (
|
||
id BIGINT PRIMARY KEY,
|
||
tenant_id BIGINT,
|
||
site_id BIGINT,
|
||
siteName TEXT,
|
||
table_id BIGINT,
|
||
tableName TEXT,
|
||
tableAreaName TEXT,
|
||
tenant_table_area_id BIGINT,
|
||
order_trade_no TEXT,
|
||
order_settle_id BIGINT,
|
||
order_pay_id BIGINT,
|
||
order_coupon_id BIGINT,
|
||
order_coupon_channel INT,
|
||
coupon_code TEXT,
|
||
coupon_money NUMERIC(18,2),
|
||
coupon_origin_id BIGINT,
|
||
ledger_name TEXT,
|
||
ledger_group_name TEXT,
|
||
ledger_amount NUMERIC(18,2),
|
||
ledger_count NUMERIC(18,4),
|
||
ledger_unit_price NUMERIC(18,4),
|
||
ledger_status INT,
|
||
table_charge_seconds INT,
|
||
promotion_activity_id BIGINT,
|
||
promotion_coupon_id BIGINT,
|
||
promotion_seconds INT,
|
||
offer_type INT,
|
||
assistant_promotion_money NUMERIC(18,2),
|
||
assistant_service_promotion_money NUMERIC(18,2),
|
||
table_service_promotion_money NUMERIC(18,2),
|
||
goods_promotion_money NUMERIC(18,2),
|
||
recharge_promotion_money NUMERIC(18,2),
|
||
reward_promotion_money NUMERIC(18,2),
|
||
goodsOptionPrice NUMERIC(18,2),
|
||
salesman_name TEXT,
|
||
sales_man_org_id BIGINT,
|
||
salesman_role_id BIGINT,
|
||
salesman_user_id BIGINT,
|
||
operator_id BIGINT,
|
||
operator_name TEXT,
|
||
is_single_order INT,
|
||
is_delete INT,
|
||
create_time TIMESTAMP,
|
||
payload JSONB NOT NULL,
|
||
source_file TEXT,
|
||
source_endpoint TEXT,
|
||
fetched_at TIMESTAMPTZ DEFAULT now()
|
||
);
|
||
|
||
COMMENT ON TABLE billiards_ods.group_buy_redemption_records IS '对应JSON字段:group_buy_redemption_records.json,说明:ODS 原始明细表(保留payload),示例值及对应分析:详见 group_buy_redemption_records-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.group_buy_redemption_records.id IS '对应JSON字段:id,说明::本条“团购套餐流水”记录的 主键 ID。,示例值及对应分析:作用:唯一标识一条券使用到台费上的记录。';
|
||
COMMENT ON COLUMN billiards_ods.group_buy_redemption_records.tenant_id IS '对应JSON字段:tenant_id,说明::租户/品牌 ID。,示例值及对应分析:特点:全表值相同,说明所有记录属于同一租户。';
|
||
COMMENT ON COLUMN billiards_ods.group_buy_redemption_records.site_id IS '对应JSON字段:site_id,说明::门店 ID,与其它 JSON 中一致。,示例值及对应分析:关联:';
|
||
COMMENT ON COLUMN billiards_ods.group_buy_redemption_records.siteName IS '对应JSON字段:siteName,说明::门店名称,冗余展示用。,示例值及对应分析:?? group_buy_redemption_records-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.group_buy_redemption_records.table_id IS '对应JSON字段:table_id,说明::球台 ID。,示例值及对应分析:关联:';
|
||
COMMENT ON COLUMN billiards_ods.group_buy_redemption_records.tableName IS '对应JSON字段:tableName,说明::本次使用券所关联的 球台名称/台号。,示例值及对应分析:关联:对应台桌列表中的 table_name / table_no,通过 table_id 进一步关联。';
|
||
COMMENT ON COLUMN billiards_ods.group_buy_redemption_records.tableAreaName IS '对应JSON字段:tableAreaName,说明::该球台所属的 台区名称。,示例值及对应分析:关联:与台区配置中的 area_name 含义一致,与团购套餐定义中的 table_area_name 一致。';
|
||
COMMENT ON COLUMN billiards_ods.group_buy_redemption_records.tenant_table_area_id IS '对应JSON字段:tenant_table_area_id,说明::租户级台区分组 ID,表示当前使用券的台桌所属的区域组合。,示例值及对应分析:关联:';
|
||
COMMENT ON COLUMN billiards_ods.group_buy_redemption_records.order_trade_no IS '对应JSON字段:order_trade_no,说明::订单交易号,和其它消费明细(台费、商品、助教、团购)共用的订单主键。,示例值及对应分析:关联:';
|
||
COMMENT ON COLUMN billiards_ods.group_buy_redemption_records.order_settle_id IS '对应JSON字段:order_settle_id,说明::结算单 ID(小票结账主键)。,示例值及对应分析:关联:';
|
||
COMMENT ON COLUMN billiards_ods.group_buy_redemption_records.order_pay_id IS '对应JSON字段:order_pay_id,说明:(推测):,示例值及对应分析:指向支付记录表中的支付流水 ID。';
|
||
COMMENT ON COLUMN billiards_ods.group_buy_redemption_records.order_coupon_id IS '对应JSON字段:order_coupon_id,说明::订单中“券使用记录”的 ID。,示例值及对应分析:结构特点:';
|
||
COMMENT ON COLUMN billiards_ods.group_buy_redemption_records.order_coupon_channel IS '对应JSON字段:order_coupon_channel,说明:(推测):,示例值及对应分析:券渠道类型,例如:';
|
||
COMMENT ON COLUMN billiards_ods.group_buy_redemption_records.coupon_code IS '对应JSON字段:coupon_code,说明::团购券券码,核销时扫描/录入的字符串。,示例值及对应分析:关联:';
|
||
COMMENT ON COLUMN billiards_ods.group_buy_redemption_records.coupon_money IS '对应JSON字段:coupon_money,说明::本次核销时,这张券在门店侧对应的金额额度(“可抵扣金额”)。,示例值及对应分析:结构关系:';
|
||
COMMENT ON COLUMN billiards_ods.group_buy_redemption_records.coupon_origin_id IS '对应JSON字段:coupon_origin_id,说明:(推测):,示例值及对应分析:平台/上游系统中的券记录主键 ID,“券来源 ID”。';
|
||
COMMENT ON COLUMN billiards_ods.group_buy_redemption_records.ledger_name IS '对应JSON字段:ledger_name,说明::台费侧关联的“团购项目名称”(记账名)。,示例值及对应分析:结构上通常来源于团购套餐定义的 package_name,或由系统在创建活动时生成。';
|
||
COMMENT ON COLUMN billiards_ods.group_buy_redemption_records.ledger_group_name IS '对应JSON字段:ledger_group_name,说明:(推测):团购项目所属的“记账分组名称”(例如“团购台费”“团购包厢”等)。,示例值及对应分析:当前门店未对团购项目做进一步分组。';
|
||
COMMENT ON COLUMN billiards_ods.group_buy_redemption_records.ledger_amount IS '对应JSON字段:ledger_amount,说明::本次券实际冲抵台费的金额。,示例值及对应分析:结构关系:';
|
||
COMMENT ON COLUMN billiards_ods.group_buy_redemption_records.ledger_count IS '对应JSON字段:ledger_count,说明::按此次优惠实际计算的“核销秒数”。,示例值及对应分析:结构观察:';
|
||
COMMENT ON COLUMN billiards_ods.group_buy_redemption_records.ledger_unit_price IS '对应JSON字段:ledger_unit_price,说明::对应台费的标准单价,单位元/小时(从数值来看是类似29.9/小时这种定价)。,示例值及对应分析:作用:配合 ledger_count 用于计算这一条券在台费层面对应的金额(理论上应接近 = 单价 × 秒数/3600)。';
|
||
COMMENT ON COLUMN billiards_ods.group_buy_redemption_records.ledger_status IS '对应JSON字段:ledger_status,说明:(推测):流水状态。,示例值及对应分析:1:正常有效;';
|
||
COMMENT ON COLUMN billiards_ods.group_buy_redemption_records.table_charge_seconds IS '对应JSON字段:table_charge_seconds,说明::本次结算中该球台总计计费的秒数(整台的台费计费时间)。,示例值及对应分析:结构特点:';
|
||
COMMENT ON COLUMN billiards_ods.group_buy_redemption_records.promotion_activity_id IS '对应JSON字段:promotion_activity_id,说明:(推测):团购/促销活动 ID。,示例值及对应分析:对应平台或内部促销活动的主键,每个活动通常绑定一个或多个具体套餐(promotion_coupon_id)。';
|
||
COMMENT ON COLUMN billiards_ods.group_buy_redemption_records.promotion_coupon_id IS '对应JSON字段:promotion_coupon_id,说明::团购套餐定义 ID。,示例值及对应分析:关联:';
|
||
COMMENT ON COLUMN billiards_ods.group_buy_redemption_records.promotion_seconds IS '对应JSON字段:promotion_seconds,说明::团购套餐定义的“标准时长”(券本身标称的可用时长)。,示例值及对应分析:结构关系:';
|
||
COMMENT ON COLUMN billiards_ods.group_buy_redemption_records.offer_type IS '对应JSON字段:offer_type,说明:(推测):优惠类型。,示例值及对应分析:在券适用多个优惠方式的系统中,一般用来区分“满减/折扣/代金券/套餐券”等。';
|
||
COMMENT ON COLUMN billiards_ods.group_buy_redemption_records.assistant_promotion_money IS '对应JSON字段:assistant_promotion_money,说明::分摊到“助教服务”的促销金额。,示例值及对应分析:当前场景下,团购券只与台费相关,未涉及助教的金额抵扣。';
|
||
COMMENT ON COLUMN billiards_ods.group_buy_redemption_records.assistant_service_promotion_money IS '对应JSON字段:assistant_service_promotion_money,说明::进一步细分助教服务的促销金额。,示例值及对应分析:当前未使用。';
|
||
COMMENT ON COLUMN billiards_ods.group_buy_redemption_records.table_service_promotion_money IS '对应JSON字段:table_service_promotion_money,说明::本次券使用中,分摊到“台费服务费”部分的促销金额。,示例值及对应分析:当前样本中,促销金额都在 ledger_amount 中体现,该字段未单独拆出。';
|
||
COMMENT ON COLUMN billiards_ods.group_buy_redemption_records.goods_promotion_money IS '对应JSON字段:goods_promotion_money,说明::本次券使用中,分摊到“商品”部分的促销金额。,示例值及对应分析:当前数据中,所有团购券都只用于抵扣台费,没有用来抵扣商品,因此该字段为 0。';
|
||
COMMENT ON COLUMN billiards_ods.group_buy_redemption_records.recharge_promotion_money IS '对应JSON字段:recharge_promotion_money,说明::来自“充值类优惠”的分摊金额(例如储值赠送部分)。,示例值及对应分析:当前所有数据为 0,但结构上已经预留了“多来源促销金额分摊”的能力。';
|
||
COMMENT ON COLUMN billiards_ods.group_buy_redemption_records.reward_promotion_money IS '对应JSON字段:reward_promotion_money,说明::本次促销中,属于“奖励金/积分抵扣”的金额。,示例值及对应分析:当前没有使用此维度的促销。';
|
||
COMMENT ON COLUMN billiards_ods.group_buy_redemption_records.goodsOptionPrice IS '对应JSON字段:goodsOptionPrice,说明:(按命名推测):商品规格价格,用于商品类促销分摊时使用。,示例值及对应分析:当前在“团购套餐流水”中未被实际使用。';
|
||
COMMENT ON COLUMN billiards_ods.group_buy_redemption_records.salesman_name IS '对应JSON字段:salesman_name,说明::营业员姓名。,示例值及对应分析:?? group_buy_redemption_records-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.group_buy_redemption_records.sales_man_org_id IS '对应JSON字段:sales_man_org_id,说明::营业员所属组织 ID。,示例值及对应分析:以上 4 个销售相关字段在当前门店的团购套餐使用中都未启用,仅作为结构预留。';
|
||
COMMENT ON COLUMN billiards_ods.group_buy_redemption_records.salesman_role_id IS '对应JSON字段:salesman_role_id,说明::营业员角色 ID。,示例值及对应分析:?? group_buy_redemption_records-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.group_buy_redemption_records.salesman_user_id IS '对应JSON字段:salesman_user_id,说明::营业员/业务员用户 ID。,示例值及对应分析:当前所有团购套餐流水都未指定独立的营业员。';
|
||
COMMENT ON COLUMN billiards_ods.group_buy_redemption_records.operator_id IS '对应JSON字段:operator_id,说明::执行本次核销/结算操作的 操作员 ID。,示例值及对应分析:关联:可以与员工档案表中的 id 对应(当前导出中员工表未单独给出,但风格和其它表一致)。';
|
||
COMMENT ON COLUMN billiards_ods.group_buy_redemption_records.operator_name IS '对应JSON字段:operator_name,说明::操作员名称(包含角色说明),与 operator_id 对应的冗余展示字段。,示例值及对应分析:?? group_buy_redemption_records-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.group_buy_redemption_records.is_single_order IS '对应JSON字段:is_single_order,说明:(推测):是否单独作为一条订单行。,示例值及对应分析:1:以独立条目方式进行结算(绝大部分记录如此)。';
|
||
COMMENT ON COLUMN billiards_ods.group_buy_redemption_records.is_delete IS '对应JSON字段:is_delete,说明::逻辑删除标志:,示例值及对应分析:0:正常;';
|
||
COMMENT ON COLUMN billiards_ods.group_buy_redemption_records.create_time IS '对应JSON字段:create_time,说明::本条团购套餐使用流水创建时间(即券核销时间,或与结账时间接近)。,示例值及对应分析:用法:可用于按时间范围过滤团购使用记录。';
|
||
COMMENT ON COLUMN billiards_ods.group_buy_redemption_records.payload IS '对应JSON字段:payload,说明:完整原始 JSON 内容,示例值及对应分析:???????';
|
||
COMMENT ON COLUMN billiards_ods.group_buy_redemption_records.source_file IS '对应JSON字段:source_file,说明:原始文件名(含时间戳后缀),示例值及对应分析:???????';
|
||
COMMENT ON COLUMN billiards_ods.group_buy_redemption_records.source_endpoint IS '对应JSON字段:source_endpoint,说明:抓取来源接口/URL 标识,示例值及对应分析:???????';
|
||
COMMENT ON COLUMN billiards_ods.group_buy_redemption_records.fetched_at IS '对应JSON字段:fetched_at,说明:入库时间(ETL 拉取时间),示例值及对应分析:???????';
|
||
|
||
CREATE TABLE IF NOT EXISTS billiards_ods.settlement_ticket_details (
|
||
orderSettleId BIGINT PRIMARY KEY,
|
||
actualPayment NUMERIC(18,2),
|
||
adjustAmount NUMERIC(18,2),
|
||
assistantManualDiscount NUMERIC(18,2),
|
||
balanceAmount NUMERIC(18,2),
|
||
cashierName TEXT,
|
||
consumeMoney NUMERIC(18,2),
|
||
couponAmount NUMERIC(18,2),
|
||
deliveryAddress TEXT,
|
||
deliveryFee NUMERIC(18,2),
|
||
ledgerAmount NUMERIC(18,2),
|
||
memberDeductAmount NUMERIC(18,2),
|
||
memberOfferAmount NUMERIC(18,2),
|
||
onlineReturnAmount NUMERIC(18,2),
|
||
orderRemark TEXT,
|
||
orderSettleNumber BIGINT,
|
||
payMemberBalance NUMERIC(18,2),
|
||
payTime TIMESTAMP,
|
||
paymentMethod INT,
|
||
pointDiscountCost NUMERIC(18,2),
|
||
pointDiscountPrice NUMERIC(18,2),
|
||
prepayMoney NUMERIC(18,2),
|
||
refundAmount NUMERIC(18,2),
|
||
returnGoodsAmount NUMERIC(18,2),
|
||
rewardName TEXT,
|
||
settleType TEXT,
|
||
siteAddress TEXT,
|
||
siteBusinessTel TEXT,
|
||
siteId BIGINT,
|
||
siteName TEXT,
|
||
tenantId BIGINT,
|
||
tenantName TEXT,
|
||
ticketCustomContent TEXT,
|
||
ticketRemark TEXT,
|
||
voucherMoney NUMERIC(18,2),
|
||
memberProfile JSONB,
|
||
orderItem JSONB,
|
||
tenantMemberCardLogs JSONB,
|
||
payload JSONB NOT NULL,
|
||
source_file TEXT,
|
||
source_endpoint TEXT,
|
||
fetched_at TIMESTAMPTZ DEFAULT now()
|
||
);
|
||
|
||
COMMENT ON TABLE billiards_ods.settlement_ticket_details IS '对应JSON字段:settlement_ticket_details.json,说明:ODS 原始明细表(保留payload),示例值及对应分析:详见 settlement_ticket_details-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.settlement_ticket_details.orderSettleId IS '对应JSON字段:orderSettleId,说明::同 data.data.orderSettleId,为结算单 ID 的冗余。,示例值及对应分析:orderType';
|
||
COMMENT ON COLUMN billiards_ods.settlement_ticket_details.actualPayment IS '对应JSON字段:actualPayment,说明::本单实际支付金额总和(顾客本次实际付出:现金 + 线上 + 会员余额等)。,示例值及对应分析:一般应与支付记录中各支付流水金额汇总相匹配。';
|
||
COMMENT ON COLUMN billiards_ods.settlement_ticket_details.adjustAmount IS '对应JSON字段:adjustAmount,说明::台费层面的人工调价金额(仅台费部分)。,示例值及对应分析:memberDiscountAmount';
|
||
COMMENT ON COLUMN billiards_ods.settlement_ticket_details.assistantManualDiscount IS '对应JSON字段:assistantManualDiscount,说明::针对“助教项目”的人工减免金额汇总(整单维度)。,示例值及对应分析:?? settlement_ticket_details-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.settlement_ticket_details.balanceAmount IS '对应JSON字段:balanceAmount,说明::本单通过“会员余额/储值卡”支付的金额(从余额中扣除的总额)。,示例值及对应分析:对应 结账记录.json 的同名字段。';
|
||
COMMENT ON COLUMN billiards_ods.settlement_ticket_details.cashierName IS '对应JSON字段:cashierName,说明::本单结算操作员名称(带角色前缀文字)。,示例值及对应分析:对应员工维表中的某个账号,便于小票上展示“收银员:XXX”。';
|
||
COMMENT ON COLUMN billiards_ods.settlement_ticket_details.consumeMoney IS '对应JSON字段:consumeMoney,说明::本单“消费金额总计”(原价层面),即台费 + 商品 + 助教 + 服务等消费项目的金额总和(未扣除各类优惠)。,示例值及对应分析:对应 结账记录.json 的 consumeMoney 字段。';
|
||
COMMENT ON COLUMN billiards_ods.settlement_ticket_details.couponAmount IS '对应JSON字段:couponAmount,说明::本单由优惠券抵扣的金额汇总。,示例值及对应分析:结构上:应与 orderCouponLedgers.discountAmount 的合计存在关系,但当前导出未填充。';
|
||
COMMENT ON COLUMN billiards_ods.settlement_ticket_details.deliveryAddress IS '对应JSON字段:deliveryAddress,说明::配送地址(若存在外送业务时使用)。,示例值及对应分析:对于球房场景,当前时间范围内未使用。';
|
||
COMMENT ON COLUMN billiards_ods.settlement_ticket_details.deliveryFee IS '对应JSON字段:deliveryFee,说明::配送费金额(如果支持外送业务)。,示例值及对应分析:?? settlement_ticket_details-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.settlement_ticket_details.ledgerAmount IS '对应JSON字段:ledgerAmount,说明::按台账口径对应的金额,一般与 discountAmount 一致或有固定关系。,示例值及对应分析:rewardPromotionMoney';
|
||
COMMENT ON COLUMN billiards_ods.settlement_ticket_details.memberDeductAmount IS '对应JSON字段:memberDeductAmount,说明:(结构上):会员抵扣的某种数量或金额(例如积分抵现金额、次卡次数抵扣等),当前数据未启用。,示例值及对应分析:?? settlement_ticket_details-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.settlement_ticket_details.memberOfferAmount IS '对应JSON字段:memberOfferAmount,说明::由“会员权益/折扣”产生的优惠金额总计(整单维度)。,示例值及对应分析:与 memberProfile 以及台费/商品明细中的 memberDiscountAmount 有对应关系。';
|
||
COMMENT ON COLUMN billiards_ods.settlement_ticket_details.onlineReturnAmount IS '对应JSON字段:onlineReturnAmount,说明::本单通过线上支付渠道退回的金额(如微信/支付宝退款)。,示例值及对应分析:?? settlement_ticket_details-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.settlement_ticket_details.orderRemark IS '对应JSON字段:orderRemark,说明::订单备注,由收银员录入,用于记录与本单相关的特殊说明。,示例值及对应分析:?? settlement_ticket_details-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.settlement_ticket_details.orderSettleNumber IS '对应JSON字段:orderSettleNumber,说明:(推测):结算单编号(与 ID 独立的一套编号体系,如流水号)。当前导出时间段内未启用。,示例值及对应分析:?? settlement_ticket_details-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.settlement_ticket_details.payMemberBalance IS '对应JSON字段:payMemberBalance,说明:(结构上):使用会员余额支付的金额,用于区分与 balanceAmount 的不同维度(如“本次支付使用余额部分”与“余额本身变化”等),当前未实际使用。,示例值及对应分析:?? settlement_ticket_details-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.settlement_ticket_details.payTime IS '对应JSON字段:payTime,说明::本单最终支付成功时间。,示例值及对应分析:和 结账记录.json 中的 payTime 对应,一般与 支付记录.create_time/pay_time 在同一时间段。';
|
||
COMMENT ON COLUMN billiards_ods.settlement_ticket_details.paymentMethod IS '对应JSON字段:paymentMethod,说明::结算主支付方式编码(汇总视角)。,示例值及对应分析:对应 结账记录.json 中的 paymentMethod 字段;';
|
||
COMMENT ON COLUMN billiards_ods.settlement_ticket_details.pointDiscountCost IS '对应JSON字段:pointDiscountCost,说明::积分抵扣对应的成本金额(成本侧)。,示例值及对应分析:?? settlement_ticket_details-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.settlement_ticket_details.pointDiscountPrice IS '对应JSON字段:pointDiscountPrice,说明::积分抵扣对应的金额(售价侧)。,示例值及对应分析:?? settlement_ticket_details-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.settlement_ticket_details.prepayMoney IS '对应JSON字段:prepayMoney,说明::预付金/定金在本单中使用的金额。,示例值及对应分析:?? settlement_ticket_details-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.settlement_ticket_details.refundAmount IS '对应JSON字段:refundAmount,说明::本单涉及的退款金额(汇总)。,示例值及对应分析:?? settlement_ticket_details-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.settlement_ticket_details.returnGoodsAmount IS '对应JSON字段:returnGoodsAmount,说明::本单涉及的退货金额汇总。,示例值及对应分析:?? settlement_ticket_details-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.settlement_ticket_details.rewardName IS '对应JSON字段:rewardName,说明:(结构上):用于标识本单适用的激励方案名称,可能用于内部绩效或活动名称展示。,示例值及对应分析:?? settlement_ticket_details-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.settlement_ticket_details.settleType IS '对应JSON字段:settleType,说明::结算类型字符串标识。,示例值及对应分析:"SiteOrder":店内消费订单结算。';
|
||
COMMENT ON COLUMN billiards_ods.settlement_ticket_details.siteAddress IS '对应JSON字段:siteAddress,说明::门店地址(详细地址)。,示例值及对应分析:?? settlement_ticket_details-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.settlement_ticket_details.siteBusinessTel IS '对应JSON字段:siteBusinessTel,说明::门店电话。,示例值及对应分析:用途:用于小票打印上的客服电话。';
|
||
COMMENT ON COLUMN billiards_ods.settlement_ticket_details.siteId IS '对应JSON字段:siteId,说明::门店 ID。,示例值及对应分析:关联:';
|
||
COMMENT ON COLUMN billiards_ods.settlement_ticket_details.siteName IS '对应JSON字段:siteName,说明::门店名称,如“朗朗桌球”。,示例值及对应分析:用途:小票上展示门店名。';
|
||
COMMENT ON COLUMN billiards_ods.settlement_ticket_details.tenantId IS '对应JSON字段:tenantId,说明::租户 / 商户 ID(品牌维度)。,示例值及对应分析:当前数据:恒定为同一值,表示所有记录都来自同一商户。';
|
||
COMMENT ON COLUMN billiards_ods.settlement_ticket_details.tenantName IS '对应JSON字段:tenantName,说明::租户名称,如“朗朗桌球”。,示例值及对应分析:当前数据:全表统一一个值。';
|
||
COMMENT ON COLUMN billiards_ods.settlement_ticket_details.ticketCustomContent IS '对应JSON字段:ticketCustomContent,说明::自定义小票内容,如商家自定义宣传语、条款等。,示例值及对应分析:?? settlement_ticket_details-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.settlement_ticket_details.ticketRemark IS '对应JSON字段:ticketRemark,说明::小票备注内容,可用于打印在小票底部或顶部(例如活动说明、特别提示)。,示例值及对应分析:?? settlement_ticket_details-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.settlement_ticket_details.voucherMoney IS '对应JSON字段:voucherMoney,说明::代金券类金额字段(可能用于某类“代金券余额”或“券面值”记录)。,示例值及对应分析:?? settlement_ticket_details-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.settlement_ticket_details.memberProfile IS '对应JSON字段:memberProfile,说明::,示例值及对应分析:不是会员卡主键,而是本次结账时的会员信息快照;';
|
||
COMMENT ON COLUMN billiards_ods.settlement_ticket_details.orderItem IS '对应JSON字段:orderItem,说明::本次结算对应的“订单明细列表”,这部分是连接“台费流水 / 商品出库 / 券使用”等多个子领域的关键结构。,示例值及对应分析:下面专门展开 orderItem 及其子结构。';
|
||
COMMENT ON COLUMN billiards_ods.settlement_ticket_details.tenantMemberCardLogs IS '对应JSON字段:tenantMemberCardLogs,说明:?????? settlement_ticket_details-Analysis.md,示例值及对应分析:?? settlement_ticket_details-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.settlement_ticket_details.payload IS '对应JSON字段:payload,说明:完整原始 JSON 内容,示例值及对应分析:???????';
|
||
COMMENT ON COLUMN billiards_ods.settlement_ticket_details.source_file IS '对应JSON字段:source_file,说明:原始文件名(含时间戳后缀),示例值及对应分析:???????';
|
||
COMMENT ON COLUMN billiards_ods.settlement_ticket_details.source_endpoint IS '对应JSON字段:source_endpoint,说明:抓取来源接口/URL 标识,示例值及对应分析:???????';
|
||
COMMENT ON COLUMN billiards_ods.settlement_ticket_details.fetched_at IS '对应JSON字段:fetched_at,说明:入库时间(ETL 拉取时间),示例值及对应分析:???????';
|
||
|
||
CREATE TABLE IF NOT EXISTS billiards_ods.store_goods_master (
|
||
id BIGINT PRIMARY KEY,
|
||
tenant_id BIGINT,
|
||
site_id BIGINT,
|
||
siteName TEXT,
|
||
tenant_goods_id BIGINT,
|
||
goods_name TEXT,
|
||
goods_bar_code TEXT,
|
||
goods_category_id BIGINT,
|
||
goods_second_category_id BIGINT,
|
||
oneCategoryName TEXT,
|
||
twoCategoryName TEXT,
|
||
unit TEXT,
|
||
sale_price NUMERIC(18,4),
|
||
cost_price NUMERIC(18,4),
|
||
cost_price_type INT,
|
||
min_discount_price NUMERIC(18,4),
|
||
safe_stock NUMERIC(18,4),
|
||
stock NUMERIC(18,4),
|
||
stock_A NUMERIC(18,4),
|
||
sale_num NUMERIC(18,4),
|
||
total_purchase_cost NUMERIC(18,4),
|
||
total_sales NUMERIC(18,4),
|
||
average_monthly_sales NUMERIC(18,4),
|
||
enable_status INT,
|
||
audit_status INT,
|
||
goods_state INT,
|
||
is_delete INT,
|
||
is_warehousing INT,
|
||
able_discount INT,
|
||
able_site_transfer INT,
|
||
forbid_sell_status INT,
|
||
"freeze" INT,
|
||
send_state INT,
|
||
custom_label_type INT,
|
||
option_required INT,
|
||
sale_channel INT,
|
||
remark TEXT,
|
||
pinyin_initial TEXT,
|
||
goods_cover TEXT,
|
||
create_time TIMESTAMP,
|
||
update_time TIMESTAMP,
|
||
payload JSONB NOT NULL,
|
||
source_file TEXT,
|
||
source_endpoint TEXT,
|
||
fetched_at TIMESTAMPTZ DEFAULT now()
|
||
);
|
||
|
||
COMMENT ON TABLE billiards_ods.store_goods_master IS '对应JSON字段:store_goods_master.json,说明:ODS 原始明细表(保留payload),示例值及对应分析:详见 store_goods_master-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.store_goods_master.id IS '对应JSON字段:id,说明::门店商品 ID,门店维度的商品主键。,示例值及对应分析:用途:在其它文件中经常以 site_goods_id 的名字出现,与这里的 id 一致,用来关联库存记录、销售记录等。';
|
||
COMMENT ON COLUMN billiards_ods.store_goods_master.tenant_id IS '对应JSON字段:tenant_id,说明::租户/品牌 ID。同一品牌下多个门店共享一个 tenant_id。,示例值及对应分析:枚举情况:本文件中为单一固定值(同一品牌)。';
|
||
COMMENT ON COLUMN billiards_ods.store_goods_master.site_id IS '对应JSON字段:site_id,说明::门店 ID。,示例值及对应分析:枚举情况:本文件中为单一固定值(同一家门店“朗朗桌球”),和其它 JSON 中的 site_id 一致。';
|
||
COMMENT ON COLUMN billiards_ods.store_goods_master.siteName IS '对应JSON字段:siteName,说明::门店名称,是对 site_id 的冗余展示,方便直接阅读,无需再去关联门店档案。,示例值及对应分析:2. 商品标识和分类维度';
|
||
COMMENT ON COLUMN billiards_ods.store_goods_master.tenant_goods_id IS '对应JSON字段:tenant_goods_id,说明::租户/品牌维度的商品 ID,相当于“全局商品 ID”。,示例值及对应分析:用途:用于跨门店或与“商品档案(商品档案.json)”对齐时使用。';
|
||
COMMENT ON COLUMN billiards_ods.store_goods_master.goods_name IS '对应JSON字段:goods_name,说明::商品名称,例如“合味道泡面”“地道肠”“麻将房茶位费”等。,示例值及对应分析:用途:业务展示字段,历史流水里也会冗余存一份商品名。';
|
||
COMMENT ON COLUMN billiards_ods.store_goods_master.goods_bar_code IS '对应JSON字段:goods_bar_code,说明::商品条形码(如 EAN-13 编码),用于扫码销售。此字段设计为可填,但此店目前未配置。,示例值及对应分析:?? store_goods_master-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.store_goods_master.goods_category_id IS '对应JSON字段:goods_category_id,说明::商品一级分类 ID。,示例值及对应分析:用途:';
|
||
COMMENT ON COLUMN billiards_ods.store_goods_master.goods_second_category_id IS '对应JSON字段:goods_second_category_id,说明::商品二级分类 ID。,示例值及对应分析:用途:';
|
||
COMMENT ON COLUMN billiards_ods.store_goods_master.oneCategoryName IS '对应JSON字段:oneCategoryName,说明::一级分类名称,如“零食”“酒水”“服务费”等。,示例值及对应分析:说明:与 goods_category_id 一一对应,是易读文本字段。';
|
||
COMMENT ON COLUMN billiards_ods.store_goods_master.twoCategoryName IS '对应JSON字段:twoCategoryName,说明::二级分类名称,如“面”“洋酒”“纸巾”等。,示例值及对应分析:说明:与 goods_second_category_id 对应。';
|
||
COMMENT ON COLUMN billiards_ods.store_goods_master.unit IS '对应JSON字段:unit,说明::商品计量单位(销售单位)。,示例值及对应分析:?? store_goods_master-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.store_goods_master.sale_price IS '对应JSON字段:sale_price,说明::商品标准销售价(挂牌价),单位为元。,示例值及对应分析:说明:实际结算时可能会打折或用券抵扣,但这个字段表示“定价”。';
|
||
COMMENT ON COLUMN billiards_ods.store_goods_master.cost_price IS '对应JSON字段:cost_price,说明::商品成本价(单件成本)。,示例值及对应分析:观察:';
|
||
COMMENT ON COLUMN billiards_ods.store_goods_master.cost_price_type IS '对应JSON字段:cost_price_type,说明:(结合成本字段推测):,示例值及对应分析:1 代表使用“固定成本价”(手工维护的 cost_price),provisional_total_cost 按“数量 × cost_price”算。';
|
||
COMMENT ON COLUMN billiards_ods.store_goods_master.min_discount_price IS '对应JSON字段:min_discount_price,说明::最低允许成交价(限价)。,示例值及对应分析:用法逻辑(推测):';
|
||
COMMENT ON COLUMN billiards_ods.store_goods_master.safe_stock IS '对应JSON字段:safe_stock,说明::安全库存量(阈值),低于该值时系统可以提示补货。,示例值及对应分析:当前门店尚未设置安全库存,所以全部为 0,仅起到结构占位作用。';
|
||
COMMENT ON COLUMN billiards_ods.store_goods_master.stock IS '对应JSON字段:stock,说明::当前可用库存数量(以 unit 为单位)。,示例值及对应分析:特征:可以是 0(库存卖完),也可以非常大(例如纸巾、茶位费这种按“份”计的虚拟库存设定)。';
|
||
COMMENT ON COLUMN billiards_ods.store_goods_master.stock_A IS '对应JSON字段:stock_A,说明:(系统设计):副单位库存数量。如果商品存在双单位(例如箱/瓶),stock_A 通常用于记录副单位库存。当前门店没有启用副单位库存管理,因此为 0。,示例值及对应分析:batch_stock_quantity';
|
||
COMMENT ON COLUMN billiards_ods.store_goods_master.sale_num IS '对应JSON字段:sale_num,说明::在当前统计口径下的销售数量(总销量,单位同 unit)。,示例值及对应分析:特征:和 total_sales 完全一致(当前导出时的统计口径下),说明两者是同一统计周期。';
|
||
COMMENT ON COLUMN billiards_ods.store_goods_master.total_purchase_cost IS '对应JSON字段:total_purchase_cost,说明::总采购成本,单位为元。,示例值及对应分析:当前数据:与 provisional_total_cost 完全相等。';
|
||
COMMENT ON COLUMN billiards_ods.store_goods_master.total_sales IS '对应JSON字段:total_sales,说明:(从命名看):累计销售数量。,示例值及对应分析:实际:当前数据中 total_sales == sale_num,说明此接口的统计区间 = “截至当前的全部历史”,因此数量一致。';
|
||
COMMENT ON COLUMN billiards_ods.store_goods_master.average_monthly_sales IS '对应JSON字段:average_monthly_sales,说明::平均月销量(件/月),根据某个统计周期内的销售数据折算而来。,示例值及对应分析:结构特征:';
|
||
COMMENT ON COLUMN billiards_ods.store_goods_master.enable_status IS '对应JSON字段:enable_status,说明:(结合名称与常见编码):,示例值及对应分析:1:启用。';
|
||
COMMENT ON COLUMN billiards_ods.store_goods_master.audit_status IS '对应JSON字段:audit_status,说明:(典型业务语义):,示例值及对应分析:2:审核通过。';
|
||
COMMENT ON COLUMN billiards_ods.store_goods_master.goods_state IS '对应JSON字段:goods_state,说明:类型:int,枚举,示例值及对应分析:观察值:';
|
||
COMMENT ON COLUMN billiards_ods.store_goods_master.is_delete IS '对应JSON字段:is_delete,说明::逻辑删除标志。,示例值及对应分析:0:未删除(有效档案);';
|
||
COMMENT ON COLUMN billiards_ods.store_goods_master.is_warehousing IS '对应JSON字段:is_warehousing,说明::是否纳入库存管理。,示例值及对应分析:1:启用库存管理(会有出入库流水)。';
|
||
COMMENT ON COLUMN billiards_ods.store_goods_master.able_discount IS '对应JSON字段:able_discount,说明:(结合命名):,示例值及对应分析:是否允许参与折扣。当前全部为 1,说明所有商品都允许打折。';
|
||
COMMENT ON COLUMN billiards_ods.store_goods_master.able_site_transfer IS '对应JSON字段:able_site_transfer,说明:(结合命名与值分布):,示例值及对应分析:表示是否允许跨门店调拨或跨站点共享库存。';
|
||
COMMENT ON COLUMN billiards_ods.store_goods_master.forbid_sell_status IS '对应JSON字段:forbid_sell_status,说明:类型:int,枚举,示例值及对应分析:观察值:全部为 1。';
|
||
COMMENT ON COLUMN billiards_ods.store_goods_master."freeze" IS '对应JSON字段:freeze,说明::冻结状态。,示例值及对应分析:0:未冻结;';
|
||
COMMENT ON COLUMN billiards_ods.store_goods_master.send_state IS '对应JSON字段:send_state,说明:(命名趋近“上架状态/可售状态”):,示例值及对应分析:1:可销售/可下单。';
|
||
COMMENT ON COLUMN billiards_ods.store_goods_master.custom_label_type IS '对应JSON字段:custom_label_type,说明:(推测):自定义标签类型。,示例值及对应分析:1:使用系统默认标签(未出现);';
|
||
COMMENT ON COLUMN billiards_ods.store_goods_master.option_required IS '对应JSON字段:option_required,说明:(推测):是否需要在销售时选择规格/选项。,示例值及对应分析:1:不要求额外选项(单规格商品);';
|
||
COMMENT ON COLUMN billiards_ods.store_goods_master.sale_channel IS '对应JSON字段:sale_channel,说明::销售渠道类型。,示例值及对应分析:常见模式:';
|
||
COMMENT ON COLUMN billiards_ods.store_goods_master.remark IS '对应JSON字段:remark,说明::商品备注(可以写口味说明、供应商、注意事项等)。当前尚未使用。,示例值及对应分析:sort';
|
||
COMMENT ON COLUMN billiards_ods.store_goods_master.pinyin_initial IS '对应JSON字段:pinyin_initial,说明::商品名称的拼音首字母缩写,有时多个别名用逗号分隔。,示例值及对应分析:作用:';
|
||
COMMENT ON COLUMN billiards_ods.store_goods_master.goods_cover IS '对应JSON字段:goods_cover,说明::商品图片 URL(如 OSS 对象存储地址),用于前端展示商品图片。,示例值及对应分析:?? store_goods_master-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.store_goods_master.create_time IS '对应JSON字段:create_time,说明::门店商品档案创建时间(商品在门店建立档案的时间点)。,示例值及对应分析:?? store_goods_master-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.store_goods_master.update_time IS '对应JSON字段:update_time,说明::最后一次修改该商品档案的时间(包括价格调整、状态变更等)。,示例值及对应分析:days_available';
|
||
COMMENT ON COLUMN billiards_ods.store_goods_master.payload IS '对应JSON字段:payload,说明:完整原始 JSON 内容,示例值及对应分析:???????';
|
||
COMMENT ON COLUMN billiards_ods.store_goods_master.source_file IS '对应JSON字段:source_file,说明:原始文件名(含时间戳后缀),示例值及对应分析:???????';
|
||
COMMENT ON COLUMN billiards_ods.store_goods_master.source_endpoint IS '对应JSON字段:source_endpoint,说明:抓取来源接口/URL 标识,示例值及对应分析:???????';
|
||
COMMENT ON COLUMN billiards_ods.store_goods_master.fetched_at IS '对应JSON字段:fetched_at,说明:入库时间(ETL 拉取时间),示例值及对应分析:???????';
|
||
|
||
CREATE TABLE IF NOT EXISTS billiards_ods.store_goods_sales_records (
|
||
id BIGINT PRIMARY KEY,
|
||
tenant_id BIGINT,
|
||
site_id BIGINT,
|
||
site_goods_id BIGINT,
|
||
tenant_goods_id BIGINT,
|
||
order_settle_id BIGINT,
|
||
order_trade_no TEXT,
|
||
order_goods_id BIGINT,
|
||
order_pay_id BIGINT,
|
||
order_coupon_id BIGINT,
|
||
ledger_name TEXT,
|
||
ledger_group_name TEXT,
|
||
ledger_amount NUMERIC(18,2),
|
||
ledger_count NUMERIC(18,4),
|
||
ledger_unit_price NUMERIC(18,4),
|
||
ledger_status INT,
|
||
discount_money NUMERIC(18,2),
|
||
coupon_deduct_money NUMERIC(18,2),
|
||
member_discount_amount NUMERIC(18,2),
|
||
option_coupon_deduct_money NUMERIC(18,2),
|
||
option_member_discount_money NUMERIC(18,2),
|
||
point_discount_money NUMERIC(18,2),
|
||
point_discount_money_cost NUMERIC(18,2),
|
||
real_goods_money NUMERIC(18,2),
|
||
cost_money NUMERIC(18,2),
|
||
push_money NUMERIC(18,2),
|
||
sales_type INT,
|
||
is_single_order INT,
|
||
is_delete INT,
|
||
goods_remark TEXT,
|
||
option_price NUMERIC(18,2),
|
||
option_value_name TEXT,
|
||
option_name TEXT,
|
||
member_coupon_id BIGINT,
|
||
package_coupon_id BIGINT,
|
||
sales_man_org_id BIGINT,
|
||
salesman_name TEXT,
|
||
salesman_role_id BIGINT,
|
||
salesman_user_id BIGINT,
|
||
operator_id BIGINT,
|
||
operator_name TEXT,
|
||
openSalesman TEXT,
|
||
site_table_id BIGINT,
|
||
tenant_goods_business_id BIGINT,
|
||
tenant_goods_category_id BIGINT,
|
||
create_time TIMESTAMP,
|
||
payload JSONB NOT NULL,
|
||
source_file TEXT,
|
||
source_endpoint TEXT,
|
||
fetched_at TIMESTAMPTZ DEFAULT now()
|
||
);
|
||
|
||
COMMENT ON TABLE billiards_ods.store_goods_sales_records IS '对应JSON字段:store_goods_sales_records.json,说明:ODS 原始明细表(保留payload),示例值及对应分析:详见 store_goods_sales_records-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.store_goods_sales_records.id IS '对应JSON字段:id,说明::本条「门店销售流水」记录的主键 ID。,示例值及对应分析:用途:在系统内部唯一标识这一条销售明细。';
|
||
COMMENT ON COLUMN billiards_ods.store_goods_sales_records.tenant_id IS '对应JSON字段:tenant_id,说明::租户/品牌 ID。,示例值及对应分析:特征:所有记录为同一个值,对应「非球科技系统中你的商户」。';
|
||
COMMENT ON COLUMN billiards_ods.store_goods_sales_records.site_id IS '对应JSON字段:site_id,说明::门店 ID(系统主键)。,示例值及对应分析:关系:';
|
||
COMMENT ON COLUMN billiards_ods.store_goods_sales_records.site_goods_id IS '对应JSON字段:site_goods_id,说明::门店商品 ID。,示例值及对应分析:关系:';
|
||
COMMENT ON COLUMN billiards_ods.store_goods_sales_records.tenant_goods_id IS '对应JSON字段:tenant_goods_id,说明::租户(品牌)级商品 ID(全局商品 ID)。,示例值及对应分析:关系:';
|
||
COMMENT ON COLUMN billiards_ods.store_goods_sales_records.order_settle_id IS '对应JSON字段:order_settle_id,说明:与台费、助教、团购套餐流水等表共享,形成「订单主表(结算)– 多种明细表」的结构。,示例值及对应分析:如果结账记录表有数据,order_settle_id 对应那里的主键,create_time 与订单结束时间基本一致。';
|
||
COMMENT ON COLUMN billiards_ods.store_goods_sales_records.order_trade_no IS '对应JSON字段:order_trade_no,说明:与台费、助教、团购套餐流水等表共享,形成「订单主表(结算)– 多种明细表」的结构。,示例值及对应分析:如果结账记录表有数据,order_settle_id 对应那里的主键,create_time 与订单结束时间基本一致。';
|
||
COMMENT ON COLUMN billiards_ods.store_goods_sales_records.order_goods_id IS '对应JSON字段:order_goods_id,说明::订单商品明细 ID(订单内部的商品行主键)。,示例值及对应分析:关系:';
|
||
COMMENT ON COLUMN billiards_ods.store_goods_sales_records.order_pay_id IS '对应JSON字段:order_pay_id,说明:连接到「支付记录」中的一条支付流水,再通过支付的 relate_type/relate_id 把支付和订单、充值等业务区分开。,示例值及对应分析:对于退款,则通过退款记录里的 relate_type/relate_id 反向关联到原来的订单或支付。';
|
||
COMMENT ON COLUMN billiards_ods.store_goods_sales_records.order_coupon_id IS '对应JSON字段:order_coupon_id,说明::订单级优惠券 ID。,示例值及对应分析:关系:';
|
||
COMMENT ON COLUMN billiards_ods.store_goods_sales_records.ledger_name IS '对应JSON字段:ledger_name,说明::销售项目名称(商品名称),例如 “哇哈哈矿泉水”“地道肠”“东方树叶”等。,示例值及对应分析:说明:业务展示用字段,历史流水即使商品改名,这里会保留当时的名字。';
|
||
COMMENT ON COLUMN billiards_ods.store_goods_sales_records.ledger_group_name IS '对应JSON字段:ledger_group_name,说明::销售项目所属的「门店内部分组名称」,类似前台菜单分组或大类标签。,示例值及对应分析:关系:';
|
||
COMMENT ON COLUMN billiards_ods.store_goods_sales_records.ledger_amount IS '对应JSON字段:ledger_amount,说明::原始应收金额,公式上接近 ledger_unit_price × ledger_count。,示例值及对应分析:说明:这是未考虑优惠前的金额基础,用于后续计算折扣和抵扣。';
|
||
COMMENT ON COLUMN billiards_ods.store_goods_sales_records.ledger_count IS '对应JSON字段:ledger_count,说明::销售数量(以 unit 为单位,unit 字段在门店商品档案中)。,示例值及对应分析:观测值:如 1, 2, 3, 6, 36 等。';
|
||
COMMENT ON COLUMN billiards_ods.store_goods_sales_records.ledger_unit_price IS '对应JSON字段:ledger_unit_price,说明::商品在该次销售中的「结算单价」(元/单位)。,示例值及对应分析:观测值示例:5.0, 8.0, 2.0, 10.0, 72.0 等。';
|
||
COMMENT ON COLUMN billiards_ods.store_goods_sales_records.ledger_status IS '对应JSON字段:ledger_status,说明::销售流水状态。,示例值及对应分析:1:正常有效。';
|
||
COMMENT ON COLUMN billiards_ods.store_goods_sales_records.discount_money IS '对应JSON字段:discount_money,说明::本条销售明细的「价格优惠金额」,即原价部分被减免掉的金额。,示例值及对应分析:典型关系:';
|
||
COMMENT ON COLUMN billiards_ods.store_goods_sales_records.coupon_deduct_money IS '对应JSON字段:coupon_deduct_money,说明::被优惠券 / 团购券直接抵扣到这条商品明细上的金额。,示例值及对应分析:说明:';
|
||
COMMENT ON COLUMN billiards_ods.store_goods_sales_records.member_discount_amount IS '对应JSON字段:member_discount_amount,说明::由会员身份(会员折扣)针对这一行商品产生的优惠金额。,示例值及对应分析:说明:尽管字段存在,但当前实际折扣可能合并反映在 discount_money 中,这个字段没有拆开体现。';
|
||
COMMENT ON COLUMN billiards_ods.store_goods_sales_records.option_coupon_deduct_money IS '对应JSON字段:option_coupon_deduct_money,说明::由优惠券抵扣“选项价格”的金额。,示例值及对应分析:上面这三个 option_* 字段,是为“主商品 + 选项”的更复杂计价方式预留的,本店当前所有记录都是单规格,选项体系未启用。';
|
||
COMMENT ON COLUMN billiards_ods.store_goods_sales_records.option_member_discount_money IS '对应JSON字段:option_member_discount_money,说明::由会员折扣作用在“选项价格”上的优惠金额。,示例值及对应分析:?? store_goods_sales_records-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.store_goods_sales_records.point_discount_money IS '对应JSON字段:point_discount_money,说明::由积分抵扣的金额(顾客兑换积分抵现金额)。,示例值及对应分析:?? store_goods_sales_records-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.store_goods_sales_records.point_discount_money_cost IS '对应JSON字段:point_discount_money_cost,说明::积分抵扣对应的“成本金额”(后台核算用),例如按积分成本来计提费用。,示例值及对应分析:?? store_goods_sales_records-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.store_goods_sales_records.real_goods_money IS '对应JSON字段:real_goods_money,说明::商品实际入账金额(考虑折扣、可能还会考虑其它抵扣后的实际销售金额)。,示例值及对应分析:观测值:5.0, 10.0, 8.0, 6.0, 4.0 等。';
|
||
COMMENT ON COLUMN billiards_ods.store_goods_sales_records.cost_money IS '对应JSON字段:cost_money,说明::本条销售对应的成本金额(以元计)。,示例值及对应分析:观测示例:0.01, 0.00, 3.58, 1.79, 0.64 等。';
|
||
COMMENT ON COLUMN billiards_ods.store_goods_sales_records.push_money IS '对应JSON字段:push_money,说明::本条销售对应的提成金额(给营业员/促销员的提成)。,示例值及对应分析:在启用营业员体系时,这里才会出现正数。';
|
||
COMMENT ON COLUMN billiards_ods.store_goods_sales_records.sales_type IS '对应JSON字段:sales_type,说明::销售类型。,示例值及对应分析:1:正常销售;';
|
||
COMMENT ON COLUMN billiards_ods.store_goods_sales_records.is_single_order IS '对应JSON字段:is_single_order,说明::是否单独订单标识。,示例值及对应分析:1:作为独立明细参与某个订单结算;';
|
||
COMMENT ON COLUMN billiards_ods.store_goods_sales_records.is_delete IS '对应JSON字段:is_delete,说明::逻辑删除标志。,示例值及对应分析:0:正常有效;';
|
||
COMMENT ON COLUMN billiards_ods.store_goods_sales_records.goods_remark IS '对应JSON字段:goods_remark,说明::商品备注/口味说明/特殊说明。,示例值及对应分析:用途:点单时如果需要额外说明,可以写在这里。';
|
||
COMMENT ON COLUMN billiards_ods.store_goods_sales_records.option_price IS '对应JSON字段:option_price,说明::商品选项(规格/加料)的附加价格。,示例值及对应分析:说明:如加冰、加料、升级大杯等产生附加费用时,理论上应该体现到这里。当前门店未使用此功能。';
|
||
COMMENT ON COLUMN billiards_ods.store_goods_sales_records.option_value_name IS '对应JSON字段:option_value_name,说明::商品选项名称(如规格、口味:大杯/小杯,不加冰等)。,示例值及对应分析:结构用途:';
|
||
COMMENT ON COLUMN billiards_ods.store_goods_sales_records.option_name IS '对应JSON字段:option_name,说明:?????? store_goods_sales_records-Analysis.md,示例值及对应分析:?? store_goods_sales_records-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.store_goods_sales_records.member_coupon_id IS '对应JSON字段:member_coupon_id,说明::会员券 ID(比如会员专享优惠券)。,示例值及对应分析:当前数据未使用,属于为会员权益预留的字段。';
|
||
COMMENT ON COLUMN billiards_ods.store_goods_sales_records.package_coupon_id IS '对应JSON字段:package_coupon_id,说明::套餐券 ID。,示例值及对应分析:关系:';
|
||
COMMENT ON COLUMN billiards_ods.store_goods_sales_records.sales_man_org_id IS '对应JSON字段:sales_man_org_id,说明::营业员所属组织/部门 ID。,示例值及对应分析:当前门店全部为 0,说明未启用这套销售员分组织的体系。';
|
||
COMMENT ON COLUMN billiards_ods.store_goods_sales_records.salesman_name IS '对应JSON字段:salesman_name,说明::营业员姓名(如果有为具体销售员记业绩,则在此填姓名)。,示例值及对应分析:?? store_goods_sales_records-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.store_goods_sales_records.salesman_role_id IS '对应JSON字段:salesman_role_id,说明::营业员的系统角色 ID(例如某个角色代码表示“销售员”)。,示例值及对应分析:?? store_goods_sales_records-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.store_goods_sales_records.salesman_user_id IS '对应JSON字段:salesman_user_id,说明::营业员用户 ID(系统账号 ID)。,示例值及对应分析:?? store_goods_sales_records-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.store_goods_sales_records.operator_id IS '对应JSON字段:operator_id,说明::操作员 ID(录入这笔销售的员工)。,示例值及对应分析:关系:';
|
||
COMMENT ON COLUMN billiards_ods.store_goods_sales_records.operator_name IS '对应JSON字段:operator_name,说明::操作员姓名,文字冗余。,示例值及对应分析:?? store_goods_sales_records-Analysis.md';
|
||
COMMENT ON COLUMN billiards_ods.store_goods_sales_records.openSalesman IS '对应JSON字段:openSalesman,说明:(结合系统其它文件推断):,示例值及对应分析:1:启用“营业员/销售员”机制(要指定 salesman);';
|
||
COMMENT ON COLUMN billiards_ods.store_goods_sales_records.site_table_id IS '对应JSON字段:site_table_id,说明::球台 ID。,示例值及对应分析:非 0:销售记录关联到具体某张桌台(例如顾客在台上点饮料)。';
|
||
COMMENT ON COLUMN billiards_ods.store_goods_sales_records.tenant_goods_business_id IS '对应JSON字段:tenant_goods_business_id,说明::租户级商品「业务大类」ID(例如“零食类”“酒水类”等更高维度)。,示例值及对应分析:2.2 门店 / 球台维度字段';
|
||
COMMENT ON COLUMN billiards_ods.store_goods_sales_records.tenant_goods_category_id IS '对应JSON字段:tenant_goods_category_id,说明::租户级商品一级分类 ID。,示例值及对应分析:关系:';
|
||
COMMENT ON COLUMN billiards_ods.store_goods_sales_records.create_time IS '对应JSON字段:create_time,说明::销售记录创建时间,通常就是结账时间或录入时间。,示例值及对应分析:用途:用于按时间维度查询销售流水,与订单层的时间字段对齐。';
|
||
COMMENT ON COLUMN billiards_ods.store_goods_sales_records.payload IS '对应JSON字段:payload,说明:完整原始 JSON 内容,示例值及对应分析:???????';
|
||
COMMENT ON COLUMN billiards_ods.store_goods_sales_records.source_file IS '对应JSON字段:source_file,说明:原始文件名(含时间戳后缀),示例值及对应分析:???????';
|
||
COMMENT ON COLUMN billiards_ods.store_goods_sales_records.source_endpoint IS '对应JSON字段:source_endpoint,说明:抓取来源接口/URL 标识,示例值及对应分析:???????';
|
||
COMMENT ON COLUMN billiards_ods.store_goods_sales_records.fetched_at IS '对应JSON字段:fetched_at,说明:入库时间(ETL 拉取时间),示例值及对应分析:???????';
|