topfans/backend/services/userService
zerosaturation 8a767fb400 fix(backend): service stability — batch 3 accumulated (bcrypt off-txn / login anti-enum / MQ stub / aiChat / event reliability / gateway aggregate)
- 3.1 bcrypt 移出事务 (Register): repository.HashPassword 前移到 db.Transaction 之前。
- 3.2 Login 消除用户枚举 + 限流 + timing 抹平: pkg/errors 加 ErrInvalidCredential / ErrTooManyLoginAttempts;
  user-not-found 跑 dummy bcrypt 抹平 ~100ms 时序差; mobile 5次/ip 20次 per 15min 限流 (Redis, fail-open 降级)。
- 3.3 MQ streams adapter 停用 → stub: 0 业务调用方, noop EventProducer.Publish; Init 不再装配 streams;
  11 处硬编码 'gallery'/'default' 抽常量到 pkg/queue/consts (值不变, 消漂移)。
- 3.5 JWT 密钥治理: pkg/jwt MustInit fail-fast + atomic.Value, 50-goroutine race_test 零告警;
  MustInit 调用点 gateway main + auth_provider + loadgen 同步更新。
- 3.6 aiChat 健壮性: SaveContext 用 persona.ID(非 req.PersonaId); Redis/memory 错误 记 WARN 不静默;
  Dify err 映射稳定用户文案。
- 3.7 statistic.Client 重构: TrackEvent 改 buffered channel (cap 1024) + dispatchLoop worker。
- 3.8 网关聚合: StarCache (60s TTL, singleflight) 替换 GetFanIdentities 链式调用;
  DeleteAccount 改网关直调 userService.DeleteAccount(避免改 hand-written triple.go);
  铸造双写改异步 channel+consumer (3 retry)。
- 大量单测: 各子项 TDD (RED→GREEN), 关键并发 race_test (50 goroutine)。
- .env.example JWT_SECRET 改为 ≥32 字节 base64 示例(原为空, 被 MustInit 立即拒)。

Co-Authored-By: Claude <noreply@anthropic.com>
2026-07-24 14:03:21 +08:00
..
config
configs
middleware fix(backend): auth boundary — trusted identity from ctx (batch 2) 2026-07-23 01:12:35 +08:00
mq
provider feat:增加忘记密码的功能 2026-07-09 19:00:03 +08:00
repository fix(backend): financial correctness — settlement/hours/mint idempotency (batch 1) 2026-07-23 01:11:54 +08:00
service fix(backend): service stability — batch 3 accumulated (bcrypt off-txn / login anti-enum / MQ stub / aiChat / event reliability / gateway aggregate) 2026-07-24 14:03:21 +08:00
test
go.mod fix(backend): service stability — bcrypt off-txn / login anti-enum / MQ stub / aiChat / event reliability / gateway aggregate (batch 3) 2026-07-23 18:50:40 +08:00
go.sum fix(backend): service stability — bcrypt off-txn / login anti-enum / MQ stub / aiChat / event reliability / gateway aggregate (batch 3) 2026-07-23 18:50:40 +08:00
INIT.md
main.go fix(backend): service stability — batch 3 accumulated (bcrypt off-txn / login anti-enum / MQ stub / aiChat / event reliability / gateway aggregate) 2026-07-24 14:03:21 +08:00
port_test.go fix(config): port alignment + service test doubles (batch 4.1/4.5) 2026-07-24 14:02:14 +08:00
README.md
UPDATE_FAN_PROFILE_SOCIAL_IMPLEMENTATION.md

User Service

用户与认证服务

功能

  • 用户注册、登录、登出
  • JWT Token 生成、刷新、验证
  • 用户基本信息管理
  • 粉丝档案管理
  • 粉丝身份切换

启动

# 开发环境
go run main.go

# 生产环境
go run main.go \
  --db-host=localhost \
  --db-port=5432 \
  --db-user=your_user \
  --db-password=your_password \
  --db-name=top-fans \
  --port=50051

环境变量

也可以通过环境变量配置:

export DB_HOST=localhost
export DB_PORT=5432
export DB_USER=haihuizhu
export DB_PASSWORD=admin
export DB_NAME=top-fans
export SERVER_PORT=50051