9ffd68bae5
- admin-vue 新增「记录与版本 → 教程管理」页(menuKey admin_tutorial):
zip 浏览器直传 MinIO(presign → PUT 带进度 → confirm 落库)+ 列表/下载/删除,
最新一条标「当前生效」;补操作指引与 align-tutorial 守卫测试。
- frontend-vue 工具台「立即下载教程」进页面取 /api/tutorial/latest(最新上传优先),
接口异常或无记录回退历史固定直链,按钮不失效。
- Java 侧 tutorial 模块与 V119 迁移已在 dc6e8924 提交并上线(2026-09-13)。
vue-tsc + 两端单测(工具台 695 / 后台 1617)通过;生产已实测
presign→PUT→confirm→latest 切换→删除回落全链路。
99 lines
5.2 KiB
TypeScript
99 lines
5.2 KiB
TypeScript
/**
|
|
* 每菜单页的操作提示(guides)文案,对齐旧版 backend/static/admin-interactions.js 的 guides 表原文
|
|
* (除 group-manage / duplicate-check 用通用 fallback)。key = 路由 meta.menuKey。
|
|
*/
|
|
export interface OperationGuideData {
|
|
text: string
|
|
steps: string[]
|
|
}
|
|
|
|
export const OPERATION_GUIDE_FALLBACK: OperationGuideData = {
|
|
text: '先使用筛选定位记录,再进行新增、编辑、导出等操作。涉及删除的数据会要求二次确认。',
|
|
steps: ['选择筛选条件', '处理记录', '核对反馈'],
|
|
}
|
|
|
|
/** 折叠状态 localStorage key(沿用旧版 shufuAdminGuideCollapsed 语义)。 */
|
|
export const OPERATION_GUIDE_STORAGE_KEY = 'shufuAdminGuideCollapsed'
|
|
|
|
export const OPERATION_GUIDES: Record<string, OperationGuideData> = {
|
|
admin_users: {
|
|
text: '先用筛选定位账号,再编辑角色和菜单权限;删除账号会要求二次确认。',
|
|
steps: ['筛选账号', '编辑权限', '确认保存'],
|
|
},
|
|
admin_columns: {
|
|
text: '菜单会影响后台和软件端的可见范围。先填写名称并选择对应页面,再设置上级菜单;顺序直接拖动列表左侧手柄调整。',
|
|
steps: ['新增或调整菜单', '设置层级', '拖动排序'],
|
|
},
|
|
admin_group_manage: OPERATION_GUIDE_FALLBACK,
|
|
admin_user_secrets: {
|
|
text: '用户密钥按账号绑定,列表只展示脱敏值。可对单条立即检测连通性;清空后该用户需要重新配置密钥。',
|
|
steps: ['筛选用户或状态', '立即检测连通性', '必要时清空'],
|
|
},
|
|
admin_dedupe_total_data: {
|
|
text: '支持按关键词、用户、分组和国家筛选;导入前先确认所选分组,导出会按日期范围生成文件。',
|
|
steps: ['选择分组', '筛选或导入', '核对并导出'],
|
|
},
|
|
admin_invalid_asin_data: {
|
|
text: '维护不符合规则的 ASIN 或品牌。添加后可使用上方筛选快速回查。',
|
|
steps: ['填写 ASIN/品牌', '选择分组', '保存并回查'],
|
|
},
|
|
admin_query_asin: {
|
|
text: '查询 ASIN 以店铺为单位维护。列表里点击 ASIN 即可复制,点右侧「配置」可一次维护该店铺所有站点的 ASIN。',
|
|
steps: ['筛选店铺', '打开配置抽屉', '保存或导出'],
|
|
},
|
|
admin_product_categories: {
|
|
text: '类目树支持展开查看层级。搜索、编辑和删除都在同一列表中完成。',
|
|
steps: ['搜索类目', '展开层级', '新增或编辑'],
|
|
},
|
|
admin_skip_price_asin: {
|
|
text: '最低价 ASIN 以店铺为单位维护。列表里点击 ASIN 即可复制,点右侧「配置」可一次维护该店铺所有站点的 ASIN 与最低价。',
|
|
steps: ['筛选店铺', '打开配置抽屉', '保存或批量导入'],
|
|
},
|
|
admin_shop_keys: {
|
|
text: '紫鸟令牌属于敏感配置。白名单状态可悬停查看检测详情,编辑前请先核对账号名称。',
|
|
steps: ['新增或筛选密钥', '查看白名单状态', '编辑或删除'],
|
|
},
|
|
admin_shop_manage: {
|
|
text: '店铺信息按分组管理。长商城名会自动缩略,悬停即可查看完整内容。',
|
|
steps: ['选择分组', '维护店铺信息', '筛选核对结果'],
|
|
},
|
|
admin_shop_data_crawl_tasks: {
|
|
text: '店铺数据任务按状态和时间筛选。批量操作前请核对已选任务。',
|
|
steps: ['筛选任务', '检查状态', '执行批量操作'],
|
|
},
|
|
// admin_shop_data_duplicate_check(店铺撞款监控)为例外页:不展示全局提示条,不参与对齐。
|
|
admin_image_video_tasks: {
|
|
text: '可先使用筛选缩小任务范围,再查看任务状态、结果和权限范围。',
|
|
steps: ['设置筛选', '查看任务结果', '按需处理任务'],
|
|
},
|
|
admin_history: {
|
|
text: '生成记录可按用户和时间范围回溯,用于核对结果文件和执行时间。',
|
|
steps: ['设置时间范围', '筛选记录', '查看结果预览'],
|
|
},
|
|
admin_version: {
|
|
text: '上传版本后请核对版本号和下载链接,再通知用户更新。',
|
|
steps: ['上传压缩包', '检查版本记录', '维护历史版本'],
|
|
},
|
|
admin_tutorial: {
|
|
text: '上传新的教程压缩包后即刻生效:工具台首页「立即下载教程」以下载最新上传的包为准。确认旧包不再需要后再删除。',
|
|
steps: ['上传教程压缩包', '到工具台核对下载', '清理历史包'],
|
|
},
|
|
digital_human_version: {
|
|
text: '数字人版本需先上传草稿,再发布并标记最新版本。',
|
|
steps: ['上传草稿', '确认更新日志', '发布或设为最新'],
|
|
},
|
|
admin_user_secret_usage: {
|
|
text: '按日期范围统计各用户的密钥调用次数(货源查询与外观专利按 LLM 请求次数、代理按提取次数),用于评估用户资源损耗。',
|
|
steps: ['选择日期范围', '筛选用户或分组', '核对各模块次数'],
|
|
},
|
|
}
|
|
|
|
/** 全部有独立/兜底提示的后台业务菜单 key。 */
|
|
export const OPERATION_GUIDE_MENU_KEYS = Object.keys(OPERATION_GUIDES)
|
|
|
|
/** 返回指定菜单 key 的提示数据;menuKey 不在已知集合时返回 null(登录/404 等页面不展示)。 */
|
|
export function operationGuideFor(menuKey: unknown): OperationGuideData | null {
|
|
if (typeof menuKey !== 'string' || !menuKey) return null
|
|
return OPERATION_GUIDES[menuKey] ?? null
|
|
}
|