Explorar o código

feat: 追加 A/B 实验账号 A031–A040、B031–B040

扩展特殊用户种子脚本至各 40 个账号,并同步迁移脚本说明。

Co-authored-by: Cursor <cursoragent@cursor.com>
zlwu hai 4 meses
pai
achega
354fa18abd

+ 1 - 1
backend/migrations/add_special_user_fields.sql

@@ -1,5 +1,5 @@
 /*
-  特殊实验用户字段(A/B 组,共 60 人)
+  特殊实验用户字段(A/B 组,各 40 人)
   - is_special_user: 是否特殊实验用户
   - special_group: 分组 A / B(仅特殊用户有值)
 

+ 2 - 2
backend/migrations/migrate_special_users_init.py

@@ -1,5 +1,5 @@
 """
-特殊实验用户:加字段 + 预置 A/B 组 60 个账号
+特殊实验用户:加字段 + 预置 A/B 组各 40 个账号(含 A031–A040、B031–B040)
 运行(在 backend 目录): python migrations/migrate_special_users_init.py
 """
 import asyncio
@@ -78,7 +78,7 @@ async def migrate() -> bool:
             else:
                 print("✅ is_special_user 字段已存在,跳过 ALTER")
 
-            print("🔄 预置 A/B 组 60 个账号...")
+            print("🔄 预置 A/B 组各 40 个账号(A001–A040、B001–B040)...")
             seed_path = MIGRATIONS_DIR / "seed_special_users_ab_groups.sql"
             seed_sql = seed_path.read_text(encoding="utf-8")
             for stmt in [s.strip() for s in seed_sql.split(";") if s.strip()]:

+ 73 - 5
backend/migrations/seed_special_users_ab_groups.sql

@@ -1,7 +1,7 @@
 /*
-  预置 60 个特殊实验账号(尚未完成首次验证码登录)
-  - A 组:A001@lyrria.com ~ A030@lyrria.com
-  - B 组:B001@lyrria.com ~ B030@lyrria.com
+  预置 80 个特殊实验账号(尚未完成首次验证码登录)
+  - A 组:A001@lyrria.com ~ A040@lyrria.com
+  - B 组:B001@lyrria.com ~ B040@lyrria.com
 
   前置条件:
   1. 已执行 add_special_user_fields.sql
@@ -18,7 +18,7 @@
 
 SET NAMES utf8mb4;
 
--- A 组 30 人
+-- A 组 A001 ~ A030
 INSERT INTO `users` (
   `user_id`,
   `username`,
@@ -56,7 +56,41 @@ ON DUPLICATE KEY UPDATE
   `is_special_user` = IF(`user_type` = 'registered', `is_special_user`, VALUES(`is_special_user`)),
   `special_group` = IF(`user_type` = 'registered', `special_group`, VALUES(`special_group`));
 
--- B 组 30 人
+-- A 组 A031 ~ A040(追加 10 人)
+INSERT INTO `users` (
+  `user_id`,
+  `username`,
+  `user_type`,
+  `user_segment`,
+  `is_test_user`,
+  `is_special_user`,
+  `special_group`,
+  `email`,
+  `is_verified`,
+  `user_level`,
+  `current_background_image_id`
+)
+SELECT
+  UUID(),
+  CONCAT('A', LPAD(n, 3, '0')),
+  'guest',
+  'individual',
+  0,
+  1,
+  'A',
+  CONCAT('A', LPAD(n, 3, '0'), '@lyrria.com'),
+  0,
+  0,
+  'default'
+FROM (
+  SELECT 31 AS n UNION ALL SELECT 32 UNION ALL SELECT 33 UNION ALL SELECT 34 UNION ALL SELECT 35
+  UNION ALL SELECT 36 UNION ALL SELECT 37 UNION ALL SELECT 38 UNION ALL SELECT 39 UNION ALL SELECT 40
+) AS seq
+ON DUPLICATE KEY UPDATE
+  `is_special_user` = IF(`user_type` = 'registered', `is_special_user`, VALUES(`is_special_user`)),
+  `special_group` = IF(`user_type` = 'registered', `special_group`, VALUES(`special_group`));
+
+-- B 组 B001 ~ B030
 INSERT INTO `users` (
   `user_id`,
   `username`,
@@ -94,6 +128,40 @@ ON DUPLICATE KEY UPDATE
   `is_special_user` = IF(`user_type` = 'registered', `is_special_user`, VALUES(`is_special_user`)),
   `special_group` = IF(`user_type` = 'registered', `special_group`, VALUES(`special_group`));
 
+-- B 组 B031 ~ B040(追加 10 人)
+INSERT INTO `users` (
+  `user_id`,
+  `username`,
+  `user_type`,
+  `user_segment`,
+  `is_test_user`,
+  `is_special_user`,
+  `special_group`,
+  `email`,
+  `is_verified`,
+  `user_level`,
+  `current_background_image_id`
+)
+SELECT
+  UUID(),
+  CONCAT('B', LPAD(n, 3, '0')),
+  'guest',
+  'individual',
+  0,
+  1,
+  'B',
+  CONCAT('B', LPAD(n, 3, '0'), '@lyrria.com'),
+  0,
+  0,
+  'default'
+FROM (
+  SELECT 31 AS n UNION ALL SELECT 32 UNION ALL SELECT 33 UNION ALL SELECT 34 UNION ALL SELECT 35
+  UNION ALL SELECT 36 UNION ALL SELECT 37 UNION ALL SELECT 38 UNION ALL SELECT 39 UNION ALL SELECT 40
+) AS seq
+ON DUPLICATE KEY UPDATE
+  `is_special_user` = IF(`user_type` = 'registered', `is_special_user`, VALUES(`is_special_user`)),
+  `special_group` = IF(`user_type` = 'registered', `special_group`, VALUES(`special_group`));
+
 -- 校验
 SELECT
   `special_group`,