feat: 皮肤站管理台 Wiki 补 MediaWiki 迁移中心
Sync source to CNB / Sync Git ref (push) Skipped

- 新增迁移中心 Tab
- 自动迁移:填写 api.php 地址,可选 Bot 凭据,支持明确允许内网来源;可配置过时页面筛选规则(未更新天数、维护者统计窗口、维护者人数上限、过时标记)
- XML 导入:上传 MediaWiki 导出文件建立暂存任务
- 迁移任务列表:状态标签、审核进度条、已审核/导入/排除统计、错误信息
- 任务详情:分页加载候选页面,逐条显示更新时间、维护者数量、可疑原因,可设置目标标题与是否覆盖,执行导入或排除
- 整批发布与回滚,失败或已回滚任务可删除记录
- 补充迁移相关 API 与类型定义
- 中英文各补 55 个文案
This commit is contained in:
AxTps committed 2026-10-18 12:57:26 +08:00
1 parent 667c1a0900
commit febbd84ae7
4 files changed
+986 -4

No files matched your search

+56 -1
View File
@@ -12369,5 +12369,60 @@
"app.skin-site.chat.admin.voice-saved": {"message": "Voice configuration saved."},
"app.skin-site.chat.admin.voice-logs-auto-refresh": {"message": "Auto refresh"},
"app.skin-site.chat.admin.voice-logs-refresh": {"message": "Refresh"},
"app.skin-site.chat.admin.voice-logs-empty": {"message": "No logs yet."}
"app.skin-site.chat.admin.voice-logs-empty": {"message": "No logs yet."},
"app.skin-site.admin.wiki.tab-migration": {"message": "Migration"},
"app.skin-site.admin.wiki.migration-title": {"message": "MediaWiki migration"},
"app.skin-site.admin.wiki.migration-hint": {"message": "Migrated content lands in a hidden staging area and is published in one batch after every page is reviewed."},
"app.skin-site.admin.wiki.auto-title": {"message": "Read from MediaWiki API"},
"app.skin-site.admin.wiki.api-url": {"message": "api.php URL"},
"app.skin-site.admin.wiki.bot-username": {"message": "Bot username (optional)"},
"app.skin-site.admin.wiki.bot-password": {"message": "Bot password (optional)"},
"app.skin-site.admin.wiki.credentials-hint": {"message": "Credentials stay in memory for this job only. HTTPS is required when supplied."},
"app.skin-site.admin.wiki.allow-private": {"message": "Allow private network source"},
"app.skin-site.admin.wiki.allow-private-hint": {"message": "Private sources may reach services inside the server network."},
"app.skin-site.admin.wiki.start-auto": {"message": "Create automatic migration job"},
"app.skin-site.admin.wiki.xml-title": {"message": "Import MediaWiki XML"},
"app.skin-site.admin.wiki.xml-file": {"message": "Export file"},
"app.skin-site.admin.wiki.start-xml": {"message": "Upload and stage"},
"app.skin-site.admin.wiki.stale-rules": {"message": "Stale page detection rules"},
"app.skin-site.admin.wiki.stale-days": {"message": "Days without update"},
"app.skin-site.admin.wiki.maintainer-window": {"message": "Maintainer window (days)"},
"app.skin-site.admin.wiki.max-maintainers": {"message": "Max maintainers"},
"app.skin-site.admin.wiki.stale-markers": {"message": "Stale categories, templates or text"},
"app.skin-site.admin.wiki.stale-markers-hint": {"message": "Comma separated"},
"app.skin-site.admin.wiki.jobs": {"message": "Migration jobs"},
"app.skin-site.admin.wiki.refresh-jobs": {"message": "Refresh"},
"app.skin-site.admin.wiki.jobs-empty": {"message": "No migration jobs yet."},
"app.skin-site.admin.wiki.reviewed-count": {"message": "Reviewed {reviewed} / {total}"},
"app.skin-site.admin.wiki.imported-excluded": {"message": "Imported {imported} · Excluded {excluded}"},
"app.skin-site.admin.wiki.view-job": {"message": "View job"},
"app.skin-site.admin.wiki.delete-job": {"message": "Delete job record"},
"app.skin-site.admin.wiki.confirm-delete-job": {"message": "Delete migration job #{id}? This cannot be undone."},
"app.skin-site.admin.wiki.candidates": {"message": "Candidate pages"},
"app.skin-site.admin.wiki.candidates-empty": {"message": "Select a job to review its pages."},
"app.skin-site.admin.wiki.last-updated": {"message": "Updated {date}"},
"app.skin-site.admin.wiki.maintainer-count": {"message": "{count} maintainers"},
"app.skin-site.admin.wiki.conflict": {"message": "Title conflict"},
"app.skin-site.admin.wiki.target-title": {"message": "Target title"},
"app.skin-site.admin.wiki.overwrite": {"message": "Overwrite"},
"app.skin-site.admin.wiki.import": {"message": "Import"},
"app.skin-site.admin.wiki.exclude": {"message": "Exclude"},
"app.skin-site.admin.wiki.publish": {"message": "Publish batch"},
"app.skin-site.admin.wiki.rollback": {"message": "Roll back"},
"app.skin-site.admin.wiki.confirm-rollback": {"message": "Roll back this migration batch? Published pages will be reverted."},
"app.skin-site.admin.wiki.state-importing": {"message": "Importing"},
"app.skin-site.admin.wiki.state-review": {"message": "Waiting review"},
"app.skin-site.admin.wiki.state-publishing": {"message": "Publishing"},
"app.skin-site.admin.wiki.state-published": {"message": "Published"},
"app.skin-site.admin.wiki.state-failed": {"message": "Failed"},
"app.skin-site.admin.wiki.state-rolled-back": {"message": "Rolled back"},
"app.skin-site.admin.wiki.decision-pending": {"message": "Pending"},
"app.skin-site.admin.wiki.decision-import": {"message": "Import"},
"app.skin-site.admin.wiki.decision-exclude": {"message": "Exclude"},
"app.skin-site.admin.wiki.migration-started": {"message": "Migration job created."},
"app.skin-site.admin.wiki.xml-staged": {"message": "XML parsed and staged for review."},
"app.skin-site.admin.wiki.published": {"message": "Published {imported} pages, overwrote {overwritten}."},
"app.skin-site.admin.wiki.rolled-back": {"message": "Migration batch rolled back."},
"app.skin-site.admin.wiki.job-deleted": {"message": "Migration record deleted."},
"app.skin-site.admin.wiki.select-xml": {"message": "Choose a MediaWiki XML file first."}
}
+56 -1
View File
@@ -12200,5 +12200,60 @@
"app.skin-site.chat.admin.voice-saved": {"message": "语音库配置已保存。"},
"app.skin-site.chat.admin.voice-logs-auto-refresh": {"message": "自动刷新"},
"app.skin-site.chat.admin.voice-logs-refresh": {"message": "刷新"},
"app.skin-site.chat.admin.voice-logs-empty": {"message": "暂无日志。"}
"app.skin-site.chat.admin.voice-logs-empty": {"message": "暂无日志。"},
"app.skin-site.admin.wiki.tab-migration": {"message": "迁移中心"},
"app.skin-site.admin.wiki.migration-title": {"message": "MediaWiki 迁移"},
"app.skin-site.admin.wiki.migration-hint": {"message": "迁移内容会先进入不可见暂存区,所有页面完成导入或排除审核后才能整批发布。"},
"app.skin-site.admin.wiki.auto-title": {"message": "从 MediaWiki API 自动读取"},
"app.skin-site.admin.wiki.api-url": {"message": "api.php 地址"},
"app.skin-site.admin.wiki.bot-username": {"message": "Bot 用户名(选填)"},
"app.skin-site.admin.wiki.bot-password": {"message": "Bot 密码(选填)"},
"app.skin-site.admin.wiki.credentials-hint": {"message": "凭据只存在于本次后台任务的内存中,携带凭据时必须使用 HTTPS。"},
"app.skin-site.admin.wiki.allow-private": {"message": "明确允许访问内网来源"},
"app.skin-site.admin.wiki.allow-private-hint": {"message": "内网来源可能访问皮肤站所在网络中的服务,请只对可信地址启用。"},
"app.skin-site.admin.wiki.start-auto": {"message": "创建自动迁移任务"},
"app.skin-site.admin.wiki.xml-title": {"message": "导入 MediaWiki XML"},
"app.skin-site.admin.wiki.xml-file": {"message": "导出文件"},
"app.skin-site.admin.wiki.start-xml": {"message": "上传并建立暂存任务"},
"app.skin-site.admin.wiki.stale-rules": {"message": "疑似过时页面筛选规则"},
"app.skin-site.admin.wiki.stale-days": {"message": "未更新天数"},
"app.skin-site.admin.wiki.maintainer-window": {"message": "维护者统计天数"},
"app.skin-site.admin.wiki.max-maintainers": {"message": "维护者人数不超过"},
"app.skin-site.admin.wiki.stale-markers": {"message": "过时分类、模板或文字标记"},
"app.skin-site.admin.wiki.stale-markers-hint": {"message": "使用逗号分隔"},
"app.skin-site.admin.wiki.jobs": {"message": "迁移任务"},
"app.skin-site.admin.wiki.refresh-jobs": {"message": "刷新"},
"app.skin-site.admin.wiki.jobs-empty": {"message": "还没有迁移任务。"},
"app.skin-site.admin.wiki.reviewed-count": {"message": "已审核 {reviewed} / {total}"},
"app.skin-site.admin.wiki.imported-excluded": {"message": "导入 {imported} · 排除 {excluded}"},
"app.skin-site.admin.wiki.view-job": {"message": "查看任务"},
"app.skin-site.admin.wiki.delete-job": {"message": "删除迁移记录"},
"app.skin-site.admin.wiki.confirm-delete-job": {"message": "确认删除迁移任务 #{id}?此操作不可恢复。"},
"app.skin-site.admin.wiki.candidates": {"message": "候选页面"},
"app.skin-site.admin.wiki.candidates-empty": {"message": "选择任务后查看其页面。"},
"app.skin-site.admin.wiki.last-updated": {"message": "更新于 {date}"},
"app.skin-site.admin.wiki.maintainer-count": {"message": "{count} 位维护者"},
"app.skin-site.admin.wiki.conflict": {"message": "标题冲突"},
"app.skin-site.admin.wiki.target-title": {"message": "目标标题"},
"app.skin-site.admin.wiki.overwrite": {"message": "覆盖"},
"app.skin-site.admin.wiki.import": {"message": "导入"},
"app.skin-site.admin.wiki.exclude": {"message": "排除"},
"app.skin-site.admin.wiki.publish": {"message": "整批发布"},
"app.skin-site.admin.wiki.rollback": {"message": "回滚"},
"app.skin-site.admin.wiki.confirm-rollback": {"message": "确认回滚本批迁移?已发布的页面将被还原。"},
"app.skin-site.admin.wiki.state-importing": {"message": "正在读取"},
"app.skin-site.admin.wiki.state-review": {"message": "等待审核"},
"app.skin-site.admin.wiki.state-publishing": {"message": "正在发布"},
"app.skin-site.admin.wiki.state-published": {"message": "已发布"},
"app.skin-site.admin.wiki.state-failed": {"message": "失败"},
"app.skin-site.admin.wiki.state-rolled-back": {"message": "已回滚"},
"app.skin-site.admin.wiki.decision-pending": {"message": "待审核"},
"app.skin-site.admin.wiki.decision-import": {"message": "导入"},
"app.skin-site.admin.wiki.decision-exclude": {"message": "排除"},
"app.skin-site.admin.wiki.migration-started": {"message": "迁移任务已创建。"},
"app.skin-site.admin.wiki.xml-staged": {"message": "XML 已解析并进入逐页审核阶段。"},
"app.skin-site.admin.wiki.published": {"message": "已发布 {imported} 个页面,覆盖 {overwritten} 个。"},
"app.skin-site.admin.wiki.rolled-back": {"message": "迁移批次已安全回滚。"},
"app.skin-site.admin.wiki.job-deleted": {"message": "迁移记录已删除。"},
"app.skin-site.admin.wiki.select-xml": {"message": "请先选择 MediaWiki XML 文件。"}
}