Skip to content

fix(approvals): 审批附件在「审批动态」里看不到文件名、点击也无反应 #2820

Description

@baozhoutao

问题

核准 / 拒绝时可在「审批意见」弹窗上传附件(拖拽区)。附件本应在记录详情 / 审批中心的「审批动态」时间线里,对应那条决策记录下方以 `📎 文件名` 胶囊呈现,点击在新标签页打开。实际表现:

  1. 胶囊只显示通用词「附件」,看不到真实文件名
  2. 点击胶囊无任何反应,也没有任何报错提示。

根因(前端,已读码确认)

apps/console/src/pages/system/ApprovalsInboxPage.tsx

  • 文件名来自 GET /api/v1/data/sys_file/{id}record.name(约 L441);该请求失败 / 返回空即静默回退成「附件」(L833)。sys_file 是系统对象,普通审批人一般无直接读权限 → 拿不到名字。
  • 点击走 openAttachment(L454):请求 GET /api/v1/storage/files/{id}/url 拿签名链接后 window.open任何失败都被 catch {} 无声吞掉(L462),零反馈,表现即「点了没反应」。

待复现确认(后端 / objectstack repo)

/storage/files/{id}/urlscope==='attachments' 的文件走 authorizeDownload → authorizeFileRead;若审批决策上传的附件未正确挂到审批人可读的记录、或 scope 不符,将返回 403 → 被前端吞掉。需在 showcase 真机复现,确认是权限(403)还是文件缺失(404),据此决定 framework 侧改动。

方案

  • 前端:点击失败给用户可见反馈(toast / 提示);文件名解析改用审批人可授权的来源,不再依赖对 sys_file 的原始 data 读。
  • 后端(若复现确认):让审批附件的下载授权 / 名称读取对审批人可用。
  • 交付前用 framework app-showcase 的「审批 + 存储」链路真机 UI 实测通过。

关联 framework: objectstack-ai/objectstack(后端授权部分,复现确认后开配套 issue)。

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions