CREATE DATABASE IF NOT EXISTS wendajia DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; USE wendajia; CREATE TABLE IF NOT EXISTS admin_users ( id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT, username VARCHAR(64) NOT NULL, password_hash VARCHAR(255) NOT NULL, display_name VARCHAR(64) NOT NULL, role_code VARCHAR(32) NOT NULL DEFAULT 'operator', answer_public_token VARCHAR(96) NULL, is_active TINYINT(1) NOT NULL DEFAULT 1, last_login_at DATETIME NULL, created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, PRIMARY KEY (id), UNIQUE KEY uk_admin_users_username (username), UNIQUE KEY uk_admin_users_answer_public_token (answer_public_token), KEY idx_admin_users_role (role_code), KEY idx_admin_users_status (is_active) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; CREATE TABLE IF NOT EXISTS admin_login_logs ( id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT, user_id BIGINT UNSIGNED NULL, username VARCHAR(64) NOT NULL, success TINYINT(1) NOT NULL, ip_address VARCHAR(45) NULL, user_agent TEXT NULL, created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (id), KEY idx_admin_login_logs_user (user_id), KEY idx_admin_login_logs_username (username), KEY idx_admin_login_logs_created (created_at), CONSTRAINT fk_admin_login_logs_user FOREIGN KEY (user_id) REFERENCES admin_users(id) ON DELETE SET NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; CREATE TABLE IF NOT EXISTS admin_usage_entries ( id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT, user_id BIGINT NOT NULL, username VARCHAR(64) NOT NULL, display_name VARCHAR(64) NOT NULL, department_name VARCHAR(255) NOT NULL DEFAULT '', entered_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (id), KEY idx_admin_usage_user_time (user_id, entered_at), KEY idx_admin_usage_entered_at (entered_at), KEY idx_admin_usage_department (department_name) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; -- 提问任务归属运营账号;历史数据允许为空,超级管理员仍可查看全部任务。 -- 新环境建表时请将 owner_id、shop_name 一并加入 ask_tasks;已有环境由应用启动时自动补列。 -- public_token 是对外分享链接标识,不应使用 task_no 拼接用户链接。 CREATE TABLE IF NOT EXISTS qa_bulk_generation_jobs ( id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT, public_id VARCHAR(64) NOT NULL, owner_id BIGINT NULL, payload_json LONGTEXT NOT NULL, answers_per_question INT NOT NULL, status VARCHAR(24) NOT NULL DEFAULT 'queued', total_count INT NOT NULL DEFAULT 0, completed_count INT NOT NULL DEFAULT 0, failed_count INT NOT NULL DEFAULT 0, created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, PRIMARY KEY (id), UNIQUE KEY uk_qa_bulk_generation_jobs_public_id (public_id), KEY idx_qa_bulk_generation_jobs_owner (owner_id), KEY idx_qa_bulk_generation_jobs_status (status) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; CREATE TABLE IF NOT EXISTS qa_bulk_generation_items ( id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT, job_id BIGINT UNSIGNED NOT NULL, sequence_no INT NOT NULL, question_text TEXT NOT NULL, answers_json LONGTEXT NULL, status VARCHAR(24) NOT NULL DEFAULT 'pending', attempts INT NOT NULL DEFAULT 0, error_message VARCHAR(500) NULL, created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, PRIMARY KEY (id), UNIQUE KEY uk_qa_bulk_generation_items_sequence (job_id, sequence_no), KEY idx_qa_bulk_generation_items_status (job_id, status), CONSTRAINT fk_qa_bulk_generation_items_job FOREIGN KEY (job_id) REFERENCES qa_bulk_generation_jobs(id) ON DELETE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;