10 Commits

Author SHA1 Message Date
iye
51009616a1 fix(home): Top12 出道位接 /api/ranking 显示真实票数
All checks were successful
Build and Deploy / build-and-deploy (push) Successful in 6m29s
- 首页 Top12Bar 之前只读 zustand store(初始 0 票),未登录访客永远看到"Awaiting Votes"
- 现在和 /ranking 页一样用 useRanking 30s 轮询,merge 服务端票数到本地 store(取 max)
- 与本地乐观投票兼容,投票后立即可见

bump to v0.3.2

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-18 14:03:51 +08:00
iye
80c37923d4 chore(release): v0.3.1 - 13 号虞浓氛围图 2 替换
All checks were successful
Build and Deploy / build-and-deploy (push) Successful in 4m6s
- TOS 缓存版本 7 → 8 触发 CDN 刷新
- CHANGELOG 加 v0.3.1 条目
- package.json 0.3.0 → 0.3.1

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-18 11:00:35 +08:00
iye
93c3abe620 chore(release): v0.3.0 + 建立 CHANGELOG + 追溯版本号
All checks were successful
Build and Deploy / build-and-deploy (push) Successful in 2m56s
- 新增 CHANGELOG.md(SemVer 0.x 开发期规则 + 5 个里程碑)
- package.json version: 0.1.0 → 0.3.0
- 追溯打 tag:v0.1.0 / v0.2.0 / v0.2.1 / v0.2.2 / v0.3.0

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-15 20:21:12 +08:00
iye
0a7c1ec130 feat(auth): wire Aliyun SMS provider for phone OTP login
All checks were successful
Build and Deploy / build-and-deploy (push) Successful in 4m33s
接入流程:
- src/lib/sms.ts: 封装 sendOtpSms(phone, code), 走 dysmsapi.aliyuncs.com 全局端点
- /api/auth/send-otp:
    * 生成 6 位验证码 → Redis 5min TTL
    * 调 Aliyun SDK 发送; OK → 200, isv.* 错误 → 422, 其它 → 500
    * SMS_NOT_CONFIGURED 时 dev 仍能 console.log 验证码联调
- auth.ts verifyOtp:
    * dev 万能码 123456 保留
    * 否则 redis.get(sms:otp:phone) 比对, 通过后 del 防重放
    * Redis 未配置时 prod 拒绝, dev 接受任意 6 位

环境变量 (.env.local, 不入仓库):
- SMS_ACCESS_KEY / SMS_SECRET_KEY (RAM 子账号)
- SMS_SIGN_NAME (例: 广州气元科技)
- SMS_TEMPLATE_CODE (例: SMS_506210397)

依赖:
+ @alicloud/dysmsapi20170525
+ @alicloud/openapi-client
+ @alicloud/tea-util

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-13 14:56:47 +08:00
iye
9fe9fa914f fix(ux): center modals with overlay; live vote with toast; deterministic mock data; cascade layer fix 2026-05-12 14:09:31 +08:00
iye
b7fbd5ac53 feat(auth): Auth.js v5 with phone OTP login, send-otp API, login page and user state in nav 2026-05-12 10:03:58 +08:00
iye
175276a085 feat(api): add REST API routes (artists/ranking/me/vote/signin) + Redis rate limiting + Zod validation 2026-05-12 09:59:38 +08:00
iye
91a0dd0f05 feat(db): Prisma 6 + MySQL schema with all models, seed script and env example 2026-05-12 09:51:17 +08:00
iye
abce95aae8 feat(components): add Button, Countdown, ArtistCard, Top12Bar, VoteModal core components 2026-05-12 09:37:23 +08:00
iye
8a83815f1c chore: bootstrap Next.js 16 + Tailwind v4 + TypeScript baseline 2026-05-12 09:26:46 +08:00