-- =====================================================================================
-- Schema: 客服模块核心表
-- 位置：docs/sql/10_schema/kefu/ml_kefu_tables_v1.sql
-- 对象类型：Schema (DDL)
-- 版本：v1
-- 说明：包含客服账号、话术、留言及自动回复逻辑
-- =====================================================================================

-- 1. 客服人员表
CREATE TABLE IF NOT EXISTS public.ml_kefu_accounts (
  id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
  user_id UUID NOT NULL REFERENCES public.ak_users(id), -- 关联主用户表
  
  nickname TEXT NOT NULL,         -- 客服昵称
  avatar TEXT NULL,               -- 客服头像
  
  status SMALLINT NOT NULL DEFAULT 1, -- 1:启用, 0:禁用
  is_online BOOLEAN NOT NULL DEFAULT FALSE,
  
  created_at TIMESTAMPTZ NOT NULL DEFAULT now(),
  updated_at TIMESTAMPTZ NOT NULL DEFAULT now()
);

-- 2. 话术分类表
CREATE TABLE IF NOT EXISTS public.ml_kefu_word_categories (
  id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
  name TEXT NOT NULL,
  sort INT NOT NULL DEFAULT 0,
  created_at TIMESTAMPTZ NOT NULL DEFAULT now(),
  updated_at TIMESTAMPTZ NOT NULL DEFAULT now()
);

-- 3. 客服快捷话术表
CREATE TABLE IF NOT EXISTS public.ml_kefu_words (
  id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
  category_id UUID NOT NULL REFERENCES public.ml_kefu_word_categories(id) ON DELETE CASCADE,
  
  title TEXT NOT NULL,
  content TEXT NOT NULL,
  sort INT NOT NULL DEFAULT 0,
  
  created_at TIMESTAMPTZ NOT NULL DEFAULT now(),
  updated_at TIMESTAMPTZ NOT NULL DEFAULT now()
);

-- 4. 用户留言反馈表
CREATE TABLE IF NOT EXISTS public.ml_kefu_feedbacks (
  id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
  user_id UUID NULL REFERENCES public.ak_users(id), -- 允许匿名留言
  
  nickname TEXT NULL,
  phone TEXT NULL,
  content TEXT NOT NULL,
  
  status SMALLINT NOT NULL DEFAULT 0, -- 0:未处理, 1:已处理
  reply_content TEXT NULL,            -- 管理员回复内容
  processed_at TIMESTAMPTZ NULL,      -- 处理时间
  
  created_at TIMESTAMPTZ NOT NULL DEFAULT now(),
  updated_at TIMESTAMPTZ NOT NULL DEFAULT now()
);

-- 5. 关键词自动回复表
CREATE TABLE IF NOT EXISTS public.ml_kefu_auto_replies (
  id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
  keyword TEXT NOT NULL,
  content TEXT NOT NULL,
  reply_type TEXT NOT NULL DEFAULT 'text', -- text, image
  
  status SMALLINT NOT NULL DEFAULT 1, -- 1:开启, 0:关闭
  
  created_at TIMESTAMPTZ NOT NULL DEFAULT now(),
  updated_at TIMESTAMPTZ NOT NULL DEFAULT now()
);

-- 索引
CREATE INDEX IF NOT EXISTS ml_kefu_accounts_user_id_idx ON public.ml_kefu_accounts (user_id);
CREATE INDEX IF NOT EXISTS ml_kefu_words_category_id_idx ON public.ml_kefu_words (category_id);
CREATE INDEX IF NOT EXISTS ml_kefu_feedbacks_status_idx ON public.ml_kefu_feedbacks (status);
CREATE INDEX IF NOT EXISTS ml_kefu_auto_replies_keyword_idx ON public.ml_kefu_auto_replies (keyword);
