All checks were successful
Build and Deploy / build-and-deploy (push) Successful in 3m26s
数据正式落库, 不再仅靠浏览器内存: prisma/schema.prisma: - Artist 模型对齐当前前端数据形态: * 旧字段 slogan / birthday / cv / themeColor 改为可选 (前端早不用, 但保留兼容历史 seed) * 新增 age / gender / motto / personality / catchphrase / skills / track (来自人物小传) - 注释从 "001 ~ 035" 改 "001 ~ 036" prisma/seed.ts: - 整体重写: 从 src/lib/artist-bios.ts 的 ARTIST_SEEDS 灌真实 36 人 - 不再写假数据 (AURORA / LUMI / NEBULA...) - portrait / videoUrl 不入库 (前端 NEXT_PUBLIC_TOS_DOMAIN 拼接, 换桶不用 reseed) - ActivityConfig 默认 dailyQuota=10, perArtistLimit=0, voteEnabled=true, 活动期 30 天 src/lib/date-utils.ts (新增): - startOfUtcDay(): 修复"今日"在 MySQL @db.Date 列与 JS Date 之间的 TZ 漂移 - isSameUtcDay(): 共享给签到判断 修复 P2025 bug (vote / me / signin): - 用 startOfUtcDay 替代 startOfDay (后者用 setHours 取本地午夜, 对 @db.Date 列会因 TZ 漂移导致 upsert 后再用 userId_date 复合键查找失败) - /api/vote 的扣额度从 userId_date 改用 dq.id 主键 update, 双保险 - 三个路由的 startOfDay 重复实现合并到 lib/date-utils E2E 验证 (curl): 登录 → 投 5 给 002 → 余 5 ✓ 投 3 给 003 → 余 2 / totalVotes 8 ✓ /api/me supports 反映 002+003 真实 voteTotal ✓ 超额 (5 票 余 2) → 409 QUOTA_EXHAUSTED ✓ /api/ranking 票数实时反映 DB ✓ Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>