feat: 08 后台四个页面的菜单与权限点落库 + 契约文档收口
为什么:内容治理 / 订单与权益 / 数据看板这三个页面的菜单此前刻意留空—— 3-3 时页面还没做,菜单先落库会让前端动态路由指向不存在的组件。页面这一轮做完了, 把菜单(id 20–25,含组件路径)、权限点与超管授权按幂等写法补进 sql/data-phase1.sql, 刷新后台即生效,不需要清缓存重新登录。 - sql/data-phase1.sql:新增 3 个目录 + 3 个菜单,超管菜单授权 20–25;可重复执行 - docs/api-phase1.md:08 行由「仅剩后台页面(3-4)」改为「已实现」; 新增「2.9 后台前端页面(已实现)」,列出五个页面的路由 / 组件路径 / 依赖权限点 / 覆盖接口
This commit is contained in:
1 parent
d67d9daf8c
commit
8b261b71de
2 files changed
+42
-1
No files matched your search
+17
-1
@@ -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 质量、数据与上线 | 已建 | 已冻结 | 压测与埋点 下一批 |
|
||||
@@ -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;
|
||||
Reference in new issue
Block a user