Skip to content

Latest commit

 

History

History
132 lines (97 loc) · 11.5 KB

File metadata and controls

132 lines (97 loc) · 11.5 KB

当前项目状态

更新时间:2026-09-10

本文只记录生产环境当前能力、运行约束、待处理事项和少量可复核的验收证据。一次性任务编号、重复部署过程和基础接口状态不在这里长期保留,详细操作以 docs/api.mddocs/deployment.md 及运维参考文档为准。

当前目标

  • 维护电影、剧集、动漫和用户提交资源的统一片库。
  • 通过 TMDB、GYING、PanSou/Panso API 与网盘自动化服务补全元数据和可用资源。
  • 自动转存并生成夸克、迅雷自有分享,经过校验后再写入正式资源库。
  • 支持 QQ 群搜索、资源候选选择、频道发布和多平台发布审计。

运行架构

  • 对外入口:nginx 80/443,反向代理 Next.js 前端和 Spring Boot 后端。
  • 核心服务:frontendbackendgying-sourcesocial-publisher
  • 数据与依赖:MySQL、Redis、MinIO、PanSou、quark-auto-save;生产 Compose 文件为 docker-compose.prod.yml
  • QQ 集成使用 OpenClaw QQBot;第二个 QQ 账号和微博由 social-publisher 独立承载。NapCat 不参与当前生产链路。
  • 容器和 JVM 时区统一为 Asia/Shanghai

已具备能力

片库与治理

  • 片库分页、分类筛选、详情、收藏、评论、站内通知和管理员审核。
  • 首页三个分类按资源最近更新时间优先,并综合站内热度、TMDB 热度和可用评分排序;搜索/筛选页仍保留最新和评分排序。
  • 海报底部以来源图标展示豆瓣、IMDb、TMDB 评分及热度,标题移到海报外部。
  • 电影、资源链接和来源身份均支持软删除,历史记录保留。
  • TMDB 采集支持去重和本地片库匹配;模糊匹配只提供候选,不直接触发转存。
  • 管理端支持缺失海报自动补图。GYING 海报下载按 avifwebpjpgpng 回退并重试,只有返回有效 posterUrl 才计为成功。

影视资源中心

  • 资源搜索合并本地 PanSou 与外部 Panso 结果,并按 URL 去重。
  • 自动资源必须先转存为系统自有夸克或迅雷分享,再写入 resource_link
  • 夸克任务支持目录创建、剧集目录更新、失效分享重试和周转存;update_subdir: ".*" 用于递归追踪同名目录新增文件。
  • 迅雷任务使用官方 Drive API 校验分享、遍历目录和筛选视频文件;Authorization 为短期凭据,支持运行时更新和 refresh token 优先。
  • 失败任务保留状态和错误,重试尽量复用已有转存结果,避免重复调用转存接口。
  • 管理员资源管理对失效或疑似失效的夸克、迅雷资源提供单条“修复并重分享”;成功后原位更新资源链接,并在存在 GYING 影片映射时自动同步发布链接。

GYING 数据源

  • 支持按类型和模式搜索、目录同步、元数据导入、资源发布与已发布资源抓取。
  • “爬取我已发布资源”按账号 /my-resources 分页读取,复用现有片库和资源工作流;已存在的来源 ID 或 URL 自动跳过。
  • 数据源请求带有统一间隔限制,图片下载和站点请求均支持超时、重试和失败记录。
  • GYING 资源发布仅使用固定契约 /res/pan/add,绑定字段为 binds[0][dir]binds[0][id]

QQ 自动化

  • 搜索先回复“正在搜索资源,请稍后...”,随后展示影片元数据和资源候选。
  • 候选最多 10 条,夸克优先;用户选择单条资源后才创建对应转存任务。
  • 夸克或迅雷分享失效时统一提示“该分享已失效,不可访问”,并保留当前候选上下文,用户可继续选择其他序号。
  • 搜索、转存、分享和失败结果写入自动化日志,便于管理员审计和重试。
  • OpenClaw QQBot 的搜索进度提示使用 JavaScript Unicode 转义写入运行时插件,避免 Windows PowerShell 代码页导致“正在搜索资源,请稍后...”乱码;补丁脚本已覆盖旧运行时副本并重启网关。
  • 原 QQ 群机器人支持按管理端配置每天 09:00(Asia/Shanghai)发送近期更新影片及有效资源推荐;目标群号、篇数、时间和消息模板均可在 /admin/automation 配置,默认模板不发送本地 localhost 详情地址,后续部署到服务器时可通过 {{detailUrl}} 自行加回。支持 {{title}}{{year}}{{genres}}{{rating}}{{summary}}{{resources}}{{detailUrl}} 占位符。保存时间后 10 分钟内会自动补发,也支持管理员立即触发。当前 QQ 官方接口对该群曾返回 40034105 主动消息权限错误;NapCat 已无使用,不再作为备用通道恢复,后续应通过 QQ 官方接口权限或新的受支持通道解决。QQ 频道发帖仍由独立发布器负责。

多平台发布

  • /admin/automation 管理 QQ 频道账号、频道目标和微博目标。
  • 支持单目标、批量、定时、间隔、模板和失败重试;发布记录保存 PENDINGPOSTEDFAILED 及外部地址。
  • QQ 和微博使用独立凭据目录或运行时配置,互不覆盖原有机器人环境。

配置与安全

  • Cookie、Authorization、JWT、refresh token、密码和 API Key 只允许存在于 .env、外部服务配置或进程内存,不提交到 Git 或写入业务日志。
  • 浏览器登录态不等同于迅雷 Drive API Bearer token;Resource Hub 不读取浏览器 Cookie。收到 401 时更新官方 Authorization 或 refresh token。
  • OpenClaw QQBot 已配置命令 owner/elevated 白名单为 QQ 号 3929013344 及其已确认的群 member_openid EF8032478420C84E5A645799B62F1892,关闭聊天侧 bash/config/mcp/plugins/debug/restart 命令,全局拒绝 exec/read/write/edit/apply_patch 工具并禁用 elevated 工具执行;agent 默认沙箱已设为 all。插件入口会在 /bot-*/stop/approve 执行前再次校验白名单,未授权请求直接拒绝,不进入 AI 或执行队列;影视搜索命令保持可用。QQ 群事件使用 member_openid,可通过群内发送一条消息并查看 OpenClaw QQBot 日志中的 author.member_openid 获取。
  • OpenClaw 网关已重启并通过健康检查;QQBot 插件目录的 world-writable 权限已修复。当前仅保留旧插件 manifest 缺少 channelConfigs、以及显式运行时插件覆盖全局插件的非阻断警告。
  • 生产操作前后检查 git status --short;涉及数据库或卷的高风险操作必须先备份并保留回滚点。
  • 不执行 docker compose down -v、删除卷、DROPTRUNCATE 或物理删除核心历史数据作为日常维护手段。
  • 自动采集只有在生成并校验自有分享后才允许发布,第三方原始链接不得直接写入正式资源。

迁移与恢复基线

  • 当前生产目录为 D:\lide_expert_manage\gying-movie,部署分支为 codex/gying-publish,本次已核对的部署提交为 c95d9e6afaa05ec79e202e5869db5b257cb774f4
  • 2026-09-10 已生成正式迁移快照 migration-data\20260910-102117,包含 MySQL 完整逻辑备份、实际 Docker 持久化数据、MinIO、OpenClaw、MCP、夸克自动转存配置、social-publisher 凭据卷和计划任务资料。
  • 该快照的 MySQL 导出成功,mysql\gying.sql 约 10.5 MB;快照 SHA-256 清单包含 2365 条记录,总体积约 192 MB。快照目录含敏感凭据,不提交 Git、不上传公共网盘。
  • 本次快照是在服务在线状态下导出,只能作为迁移基线;正式切换前必须暂停 Worker、自动转存、QQ/频道/多平台发布调度,在维护窗口重新导出并完成恢复验证。
  • NapCat 已无使用,不迁移、不恢复、不作为健康检查或回滚依赖;Redis 和 PanSou 仅作为可重建缓存处理。

仍需处理

  • 迅雷官方凭据仍受短期 Authorization 和账户交互验证影响;需要持续维护 refresh token 或在管理端更新新凭据后再做真实转存验收。
  • GYING 图片源和部分外部网盘接口存在偶发超时、风控或响应结构变化,需保留重试和失败审计,不把单次 HTTP 200 视为业务成功。
  • 历史遗留的乱码任务、重复目录和无视频分享仍需按资源价值逐批人工确认,优先 dry-run 和软删除。
  • 微博自动发布需在凭据更新并完成单条真实发布验收后再开启长期计划任务。
  • 豆瓣评分没有稳定官方 API,不作为生产链路的强依赖。

验收

  • 2026-09-10:完成当前生产迁移数据快照、SHA-256 清单和可重复导出脚本;验证 Windows 宿主机 MySQL 导出使用 127.0.0.1,Docker 数据导出保留 docker cp -L,并将迁移数据目录加入 Git 忽略。
  • 2026-09-03:修复 GYING 自动补图并重建 gying-sourcebackendnginx;实测钢铁侠 vPW8 写入 movie_metadata.poster_url=mv/vPW8/384.avif,MinIO 地址返回 200。
  • 2026-08-26:完成生产运维基线复核,Compose 服务、数据库依赖和核心入口可按运维脚本检查;未执行破坏性数据操作。

长期不变量

  • movie_metadata 是影片主表,resource_link 是可用资源表,movie_source_identity 保存外部来源绑定。
  • 资源状态和发布状态必须可追踪;失效修复优先原位更新,避免同片产生多条活动自有分享。
  • 自动化只处理明确匹配的影片和资源;不确定匹配必须转为人工候选。
  • 删除、迁移和重复清理默认使用 dry-run,并保留可回滚的软删除或迁移记录。

常用校验

cd backend
mvn test

cd ../frontend
npm run lint
npm run build

cd ..
docker compose -f docker-compose.prod.yml config --quiet

已发现任务重跑

  • 影视资源中心支持夸克、迅雷“已发现”转存任务的批量延迟重跑,可在发现结果页手动触发。
  • 定时任务每天 08:30(Asia/Shanghai)运行;本轮存在迅雷任务但 Authorization 已过期或不可用时,整轮跳过,不启动转存。
  • 单条“重试分享并发布”以及批量重跑在本地资源发布成功后,会继续同步发布到 GYING;重跑数量和间隔可通过 RESOURCE_HUB_DISCOVERED_RETRY_* 配置。

资源新增

  • 资源链接按“影片 + 链接”去重,同一网盘链接可绑定不同季/影片;管理员和影片详情分享表单支持 URL 自动识别网盘、一键粘贴分享文案、快速标题参数和同系列绑定标记。
  • 同系列绑定会按当前影片的系列或 TMDB 集合提供可搜索多选候选,提交后为每个勾选季创建同一分享链接;快速标题参数由 resource.form.quick_params 集中管理,支持在系统设置中新增、修改、删除。
  • 绑定搜索输入关键词时会跨影片标题、英文名、别名、系列名和影片 ID 检索,避免因历史影片缺少系列字段而无结果;空搜索仍优先展示同系列候选。
  • 快速参数中的 [影片名] 是动态占位项:在影片详情页插入当前影片中文名,在管理员表单插入当前选中影片的中文名,不会写入字面量占位符。
  • 迅雷分享文案中的提取码会自动补到 URL 的 ?pwd=/&pwd= 参数;转存发布生成的资源名会带影片类型前缀,例如 【动作犯罪】
  • 2026-09-07:GYING 最近更新的确保/发布流程已独立检查夸克和迅雷,分别发布缺失 provider;迅雷服务不可用时明确失败,不再静默使用夸克代替。
  • 2026-09-07:已发布资源健康接口提供 mv/<movie-id>tv/<movie-id> 形式的 canonical gyingResourceId,可直接用于按 ID 修复,同时兼容旧 panlist ID。
  • 2026-09-07:健康修复会按 provider 分别解析夸克和迅雷转存任务。