first commit

This commit is contained in:
Blizzard
2026-02-27 13:54:01 +08:00
commit fc585fa4df
127 changed files with 18548 additions and 0 deletions
+97
View File
@@ -0,0 +1,97 @@
《“早安电台”项目完整架构设计与开发计划书》
一、 产品愿景与垂直领域选择
1. 垂直领域对比与 MVP 推荐
文档中提出了四个垂直方向:【硬核职场】、【效率健康】、【极简生活】与【知识胶囊】 2-4。MVP 阶段(两周内)最推荐方向:【硬核职场】AI 商业机会与搞钱情报站 1。
推荐理由:
自动化实现成本最低:该方向的数据源(如 GitHub API、Product Hunt API)高度结构化,极易通过 Go 后端定时任务抓取并交给 LLM 处理 1, 5。
目标用户契合度极高:数据显示,63.3%的中文长音频听众是21-35岁的年轻精英群体,且72.1%的用户订阅是因为内容的“专业性”或“干货多” 6。AI 商业情报完美契合这批高价值用户的痛点。
2. 目标用户画像及其核心痛点
用户画像:21-35岁的一线/新一线城市开发者、产品经理、渴望通过 AI 变现的职场精英 2, 6。
核心痛点:
信息差焦虑:AI工具爆发,缺乏时间筛选信息,需要在早餐、通勤等“脱手”场景下实现“零点击”的信息获取 2, 7。
情绪过渡与陪伴:早安电台处于从睡眠向职业场景过渡的交汇点,需提供缓解早起焦虑的“情绪价值”与专业陪伴感 8。
二、 数据抓取与 AI 场景感知流水线 (Data Pipeline)
整个后台流转依托“专家灵魂 + AI 躯干”的自动化生成模式 9,核心链路如下:
3. 自动化数据抓取 (Cron Job)
设定 Go 后端定时任务,每 2 小时运行一次 10。
GitHub API 调用 (补充架构细节):调用 GET /search/repositories。后端构建查询参数 q=topic:ai+created:>YYYY-MM-DD&sort=stars&order=desc,筛选近24小时星标增长最快的AI项目 5,提取前 3 个项目描述。
Product Hunt API 调用 (补充架构细节):通过 POST 请求调用其 GraphQL 接口,获取 posts(first: 10, order: RANKING),提取每日 Upvote 前10的产品的 description 5。
4. 数据清洗与 AI 提炼
Goquery 清洗:抓取到的 README 或网页文本包含大量无效 HTML 标签,必须使用 Goquery 库进行剥离,仅保留核心文本,大幅降低 LLM Token 消耗 10。
大模型介入:将清洗后的 10 个产品和 3 个开源项目发送给 DeepSeek/OpenAI 模型,通过 Prompt 强制要求:“提取出今日可落地的 3 个变现点或核心业务逻辑,并改写为适合口播的连贯短句” 2, 7。
5. TTS 语音合成与 MinIO 私有化存储
利用 TTS 技术,每日更新的音频边际成本几乎为零 9。
腾讯云 TTS (建议配置):选择带有“睿智专业”风格的虚拟主播音色 9,指定输出为 aac 格式,采样率 16000Hz,以匹配微信最优音频规范 8。
MinIO 落库 (补充架构细节)
后端接收到 TTS 音频流后,通过 minio-go SDK 直接上传至自建 MinIO 的 sundynix-audios Bucket 中。
文件命名:文件使用生成的唯一 UUID 命名(如 123e4567-xxx.aac),防止内容重复 10。
网络合规与分发 (核心风险应对,补充细节):因微信小程序强制要求 HTTPS 且需白名单拦截,MinIO 前端必须部署 Nginx 反向代理并配置 SSL 证书。为应对早高峰并发,Nginx 域名上必须套用公有云 CDN 服务进行边缘缓存加速 8, 11。
三、 核心架构设计与技术规范
6. 数据建模 (核心表结构)
表名必须以 sundynix_开头,主键统一为 UUID 字符串 10, 12。(Go 结构体转 JSON 时统一使用 camelCase)。
表名 (Table),字段 (Column),类型,说明
sundynix_audio_content,id (PK),String(UUID),唯一音频ID 10
,title,String,音频标题,用于锁屏界面展示 8
,audio_url,String,绑定 CDN 的 MinIO AAC 音频链接
,epname,String,专辑名 (如:早安电台 - 硬核职场) 8
sundynix_play_record,id (PK),String(UUID),播放记录ID (外部扩展)
,audio_id,String(UUID),关联音频
,progress_sec,Integer,播放进度(秒),用于 startTime 恢复 8
sundynix_user_medal,id (PK),String(UUID),勋章记录ID (外部扩展)
,medal_type,String,勋章标识 (如: EARLY_BIRD_7) 12
7. 核心后端 API 接口设计 (camelCase 响应)
API 1: 获取音频列表
Route: GET /api/v1/audios?scene=morning&limit=5
Response:
{
"code": 200,
"message": "success",
"data": [
{
"id": "123e4567-e89b-12d3-a456-426614174000",
"title": "今日 GitHub 热榜:3个 Agent 变现线索",
"audioUrl": "https://cdn.sundynix.com/sundynix-audios/123e4567-e89b-12d3-a456-426614174000.aac",
"epname": "早安电台 - 硬核职场",
"duration": 180
}
]
}
API 2: 更新播放状态 (含勋章触发逻辑) (扩展功能 13)
Route: POST /api/v1/play-status
Body: {"audioId": "123e...", "progressSec": 180, "isCompleted": true}
Response:
{
"code": 200,
"data": { "saved": true, "newMedalUnlocked": "EARLY_BIRD_7" }
}
API 3: 获取用户勋章 (扩展功能 13)
Route: GET /api/v1/users/{userId}/medals
Response: 返回解锁的勋章数组及图标。
8. 逾期逻辑处理 (NextRunTime 计算) (外部扩展设计 13)
如果用户错过了“清晨任务”,在下午完成了收听,系统在计算 NextRunTime 时,绝对不能采用 当前时间 + 24小时。必须采用基于“自然日锚点”的对齐策略,将下一次触发重置为“第二天的清晨 05:00”,从而死守产品的“晨间唤醒与规律伴随”核心心智 6。
四、 微信小程序端深度整合
BackgroundAudioManager 是小程序的底层核心,必须妥善设计以保障弱网及锁屏体验 8:
参数合规:获取 API 1 的响应后,必须将 audioUrl 赋值给 src。同时,必须配置 title、epname 和 coverImgUrl,这三者直接决定了系统锁屏播放控件的展示质量,是建立品牌心智的关键 8。
断点续传设计:若用户播放被闹铃中断,前端需记录进度。下次恢复时,将 API 2 中存储的 progressSec 传入 startTime 属性,实现帧级别的无缝续播 8。
五、 分阶段开发计划 (2周 MVP 周期)
第 1-3 天:后端基础及数据爬取
搭建 Go 后端,配置 sundynix_ 前缀数据库和 UUID 10, 14。
编写定时任务(Cron Job),完成 GitHub 和 Product Hunt 数据抓取及 Goquery 标签清洗 5, 10。
第 4-7 天:AI 接入与存储链路构建
接入大模型 API 完成洗稿提炼 7。
集成 TTS 服务,完成音频生成。
搭建自建 MinIO 服务器,配置 Nginx HTTPS 反向代理与云端 CDN,使用 Go SDK 实现音频直推 MinIO 19, 补充。
第 8-10 天:小程序端播放器攻坚
搭建核心 UI,将 CDN 音频地址下发给小程序。
深度整合 BackgroundAudioManager,完成 startTime 断点续传逻辑和锁屏封面展示配置 8。
第 11-14 天:联调、扩展系统与合规审查
完成后端 API 与小程序联调。实现勋章成就系统的前端触发动画 14。
在显著位置增加“AIGC 生成内容”标识,完成政策合规 11。
六、 风险评估与对策
弱网延迟打断收听体验 11
对策:除了依赖自建 MinIO 前置的 CDN 节点加速外,小程序前端必须利用 BackgroundAudioManager 的机制,提前请求下一段音频的 src,实现主动缓冲。若检测到网络极差,动态请求备用的 MP3 低码率链接 8, 11。
系统级中断导致进度丢失 8
对策:妥善监听后台音频管理器的 onPause、onStop 和 onEnded 回调,实时向后端 API 2 上报 progressSec 8。
AIGC 政策合规风险 11
对策:严格遵循《网络视听数据质量及 AIGC 内容管理要求》,在前端 UI 必须带有清晰的 AI 标识,确保平台审核顺利通过 11。