Commit Graph

1086 Commits

Author SHA1 Message Date
huangzd1997 1cfdcb5fb3 task-20(壳层/路由): 完成壳层真实浏览器 smoke 验收
e2e 8 用例端到端收口:登录态壳层渲染、折叠切换、刷新幂等、404、退出确认取消
不退出、确认后跳 /login、全程无未捕获错误与遗留弹层。
2026-09-05 14:43:55 +08:00
huangzd1997 bd4b2a579e task-19(壳层/路由): 验证首批页面从壳层正确挂载
e2e 8 用例:users/menus/groups 三页面经壳层挂载、根路由跳首个可见页、菜单激活态、
面包屑(分组->页面) 与 404 兜底的真实浏览器断言。
2026-09-05 14:43:55 +08:00
huangzd1997 ba12e04d1e task-18(壳层/路由): 实现壳层键盘焦点与可访问性语义
AdminLayout 增加 role=navigation 侧边栏地标、aria-expanded/aria-label 折叠按钮、
#admin-content 主区锚点与“跳到主内容”skip-link;main.css 提供 :focus-visible 焦点环
与 skip-link 聚焦样式;e2e 8 用例用键盘回车切换折叠并断言 ARIA 语义。
2026-09-05 14:43:55 +08:00
huangzd1997 7ffae78919 task-17(壳层/路由): 桌面端壳层响应式验收 + 浏览器验收基建
引入 @playwright/test(mdEdge 通道),playwright.config 起 mock admin API + vite dev;
e2e 覆盖宽/窄屏自动折叠、折叠持久化、无横向溢出等 8 用例;workspace 边界扫描
排除测试专用 e2e/scripts/playwright.config。
2026-09-05 14:43:54 +08:00
huangzd1997 d397c88c3c task-16(壳层/路由): 实现退出登录入口的壳层交互(确认式)
logout.ts 定义 runLogout 纯流程(确认通过才 signOut,异常上抛由壳层反馈);
AdminLayout 用 ElMessageBox.confirm 确认后再执行 store.signOut($reset + /login)。
2026-09-05 14:43:54 +08:00
huangzd1997 83b935c11b task-15(壳层/路由): 实现页面标题与面包屑规则
title-breadcrumb 提供 resolveDocumentTitle('页面 - 数富AI')、updateDocumentTitle
(非浏览器静默)、crumbsForActiveRoute(分组->页面);AdminLayout 用 watch 同步
document.title 并在层级>1 时渲染 el-breadcrumb。
2026-09-05 14:43:54 +08:00
huangzd1997 13e7a4c602 task-14(壳层/路由): 实现侧边栏折叠与窄屏行为及偏好持久化
sidebar-collapse 提供阈值/宽高常量、toggle、localStorage 偏好读写(失败容忍)、
initialCollapsed(持久化优先,窄屏自动收起);AdminLayout 接入并持久化折叠状态。
2026-09-05 14:43:54 +08:00
huangzd1997 c3f160afa5 task-13(壳层/路由): 实现全局请求错误提示容器
error-bus 提供框架无关的订阅式错误总线:notify/dismiss/clear、负载归一化、
3 条上限截断、订阅返回取消函数防泄漏;GlobalErrorContainer 订阅并渲染可关闭
错误条,挂在 AdminLayout 内容区顶部。
2026-09-05 14:43:54 +08:00
huangzd1997 f4f7268045 task-12(壳层/路由): 实现路由级错误页面(404 兜底)
新增 src/pages/error/NotFoundPage.vue(el-result + 返回首页),router 在业务路由
之后注册 :pathMatch(.*)* 兜底(无 menuKey,不参与权限门禁),保留壳层 chrome;
main.css 增加 .not-found 布局。
2026-09-05 14:43:53 +08:00
huangzd1997 50e70c43ab task-11(壳层/路由): 实现无菜单权限空状态
empty-state 定义标题/引导文案与 shouldShowEmptyMenu 纯判定(Boolean 化防 undefined);
AdminLayout 侧边栏与内容区(根路由)共用空态,加载中不闪现,未初始化不误报。
2026-09-05 14:43:53 +08:00
huangzd1997 f1fa5f7adf task-10(壳层/路由): 实现页面级异步组件加载边界
lazy-config 暴露 loading 延迟/超时/文案与懒加载判定;lazy-page 用
defineAsyncComponent 提供 loading/error 组件,router 对所有注册路由统一包裹;
main.css 增加 .page-loading/.page-error 兜底样式。
2026-09-05 14:43:53 +08:00
huangzd1997 ab7255a55b task-9(壳层/路由): 实现路由 meta 菜单 key 约定与 RouteMeta 类型增强
新增 src/types/vue-router.d.ts 模块增强(RouteMeta.title/menuKey),meta.ts 提供
metaMenuKey/命名校验,router 守卫改类型化访问去掉 as cast,AdminLayout 标题同步
去 cast;校验首批注册表 menuKey 合规。
2026-09-05 14:43:53 +08:00
huangzd1997 02e0dc20b8 task-8(壳层/路由): 实现业务域路由注册表
新增 src/router/routes.ts:adminPages 登记业务域页面(account 首批),routeOf 生成
路由记录,validateAdminPages 校验路径唯一/相对/含 title/load;router/index.ts 改
消费 adminRouteRecords,移除内联懒加载与路径字面量。
2026-09-05 14:43:53 +08:00
huangzd1997 8e828c1204 task-7(壳层/路由): 根路由跳转到首个可见页面,移除硬编码默认页
helpers.firstVisiblePath 深度优先返回首个可路由页面,无页面返回空串;
store 增加 firstVisible;守卫在根路由/无权限时跳首个可见页,全部无页面则
停留根路由展示无菜单空态,删除 redirect:'/account/users' 硬编码。
2026-09-05 14:43:53 +08:00
huangzd1997 26edb9e6ed task-6(壳层/路由): 定义后端菜单树到侧边栏节点映射规则并落地
新增 src/layout/menu-mapper.ts:toSidebarEntries 处理分组/顶级路由叶/畸形节点,
groupKeysForActive 按当前路由展开激活分组;AdminLayout 菜单区改用映射结果,
删除旧 visibleChildren/canSee 死逻辑;8 用例覆盖空树/单叶/缺 route 过滤等。
2026-09-05 14:43:52 +08:00
huangzd1997 4a0e464308 task-5(壳层/路由): 定义顶部栏用户信息与页面标题模型
新增 src/layout/topbar-model.ts(pageTitleOf 缺省回落 + topbarUserOf 空态视图模型),
AdminLayout 改用模型渲染标题/用户名/角色,删除模板内联缺省逻辑;8 用例覆盖标题
空值、用户缺字段、非法输入等。
2026-09-05 14:43:52 +08:00
huangzd1997 af68b20f87 task-4(壳层/路由): 定义深色侧边栏与浅色内容区设计 token 并锁定不变量
新增 src/styles/theme.ts 语义 token 单源 + 相对亮度/对比度/isDarkSurface,
tests 校验侧边栏暗、内容区亮、正文 WCAG AA、与 main.css 变量交叉一致防漂移。
2026-09-05 14:43:52 +08:00
huangzd1997 7065dbb53e task-3(壳层/路由): 定义并锁定 AdminLayout 页面容器职责契约
壳层只做页面容器:唯一 RouterView 挂载业务视图、不静态 import 业务页面、
不直接调后台 API、Element Plus 按需命名导入;页面接线归 router 懒加载。
配套 tests/helpers.ts 提供只读源码分析与 @/ import 可解析校验。
2026-09-05 14:43:52 +08:00
huangzd1997 6f0357e41c task-2(壳层/路由): 冻结 /admin-vue/ base 与 History 路由契约为单一事实源
新增 src/config/app.ts(APP_BASE_PATH/ensureAppBasePath/joinAdminPath),
vite.config base、router createWebHistory、AdminLayout logo 路径统一消费常量,
禁止散落字面量;8 用例覆盖归一化/幂等/空段/单段/非法输入与字面量单源。
2026-09-05 14:43:52 +08:00
huangzd1997 ec7d56d566 task-1(壳层/路由): 冻结独立后台工程工作区边界契约与基线测试
admin-frontend-vue/src/config/workspace.ts 提供可编程边界校验(独立包名、
必需清单/源码目录、客户端耦合 token 扫描、可操作缺失消息),供后续壳层
任务与验收脚本复用;tests/task-1.test.ts 以 8 用例锁定依赖/构建/测试/边界。
2026-09-05 14:43:51 +08:00
huangzd1997 445c139bce guard(task-210/212): ArchitectureBoundaryTest 债务基线下调 128→84(Handler 迁移后 task→业务依赖实降至 84)并随迁记录 SPI 化遗留 2026-09-05 10:26:50 +08:00
huangzd1997 1924e273e9 refactor(task-212): 清理 TaskResultFileJobWorker 5 个迁移后遗留的死业务 import(Handler 已接管处理,字段已移除) 2026-09-05 10:15:57 +08:00
huangzd1997 be332a47ab fix(task-212): Handler 迁入业务模块后补 task.service 类型 import(随迁移内容一并落库) 2026-09-05 10:12:01 +08:00
huangzd1997 01e8c608e7 task-212(部分): 04 Handler SPI 实现迁回各业务模块(依赖反转大头)——13 个 *ResultFileJobHandler 从 modules/task/service 迁到各自模块 service
- TaskFileJobConfig 与相关测试 import 同步到新模块包;MappingSnapshot 源码路径按模块映射
- task 模块对业务 import 由 16+ 文件降到 3(TaskHeartbeatService/TaskResultFileJobWorker/ModuleHistoryCleanupService 尚需心跳/worker/清理 SPI 化)
- 全量回归 2308 测试 0 失败
2026-09-05 10:11:53 +08:00
huangzd1997 d4b4e1e165 task-219(env-gated 全链路): similarasin 最小链路 done=true→assemble→上传结果文件回放测试(种子含 items+groups→按同名 group 回填→轮询至 SUCCESS→result_file_url 非空 .xlsx)+ 本地真跑通过
本地 MinIO 已建桶;关键点:解析载荷须含 groups 且 python 按同名 group 回填。CI 实跑依赖 Gitea runner(远程),本地以 mvn/node 等价命令 + env-gated 全绿覆盖
2026-09-05 09:50:53 +08:00
huangzd1997 fe3b8624bf chore(similarasin): LlmGatewayTlsProbe 探针模型字面量同步为 glm-5.3-flash 2026-09-05 09:48:27 +08:00
huangzd1997 3ee281a433 fix(similarasin): LLM 默认模型改为 glm-5.3-flash(原 gemini-3.5-flash-lite/gemini-3.7-flash 在 ai.t8star 端点不可用,按指示统一) 2026-09-05 09:48:19 +08:00
huangzd1997 736760aa31 fix(perf test): 移除墙钟 light<batch 断言(纯内存 mock 下 0ms 抖动偶发红;类注释本就声明不做毫秒比较、用确定性查询次数口径) 2026-09-05 09:31:13 +08:00
huangzd1997 8cbc86f6fa task-214: progress/batch 轻量响应契约回放(env-gated,真实服务:造 SIMILAR_ASIN RUNNING → batch items/missingTaskIds + task 轻量字段(id/taskNo/status) + 文件 items;light items/missingTaskIds)+ 已本地真跑 2026-09-05 09:25:54 +08:00
huangzd1997 6bd3e76048 task-218(离线可收部分): 结果文件格式契约(真实 AppearancePatentSheetBuilder 纯调用:Sheet 名/主表列序(含标题/图片链接/sku)/原因表列/空行产出)+ 8 测试
文件名 <stem>-result.xlsx 与 ZIP 结构由运行时组装/上传环节生成,依赖真实流水线(3+2 约定 env-gated 另行验证)
2026-09-05 09:23:21 +08:00
huangzd1997 4735a18390 fix(frontend tests): 同步 API_ENDPOINTS 冻结快照到当前常量(存量过期致 node --test 全量红,非本轮引入)——使前端 node --test 全绿 2026-09-05 09:19:21 +08:00
huangzd1997 c282327a0b task-207(服务层): done=true 终态决策纯语义(SimilarAsinSubmitResultSemantics:done/error→终态回调、chunkIndex/Total 缺省归一)接线回 submit + 8 单测
按 3+2 约定:文件生成/终态落库依赖真实 LLM 流水线,留待真实运行时经 env-gated 回放(CONTRACT_* 已就绪)
2026-09-05 09:10:51 +08:00
huangzd1997 dacdab7adb task-206: heartbeat 旧字段契约回放(env-gated,真实服务:RUNNING→alive:true、非运行→alive:false、未知任务 alive:false+message、旧/多余字段容忍)+ 已本地真跑 2026-09-05 09:01:55 +08:00
huangzd1997 f0f9ba29f0 task-205: parsed-payload 契约回放(env-gated,真实服务:造 SIMILAR_ASIN 任务+内联载荷 → success/顶层字段 items/allItems/groups/headers/脱敏 apiKey/行数据;未知任务 success:false)+ 已本地真跑 2026-09-05 09:00:50 +08:00
huangzd1997 0b83c9a3c1 task-204: /items 分页语义契约回放(env-gated,真实服务:造 COLLECT_DATA 任务+5 行 item → page/pageSize/count/total/totalPages/items、越界空页、缺省 50、rowIndex 升序)+ 已本地真跑 2026-09-05 08:59:52 +08:00
huangzd1997 db0c1c1fdc task-203: /result 幂等契约回放测试(env-gated,真实服务:造 SIMILAR_ASIN RUNNING 任务+内联解析载荷 → parsed-payload 成功 → 同 submissionId/chunk 提交两次均 success:true 且 biz_task_chunk 只落 1 行)
- CI 默认跳过(需 CONTRACT_BASE_URL+CONTRACT_DB_*),设了即在本地/任意副本库跑
- 覆盖 success/idempotent/single-persist(chunk)/chunk 字段/未知任务(live 已验);done=true 封口需真实 LLM 流水线,不在本回放内(见限制说明)
- 本地已用 18080 实例 + schema 副本真跑通过
2026-09-05 08:56:41 +08:00
huangzd1997 92bd114e71 fix(module_type): 对齐 module_type 规范大写并加防回归守卫(防 similarasin/SIMILAR_ASIN 之类漂移)
- heartbeat 夹具 moduleType 改规范大写 SIMILAR_ASIN 并加断言锁定
- ModuleTypeAlignmentTest:扫描 src/main——MODULE_TYPE 常量须大写下划线、setModuleType("小写") 禁止(仅允许 legacy collectdata)——守卫写入/常量/夹具三者一致
- 全量扫描结果:生产代码写入均用常量大写,无存量漂移
2026-09-05 08:54:06 +08:00
huangzd1997 e69d82e7b1 fix(task-173 test): 超时根因断言兼容 HttpTimeoutException/TimeoutException 两种 JDK 行为(全量回归暴露的偶发类型) 2026-09-05 02:10:17 +08:00
huangzd1997 5c0f535aca task-202: Python-contract 夹具准备(heartbeat/items/result/parsed_payload schema-fixture,字段取自真实 DTO、全脱敏、README 说明)+ 9 条测试 2026-09-05 02:10:16 +08:00
huangzd1997 d3b499b596 feat(admin): 店铺重复检查导出「站点」列改「国家」中文显示;撞款抽屉按点击处定位
- 导出 CSV 列头 站点→国家,值映射中文(DE德国/UK英国/FR法国/IT意大利/ES西班牙,未知回退原值)
- 撞款详情抽屉以触发元素为垂直锚点并钳制在视口内,不再贴区块/页面顶部导致看不见需上滑
- 同步 Java 静态托管副本;更新 Java/Python 相关断言
2026-09-05 01:53:12 +08:00
huangzd1997 d6086ec7b0 收尾冒烟: 离线 Spring 装配切片(ConfigWiringSmokeTest)——模块10/11 新增 @ConfigurationProperties/@Component/可选 MeterRegistry 在真实容器装配验证 + 8 条测试
为上线前排除 bean 装配/属性绑定类启动崩溃;全量真实启动需在非生产环境(本配置默认值会连生产 MySQL/Redis)执行
2026-09-05 00:34:45 +08:00
huangzd1997 9d172ac170 task-209: 字段兼容 schema 覆盖冻结(node --test 扫描共享层:user_id/task_ids 请求、taskId/resultId/fileKey/status/taskStatus/fileStatus 响应均在 schema 覆盖)+ 8 条测试 2026-09-05 00:26:09 +08:00
huangzd1997 2304e634ee task-217: 快照对比工具(ResponseSnapshotTool:规范 JSON/录制/对比/落盘 golden/可读 diff 报告)+ 8 条测试 2026-09-05 00:25:40 +08:00
huangzd1997 68b743f18b task-216: CI 接入测试阶段(.gitea/workflows/build.yml 追加 mvn test 契约+ArchUnit 阶段先于打包、新增 frontend-test job 跑 vue-tsc+npm test,失败即红/超时/双容器)+ 8 条测试 2026-09-05 00:23:56 +08:00
huangzd1997 63b7cd82a6 task-215: 下载 URL 格式契约(前端 node --test:绝对直链保留/origin 补齐/schema 完整/&拼接 user_id/仅带 user_id 无签名)+ 9 条测试 2026-09-05 00:22:48 +08:00
huangzd1997 c1922d9e26 task-213: 前端共享层导出白名单(node --test 源码扫描:页面不直连 http.ts/axios/不拼 /newApi URL,shared 内部与 bridge 放行,违规 helper 可检出)+ 8 条测试 2026-09-05 00:22:06 +08:00
huangzd1997 541e397ca6 task-208: JavaApiResponse 包装契约(前端 node --test:success/message/data 解包、失败抛 message、null data、多余字段容忍、LegacyApiSuccess(msg) 兼容、extractErrorMessage 各字段回退)+ 8 条测试 2026-09-05 00:21:27 +08:00
huangzd1997 f5d4410063 task-211: ArchUnit Controller 边界规则(不直接访问 Mapper/外部 Client,零违规)+ task→业务 依赖防恶化基线
- archunit-junit5(test) 依赖引入一次到位
- Controller 不访问 ..mapper.. / ..client.. 两条规则全绿(探针确认存量零违规)
- task 模块经 *ResultFileJobHandler 等依赖业务 128 处(存量)→ 冻结上限防增长;module 切片存在 collectdata→dedupe→task 环,清零需 Handler 迁移等重构,另行处理
2026-09-05 00:18:16 +08:00
huangzd1997 5c63604b5b task-201: 迁移演练 runbook(docs/flyway-migration-drill.md:clean migrate/validate/验证SQL/回滚/锁窗口/校验和/幂等重跑/不动历史)+ 8 条测试
on-DB 的 migrate 执行需在副本库按 runbook 进行(本环境无数据库,仓库内以静态检查+清单兜底)
2026-09-05 00:09:37 +08:00
huangzd1997 1b27a3f1ca task-200: 巡检报表任务落地(InspectionSqlReportTask 跑 6 张只读报表 SQL:默认 disabled、分布式锁、单条失败不阻断、只 query)+ 8 条测试 2026-09-05 00:08:44 +08:00