172_video_per_second_billing_metadata.sql 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. -- Grok video billing is per second of generated output (xAI rate card), so usage
  2. -- rows must record the billed resolution and duration for auditability. The
  3. -- image-size check constraint must also exempt any video row by video_count
  4. -- instead of billing_mode='video' alone: a video request billed through a
  5. -- token-mode channel price produces billing_mode='token' with image_count=1
  6. -- (legacy media counter) and no image_size, which the previous constraint
  7. -- rejected and silently dropped the whole billing transaction.
  8. ALTER TABLE usage_logs
  9. ADD COLUMN IF NOT EXISTS video_count INTEGER NOT NULL DEFAULT 0,
  10. ADD COLUMN IF NOT EXISTS video_resolution VARCHAR(10),
  11. ADD COLUMN IF NOT EXISTS video_duration_seconds INTEGER;
  12. COMMENT ON COLUMN usage_logs.video_count IS '视频生成数量;>0 表示本行是视频生成用量';
  13. COMMENT ON COLUMN usage_logs.video_resolution IS '计费用视频分辨率 480p/720p/1080p';
  14. COMMENT ON COLUMN usage_logs.video_duration_seconds IS '提交时请求的视频时长(秒),按秒计费的乘数';
  15. ALTER TABLE usage_logs
  16. DROP CONSTRAINT IF EXISTS usage_logs_image_billing_size_check;
  17. ALTER TABLE usage_logs
  18. ADD CONSTRAINT usage_logs_image_billing_size_check
  19. CHECK (
  20. image_count <= 0
  21. OR billing_mode = 'video'
  22. OR COALESCE(video_count, 0) > 0
  23. OR (
  24. image_size IS NOT NULL
  25. AND image_size IN ('1K', '2K', '4K', 'mixed')
  26. )
  27. ) NOT VALID;
  28. -- Group video prices are per-second rates (USD/s), matching the xAI rate card;
  29. -- total cost = per-second price x duration seconds. Clarify the column docs
  30. -- introduced by migration 170, which read as per-video prices.
  31. COMMENT ON COLUMN groups.video_price_480p IS '480p 视频生成每秒单价 (USD/s),Grok 平台使用';
  32. COMMENT ON COLUMN groups.video_price_720p IS '720p 视频生成每秒单价 (USD/s),Grok 平台使用';
  33. COMMENT ON COLUMN groups.video_price_1080p IS '1080p 视频生成每秒单价 (USD/s),Grok 平台使用';