{
  "creator": {
    "name": "李潇",
    "id": "63575519287a2b849fa9a642"
  },
  "modifier": {
    "name": "李潇",
    "id": "63575519287a2b849fa9a642"
  },
  "gmtCreate": 1783045980000,
  "gmtModified": 1783045980000,
  "serialNumber": "VWCG-1073",
  "subject": "【滨州项目】数据中台单点登录及账号同步对接",
  "description": "## 需求背景\n\n滨州项目需要与客户数据中台做系统对接。客户希望用户在数据中台开通账号并完成登录后，可以通过单点登录进入智慧营养健康餐厅系统；账号来源跟随数据中台，系统内角色、菜单和数据权限仍由智慧营养健康餐厅系统管理员维护。\n\n## 需求内容\n\n- 与数据中台完成单点登录对接，支持数据中台登录后跳转进入本系统。\n- 数据中台作为身份认证源和账号开通来源，本系统不再要求这类用户单独使用本地密码登录。\n- 数据中台账号开通后，本系统需同步建立对应本地账号，保存外部账号唯一标识与本系统账号映射关系。\n- 首次同步创建的账号默认不自动授予业务角色和权限，需由本系统管理员在后台分配角色、菜单权限和数据权限。\n- 已同步账号再次通过数据中台登录时，应复用本地账号并生成本系统登录态。\n- 数据中台返回的姓名、手机号、部门等基础信息如有变化，本系统可按约定更新账号基础资料，但不得覆盖本系统管理员配置的角色和权限。\n- 如数据中台账号停用、禁用或删除，应按双方接口约定同步本系统账号状态，避免无效账号继续访问。\n- 登录、账号创建、账号状态同步和登录失败需记录安全审计日志。\n\n## 权限边界\n\n- 数据中台负责认证用户身份、账号开通和账号状态来源。\n- 智慧营养健康餐厅系统负责角色、菜单、按钮、数据权限和业务可见范围。\n- 不同步数据中台角色权限到本系统，不允许外部权限直接绕过本系统权限体系。\n\n## 验收要点\n\n- 数据中台已登录用户可通过约定入口免密进入本系统。\n- 数据中台新开通账号首次进入本系统时，本系统可自动创建本地账号映射。\n- 自动创建的账号在未分配角色/权限前，不应看到未授权菜单或业务数据。\n- 管理员可在本系统后台为同步账号分配角色、菜单和数据权限。\n- 已分配权限的同步账号再次单点登录后，可按本系统权限正常访问。\n- 数据中台账号停用后，本系统账号应无法继续通过单点登录访问。\n- 本次对接不改变现有本地账号、角色、菜单和数据权限体系。",
  "formatType": "MARKDOWN",
  "assignedTo": {
    "name": "兰海军",
    "id": "635755195dc8531eeb2e33d9"
  },
  "status": {
    "name": "待处理",
    "nameEn": "To Do",
    "displayName": "待处理",
    "id": "100005"
  },
  "space": {
    "name": "【产品线】智慧营养健康餐厅",
    "id": "dd2f708d1702891ff45b6f5d99"
  },
  "workitemType": {
    "name": "产品类需求",
    "id": "9uy29901re573f561d69jn40"
  },
  "logicalStatus": "NORMAL",
  "customFieldValues": [
    {
      "fieldName": "优先级",
      "fieldFormat": "list",
      "values": [
        {
          "identifier": "04f8224daf4e1e1050bca2cd4c",
          "displayValue": "中"
        }
      ],
      "fieldId": "priority"
    }
  ],
  "updateStatusAt": null,
  "trackers": null,
  "participants": null,
  "verifier": null,
  "sprint": null,
  "labels": null,
  "versions": null,
  "id": "a967150af289fe390c6ad020c9",
  "idPath": null,
  "statusStageId": "1",
  "categoryId": "Req",
  "parentId": null
}