From 4635fea69380179c1ebbb7f2a4a93369ce6340aa Mon Sep 17 00:00:00 2001 From: hailin Date: Mon, 12 Jan 2026 03:02:55 -0800 Subject: [PATCH] =?UTF-8?q?chore(migrations):=20=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E5=BA=93=E8=BF=81=E7=A7=BB=E8=84=9A=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - auth-service: 20260112110000_add_nickname_to_synced_legacy_users - synced_legacy_users 表添加 nickname 字段 - mining-admin-service: 20260112110000_add_referral_adoption_nickname - synced_users 表添加 nickname 字段 - 创建 synced_referrals 表 (推荐关系) - 创建 synced_adoptions 表 (认种记录) - 相关索引和外键约束 Co-Authored-By: Claude Opus 4.5 --- .claude/settings.local.json | 7 ++- .../migration.sql | 2 + .../migration.sql | 45 +++++++++++++++++++ 3 files changed, 53 insertions(+), 1 deletion(-) create mode 100644 backend/services/auth-service/prisma/migrations/20260112110000_add_nickname_to_synced_legacy_users/migration.sql create mode 100644 backend/services/mining-admin-service/prisma/migrations/20260112110000_add_referral_adoption_nickname/migration.sql diff --git a/.claude/settings.local.json b/.claude/settings.local.json index bb2ca883..da902624 100644 --- a/.claude/settings.local.json +++ b/.claude/settings.local.json @@ -749,7 +749,12 @@ "Bash(ssh -o ProxyCommand=\"ssh -W %h:%p ceshi@103.39.231.231\" ceshi@192.168.1.111 \"docker exec rwa-postgres psql -U rwa_user -d rwa_contribution -c ''SELECT * FROM synced_referrals LIMIT 3;''\")", "Bash(ssh -o ProxyCommand=\"ssh -W %h:%p ceshi@103.39.231.231\" ceshi@192.168.1.111 \"docker exec rwa-postgres psql -U rwa_user -d rwa_mining_admin -c ''\\\\d synced_users''\")", "Bash(ssh -o ProxyCommand=\"ssh -W %h:%p ceshi@103.39.231.231\" ceshi@192.168.1.111 \"docker exec rwa-postgres psql -U rwa_user -d rwa_mining_admin -c \"\"SELECT table_name FROM information_schema.tables WHERE table_schema=''public'' ORDER BY table_name;\"\"\")", - "Bash(dir /b \"c:\\\\Users\\\\dong\\\\Desktop\\\\rwadurian\\\\backend\\\\services\\\\contribution-service\\\\src\\\\domain\\\\events\")" + "Bash(dir /b \"c:\\\\Users\\\\dong\\\\Desktop\\\\rwadurian\\\\backend\\\\services\\\\contribution-service\\\\src\\\\domain\\\\events\")", + "Bash(git commit -m \"$\\(cat <<''EOF''\nfeat\\(sync\\): 完善 CDC 数据同步 - 添加推荐关系、认种记录和昵称字段\n\n- auth-service:\n - SyncedLegacyUser 表添加 nickname 字段\n - LegacyUserMigratedEvent 添加 nickname 参数\n - CDC consumer 同步 nickname 字段\n - SyncedLegacyUserData 接口添加 nickname\n\n- contribution-service:\n - 新增 ReferralSyncedEvent 事件类\n - 新增 AdoptionSyncedEvent 事件类\n - admin.controller 添加 publish-all APIs:\n - POST /admin/referrals/publish-all\n - POST /admin/adoptions/publish-all\n\n- mining-admin-service:\n - SyncedUser 表添加 nickname 字段\n - 新增 SyncedReferral 表 \\(推荐关系\\)\n - 新增 SyncedAdoption 表 \\(认种记录\\)\n - handleReferralSynced 处理器\n - handleAdoptionSynced 处理器\n - handleLegacyUserMigrated 处理 nickname\n\n- deploy-mining.sh:\n - full_reset 更新为 14 步\n - Step 13: 发布推荐关系\n - Step 14: 发布认种记录\n\n解决 mining-admin-web 缺少昵称、推荐人、认种数据的问题\n\nCo-Authored-By: Claude Opus 4.5 \nEOF\n\\)\")", + "Bash(ssh -o StrictHostKeyChecking=no ceshi@103.39.231.231 \"ssh -o StrictHostKeyChecking=no ceshi@192.168.1.111 ''cd /home/ceshi/rwadurian/backend/services && git pull''\")", + "Bash(ssh -o StrictHostKeyChecking=no ceshi@103.39.231.231 \"ssh -o StrictHostKeyChecking=no -i ~/.ssh/id_rsa ceshi@192.168.1.111 ''cd /home/ceshi/rwadurian/backend/services && git pull''\")", + "Bash(set DATABASE_URL=postgresql://user:pass@localhost:5432/db)", + "Bash(cmd /c \"set DATABASE_URL=postgresql://user:pass@localhost:5432/db && npx prisma migrate dev --name add_nickname_to_synced_legacy_users --create-only\")" ], "deny": [], "ask": [] diff --git a/backend/services/auth-service/prisma/migrations/20260112110000_add_nickname_to_synced_legacy_users/migration.sql b/backend/services/auth-service/prisma/migrations/20260112110000_add_nickname_to_synced_legacy_users/migration.sql new file mode 100644 index 00000000..9b394d90 --- /dev/null +++ b/backend/services/auth-service/prisma/migrations/20260112110000_add_nickname_to_synced_legacy_users/migration.sql @@ -0,0 +1,2 @@ +-- Add nickname field to synced_legacy_users table +ALTER TABLE "synced_legacy_users" ADD COLUMN IF NOT EXISTS "nickname" TEXT; diff --git a/backend/services/mining-admin-service/prisma/migrations/20260112110000_add_referral_adoption_nickname/migration.sql b/backend/services/mining-admin-service/prisma/migrations/20260112110000_add_referral_adoption_nickname/migration.sql new file mode 100644 index 00000000..c8204474 --- /dev/null +++ b/backend/services/mining-admin-service/prisma/migrations/20260112110000_add_referral_adoption_nickname/migration.sql @@ -0,0 +1,45 @@ +-- Add nickname field to synced_users table +ALTER TABLE "synced_users" ADD COLUMN IF NOT EXISTS "nickname" TEXT; + +-- Create synced_referrals table for referral relationships +CREATE TABLE IF NOT EXISTS "synced_referrals" ( + "id" TEXT NOT NULL DEFAULT gen_random_uuid()::text, + "accountSequence" TEXT NOT NULL, + "referrerAccountSequence" TEXT, + "referrerUserId" BIGINT, + "originalUserId" BIGINT, + "ancestorPath" TEXT, + "depth" INTEGER NOT NULL DEFAULT 0, + "syncedAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updatedAt" TIMESTAMP(3) NOT NULL, + + CONSTRAINT "synced_referrals_pkey" PRIMARY KEY ("id") +); + +-- Create synced_adoptions table for adoption records +CREATE TABLE IF NOT EXISTS "synced_adoptions" ( + "id" TEXT NOT NULL DEFAULT gen_random_uuid()::text, + "originalAdoptionId" BIGINT NOT NULL, + "accountSequence" TEXT NOT NULL, + "treeCount" INTEGER NOT NULL, + "adoptionDate" DATE NOT NULL, + "status" TEXT, + "contributionPerTree" DECIMAL(20,10) NOT NULL, + "syncedAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updatedAt" TIMESTAMP(3) NOT NULL, + + CONSTRAINT "synced_adoptions_pkey" PRIMARY KEY ("id") +); + +-- Create unique constraints +CREATE UNIQUE INDEX IF NOT EXISTS "synced_referrals_accountSequence_key" ON "synced_referrals"("accountSequence"); +CREATE UNIQUE INDEX IF NOT EXISTS "synced_adoptions_originalAdoptionId_key" ON "synced_adoptions"("originalAdoptionId"); + +-- Create indexes +CREATE INDEX IF NOT EXISTS "synced_referrals_referrerAccountSequence_idx" ON "synced_referrals"("referrerAccountSequence"); +CREATE INDEX IF NOT EXISTS "synced_referrals_depth_idx" ON "synced_referrals"("depth"); +CREATE INDEX IF NOT EXISTS "synced_adoptions_accountSequence_idx" ON "synced_adoptions"("accountSequence"); +CREATE INDEX IF NOT EXISTS "synced_adoptions_adoptionDate_idx" ON "synced_adoptions"("adoptionDate"); + +-- Add foreign key constraint for synced_referrals +ALTER TABLE "synced_referrals" ADD CONSTRAINT "synced_referrals_accountSequence_fkey" FOREIGN KEY ("accountSequence") REFERENCES "synced_users"("accountSequence") ON DELETE RESTRICT ON UPDATE CASCADE;