Commit Graph

3 Commits

Author SHA1 Message Date
huangzhenpc
f2b1fc0ace fix: 恢复所有迁移文件以修复校验和错误
Some checks failed
CI / test (push) Has been cancelled
CI / golangci-lint (push) Has been cancelled
恢复了以下迁移文件到原始状态:
- 004_add_redeem_code_notes.sql
- 005_schema_parity.sql
- 006_fix_invalid_subscription_expires_at.sql
- 007_add_user_allowed_groups.sql
- 008_seed_default_group.sql
- 009_fix_usage_logs_cache_columns.sql
- 010_add_usage_logs_aggregated_indexes.sql
- 011_remove_duplicate_unique_indexes.sql
- 012_add_user_subscription_soft_delete.sql
- 013_log_orphan_allowed_groups.sql
- 014_drop_legacy_allowed_groups.sql
- 015_fix_settings_unique_constraint.sql
- 016_soft_delete_partial_unique_indexes.sql
- 018_user_attributes.sql
- 019_migrate_wechat_to_attributes.sql
- 024_add_gemini_tier_id.sql

数据库迁移文件不应在应用后修改,即使只是注释。
2026-01-04 18:21:46 +08:00
huangzhenpc
d274c8cb14 feat: 品牌重命名 Sub2API -> TianShuAPI
Some checks failed
CI / test (push) Has been cancelled
CI / golangci-lint (push) Has been cancelled
- 前端: 所有界面显示、i18n 文本、组件中的品牌名称
- 后端: 服务层、设置默认值、邮件模板、安装向导
- 数据库: 迁移脚本注释
- 保持功能完全一致,仅更改品牌名称

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-04 17:50:29 +08:00
yangjianbo
59269dc1c1 fix(数据层): 修复软删除与唯一约束冲突问题
问题:软删除的记录仍占用唯一约束位置,导致删后无法重建同名/同邮箱/同订阅

修复方案:使用 PostgreSQL 部分唯一索引(WHERE deleted_at IS NULL)
- User.email: 移除字段级 Unique(),改用部分唯一索引
- Group.name: 移除字段级 Unique(),改用部分唯一索引
- UserSubscription.(user_id, group_id): 移除组合唯一索引,改用部分唯一索引
- ApiKey.key: 保留普通唯一约束(安全考虑,已删除的 Key 不应重用)

安全性:
- 应用层已有 ExistsByXxx 检查,自动过滤软删除记录
- 数据库层部分唯一索引提供最后一道防线

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-31 16:37:18 +08:00