001_initial.sql 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. -- ============================================================
  2. -- 域名流水监控 - 初始建表
  3. -- 文件: 001_initial.sql
  4. -- 日期: 2026-05-12
  5. -- ============================================================
  6. -- 创建业务 schema(如不存在)
  7. CREATE SCHEMA IF NOT EXISTS domain_monitor;
  8. -- ============================================================
  9. -- 监控域名表(用于配置需要监控的域名)
  10. -- ============================================================
  11. CREATE TABLE IF NOT EXISTS domain_monitor.monitored_domains (
  12. id SERIAL PRIMARY KEY,
  13. domain VARCHAR NOT NULL,
  14. is_active BOOLEAN DEFAULT TRUE,
  15. created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(),
  16. updated_at TIMESTAMP WITH TIME ZONE DEFAULT NOW()
  17. );
  18. CREATE UNIQUE INDEX IF NOT EXISTS ix_monitored_domains_domain ON domain_monitor.monitored_domains (domain);
  19. CREATE INDEX IF NOT EXISTS ix_monitored_domains_id ON domain_monitor.monitored_domains (id);
  20. -- ============================================================
  21. -- 监控大屏 - 超级管理员表
  22. -- ============================================================
  23. CREATE TABLE IF NOT EXISTS domain_monitor.super_admin (
  24. id SERIAL PRIMARY KEY,
  25. username VARCHAR NOT NULL,
  26. nickname VARCHAR,
  27. created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW()
  28. );
  29. -- ============================================================
  30. -- 监控大屏 - 超级管理员与租户关联表
  31. -- ============================================================
  32. CREATE TABLE IF NOT EXISTS domain_monitor.super_admin_tenant (
  33. id SERIAL PRIMARY KEY,
  34. super_admin_id INTEGER NOT NULL,
  35. tenant_id INTEGER NOT NULL
  36. );
  37. CREATE INDEX IF NOT EXISTS ix_sat_super_admin ON domain_monitor.super_admin_tenant (super_admin_id);
  38. CREATE INDEX IF NOT EXISTS ix_sat_tenant ON domain_monitor.super_admin_tenant (tenant_id);
  39. -- ============================================================
  40. -- 监控大屏 - 租户(企业)表
  41. -- ============================================================
  42. CREATE TABLE IF NOT EXISTS domain_monitor.tenant (
  43. id SERIAL PRIMARY KEY,
  44. company_name VARCHAR,
  45. subdomain VARCHAR NOT NULL,
  46. balance NUMERIC(20, 4) DEFAULT 0,
  47. created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(),
  48. updated_at TIMESTAMP WITH TIME ZONE DEFAULT NOW()
  49. );
  50. CREATE UNIQUE INDEX IF NOT EXISTS ix_tenant_subdomain ON domain_monitor.tenant (subdomain);
  51. -- ============================================================
  52. -- 监控大屏 - 模型信息参考表
  53. -- ============================================================
  54. CREATE TABLE IF NOT EXISTS domain_monitor.models (
  55. id SERIAL PRIMARY KEY,
  56. model_code VARCHAR NOT NULL,
  57. model_name VARCHAR NOT NULL,
  58. original_price NUMERIC(20, 4)
  59. );
  60. CREATE UNIQUE INDEX IF NOT EXISTS ix_model_code ON domain_monitor.models (model_code);
  61. -- ============================================================
  62. -- 监控大屏 - 用户模型消费明细表
  63. -- 记录每次模型调用的消费数据,包含平台原价、企业折扣、用户折扣等信息
  64. -- ============================================================
  65. CREATE TABLE IF NOT EXISTS domain_monitor.user_consumption_detail (
  66. id SERIAL PRIMARY KEY,
  67. user_id VARCHAR NOT NULL,
  68. tenant_id INTEGER NOT NULL,
  69. model_code VARCHAR NOT NULL,
  70. call_count INTEGER DEFAULT 0,
  71. -- 用户侧:用户实际支付
  72. user_actual_total NUMERIC(20, 4) DEFAULT 0,
  73. user_discount NUMERIC(10, 4) DEFAULT 1.0000,
  74. user_actual_price NUMERIC(20, 4),
  75. -- 租户侧:平台向企业收取
  76. tenant_actual_total NUMERIC(20, 4) DEFAULT 0,
  77. tenant_discount NUMERIC(10, 4) DEFAULT 1.0000,
  78. tenant_actual_price NUMERIC(20, 4),
  79. -- 平台原价
  80. original_price NUMERIC(20, 4),
  81. -- 消费时间(用于时间范围过滤)
  82. consumption_date TIMESTAMP WITH TIME ZONE NOT NULL,
  83. created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW()
  84. );
  85. CREATE INDEX IF NOT EXISTS ix_ucd_user ON domain_monitor.user_consumption_detail (user_id);
  86. CREATE INDEX IF NOT EXISTS ix_ucd_tenant ON domain_monitor.user_consumption_detail (tenant_id);
  87. CREATE INDEX IF NOT EXISTS ix_ucd_model ON domain_monitor.user_consumption_detail (model_code);
  88. CREATE INDEX IF NOT EXISTS ix_ucd_consumption_date ON domain_monitor.user_consumption_detail (consumption_date);