lili 79264197ae
Some checks failed
contract-gates / contract-gates (push) Has been cancelled
docs-gate / docs-gate (push) Has been cancelled
feat(aigc-admin): 配置控制面阶段三 game-admin 配置控制台 UI(14端点封装+列表/详情三区/版本diff/漂移对账+aigc:config五权限菜单种子)
消费阶段二已落的 AdminGenConfigController(/admin-api/aigc/config 十四端点),把受治理生成配置变得可视可操作、有权限边界;不改一行后端契约。

- api/aigc/config/index.ts:14 端点封装 + VO 逐字对齐 TS 类型;三个 @RequestParam POST(archive/recover-activating/rebroadcast)走 params 位防真机 400;全走标准 CommonResult request(排除 genMonitor 裸 axios 范式)
- views/wanxiang/config:配置集列表+新建+归档;详情抽屉三区——草稿编辑(prompt 大文本域 + JsonEditor code 模式,解析→改叶子→原样回序列化保 routeA/routeB 信封 round-trip + routeA sanity 前端预校验)/ 版本历史+全量查看+与上一版 diff / 激活·回滚·恢复卡激活+漂移对账三态+一键重推;写按钮全 v-hasPermi 收敛(save/freeze/archive/activate)
- game-module-aigc/sql/aigc_config_menu.sql:自建父菜单(id 7120,component=wanxiang/config/index)+ 5 权限点(7121-7125:query/save/archive/freeze/activate)INSERT IGNORE 幂等,id 段避撞 biz(7100-07)/trade(7110-12)
- 契约核实:状态枚举实为 AigcConfigStatusEnum 五态(补工单漏的 ACTIVATING=15)/ verdict 五态 / changeType 三态逐字对源;version/get 参数是 versionId、version/diff 参数是 versionAId+versionBId
- 验收:vite build 绿(exit 0)+ eslint 干净(exit 0)+ vue-tsc 我方文件零类型错误(总数持平基线 55,均上游 yudao);真后端 e2e 走查待 staging 部署窗口(诚实口径:本地只到 build 绿)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-05 00:03:13 -07:00

42 lines
3.6 KiB
SQL
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

-- =============================================================================
-- aigc 生成配置治理 admin 权限点登记 SQL配置控制面阶段三 · 配置控制台 UI 鉴权所需 system_menu 种子)
-- 文件game-cloud/game-module-aigc/sql/aigc_config_menu.sql
-- 设计依据docs/plans/2026-07-04-配置控制面阶段三-game-admin配置控制台UI-plan.md §3.3
-- + AdminGenConfigController @PreAuthorize('aigc:config:{query,save,archive,freeze,activate}')。
--
-- ⚠️ 为什么走独立 SQL 而非 Flyway
-- huijing 菜单 seed 一贯走独立 SQLsql/mysql/ruoyi-vue-pro.sql / game-module-biz/sql/biz_menu.sql /
-- game-module-trade/sql/trade_menu.sql 同范式),权限点不属 Flyway 业务表迁移范畴;塞进业务表迁移会破坏
-- contracts/db-schemas 与 server 迁移副本的字节一致性、触发 flyway validate 崩。故照既有单独菜单初始化 SQL 方式登记。
--
-- 执行方式mini-desktop staging幂等可重复执行INSERT IGNORE 撞 id 即跳过):
-- mysql --default-character-set=utf8mb4 -h<host> -u<user> -p<pwd> <db> < game-cloud/game-module-aigc/sql/aigc_config_menu.sql
-- (含中文,务必 --default-character-set=utf8mb4 防乱码。)
--
-- 放行说明:
-- huijing 超级管理员角色system_role.code='super_admin'type=1对 @ss.hasPermission 全量放行(*:*:*
-- 登记菜单行后超管即可访问配置控制台;分配给普通运营角色由运营在 game-admin「角色管理」按需勾选不在本 SQL
-- ⚠️ 权限门验证不能用超管(*:*:* 全放行、证不出收敛):须建一个只勾 aigc:config:query 的运营角色断言写按钮全隐藏。
-- id 取 7120~7125biz_menu.sql 已占 7100~7107、trade_menu.sql 已占 7110~71127120+ 区间未占用,避免碰撞)。
-- 范围:本 SQL 仅登记生成配置治理 1 菜单 + 5 权限点NO-MERGE 范围)。
-- =============================================================================
-- 父菜单生成配置治理type=2 可路由菜单parent_id=0 顶级component=wanxiang/config/index 对应前端配置控制台页)
INSERT IGNORE INTO `system_menu`
(`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`,
`status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`)
VALUES
(7120, '生成配置治理', '', 2, 120, 0, 'aigc-config', 'ep:set-up', 'wanxiang/config/index', 'AigcConfig',
0, b'1', b'1', b'1', '1', NOW(), '1', NOW(), b'0');
-- 5 个按钮权限点type=3 按钮parent_id=7120对齐 AdminGenConfigController @PreAuthorize 五权限)
INSERT IGNORE INTO `system_menu`
(`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`,
`status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`)
VALUES
(7121, '查询', 'aigc:config:query', 3, 1, 7120, '', '', NULL, NULL, 0, b'1', b'1', b'1', '1', NOW(), '1', NOW(), b'0'),
(7122, '保存草稿', 'aigc:config:save', 3, 2, 7120, '', '', NULL, NULL, 0, b'1', b'1', b'1', '1', NOW(), '1', NOW(), b'0'),
(7123, '归档', 'aigc:config:archive', 3, 3, 7120, '', '', NULL, NULL, 0, b'1', b'1', b'1', '1', NOW(), '1', NOW(), b'0'),
(7124, '定版', 'aigc:config:freeze', 3, 4, 7120, '', '', NULL, NULL, 0, b'1', b'1', b'1', '1', NOW(), '1', NOW(), b'0'),
(7125, '激活', 'aigc:config:activate', 3, 5, 7120, '', '', NULL, NULL, 0, b'1', b'1', b'1', '1', NOW(), '1', NOW(), b'0');