Skip to content

feat: 登录页与操作审计页按效果图改版 - #34

Merged
Emryswu merged 3 commits into
mainfrom
feat/login-audit
Oct 19, 2026
Merged

Emryswu merged 3 commits into
mainfrom
feat/login-audit

Conversation

@Emryswu

@Emryswu Emryswu commented Oct 19, 2026 •

Copy link
Copy Markdown
Owner

登录页和操作审计页是最后两页还停留在旧风格的页面(深色网格背景、英文角色标签)。这次照 GPT 出的效果图改,但只做系统真实具备的功能。

登录页

  • 顶部深色品牌栏;左侧复用首页的实验室横幅图、标题和三条卖点;右侧圆角登录卡片
  • 「快速体验」改成四张角色卡片:图标、一句说明、选中态,点选填好演示账号再点登录
  • 效果图里的验证码、忘记密码、统一身份认证、记住我、帮助中心等没有做:系统没有这些功能,做了就是假入口
  • 横幅图原尺寸 2400×588,铺满整屏会被放大糊掉,所以控制在约三分之二高度贴底放置,上沿和右沿渐隐到底色

操作审计页

  • 首页同款横幅(标题 + 手写标语),替代原来的页眉
  • 表格:操作时间(日期 / 时分秒)、操作图标(按设备 / 预约 / 工单 / 支付对账分色)、中文角色标签、操作详情 + 对象(如「工单 fix: close review findings for locks, retire, and work-order blast radius #2」)、操作人;系统任务的记录显示为「系统」和闪电图标
  • 详情里的状态码显示成中文:「工单从 ASSIGNED 流转到 IN_PROGRESS」→「工单从 已派单 流转到 处理中」
  • 支持按角色、操作类型筛选和分页(每页 20 条),原来是一次拉 40 条、不能筛
  • 效果图里的日期范围、关键词搜索、导出报表、安全巡检等没有做(后端不支持,或系统没有这类数据)

后端

  • GET /api/audit-logs 新增 actorRole 参数(大小写不敏感,SYSTEM 筛自动任务)。BusinessOperationsIntegrationTest 补了两条:按教师 + 「完成预约」查得到且全是教师;按学生 + 「完成预约」为 0 条

顺手修的

  • 支付成功、退款成功、迟到支付退款、回调异常、对账差异等 10 个审计动作原来没有中文名,页面上直接显示英文代码,现在补齐
  • 角色的图标和配色抽成 components/roleTag.tsx,登录卡片和审计标签共用
  • 弹窗关闭按钮的「×」字符换成 Icon(AGENTS.md 约定)

review 修复

  • P3 登录按钮被通用样式覆盖:.login-submit 和 .solid-button 都是单个类名,后者写在后面,按源码顺序把登录按钮压回 32px 高、12px 字号;登录中的禁用态也被换成灰色。改为 .login-card .login-submit
  • jsdom 的 getComputedStyle 不算选择器优先级,原来的测试手段测不出这种覆盖,所以新增 tests/css-cascade.mjs:按 !important、优先级、源码顺序解析某个属性的最终值(自带一条自测)。用它断言登录按钮 56px / 17px / 10px 圆角、登录中保留自己的禁用样式、审计筛选按钮 40px;改回单类选择器时测试失败(已验证)
  • AGENTS.md 前端约定补了一条:给通用按钮类加页面专属尺寸要带父级选择器,断言样式用 cascadedValue

防止跑偏的约束

tests/login-audit.test.mjs:

  • 扫描后端代码,收集所有 auditLogService.record… 写入的动作(含 "WORK_ORDER_" + 状态 这种拼接的),每个都必须在 actionLabels 里有中文名——以后后端加新动作忘了配中文,前端测试直接红
  • 每个角色都必须有图标和配色;登录页演示账号的用户名、密码、角色必须和 DemoUserInitializer 的种子数据一致
  • 筛选项来自标签表,不随当前行变化(AGENTS.md「筛选项不从已筛选列表推导」)
  • 翻页沿用已应用的筛选,没点查询的改动不会混进翻页请求;重置回到第一页
  • 先发出的慢响应不会覆盖后翻到的页(请求序号比对)
  • 点角色卡片会填入对应账号并显示选中态
  • 页面专属按钮尺寸不被通用 .solid-button 覆盖

以上每条都做过破坏验证:删一个中文名、去掉序号比对、翻页改用未应用的筛选、改回单类选择器,对应测试都会失败。

验证

  • 前端 npm run lint、npm run typecheck、TZ=UTC npm test(82 项)全部通过
  • 第一次 CI 前端测试失败:测试数据写死了 +08:00 的时间,CI 跑在 UTC 渲染成 01:05:07,本地东八区却能过。已改成按本地时间构造,AGENTS.md 补了一句写法和 TZ=UTC npm test 复查命令
  • 后端改动我这边连不上 Maven 中央仓库没法本地编译,由 CI 两个后端 job 验证,均已通过

截图

假后端上的截图(审计数据照真实服务写入的格式造的),README 截图没有替换,需要在真后端上重拍登录页和审计页(01、06)。

登录页

操作审计

登录页手机端

- 登录页:顶部深色品牌栏,左侧复用首页实验室横幅与三条卖点,右侧圆角登录卡片;
  快速体验改为四张角色卡片(图标、说明、选中态),只保留系统真实具备的功能
- 审计页:首页同款横幅,表格列出时间、操作图标、中文角色标签、详情与对象、操作人;
  支持按角色与操作类型筛选、分页,详情里的状态码显示为中文
- 后端 /api/audit-logs 新增 actorRole 筛选,集成测试覆盖与 action 组合
- 补齐支付、退款、对账等审计动作的中文名;角色图标与配色抽成 roleTag 共用
- 弹窗关闭按钮改用 Icon
- 测试:扫描后端代码确认每个审计动作都有中文名;演示账号与种子数据一致;
  筛选项不随当前行变化;翻页沿用已应用的筛选;慢响应不覆盖新页
CI 跑在 UTC,写死 +08:00 的时间会渲染成 01:05:07,本地东八区却能通过。
AGENTS.md 补充测试里构造时间的写法和 TZ=UTC 复查命令。
- .login-submit 与 .solid-button 同为单类选择器,后者写在后面,按源码顺序把登录按钮
  压回 32px 高、12px 字号,禁用态也变成灰色;改为 .login-card .login-submit
- 新增 tests/css-cascade.mjs:按优先级、!important 与源码顺序解析样式
  (jsdom 的 getComputedStyle 不算优先级,测不出这类覆盖)
- 测试断言登录按钮与审计筛选按钮的尺寸、登录中的禁用样式;改回单类选择器时失败
- AGENTS.md 前端约定补充通用按钮类的写法
@Emryswu
Emryswu merged commit cfb5d99 into main Oct 19, 2026
9 checks passed
@Emryswu
Emryswu deleted the feat/login-audit branch October 19, 2026 11:27
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant