Files
simon 8ea9b48a9a feat: 投资资讯日报查询页 + 文档更新 + 拉取服务器最新内容
- 新增 charts/news_reports.php 报告查询导航页(列表+详情一体,fetch API 渲染)
- 新增 js/newsReports.js:AI 摘要/新闻联播/财经新闻/公告调研/数据总览固定模块,stats 归一化兼容多种格式
- index-2.php 研究报告卡片改为导航链接,移除 PHP 目录下拉框
- 更新 AGENTS.md/CLAUDE.md(路径、页面清单、数据模式等核实修正)
- 同步服务器拉取的文档:quant 使用手册、podcast-docs
- 生成 continuation.md 会话检查点
2026-08-05 20:28:57 +08:00

182 lines
7.0 KiB
HTML
Raw Permalink 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.
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>播客处理流水线 — 使用说明</title>
<style>
body { font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif; max-width: 800px; margin: 0 auto; padding: 20px; line-height: 1.6; color: #333; }
h1 { border-bottom: 2px solid #2563eb; padding-bottom: 8px; }
h2 { margin-top: 32px; border-bottom: 1px solid #e5e7eb; padding-bottom: 4px; }
pre { background: #f3f4f6; padding: 12px; border-radius: 8px; overflow-x: auto; font-size: 14px; }
code { background: #f3f4f6; padding: 2px 6px; border-radius: 4px; font-size: 14px; }
table { border-collapse: collapse; width: 100%; margin: 12px 0; }
th, td { border: 1px solid #e5e7eb; padding: 8px 12px; text-align: left; }
th { background: #f9fafb; }
.tip { background: #eff6ff; border-left: 4px solid #2563eb; padding: 12px; margin: 16px 0; border-radius: 4px; }
.warn { background: #fef3c7; border-left: 4px solid #f59e0b; padding: 12px; margin: 16px 0; border-radius: 4px; }
</style>
</head>
<body>
<h1>播客处理流水线 · 使用说明</h1>
<p>从 Apple Podcast URL 自动获取播客 → 语音转文字 → 中文翻译 → AI 要点分析</p>
<h2>一、地址总览</h2>
<table>
<tr><th>用途</th><th>地址</th></tr>
<tr><td>前端首页(时间线)</td><td><a href="https://doorcome.cn/podcast/">https://doorcome.cn/podcast/</a></td></tr>
<tr><td>添加播客</td><td><a href="https://doorcome.cn/podcast/new">https://doorcome.cn/podcast/new</a></td></tr>
<tr><td>播客管理</td><td><a href="https://doorcome.cn/podcast/podcasts">https://doorcome.cn/podcast/podcasts</a></td></tr>
<tr><td>API 文档 (Swagger)</td><td><a href="https://doorcome.cn/api/docs/">https://doorcome.cn/api/docs/</a></td></tr>
<tr><td>管理后台</td><td><a href="https://doorcome.cn/admin/">https://doorcome.cn/admin/</a></td></tr>
</table>
<h2>二、前端使用</h2>
<h3>2.1 添加播客</h3>
<ol>
<li>打开「添加」页面</li>
<li>粘贴 Apple Podcast 链接,格式如:<br>
<code>https://podcasts.apple.com/cn/podcast/lex-fridman-podcast/id1434243584</code></li>
<li>点击「添加」按钮</li>
<li>系统自动获取播客信息、节目列表,后台 AI 开始处理</li>
</ol>
<div class="tip">
✅ 支持所有 Apple Podcast URL。系统会通过 iTunes API 获取元数据,
然后解析 RSS Feed 获取所有节目。
</div>
<h3>2.2 查看要点</h3>
<ul>
<li>首页按日期分组展示已处理的要点卡片</li>
<li>可按播客来源或日期过滤</li>
<li>卡片包含:封面、标题、一句话摘要、标签</li>
<li>点击「详情」查看完整内容</li>
<li>点击「播放」在线听音频</li>
</ul>
<h3>2.3 单集详情</h3>
<ul>
<li>音频播放器(顶部)</li>
<li>要点导航(点击展开/收起各话题)</li>
<li>全文展示:原文 / 中文翻译一键切换</li>
</ul>
<h3>2.4 播客管理</h3>
<ul>
<li>查看已添加的所有播客</li>
<li>删除播客及其所有节目</li>
</ul>
<h2>三、后台管理</h2>
<p>访问 <code>/admin/</code> 使用管理员账号登录。</p>
<table>
<tr><th>模型</th><th>功能</th></tr>
<tr><td>Podcast(播客)</td><td>查看、搜索所有播客</td></tr>
<tr><td>Episode(节目)</td><td>查看处理进度、过滤状态、重试失败节目</td></tr>
<tr><td>Transcript(转写)</td><td>查看 ASR 结果和翻译内容</td></tr>
<tr><td>Highlight(要点)</td><td>查看 AI 分析结果</td></tr>
</table>
<div class="tip">
处理状态说明:
<code>pending</code><code>downloading</code><code>downloaded</code>
<code>transcribing</code><code>transcribed</code>
<code>translating</code><code>translated</code>
<code>analyzing</code><code>completed</code><br>
任意步骤失败 → <code>failed</code>Admin 可选重试)
</div>
<h2>四、AI 处理流程</h2>
<p>添加播客后,Celery Worker 自动处理每个节目:</p>
<pre>
Step 1: 下载音频文件到服务器
Step 2: 千问 DashScope ASR → 语音转文字(带时间戳分段)
Step 3: 检测语种:
· 非中文 → DeepSeek 翻译成中文
· 中文 → 跳过翻译
Step 4: DeepSeek 要点分析 → JSON 结构化结果
· 一句话摘要
· 详细摘要(3-5段)
· 要点列表(话题 + 观点 + 时间戳)
· 标签
最终状态 → completed。
失败自动重试 3 次,每次间隔 60 秒。
</pre>
<h2>五、命令行操作</h2>
<p>SSH 到服务器后使用:</p>
<pre>
# 添加播客
cd /home/simon/myquant/django/podcast
source venv/bin/activate
python manage.py init_podcast "https://podcasts.apple.com/cn/podcast/.../idXXXXXX"
# 添加并触发 AI 处理
python manage.py init_podcast "https://..." --trigger-tasks
# 查看服务状态
sudo systemctl status podcast-gunicorn # Django API
sudo systemctl status podcast-celery # AI 处理 Worker
sudo systemctl status podcast-frontend # 前端
# 查看日志
sudo journalctl -u podcast-celery -n 50 -f
# 重启某个服务
sudo systemctl restart podcast-celery
</pre>
<h2>六、API 参考</h2>
<p>完整 API 文档在 <a href="https://doorcome.cn/api/docs/">Swagger UI</a></p>
<table>
<tr><th>方法</th><th>路径</th><th>说明</th></tr>
<tr><td>POST</td><td>/api/podcasts/add/</td><td>通过 Apple URL 添加播客</td></tr>
<tr><td>GET</td><td>/api/podcasts/</td><td>播客列表</td></tr>
<tr><td>GET</td><td>/api/podcasts/{id}/</td><td>播客详情(含节目列表)</td></tr>
<tr><td>DELETE</td><td>/api/podcasts/{id}/</td><td>删除播客</td></tr>
<tr><td>GET</td><td>/api/episodes/</td><td>节目列表(支持 status/podcast_id 过滤)</td></tr>
<tr><td>GET</td><td>/api/episodes/{id}/</td><td>单集详情(含转写+要点)</td></tr>
<tr><td>POST</td><td>/api/episodes/{id}/retry/</td><td>重试失败的节目</td></tr>
<tr><td>GET</td><td>/api/highlights/</td><td>要点列表(支持 date/podcast_id 过滤)</td></tr>
<tr><td>GET</td><td>/api/highlights/today/</td><td>今日要点</td></tr>
</table>
<h2>七、管理员账号</h2>
<table>
<tr><th>地址</th><th>用户名</th><th>密码</th></tr>
<tr><td><a href="https://doorcome.cn/admin/">https://doorcome.cn/admin/</a></td><td>admin</td><td>admin123</td></tr>
</table>
<div class="warn">
⚠️ 首次使用建议修改默认密码。
</div>
<h2>八、配置说明</h2>
<p>服务器配置文件:<code>/home/simon/myquant/django/podcast/.env</code></p>
<table>
<tr><th>配置项</th><th>说明</th></tr>
<tr><td>DASHSCOPE_API_KEY</td><td>千问 DashScope API KeyASR 语音转文字)</td></tr>
<tr><td>DEEPSEEK_API_KEY</td><td>DeepSeek API Key(翻译 + 要点分析)</td></tr>
<tr><td>DASHSCOPE_ASR_MODEL</td><td>ASR 模型名(默认 paraformer-realtime-v2</td></tr>
<tr><td>DEEPSEEK_MODEL</td><td>DeepSeek 模型名(默认 deepseek-chat</td></tr>
<tr><td>DEV_MOCK_ASR</td><td>开发模式:1=跳过真实 ASR,0=调用真实 API</td></tr>
</table>
</body>
</html>