Przeglądaj źródła

fix: 一次性修复所有环境变量和数据库字段缺失问题

环境变量:
- 补齐 AES_ENCRYPTION_KEY, JWT_SECRET_KEY, JWT_EXPIRE_HOURS 到 docker-compose

数据库:
- audio_synthesis 表添加 review_status/reviewed_by/reviewed_at/reject_reason
- user_local_model_permission 表添加 has_access/created_at/updated_at
- 同步更新 aigcspace_clean.sql 初始化脚本

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
mengboxin137-blip 6 godzin temu
rodzic
commit
2a20f4051f

+ 3 - 0
.env

@@ -16,6 +16,9 @@ REDIS_PORT_EXTERNAL=6380
 BACKEND_PORT=8010
 DEBUG=false
 ENCRYPTION_KEY=js6w4nyx5ifkr2n7a3xi0o8p6q7g7ce9
+AES_ENCRYPTION_KEY=dzp50T2DEBhRMiLZkLu0rp7o7vySuETKtgKbGm7pWAM=
+JWT_SECRET_KEY=wxcz-aigc-space-jwt-secret-key-2024
+JWT_EXPIRE_HOURS=24
 
 # ==================== 前端配置 ====================
 NGINX_PORT=8088

+ 13 - 2
backend/aigcspace_clean.sql

@@ -6182,7 +6182,11 @@ CREATE TABLE "aigcspace"."audio_synthesis" (
   "created_at" timestamp(6) DEFAULT CURRENT_TIMESTAMP,
   "custom_name" varchar(200) COLLATE "pg_catalog"."default",
   "completed_at" timestamp(6),
-  "bill" numeric(10,4) DEFAULT 0
+  "bill" numeric(10,4) DEFAULT 0,
+  "review_status" varchar(20) COLLATE "pg_catalog"."default" DEFAULT 'pending'::character varying,
+  "reviewed_by" int4,
+  "reviewed_at" timestamp(6),
+  "reject_reason" varchar(500) COLLATE "pg_catalog"."default"
 )
 ;
 COMMENT ON COLUMN "aigcspace"."audio_synthesis"."id" IS '主键ID';
@@ -6195,6 +6199,10 @@ COMMENT ON COLUMN "aigcspace"."audio_synthesis"."duration" IS '音频时长(
 COMMENT ON COLUMN "aigcspace"."audio_synthesis"."format" IS '音频格式(mp3/wav/pcm)';
 COMMENT ON COLUMN "aigcspace"."audio_synthesis"."characters" IS '文本字符数';
 COMMENT ON COLUMN "aigcspace"."audio_synthesis"."created_at" IS '创建时间';
+COMMENT ON COLUMN "aigcspace"."audio_synthesis"."review_status" IS '审核状态: pending/approved/rejected';
+COMMENT ON COLUMN "aigcspace"."audio_synthesis"."reviewed_by" IS '审核人ID';
+COMMENT ON COLUMN "aigcspace"."audio_synthesis"."reviewed_at" IS '审核时间';
+COMMENT ON COLUMN "aigcspace"."audio_synthesis"."reject_reason" IS '拒绝原因';
 COMMENT ON TABLE "aigcspace"."audio_synthesis" IS '语音合成记录表';
 
 -- ----------------------------
@@ -7256,7 +7264,10 @@ CREATE TABLE "aigcspace"."user_local_model_permission" (
   "user_id" varchar(50) COLLATE "pg_catalog"."default" NOT NULL,
   "model_id" int4 NOT NULL,
   "granted_at" timestamp(6) DEFAULT CURRENT_TIMESTAMP,
-  "granted_by" varchar(50) COLLATE "pg_catalog"."default"
+  "granted_by" varchar(50) COLLATE "pg_catalog"."default",
+  "has_access" bool DEFAULT false,
+  "created_at" timestamp(6) DEFAULT CURRENT_TIMESTAMP,
+  "updated_at" timestamp(6) DEFAULT CURRENT_TIMESTAMP
 )
 ;
 

+ 27 - 0
backend/migrations/057_add_missing_columns.sql

@@ -0,0 +1,27 @@
+-- 057: 一次性修复所有数据库表缺少的字段
+-- 对比 Python 模型与 SQL 初始化脚本的差异
+
+-- ============================================
+-- 1. audio_synthesis 表:添加审核相关字段
+-- ============================================
+ALTER TABLE aigcspace.audio_synthesis
+ADD COLUMN IF NOT EXISTS review_status VARCHAR(20) DEFAULT 'pending',
+ADD COLUMN IF NOT EXISTS reviewed_by INTEGER,
+ADD COLUMN IF NOT EXISTS reviewed_at TIMESTAMP,
+ADD COLUMN IF NOT EXISTS reject_reason VARCHAR(500);
+
+COMMENT ON COLUMN aigcspace.audio_synthesis.review_status IS '审核状态: pending/approved/rejected';
+COMMENT ON COLUMN aigcspace.audio_synthesis.reviewed_by IS '审核人ID';
+COMMENT ON COLUMN aigcspace.audio_synthesis.reviewed_at IS '审核时间';
+COMMENT ON COLUMN aigcspace.audio_synthesis.reject_reason IS '拒绝原因';
+
+-- ============================================
+-- 2. user_local_model_permission 表:对齐 Python 模型
+--    Python 模型用 has_access/created_at/updated_at
+--    SQL 用 granted_at/granted_by
+--    保留旧字段,添加新字段
+-- ============================================
+ALTER TABLE aigcspace.user_local_model_permission
+ADD COLUMN IF NOT EXISTS has_access BOOLEAN DEFAULT FALSE,
+ADD COLUMN IF NOT EXISTS created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
+ADD COLUMN IF NOT EXISTS updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP;

+ 0 - 8
backend/migrations/057_add_review_columns_to_audio_synthesis.sql

@@ -1,8 +0,0 @@
--- 057: 为 audio_synthesis 表添加审核相关字段
--- 对应 model: audio.py 中 AudioSynthesis 的 review_status 等字段
-
-ALTER TABLE aigcspace.audio_synthesis
-ADD COLUMN IF NOT EXISTS review_status VARCHAR(20) DEFAULT 'pending',
-ADD COLUMN IF NOT EXISTS reviewed_by INTEGER,
-ADD COLUMN IF NOT EXISTS reviewed_at TIMESTAMP,
-ADD COLUMN IF NOT EXISTS reject_reason VARCHAR(500);

+ 3 - 0
docker-compose.yml

@@ -53,6 +53,9 @@ services:
       - REDIS_URL=redis://redis:6379
       - REDIS_PASSWORD=${REDIS_PASSWORD:-redis123}
       - ENCRYPTION_KEY=${ENCRYPTION_KEY:-wxcz-aigc-default-encryption-key}
+      - AES_ENCRYPTION_KEY=${AES_ENCRYPTION_KEY:-}
+      - JWT_SECRET_KEY=${JWT_SECRET_KEY:-wxcz-aigc-space-jwt-secret-key-2024}
+      - JWT_EXPIRE_HOURS=${JWT_EXPIRE_HOURS:-24}
       - DB_POOL_SIZE=2
       - DB_MAX_OVERFLOW=1
       - GUNICORN_WORKERS=2