Files
BYW-VoiceHub/REFACTOR_PLAN.md
T
Henry_Du 4ce4649aaf
Build VoiceHub FPK / build-fpk (push) Failing after 56m5s
Build and Push Docker Image / build-and-push (push) Canceled after 1h9m35s
初次提交
2026-09-06 08:19:02 +08:00

2.7 KiB
Raw Blame History

校园广播站点歌系统重构计划

1. 数据库重构计划 (PostgreSQL -> MySQL)

  • 冲突说明:当前项目使用 PostgreSQL (基于 drizzle-orm/pg-core),包含众多表如 User, PlayTime, Song, Vote, Schedule, Notification 等;而改造技术方案中明确要求使用 MySQL,并且 users 和 songs 表结构更精简。
  • 重构步骤:
    1. 将 drizzle-orm/pg-core 替换为 drizzle-orm/mysql-core。
    2. 修改 app/drizzle/schema.ts,将所有 pgTable 替换为 mysqlTable,pgEnum 替换为 MySQL 枚举或字符串,修复类型映射(如 text -> varchar 或 text)。
    3. 精简 User 表,确保包含 id, username, password_hash, role。
    4. 修改 Song 表,加入 kg_hash, title, singer, cover_url,并平滑迁移现有数据。
    5. 重新生成 Drizzle 迁移文件 (drizzle-kit generate) 并应用到 MySQL 数据库。

2. 音源集成重构计划 (多源聚合 -> 仅酷狗音乐)

  • 冲突说明:当前项目在 app/utils/musicSources.ts 及 useMusicSources.ts 中深度集成了网易云、QQ音乐 (vkeys)、Bilibili 等多平台逻辑;改造方案要求仅保留酷狗音乐。
  • 重构步骤:
    1. 移除 neteaseApi.ts, bilibiliSource.ts, musicSources.ts 中的网易云、QQ音乐等配置。
    2. 完善 server/api/kugou/ 下的代理接口(包括 /search, /url, /lyric, /detail)。
    3. 简化 useMusicSources.ts 逻辑,移除平台回退机制,所有请求直接指向酷狗代理接口。
    4. 修复前端点歌页面 (SongList.vue, RequestForm.vue) 中的平台选择器和遗留的网易云/QQ音乐图标。

3. UI 现代化与扁平化设计

  • 冲突说明:当前项目已使用 Nuxt UI + Tailwind CSS,且页面中硬编码了大量的深色主题类名(如 bg-zinc-900, text-zinc-300 等),而改造方案要求采用浅色现代风格(Background #F8FAFC, Neutral Dark #0F172A)。全面替换将涉及上百个组件的重写。
  • 重构步骤:
    1. 修改 tailwind.config.ts,将主色调 (primary) 映射为 #2563EB。
    2. 逐步将所有组件中硬编码的 zinc 深色类名替换为语义化的 Tailwind 浅色类名(如 bg-slate-50, text-slate-900)。
    3. 在后台管理仪表盘 (OverviewDashboard.vue) 和点歌前端引入 Bento Grid (便当盒) 布局。
    4. 在全局样式 components.css 中为卡片和按钮统一添加微弱的悬停上浮效果(hover:-translate-y-1 hover:shadow-md)。

4. 后台管理:歌单图片生成功能

  • 落地情况:将在 ScheduleManager.vue 或新建的 SchedulePrinter.vue 中引入 HTML5 Canvas API,将排期歌单绘制为 400x600 的图片并提供下载。