11 Commits

Author SHA1 Message Date
lili
facaca1643 feat(admin): 补齐AI系统配置写链路
Some checks failed
Backend Maven CI / backend-local (push) Has been cancelled
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-27 12:52:37 -07:00
lili
3585219637 feat(mvp): 收束1.0.0线A交付闭环
Some checks failed
Backend Maven CI / backend-local (push) Has been cancelled
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-27 10:52:10 -07:00
lili
6bd90301a5 test(admin-e2e): governance config 全页巡航转真连——拆 6 子系统真连+灌系统级种子(admin e2e 0 skip 全收口)
承用户选 B(补 admin config 断层)。前提纠正:原 skip 注释"切片库根本没有 muse_function_chain/muse_protection_node 表"误判——psql 实证真表名带 meta_ 前缀=muse_meta_function_chain/muse_meta_protection_node(V3 schema、都在 muse_slice_live、行数 0),真断层是缺系统级公共治理对象种子、非缺表/缺功能。

每锚点真表+真后端过滤契约(curl 实证):story.draft 元结构=muse_meta_schema(列表无 status 过滤);故事链路=muse_meta_function_chain(listQuery 只放行 status=active、displayName 取 chain_snapshot.displayName);事实校验保护节点=muse_meta_protection_node(status=active+policy_snapshot->>chainKey 绑定链路、irreplaceable);候选生成 Prompt=muse_prompt(非 muse_ai_prompt);系统故事智能体=muse_agent(非 muse_ai_agent、agent_type=system、scope=all 不过滤);系统世界观库=muse_knowledge_base(kb_type=global、owner_user_id=0)。

global-setup 加 resetMetaGovernanceFixture(7 幂等 upsert ON CONFLICT、tenant_id=1、照 resetMarketFixture/resetJobsFixture 范式)。spec 删 :456 skip→拆 6 条细粒度真连用例(元结构/功能编排/AI/全局知识/市场/New-API),修 2 处 strict-mode 多命中。New-API 锚点契约纠正(mock 期 user-e2e/usage-e2e 伪造值):真后端绑定行是用户数字 id 字符串、用量 recordId 是聚合派生 {userId}:{period},改对真锚点(活体用户+1:month)、无后端缺口。

独立核实:连跑全量 e2e x2 各 12 passed/0 skipped(account/market/jobs 既有 6 真连无回归、幂等可复现);psql 复核 6 锚点种子真灌(function_chain/protection_node active、muse_prompt/muse_agent system/global KB 各 1 行真实契约)。至此 admin governance e2e 从全 page.route mock 全转真后端:12 真连用例 0 skip。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-25 13:05:37 -07:00
lili
2d06ec5f31 test(admin-e2e): jobs 子域转真连(重试/取消/来源重试真打+真 PG 反查)、governance config 断层如实标注 skip
jobs 真连(反假绿:真打写命令+真 PG 反查 muse_ai_job 派生行/状态):①重试(:262)→后端校验 retryable 新插 operation_id=adminRetryJob 同 retry_group queued 子 job(MuseJobServiceImpl.retryAdminJob 纯 DB 状态机、活体 code:0),反查派生子 job 行数;②取消+来源重试(:291)→cancel 改 muse_ai_job.status=cancelled、source retry 新插 job_type=source_event_retry job(muse_ai_source_event 90003 needs_recheck 锚点),反查状态/派生行。关键坑:切片库后台 AI runtime worker ~3s 抢 queued→failed,取消锚点须用 running(worker 不接管、前端 canCancelJob 放行);queued 锚点活体 cancel 真返 1040100014 不可取消。

global-setup 加 resetJobsFixture:幂等 seed 90001(failed/retryable muse_ai_job)/90002(running muse_ai_job)/90003(needs_recheck muse_ai_source_event)+清派生子 job/source_event_retry/命令幂等行,每轮自愈。真契约:retry 请求体只接受 {commandId}(JobRetryReqVO 仅此字段、reason 仅 UI 留痕不外发);cancel/source-retry 接受 {commandId,reason}。旧 skip 靠 mock 拦截 payload 字段,改真打+DB 派生行反查(等价更强),删 museAdminPayloadsByPage 收集器。

核心治理配置页(:456)保留 skip:非端点 500,而是切片数据/表断层——muse_function_chain/muse_protection_node 表在 muse_slice_live 根本不存在(psql to_regclass 均 None)、AI Prompt/全局知识库/story.draft 切片未灌种子,faithfully 转需跨 6 子系统伪造数据且两表连结构都没有,不硬转。用例上方写明断层+待补后端项。

独立核实:连跑全量 account+market+jobs e2e 6 passed/1 skipped(背靠背幂等无第二轮假红);psql 复核 90002=cancelled、retry 派生子 job=1、source_event_retry job=1、:456 断层表均 None(证标注诚实)。待补后端:①切片库缺 muse_function_chain/muse_protection_node 表 ②AI Prompt/全局 KB/story.draft 种子 ③jobs/source 三写命令后端无 P1r 真库 IT(现 Mockito 单测、本次 e2e 真连可视首个端到端真验)。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-25 12:32:21 -07:00
lili
ce637ac2b6 test(admin-e2e): market 子域转真后端真连(下架/申诉真打+真 PG 反查落库)
market 5 个 skip 用例全是 MSW payload 拦截的负向断言(验前端预览绑定守卫不发陈旧 payload、靠 museAdminPayloadsByPage),真后端 MSW-off 无 payload 收集器无法逐字搬、且纯前端逻辑已 vitest 覆盖,故替换为真后端真连用例。

真连(反假绿:不只看 UI toast,真 PG 反查 muse_market_* 真实行):①市场治理页渲染三工作台(按激活 tabpanel 收口,ant Tabs 不卸载隐藏 pane);②下架真打命令→真 PG 反查 listing_status=delisted+新增 1 条 applied delist 治理动作;③申诉 maintained 真打处理→真 PG 反查 status=maintained、resolver_id=1。global-setup 加 resetMarketFixture(资产复位 listed+申诉复位 supplementing+软删历轮累积终态申诉(42 条 closed 挤出首页锚点)+清理治理动作/预览)、每轮幂等自愈。

揪出 mock 臆想契约:assetId/appealId 是数字串(非 asset-e2e);publish status DB submitted→API pending(后端 toOpenApiStatus 唯一特例、mock 四态不成立);appeal.resolution 列存处理理由文本非结论枚举(结论在 status);delist expectedStatus 只接受 listed(传别的 400);preview actionType 实为 5 值(含 review_rejection)非 4 值。

isIgnoredRuntimeIssue 增忽略 Failed to load resource: net::ERR_*(资源懒加载抖动、非应用错误,命令正确性另有真 PG 反查兜底)——同解 account 首跑偶发红根因(原误判 console.error,实为 dev-server 负载下 chunk 懒加载超时)。独立连跑全量 account+market e2e x2 各 4 passed;psql 复核 asset1=delisted/appeal1=maintained resolver=1/gov_action=1,与报告一致。restore 票据路径 e2e 未覆盖(用例走 maintained、后端不消费 restore 预览),restore 仍只 mock-service 单测无真 PG IT、缺口待补(:397 注释标注)。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-25 12:06:17 -07:00
lili
c5d1762faa test(admin-e2e): governance e2e 转真后端基建 + account 子域 MVP(反假绿)
admin-governance.spec 此前全 page.route mock /admin-api/muse/**(~20 端点)、前后端契约从未端到端跑;认证注入 localStorage key 硬编码 muse-vben-antd-... 实为 undefined-5.7.0-dev-core-access(VITE_APP_NAMESPACE 未定义→运行时 undefined)、mock 下从不暴露。

命门(实证打通):①认证=与 studio 共用 mock-token Bearer test1(mockSecret test+userId1);②权限=admin 用户原无角色(system_user_role 空)→403,globalSetup 幂等 seed system_user_role(1,1)(super_admin)+DEL redis user_role_ids:1 刷权限缓存→超管跳过 @PreAuthorize;③代理=admin vite 已硬编码 /admin-api→48080、nitroMock 默认关。

基建:新建 global-setup(seed user_role+DEL redis+PG 复位)、playwright.config 加 globalSetup+workers:1、加 pg。spec 改真 localStorage key+token test1+删 routeMuseAdminApis mock(catch-all /admin-api/** 补 tenant-id:1 真打 48080;notify/dict/tenant 平台外壳保留 mock 因切片库无 notify 表返 500)+get-permission-info 走真后端。account 子域真连:真分页 {pageNo,pageSize,total,list} 前端 PageResult 只读 list/total 契约兼容;其他 8 子域 test.skip。独立连跑 15 次绿(含冷启动)。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-25 11:38:56 -07:00
zizi
e3e330317f test(admin): harden Muse admin governance checks 2026-05-26 03:59:48 +08:00
zizi
1256724d62 chore(admin): 纳管 muse-admin 基线
将 Vben Admin fork 的 muse-admin 基线纳入主仓库,保留依赖、构建产物、测试报告和缓存的忽略规则,避免把运行生成物带入 Git。
2026-05-25 19:45:21 +08:00
zizi
c35f64ffcc test(admin): 收紧 Muse 管理端验证门禁
补齐 P3 E2E 未处理接口断言和契约字段校验,修正管理端请求前缀,并记录验证产物清理规则。
2026-05-25 12:31:28 +08:00
zizi
b5aebf8ecd test(admin): 完善 Muse 管理端验证门禁 2026-05-25 10:52:45 +08:00
zizi
912ec7d77f feat(admin): 搭建 Muse 管理端治理页面 2026-05-24 20:38:37 +08:00