039_create_config_review_audit_tables.sql 3.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. -- 039: 创建系统配置、内容审核、日志审计相关表
  2. -- 1. 系统配置表
  3. CREATE TABLE IF NOT EXISTS aigcspace.system_config (
  4. id SERIAL PRIMARY KEY,
  5. config_key VARCHAR(100) UNIQUE NOT NULL,
  6. config_value TEXT NOT NULL,
  7. config_type VARCHAR(20) NOT NULL, -- string/number/boolean/json
  8. category VARCHAR(50) NOT NULL, -- basic/feature/limit/third_party
  9. description VARCHAR(500),
  10. updated_by INTEGER REFERENCES admin_users(id),
  11. updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
  12. created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
  13. );
  14. -- 2. 配置修改历史表
  15. CREATE TABLE IF NOT EXISTS aigcspace.config_history (
  16. id SERIAL PRIMARY KEY,
  17. config_key VARCHAR(100) NOT NULL,
  18. old_value TEXT,
  19. new_value TEXT NOT NULL,
  20. updated_by INTEGER REFERENCES admin_users(id),
  21. updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
  22. );
  23. -- 3. 登录日志表
  24. CREATE TABLE IF NOT EXISTS aigcspace.login_log (
  25. id SERIAL PRIMARY KEY,
  26. user_id VARCHAR(50) NOT NULL,
  27. username VARCHAR(100),
  28. user_type VARCHAR(20) NOT NULL, -- admin/user
  29. login_result VARCHAR(20) NOT NULL, -- success/failed
  30. fail_reason VARCHAR(200),
  31. ip_address VARCHAR(50),
  32. user_agent TEXT,
  33. created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
  34. );
  35. -- 4. API调用日志表
  36. CREATE TABLE IF NOT EXISTS aigcspace.api_log (
  37. id SERIAL PRIMARY KEY,
  38. user_id VARCHAR(50),
  39. username VARCHAR(100),
  40. api_path VARCHAR(500) NOT NULL,
  41. request_method VARCHAR(10) NOT NULL,
  42. request_params JSONB,
  43. response_status INTEGER,
  44. response_time INTEGER, -- 毫秒
  45. created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
  46. );
  47. -- 5. 为ai_picture表添加审核字段
  48. ALTER TABLE aigcspace.ai_picture ADD COLUMN IF NOT EXISTS review_status VARCHAR(20) DEFAULT 'pending';
  49. ALTER TABLE aigcspace.ai_picture ADD COLUMN IF NOT EXISTS reviewed_by INTEGER REFERENCES aigcspace.admin_users(id);
  50. ALTER TABLE aigcspace.ai_picture ADD COLUMN IF NOT EXISTS reviewed_at TIMESTAMP;
  51. ALTER TABLE aigcspace.ai_picture ADD COLUMN IF NOT EXISTS reject_reason VARCHAR(500);
  52. -- 6. 为ai_video表添加审核字段
  53. ALTER TABLE aigcspace.ai_video ADD COLUMN IF NOT EXISTS review_status VARCHAR(20) DEFAULT 'pending';
  54. ALTER TABLE aigcspace.ai_video ADD COLUMN IF NOT EXISTS reviewed_by INTEGER REFERENCES aigcspace.admin_users(id);
  55. ALTER TABLE aigcspace.ai_video ADD COLUMN IF NOT EXISTS reviewed_at TIMESTAMP;
  56. ALTER TABLE aigcspace.ai_video ADD COLUMN IF NOT EXISTS reject_reason VARCHAR(500);
  57. -- 创建索引
  58. CREATE INDEX IF NOT EXISTS idx_config_category ON aigcspace.system_config(category);
  59. CREATE INDEX IF NOT EXISTS idx_config_key ON aigcspace.system_config(config_key);
  60. CREATE INDEX IF NOT EXISTS idx_history_config_key ON aigcspace.config_history(config_key);
  61. CREATE INDEX IF NOT EXISTS idx_history_updated_at ON aigcspace.config_history(updated_at DESC);
  62. CREATE INDEX IF NOT EXISTS idx_login_user_id ON aigcspace.login_log(user_id);
  63. CREATE INDEX IF NOT EXISTS idx_login_created_at ON aigcspace.login_log(created_at DESC);
  64. CREATE INDEX IF NOT EXISTS idx_login_result ON aigcspace.login_log(login_result);
  65. CREATE INDEX IF NOT EXISTS idx_api_user_id ON aigcspace.api_log(user_id);
  66. CREATE INDEX IF NOT EXISTS idx_api_created_at ON aigcspace.api_log(created_at DESC);
  67. CREATE INDEX IF NOT EXISTS idx_api_path ON aigcspace.api_log(api_path);
  68. CREATE INDEX IF NOT EXISTS idx_picture_review_status ON aigcspace.ai_picture(review_status);
  69. CREATE INDEX IF NOT EXISTS idx_video_review_status ON aigcspace.ai_video(review_status);