本模块包含 Dashboard 文章管理、整篇 Markdown 编辑、动态标签、统一专精、作者资料、标签免责声明、Portal 目录与阅读页,以及 Maxroll 增量同步。首次中文内容已打包,无需重新翻译。
在项目根目录使用线上服务实际使用的 Python 环境执行以下命令。下文 python 可替换成 .venv/bin/python 或部署使用的 Python 路径。不要在线上设置本地测试用的 LMONITOR_USE_SQLITE。
git pull --ff-only origin master
python -m pip install -r requirements-class-guides.txt
python manage.py migrate --noinput
python manage.py import_class_guide_drafts --dry-run
python manage.py import_class_guide_drafts
python manage.py collectstatic --noinput完成后按现有部署方式重启 Web 服务及 botend 后端,使现有后端加载新增监控插件。若使用项目 deploy.sh,应先安装上面的 Markdown 依赖;该脚本负责已有的迁移、静态文件收集和服务重启,中文草稿包仍需执行上述导入命令。
初始化命令默认直接读取仓库内置 ZIP,无需手动解压;可用 --input-zip 路径 导入其他压缩包,或用 --input-dir 目录 兼容已解压的包。包内根目录包含 manifest.json、terms.json 和逐篇中文草稿、原文快照。当前内置包包含 80 篇草稿,术语数量以校验回显为准。第一次导入预期新增 80 篇;重复执行跳过相同内容。目标环境已有人工修改时,跳过覆盖并保留人工正文、作者自定义资料和现有标签;新增 Maxroll 来源攻略自动补充 maxroll 标签。人工移除的标签不会在后续同步中被重新添加。
数据库迁移自动创建攻略表、专精约束、Portal“全职业攻略”导航和默认免责声明。免责声明采用已确认的站点文案,后续在 Dashboard 统一修改,不写入文章正文。显示取决于文章标签,移除 maxroll 标签即隐藏。更新日期采用当前正文抓取的原文日期。
- 后台:
/dashboard/?section=class-guides,支持列表、新建、编辑、标签和作者资料;免责声明独立管理,持续更新由 botend 监控任务维护。 - 前台:
/portal/class-guides/,也可从 Portal“数据中心 → 全职业攻略”进入。 - 文章编号由目标数据库分配,不要依赖本地的
/16/编号。请从目录进入正文。 - 后台及 Portal 攻略均要求
content.class-guides权限。使用超级管理员,或在 Dashboard 用户组管理中分配“职业攻略”权限;匿名访问返回 403。
80 篇包括 40 篇团本与 40 篇大秘境攻略,全文已翻译,引用与组件结构差异为 0。77 篇通过自动内容检查,3 篇仍需校订来源引用:恶魔学的两篇攻略涉及 spell:109997,恢复萨满团本涉及 spell:1296629。全部来自完整分页目录,已排除练级攻略;自动检查不代替战术内容人工审核。
在 Dashboard“系统管理 → 监控任务”中找到 MaxrollClassGuideMonitor,设置检查间隔(wait_time 单位为秒)并开启监控。首次启用前,在该任务的“任务备注”中填写已有授权依据。MaxrollClassGuideMonitor 已注册到 botend 现有监控插件列表,使用统一的 MonitorTask 调度、执行租约、请求客户端和失败处理;无需增加独立服务或攻略常驻进程。首次安装默认关闭、间隔 6 小时;升级会保留旧监控开关和间隔。
攻略页不再提供重复的“来源与更新”配置入口,开关和间隔统一由监控任务管理,后端重启保留自定义间隔。ClassGuideFeed 已移除,授权说明保存在监控任务备注中。现有 botend 后端需要正常运行。每次到期读取完整分页目录,排除练级攻略后执行一轮检查并返回;不按版本标签过滤,只翻译新增、原文变化或之前翻译未完成的文章,直接更新文章正文;发现人工修改时保留人工正文,并在同步批次中记录 manual_preserved。最近批次摘要见监控任务的 flag,详细逐篇结果及错误可在“数据库 → 攻略同步批次(ClassGuideSyncRun)”查看。
旧 sync_class_guides --watch 已停用;若此前创建过该命令的常驻服务,请停用它。首次中文包导入不需要翻译 API,后续更新翻译使用站内已有翻译引擎。日常监控不使用固定快照的 --cache-dir。
手动同步一次:
python manage.py sync_class_guides --translate --workers 2只补抓作者资料、不重新翻译正文:
python manage.py sync_class_guide_authors --workers 4若需要从远端重新建立全部草稿,可在监控任务备注中登记授权后执行手动同步命令;无需先批量删除文章。断点重跑复用翻译缓存。
升级前停止旧版 botend 和手动同步,等待当前任务完成。备份数据库后执行 python manage.py migrate,再启动新版后端。
迁移 0218 会将旧来源表的授权说明迁入 MaxrollClassGuideMonitor 的任务备注,保留现有监控开关、间隔与同步批次,然后删除 ClassGuideFeed 表。检测到仍有效的旧同步锁或监控执行锁时,迁移会拒绝继续,待任务结束或锁过期后重试。
手动同步与后台监控共用 MonitorTaskLease,同一时刻仅能运行一个同步任务。手动命令可以在监控关闭时执行,不会打开监控;也可通过 --authorization-note "已有授权依据" 保存授权说明。原 /api/dashboard/class-guides/feed/ 接口已移除。
迁移 0219 会按原页面的实际展示规则,将正文、原文、来源快照及内容检查信息迁入文章表,随后删除修订记录表、修订次数和审核关联。遇到最新自动更新与人工修改冲突时,保留原页面展示的人工正文。作者、专精、标签和归档信息保持不变。
执行迁移前停止旧版应用和 botend,等待同步任务结束,并完整备份数据库。迁移后不再保存历史修订;数据库备份是恢复旧历史的依据。反向迁移仅能恢复一条当前内容记录,不能恢复被移除的全部历史。
Dashboard 提供新建、编辑和保存;“在前台显示”随正文一起保存,所属专精可从全站统一分类中修改;术语、翻译和组件检查只作为提示,不要求审核。保存请求通过读取时的 updated_at 防止并发覆盖,自动更新通过正文指纹识别人工修改。旧中文 ZIP 初始化包仍可使用 import_class_guide_drafts 导入。
隐藏的文章仍显示在后台列表,并可按“前台显示 / 未显示”筛选和恢复显示。显示开关只影响 Portal 目录与阅读页,不会停用后台同步。手动修改专精后,来源专精不一致的自动抓取会记录 specialization_preserved 并跳过,初始化导入也不会覆盖该专精。
攻略不再维护独立的 ClassGuideTerm 表。0220_consolidate_wow_localization 扩展现有 WowTalentNodeMetadata 的类型字段,将天赋、技能、物品、普通专名和宏名称统一迁入同一张表,然后删除旧表。现有天赋节点的中文优先保留,来源编号通过 reference_aliases 关联;该字段仅存编号,不复制名称。
name_kind区分五种类型;localization_only区分只有名称的资料和完整天赋节点。非节点记录不生成树结构,也不会成为配装候选。- 法术、物品快照保持原有结构,继续负责原始数据采集。名称初始化可以利用这些已有资料,但维护统一写入原天赋名称表。
- 全站维护入口为 Dashboard 的“游戏名称管理”:
/dashboard/?section=wow-localization。权限为“游戏名称管理”;攻略编辑权限不自动获得修改全站名称的权限。旧的攻略术语 API 已移除。 - 初始化包内的
terms.json继续兼容,导入时只补缺,不覆盖已有共享中文;导出包包含共享名称和必要的来源编号别名。hydrate_class_guide_terms保留命令兼容,写入同一张名称表。 - 攻略引用、翻译及新闻术语保护共用这份名称;真实天赋节点缺少中文时,天赋展示也可以读取同表的名称资料,不增加节点。
- 部署前停止攻略同步并备份数据库,运行
python manage.py migrate后重启。反向迁移恢复当前名称资料;需要精确回滚旧冲突译名时使用数据库备份。
来源中的多个 Tab 按原顺序转换为 Markdown 标题及连续正文,标题自动进入目录。后台编辑、预览和 Portal 全部展示各方案,不再切换或隐藏方案。天赋、配装等组件保持原有引用语法。
执行 python manage.py migrate 时,0221 会转换已有中文正文与原文对照;人工修改保护和来源更新时间保持不变。初始化导入旧稿件包和后续 Botend 同步也会自动转换,无需重新翻译已有文章。
来源目录首屏只返回 100 条,监控会按搜索响应的总数继续分页,不再把首屏当成完整目录。2026-09-08 核对结果为 120 条:排除 40 篇练级后,纳入 40 个专精的 80 篇攻略。其他类型的专精攻略也可纳入;目录分页失败或提前结束会明确报错。
缺少版本标签不再拒绝导入,优先采用本轮目录中已标明的最新版本用于术语匹配;单篇导入则复用已有来源版本或全站启用版本。后续补上同一版本标签时更新原文章,不重复创建。不会把推定版本写回原始来源快照。
已有部署补齐遗漏文章:更新代码并重启 botend 后,监控下一轮会自动补抓;也可立即执行 python manage.py sync_class_guides --translate。不要使用旧的 --cache-dir 目录清单做日常同步。