diff --git a/docs/api-phase1.md b/docs/api-phase1.md index 513bc59..c88a84f 100644 --- a/docs/api-phase1.md +++ b/docs/api-phase1.md @@ -338,6 +338,22 @@ POST /app/auth/register | GET | `/admin/dashboard/transcode` | 转码队列与失败任务 | | POST | `/admin/notices` | 发布系统公告 | +### 2.9 后台前端页面(已实现) + +`ReelShortWeb`(Vue3 + Element Plus,dev server `:3005`)的五个运营页面,统一沿用「api 封装 + 视图 + 样式」的写法; +表格列与下面这些接口的字段一一对应,**不在前端编字段**,时间列统一显示 `yyyy-MM-dd HH:mm:ss`。 + +| 页面 | 路由 | 菜单组件路径(`sys_menu.component`) | 依赖权限点 | 覆盖接口 | +| --- | --- | --- | --- | --- | +| 内容治理 | `/governance/content` | `views/governance/ContentGovernanceView` | `comment:list` `comment:audit` `report:list` `report:handle` `sensitive-word:list` `sensitive-word:update` | 评论检索与审核、举报工单处理、敏感词库增删改查 | +| 订单与权益 | `/commerce/orders` | `views/commerce/OrderManagementView` | `order:list` `order:update` `entitlement:list` `entitlement:update` `wallet:update` `reconcile:run` | 订单检索 / 流水 / 补发 / 退款、权益检索 / 人工补发 / 回收、金币流水 / 人工补币、对账运行与历史 | +| 创作者入驻 | `/creator/creators` | `views/creator/CreatorAuditView` | `creator:list` `creator:audit` | 创作者检索、资质查看、入驻审核(通过 / 驳回 / 冻结) | +| 内容审核 | `/creator/submissions` | `views/creator/SubmissionAuditView` | `submission:list` `submission:audit` | 内容提交检索、通过 / 驳回(带原因码) | +| 数据看板 | `/board/overview` | `views/dashboard/BusinessDashboardView` | `dashboard:view` | `overview` + `transcode`(纯只读) | + +菜单、权限点与超管授权由 `sql/data-phase1.sql` 幂等落库(内容治理 / 订单与权益 / 数据看板挂菜单 id 20–25,创作者两条为 17–19)。 +页面只读态与可操作态按权限点区分:没有 `*:update` / `*:audit` 的角色进入页面时按钮隐藏或显示「只读」。 + ## 3. 契约与实现状态对照 | 模块 | 表结构 | 接口 | 代码 | @@ -349,6 +365,6 @@ POST /app/auth/register | 05 记录、收藏与下载 | 已建 | 已冻结 | **已实现**:进度、观看流水、收藏、离线下载授权与任务 | | 06 评论、点赞与分享 | 已建 | 已冻结 | **已实现**:评论(游标翻页/审核/删除)、点赞、举报、敏感词;分享埋点在下一批 | | 07 创作者中心 | 已建 | 已冻结 | 下一批(转码任务与产物记账已实现) | -| 08 平台运营后台 | 已建 | 已冻结 | 用户管理、内容治理、订单与权益、创作者与内容审核、**数据看板均已实现**;仅剩后台页面(3-4) | +| 08 平台运营后台 | 已建 | 已冻结 | **已实现**:后台接口(用户管理、内容治理、订单与权益、创作者与内容审核、数据看板)与后台页面(内容治理 / 订单与权益 / 创作者审核 / 数据看板,见 2.9)全部落地 | | 09 分集收费与支付 | 已建 | 已冻结 | 下一批(权益判定端口已预留,接上即生效) | | 10 质量、数据与上线 | 已建 | 已冻结 | 压测与埋点 下一批 | diff --git a/sql/data-phase1.sql b/sql/data-phase1.sql index 0f2a4e8..d1260a5 100644 --- a/sql/data-phase1.sql +++ b/sql/data-phase1.sql @@ -138,3 +138,28 @@ CROSS JOIN sys_menu m WHERE r.code = 'super_admin' AND m.id IN (15, 16) ON CONFLICT DO NOTHING; + +-- ---------- 菜单:内容治理 / 订单与权益 / 数据看板 ---------- +-- 这三条菜单拖到 3-4 页面做出来才加:菜单先落库而组件不存在的话, +-- 前端动态路由会指向空组件、侧边栏直接报错(3-3 时就是这么刻意留空的)。 +-- component 指向 src/views/governance|commerce|dashboard/ 下的页面,前端按字符串动态加载。 +INSERT INTO sys_menu (id, parent_id, title, route_path, route_name, component, redirect, icon, + permission_code, type, always_show, affix, sort) VALUES + (20, 0, '内容治理', '/governance', 'Governance', '#', '/governance/content', 'ep:chat-dot-round', 'comment:list', 'CATALOG', 1, 0, 6), + (21, 20, '评论与举报', 'content', 'governance-content', 'views/governance/ContentGovernanceView', '', '', 'comment:list', 'MENU', 0, 0, 1), + (22, 0, '订单与权益', '/commerce', 'Commerce', '#', '/commerce/orders', 'ep:coin', 'order:list', 'CATALOG', 1, 0, 7), + (23, 22, '订单管理', 'orders', 'commerce-orders', 'views/commerce/OrderManagementView', '', '', 'order:list', 'MENU', 0, 0, 1), + (24, 0, '数据看板', '/board', 'BoardCenter', '#', '/board/overview', 'ep:data-line', 'dashboard:view', 'CATALOG', 1, 0, 8), + (25, 24, '运营大盘', 'overview', 'board-overview', 'views/dashboard/BusinessDashboardView', '', '', 'dashboard:view', 'MENU', 0, 0, 1) +ON CONFLICT (id) DO UPDATE SET parent_id = EXCLUDED.parent_id, title = EXCLUDED.title, + route_path = EXCLUDED.route_path, route_name = EXCLUDED.route_name, component = EXCLUDED.component, + redirect = EXCLUDED.redirect, icon = EXCLUDED.icon, permission_code = EXCLUDED.permission_code, + type = EXCLUDED.type, always_show = EXCLUDED.always_show, affix = EXCLUDED.affix, sort = EXCLUDED.sort; + +INSERT INTO sys_role_menu (role_id, menu_id) +SELECT r.id, m.id +FROM sys_role r +CROSS JOIN sys_menu m +WHERE r.code = 'super_admin' + AND m.id IN (20, 21, 22, 23, 24, 25) +ON CONFLICT DO NOTHING;