feat(oa): 已办中心增加受权限控制的共享财务备注 #8

Merged
cykj merged 2 commits from codex/oa-finance-remark into V2.0 2026-10-30 13:44:33 +00:00
Owner

Summary

已办中心原先没有受控的财务备注入口。本变更在 Web 表格和 uni-app 已办卡片提供共享备注及编辑弹窗,同一审批实例保存一份备注。

本人已办审批单 + 当前租户 + oa:done:finance-remark
  → 读取 / 修改共享备注(最多 512 字,可清空)
无权限 → 列表省略备注,专用接口拒绝读写

mobile-oa-h5 承载原审批详情,本需求不在详情新增字段。迁移只创建字段和权限节点,不自动赋予角色。关联 #7。

Evidence

  • Before: 原已办列表及接口没有财务备注;新增前端行为测试初始 0/16 通过。
    After: 新增后端 32 项、全部 OA 回归 314 项、前端行为 23 项通过;覆盖共享值、权限并集、本人已办、租户/软删隔离、输入校验、纯文本、取消/失败和页面切换竞态。
  • Web 生产构建通过(Node 堆 4 GB);本机 HBuilderX 编译器的微信小程序、H5 编译通过。H5 临时复用项目已有 Sass,不修改产品配置。
  • 编译后 H5 页面在 375px 浏览器验证显示、最新读取、取消、保存、失败保留、清空及无权限隐藏;所有接口使用模拟数据,无业务写入、无页面异常。
  • 隔离 MySQL 5.7.24 连续执行迁移两次通过,无重复节点、无自动角色赋权。
  • OpenSpec 严格校验、差异格式检查、独立规格/质量审查通过。字段一致性工具存在 5 项已知旧路径/映射警告、0 错误,新字段已逐层核对。
  • 用户确认本次采用嵌套 H5 验证,无需微信平台交互验证;H5 编译产物交互验证已通过,微信小程序编译通过,未执行模拟器/真机交互检查。

Merge Danger

Door: two-way(应用可回退,新增列保留以避免丢失备注)。

Blast Radius: OA

更新应用前必须执行 docs/sql/migrations/2026-10-30-oa-done-finance-remark.sql,否则 ORM 查询新字段可能失败。用户已确认当前远程库为测试库并授权执行。迁移完成后已核对可空 VARCHAR(512) 字段、2 个新增权限节点,角色授权数量未变。由管理员在角色菜单配置中按需授予财务备注权限;其他环境仍须先迁移再更新应用。

本次 H5 验收与测试库迁移条件已满足,按持续授权合入 V2.0 并同步本地主分支后关闭 #7。不打 tag、不部署、不启停服务。

## Summary 已办中心原先没有受控的财务备注入口。本变更在 Web 表格和 uni-app 已办卡片提供共享备注及编辑弹窗,同一审批实例保存一份备注。 ```text 本人已办审批单 + 当前租户 + oa:done:finance-remark → 读取 / 修改共享备注(最多 512 字,可清空) 无权限 → 列表省略备注,专用接口拒绝读写 ``` mobile-oa-h5 承载原审批详情,本需求不在详情新增字段。迁移只创建字段和权限节点,不自动赋予角色。关联 #7。 ## Evidence - **Before:** 原已办列表及接口没有财务备注;新增前端行为测试初始 0/16 通过。 **After:** 新增后端 32 项、全部 OA 回归 314 项、前端行为 23 项通过;覆盖共享值、权限并集、本人已办、租户/软删隔离、输入校验、纯文本、取消/失败和页面切换竞态。 - Web 生产构建通过(Node 堆 4 GB);本机 HBuilderX 编译器的微信小程序、H5 编译通过。H5 临时复用项目已有 Sass,不修改产品配置。 - 编译后 H5 页面在 375px 浏览器验证显示、最新读取、取消、保存、失败保留、清空及无权限隐藏;所有接口使用模拟数据,无业务写入、无页面异常。 - 隔离 MySQL 5.7.24 连续执行迁移两次通过,无重复节点、无自动角色赋权。 - OpenSpec 严格校验、差异格式检查、独立规格/质量审查通过。字段一致性工具存在 5 项已知旧路径/映射警告、0 错误,新字段已逐层核对。 - 用户确认本次采用嵌套 H5 验证,无需微信平台交互验证;H5 编译产物交互验证已通过,微信小程序编译通过,未执行模拟器/真机交互检查。 ## Merge Danger **Door:** two-way(应用可回退,新增列保留以避免丢失备注)。 **Blast Radius:** OA 更新应用前必须执行 `docs/sql/migrations/2026-10-30-oa-done-finance-remark.sql`,否则 ORM 查询新字段可能失败。用户已确认当前远程库为测试库并授权执行。迁移完成后已核对可空 VARCHAR(512) 字段、2 个新增权限节点,角色授权数量未变。由管理员在角色菜单配置中按需授予财务备注权限;其他环境仍须先迁移再更新应用。 本次 H5 验收与测试库迁移条件已满足,按持续授权合入 V2.0 并同步本地主分支后关闭 #7。不打 tag、不部署、不启停服务。
cykj added 1 commit 2026-10-30 12:42:57 +00:00
Share one finance remark per approval instance across Web and mobile. Require the explicit permission and the current tenant user's own done task for every read and write; keep general instance responses free of financial remarks.

Add idempotent MySQL migration without automatic role grants, cross-end editors, isolated backend and frontend tests, and rollout requirements. Refs #7; platform validation and target database migration remain pending.
cykj added 1 commit 2026-10-30 13:43:54 +00:00
cykj marked the pull request as ready for review 2026-10-30 13:44:19 +00:00
cykj merged commit 5b1367c775 into V2.0 2026-10-30 13:44:33 +00:00
Sign in to join this conversation.
No Reviewers
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: cykj/zkxw#8