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

30 lines
2.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 校园广播站点歌系统重构计划
## 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 的图片并提供下载。