docs(specs): record merged dandanplay implementation final state

This commit is contained in:
noelorin 2026-09-27 12:26:50 +08:00
parent d71e9157c0
commit 89b090a47b
1 changed files with 19 additions and 2 deletions

View File

@ -1,7 +1,7 @@
# 弹弹play 弹幕获取 + 刮削能力打通 — 设计规格
- **日期**:2026-09-26
- **状态**:设计已定(用户未在线,按最佳判断推进,详见批准记录)
- **状态**:已实现(与并行会话的增强实现合并;实现超出本文档处见 §7)
- **上游规格**:`2026-09-25-dandanplay-web-design.md`(开放弹幕网络中继 + Bangumi 刮削已批准)
## 1. 问题
@ -96,8 +96,25 @@
## 5. 不做(本次)
弹幕设置服务端持久化 · 弹幕发送(POST comment)· match 候选多选 UI · `shift` 弹幕偏移应用 · chConvert 简繁参数 · 扫描期批量 hash 识别 · DB 存凭据。
弹幕发送(POST comment)· match 候选多选 UI(并行会话已补,见 §7)· `shift` 弹幕偏移应用 · chConvert 简繁参数 · 扫描期批量 hash 识别。
## 6. 批准记录
用户提出能力缺口后未在线答复澄清(问询超时),按最佳判断采纳方案 A 推进;如与预期不符,数据模型/service 边界已隔离,可低成本调整。
## 7. 实现终态(含并行会话合并)
实现期间工作区另一会话同步推进同一能力,终态为本设计 + 以下增强(均已在工作树落地并通过 typecheck/test/build):
| 增强点 | 说明 |
|--------|------|
| `@app/danmaku` 独立包 | 开放 API 客户端/签名/hash/匹配/过滤/XML 纯函数下沉(`./browser` 子路径无 node:crypto) |
| 凭据 DB 化(超越 env-only 决策) | `app_settings` 表存 AppId/Secret,管理员设置页可改,env 兜底,运行时热更新(`settings.service`) |
| 候选手选式匹配 | match 结果 `rankCandidates` 打分;高置信自动绑,低置信在播放页手选(`danmakuMatch`/`danmakuSelectMatch`),另支持关键词指定弹幕源(`searchSource`/`sourceEpisodes`) |
| 服务端弹幕文档 | `danmaku_docs` 表持久化 local-xml/open-network 全文;同目录同名 .xml 侧车自动关联 |
| 用户弹幕偏好落库 | `danmaku_prefs` 表(enabled/opacity/density/屏蔽词/类型屏蔽),取代 localStorage |
| 匹配来源审计 | `media_items.danmaku_match_source` 列(auto/manual/none) |
本会话独有贡献:`fileName` 去扩展名修复、`setDanmakuMatch` 身份落库、`scrapeService.matchDandanplay`(刮削写标题/海报 + bgmtv 桥)、库页识别入口、match 响应解析与择集单测、`openNetworkConfigured` 状态透出。
**遗留**:WatchBody/globals.css 有 5 处 lint 违规(并行会话在改文件,未越界处理);真实弹幕需向弹弹play 官方申请 AppId/AppSecret(管理员设置页或服务端 `.env` 配置)。