98 lines
7.4 KiB
Markdown
98 lines
7.4 KiB
Markdown
《“早安电台”项目完整架构设计与开发计划书》
|
||
一、 产品愿景与垂直领域选择
|
||
|
||
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。
|