csk 1 ヶ月 前
コミット
1038827497
100 ファイル変更105 行追加3639 行削除
  1. 2 1
      .claude/settings.local.json
  2. 51 44
      .claude/skills/pc-demo/SKILL.md
  3. 52 39
      CLAUDE.md
  4. 0 779
      guide/汇丰借记卡权益-操作手册-20260427.md
  5. 0 8
      pc-v3/.claude/settings.local.json
  6. 0 395
      prd/汇丰银行/数据标签需求.md
  7. 0 2373
      prd/汇丰银行/汇丰银行权益中台-FSD.md.bak
  8. 0 0
      工作空间/产研/权益/汇丰全行/产品原型/pc-demo/.gitignore
  9. 0 0
      工作空间/产研/权益/汇丰全行/产品原型/pc-demo/CLAUDE.md
  10. 0 0
      工作空间/产研/权益/汇丰全行/产品原型/pc-demo/README.md
  11. 0 0
      工作空间/产研/权益/汇丰全行/产品原型/pc-demo/index.html
  12. 0 0
      工作空间/产研/权益/汇丰全行/产品原型/pc-demo/jsconfig.json
  13. 0 0
      工作空间/产研/权益/汇丰全行/产品原型/pc-demo/package-lock.json
  14. 0 0
      工作空间/产研/权益/汇丰全行/产品原型/pc-demo/package.json
  15. 0 0
      工作空间/产研/权益/汇丰全行/产品原型/pc-demo/public/favicon.ico
  16. 0 0
      工作空间/产研/权益/汇丰全行/产品原型/pc-demo/scripts/MIGRATION_RULES.md
  17. 0 0
      工作空间/产研/权益/汇丰全行/产品原型/pc-demo/scripts/capture-one.js
  18. 0 0
      工作空间/产研/权益/汇丰全行/产品原型/pc-demo/scripts/capture-screenshots.js
  19. 0 0
      工作空间/产研/权益/汇丰全行/产品原型/pc-demo/scripts/capture-supplements.js
  20. 0 0
      工作空间/产研/权益/汇丰全行/产品原型/pc-demo/scripts/dom-probe.mjs
  21. 0 0
      工作空间/产研/权益/汇丰全行/产品原型/pc-demo/scripts/dom-probe2.mjs
  22. 0 0
      工作空间/产研/权益/汇丰全行/产品原型/pc-demo/scripts/probe-channel.mjs
  23. 0 0
      工作空间/产研/权益/汇丰全行/产品原型/pc-demo/scripts/screenshot-equity-products.png
  24. 0 0
      工作空间/产研/权益/汇丰全行/产品原型/pc-demo/scripts/screenshot.mjs
  25. 0 0
      工作空间/产研/权益/汇丰全行/产品原型/pc-demo/scripts/shot-add-equity.png
  26. 0 0
      工作空间/产研/权益/汇丰全行/产品原型/pc-demo/scripts/shot-channel-dialog.png
  27. 0 0
      工作空间/产研/权益/汇丰全行/产品原型/pc-demo/scripts/shot-channel.mjs
  28. 0 0
      工作空间/产研/权益/汇丰全行/产品原型/pc-demo/scripts/shot-crowd-tasks.png
  29. 0 0
      工作空间/产研/权益/汇丰全行/产品原型/pc-demo/scripts/shot-equity.png
  30. 0 0
      工作空间/产研/权益/汇丰全行/产品原型/pc-demo/scripts/shot-grant-campaign.png
  31. 0 0
      工作空间/产研/权益/汇丰全行/产品原型/pc-demo/scripts/shot-page-home.png
  32. 0 0
      工作空间/产研/权益/汇丰全行/产品原型/pc-demo/scripts/shot-quill-final.png
  33. 0 0
      工作空间/产研/权益/汇丰全行/产品原型/pc-demo/scripts/shot-quill-fixed.png
  34. 0 0
      工作空间/产研/权益/汇丰全行/产品原型/pc-demo/scripts/shot-quill-fixed2.png
  35. 0 0
      工作空间/产研/权益/汇丰全行/产品原型/pc-demo/scripts/shot-quill.mjs
  36. 0 0
      工作空间/产研/权益/汇丰全行/产品原型/pc-demo/scripts/shot-quill2.mjs
  37. 0 0
      工作空间/产研/权益/汇丰全行/产品原型/pc-demo/scripts/shot-quill3.mjs
  38. 0 0
      工作空间/产研/权益/汇丰全行/产品原型/pc-demo/scripts/shot-rule-groups.png
  39. 0 0
      工作空间/产研/权益/汇丰全行/产品原型/pc-demo/scripts/shot-sms-templates.png
  40. 0 0
      工作空间/产研/权益/汇丰全行/产品原型/pc-demo/scripts/shot-tags.png
  41. 0 0
      工作空间/产研/权益/汇丰全行/产品原型/pc-demo/scripts/smoke.mjs
  42. 0 0
      工作空间/产研/权益/汇丰全行/产品原型/pc-demo/src/App.vue
  43. 0 0
      工作空间/产研/权益/汇丰全行/产品原型/pc-demo/src/assets/logo.png
  44. 0 0
      工作空间/产研/权益/汇丰全行/产品原型/pc-demo/src/components/EquityLinkDialog.vue
  45. 0 0
      工作空间/产研/权益/汇丰全行/产品原型/pc-demo/src/components/HelloWorld.vue
  46. 0 0
      工作空间/产研/权益/汇丰全行/产品原型/pc-demo/src/components/Layout.vue
  47. 0 0
      工作空间/产研/权益/汇丰全行/产品原型/pc-demo/src/components/RongshuProductDialog.vue
  48. 0 0
      工作空间/产研/权益/汇丰全行/产品原型/pc-demo/src/components/ShowPagesDialog.vue
  49. 0 0
      工作空间/产研/权益/汇丰全行/产品原型/pc-demo/src/components/crowdNameList/AdjustMemberDialog.vue
  50. 0 0
      工作空间/产研/权益/汇丰全行/产品原型/pc-demo/src/components/crowdNameList/UploadAdjustDialog.vue
  51. 0 0
      工作空间/产研/权益/汇丰全行/产品原型/pc-demo/src/components/crowdTask/AddRuleGroupDialog.vue
  52. 0 0
      工作空间/产研/权益/汇丰全行/产品原型/pc-demo/src/components/crowdTask/SampleDetailDialog.vue
  53. 0 0
      工作空间/产研/权益/汇丰全行/产品原型/pc-demo/src/components/ruleGroup/RuleEditDialog.vue
  54. 0 0
      工作空间/产研/权益/汇丰全行/产品原型/pc-demo/src/components/tag/RuleBuilder.vue
  55. 0 0
      工作空间/产研/权益/汇丰全行/产品原型/pc-demo/src/config/metaRules.js
  56. 0 0
      工作空间/产研/权益/汇丰全行/产品原型/pc-demo/src/config/tagParams.js
  57. 0 0
      工作空间/产研/权益/汇丰全行/产品原型/pc-demo/src/main.js
  58. 0 0
      工作空间/产研/权益/汇丰全行/产品原型/pc-demo/src/mock/index.js
  59. 0 0
      工作空间/产研/权益/汇丰全行/产品原型/pc-demo/src/router/index.js
  60. 0 0
      工作空间/产研/权益/汇丰全行/产品原型/pc-demo/src/store/crowdNameListStore.js
  61. 0 0
      工作空间/产研/权益/汇丰全行/产品原型/pc-demo/src/store/crowdTaskStore.js
  62. 0 0
      工作空间/产研/权益/汇丰全行/产品原型/pc-demo/src/store/ruleGroupStore.js
  63. 0 0
      工作空间/产研/权益/汇丰全行/产品原型/pc-demo/src/store/smsTemplateStore.js
  64. 0 0
      工作空间/产研/权益/汇丰全行/产品原型/pc-demo/src/store/tagStore.js
  65. 0 0
      工作空间/产研/权益/汇丰全行/产品原型/pc-demo/src/styles/quill.css
  66. 0 0
      工作空间/产研/权益/汇丰全行/产品原型/pc-demo/src/utils/linkOptions.js
  67. 0 0
      工作空间/产研/权益/汇丰全行/产品原型/pc-demo/src/utils/request.js
  68. 0 0
      工作空间/产研/权益/汇丰全行/产品原型/pc-demo/src/views/AddEquityProduct.vue
  69. 0 0
      工作空间/产研/权益/汇丰全行/产品原型/pc-demo/src/views/AuditDetail.vue
  70. 0 0
      工作空间/产研/权益/汇丰全行/产品原型/pc-demo/src/views/AuditEquityProduct.vue
  71. 0 0
      工作空间/产研/权益/汇丰全行/产品原型/pc-demo/src/views/AuditList.vue
  72. 0 0
      工作空间/产研/权益/汇丰全行/产品原型/pc-demo/src/views/CampaignAuditDetail.vue
  73. 0 0
      工作空间/产研/权益/汇丰全行/产品原型/pc-demo/src/views/CampaignAuditList.vue
  74. 0 0
      工作空间/产研/权益/汇丰全行/产品原型/pc-demo/src/views/CampaignManagement.vue
  75. 0 0
      工作空间/产研/权益/汇丰全行/产品原型/pc-demo/src/views/CashDiscountGrant.vue
  76. 0 0
      工作空间/产研/权益/汇丰全行/产品原型/pc-demo/src/views/ChannelManagement.vue
  77. 0 0
      工作空间/产研/权益/汇丰全行/产品原型/pc-demo/src/views/CreditCardEquity.vue
  78. 0 0
      工作空间/产研/权益/汇丰全行/产品原型/pc-demo/src/views/CrowdNameListEdit.vue
  79. 0 0
      工作空间/产研/权益/汇丰全行/产品原型/pc-demo/src/views/CrowdTaskEdit.vue
  80. 0 0
      工作空间/产研/权益/汇丰全行/产品原型/pc-demo/src/views/CrowdTaskList.vue
  81. 0 0
      工作空间/产研/权益/汇丰全行/产品原型/pc-demo/src/views/CrowdTaskView.vue
  82. 0 0
      工作空间/产研/权益/汇丰全行/产品原型/pc-demo/src/views/CustomerEquityGrant.vue
  83. 0 0
      工作空间/产研/权益/汇丰全行/产品原型/pc-demo/src/views/EditEquityProduct.vue
  84. 0 0
      工作空间/产研/权益/汇丰全行/产品原型/pc-demo/src/views/EquityGrantCampaign.vue
  85. 0 0
      工作空间/产研/权益/汇丰全行/产品原型/pc-demo/src/views/EquityGrantCampaignEdit.vue
  86. 0 0
      工作空间/产研/权益/汇丰全行/产品原型/pc-demo/src/views/EquityGrantCampaignView.vue
  87. 0 0
      工作空间/产研/权益/汇丰全行/产品原型/pc-demo/src/views/EquityProductCoupons.vue
  88. 0 0
      工作空间/产研/权益/汇丰全行/产品原型/pc-demo/src/views/EquityProducts.vue
  89. 0 0
      工作空间/产研/权益/汇丰全行/产品原型/pc-demo/src/views/GrantTaskDetail.vue
  90. 0 0
      工作空间/产研/权益/汇丰全行/产品原型/pc-demo/src/views/GrantTaskList.vue
  91. 0 0
      工作空间/产研/权益/汇丰全行/产品原型/pc-demo/src/views/Login.vue
  92. 0 0
      工作空间/产研/权益/汇丰全行/产品原型/pc-demo/src/views/PageAssembly.vue
  93. 0 0
      工作空间/产研/权益/汇丰全行/产品原型/pc-demo/src/views/PageHomeConfig.vue
  94. 0 0
      工作空间/产研/权益/汇丰全行/产品原型/pc-demo/src/views/PageManagement.vue
  95. 0 0
      工作空间/产研/权益/汇丰全行/产品原型/pc-demo/src/views/PageZoneConfig.vue
  96. 0 0
      工作空间/产研/权益/汇丰全行/产品原型/pc-demo/src/views/PointsDetail.vue
  97. 0 0
      工作空间/产研/权益/汇丰全行/产品原型/pc-demo/src/views/RuleGroupAuditDetail.vue
  98. 0 0
      工作空间/产研/权益/汇丰全行/产品原型/pc-demo/src/views/RuleGroupAuditList.vue
  99. 0 0
      工作空间/产研/权益/汇丰全行/产品原型/pc-demo/src/views/RuleGroupEdit.vue
  100. 0 0
      工作空间/产研/权益/汇丰全行/产品原型/pc-demo/src/views/RuleGroupList.vue

+ 2 - 1
.claude/settings.local.json

@@ -22,7 +22,8 @@
       "Bash(python3)",
       "Bash(grep -rohE '\\\\$message\\\\.|\\\\$confirm|\\\\$alert|\\\\$prompt|\\\\$msgbox|\\\\$notify' .)",
       "Bash(lark-cli auth *)",
-      "Bash(wait)"
+      "Bash(wait)",
+      "Bash(perl *)"
     ],
     "additionalDirectories": []
   }

+ 51 - 44
.claude/skills/pc-demo/SKILL.md

@@ -1,52 +1,57 @@
 ---
 name: pc-demo
-description: PC端供应链管理后台构建专家。使用 React + Ant Design + Vite 技术栈构建企业级后台管理系统 demo。当用户提到"PC后台"、"供应链后台"、"后台页面"、"新增页面"、"添加菜单"、"PC端开发"、"后台列表"、"后台详情"、"管理后台"、"新建页面"、"开发页面"、"页面模板"等关键词时,必须使用此 skill。即使用户只是简单提到要做一个后台页面或管理界面,也应该触发此 skill。
+description: PC端管理后台构建专家。使用 Vue 3 + Element Plus + Vite 技术栈构建企业级后台管理系统 demo。当用户提到"PC后台"、"供应链后台"、"后台页面"、"新增页面"、"添加菜单"、"PC端开发"、"后台列表"、"后台详情"、"管理后台"、"新建页面"、"开发页面"、"页面模板"等关键词时,必须使用此 skill。即使用户只是简单提到要做一个后台页面或管理界面,也应该触发此 skill。
 ---
-# PC 端供应链管理后台构建专家
+# PC 端管理后台构建专家
 
 ## 项目定位
 
-本 skill 用于通过代码构建 PC 端供应链管理后台 demo,所有产出代码放在 `./pc` 目录下。这是一个前端 demo 项目,使用模拟数据,重点在于界面还原和交互体验。
+本 skill 用于通过代码构建 PC 端管理后台 demo。项目位于 `工作空间/产研/<业务线>/<项目名称>/产品原型/pc-demo/` 目录下。这是一个前端 demo 项目,使用模拟数据,重点在于界面还原和交互体验。
 
 * * *
 
 ## 技术栈
 
-| 技术  | 用途  |
+| 技术 | 用途 |
 | --- | --- |
-| React 18 + Hooks | 视图层 |
-| React Router 6 | 路由(createBrowserRouter) |
-| Ant Design 5 | UI 组件库 |
-| Vite | 构建工具 |
-| dayjs | 日期处理 |
-
-主题色:**#FF6B00**(橙白主色调)
+| Vue 3.5 + Composition API | 视图层 |
+| Vue Router 4 | 路由(createRouter + createWebHashHistory) |
+| Element Plus 2.10 | UI 组件库 |
+| @element-plus/icons-vue | 图标(main.js 全局注册,模板直接用) |
+| @vueup/vue-quill | 富文本编辑 |
+| Axios | HTTP 请求封装 |
+| Mock.js | 前端数据模拟 |
+| Vite 5 | 构建工具 |
 
 * * *
 
 ## 目录结构
 
 ```
-pc/src/
-├── main.jsx              # 入口
-├── App.jsx               # 根组件
-├── router/index.jsx      # 路由 + 菜单配置
-├── layouts/MainLayout.jsx
+pc-demo/src/
+├── main.js               # 入口(注册 Element Plus、图标、路由、mock)
+├── App.vue               # 根组件
+├── router/index.js        # 路由配置 + beforeEach 登录守卫
 ├── components/
-│   ├── SideMenu/         # 左侧菜单
-│   └── TabNav/           # 导航标签
-├── pages/
-│   ├── Home/
-│   └── [模块名]/index.jsx
-├── mock/                  # 模拟数据
-└── stores/tabStore.jsx   # 标签页状态
+│   ├── Layout.vue         # 侧边栏菜单 + 面包屑 + 用户下拉
+│   └── [业务组件].vue
+├── views/                 # 页面视图
+│   ├── Login.vue
+│   └── [页面名].vue
+├── mock/index.js          # Mock.mock() 拦截器注册
+├── store/                 # reactive() 状态管理(刷新重置)
+├── config/                # 业务配置
+├── styles/                # 样式文件
+└── utils/
+    ├── request.js         # axios 封装(token 注入、响应拦截、401 处理)
+    └── linkOptions.js
 ```
 
 * * *
 
 ## 核心规范索引
 
-| 规范  | 文件  |
+| 规范 | 文件 |
 | --- | --- |
 | 项目初始化 | [references/pc-init.md](./references/pc-init.md) |
 | 菜单配置 | [references/menu-config.md](./references/menu-config.md) |
@@ -62,16 +67,13 @@ pc/src/
 
 新增页面时按以下步骤执行:
 
-1.  **确认需求**:页面类型(列表/详情/看板)、所属菜单位置、核心字段
-    
-2.  **创建文件**:按目录结构创建页面和 mock 文件
-    
-3.  **注册路由**:App.jsx 中添加 Route,path 必须与菜单 key 一致(含前导斜杠)
-    
-4.  **注册菜单**:router/index.jsx 的 menuItems 中添加菜单项
-    
-5.  **创建 Mock 数据**:mock/ 目录下创建模拟数据文件
-    
+1. **确认需求**:页面类型(列表/详情/看板)、所属菜单位置、核心字段
+
+2. **创建文件**:在 `src/views/` 下创建页面 `.vue` 文件,在 `src/mock/index.js` 中添加 Mock 数据
+
+3. **注册路由**:`src/router/index.js` 中添加路由,设置 `meta.title` 用于面包屑
+
+4. **注册菜单**:`src/components/Layout.vue` 的 `<el-menu>` 中添加菜单项
 
 * * *
 
@@ -80,19 +82,24 @@ pc/src/
 启动开发服务器检查页面是否正常渲染:
 
 ```bash
-cd ./pc && npm run dev
+cd 工作空间/产研/权益/汇丰全行/产品原型/pc-demo && npm run dev
 ```
 
 * * *
 
+## Element Plus 使用约定
+
+- 图标:`<el-icon><Plus /></el-icon>`,所有图标已全局注册,无需逐文件 import
+- 弹窗:`el-dialog` / `el-drawer` 用 `v-model="visible"`
+- 子菜单:使用 `<el-sub-menu>`(非 `el-submenu`)
+- 插槽:`<template #xxx>` 替代 `slot="xxx"`;`<template #default="scope">` 替代 `slot-scope`
+- 尺寸:`size="small"` 替代 `size="mini"`;无需写 `size="medium"`(用默认)
+- 消息:`ElMessage.xxx()` 替代 `this.$message`;`ElMessageBox.confirm()` 替代 `this.$confirm`
+
 ## 注意事项
 
--   这是一个 demo 项目,重点在于界面展示和交互体验,不需要真实后端接口
-    
--   所有数据使用 mock 模拟,mock 数据要贴合业务实际
-    
--   不需要登录认证、权限控制等复杂逻辑
-    
--   新增页面时必须同步更新菜单配置和路由配置
-    
--   保持代码简洁,避免过度工程化
+- 这是一个 demo 项目,重点在于界面展示和交互体验,不需要真实后端接口
+- 所有数据使用 Mock.js 模拟,mock 数据要贴合业务实际
+- Mock 返回体必须遵循 `{ code: 200, data, msg }` 结构
+- 新增页面时必须同步更新菜单配置和路由配置
+- 保持代码简洁,避免过度工程化

+ 52 - 39
CLAUDE.md

@@ -1,4 +1,4 @@
-# [CLAUDE.md](http://CLAUDE.md)
+# CLAUDE.md
 
 This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
 
@@ -6,54 +6,68 @@ This file provides guidance to Claude Code (claude.ai/code) when working with co
 
 本项目默认使用简体中文,新增/更新的 skill、规则、记忆等文件应该使用简体中文(可允许部分必须要英文字母的表述,如 API、URL、ID 等)。
 
-<br>
-
 ## 项目概述
 
-这是一个产品经理的 Claude Code 工作空间,用于:
+这是一个通用的企业级员工 AI 工作台,包括但不限于:
 
--   撰写 PRD(prd-writer)
-    
 -   需求分析(requirements-analysis)
     
+-   撰写 PRD / FSD(prd-writer)
+    
+-   撰写测试用例
+    
 -   构建 PC 端后台 Demo(pc-demo)
     
+-   构建 H5 移动端 Demo
+    
 
-**工作流程**:需求分析 → PRD 撰写 → PC 端 Demo 开发
+**工作流程**:需求分析 → PRD 撰写 → PC/H5 Demo 开发 → 测试用例编写
+
+## 目录结构
+
+```
+rongshu/
+├── CLAUDE.md                          # 本文件
+├── .claude/skills/                    # Claude Code 技能目录
+│   ├── prd-writer/                    # PRD 撰写技能
+│   ├── requirements-analysis/         # 需求分析技能
+│   ├── pc-demo/                       # PC 端 Demo 构建技能
+│   └── lark-*/                        # 飞书集成技能(文档、表格、日历等)
+├── .resources/                        # 截图、图片等资源文件
+├── 工作空间/                           # 产研工作目录
+│   └── 产研/
+│       └── <业务线>/                   # 如:权益
+│           └── <项目名称>/             # 如:汇丰全行
+│               ├── 需求文档/           # PRD、FSD 等需求文档
+│               │   └── screenshots/   # 需求文档配图
+│               ├── 测试用例/           # 测试用例文档
+│               └── 产品原型/           # Demo 项目
+│                   ├── pc-demo/       # PC 端后台 Demo(Vue 3)
+│                   └── h5-demo/       # H5 移动端 Demo
+└── 企业知识和技能库/                    # 企业知识沉淀(待建设)
+```
 
-## 架构要点
+## 架构要点(PC Demo)
 
--   **无真实后端**:PC Demo 使用 Mock.js 在浏览器内拦截 `/api/*` 请求,生成假数据
+-   **技术栈**:Vue 3.5 + Vue Router 4 + Element Plus 2.10 + Vite 5
+    
+-   **无真实后端**:Mock.js 在浏览器内拦截 `/api/*` 请求,生成假数据
     
 -   **认证机制**:`localStorage.token` 存储登录态,路由守卫 `beforeEach` 检查 token
     
--   **新增页面三步**:① `pc/src/router/index.js` 加路由 → ② `Layout.vue` 的 `<el-menu>` 加菜单项 → ③ `currentTitle` 映射加面包屑标题
+-   **新增页面两步**:① `src/router/index.js` 加路由(含 `meta.title`) → ② `Layout.vue` 的 `<el-menu>` 加菜单项
     
 -   **Mock 接口格式**:所有返回必须遵循 `{ code: 200, data, msg }` 结构
     
+-   **定制化路径**:客户定制页面遵循 `customization/<客户>/<模块>` 路径前缀
+    
 
-## 目录结构
-
-```
-pm_agent/
-├── CLAUDE.md              # 本文件
-├── prd/                   # PRD 文档目录
-├── pc/                    # PC 端管理后台 Demo
-│   ├── CLAUDE.md          # PC 项目指南
-│   └── src/               # 项目源码
-└── .claude/
-    └── skills/            # Claude Code 技能目录
-        ├── prd-writer/           # PRD 撰写技能
-        ├── requirements-analysis/ # 需求分析技能
-        └── pc-demo/              # PC 端 Demo 构建技能
-```
-
-## 常用命令(PC 端 Demo)
+## 常用命令(PC Demo)
 
 ```bash
-cd pc
+cd 工作空间/产研/权益/汇丰全行/产品原型/pc-demo
 npm install        # 安装依赖
-npm run serve      # 启动开发服务器(端口 8080,热更新)
+npm run dev        # 启动 Vite 开发服务器(端口 8080,热更新)
 npm run build      # 生产构建
 npm run lint       # ESLint 校验并自动修复
 ```
@@ -64,30 +78,29 @@ npm run lint       # ESLint 校验并自动修复
 
 ### requirements-analysis(需求分析)
 
-当用户提到"需求分析"、"分析需求"、"撰写需求分析"、"需求调研"时使用。在 PRD 撰写前进行需求调研、分析和确认。输出到 `prd/` 目录。
+当用户提到"需求分析"、"分析需求"、"撰写需求分析"、"需求调研"时使用。在 PRD 撰写前进行需求调研、分析和确认。输出到 `工作空间/产研/<业务线>/<项目名称>/需求文档/` 目录。
 
 ### prd-writer(PRD 撰写)
 
-当用户提到"写PRD"、"撰写需求"、"产品需求"、"需求背景"、"功能设计"、"撰写产品需求文档"时使用。按五段式模板输出(需求背景→需求目标→流程图→功能清单→系统改造),包含 Mermaid 流程图。输出到 `prd/` 目录。
+当用户提到"写PRD"、"撰写需求"、"产品需求"、"需求背景"、"功能设计"、"撰写产品需求文档"时使用。按五段式模板输出(需求背景→需求目标→流程图→功能清单→系统改造),包含 Mermaid 流程图。输出到 `工作空间/产研/<业务线>/<项目名称>/需求文档/` 目录。
 
 ### pc-demo(PC 端 Demo)
 
 当用户提到"PC后台"、"后台页面"、"新增页面"、"添加菜单"、"PC端开发"、"后台列表"、"后台详情"、"管理后台"、"新建页面"、"开发页面"、"页面模板"等关键词时使用。即使用户只是简单提到要做一个后台页面或管理界面,也应该触发此 skill。
 
-**注意**:pc-demo skill 模板文档描述的是 React + Ant Design + Vite,但实际 `pc/` 项目使用 Vue 2.6 + Element UI 2.15 + Vue CLI 5。开发时以 `pc/CLAUDE.md` 和实际代码为准。
+**注意**:pc-demo skill 模板文档描述的是 React + Ant Design + Vite,但实际项目使用 Vue 3.5 + Element Plus 2.10 + Vite 5。开发时以对应项目的 `CLAUDE.md` 和实际代码为准。
 
-## PRD 文档约定
+## 文档约定
 
--   PRD 文档存放在 `prd/<需求名称>/` 目录
+-   需求文档存放在 `工作空间/产研/<业务线>/<项目名称>/需求文档/` 目录
+    
+-   测试用例存放在 `工作空间/产研/<业务线>/<项目名称>/测试用例/` 目录
+    
+-   产品原型存放在 `工作空间/产研/<业务线>/<项目名称>/产品原型/` 目录
     
 -   文件命名格式:`<简述>-<类型>-<日期>.md`(如 `销售数据导出-需求沟通记录-20260410.md`)
     
 -   流程图使用 Mermaid 语法
     
 
-| <br> | mscGroupList |
-| --- | --- |
-| 客户类型MSC | mscCode |
-| mscGroupList | mscCodeList |
-
 <br>

+ 0 - 779
guide/汇丰借记卡权益-操作手册-20260427.md

@@ -1,779 +0,0 @@
-# 汇丰借记卡权益 操作手册
-
-> 文档版本:V1.0\
-> \
-> 编写日期:2026-04-27\
-> \
-> 适用对象:汇丰银行运营人员、审核人员\
-> \
-> 适用系统:Liso 后台 - 定制功能 - 汇丰银行
-
-***
-
-## 目录
-
-1. [系统概述](#%E4%B8%80%E7%B3%BB%E7%BB%9F%E6%A6%82%E8%BF%B0)
-2. [后台操作说明](#%E4%BA%8C%E5%90%8E%E5%8F%B0%E6%93%8D%E4%BD%9C%E8%AF%B4%E6%98%8E)
-   - 2.1 [添加权益商品](#21-%E6%B7%BB%E5%8A%A0%E6%9D%83%E7%9B%8A%E5%95%86%E5%93%81)
-   - 2.2 [编辑权益商品](#22-%E7%BC%96%E8%BE%91%E6%9D%83%E7%9B%8A%E5%95%86%E5%93%81)
-   - 2.3 [查看权益商品](#23-%E6%9F%A5%E7%9C%8B%E6%9D%83%E7%9B%8A%E5%95%86%E5%93%81)
-   - 2.4 [审核权益商品](#24-%E5%AE%A1%E6%A0%B8%E6%9D%83%E7%9B%8A%E5%95%86%E5%93%81)
-   - 2.5 [下架权益商品](#25-%E4%B8%8B%E6%9E%B6%E6%9D%83%E7%9B%8A%E5%95%86%E5%93%81)
-   - 2.6 [修改库存](#26-%E4%BF%AE%E6%94%B9%E5%BA%93%E5%AD%98)
-   - 2.7 [权益列表筛选与查询](#27-%E6%9D%83%E7%9B%8A%E5%88%97%E8%A1%A8%E7%AD%9B%E9%80%89%E4%B8%8E%E6%9F%A5%E8%AF%A2)
-3. [移动端展示效果](#%E4%B8%89%E7%A7%BB%E5%8A%A8%E7%AB%AF%E5%B1%95%E7%A4%BA%E6%95%88%E6%9E%9C)
-4. [常见问题(FAQ)](#%E5%9B%9B%E5%B8%B8%E8%A7%81%E9%97%AE%E9%A2%98faq)
-
-***
-
-```tldraw id="c1ba9898-32f8-4c82-bc38-ae1a73128ba1" height="520"
-{
-  "store": {
-    "binding:Wv_P4aiX8HCHTpbi5rhTd": {
-      "meta": {},
-      "id": "binding:Wv_P4aiX8HCHTpbi5rhTd",
-      "type": "arrow",
-      "fromId": "shape:284-W03iPdkMlHuEYsjAT",
-      "toId": "shape:40zlOZKFmKzxLDl8OfDzE",
-      "props": {
-        "isPrecise": true,
-        "isExact": false,
-        "normalizedAnchor": {
-          "x": 0.5,
-          "y": 0.5
-        },
-        "snap": "center",
-        "terminal": "end"
-      },
-      "typeName": "binding"
-    },
-    "shape:40zlOZKFmKzxLDl8OfDzE": {
-      "x": -49,
-      "y": 1000.5,
-      "rotation": 0,
-      "isLocked": false,
-      "opacity": 1,
-      "meta": {},
-      "id": "shape:40zlOZKFmKzxLDl8OfDzE",
-      "type": "geo",
-      "props": {
-        "w": 99,
-        "h": 48,
-        "geo": "rectangle",
-        "dash": "draw",
-        "growY": 0,
-        "url": "",
-        "scale": 1,
-        "color": "black",
-        "labelColor": "black",
-        "fill": "none",
-        "size": "m",
-        "font": "draw",
-        "align": "middle",
-        "verticalAlign": "middle",
-        "richText": {
-          "type": "doc",
-          "content": [
-            {
-              "type": "paragraph"
-            }
-          ]
-        }
-      },
-      "parentId": "page:page",
-      "index": "a2hIrkaV",
-      "typeName": "shape"
-    },
-    "shape:MYLJj4c2ldfWYDFoAG2pS": {
-      "x": -45,
-      "y": 895.5,
-      "rotation": 0,
-      "isLocked": false,
-      "opacity": 1,
-      "meta": {},
-      "id": "shape:MYLJj4c2ldfWYDFoAG2pS",
-      "type": "geo",
-      "props": {
-        "w": 89,
-        "h": 50,
-        "geo": "rectangle",
-        "dash": "draw",
-        "growY": 0,
-        "url": "",
-        "scale": 1,
-        "color": "black",
-        "labelColor": "black",
-        "fill": "none",
-        "size": "m",
-        "font": "draw",
-        "align": "middle",
-        "verticalAlign": "middle",
-        "richText": {
-          "type": "doc",
-          "content": [
-            {
-              "type": "paragraph"
-            }
-          ]
-        }
-      },
-      "parentId": "page:page",
-      "index": "a1W7b5fV",
-      "typeName": "shape"
-    },
-    "page:page": {
-      "meta": {},
-      "id": "page:page",
-      "name": "Page 1",
-      "index": "a1",
-      "typeName": "page"
-    },
-    "document:document": {
-      "gridSize": 10,
-      "name": "",
-      "meta": {},
-      "id": "document:document",
-      "typeName": "document"
-    },
-    "shape:284-W03iPdkMlHuEYsjAT": {
-      "x": 0,
-      "y": 947.5,
-      "rotation": 0,
-      "isLocked": false,
-      "opacity": 1,
-      "meta": {},
-      "id": "shape:284-W03iPdkMlHuEYsjAT",
-      "type": "arrow",
-      "props": {
-        "kind": "arc",
-        "elbowMidPoint": 0.5,
-        "dash": "draw",
-        "size": "m",
-        "fill": "none",
-        "color": "black",
-        "labelColor": "black",
-        "bend": 0,
-        "start": {
-          "x": 0,
-          "y": 0
-        },
-        "end": {
-          "x": 0,
-          "y": 47
-        },
-        "arrowheadStart": "none",
-        "arrowheadEnd": "arrow",
-        "richText": {
-          "type": "doc",
-          "content": [
-            {
-              "type": "paragraph"
-            }
-          ]
-        },
-        "labelPosition": 0.5,
-        "font": "draw",
-        "scale": 1
-      },
-      "parentId": "page:page",
-      "index": "a37oH73V",
-      "typeName": "shape"
-    }
-  },
-  "schema": {
-    "schemaVersion": 2,
-    "sequences": {
-      "com.tldraw.store": 5,
-      "com.tldraw.asset": 1,
-      "com.tldraw.camera": 1,
-      "com.tldraw.document": 2,
-      "com.tldraw.instance": 26,
-      "com.tldraw.instance_page_state": 5,
-      "com.tldraw.page": 1,
-      "com.tldraw.instance_presence": 6,
-      "com.tldraw.pointer": 1,
-      "com.tldraw.shape": 4,
-      "com.tldraw.asset.bookmark": 2,
-      "com.tldraw.asset.image": 6,
-      "com.tldraw.asset.video": 5,
-      "com.tldraw.shape.arrow": 8,
-      "com.tldraw.shape.bookmark": 2,
-      "com.tldraw.shape.draw": 4,
-      "com.tldraw.shape.embed": 4,
-      "com.tldraw.shape.frame": 1,
-      "com.tldraw.shape.geo": 11,
-      "com.tldraw.shape.group": 0,
-      "com.tldraw.shape.highlight": 3,
-      "com.tldraw.shape.image": 5,
-      "com.tldraw.shape.line": 5,
-      "com.tldraw.shape.note": 10,
-      "com.tldraw.shape.text": 4,
-      "com.tldraw.shape.video": 4,
-      "com.tldraw.binding.arrow": 1
-    }
-  }
-}
-```
-
-## 一、系统概述
-
-### 1.1 业务背景
-
-汇丰银行此前仅支持信用卡权益,本次升级新增**全行权益**能力,将权益范围拓展至借记卡用户,提升用户活跃度。
-
-### 1.2 权益分类
-
-本系统支持的权益按**商品来源**分为两大类:
-
-| 类型       | 说明                       | 跳转方式           |
-| -------- | ------------------------ | -------------- |
-| **银行自有** | 商城内的自营权益商品(含券码类商品)       | 跳转至权益详情页或订单详情页 |
-| **外部**   | 第三方合作商家权益(太古地产、龙腾、自定义链接) | 跳转至第三方页面       |
-
-### 1.3 权益商品状态流转
-
-```text
-待审核 ──审核通过──> 已上架 ──下架──> 已下架
-   │
-   └──审核拒绝──> 审核拒绝
-```
-
-| 状态   | 含义           | 可执行操作     |
-| ---- | ------------ | --------- |
-| 待审核  | 已提交,等待审核人审核  | 查看、编辑、审核  |
-| 审核通过 | 审核通过(同"已上架") | 查看、下架     |
-| 审核拒绝 | 审核未通过        | 查看、编辑     |
-| 已上架  | 已上架,前台可见     | 查看、下架、改库存 |
-| 已下架  | 已下架,前台不可见    | 查看、编辑     |
-
-***
-
-## 二、后台操作说明
-
-### 操作入口
-
-**Liso 后台 → 定制功能 → 汇丰银行 → 权益商品管理**
-
-![菜单入口](../.resources/image-1776675434545.png)
-
-***
-
-### 2.1 添加权益商品
-
-权益商品的添加采用**两步骤向导**完成:
-
-> **步骤一:填写商品信息** → **步骤二:设置规则**
-
-![添加权益商品](../.resources/image-1776677751099.png)
-
-第一步:选择商品来源
-
-在添加页面顶部,先选择**商品来源**:
-
-- ☑ **银行自有**(默认)
-- ☐ **外部**
-
-> ⚠️ 商品来源选定后将动态展示对应的字段;提交保存后**不可修改**。
-
-***
-
-2.1.1 添加"银行自有"权益
-
-![银行自有 - 商品信息表单](../.resources/image-1776677676974.png)
-
-**步骤一:填写商品信息**
-
-| 字段           | 必填 | 填写说明                                                                                                                                             |
-| ------------ | -- | ------------------------------------------------------------------------------------------------------------------------------------------------ |
-| **SKU 编号**   | 是  | 输入 SKU 编号后,系统自动检索商城内"机构定价含汇丰银行"且为 SIP 渠道的银行自有商品,按"商品名称-SKU 编号"展示。 选择后将自动回填:商品名称→权益名称、商品图片→权益列表图标、商户价格信息                                          |
-| **权益名称**     | 是  | 最长 40 字符                                                                                                                                         |
-| **权益副标题**    | 否  | 最长 40 字符                                                                                                                                         |
-| **权益列表图标**   | 是  | 上传 1 张,用于权益列表的小图                                                                                                                                 |
-| **权益主图**     | 是  | 上传 1 张,用于权益详情页的大图                                                                                                                                |
-| **库存数**      | 是  | 整数,0 ~ 100000                                                                                                                                    |
-| **权益概述**     | 是  | 富文本,最长 500 字符(详情页中部展示)                                                                                                                           |
-| **权益详情**     | 是  | 富文本,最长 1000 字符(详情页底部使用说明)                                                                                                                        |
-| **下单成功短信**   | 否  | 默认关闭。开启后选择"短信模板",下单成功时自动发送短信。 支持占位符:商品名称 `${productName}`、结束日期 `${expireDate}`、卡号 `${exchangeNum}`、卡密 `${exchangePwd}`、券码路径 `${qrCodeDownPaths}` |
-| **领取成功按钮文案** | 是  | 默认值"马上去使用",可自定义                                                                                                                                  |
-| **权益列表顺序**   | 否  | 数值越小越靠前                                                                                                                                          |
-
-**价格信息**(选择 SKU 后自动展示):
-
-![价格信息区域](../.resources/image-1776678323140.png)
-
-| 字段      | 必填 | 说明                 |
-| ------- | -- | ------------------ |
-| 商户结算价   | -  | 自动回填,只读            |
-| 商户结算方式  | -  | 自动回填(发货结算/使用结算),只读 |
-| **科目号** | 是  | 选择对应科目号            |
-
-***
-
-2.1.2 添加"外部"权益
-
-**步骤一:填写商品信息**
-
-外部权益需先选择 **外部商品链接** 和 **链接入口** 两项关键字段:
-
-| 字段         | 必填 | 说明                                                     |
-| ---------- | -- | ------------------------------------------------------ |
-| **外部商品链接** | 是  | 三选一:`太古地产` / `龙腾` / `自定义` 选择"自定义"时,需填写自定义链接(最长 400 字符) |
-| **链接入口**   | 是  | 二选一:`权益列表页` / `权益详情页` 决定用户在 App 哪一层级跳出至外部              |
-
-**(A)链接入口 = 权益列表页** 时填写以下字段:
-
-![外部 - 链接入口=权益列表页](../.resources/image-1776677854190.png)
-
-| 字段     | 必填 | 说明       |
-| ------ | -- | -------- |
-| 权益名称   | 是  | 最长 40 字符 |
-| 权益副标题  | 否  | 最长 40 字符 |
-| 权益列表图标 | 是  | 上传 1 张   |
-| 列表顺序   | 否  | 数值越小越靠前  |
-
-> 用户在 App 权益列表点击图标时**直接跳转外部**,不进入详情页。
-
-**(B)链接入口 = 权益详情页** 时填写以下字段:
-
-![外部 - 链接入口=权益详情页](../.resources/image-1776677883654.png)
-
-| 字段     | 必填 | 说明             |
-| ------ | -- | -------------- |
-| 权益名称   | 是  | 最长 40 字符       |
-| 权益副标题  | 否  | 最长 40 字符       |
-| 权益列表图标 | 是  | 上传 1 张         |
-| 权益主图   | 是  | 上传 1 张         |
-| 权益概述   | 是  | 富文本,最长 500 字符  |
-| 权益详情   | 是  | 富文本,最长 1000 字符 |
-| 列表顺序   | 否  | 数值越小越靠前        |
-
-> 用户先进入权益详情页,点击【领取权益】后再跳转外部。
-
-***
-
-2.1.3 第二步:设置规则
-
-![设置规则](../.resources/image-1776678543717.png)
-
-**展示规则**(控制权益是否在 App 列表中可见):
-
-| 字段         | 类型 | 说明                                 |
-| ---------- | -- | ---------------------------------- |
-| **展示时间限制** | 开关 | 默认关闭。开启后配置开始/结束时间(精确到秒),超出区间则不展示   |
-| **展示客群限制** | 开关 | 默认关闭。开启后选择客群标签 ID(支持多选),命中标签的用户才可见 |
-
-**领取规则**(控制用户能否领取):
-
-| 字段         | 类型 | 说明                                                                                                                     |
-| ---------- | -- | ---------------------------------------------------------------------------------------------------------------------- |
-| **领取时间限制** | 开关 | 默认关闭。开启后配置开始/结束时间(精确到秒) 未到开始时间:按钮显示【未开始】 超过结束时间:按钮显示【已失效】                                                              |
-| **领取客群限制** | 开关 | 默认关闭。开启后需配置: • **标签**:标签 ID(必填,最长 50 字符) • **不满足提示内容**:必填,最长 200 字符 • **跳转按钮文案**:必填,最长 10 字符 • **跳转按钮链接**:必填,最长 200 字符 |
-
-2.1.4 操作按钮
-
-| 按钮            | 行为                        |
-| ------------- | ------------------------- |
-| **上一步 / 下一步** | 在两个步骤间导航                  |
-| **取消**        | 放弃操作,返回权益列表页              |
-| **提交**        | 校验所有必填项,通过后创建记录,状态变为【待审核】 |
-
-***
-
-### 2.2 编辑权益商品
-
-**可编辑状态**:仅 `待审核`、`审核拒绝`、`已下架` 状态的权益可编辑。
-
-**操作入口**:权益列表 → 列表行【操作】列 → 【编辑】
-
-**注意事项**:
-
-- ⚠️ **【商品来源】不可编辑**,其他字段均可编辑
-- 保存后状态重置为【待审核】,需重新审核
-
-| 按钮 | 行为                      |
-| -- | ----------------------- |
-| 取消 | 放弃操作,返回列表页              |
-| 保存 | 校验必填项,通过后更新记录,状态变为【待审核】 |
-
-![编辑权益 1](../.resources/image-1776678460565.png)![编辑权益 2](../.resources/image-1776678477468.png)
-
-***
-
-### 2.3 查看权益商品
-
-**操作入口**:权益列表 → 列表行【操作】列 → 【查看】
-
-- 字段同【编辑】,但所有输入框、选择框**禁用**
-- **不展示**【取消】和【提交】按钮
-
-![查看权益](../.resources/image-1776678401993.png)
-
-***
-
-### 2.4 审核权益商品
-
-**展示条件**:权益商品状态为【待审核】时,列表展示【审核】按钮。
-
-**操作流程**:
-
-1. 列表点击【审核】,进入审核页面(字段同【查看】)
-2. 页面底部展示两个操作按钮:
-
-| 按钮       | 行为                  |
-| -------- | ------------------- |
-| **审核拒绝** | 弹窗二次确认 → 状态变为【审核拒绝】 |
-| **审核通过** | 弹窗二次确认 → 状态变为【已上架】  |
-
-![审核操作](../.resources/image-1776678587748.png)
-
-> 💡 **审核通过后即直接【已上架】**,前台立即可见,无需额外上架操作。
-
-***
-
-### 2.5 下架权益商品
-
-**展示条件**:权益商品状态为【审核通过】(即"已上架")时,列表展示【下架】按钮。
-
-**操作流程**:
-
-1. 列表点击【下架】,弹出确认提示:**"确定要下架权益 'XXX' 吗?"**
-2. 选择操作:
-
-| 按钮 | 行为                      |
-| -- | ----------------------- |
-| 确定 | 状态变为【已下架】,前台不再展示且无法兑换下单 |
-| 取消 | 关闭弹窗,状态不变               |
-
-***
-
-### 2.6 修改库存
-
-**展示条件**:权益商品状态为【已上架】时,列表展示【改库存】按钮。
-
-**操作流程**:
-
-1. 列表点击【改库存】,弹出"改库存"对话框
-2. 弹窗内容:
-
-| 字段         | 说明                             |
-| ---------- | ------------------------------ |
-| 权益名称       | 只读                             |
-| 当前库存       | 只读                             |
-| **调整类型**   | 单选:`增加库存` / `减少库存`             |
-| **调整库存数**  | 整数                             |
-| **调整后库存数** | 自动计算:增加 = 当前 + 调整;减少 = 当前 - 调整 |
-
-**校验规则**:
-
-- 增加库存时,**调整后库存数不能大于 100000**,否则提示"调整后库存不能大于 10000"
-- 减少库存时,**调整后库存数不能小于 0**,否则提示"调整库存不能小于 0"
-
-![改库存弹窗](../.resources/image-1776678623793.png)
-
-***
-
-### 2.7 权益列表筛选与查询
-
-![权益列表](../.resources/image-1776678565000.png)
-
-2.7.1 筛选条件
-
-| 字段     | 类型   | 说明   |
-| ------ | ---- | ---- |
-| 权益名称   | 文本输入 | 模糊搜索 |
-| 商品 ID  | 文本输入 | 精确匹配 |
-| SKU 编号 | 文本输入 | 精确匹配 |
-| 科目号    | 文本输入 | 精确匹配 |
-
-**操作按钮**:
-
-- 【查询】:根据筛选条件查询权益列表
-- 【重置】:清空所有筛选条件
-- 【添加权益商品】:打开添加页面
-
-2.7.2 列表字段
-
-| 字段     | 说明                             |
-| ------ | ------------------------------ |
-| 操作     | 查看 / 编辑 / 审核 / 下架 / 改库存(按状态显示) |
-| 权益名称   | 权益名称                           |
-| 审核状态   | 待审核 / 审核通过 / 审核拒绝 / 已上架 / 已下架  |
-| 库存数    | 当前库存数量                         |
-| 商品来源   | 银行自有 / 外部                      |
-| 外部商品链接 | 太古地产 / 龙腾 / 自定义;银行自有显示"-"      |
-| 链接入口   | 权益列表页 / 权益详情页;银行自有显示"-"        |
-| 商品 ID  | 商品 ID                          |
-| SKU 编号 | 关联的 SKU 编号                     |
-| 商户名称   | 商品商户名称                         |
-| 商户结算价  | 商户结算价                          |
-| 商户结算方式 | 发货结算 / 使用结算                    |
-| 审核人    | 执行审核的操作人                       |
-| 审核时间   | 审核操作的时间                        |
-
-2.7.3 分页
-
-- 每页默认显示 **20 条**
-- 支持:首页、上一页、下一页、末页、跳转至指定页
-
-***
-
-## 三、移动端展示效果
-
-> 📱 本章节用于让运营人员了解后台配置如何作用于 App 端,以便正确配置权益商品。
-
-### 3.1 权益主页(积木侧搭建)
-
-借记卡权益通过**积木组件"百变导航"**在权益主页配置入口展示。
-
-### 3.2 我的权益 - 权益列表
-
-![移动端权益列表](../.resources/image-1776678669459.png)
-
-3.2.1 展示顺序
-
-```text
-借记卡权益(新增) → 信用卡权益(现有) → 微信立减金(置底)
-```
-
-3.2.2 借记卡权益(新增)
-
-**展示条件**(必须同时满足):
-
-- ✅ 商品状态:已上架
-- ✅ 商品类型:不为微信立减金
-- ✅ 展示时间限制:未开启 或 当前时间在配置区间内
-- ✅ 展示客群限制:未开启 或 用户命中配置的客群标签
-
-**列表字段**:权益列表图标 + 权益名称
-
-**排序规则**:
-
-1. 按"权益列表顺序"从小到大
-2. 同一顺序,按审核通过时间从后往前
-
-**点击跳转规则**:
-
-| 商品来源 | 链接入口  | 跳转行为                      |
-| ---- | ----- | ------------------------- |
-| 银行自有 | -     | 跳转**权益详情页**               |
-| 外部   | 权益列表页 | 直接跳转**第三方链接**             |
-| 外部   | 权益详情页 | 跳转**权益详情页**,详情页内点击领取再跳第三方 |
-
-**外部跳转的弹窗交互**:
-
-| 外部商品链接   | 交互流程                                          |
-| -------- | --------------------------------------------- |
-| **自定义**  | 弹窗"您正在离开汇丰中国" → 点击【继续前往】跳转自定义链接               |
-| **太古地产** | 弹出授权提醒 → 勾选同意并确认 → 显示离开提示 → 调用太古地产接口 → 跳转免登地址 |
-| **龙腾**   | 弹出授权提醒 → 勾选同意并确认 → 显示离开提示 → 调用龙腾接口 → 跳转免登地址   |
-
-> **自定义弹窗文案**:\
-> 标题:您正在离开汇丰中国\
-> 描述:请注意,外部网站的政策与我们网站的条款和条件以及隐私政策不同。将在新浏览器窗口或选项卡中打开下一个网站。\
-> 按钮:取消 / 继续前往
-
-**外部跳转弹窗示意:**
-
-| 类型            | 截图 |
-| ------------- | -- |
-| 自定义离开提示       |    |
-| 太古地产授权(步骤一)   |    |
-| 太古地产离开提示(步骤二) |    |
-| 龙腾授权          |    |
-
-### 3.3 我的权益 - 我的(已领权益)
-
-![我的权益](../.resources/image-1776678841917.png)
-
-**展示顺序**:
-
-```text
-券码权益(未过期)→ 信用卡权益 → 券码权益(已失效)
-```
-
-| 分类          | 展示字段      | 排序规则          | 点击跳转  |
-| ----------- | --------- | ------------- | ----- |
-| **券码(未过期)** | 图标、名称、副标题 | 券码有效期,先到期先展示  | 订单详情页 |
-| **信用卡权益**   | 接口返回      | 按接口返回         | 按接口返回 |
-| **券码(已失效)** | 图标、名称     | 最近到期先展示,仅查近一年 | 订单详情页 |
-
-### 3.4 权益详情页
-
-> 仅"银行自有"以及"外部 + 链接入口=权益详情页"的权益进入此页。
-
-**展示内容**:
-
-- 权益主图
-- 权益名称(超出换行)
-- 权益概述(富文本)
-- 权益详情(富文本)
-- 领取按钮(按状态显示文案)
-
-**按钮状态规则**:
-
-| 状态              | 按钮文案 | 是否可点击 |
-| --------------- | ---- | ----- |
-| 开启领取时间限制且未到开始时间 | 未开始  | ❌     |
-| 开启领取时间限制且超过结束时间 | 已失效  | ❌     |
-| 库存为 0           | 已领完  | ❌     |
-| 其他正常情况          | 领取权益 | ✅     |
-
-| 详情页示意 1 | 详情页示意 2 |
-| ------- | ------- |
-|         |         |
-
-**点击【领取权益】校验顺序**:
-
-```text
-1. 校验领取客群规则 → 不满足:展示后台配置的不满足提示
-2. 校验商品库存       → 不足:提示"该权益已领完"
-3. 校验通过 → 处理领取逻辑
-```
-
-**领取成功的两种处理**:
-
-- **银行自有**:弹"尊敬的客户,您已成功领取权益" → 点击按钮跳转**权益订单详情页**
-- **外部 + 详情页入口**:根据外部链接类型走自定义/太古/龙腾跳转流程
-
-**银行自有领取成功提示示意:**
-
-| 提示弹窗 | 跳转后效果 |
-| ---- | ----- |
-|      |       |
-
-**外部跳转交互(详情页入口):**
-
-| 类型      | 截图 |
-| ------- | -- |
-| 自定义离开提示 |    |
-| 太古地产授权  |    |
-| 龙腾授权    |    |
-
-### 3.5 权益订单详情(仅券码类)
-
-![权益订单详情](../.resources/image-1776679076106.png)
-
-> 仅"商品来源=银行自有"的券码类权益领取成功后可进入。
-
-**展示内容**:
-
-| 字段      | 说明                                  |
-| ------- | ----------------------------------- |
-| 兑换卡号    | 默认掩码,点击【显示】查看明文,点击【复制】复制            |
-| 兑换密钥    | 默认掩码,点击【显示】查看明文,点击【复制】复制            |
-| 隐藏 / 显示 | 切换卡号和密钥的显示状态                        |
-| 使用按钮    | 文案取后台"领取成功按钮文案"(默认"马上去使用"),点击跳转使用链接 |
-
-### 3.6 我的立减金
-
-![我的立减金](../.resources/image-1776679101444.png)
-
-**入口**:我的权益列表底部固定入口 → 我的立减金。
-
-**商品展示信息**:
-
-| 字段    | 取值                 |
-| ----- | ------------------ |
-| 权益图片  | 后台"权益列表图标"         |
-| 商品名称  | 后台"权益名称"           |
-| 副标题描述 | 后台"权益副标题"          |
-| 有效期   | SIP 固定日期模式的有效期结束时间 |
-
-**按钮三种状态**:
-
-| 状态  | 按钮文案 | 行为         |
-| --- | ---- | ---------- |
-| 未领取 | 立即领取 | 点击领取微信立减金  |
-| 已领取 | 已领取  | 点击进入权益商品详情 |
-| 已过期 | 已过期  | 不可点击       |
-
-**展示顺序**:未领取 → 已领取 → 已过期
-
-| 状态  | 排序规则              |
-| --- | ----------------- |
-| 未领取 | 权益点有效期结束时间,先到期先展示 |
-| 已领取 | 权益下单时间,先下单先展示     |
-| 已过期 | 权益点有效期结束时间,先到期先展示 |
-
-**筛选**:页面支持按状态筛选,无数据时展示"暂无立减金"。
-
-![立减金筛选](../.resources/image-1776679143290.png)
-
-**领取流程**:
-
-```text
-1. 调用行内接口 → 用客户号查询 openId
-2. 调用 SIP 订单创建接口(立减金类型必传 openId)
-3. SIP 通过异步通知告诉商城下单成功
-4. 状态变为【已领取】
-   异常情况:toast 提示"系统异常,请联系客服人员"
-```
-
-***
-
-## 四、常见问题(FAQ)
-
-**Q1:权益商品提交后还能修改商品来源吗?**\
-\
-A:不能。商品来源(银行自有/外部)一旦提交保存后即不可修改。如需调整,请下架后重新创建。
-
-**Q2:编辑后是否需要重新审核?**\
-\
-A:是的。编辑保存后状态会重置为【待审核】,需要审核人重新审核通过后才会重新上架。
-
-**Q3:审核通过后多久能在 App 上看到?**\
-\
-A:审核通过后,状态直接变为【已上架】,前台立即可见(前提是当前时间在"展示时间限制"配置区间内,且用户命中"展示客群限制")。
-
-**Q4:库存为 0 时权益还会展示在列表中吗?**\
-\
-A:会展示。但用户点击【领取权益】时会提示"该权益已领完",无法领取。如需彻底隐藏,请执行【下架】操作。
-
-**Q5:外部权益(太古/龙腾)需要后端配合什么?**\
-\
-A:太古地产和龙腾跳转需要调用对应的免登接口,由后端返回免登地址后再跳转。运营人员只需在后台配置外部商品链接类型即可。
-
-**Q6:自定义外部链接支持什么协议?**\
-\
-A:支持标准的 https/http 链接,最长 400 字符。
-
-**Q7:下单成功短信不发送,是否影响订单?**\
-\
-A:不影响。"下单成功短信"开关默认关闭,关闭时不会发送短信,订单流程正常。
-
-**Q8:权益列表顺序数值相同,谁先展示?**\
-\
-A:按"审核通过时间"从后往前展示(即最近审核通过的排前面)。
-
-**Q9:领取客群限制和展示客群限制有什么区别?**\
-\
-A:
-
-- **展示客群限制**:控制权益是否**出现在 App 列表中**,不命中的用户根本看不到
-- **领取客群限制**:权益对所有人可见,但点击领取时校验,不命中的用户会看到不满足提示
-
-**Q10:改库存有审计记录吗?**\
-\
-A:每次改库存操作系统会记录操作人和时间,便于事后追溯。
-
-***
-
-## 附录:客户确认清单
-
-请客户在使用前对以下要点进行确认:
-
-- 后台菜单入口路径正确:定制功能 → 汇丰银行
-- 权益商品两步骤添加流程符合业务习惯
-- 银行自有 vs 外部 两种来源的字段差异符合业务需求
-- 外部权益(太古/龙腾/自定义)的跳转交互文案符合品牌规范
-- 状态流转规则(待审核 → 已上架 → 已下架)符合内部审批流程
-- 库存上限 100000、下限 0 的限制符合实际业务量
-- 短信模板占位符(商品名称、卡号、卡密等)字段命名符合现有规范
-- 移动端三类权益(借记卡/信用卡/微信立减金)的展示顺序符合产品策略
-- 微信立减金领取的接口对接(行内 openId 接口、SIP 订单接口)已确认
-
-***
-
-**文档结束**
-
-如对本操作手册有任何疑问或修改建议,请联系产品团队。

+ 0 - 8
pc-v3/.claude/settings.local.json

@@ -1,8 +0,0 @@
-{
-  "permissions": {
-    "allow": [
-      "Bash(vue create:*)",
-      "Bash(printf \"y\\\\n\")"
-    ]
-  }
-}

+ 0 - 395
prd/汇丰银行/数据标签需求.md

@@ -1,395 +0,0 @@
-# 一、需求背景
-
-汇丰银行后台需要基于客户数据标签筛选目标客群,用于权益投放、活动触达、名单圈选等业务场景。
-
-当前《汇丰借记卡权益》PRD 中,"展示客群限制""领取客群限制"依赖标签 ID 关联客群,但标签本身的创建、编辑、维护能力缺失。本需求补齐客户数据标签的后台管理能力,支持运营人员通过可视化方式按客户属性组合规则,生成可被其他业务模块引用的标签。
-
-# 二、需求列表
-
-## (一)后台
-
-入口:定制功能 → 汇丰银行 → 标签管理
-
-1.  标签列表
-    
-2.  新建标签
-    
-3.  编辑标签
-    
-4.  查看标签
-    
-5.  删除标签
-    
-6.  启用 / 停用标签
-    
-
-# 三、需求详述
-
-## (一)业务流程
-
-```mermaid
-flowchart TD
-    A[运营人员进入标签管理] --> B{操作类型}
-    B -->|新建/编辑| C[填写标签名称与描述]
-    C --> D[新增规则组]
-    D --> E[组内新增规则]
-    E --> E1[选择参数]
-    E1 --> E2{参数是否含历史月末值?}
-    E2 -->|是| E3[选择时间窗口与聚合方式]
-    E2 -->|否| E4[跳过]
-    E3 --> E5[选择运算符]
-    E4 --> E5
-    E5 --> E6[填写/选择比较值]
-    E6 --> F{继续新增规则?}
-    F -->|是| E
-    F -->|否| G[设置组内关系 且/或]
-    G --> H{继续新增规则组?}
-    H -->|是| D
-    H -->|否| J[保存标签]
-    J --> K[标签可在权益/活动配置中引用]
-    B -->|查看| L[只读展示规则]
-    B -->|删除| M{是否被业务引用?}
-    M -->|是| M1[阻止删除, 提示先解除引用]
-    M -->|否| M2[二次确认, 软删除]
-    B -->|启用/停用| N[状态切换, 实时生效]
-```
-
-## (二)后台
-
-菜单入口:liso 定制功能 → 汇丰银行 → 标签管理
-
-### 1\. 标签列表
-
-(1)筛选条件
-
-| **字段名称** | **字段类型** | **是否必填** | **说明** |
-| --- | --- | --- | --- |
-| 标签名称 | 文本输入框 | 否   | 模糊搜索 |
-| 标签 ID | 文本输入框 | 否   | 精确匹配 |
-| 状态  | 下拉选择 | 否   | 全部 / 启用 / 停用,默认"全部" |
-| 创建时间 | 日期范围 | 否   | 起止日期,格式 Y-m-d |
-| 创建人 | 文本输入框 | 否   | 模糊搜索创建人姓名/账号 |
-
-(2)操作按钮
-
--   查询:按筛选条件查询
-    
--   重置:清空筛选条件
-    
--   新建标签:打开【新建标签】页面
-    
-
-(3)列表字段
-
-| 字段名称 | **说明** |
-| --- | --- |
-| 操作  | • 查看:查看标签详情  <br>• 编辑:编辑标签  <br>• 删除:软删除该标签  <br>• 启用 / 停用:切换标签状态 |
-| 标签 ID | 系统生成,唯一,可复制 |
-| 标签名称 | 运营定义的名称 |
-| 标签描述 | 标签用途说明,超出省略 |
-| 规则摘要 | "规则组数 / 规则总数",如 `2 组 / 5 条` |
-| 状态  | 启用 / 停用 |
-| 创建人 / 创建时间 | 展示姓名与 Y-m-d H:i:s |
-| 最后更新人 / 更新时间 | 展示姓名与 Y-m-d H:i:s |
-| 引用数 | 该标签被权益、活动等引用的次数,点击可查看引用明细 |
-
-(4)分页
-
--   默认每页 20 条
-    
--   支持首页、上一页、下一页、末页、跳转至指定页
-    
-
-### 2\. 新建标签
-
-采用单页表单布局:**基础信息 + 规则配置**。
-
-2.1 基础信息
-
-| **字段名称** | **字段类型** | **是否必填** | **说明** |
-| --- | --- | --- | --- |
-| 标签名称 | 文本输入框 | 是   | 最长 40 字符,同一渠道下不可重复 |
-| 标签描述 | 文本域 | 否   | 最长 200 字符,便于识别标签用途 |
-| 状态  | 开关(Toggle) | 是   | 默认开启 |
-
-2.2 规则配置
-
-规则采用"规则组 + 规则"两级嵌套结构:
-
--   **规则组之间**:固定为 **且(AND)**
-    
--   **规则组内部**:可切换为 **且(AND)** 或 **或(OR)**
-    
-
-(1)规则组管理
-
--   **新增规则组**:页面右上角"+ 新增规则组"按钮;新建标签时默认已有 1 个空规则组
-    
--   **删除规则组**:每个规则组右上角提供删除按钮;至少保留 1 个规则组,最后一个不可删除
-    
--   **复制规则组**:复制当前组的全部规则到新规则组(含组内关系设置)
-    
-
-(2)规则管理(组内)
-
--   **新增规则**:规则组底部"+ 新增规则"按钮;新建规则组时默认已有 1 条空规则
-    
--   **删除规则**:每条规则末尾提供删除按钮;每组至少保留 1 条规则
-    
--   **组内关系**:规则组头部切换"且 / 或"
-    
-
-(3)单条规则配置
-
-每条规则包含四段输入:**参数 → 时间窗口(仅历史值参数) → 运算符 → 比较值**
-
-| **输入段** | **控件** | **说明** |
-| --- | --- | --- |
-| 参数  | 级联下拉 / 搜索下拉 | 按分组展示(客户基础 / 资产 / 尊尚与私行 / 跨境资格 / MGM / 投资偏好 / 行为触点),支持中文、参数名双向搜索。详见【附录 A:参数清单】 |
-| 时间窗口 | 动态下拉组合 | 仅当参数含"近 12 个月月末值"变体时展示:  <br>① **取值方式**:当前值 / 指定某月 / 近 N 个月(N=1-12)  <br>② **聚合方式**(取值方式为"近 N 个月"时):任一月满足 / 所有月满足 / 至少 M 个月满足 / 平均值 / 最大值 / 最小值(后三项仅数值类型支持) |
-| 运算符 | 下拉  | 根据参数类型动态展示可选项。详见【附录 B:运算符清单】 |
-| 比较值 | 动态控件 | 根据运算符类型切换输入控件:  <br>• 单值:文本 / 数字 / 日期选择器 / 布尔下拉(真/假)  <br>• 多值:多选下拉 或 以逗号分隔的批量输入  <br>• 区间:两个输入框或区间选择器  <br>• 为空 / 不为空:不需要输入 |
-
-**参数取值规则:**
-
--   参数类型为枚举(如私行权益标签、客户持有定存种类、资产大类明细等)时,运算符与比较值均使用枚举选择器,避免手工输入错误
-    
--   比较值输入需与参数类型一致:`BigDecimal` 仅允许数字;`YYYY-MM-DD` 仅允许日期;`Boolean` 使用"真/假"下拉选择
-    
-
-2.3 操作按钮
-
--   **取消**:若有未保存修改则二次确认"未保存内容将丢失,确认退出?";否则直接返回列表
-    
--   **保存**:校验必填项与规则完整性,通过后持久化;保存成功 toast "保存成功"并返回列表
-    
-
-### 3\. 编辑标签
-
--   入口:列表"编辑"按钮
-    
--   字段同【新建标签】,**标签 ID 不可编辑**
-    
--   若标签已被业务引用(引用数 > 0),保存时二次确认:"该标签已被 N 个权益/活动引用,修改后将影响其客群匹配,确认保存?"
-    
--   操作按钮:取消 / 保存(同新建)
-    
-
-### 4\. 查看标签
-
--   入口:列表"查看"按钮
-    
--   字段同【编辑标签】
-    
--   所有输入框、选择框、按钮(新增规则组 / 新增规则 / 删除)禁用
-    
--   仅展示【返回】按钮
-    
-
-### 5\. 删除标签
-
--   入口:列表"删除"按钮
-    
--   若 **引用数 > 0**:弹窗提示"该标签已被 N 个权益/活动引用,请先在对应业务中解除引用后再删除",**仅显示"我知道了"按钮**,阻止删除
-    
--   若 **引用数 = 0**:弹窗二次确认"确定要删除标签「XXX」吗?删除后无法恢复"
-    
-    -   **确定**:软删除(保留数据用于审计),列表不再展示
-        
-    -   **取消**:关闭弹窗
-        
-
-### 6\. 启用 / 停用
-
--   入口:列表"启用"/"停用"按钮
-    
--   **启用 → 停用**:弹窗二次确认"停用后,引用该标签的业务将视为该客群不命中,确认停用?"
-    
--   **停用 → 启用**:无需确认,直接切换
-    
--   状态变更实时生效
-    
-
-### 7\. 状态定义
-
-| 状态  | 说明  | 可执行操作 |
-| --- | --- | --- |
-| 启用  | 参与客户匹配,可被业务引用 | 查看 / 编辑 / 停用 / 删除(引用数=0 时) |
-| 停用  | 不参与匹配,引用方视为未命中 | 查看 / 编辑 / 启用 / 删除(引用数=0 时) |
-
-## (三)校验与异常
-
--   **标签名称**:必填、长度 ≤ 40、同渠道下唯一;重复时提示"标签名称已存在"
-    
--   **规则组**:至少 1 个;每组至少 1 条完整规则
-    
--   **规则完整性**:参数、运算符、比较值(除"为空/不为空"外)均不得为空
-    
--   **数值比较值**:须可解析为数字;"区间"运算符要求下限 ≤ 上限
-    
--   **日期比较值**:格式须与参数格式匹配(`YYYY-MM-DD` 或 `YYYY-MM`)
-    
--   **枚举比较值**:仅允许枚举内取值
-    
--   **时间窗口参数**:`近 N 个月`的 N 取值 1-12;`至少 M 个月`的 M 不得大于 N
-    
--   **并发编辑**:以保存时间戳为准,后保存覆盖先保存;列表展示最后更新人与时间,便于追溯
-    
--   **删除保护**:引用数 > 0 的标签不可删除
-    
--   **接口异常**:保存 / 预估接口异常时 toast 报错并保留当前输入,不清空表单
-    
-
-# 附录 A:参数清单
-
-> 所有参数仅在存在数据时返回;标签匹配时参数值为空则该条规则判为不匹配(除非运算符为"为空")。
-
-## A.1 客户基础与身份
-
-| 中文名 | 参数名 | 类型  | 历史值 | 说明 / 取值 |
-| --- | --- | --- | --- | --- |
-| 客户 MSC Group | mscGroup / mscGroupList | String / List | ✔   | 历史值:近 12 个月月末值 `[{"date":"2025-03","mscGroup":"xxx"}, ...]` |
-| 客户类型 MSC | mscCode / mscCodeList | String / List | ✔   | 历史值:近 12 个月月末值 `[{"date":"2025-03","mscCode":"xxx"}, ...]` |
-| Current MSC entry date | currentMscEntryDate | String (YYYY-MM-DD) | <br> | 当前 MSC 生效起始日期 |
-| 客户 MOB 值(含信用卡) | mob | String | <br> | 取值:0 / 1 / 2 / 3 / 4 / 5 / 6 / … |
-| First contact date | firstContactDate | String (YYYY-MM-DD) | <br> | <br> |
-| 开户时间 | openDate | String (YYYY-MM-DD) | <br> | <br> |
-| 城市  | city | String | <br> | <br> |
-| RM 类型 | rmType | String | <br> | <br> |
-| 客户姓名 | customerName | String | <br> | <br> |
-
-## A.2 资产与持有
-
-| 中文名 | 参数名 | 类型  | 历史值 | 说明 / 取值 |
-| --- | --- | --- | --- | --- |
-| End of day balance(所有资金含产品) | endOfBalance / endOfBalanceList | BigDecimal / List | ✔   | 历史值:近 12 个月月末值 `[{"date":"2025-03","endOfBalance":"xxx"}, ...]` |
-| TRB 值 - Avg TRB 口径(含家庭账户余额) | avgTrbIncludingHousehold / avgTrbIncludingHouseholdList | BigDecimal / List | ✔   | 历史值:近 12 个月月末值 |
-| TRB 值 - Avg TRB 口径(不含家庭账户余额) | avgTrbExcludingHousehold / avgTrbExcludingHouseholdList | BigDecimal / List | ✔   | 历史值:近 12 个月月末值 |
-| 资产大类明细 | assetCategoryDetails | String(多选) | <br> | 1-9 依次表示,多个英文逗号分隔:  <br>1 存款(定期 / 通知 / 个人大额存单)  <br>2 结构性存款(自有)  <br>3 基金相关产品(代客境外理财海外基金 / 代销内地证券投资基金 / 代销香港互认基金)  <br>4 理财产品(代销)  <br>5 代客境外理财海外债券型 / 结构性票据型(自有)  <br>6 资产管理计划(代销)  <br>7 信托计划(代销)  <br>8 保险产品(代销)  <br>9 预留 |
-| 客户持有定存种类 | fixedDepositTypes | String(多选) | <br> | 1-5 依次表示,多个英文逗号分隔:  <br>1 不持有定存  <br>2 持有普通定存(美金)  <br>3 持有普通定存(人民币)  <br>4 持有普通定存(其他币种)  <br>5 持有大额存单(人民币) |
-
-## A.3 尊尚 / 私行
-
-| 中文名 | 参数名 | 类型  | 历史值 | 说明 / 取值 |
-| --- | --- | --- | --- | --- |
-| 近 6 个月是否符合尊尚资格 | isQualifiedLast6Months | Boolean | <br> | <br> |
-| 私行权益标签 | privateBankTag | String | <br> | 取值:银辉 / 金曜 / 钻皓私人银行客户 |
-| 首次升级尊尚的时间 | firstUpgradePremierDate | String (YYYY-MM-DD) | <br> | <br> |
-| 私行 ID 卓越理财尊尚编号 | privateBankId | String | <br> | <br> |
-| 尊尚资格到期日 | premierValidityDate | String (YYYY-MM-DD) | <br> | <br> |
-| 首次达标日期 | firstAchievementDate | String (YYYY-MM) | <br> | <br> |
-| 首次升级为 PB 的日期 | firstPBUpgradeDate | String (YYYY-MM) | <br> | <br> |
-| PB 活动参与白名单 | isPbActivityWhitelisted | Boolean | <br> | <br> |
-
-## A.4 跨境资格(1+1)
-
-| 中文名 | 参数名 | 类型  | 历史值 | 说明  |
-| --- | --- | --- | --- | --- |
-| 是否为 1+1 CN-HK 双边客户 | isCrossBorderHK | Boolean | <br> | <br> |
-| 是否为 1+1 CN-SG 双边客户 | isCrossBorderSG | Boolean | <br> | <br> |
-| 是否为 HK qualifier | isHKQualifier | Boolean | <br> | <br> |
-| New to 1+1 CN-HK qualifier 时间 | cnHkQualifierDate | String (YYYY-MM) | <br> | <br> |
-| 是否为 SG qualifier | isSGQualifier | Boolean | <br> | <br> |
-| New to 1+1 CN-SG qualifier 时间 | cnSgQualifierDate | String (YYYY-MM) | <br> | <br> |
-
-## A.5 MGM / 推荐关系
-
-| 中文名 | 参数名 | 类型  | 历史值 | 说明  |
-| --- | --- | --- | --- | --- |
-| 某自然月成功推荐人数 | monthlySuccessfulReferrals | List | ✔   | 近 12 个月 `[{"date":"2025-03","successfulReferrals":"xxx"}, ...]` |
-| 某自然年成功推荐人数总数 | yearlySuccessfulReferrals | List | ✔   | 近 N 年 `[{"date":"2024","successfulReferrals":"xxx"}, ...]` |
-| 是否被成功推荐来开户且达标 | isReferredAndQualified | Boolean | <br> | <br> |
-| MGM case ID | mgmCaseId | String | <br> | <br> |
-| 某自然月推荐人数 | monthlyReferrals | List | ✔   | 近 12 个月 |
-| 某自然年推荐人数 | yearlyReferrals | List | ✔   | 近 N 年 |
-| 推荐关系 | referralRelation | List | <br> | `[{customerId:"xxx"}, ...]`;通过被推荐人客户号查询其数据 |
-
-## A.6 投资偏好
-
-| 中文名 | 参数名 | 类型  | 历史值 | 说明  |
-| --- | --- | --- | --- | --- |
-| 客户持有 valid RPQ 等级 | validRpq | String | <br> | 取值:0 / 1 / 2 / 3 / 4 / 5 / NA |
-| Prospects Needs | prospectsNeeds | Boolean | <br> | <br> |
-
-## A.7 行为与触点
-
-| 中文名 | 参数名 | 类型  | 历史值 | 说明  |
-| --- | --- | --- | --- | --- |
-| 是否关注 "汇丰中国客户服务" 微信服务号且绑定银行账户 | isHsbcWechatLinked | Boolean | <br> | <br> |
-| 上个自然月未登录、当前自然月登录过手机银行 1 天或以上 | isPrevMonthInactiveCurMonthActive | Boolean | <br> | <br> |
-| 从当前自然月起前序连续 2 个完整月是否登录手机银行 | isPrevTwoMonthsActive | Boolean | <br> | <br> |
-| 是否绑定 RM 企业微信 | isRmWeComBound | Boolean | <br> | <br> |
-| 是否首次使用 Face ID 或指纹登录手机银行 | firstBiometricLogin | Boolean | <br> | <br> |
-| 成功完成模拟资产配置的客户 | isSimulatedAllocationCompleted | Boolean | <br> | <br> |
-
-# 附录 B:运算符清单
-
-## B.1 String(字符串 / 枚举)
-
-| 运算符 | 适用说明 |
-| --- | --- |
-| 等于 / 不等于 | 单值精确匹配 |
-| 包含 / 不包含 | 子串匹配(仅自由文本类参数开放) |
-| 属于 / 不属于 | 多值集合,比较值为多选或逗号分隔 |
-| 为空 / 不为空 | 无需输入比较值 |
-
-## B.2 BigDecimal / Number(数值)
-
-| 运算符 | 适用说明 |
-| --- | --- |
-| \= / ≠ | 精确匹配 |
-| \>、≥、<、≤ | 单边比较 |
-| 区间  | `[下限, 上限]`,支持"含 / 不含端点"设置 |
-| 为空 / 不为空 | 无需输入比较值 |
-
-## B.3 Boolean(布尔)
-
-| 运算符 | 适用说明 |
-| --- | --- |
-| \= / ≠ | 比较值为 `真` / `假`(下拉选择);`= 假` 与 `≠ 真` 等价 |
-
-## B.4 Date(日期 YYYY-MM-DD / YYYY-MM)
-
-| 运算符 | 适用说明 |
-| --- | --- |
-| \= / ≠ | 精确日期匹配 |
-| \>、≥、<、≤ | 早于 / 晚于 |
-| 区间  | 起止日期 |
-| 相对当前 | N 日 / 月 / 年内;超过 N 日 / 月 / 年 |
-| 为空 / 不为空 | 无需输入比较值 |
-
-## B.5 List(近 N 月 / 近 N 年历史值)
-
-### B.5.1 数值型 List(如 endOfBalanceList、TRB List)
-
-先在"时间窗口"阶段聚合为单值,再套用 B.2 数值运算符:
-
--   **聚合方式**:任一月满足 / 所有月满足 / 至少 M 个月满足 / 平均值 / 最大值 / 最小值
-    
-
-### B.5.2 枚举 / 字符串型 List(如 mscGroupList、mscCodeList)
-
-在"时间窗口"阶段选择匹配策略:
-
--   任一月等于 X
-    
--   所有月等于 X
-    
--   至少 M 个月等于 X
-    
-
-### B.5.3 推荐关系 List(referralRelation)
-
--   列表长度(推荐人数)→ 套用 B.2 数值运算符
-    
--   是否包含指定客户号 → 精确匹配,比较值为客户号或客户号列表
-    
-
-### B.5.4 月度 / 年度推荐人数 List
-
--   可聚合后套用 B.2(同 B.5.1)
-    
--   也可指定月份 / 年份单点匹配
-    
-
-<br>

+ 0 - 2373
prd/汇丰银行/汇丰银行权益中台-FSD.md.bak

@@ -1,2373 +0,0 @@
-# 一、系统说明
-
-| 系统  | 说明  |
-| --- | --- |
-| 统一门户 | 汇丰银行内部员工使用的统一登录与入口管理平台,集成了用户管理、角色分配、系统管理等基础功能。所有后台系统的登录入口统一通过此门户。 |
-| CUPD / 新商城 | 权益管理后台系统,负责借记卡权益和信用卡权益的商品配置、审核流程、券码管理、发放计划等权益运营管理功能。 |
-| 统一资源管理后台 | 负责券码资源的导入批次管理、码库管理、券码发放与核销等资源管理功能。 |
-
-# 二、角色管理
-
-## 流程
-
-1.  使用管理员账号,登录【统一门户】
-    
-2.  点击“新商城外跳联登”,进入【商城】角色管理配置角色
-    
-3.  回到【统一门户】系统管理->用户管理->分配角色
-    
-
-## 1.角色管理
-
-入口:【统一门户】->【新商城外跳联登】
-
-![BlockNote image](../../.resources/image-1779242912664.png)
-
-### 1.1 角色列表
-
-展示全部已创建的【普通角色】类型的角色。
-
-![BlockNote image](../../.resources/image-1779242923866.png)
-
-### 1.2 添加/编辑角色
-
-![BlockNote image](../../.resources/image-1779242933886.png)
-
-点击【添加】可添加角色。
-
--   **角色名称:**可自定义角色名称
-    
--   **角色状态:**包含启用 / 不启用,启用时可登录,不启用时不可登录
-    
--   **菜单:**角色菜单权限,可选择到最后一级菜单
-    
--   **按钮权限:**选了最后一级菜单后,会展示对应页面的【按钮权限】,每个菜单的【按钮权限】都会在上线前配置完成。
-    
-
-![BlockNote image](../../.resources/image-1779242945672.png)
-
-### 1.3 分配角色
-
-进入【统一门户】-【用户管理】分配角色
-
-<br>
-
-<br>
-
-<br>
-
-<br>
-
-<br>
-
-<br>
-
-<br>
-
-<br>
-
-<br>
-
-<br>
-
-<br>
-
-<br>
-
-<br>
-
-<br>
-
-<br>
-
-<br>
-
-<br>
-
-<br>
-
-<br>
-
-<br>
-
-<br>
-
-<br>
-
-<br>
-
-<br>
-
-<br>
-
-<br>
-
-<br>
-
-<br>
-
-<br>
-
-<br>
-
-<br>
-
-<br>
-
-<br>
-
-<br>
-
-<br>
-
-<br>
-
-<br>
-
-<br>
-
-<br>
-
-<br>
-
-<br>
-
-<br>
-
-<br>
-
-<br>
-
-<br>
-
-<br>
-
-<br>
-
-<br>
-
-<br>
-
-<br>
-
-<br>
-
-<br>
-
-<br>
-
-<br>
-
-<br>
-
-![BlockNote image](../../.resources/image-1779243010146.png)![BlockNote image](../../.resources/image-1779243019476.png)
-
-## 2\. 用户登录
-
-登录页填写账号、密码即可登录。
-
-![BlockNote image](../../.resources/image-1779243033492.png)
-
-## 3\. 修改密码
-
-<br>
-
-<br>
-
-<br>
-
-<br>
-
-<br>
-
-<br>
-
-<br>
-
-<br>
-
-<br>
-
-<br>
-
-<br>
-
-<br>
-
-<br>
-
-<br>
-
-<br>
-
-<br>
-
-<br>
-
-<br>
-
-<br>
-
-<br>
-
-<br>
-
-<br>
-
-<br>
-
-<br>
-
-<br>
-
-<br>
-
-<br>
-
-<br>
-
-<br>
-
-<br>
-
-<br>
-
-<br>
-
-<br>
-
-<br>
-
-<br>
-
-<br>
-
-<br>
-
-<br>
-
-<br>
-
-<br>
-
-<br>
-
-<br>
-
-<br>
-
-<br>
-
-<br>
-
-<br>
-
-<br>
-
-<br>
-
-<br>
-
-<br>
-
-<br>
-
-<br>
-
-<br>
-
-<br>
-
-![](../../.resources/image-1779956055351.png)![](../../.resources/image-1779956082595.png)
-
-## 4\. 用户配置计划
-
--   一期:在CUPD中独立配置,我们会批量导入行内账号,可通过账号和密码登录,登录后修改密码。
-    
-
-![BlockNote image](../../.resources/image-1779243033492.png)
-
--   二期:接行内AD,然后和行内的用户匹配关联。
-    
-
-# 三、权益管理
-
-## 1\. 概述
-
-### 1.1 业务背景
-
-汇丰银行此前仅支持信用卡权益,本次升级新增**借记卡权益**,将权益范围拓展至全行用户,提升用户活跃度。
-
-### 1.2 权益分类
-
-按**是否权益平台兑换**分为两类:
-
-| 是否权益平台兑换 | 商品类型 | 说明  |
-| --- | --- | --- |
-| **是** | **券码** | 银行自己运营维护的权益商品 |
-| **是** | **微信立减金** | 由荣数侧统一提供的权益商品池,选择后自动回填名称、主图和库存 |
-| **否** | —   | 第三方合作商家权益(太古地产、龙腾、h5链接、小程序链接) |
-
-### 1.3 权益商品状态流转
-
--   **商品状态(**决定前台是否展示):`未上架` / `已上架`
-    
--   **审核状态(**决定后台审核工作流):`草稿` / `上架待审核` / `下架待审核` / `审核通过`
-    
-
-1.3.1 双状态组合矩阵
-
-| 商品状态 | 审核状态 | 业务含义 | 可执行操作 |
-| --- | --- | --- | --- |
-| 未上架 | 草稿  | 新建后未提审 | 查看、编辑、删除 |
-| 未上架 | 上架待审核 | 新建提审,等待审核,前台不可见 | 查看  |
-| 已上架 | 审核通过 | 正式上架中,前台可见 | 查看、下架、导入券码、券码管理、调整显示顺序、生成链接 |
-| 已上架 | 下架待审核 | 已上架但已发起下架,等待审核,前台可见 | 查看  |
-| 未上架 | 审核通过 | 已下架,前台不可见 | 查看、编辑、删除 |
-
-### 1.4 操作入口
-
-**Liso 后台 → 定制功能 → 汇丰银行 → 权益管理**,包含两个子菜单:
-
--   **借记卡权益**:权益商品完整增删改查、审核、券码管理、生成链接等
-    
--   **信用卡权益**:仅维护显示页面与展示顺序,权益从信用卡权益平台自动同步过来
-    
-
-* * *
-
-## 2\. 借记卡权益
-
-权限控制说明:数据权限按照【**一级分行**】隔离,相同一级分行可见,不同一级分行不可见。
-
-### 2.1 权益列表
-
-![BlockNote image](./screenshots/2-1-equity-products-list.png)
-
-**2.1.1 筛选条件**
-
-| 字段  | 类型  | 说明  |
-| --- | --- | --- |
-| 权益名称 | 文本输入 | 模糊匹配 |
-| 权益编号 | 文本输入 | 精准匹配(系统生成的 `Q` + 6 位序号,如 `Q000001`) |
-| 商品状态 | 下拉单选 | 选项:未上架 / 已上架;不选视为全部 |
-| 审核状态 | 下拉单选 | 选项:草稿 / 上架待审核 / 下架待审核 / 审核通过;不选视为全部 |
-
-**操作按钮**:
-
--   【查询】:按筛选条件查询
-    
--   【重置】:清空筛选条件
-    
--   【添加权益】:跳转至新增向导(位于查询条件下方,作为列表主操作按钮)
-    
-
-**2.1.2 列表字段**
-
-| 字段  | 说明  |
-| --- | --- |
-| 操作  | 行内主操作按钮 +「更多」下拉菜单按"商品状态 + 审核状态"显隐对应操作,详见 2.1.3 操作可见性矩阵 |
-| 权益名称 | 权益名称,超过一行时换行显示 |
-| 商品状态 | 使用色块 Tag 展示 可选值:未上架(灰)/ 已上架(绿) |
-| 审核状态 | 使用色块 Tag 展示 可选值:草稿(灰)/ 上架待审核(默认)/ 下架待审核(红)/ 审核通过(绿) |
-| 是否权益平台兑换 | 是 / 否,Tag 展示:是(绿)/ 否(灰) |
-| 商品类型 | 仅是否权益平台兑换 = 是时显示,可选值:券码 / 微信立减金;是否权益平台兑换 = 否时显示”-” |
-| 外部权益链接 | 仅是否权益平台兑换 = 否时显示,链接来源:太古地产 / 龙腾 / h5链接 / 小程序链接;是否权益平台兑换 = 是时显示”-” |
-| 是否有详情页 | 仅是否权益平台兑换 = 否时使用,标识跳转触发位:”有” = 用户进入权益详情页后再跳出;”没有” = 用户在首页/列表页/组装页点击后直接跳出;是否权益平台兑换 = 是时显示”-” |
-| 权益编号 | 系统生成,统一 `Q` + 6 位序号格式(如 `Q000001`),全局唯一 |
-| SKU编号 | 仅是否权益平台兑换 = 是时显示,由"选择权益"或券码配置自动回填;是否权益平台兑换 = 否时显示"-" |
-| 库存数 | 仅是否权益平台兑换 = 是时显示,整数,微信立减金由荣数商品池回填,券码由券码管理统计剩余数量;是否权益平台兑换 = 否时显示"-" |
-| 显示页面 | 使用 Tag 展示当前权益启用的展示位:开启"权益首页/列表页"时显示一个「权益首页/列表页」Tag;开启"组装页"时按所选组装页(组装页 A/B/C/D…)追加 Tag。两项均未开启时显示"-" |
-| 创建人 | 创建该权益的用户昵称 |
-| 创建时间 | Y-m-d H:i:s |
-| 审核人 | 最近一次审核操作的执行人昵称;未审核时为“-" |
-| 审核时间 | 最近一次审核操作的时间(Y-m-d H:i:s);未审核时为空 |
-
-**2.1.3 操作可见性矩阵**
-
-行内固定显示「查看」按钮,再按状态显示「编辑」/「下架」,最右侧为【更多】下拉菜单。状态命中规则如下:
-
-| 操作  | 显示条件 | 行为  |
-| --- | --- | --- |
-| 查看  | 所有状态 | 进入查看页,字段与编辑一致但所有输入态禁用,并展示操作日志 |
-| 编辑  | 商品状态 = `未上架` 且 审核状态 = `草稿` | 进入编辑向导继续完善草稿 |
-| 下架  | 商品状态 = `已上架` 且 审核状态 = `审核通过` | 二次确认弹窗("确定提交'XXX'的下架审核吗?审核通过后才会下架。")→ 确认后生成下架审核单,权益审核状态切到 `下架待审核` |
-| 更多 → 调整显示顺序 | 商品状态 = `已上架` | 弹出气泡:"调整到第 N 位",输入框默认值=当前位次,范围 1 ~ 当前列表总条数;提示文案"移动端权益首页和列表页按照该顺序展示";【确定】后列表局部刷新到目标位置 |
-| 更多 → 复制 | 所有状态 | 进入【添加权益】向导,自动回填源权益的基本信息、规则、显示页面等字段;保存时由系统生成新权益编号 |
-| 更多 → 生成链接 | 商品状态 = `已上架` | 弹出"生成借记卡权益链接"对话框,给出可分享的借记卡权益链接 |
-| 更多 → 导入券码 | 商品状态 = `已上架` 且 是否权益平台兑换 = `是` 且 商品类型 = `券码` | 新开页面跳转至统一资源管理后台的"新增导入批次"页面 |
-| 更多 → 券码管理 | 商品状态 = `已上架` 且 是否权益平台兑换 = `是` 且 商品类型 = `券码` | 新开页面跳转至统一资源管理后台的"码库管理"页面 |
-| 更多 → 删除 | 商品状态 = `未上架` 且 审核状态 ∈ { `草稿`, `审核通过` } | 二次确认弹窗("确定删除权益'XXX'吗?"),确认后从列表移除 |
-
-生成借记卡权益链接对话框:
-
-![BlockNote image](./screenshots/dialog-equity-link.png)
-
-**2.1.4 分页**
-
--   默认每页 10 条,可切换 10 / 20 / 50
-    
--   支持上一页、下一页、页码、跳转
-    
--   左下角展示 `Total N` 总条数
-    
-
-* * *
-
-### 2.2 添加权益
-
-![BlockNote image](./screenshots/2-2-equity-add-step1.png)
-
-权益添加采用**三步骤向导**:填写权益信息 → 设置规则 → 更多设置。
-
-步骤间通过页面底部的【上一步】/【下一步】导航,最后一步可【保存草稿】或【提交审核】。
-
-**复制场景**:列表「更多 → 复制」进入本向导后,自动回填源权益的基本信息、规则、显示页面等内容,权益编号留空(保存时由系统生成新编号),同时给出提示 `已复制「XXX」的内容,请确认后保存`。
-
-* * *
-
-2.2.1 第一步:填写权益信息
-
-第一步包含两个卡片:**基本信息**(始终显示)与 **详情信息**(按"是否权益平台兑换 / 是否有详情页"条件显示)。
-
-(1)基本信息
-
-页面顶部先选择**是否权益平台兑换**(必填,圆点单选,默认"是"):
-
--   是(默认)
-    
--   否
-    
-
-当是否权益平台兑换 = "是"时,下方展示**商品类型**(必填,圆点单选,默认"券码"):
-
--   券码(默认)
-    
--   微信立减金
-    
-
-不同组合展开不同字段:
-
-**A. 是否权益平台兑换 = 是,商品类型 = 券码**
-
-| 字段  | 必填  | 说明  |
-| --- | --- | --- |
-| 权益名称 | 是   | 最长 40 字符 |
-| 权益图标 | 是   | 上传 1 张,建议尺寸 80×80px。Tooltip:"展示在权益首页和权益列表页" |
-
-![BlockNote image](./screenshots/2-2-equity-add-step1.png)
-
-**B. 是否权益平台兑换 = 是,商品类型 = 微信立减金**
-
-| 字段  | 必填  | 说明  |
-| --- | --- | --- |
-| 选择权益 | 是   | 只读输入框 + 【选择】按钮。弹窗"选择微信立减金"中按商品名称模糊搜索,每页 10 条;选中后自动回填权益名称、商户名称、库存数、权益主图 |
-| 权益名称 | 是   | 最长 40 字符,由"选择权益"自动回填,仍可手动编辑 |
-| 库存数 | 是   | 整数,范围 0 ~ 100000,由"选择权益"自动回填,最大不超过库存上限 |
-| 权益图标 | 是   | 上传 1 张,建议尺寸 80×80px |
-
-<br>
-
-<br>
-
-<br>
-
-<br>
-
-<br>
-
-<br>
-
-<br>
-
-<br>
-
-<br>
-
-<br>
-
-<br>
-
-<br>
-
-<br>
-
-<br>
-
-<br>
-
-<br>
-
-<br>
-
-<br>
-
-<br>
-
-<br>
-
-<br>
-
-<br>
-
-<br>
-
-<br>
-
-<br>
-
-<br>
-
-<br>
-
-<br>
-
-<br>
-
-<br>
-
-<br>
-
-<br>
-
-<br>
-
-<br>
-
-<br>
-
-<br>
-
-<br>
-
-<br>
-
-<br>
-
-<br>
-
-<br>
-
-<br>
-
-<br>
-
-<br>
-
-<br>
-
-<br>
-
-<br>
-
-<br>
-
-<br>
-
-<br>
-
-<br>
-
-<br>
-
-<br>
-
-<br>
-
-<br>
-
-<br>
-
-![BlockNote image](./screenshots/2-2-equity-add-source-rongshu.png)![BlockNote image](./screenshots/dialog-rongshu-product.png)
-
-**C. 是否权益平台兑换 = 否**
-
-先选择"外部权益链接"与"是否有详情页"两个关键字段;
-
-当外部权益链接为 h5链接 / 小程序链接时还需补充对应地址:
-
-| 字段  | 必填  | 说明  |
-| --- | --- | --- |
-| 外部权益链接 | 是   | 下拉单选:太古地产 / 龙腾 / h5链接 / 小程序链接 |
-| h5链接 | 是   | 仅"外部权益链接 = h5链接"时显示,输入完整 URL |
-| 小程序appid | 是   | 仅"外部权益链接 = 小程序链接"时显示 |
-| 小程序页面地址 | 是   | 仅"外部权益链接 = 小程序链接"时显示 |
-| 是否有详情页 | 是   | 圆点单选:"没有" / "有"。Tooltip:"没有详情页时直接从首页/列表页/组装页跳转" |
-| 权益名称 | 是   | 最长 40 字符 |
-| 权益图标 | 是   | 上传 1 张,建议尺寸 80×80px |
-
-注:是否权益平台兑换 = 否时不显示"商品类型"与"库存数"字段。
-
-![BlockNote image](./screenshots/2-2-equity-add-third-detail.png)
-
-* * *
-
-(2)详情信息
-
-**显示条件**:是否权益平台兑换 = 是;或 是否权益平台兑换 = 否 **且** "是否有详情页 = 有"。
-
-当是否权益平台兑换 = 否 **且** "是否有详情页 = 没有"时,整个详情信息卡片不显示。
-
-| 字段  | 必填  | 说明  |
-| --- | --- | --- |
-| 权益主图 | 是   | 上传 1 张,建议尺寸 716×400px |
-| 权益介绍 | 是   | 多行文本,最长 500 字符,带字数实时提示 |
-| 权益有效期 | 是   | • 是否权益平台兑换 = 是:圆点单选「取自发放计划 / 自定义输入」,选"自定义输入"时下方出现文本框(最长 50 字符,带字数提示) • 是否权益平台兑换 = 否:直接输入文本框(最长 50 字符) |
-| 权益内容 | 是   | 富文本编辑器,需支持PDF上传,可自定义PDF链接文本 |
-| 权益说明 | 是   | 富文本编辑器,需支持PDF上传,可自定义链接文本 |
-| 下单成功短信 | 否   | **仅是否权益平台兑换 = 是时显示。** 开关 + 短信模板下拉。开启后选择已配置的短信模板,模板内容会在下方实时回显。模板支持占位符:`${productName}` 权益名称、`${expireDate}` 结束日期、`${exchangeNum}` 卡号、`${exchangePwd}` 卡密、`${qrCodeDownPaths}` 权益使用路径 |
-| 领取成功按钮 | 是   | 默认值"马上去使用",可修改 |
-
-2.2.2 第二步:设置规则
-
-![BlockNote image](../../.resources/image-1779247485788.png)
-
-第二步包含**展示规则**与**领取规则**两组开关,所有开关默认关闭,关闭时不做任何限制。
-
-(1)展示规则(控制权益在权益首页/列表中是否可见)
-
-| 字段  | 类型  | 说明  |
-| --- | --- | --- |
-| 展示时间限制 | 开关  | 开启后配置开始/结束时间(精确到秒) |
-| 展示客群限制 | 开关  | 开启后多选客群(示例选项:客群A / 客群B / 客群C),命中的用户才可见 |
-
-(2)领取规则(控制用户能否领取)
-
-| 字段  | 类型  | 说明  |
-| --- | --- | --- |
-| 领取时间限制 | 开关  | 开启后配置开始/结束时间(精确到秒)。 |
-| 领取客群限制 | 开关  | 开启后展开顶部提示卡:"**需在【发放计划】中选择权益发放,未发放的权益移动端不展示**"。 下方为**不满足提示**配置:  <br>  <br>• 提示内容(最长 200 字符) :默认“很抱歉,您暂不符合领取条件。”  <br>  <br>• 跳转按钮文案(最长 10 字符):默认“返回”  <br>  <br>• 跳转按钮链接(最长 200 字符):默认 权益首页链接 |
-
-注:**领取客群不再在权益处直接选定**,统一由【发放计划】维护"哪些客群可领"。本开关仅用于配置"不满足时的提示与跳转链接"。
-
-* * *
-
-2.2.3 第三步:更多设置
-
-第三步包含**显示页面**与**分享设置**两组配置。
-
-(1)显示页面(控制权益在移动端哪些页面展示)
-
-![BlockNote image](./screenshots/2-2-equity-add-step3.png)
-
-| 字段  | 类型  | 说明  |
-| --- | --- | --- |
-| 权益首页/列表页 | 圆点单选 | 显示 / 不显示,默认"显示" |
-| 组装页 | 圆点单选 + 多选 | 显示 / 不显示,默认"不显示"。选"显示"时下方展开多选框,可选组装页 A / B / C / D… |
-
-(2)分享设置
-
-| 字段  | 类型  | 说明  |
-| --- | --- | --- |
-| 是否支持分享 | 开关  | 默认关闭。开启后展开下列字段: |
-| · 分享名称 | 必填  | 最长 40 字符。开关由关→开时,若分享名称为空则自动回填当前的"权益名称" |
-| · 分享图片 | 必填  | 上传 1 张 |
-
-* * *
-
-2.2.4 操作按钮
-
-页面底部固定操作栏,按当前步骤显隐。
-
-校验集中在【提交审核】时执行;
-
-【保存草稿】仅校验"权益名称"非空,【上一步】/【下一步】不做任何校验。
-
-| 按钮  | 显示条件 | 行为  |
-| --- | --- | --- |
-| 上一步 | 当前步骤 > 1 | 回到上一个步骤 |
-| 下一步 | 当前步骤 < 3 | 进入下一个步骤 |
-| 取消  | 始终显示 | 直接返回权益列表,不做提示 |
-| 保存草稿 | 始终显示 | 校验"权益名称"非空后,落地一条记录:商品状态 = `未上架`、审核状态 = `草稿`。后续可在列表点击「编辑」继续完善 |
-| 提交审核 | 当前步骤 = 3(仅第三步显示) | 校验必填后,创建记录:商品状态 = `未上架`、审核状态 = `上架待审核`。审核通过后切换为"已上架 + 审核通过",新创建的商品默认排在列表第一位 |
-
-* * *
-
-### 2.3 编辑权益
-
-![BlockNote image](./screenshots/2-3-equity-edit.png)
-
-**入口与可见性**:权益列表行【操作】→【编辑】。【编辑】按钮仅在 **商品状态 =** `未上架` 时显示,其他状态下该按钮不出现。
-
-**页面结构**:与"添加权益"的三步骤向导完全一致(填写权益信息 → 设置规则 → 更多设置),表单字段、显示条件、规则提示文案、分享设置、显示页面等全部相同。
-
-**数据加载**:进入页面时按权益编号请求详情接口,回填权益数据,并同步当前的"商品状态/审核状态"用于按钮显隐。
-
-**字段编辑约束**:
-
--   **是否权益平台兑换** 不可编辑(圆点单选禁用),保持创建时选定的值;其余字段(含是否权益平台兑换 = 否时的"外部权益链接 / 是否有详情页"、商品类型)均可正常编辑
-    
-
-**操作按钮**:
-
-| 按钮  | 显示条件 | 行为  |
-| --- | --- | --- |
-| 上一步 | 当前步骤 > 1 | 回到上一个步骤 |
-| 下一步 | 当前步骤 < 3 | 进入下一个步骤 |
-| 取消  | 始终显示 | 直接返回权益列表 |
-| 保存草稿 | 审核状态 = `草稿` | 不做完整校验,覆盖原记录并保持 `未上架 + 草稿` |
-| 提交审核 | 当前步骤 = 3 | 弹出文本框 `提交后将进入审核流程,期间不可再编辑。请填写提交说明(可选)`,确认后落地为 `未上架 + 上架待审核` 并生成新的审核单 |
-
-* * *
-
-### 2.4 查看权益
-
-**入口与可见性**:权益列表行【操作】→【查看】,按钮在所有状态下均显示。
-
-**页面结构**:复用"添加权益"三步骤向导布局(填写权益信息 → 设置规则 → 更多设置),所有输入框、单选 / 复选、上传、富文本、开关等控件均处于**禁用态**,仅作信息展示。
-
-**操作日志卡片**:下方追加"操作日志"表格,按操作时间倒序展示:
-
-| 列   | 说明  |
-| --- | --- |
-| 操作人 | 触发该次操作的用户名 |
-| 操作日期 | Y-m-d H:i:s |
-| 操作  | Tag 形式展示:`创建`/ `审核`/ `下架`等 |
-
-**操作按钮**(页面底部,按当前步骤显隐):
-
-| 按钮  | 显示条件 | 行为  |
-| --- | --- | --- |
-| 上一步 | 当前步骤 > 1 | 回到上一个步骤 |
-| 下一步 | 当前步骤 < 3 | 进入下一个步骤 |
-| 返回  | 当前步骤 = 3 | 返回权益列表 |
-| 下架  | 当前步骤 = 3 且 商品状态 = `已上架` 且 审核状态 = `审核通过` | 二次确认后提交下架审核(交互同 §2.6) |
-
-![BlockNote image](./screenshots/2-4-equity-view.png)
-
-* * *
-
-### 2.5 下架权益
-
-![BlockNote image](./screenshots/dialog-offshelf-confirm.png)
-
-**入口与可见性**:商品状态 = `已上架` 且 审核状态 = `审核通过` 时显示【下架】按钮
-
-权益列表行【操作】列 →【下架】
-
-**操作流程**:
-
-1.  点击【下架】,弹出二次确认弹窗:`确定提交"XXX"的下架审核吗?审核通过后才会下架。`(类型:warning)
-    
-2.  按钮:
-    
-
-| 按钮  | 行为  |
-| --- | --- |
-| 提交  | 调用下架接口,生成一条**下架审核单**:审核状态切到 `下架待审核`,商品状态保持 `已上架`(线上仍可见);提示"已提交下架审核"。审核通过后切换为"未上架 + 审核通过",前台不再展示且无法兑换下单 |
-| 取消  | 关闭弹窗,状态不变 |
-
-* * *
-
-### 2.6 调整显示顺序
-
-![BlockNote image](./screenshots/popover-adjust-order.png)
-
-**入口与可见性**:列表行【操作】→【更多】→【调整显示顺序】。仅商品状态 = `已上架` 时可操作。
-
-**交互**:
-
--   点击后弹出小气泡(卡片样式),顶部为标题"调整显示顺序"
-    
--   提示文案:"移动端权益首页和列表页按照该顺序展示"
-    
--   输入:`调整到第 [ N ] 位`,N 默认值 = 当前所在行号,校验范围 `1 ~ 当前列表总条数`
-    
--   按钮:
-    
-    -   【取消】:关闭气泡
-        
-    -   【确定】:校验 N 有效后将当前行移动至目标位置,列表局部刷新并提示"顺序已调整";若输入无效则提示"请输入有效的顺序位置"
-        
-
-### 2.7 删除
-
-![BlockNote image](./screenshots/dialog-delete-confirm.png)
-
-**入口与可见性**:列表行【操作】→【更多】→【删除】。
-
-【删除】仅在 **商品状态 =** `未上架` **且 审核状态 ∈ {** `草稿`**,** `审核通过`**(即历史下架) }** 时显示,其他状态下不出现。
-
-**交互**:弹出二次确认弹窗 `确定删除权益"XXX"吗?`(类型:warning),按钮:
-
-| 按钮  | 行为  |
-| --- | --- |
-| 删除  | 调用删除接口,列表移除该记录并提示"删除成功" |
-| 取消  | 关闭弹窗,状态不变 |
-
-### 2.8 权益测试说明
-
-1.  创建白名单人群
-    
-2.  创建权益
-    
-3.  在发放计划中选择权益进行发放
-    
-
-* * *
-
-## 3\. 信用卡权益
-
-![BlockNote image](./screenshots/3-credit-card-equity-list.png)
-
-信用卡权益由信用卡权益平台统一维护,仅维护「显示页面」「显示顺序」以及「生成链接」三项轻量操作。
-
-### 3.1 列表入口
-
-**Liso 后台 → 定制功能 → 汇丰银行 → 信用卡权益**
-
-### 3.2 筛选条件
-
-| 字段  | 类型  | 说明  |
-| --- | --- | --- |
-| 权益名称 | 文本输入 | 模糊匹配 |
-
-**操作按钮**:
-
--   【查询】:根据筛选条件查询
-    
--   【重置】:清空筛选条件
-    
-
-### 3.3 列表字段
-
-| 字段  | 说明  |
-| --- | --- |
-| 操作  | 行内"调整显示顺序"、"设置显示页面"两个文字按钮,最右侧为【更多】下拉菜单;详见 3.4 操作 |
-| 权益名称 | 权益名称,来源于营销系统,超过一行换行显示 |
-| 显示页面 | 使用 Tag 展示当前权益启用的展示位:开启"权益首页/列表页"时显示一枚「权益首页/列表页」Tag;开启"组装页"时按所选组装页(组装页 A/B/C/D…)追加 Tag。两项均未开启时显示"-" |
-
-### 3.4 操作
-
-![BlockNote image](./screenshots/dialog-show-pages.png)
-
-| 操作  | 显示条件 | 行为  |
-| --- | --- | --- |
-| 调整显示顺序 | 商品状态 = `已上架` | 行内文字按钮。点击后弹气泡,交互、提示文案、校验范围与按钮均与 §2.7 一致 |
-| 设置显示页面 | 任意状态 | 行内文字按钮。点击后弹出"设置显示页面"对话框,与添加权益第三步「显示页面」字段一致: • **权益首页/列表页**:圆点单选 显示 / 不显示 • **组装页**:圆点单选 显示 / 不显示,选"显示"时下方多选组装页 A/B/C/D 底部按钮【取消】/【确定】。点击【确定】后立即生效,列表"显示页面"列以 Tag 形式回显,并提示"显示页面已更新" |
-| 更多 → 生成链接 | 商品状态 = `已上架` | 弹出"生成信用卡权益链接"对话框,给出对应 `equity/credit?id=<权益编号>` 形式的可分享链接 |
-
-### 3.5 分页
-
--   默认每页 10 条,可切换 10 / 20 / 50
-    
--   支持上一页、下一页、页码、跳转
-    
--   左下角展示 `Total N` 总条数
-    
-
-* * *
-
-## 4\. 券码管理
-
-**适用范围**:仅对**是否权益平台兑换 = 是**且**商品类型 = 券码**的权益开放。**操作入口**:借记卡权益列表 → 行【操作】→【更多】→【券码管理】点击后跳转至统一资源管理后台现有【码库管理】模块,默认填充商品编号。
-
-### 4.1 批次列表字段
-
-![BlockNote image](../../.resources/image-1779247856014.png)
-
-| 字段  | 说明  |
-| --- | --- |
-| 导入数量 | Excel 文件中的券码总数 |
-| 实际导入数量 | 去重、格式校验后成功入库的券码数 |
-| 导入失败数量 | 未通过校验的券码数。> 0 时,操作列展示**【导出失败券码】** |
-| 券码剩余数量 | 未发放 + 未回收的券码数。> 0 时,操作列展示**【回收】** |
-| 生效时间 | Y-m-d H:i:s |
-| 过期时间 | Y-m-d H:i:s |
-| 停止发放时间 | Y-m-d H:i:s。达到此时间后该批次不再对外发放 |
-| 文件处理状态 | 处理中 / 处理成功 / 处理失败,Tag 形式展示 |
-| 导入时间 | 文件提交时间 |
-| 创建人 | 上传文件的操作员 |
-
-### 4.2 新增券码批次
-
-![BlockNote image](../../.resources/image-1779247865752.png)
-
-点击列表上方【新增券码批次】按钮,显示页面:
-
-| 字段  | 必填  | 说明  |
-| --- | --- | --- |
-| **导入方式** | 是   | 选择【新增采购导入】 |
-| **SKU商品和商户简称** | 是   | 跳转后自动选择 |
-| **生效时间** | 是   | Y-m-d H:i:s |
-| **过期时间** | 是   | Y-m-d H:i:s |
-| **停止发放时间** | 是   | Y-m-d H:i:s |
-| **券码文件** | 是   | 支持 .xlsx / .csv,单文件上传。配套提供【模板下载】链接 |
-
-**操作按钮**:【取消】关闭页面;【确定】提交,后台异步处理,列表新增一条批次记录(文件处理状态初始为【处理中】)。
-
-### 4.3 编辑批次
-
-**操作入口**:批次行【操作】→【编辑】仅可修改三个时间字段:生效时间、过期时间、停止发放时间。**操作按钮**:【取消】关闭;【确定】保存。
-
-![BlockNote image](../../.resources/image-1779247877545.png)
-
-### 4.4 回收
-
-![BlockNote image](../../.resources/image-1779247893182.png)
-
-**展示条件**:批次"券码剩余数量 > 0"时显示【回收】按钮。**交互**:弹出对话框,先选择**回收类型**(单选三选一):
-
-| 回收类型 | 说明  |
-| --- | --- |
-| 未发放券码回收 | 回收尚未发放给用户的券码 |
-| 已过期券码回收 | 回收已过期但尚未清理的券码 |
-| 导错码券码回收 | 回收因导入错误而入库的券码 |
-
-**回收数量**:输入框输入整数,校验范围 1 ~ 当前类型最大可回收数(页面动态提示"本批次 XXX 最多可回收数量:N")。**操作按钮**:【取消】关闭;【提交】执行回收,列表"券码剩余数量"对应减少。
-
-### 4.5 导出失败券码
-
-**展示条件**:批次"导入失败数量 > 0"时显示【导出失败券码】按钮。**交互**:直接下载该批次的失败明细文件,便于运营修正后重新导入。
-
-## 5\. 与移动端的关联
-
--   移动端权益列表的可见范围 = 借记卡权益(已上架)∩ 展示规则命中
-    
--   移动端"显示位置"由后台【设置显示页面】决定(首页 / 组装页)
-    
--   移动端"展示顺序"由后台【调整显示顺序】决定
-    
--   是否权益平台兑换 = 否时的"是否有详情页"决定用户在 App 列表层级还是详情层级跳出("没有" = 首页/列表页直接跳出;"有" = 进入权益详情页后再跳出)
-    
--   微信立减金在单独的微信立减金列表展示,统一通过"我的立减金"入口领用
-    
-
-## 6\. 权益审核
-
-### 6.1 入口
-
-**Liso 后台 → 定制功能 → 汇丰银行 → 权益审核**,作为权益模块下的独立子菜单,集中处理借记卡权益所有审核单(上架 / 下架)。
-
-### 6.2 列表页
-
-> 按照角色的一级分行隔离,管理员角色类型可以看到全部,普通角色类型只能查看同一级分行的用户创建的数据。
-
-![BlockNote image](./screenshots/6-audit-list.png)
-
-按审核状态分为三个 Tab,切换 Tab 时重新加载列表:
-
-| Tab | 含义  | 操作列按钮 |
-| --- | --- | --- |
-| 待审核 | 审核状态 = `上架待审核` / `下架待审核` 的审核单 | 审批  |
-| 审核通过 | 历史审核通过的记录 | 查看  |
-| 审核驳回 | 历史审核驳回的记录 | 查看  |
-
-**筛选条件**:
-
-| 字段  | 类型  | 说明  |
-| --- | --- | --- |
-| 权益名称 | 文本输入 | 模糊匹配 |
-| 权益编号 | 文本输入 | 精确匹配 |
-
-**操作按钮**:
-
--   【查询】:根据筛选条件查询
-    
--   【重置】:清空筛选条件
-    
-
-**列表字段**:
-
-| 字段  | 说明  |
-| --- | --- |
-| 操作  | 待审核 Tab 显示【审批】;审核通过 / 驳回 Tab 显示【查看】 |
-| 权益名称 | 过长时省略号 + 悬浮 tooltip 展示 |
-| 权益编号 | 系统生成的 `Q` + 6 位序号 |
-| 审核类型 | Tag 展示,可选值:`上架`(绿)/ `下架`(红) |
-| 业务模块 | 当前固定为"借记卡权益" |
-| 提交人 | 审核单提交人姓名 |
-| 提交时间 | Y-m-d H:i:s |
-| 审核人 | 审核人姓名;未审核时显示"-" |
-| 审核时间 | Y-m-d H:i:s;未审核时显示"-" |
-
-**分页**:默认每页 10 条,可切换 10 / 20 / 50;支持上一页、下一页、页码、跳转;左下角展示 `Total N` 总条数。
-
-### 6.3 审核详情
-
-点击行内【审批】/【查看】进入审核详情页。
-
-**页面结构**:三步骤步骤条 —— `权益信息 → 设置规则 → 更多设置`,全部控件 disabled,按"添加权益"的同款向导只读展示提交时的快照内容:
-
--   **步骤 1 权益信息**:基本信息(是否权益平台兑换、商品类型 / 外部权益链接 / 是否有详情页、权益名称、SIP 商品编号、商户名称、权益图标);详情信息(权益主图、权益介绍、权益有效期、权益内容、权益说明、领取成功按钮)。详情信息卡片显示条件同 §2.2.1(是否权益平台兑换 = 是;或否 + 有详情页)
-    
--   **步骤 2 设置规则**:展示规则(展示时间限制、展示客群限制)+ 领取规则(领取时间限制、领取客群限制)开关 + 已配置内容只读回显
-    
--   **步骤 3 更多设置**:显示页面(权益首页/列表页、组装页 + 组装页列表)+ 分享设置(开关回显)
-    
-
-**底部操作按钮**(按当前步骤与审核类型显隐):
-
-| 按钮  | 显示条件 | 行为  |
-| --- | --- | --- |
-| 上一步 | 当前步骤 > 1 | 回到上一个步骤 |
-| 下一步 | 当前步骤 < 3 | 进入下一个步骤 |
-| 返回  | 始终显示 | 返回审核列表 |
-| 通过  | 审核状态 = `待审核` 时显示。**新增类型须当前步骤 = 3 才显示**;下架类型不限制步骤 | 二次确认弹窗 `确定通过该审核单吗?`(按钮 通过/取消) → 提示 `审核通过`,返回审核列表 |
-| 驳回  | 显示条件同【通过】 | 二次确认弹窗 `确定驳回该审核单吗?`(按钮 驳回/取消) → 提示 `已驳回`,返回审核列表 |
-
-### 6.4 状态联动
-
--   **审核通过**:
-    
-    -   上架审核 → 权益主表 `商品状态 = 已上架`、`审核状态 = 审核通过`
-        
-    -   下架审核 → 权益主表 `商品状态 = 未上架`、`审核状态 = 审核通过`(等价于历史下架)
-        
--   **审核驳回**:
-    
-    -   新增上架审核 → 权益主表 `商品状态` 保持 `未上架`、`审核状态` 回退到 `草稿`,可在借记卡权益列表点击【编辑】继续完善后重新提交
-        
-    -   下架审核 → 权益主表 `商品状态` 保持 `已上架`、`审核状态` 回退到 `审核通过`,权益继续正常在线
-        
--   同一权益**同时只能存在 1 条进行中的审核单**
-    
-
-# 四、人群管理
-
-## 1\. 模块概述
-
-人群管理由两个独立列表构成:**客群任务管理**与**规则组管理**。
-
--   **客群任务管理**:维护"对客群体"。任务有两种类型
-    
-    -   ① **规则组圈选**(通过规则组运行 `count / sample / fulllist` 三阶段流程产出客户名单)
-        
-    -   ② **指定客户号**(由运营人员直接维护一份固定的客户号清单)。每个任务由「客群编号」唯一标识,"客群编号 + 名称"在后续【发放计划】、权益领取限制等场景被引用
-        
--   **规则组管理**:维护可复用的"规则集合"。规则组由一组元规则按"且 / 或"逻辑组合形成,配置完成并审核通过后才可被客群任务(规则组圈选类型)引用
-    
--   **审核**:涉及新建、编辑、停止任务等行为均需另一账号审核后才生效(demo 中默认通过)
-    
--   **三层逻辑结构**:客群任务 → 规则组 → 元规则。高维可对低维设置「且 / 或」组合,例如:`(A 且 B) 且 (C) 且 (D 或 E 或 F)`
-    
-
-* * *
-
-## 2\. 客群任务管理
-
-2.1 列表页
-
-![BlockNote image](./screenshots/crowd-task-list.png)
-
-**入口**:Liso 后台 → 定制功能 → 汇丰银行 → 客群任务管理。
-
-**头部按钮**:
-
-| 按钮  | 说明  |
-| --- | --- |
-| 新增任务 | 下拉菜单,二选一: • **规则组圈选**:跳转至 `crowd-tasks/add` 走两步骤新建向导 • **指定客户号**:跳转至 `crowd-name-lists/add` 走两步骤新建向导 |
-
-**筛选条件**:
-
-| 字段  | 类型  | 说明  |
-| --- | --- | --- |
-| 客群编号 | 文本输入 | 模糊匹配 |
-| 客群名称 | 文本输入 | 模糊匹配 |
-| 类型  | 下拉单选 | 选项:全部 / 规则组圈选 / 指定客户号 |
-
-操作按钮:【查询】【重置】。
-
-**列表字段**:
-
-| 字段  | 说明  |
-| --- | --- |
-| 操作  | 行内按钮,按"类型 + 状态"显隐,详见 §2.4 操作可见性矩阵 |
-| 客群编号 | 系统生成,全局唯一 |
-| 客群名称 | 超过一行,换行显示 |
-| 类型  | Tag 形式展示,可选值:`规则组圈选` / `指定客户号` |
-| 状态  | Tag 形式展示。规则组圈选状态:`新建` / `校验` / `上线` / `已停止`;指定客户号状态:`新建` / `已生效` / `已停止` |
-| 人数  | **仅"指定客户号"任务展示**,规则组圈选类型该列显示"-" |
-| 创建人 | 任务创建人 |
-| 审核人 | 最近一次审核执行人;未审核时为空 |
-| 任务创建时间 | Y-m-d H:i:s |
-| 任务开始日期 / 任务结束日期 | **仅"规则组圈选"任务展示**,指定客户号类型显示"-" |
-| 更新时间 | 最近一次更新时间 |
-
-**分页**:默认每页 10 条,可切换 10 / 20 / 50。
-
-* * *
-
-2.2 新增任务
-
-2.2.1 规则组圈选
-
-![BlockNote image](./screenshots/crowd-task-add-step1.png)
-
-**入口**:列表头部「新增任务 → 规则组圈选」。两步骤向导:
-
-**第一步:基本信息**
-
-| 字段  | 必填  | 说明  |
-| --- | --- | --- |
-| 客群名称 | 是   | 文本,最长 40 字符,带字数提示 |
-| 客群编号 | —   | 只读,系统自动生成,保证唯一 |
-| 客群描述 | 是   | 多行文本,最长 200 字符 |
-| 客群任务开始日期 | 是   | 日期选择 |
-| 客群任务结束日期 | 是   | 日期选择,不可早于开始日期 |
-
-**第二步:规则组信息**
-
-| 字段  | 必填  | 说明  |
-| --- | --- | --- |
-| 规则组间运算逻辑 | 是   | 下拉单选:`AND(且)` / `OR(或)` |
-| 规则组表格 | —   | 列:规则组编号 / 规则组名称 / 规则组描述 / 组内逻辑 / 规则个数;行内操作:删除 |
-| 【添加规则组】按钮 | —   | 弹窗选择已上线的规则组,支持按规则组编号、名称模糊搜索 |
-
-**底部按钮**:
-
-| 按钮  | 显示条件 | 行为  |
-| --- | --- | --- |
-| 取消  | 步骤 = 1 | 返回客群任务列表 |
-| 下一步 | 步骤 = 1 | 进入第二步 |
-| 上一步 | 步骤 = 2 | 返回第一步 |
-| 完成  | 步骤 = 2 | 校验后提交,落地为 `新建` 状态,需审核通过后才能进入运行流程 |
-
-2.2.2 指定客户号
-
-![BlockNote image](./screenshots/crowd-name-list-add-step1.png)
-
-**入口**:列表头部「新增任务 → 指定客户号」。两步骤向导:
-
-**第一步:基本信息**
-
-| 字段  | 必填  | 说明  |
-| --- | --- | --- |
-| 客群名称 | 是   | 文本,最长 40 字符 |
-| 客群编号 | —   | 只读,系统自动生成 |
-| 客群描述 | 是   | 多行文本,最长 200 字符 |
-
-**第二步:初始人员**(仅新增时显示,编辑时跳过)
-
-输入模式按钮组切换:
-
-| 输入模式 | 说明  |
-| --- | --- |
-| 手动输入 | 多行 textarea,每行一个客户号(示例占位符:"00001 / 00002 / 00003") |
-| 上传文件 | 拖拽或点击上传 `.txt` / `.csv`,UTF-8 编码,每行一个客户号;解析成功后展示已选文件名 + 提示 `已识别 N 个有效客户号` |
-
-**校验**:至少添加 1 个有效客户号,否则不可完成。
-
-**底部按钮**:取消 / 上一步 / 下一步 / 完成(按步骤显隐,规则同 2.2.1)。
-
-* * *
-
-2.3 编辑 / 复制 / 启用
-
--   **编辑(规则组圈选)**:允许编辑全部字段;编辑过程中若任务当前状态为 `校验`,保存后会回退至 `新建`,并重置 count / sample / fulllist 三段运行信息。
-    
--   **复制(规则组圈选)**:默认继承源任务的基本信息与规则组信息,状态为 `新建`,客群编号留空,由系统在保存时生成新的唯一编号。
-    
--   **编辑(指定客户号)**:仅可修改基本信息(客群名称 / 描述),不再展示"初始人员"步骤。已停止名单不可编辑。
-    
--   **启用(指定客户号)**:仅 `新建` 状态的指定客户号任务行内有【启用】按钮,点击后切换为 `已生效`。
-    
-
-* * *
-
-2.4 操作可见性矩阵
-
-任务行的操作按状态 + 类型动态展示:
-
-**A. 规则组圈选**
-
-| 状态  | 可执行操作 |
-| --- | --- |
-| 新建 (`draft`) | 编辑 / 运行 / 停止 / 详情 / 复制 |
-| 校验 (`verifying`) | 编辑 / 上线 / 停止 / 详情 / 复制 |
-| 上线 (`online`) | 停止 / 详情 / 复制(编辑仅限基本信息) |
-| 已停止 (`stopped`) | 详情 / 复制 |
-
-各动作含义:
-
-| 操作  | 说明  |
-| --- | --- |
-| 运行  | 上送 count + sample 至行内,状态从 `新建` 流转至 `校验`;运行期间显示"正在运行"且按钮不可点 |
-| 上线  | 上送 fulllist 至行内,状态从 `校验` 流转至 `上线`;该动作需审核 |
-| 停止  | 状态切到 `已停止`,**不可逆**;该动作需审核 |
-| 编辑  | 重新编辑基本信息与规则组;编辑后审核通过,状态回到 `新建` 并清空 count / sample / fulllist |
-| 复制  | 进入新建向导,自动回填源任务的基本信息与规则组,权益编号留空(保存时由系统生成新编号) |
-| 详情  | 跳转至详情页(§2.5) |
-
-**B. 指定客户号**
-
-| 状态  | 可执行操作 |
-| --- | --- |
-| 新建 (`draft`) | 启用 / 编辑 / 人员调整 / 上传调整文件 / 停止 |
-| 已生效 (`active`) | 编辑 / 人员调整 / 上传调整文件 / 停止 |
-| 已停止 (`stopped`) | 无可执行操作(仅展示) |
-
-* * *
-
-2.5 任务详情
-
-![BlockNote image](./screenshots/crowd-task-view.png)
-
-**入口**:列表行内【详情】。
-
-页面分为三块:
-
-**(1)基本信息**:客群名称 / 客群编号 / 状态 Tag / 客群描述 / 任务开始日期 / 任务结束日期 / 任务创建时间 / 任务创建用户 / 审核人 / 最近更新时间。
-
-**(2)规则组信息**:
-
--   规则组间逻辑:Tag 展示 `AND(且)` / `OR(或)`
-    
--   规则组明细表:规则组编号 / 规则组名称 / 规则组描述 / 组内逻辑 / 规则个数(只读)
-    
-
-**(3)运行信息**(黄色背景卡片):
-
-| 阶段  | 显示形态 |
-| --- | --- |
-| 总数 (count) | "未运行" / "正在运行"(灰)/ 具体数字 |
-| 校验 (sample) | "详情"链接(可点击打开弹窗查看 sample 数据)/ "正在运行"(灰)/ "未运行"(灰);右侧附【重新校验】按钮,仅当任务状态允许重跑时可点。重新校验仅重跑 count + sample,不影响 fulllist |
-| 全量圈客 (fulllist) | "未运行"(红)/ "正在运行"(灰)/ "已完成"(绿) |
-
-**sample 抽样规则**(行内返回):小于30000,取5个、30000到50000,取8个、50000到150000,取12个、150000以上,取15个,sample从行内数据库随机抽取,若结果不足5个则全部返回为sample。
-
-**底部按钮**:返回。
-
-* * *
-
-2.6 人员调整 / 上传调整文件(指定客户号专属)
-
-**人员调整(行级)**
-
-点击列表行的【人员调整】按钮唤起弹窗:
-
--   客群编号自动绑定为该行 ID,不可改
-    
--   输入字段:客户号 + 调整方向(`A` = 调增;`D` = 调减)
-    
--   已停止名单不可调整
-    
-
-**上传调整文件(行级)**
-
-点击列表行的【上传调整文件】按钮唤起弹窗:
-
--   顶部展示目标客群(`<编号>-<名称>`),由所在行隐式绑定
-    
--   文件格式(两段,使用 `|+|` 分隔):
-    
-
-```Plain
-客户号|+|调整方向
-00001|+|A
-00002|+|D
-```
-
--   解析后展示预览表(行号 / 客户号 / 调整方向 / 状态),无效行单独标红
-    
--   客群编号无需写入文件;行内若与目标客群冲突,按目标客群处理
-    
-
-* * *
-
-## 3\. 规则组管理
-
-### 3.1 列表页
-
-![BlockNote image](./screenshots/rule-group-list.png)
-
-**入口**:Liso 后台 → 定制功能 → 汇丰银行 → 规则组管理。
-
-**头部按钮**:【新增规则组】。
-
-**筛选条件**:
-
-| 字段  | 类型  | 说明  |
-| --- | --- | --- |
-| 规则组编号 | 文本输入 | 模糊匹配 |
-| 规则组名称 | 文本输入 | 模糊匹配 |
-| 规则组类型 | 下拉单选 | 选项由系统维护的字典动态加载 |
-| 审核状态 | 下拉单选 | 选项:新增待审核 / 编辑待审核 / 审核通过;不选视为全部 |
-
-操作按钮:【查询】【重置】。
-
-**列表字段**:
-
-| 字段  | 说明  |
-| --- | --- |
-| 操作  | 左侧固定列:查看详情 / 编辑 / 提交审核 / 删除,按状态显隐 |
-| 规则组编号 | 系统生成 |
-| 规则组名称 | 过长省略 + tooltip |
-| 规则组类型 | 来自字典 |
-| 规则逻辑 | Tag 展示,可选值:`AND(且)` / `OR(或)` |
-| 规则数量 | 该规则组下的元规则条数 |
-| 状态  | Tag 展示,可选值:`新建`(灰)/ `已上线`(绿) |
-| 审核状态 | Tag 展示,可选值:`新增待审核`(黄)/ `编辑待审核`(黄)/ `审核通过`(绿) |
-| 创建人 | 规则组创建人 |
-| 创建时间 | Y-m-d H:i:s |
-
-**行内操作可见性**:
-
-| 操作  | 显示条件 |
-| --- | --- |
-| 查看详情 | 任意状态 |
-| 编辑  | 状态 = `新建` |
-| 提交审核 | 状态 = `新建` |
-| 删除  | 状态 = `新建`(红色) |
-
-**分页**:默认每页 10 条,可切换 10 / 20 / 50。
-
-* * *
-
-### 3.2 新增 / 编辑规则组
-
-![BlockNote image](./screenshots/rule-group-add-step1.png)
-
-**入口**:列表头部【新增规则组】 / 行内【编辑】。两步骤向导:
-
-**第一步:基本信息**
-
-| 字段  | 必填  | 说明  |
-| --- | --- | --- |
-| 规则组名称 | 是   | 文本,最长 40 字符,带字数提示 |
-| 规则组类型 | 是   | 下拉,选项由系统维护的字典动态加载 |
-| 规则逻辑 | 是   | 圆点单选:`AND(且,全部满足)` / `OR(或,任一满足)` |
-| 备注说明 | 否   | 多行文本,最长 200 字符 |
-
-**第二步:规则配置**
-
--   规则表格:元规则编号 / 元规则名称 / 规则名称 / 规则描述 / 规则参数(等宽字体);行内操作:编辑 / 查看 / 删除
-    
--   【添加规则】按钮:弹出"添加规则"对话框选择元规则,选中元规则后自动展开该元规则对应的"待配置项"(带 `*` 为必配项,否则可选),保存后落入规则表格
-    
-
-**校验**:至少添加 1 条规则;状态 = `已上线` 的规则组不可编辑。
-
-**底部按钮**:取消 / 上一步 / 下一步 / 完成(按步骤显隐)。
-
-* * *
-
-### 3.3 规则组详情
-
-![BlockNote image](./screenshots/rule-group-view.png)
-
-**入口**:列表行内【查看详情】。
-
-页面展示两个只读描述区:
-
-**(1)基本信息**:规则组编号 / 规则组名称 / 规则组类型 / 规则逻辑 Tag / 状态 Tag / 规则数量 / 创建人 / 创建时间 / 最后更新人 / 最后更新时间 / 备注说明
-
-**(2)规则组配置**:规则逻辑提示文案"规则之间使用「且 / 或」逻辑组合";明细表:元规则编号 / 元规则名称 / 规则名称 / 规则描述 / 规则参数(等宽字体)
-
-**底部按钮**:返回。
-
-* * *
-
-### 3.4 规则组审核
-
-**入口**:Liso 后台 → 定制功能 → 汇丰银行 → 人群管理 → 规则组审核,作为人群管理模块下的独立子菜单,集中处理规则组的上线 / 编辑审核。
-
-按审核状态分为三个 Tab,切换 Tab 时重新加载列表:
-
-| Tab | 含义  | 操作列按钮 |
-| --- | --- | --- |
-| 待审核 | 审核状态 = `待审核` 的审核单 | 审批  |
-| 审核通过 | 历史审核通过的记录 | 查看  |
-| 审核驳回 | 历史审核驳回的记录 | 查看  |
-
-**筛选条件**:
-
-| 字段  | 类型  | 说明  |
-| --- | --- | --- |
-| 规则组编号 | 文本输入 | 精确匹配 |
-| 规则组名称 | 文本输入 | 关键字模糊匹配 |
-
-**操作按钮**:【查询】【重置】。
-
-**列表字段**:
-
-| 字段  | 说明  |
-| --- | --- |
-| 操作  | 行内按钮:审批 / 查看,按 Tab 切换显隐 |
-| 规则组名称 | 规则组名称 |
-| 规则组编号 | 系统生成的编号 |
-| 审核类型 | Tag 展示:`上线`(绿)/ `编辑`(黄) |
-| 提交人 | 提交审核的运营人员昵称 |
-| 提交时间 | Y-m-d H:i:s |
-| 审核人 | 审核操作的执行人昵称;未审核时显示"-" |
-| 审核时间 | Y-m-d H:i:s;未审核时为空 |
-
-**分页**:默认每页 10 条,可切换 10 / 20 / 50;支持上一页、下一页、页码、跳转;左下角展示 `Total N` 总条数。
-
-3.4.1 审核详情
-
-点击行内【审批】/【查看】进入审核详情页。
-
-**页面结构**:采用 2 列描述列表布局,全部只读展示提交时的快照内容:
-
-**(1)基本信息**:规则组编号 / 规则组名称 / 规则组类型 / 规则逻辑 Tag / 状态 Tag / 规则数量 / 提交人 / 提交时间
-
-**(2)规则组配置**:规则逻辑提示文案 + 明细表(元规则编号 / 元规则名称 / 规则名称 / 规则描述 / 规则参数)
-
-**底部按钮**(按 Tab 显隐):
-
-| 按钮  | 显示条件 | 行为  |
-| --- | --- | --- |
-| 审核通过 | Tab = 待审核 | 规则组和规则组审核单状态->审核通过 |
-| 审核驳回 | Tab = 待审核 | 规则组审核状态 -> 空  <br>  <br>规则组审核单状态 -> 审核驳回 |
-| 返回  | 任意状态 | 返回规则组审核列表 |
-
-* * *
-
-## 4\. 具体规则与逻辑配置
-
-逻辑运算支持「且 / 或(AND / OR)」组合。客群任务范围内分为三层(从高到低):**客群任务 → 规则组 → 元规则**(借记卡元规则约 50+ 项,信用卡元规则若干项)。高维可对低维设置 AND / OR 组合,例如:
-
-```Plain
-(A 且 B) 且 (C) 且 (D 或 E 或 F)
-```
-
-## 5\. 客群名单自动同步新增
-
-行内会自动同步客群名单给我们(包括客群名称、指定客户号),同步给我们后自动创建(客群描述留空)。
-
-<br>
-
-# 五、发放计划
-
-## 1\. 概述
-
-发放计划用于将已上架的借记卡权益按计划下发到客群名下。一个发放计划对应「一组客群 × 一个或多个权益」,按周期统计实际可领取 / 已发放数。
-
--   **入口**:Liso 后台 → 定制功能 → 汇丰银行 → 发放计划
-    
--   **发放计划 ID**:系统自动生成,统一 `P` + 6 位序号格式(如 `P000001`),全局唯一
-    
--   **状态**:由"开始时间 / 结束时间 + 当前时间"实时推算 —— `未开始`(当前 < 开始时间)、`进行中`(开始 ≤ 当前 ≤ 结束)、`已结束`(当前 > 结束时间)
-    
--   **审核状态**:`新增待审核`(新建/编辑后提交审核,期间不可编辑/删除)/ `结束待审核`(已发起结束审核,期间不可编辑/删除)/ `审核通过`(审核通过后生效);审核驳回后回退到 `审核通过`,可重新编辑;同一发放计划同时只能存在 1 条进行中的审核单
-    
-
-## 2\. 列表页
-
-> 按照角色的一级分行隔离,管理员角色类型可以看到全部,普通角色类型只能查看同一级分行的用户创建的数据。
-
-![BlockNote image](./screenshots/4-grant-campaign-list.png)
-
-### 2.1 筛选条件
-
-| 字段  | 类型  | 说明  |
-| --- | --- | --- |
-| 发放计划名称 | 文本输入 | 关键字模糊匹配 |
-| 发放计划时间 | 日期范围 | 选择 `开始日期 至 结束日期`,按计划开始/结束时间过滤 |
-| 状态  | 下拉单选 | 选项:未开始 / 进行中 / 已结束;不选视为全部 |
-| 审核状态 | 下拉单选 | 选项:新增待审核 / 结束待审核 / 审核通过;不选视为全部 |
-
-**操作按钮**:
-
--   【查询】:按筛选条件查询
-    
--   【重置】:清空筛选条件
-    
--   【新建发放计划】(位于筛选下方):跳转新建表单
-    
-
-### 2.2 列表字段
-
-| 字段  | 说明  |
-| --- | --- |
-| 操作  | 行内按钮:查看 / 编辑 / 结束 / 删除,按状态 + 审核状态显隐,详见 §2.3 |
-| 发放计划 ID | 系统生成,`P` + 6 位序号(如 `P000001`) |
-| 发放计划名称 | 最长 50 字符,超过一行换行显示 |
-| 开始时间 | Y-m-d H:i:s |
-| 结束时间 | Y-m-d H:i:s |
-| 状态  | Tag 展示,可选值:`未开始`(灰)/ `进行中`(绿)/ `已结束`(默认) |
-| 审核状态 | Tag 展示,可选值:`新增待审核`(黄)/ `结束待审核`(红)/ `审核通过`(绿) |
-| 是否自动发放 | Tag 展示,可选值:`是`(绿)/ `否`(灰) |
-| 获取方式 | Tag 展示,可选值:`用户领取`(绿)/ `直接发放`(黄) |
-| 单客户权益数量 | 含周期前缀,例如 `每月 2 个`、`整个周期 1 个`、`每季度 5 个`、`每年 10 个` |
-| 权益有效期 | 固定日期:`YYYY-MM-DD 至 YYYY-MM-DD`;相对日期:`自发放起 N 天内有效` |
-| 创建时间 | Y-m-d H:i:s |
-
-### 2.3 操作可见性矩阵
-
-| 操作  | 显示条件 | 行为  |
-| --- | --- | --- |
-| 查看  | 任意状态 | 跳转 查看页 |
-| 编辑  | 状态 ≠ `进行中` 且 审核状态 = `审核通过` | 跳转编辑页;若进入后发现该计划已切到"进行中",会强制提示 `进行中的发放计划不可编辑` 并退回列表 |
-| 复制  | 任意状态 | 跳转新建表单,自动回填源发放计划的所有字段(计划 ID 留空、名称自动加"-副本"后缀),保存时生成新发放计划 |
-| 结束  | 状态 = `进行中` 且 审核状态 = `审核通过`(黄色文字) | 二次确认弹窗 `确定提交「XXX」的结束审核吗?审核通过后才会正式结束。`(按钮 确认提交 / 取消) → 提交结束审核单,审核状态切到 `结束待审核`,期间不可编辑/删除 |
-| 删除  | 状态 ≠ `进行中` 且 审核状态 = `审核通过`(红色文字) | 二次确认弹窗 `您确定要删除此条发放计划吗?删除后将无法恢复。`(按钮 确认删除 / 取消) → 调用接口,提示 `删除成功` |
-
-* * *
-
-## 3\. 新建 / 编辑发放计划
-
-**入口**:
-
--   新建:列表页【新建发放计划】
-    
--   编辑:列表行【编辑】,仅 `未开始` / `已结束` 状态可进入;`进行中` 不可编辑
-    
--   复制:列表行【复制】,任意状态均可进入
-    
-
-**复制场景**:列表行【复制】进入本表单后,自动回填源发放计划的所有字段,发放计划 ID 留空(保存时由系统生成新编号),发放计划名称自动加 `-副本` 后缀(如源名称为"汇丰卓越理财5月活动",则默认为"汇丰卓越理财5月活动-副本"),其余字段与源计划一致。保存成功提示 `复制成功`。
-
-**页面结构**:单页表单(非步骤向导),整体水平居中,字段标签左对齐。字段如下:
-
-| 字段  | 必填  | 说明  |
-| --- | --- | --- |
-| 发放计划 ID | —   | **仅编辑时显示**,只读,禁用输入框 |
-| 发放计划名称 | 是   | 文本输入,placeholder `请输入发放计划名称`,最长 50 字符,带字数实时提示 |
-| 发放计划开始时间 | 是   | datetime 选择器,精确到秒,开始时间必须大于当前时间,格式 `YYYY-MM-DD HH:mm:ss` |
-| 发放计划结束时间 | 是   | datetime 选择器,精确到秒;提交时校验「结束时间必须晚于开始时间」 |
-| 选择客群 | 是   | 多选下拉(支持搜索),已选项以可折叠 Tag 展示;选项格式 `客群名称 (客群编号)`,数据源为人群管理中的客群任务(含规则组圈选与指定客户号两种类型);校验文案 `请至少选择一个客群` |
-| 是否自动发放 | 是   | 圆点单选,默认 `是`:  <br>  <br>• **是**:每个发放周期开始时,系统自动执行发放任务  <br>  <br>• **否**:每个发放周期需要运营人员手动触发发放 |
-| 获取方式 | 是   | 圆点单选,默认 `用户领取`:  <br>  <br>• **用户领取**:权益发放到客户名下后由用户主动领取  <br>  <br>• **直接发放**:权益自动到账,无需领取动作 |
-| 选择权益 | 是   | 数据源为「已上架」的借记卡权益。选项格式 `权益名称 (权益编号)` • 用户领取模式:多选下拉(支持搜索,已选项以可折叠 Tag 展示) • 直接发放模式:单选下拉 + 搜索 切换 `用户领取 → 直接发放` 时,若已选多个权益,自动只保留第一个;校验文案 `请至少选择一个权益` / `请选择一个权益` |
-| 单客户权益数量 | 是   | 行内组合控件:左侧周期下拉(整个周期 / 每月 / 每季度 / 每年),右侧数字输入(1 ~ 9999),后缀"个" |
-| 权益有效期 | 是   | 圆点单选「固定日期 / 相对日期」: • **固定日期**:选择起止日期(必须二选完整) • **相对日期**:数字输入 1 ~ 3650,单位"天(自发放起算)",默认值 30 |
-| 短信通知 | 是   | 短信模板下拉,**专用于发放成功短信**。 |
-
-**底部按钮**(页脚居中):
-
-| 按钮  | 行为  |
-| --- | --- |
-| 取消  | 直接返回发放计划列表 |
-| 保存  | 触发所有字段必填校验 + 业务校验(结束晚于开始 / 固定日期需选完整 / 相对日期 ≥ 1 / 单客户权益数量 ≥ 1 / 直接发放模式仅允许 1 个权益 / 短信模板必选)。校验通过后调用保存接口,新建提示 `新建成功`,编辑提示 `保存成功`,复制提示 `复制成功`,并返回列表页 |
-
-* * *
-
-## 4\. 查看发放计划
-
-![BlockNote image](./screenshots/4-grant-campaign-view.png)
-
-**入口**:列表行【查看】,所有状态均可进入。
-
-**页面结构**:采用 2 列描述列表布局展示所有字段,全部只读;权益、客群、短信模板内容以 Tag / 预览块形式展示。
-
-| 字段  | 展示形态 |
-| --- | --- |
-| 发放计划 ID | 文本  |
-| 发放计划名称 | 文本  |
-| 状态  | Tag(同列表口径) |
-| 审核状态 | Tag(同列表口径) |
-| 是否自动发放 | Tag(同列表口径) |
-| 获取方式 | Tag(同列表口径) |
-| 单客户权益数量 | 含周期前缀的描述文本 |
-| 开始时间 / 结束时间 | 文本(缺省时显示"-") |
-| 权益有效期 | 文本(固定/相对两种描述,跨 2 列) |
-| 选择客群 | Tag 列表(info 灰色),每个 Tag 显示 `客群名称 (客群编号)`;无值显示"-" |
-| 选择权益 | Tag 列表,每个 Tag 显示 `权益名称 (权益编号)`;无值显示"-" |
-| 短信通知 | 第一行:模板名称(如"发放成功通用模板");下方虚线框展示该模板的完整内容预览 |
-| 创建时间 / 更新时间 | 文本  |
-
-**底部按钮**:【返回】,回到发放计划列表。
-
-## 5\. 发放计划审核
-
-### 5.1 入口
-
-**Liso 后台 → 定制功能 → 汇丰银行 → 发放计划审核**,作为发放计划模块下的独立子菜单,集中处理发放计划的新增审核。
-
-### 5.2 列表页
-
-按审核状态分为三个 Tab,切换 Tab 时重新加载列表:
-
-| Tab | 含义  | 操作列按钮 |
-| --- | --- | --- |
-| 待审核 | 审核类型 = `待审核` 的审核单 | 审批  |
-| 审核通过 | 历史审核通过的记录 | 查看  |
-| 审核驳回 | 历史审核驳回的记录 | 查看  |
-
-**筛选条件**:
-
-| 字段  | 类型  | 说明  |
-| --- | --- | --- |
-| 发放计划ID | 文本输入 | 精确匹配 |
-
-**操作按钮**:
-
--   【查询】:根据筛选条件查询
-    
--   【重置】:清空筛选条件
-    
-
-**列表字段**:
-
-| 字段  | 说明  |
-| --- | --- |
-| 操作  | 待审核 Tab 显示【审批】;审核通过 / 驳回 Tab 显示【查看】 |
-| 发放计划名称 | 过长时省略号 + 悬浮 tooltip 展示 |
-| 发放计划 ID | 系统生成的 `P` + 6 位序号 |
-| 审核类型 | Tag 展示,可选值:`新增`(绿)/ `编辑`(蓝)/ `结束`(红) |
-| 业务模块 | 当前固定为"发放计划" |
-| 提交人 | 审核单提交人姓名 |
-| 提交时间 | Y-m-d H:i:s |
-| 审核人 | 审核人姓名;未审核时显示"-" |
-| 审核时间 | Y-m-d H:i:s;未审核时显示"-" |
-
-**分页**:默认每页 10 条,可切换 10 / 20 / 50;支持上一页、下一页、页码、跳转;左下角展示 `Total N` 总条数。
-
-### 5.3 审核详情
-
-点击行内【审批】/【查看】进入审核详情页。
-
-**页面结构**:采用 2 列描述列表布局,全部只读展示提交时的快照内容:
-
-| 字段  | 展示形态 |
-| --- | --- |
-| 发放计划 ID | 文本  |
-| 发放计划名称 | 文本  |
-| 状态  | Tag(推算口径同列表) |
-| 审核状态 | Tag |
-| 获取方式 | Tag |
-| 单客户权益数量 | 含周期前缀的描述文本 |
-| 开始时间 / 结束时间 | 文本  |
-| 权益有效期 | 文本  |
-| 选择客群 | Tag 列表 |
-| 选择权益 | Tag 列表 |
-| 短信通知 | 模板名称 + 内容预览 |
-
-**底部操作按钮**(按审核类型显隐):
-
-| 按钮  | 显示条件 | 行为  |
-| --- | --- | --- |
-| 返回  | 始终显示 | 返回审核列表 |
-| 通过  | 审核状态 = `待审核` | 二次确认弹窗 `确定通过该审核单吗?` → 提示 `审核通过`,返回审核列表 |
-| 驳回  | 审核状态 = `待审核` | 二次确认弹窗 `确定驳回该审核单吗?` → 提示 `已驳回`,返回审核列表 |
-
-### 5.4 状态联动
-
--   **审核通过**:发放计划主表 `审核状态 = 审核通过`,计划正式生效
-    
--   **审核驳回**:发放计划主表 `审核状态` 回退,可在发放计划列表重新编辑后再次提交审核
-    
--   同一发放计划**同时只能存在 1 条进行中的审核单**
-    
-
-* * *
-
-## 6\. 发放任务
-
-发放任务由系统按发放周期自动生成(是否自动发放 = 是)或由运营人员手动触发(是否自动发放 = 否),每次发放周期对应一条发放任务记录。
-
--   **入口**:Liso 后台 → 定制功能 → 汇丰银行 → 发放计划管理 → 发放任务
-    
--   **任务 ID**:系统自动生成,格式 `T` + 日期 + 序号(如 `T20260501001`)
-    
--   **任务状态**:`待执行`(周期开始但尚未执行)/ `执行中`(正在执行发放)/ `已完成`(发放完成)
-    
-
-### 6.1 列表页
-
-按任务状态分为四个 Tab,切换 Tab 时前端过滤:
-
-| Tab | 含义  |
-| --- | --- |
-| 待执行 | 任务状态 = `待执行` 的任务(默认选中) |
-| 执行中 | 任务状态 = `执行中` 的任务 |
-| 已完成 | 任务状态 = `已完成` 的任务 |
-| 全部  | 所有发放任务 |
-
-**筛选条件**:
-
-| 字段  | 类型  | 说明  |
-| --- | --- | --- |
-| 发放计划 ID | 文本输入 | 精准匹配 |
-| 计划名称 | 文本输入 | 关键字模糊匹配 |
-| 任务类型 | 下拉单选 | 选项:自动 / 手动;不选视为全部 |
-
-**操作按钮**:【查询】【重置】。
-
-**列表字段**:
-
-| 字段  | 说明  |
-| --- | --- |
-| 操作  | 查看、执行 |
-| 任务 ID | 系统生成,`T` + 日期 + 序号(如 `T20260501001`) |
-| 计划名称 | 关联发放计划的名称,超过一行换行显示 |
-| 发放计划 ID | 关联发放计划的 ID(`P` + 6 位序号) |
-| 任务类型 | Tag 展示:`自动`(绿)/ `手动`(黄),取自关联发放计划的「是否自动发放」字段 |
-| 任务周期 | 日期范围,格式 `YYYY-MM-DD ~ YYYY-MM-DD`(如 `2026-05-01 ~ 2026-05-31`) |
-| 任务状态 | Tag 展示:`待执行`(灰)/ `执行中`(默认)/ `已完成`(绿) |
-| 创建时间 | Y-m-d H:i:s |
-| 执行时间 | Y-m-d H:i:s;未执行时显示"-" |
-| 执行人 | 自动发放时显示"系统";手动发放时显示运营人员昵称 |
-
-**操作可见性**:
-
-| 操作  | 显示条件 | 行为  |
-| --- | --- | --- |
-| 查看  | 任意状态 | 跳转查看页 |
-| 执行  | 任务状态 = `待执行` | 跳转执行页 |
-
-**分页**:默认每页 10 条,可切换 10 / 20 / 50;支持上一页、下一页、页码、跳转;左下角展示 `Total N` 总条数。
-
-### 6.2 查看 / 执行页
-
-**入口**:列表行【查看】或【执行】进入同一页面,页面结构一致。
-
-**页面结构**:两个只读描述区 + 执行按钮(仅执行页显示):
-
-**(1)计划信息**:发放计划 ID / 发放计划名称 / 获取方式 / 是否自动发放 / 单客户权益数量 / 权益有效期 / 开始时间 / 结束时间 / 选择客群(Tag 展示,格式 `客群名称 (客群编号)`) / 选择权益(Tag 展示,格式 `权益名称 (权益编号)`) / 短信通知
-
-**(2)任务信息**:任务 ID / 任务类型 / 任务周期 / 任务状态 / 创建时间 / 执行时间 / 执行人
-
-**(3)执行按钮**(仅【执行】入口时显示):【确认执行】【取消】
-
-点击【确认执行】后弹出二次确认 `确认执行该发放任务?`(按钮 确认 / 取消),确认后任务状态切到 `执行中`,执行时间写入当前时间,执行人写入当前运营人员昵称,提示 `执行成功` 并返回列表页。
-
-**底部按钮**(仅【查看】入口时显示):【返回】,回到发放任务列表。
-
-* * *
-
-# 六、页面管理
-
-# 变更日志
-
-| <br> | <br> | <br> | <br> |
-| --- | --- | --- | --- |
-| **时间** | **版本号** | **变更人** | **主要变更内容** |
-| 26/4/24 | 1.0 | 刘晋成 | <br> |
-
-# 详细操作
-
-## 1\. 权益介绍页
-
-### 等级配置
-
-按“客户MSC Group 标签”进行隔离配置。标签需在页面顶部 Tab 切换不同等级(卓越理财Premier/ 卓越理财·尊尚 Premier·Elite/ 环球私人银行GPB),分别配置各等级在移动端的专属展示内容。
-
-### Tab名称配置模块
-
-![BlockNote image](../../.resources/image-1779244508001.png)
-
--   **Tab名称(输入框)**:
-    
-    -   **作用**:定义当前等级在移动端顶部切换栏的展示文字(如将“卓越理财”改为“卓越尊享”)。
-        
-    -   **移动端交互**:移动端顶部导航栏的文本会随之动态改变。后台上方的配置 Tab 也会实时同步。
-        
-
-### 头部配置
-
-![BlockNote image](../../.resources/image-1779244508002.png)
-
-对应移动端最上方的大图与欢迎文案。
-
-<br>
-
-### 按钮配置模块
-
-![BlockNote image](../../.resources/image-1779244508003.png)
-
--   **已解锁按钮文案(输入框)**:
-    
-    -   **移动端交互**:针对**已解锁**当前等级的客户展示的按钮文案(如“进入权益专区”)。点击直接拉起“权益首页”。
-        
--   **待解锁按钮文案(输入框)**:
-    
-    -   **移动端交互**:针对**未解锁**该等级的客户,按钮将呈现置灰状态,并回显此文案(如“查看达标条件”)。点击会拉起“如何达标”半屏说明弹窗。
-        
-
-### 权益列表配置
-
-![BlockNote image](../../.resources/image-1779244508004.png)
-
--   **配图(上传组件)**:
-    
-    -   **移动端交互**:此项为**非必填**。若未上传图片,移动端不会出现小图标,而是自动降级展示为一个标准的“圆点”符号兜底,确保排版整洁对齐。
-        
--   **标题 / 权益文字描述(输入框)**:填写单行小标题与详细的权益介绍。支持通过列表右上角的气泡排序功能调整顺序。
-    
-
-## 2\. 权益主页
-
-### 客户身份模块配置
-
-![BlockNote image](../../.resources/image-1779244508005.png)
-
-前端将根据登录客户的实际客群 (MSC) 自动匹配展示此处配置的对应身份卡片。支持四个客群的独立配置:运筹理财、卓越理财、卓越理财·尊尚、环球私人银行。
-
--   **客群背景图(上传组件)**:支持为每个客群上传独立的顶部横向卡片背景图。建议尺寸:`750 * 185 px`。
-    
--   **身份标识文字(输入框)**:显示于移动端卡片左上角的客群称呼。
-    
--   **显示合格状态 / 显示 PB 权益等级及编号(复选框)**:控制是否在卡片上展示客户的达标状态及专属编号。
-    
--   **显示“账户月内日均余额”(复选框 & 强联动逻辑)**:
-    
-    -   若开启此开关,卡片将展示余额,**并且下方会自动显示“日均余额计算规则”的富文本配置框**,前端同时出现 `?` 问号规则查看入口。
-        
-    -   若关闭此开关,“计算规则”配置框将被强制隐藏,前端也同步隐藏该规则入口。
-        
-    -   _注:PB 客群卡片底层逻辑不显示月内日均余额,故不提供此项配置。_
-        
-
-### 活动广告轮播图
-
-![BlockNote image](../../.resources/image-1779244508006.png)
-
-对应移动端中部的精选活动卡片滑动区。
-
--   **多端跳转配置(输入框组)**:
-    
-    -   支持同时配置 **H5 跳转链接 / APP 跳转链接 / 微信小程序 AppID / 微信小程序页面路径**。
-        
-    -   **移动端交互**:移动端内核会智能探测当前用户的运行环境,精准拉起对应的原生页面,避免跨环境跳转失败。
-        
--   **可见人群标签(下拉多选)**:千人千面控制开关。勾选对应标签后,该广告仅对含有相应标签的客群展示。
-    
-
-### 常用兑换配置
-
-![BlockNote image](../../.resources/image-1779244508007.png)
-
--   **常用兑换**:配置底部横滑图标卡片,支持图片、名称及跳转 URL 的录入。
-    
-
-### 积分规则弹窗配置
-
-![BlockNote image](../../.resources/image-1779244508008.png)
-
--   **积分规则弹窗**:支持通过富文本工具的 **“附件”** 按钮上传本地 PDF。移动端会自动生成带回形针图标的下载链接,点击可调用原生阅读器全屏预览该 PDF 规则细则。
-    
-
-## 3\. 组装页
-
-点击“编辑”进入页面配置。顶部需填写内部管理的**组装页名称**。 页面由上至下通过添加不同的“数据模块”组合而成,页面最下方有四个模块添加按钮,支持无限叠加与自由排序:
-
-### 列表管理
-
-![BlockNote image](../../.resources/image-1779244508009.png)
-
--   **列表视图**:展示所有组装页的页面ID、名称、发布状态(草稿/已上架)及更新时间。支持按页面ID或名称精准查询。
-    
--   **获取链接**:在列表视图的每一行操作列中,提供了专属的“链接”按钮,点击可直接唤起获取该单页专属分发链接的面板。支持在弹窗的下拉列表中选择 `Campaign ID` 和 `Channel ID`。选择后,会自动将这些参数拼接在 URL 末尾(例如拼接 `&CampaignId=CAMP202511&Channelid=CH_APP`)。若未选择任何下拉值,则不拼接相关参数。
-    
-
-![BlockNote image](../../.resources/image-1779244508010.png)
-
--   **页面基础信息**:点击“新建”或“编辑”进入详情后,需设置内部管理的“组装页名称”。页面 ID 则由系统自动分配生成,不可修改。
-    
--   **状态与链接区分**:若页面处于“草稿”状态,弹窗中仅提供用于内部预览测试的“草稿预览链接”;当页面正式“发布”后,弹窗会同时展示正式投放使用的“正式环境链接”和草稿预览链接。
-    
-
-### 创建页面与基础设置
-
--   **进入列表与创建**:在组装页列表中,您可以查看到所有历史配置的页面。点击右上角的【新建组装页】按钮,或点击已有页面的【编辑】进入配置界面。
-    
-
-![BlockNote image](../../.resources/image-1779244508011.png)
-
--   **设置组装页名称(必填)**:在页面顶部输入框填写该页面的名称。
-    
-    -   注意:不仅用于后台列表查找,还会**直接在移动端最顶部的导航栏(Page Title)作为标题向客户展示**。
-        
-
-![BlockNote image](../../.resources/image-1779244508012.png)
-
--   **页面 ID 生成**:系统会自动为当前页面生成一个唯一的“页面 ID”,无需您手动配置。
-    
-
-### 页面模块配置
-
--   **模块新增:**在配置区最下方,可以看到四个功能按钮。点击对应的按钮即可在页面最末尾新增该模块:
-    
-
-![BlockNote image](../../.resources/image-1779244508013.png)
-
--   **模块位置调整与管理**:每个已添加的模块右上角都有一个统一的操作控制台:
-    
-
-![BlockNote image](../../.resources/image-1779244508014.png)
-
--   **气泡排序**:点击带有数字的列表图标,在弹出的悬浮气泡中输入目标序号(如:1),点击确定,该模块将立即移动到对应位置。
-    
--   **复制**:点击“复制”可一键克隆当前模块及内部所有数据(_注:为防止数据冲突,系统已强行锁死并隐藏了“权益商品模块”的复制功能_)。
-    
--   **删除**:点击红色的垃圾桶图标并确认,即可移除不需要的模块。
-    
--   **图片模块**:
-    
-
-![BlockNote image](../../.resources/image-1779244508015.png)
-
--   **配置**:通栏视觉展示模块。
-    
--   **移动端交互**:强烈建议图片宽度为 `750px`,移动端将 `100%` 自动拉通铺满屏幕宽度。高度无需受限,系统将根据上传图片的原始比例自动计算并拉伸展示,防止变形。
-    
--   **权益商品模块**:**全局唯一,一个页面仅限添加一个,且不支持复制**。可配置一个大区标题,并在其下方添加多个带图标的权益商品明细。
-    
-
-![BlockNote image](../../.resources/image-1779244508016.png)
-
--   **图文模块**:提供包含完整工具栏的富文本编辑器,支持上传附件和插入外链。
-    
-
-![BlockNote image](../../.resources/image-1779244508017.png)
-
--   **按钮模块**:
-    
-    -   **样式选择(下拉框)**:支持“突出显示 (红色背景)”与“次要操作 (白色背景)”两种视觉层级。
-        
-    -   **动作 - 跳转链接(输入框):**配置按钮直接跳转至指定 URL。提交保存时系统会进行强校验,若动作为跳转链接,则链接地址字段绝对不能为空。
-        
-
-![BlockNote image](../../.resources/image-1779244508018.png)
-
--   **动作 - 弹窗提示 (Dialog):**配置点击按钮后唤起屏幕中央的弹窗。支持配置弹窗标题、描述正文,以及右侧“确认”按钮的文案与后续跳转链接。若未配置确认按钮的跳转链接,则点击确认仅执行关闭弹窗的动作。弹窗左侧固定展示取消按钮。
-    
-
-![BlockNote image](../../.resources/image-1779244508019.png)
-
-# 七、渠道管理
-
-## 1\. Channel 管理
-
-### 新建 Channel(标准流程)
-
--   点击页面左中部的蓝色按钮 **【+ 新建 Channel】**,系统将弹出新建表单。
-    
-
-![BlockNote image](../../.resources/image-1779258558474.png)
-
--   **Channel ID**:系统会在保存时**自动生成**唯一的 ID(如 CH0001),无需手动填写。
-    
--   **选择内置层级属性**(严格的级联选择):
-    
-
-![BlockNote image](../../.resources/image-1779258585910.png)
-
--   **Channel 类型 (Type)**:点击下拉框,选择内置的类型(如 `Human-assisted` 或 `Unassisted`)。
-    
--   **Channel 类别 (Category)**:**必须先选择类型**,此处才会解锁并仅显示属于该类型下的类别(如选了 `Human-assisted` 才会出现 `MGM`)。
-    
--   **Channel 名称 (Name)**:**必须先选择类别**,此处才会解锁并显示对应的具体名称。
-    
--   **补充业务信息**:
-    
-    -   **Channel 子名称 (Subname)**:自由文本输入,例如输入具体的活动名称“私行沙龙引导”。
-        
-    -   **跟进员工 (Follow-up staff)**:输入负责跟进此渠道的员工姓名。
-        
--   点击 **【确定】** 保存,系统将在列表中生成一条全新的 Channel 记录。
-    
-
-![BlockNote image](../../.resources/image-1779258602589.png)
-
-### 新增全新的 类型/类别/名称(字典维护功能)
-
-如果下拉列表中没有需要的选项,**无需跳出当前页面**,可以直接在弹窗内“边填边建”。
-
-**新增「Channel 类型」**:
-
-![BlockNote image](../../.resources/image-1779258618794.png)
-
--   点击【Channel 类型】下拉框右侧的“新增”按钮。
-    
--   下方会展开一个快捷面板。在输入框中输入全新的类型名称(例如:新的类型)。
-    
--   点击“保存”。系统会自动将该类型存入底层字典,并在下拉框中自动选中它。
-    
--   **新增「Channel 类别」**:
-    
-    -   **前提**:必须先在上方选择或新建好【Channel 类型】。如果未选择类型直接点击新增类别,系统会拦截并提示“_请先选择 Channel 类型_”。
-        
-    -   点击【Channel 类别】右侧的“新增”,输入新类别并保存。该新类别将自动归属于当前选中的类型之下。
-        
--   **新增「Channel 名称」**:
-    
-    -   **前提**:必须先确定好【类型】和【类别】。点击右侧”新增“,输入后保存。该名称将牢牢绑定在当前的“类型+类别”路径下。
-        
-
-**💡 核心逻辑提示**: 如果新增了一个顶级节点(类型),那么它下面必然是空的。此时必须继续使用”新增“功能,依次为其创建下属的【类别】和【名称】,才能完成整条链路的配置。
-
-### 重复新增的校验与提示
-
-为了保证字典数据的整洁,系统排重校验:
-
-![BlockNote image](../../.resources/image-1779258649960.png)
-
--   **同级查重**:在通过快捷面板保存新的 类型/类别/名称 时,系统会实时校验。如果输入的名称在当前层级已经存在,系统会弹出红色提示 **“该类型/类别/名称已存在”**,并拒绝保存。此时需要修改输入,或者直接取消新增,去下拉框中选择已有的那一项。
-    
-
-### 列表数据的操作
-
-成功创建 Channel 后,列表会展示所有数据,并在最右侧自动记录 **创建时间** 和 **更新时间**。在最左侧的”操作“列,可以进行:
-
-**【快捷查询】** 在页面顶部的筛选区,可以通过多维度组合条件快速定位数据:
-
--   支持 **Channel ID** 的精确查询。
-    
--   支持按 **Channel 类型** 进行下拉框筛选。
-    
--   支持按 **Channel 类别**、**Channel 名称**、**Channel 子名称** 以及 **跟进员工** 进行关键字模糊搜索。
-    
--   输入条件后点击 **【查询】** 即可过滤列表,点击 **【重置】** 会清空所有输入条件并恢复展示所有数据。
-    
-
-**【数据操作】** 在最左侧的「操作」列,可以进行:
-
--   **【编辑】**:点击后弹出表单,回显原有数据。可以重新选择下拉项,或修改子名称和跟进员工。也可以再次使用”新增“按钮扩展字典。
-    
--   **【查看】**:点击后弹出表单,但所有字段均置灰(只读模式),只能查看不可修改,防止误触。底部也没有确定/取消按钮。
-    
--   **【删除】**:点击后,系统会弹出一个醒目的**确认删除提示窗**,提示“确定要删除此条数据吗?删除后将无法恢复”。点击确认后才会在列表中彻底移除该数据。
-    
-
-## 2\. Campaign管理
-
-### 新建 Campaign
-
--   点击 **【+ 新建 Campaign】**
-    
-
-![BlockNote image](../../.resources/image-1779258666277.png)
-
--   **Campaign ID**:同样由系统自动生成(如 CP9001)。
-    
--   依次手动输入以下信息:
-    
-    -   **Campaign 名称**:(必填项)当前活动的正式名称。
-        
-    -   **Campaign 负责人 (Owner)**:(必填项)负责该活动的团队或主管名称。
-        
-    -   **跟进员工 (Follow-up staff)**:(选填项)具体执行跟进的员工。
-        
--   如果遗漏必填项,点击确定时系统会提示“_Campaign 名称 和 负责人 是必填项_”。
-    
-
-### 列表操作与查询
-
-![BlockNote image](../../.resources/image-1779258680846.png)
-
-Campaign 的列表操作与 Channel 保持一致:
-
--   支持 **查看**、**编辑**(再次编辑会自动更新“更新时间”)、**删除**(带有防误删的二次确认弹窗)。
-    
--   **顶部筛选区**:支持根据 ID 精确搜索,或根据名称、负责人、跟进员工进行模糊匹配查询。输入条件后点击 **【查询】** 即可过滤列表,点击 **【重置】** 会清空条件并展示所有数据。
-    
-
-## 3\. 通用操作说明
-
-### 全局页面状态指示器
-
-![BlockNote image](../../.resources/image-1779258695118.png)
-
-位于顶部独立工具栏左侧,实时侦测并防呆:
-
--   **草稿 (灰色)**:从未发布至生产环境的内部版本。
-    
--   **有未发布的修改 (黄色)**:您对页面进行了任意字符的修改但还未点击发布,系统立即亮起黄灯提醒。
-    
--   **正式线上环境 (绿色)**:当前后台配置与线上移动端用户所见100%一致。
-    
-
-### 保存与发布
-
-![BlockNote image](../../.resources/image-1779258710263.png)
-
-界面右上方固定提供两个全局核心操作:
-
--   **保存配置**:将当前所有修改保存为“草稿”状态。该操作仅更新后台数据库,不会影响移动端线上真实用户的所见内容,适用于未完成配置的暂存。
-    
--   **发布配置**:将当前修改正式提交上架。发布成功后,最新数据将立刻同步至正式生产环境,移动端线上用户将实时看到更新后的内容与页面。
-    
-
-# 八、短信管理
-
-| 变更日期 | 变更内容 | 变更人 |
-| --- | --- | --- |
-| 2026-05-11 | 初稿:短信模板管理 + 发送记录查询 | 陈生坤 |
-
-## 1\. 概述
-
-### 1.1 业务背景
-
-为支撑权益商品的"下单成功短信"等通知场景,系统需提供一套独立的短信模板维护与发送追溯能力。本模块面向运营人员,统一管理短信模板与发送记录。
-
-### 1.2 模块组成
-
-| 子模块 | 职责  | 使用方 |
-| --- | --- | --- |
-| **短信模板管理** | 维护短信模板的内容、占位符、生命周期(新建/编辑/删除) | 被《二、权益管理》的"下单成功短信"引用 |
-| **发送记录查询** | 查看每条短信的发送明细(接收号、模板、内容、状态) | 运营 / 客服查问题、做对账 |
-
-### 1.3 操作入口
-
-**Liso 后台 → 定制功能 → 汇丰银行**,包含两个子菜单:
-
--   **短信模板管理**
-    
--   **发送记录查询**
-    
-
-* * *
-
-## 2\. 短信模板管理
-
-### 2.1 列表页
-
-![BlockNote image](./screenshots/6-sms-template-list.png)
-
-2.1.1 筛选条件
-
-| 字段  | 类型  | 说明  |
-| --- | --- | --- |
-| 模板名称 | 文本输入 | 模糊匹配,支持清空 |
-| 模板 ID | 文本输入 | 精确匹配,支持清空 |
-
-**操作按钮**:
-
--   【查询】:根据筛选条件查询
-    
--   【重置】:清空筛选条件并回到第 1 页
-    
--   【新建短信模板】:打开新建弹窗
-    
-
-2.1.2 列表字段
-
-| 字段  | 说明  |
-| --- | --- |
-| 操作  | 行内按钮:编辑(蓝色文字)、删除(红色文字) |
-| 模板 ID | 系统生成,格式形如 `SMS_TPL_001` |
-| 模板名称 | 用户可见的模板名(如"通用权益支付成功模板");过长省略号 + tooltip |
-| 模板内容 | 完整的短信文案(含占位符);过长省略号 + tooltip |
-| 创建人 | 首次创建的操作员 |
-| 创建时间 | Y-m-d H:i:s |
-| 最后更新人 | 最近一次保存的操作员 |
-| 更新时间 | 最近一次保存的时间(Y-m-d H:i:s) |
-
-2.1.3 分页
-
--   默认每页 10 条,可切换 10 / 20 / 50
-    
--   支持上一页、下一页、页码、跳转
-    
--   左下角展示 `共 N 条` 总条数
-    
-
-* * *
-
-### 2.2 新建 / 编辑短信模板
-
-**入口**:列表【新建短信模板】或列表行【编辑】。**形态**:模态对话框,宽度 600px,标题随入口切换为 `新建短信模板` / `编辑短信模板`;点击遮罩不关闭,关闭后自动重置表单。
-
-| 字段  | 必填  | 说明  |
-| --- | --- | --- |
-| 模板名称 | 是   | 文本输入框,placeholder `请输入模板名称`,最长 40 字符,带字数实时提示;校验文案 `请输入模板名称` / `不超过 40 字` |
-| 模板内容 | 是   | 多行文本框(6 行),placeholder `请输入模板内容,支持下方占位符`,最长 500 字符,带字数实时提示;校验文案 `请输入模板内容` / `不超过 500 字`。下方常驻"占位符说明"虚线提示卡片 |
-
-**占位符说明**(编辑区固定提示,便于运营直接复用,占位符以蓝色 `code` 样式展示):
-
-| 变量  | 占位符 |
-| --- | --- |
-| 商品名称 | `${productName}` |
-| 结束日期 | `${expireDate}` |
-| 卡号  | `${exchangeNum}` |
-| 卡密  | `${exchangePwd}` |
-| 权益使用路径 | `${qrCodeDownPaths}` |
-| 权益商品h5短链 | `${goodsLink}` |
-
-**底部按钮**:
-
-| 按钮  | 行为  |
-| --- | --- |
-| 取消  | 关闭弹窗,丢弃输入 |
-| 保存  | 触发校验,通过后写入: • 新建:生成模板 ID(`SMS_TPL_xxx`),提示 `新建成功` • 编辑:保留原 ID 并刷新"最后更新人 / 更新时间",提示 `保存成功` |
-
-* * *
-
-### 2.3 删除短信模板
-
-**入口**:列表行【删除】按钮(红色文字)。**交互**:弹出二次确认(warning 类型)`确定要删除模板「XXX」吗?删除后无法恢复`。
-
-模板删除后,相应业务模块配置的短信不再发送。
-
-| 按钮  | 行为  |
-| --- | --- |
-| 确定  | 删除该模板并从列表移除,提示 `删除成功` |
-| 取消  | 关闭弹窗,列表不变 |
-
-* * *
-
-## 3\. 发送记录查询
-
-### 3.1 列表页
-
-![BlockNote image](./screenshots/6-sms-send-record.png)
-
-3.1.1 筛选条件
-
-| 字段  | 类型  | 说明  |
-| --- | --- | --- |
-| 接收手机号 | 文本输入 | 模糊匹配(号码已脱敏,可直接对脱敏值检索) |
-| 模板名称 | 下拉单选 | 选项来源于"短信模板管理"。空值表示"全部" |
-| 发送状态 | 下拉单选 | 成功 / 失败 / 全部 |
-| 发送时间 | 日期区间 | 按"开始日期 ~ 结束日期"过滤(按天比较) |
-
-**操作按钮**:
-
--   【查询】:根据筛选条件查询并回到第 1 页
-    
--   【重置】:清空所有筛选条件
-    
-
-3.1.2 列表字段
-
-| 字段  | 说明  |
-| --- | --- |
-| 发送 ID | 系统生成,格式形如 `SMS20260510001` |
-| 接收手机号 | 脱敏展示(如 `1385821`) |
-| 模板名称 | 引用的模板名;超长以 tooltip 展示 |
-| 发送内容 | 占位符已替换为真实值的最终文案;超长以 tooltip 展示 |
-| 关联权益商品 | 触发本条短信的权益商品名(可为空) |
-| 发送状态 | 成功(绿色 Tag)/ 失败(红色 Tag) |
-| 发送时间 | Y-m-d H:i:s |
-
-3.1.3 分页
-
--   默认每页 10 条,可切换 10 / 20 / 50
-    
--   支持上一页、下一页、页码、跳转
-    
--   左下角展示 `共 N 条` 总条数
-    
-
-* * *
-
-## 4\. 与权益管理的关联
-
--   《二、权益管理》→ 添加 / 编辑权益商品 → 第一步【下单成功短信】开关开启后,引用本模块维护的短信模板(仅是否权益平台兑换 = 是时可见)
-    
--   **发放计划侧的"短信通知"** 使用独立的发放短信模板(`GRANT_SMS_001` 系列),不与本模块的模板池共享,详见 §四 发放计划 §3
-    
--   用户完成权益下单后,系统使用模板内容 + 该笔订单上下文生成最终文案,调用短信通道发送,并在【发送记录查询】中沉淀一条记录
-    
-
-# 九、报表中心
-
-报表中心面向运营 / 客服,统一提供积分、权益、立减金三类数据明细的查询与导出能力。三个子模块均为"筛选 + 列表 + 分页 + 导出"的标准结构;**导出**统一异步触发,提示 `导出任务已提交,请稍后在下载中心查看`。
-
-## 1\. 积分明细查询
-
-![BlockNote image](./screenshots/7-points-detail.png)
-
-**入口**:Liso 后台 → 定制功能 → 汇丰银行 → 积分明细查询。
-
-### 1.1 筛选条件
-
-| 字段  | 类型  | 说明  |
-| --- | --- | --- |
-| 客户号 | 文本输入 | 模糊匹配,clearable |
-| 变动类型 | 下拉单选 | 选项:获取积分 / 使用积分 / 积分过期;空值视为全部 |
-| 查询日期范围 | 日期范围 | 按"变动日期"过滤 |
-
-**操作按钮**:
-
--   【查询】:按筛选条件查询并回到第 1 页
-    
--   【重置】:清空筛选条件
-    
--   【导出】(绿色 + 下载图标):触发异步导出,按当前筛选结果导出,字段与列表一致
-    
-
-### 1.2 列表字段
-
-| 字段  | 说明  |
-| --- | --- |
-| 客户号 | 客户唯一标识 |
-| 变动日期 | 格式 `Y/m/d` |
-| 变动积分金额 | 整数  |
-| 积分总数 | 变动后客户的积分总数 |
-| HYH 积分 | 借记卡积分余额 |
-| 信用卡积分 | 信用卡积分余额 |
-| 变动类别 | Tag 展示,可选值:`获取积分`(绿)/ `使用积分`(默认)/ `积分过期`(灰) |
-| 积分项目类别 | 具体的积分项目名称。"积分过期"类无项目,显示 `/` |
-
-### 1.3 分页
-
--   默认每页 10 条
-    
-
-* * *
-
-## 2\. 客户权益发放
-
-![BlockNote image](./screenshots/7-customer-equity-grant.png)
-
-**入口**:Liso 后台 → 定制功能 → 汇丰银行 → 客户权益发放。查询客户维度的权益发放记录。
-
-### 2.1 筛选条件(两行 3 列布局)
-
-| 字段  | 类型  | 说明  |
-| --- | --- | --- |
-| 客户号 | 文本输入 | 模糊匹配 |
-| 权益编号 | 文本输入 | 模糊匹配(编号格式 `Q` + 6 位) |
-| 发放时间 | 日期范围 | 按发放时间过滤 |
-| Channel 名称 | 下拉单选 | 支持输入搜索;选项来源于【Channel 管理】(示例如"汇丰中国客户服务号"、"MGM - Mortgage" 等) |
-| Campaign 名称 | 下拉单选 | 支持输入搜索;选项来源于【Campaign 管理】 |
-| 客户账户类型 | 下拉单选 | 选项:Premier / Elite / PB / Prospect |
-
-**操作按钮**:查询 / 重置 / 导出(同 §1)。
-
-### 2.2 列表字段
-
-| 字段  | 说明  |
-| --- | --- |
-| 发放时间 | `Y-m-d H:i:s` |
-| 权益名称 | 发放的权益名称 |
-| 权益编号 | 权益唯一编号(`Q` + 6 位) |
-| Campaign ID | 关联营销活动 ID(如 `CP9001`) |
-| Campaign 名称 | 关联营销活动名称,过长省略号 + tooltip |
-| Channel ID | 投放渠道 ID(如 `CH0001`) |
-| Channel 名称 | 投放渠道名称 |
-| 客户号 | 客户唯一标识 |
-| 客户账户类型 | Tag 展示,可选值:`Premier`(默认)/ `Elite`(绿)/ `PB`(黄)/ `Prospect`(灰) |
-
-### 2.3 分页
-
--   默认每页 10 条,布局为"总数 / 上一页 / 页码 / 下一页 / 跳转"
-    
-
-* * *
-
-## 3\. 立减金发放明细
-
-![BlockNote image](./screenshots/7-cash-discount-grant.png)
-
-**入口**:Liso 后台 → 定制功能 → 汇丰银行 → 立减金发放明细。查询立减金发放及使用情况。
-
-### 3.1 筛选条件(两行 3 列布局)
-
-| 字段  | 类型  | 说明  |
-| --- | --- | --- |
-| 客户号 | 文本输入 | 模糊匹配 |
-| 立减金类型 | 下拉单选 | 选项:借记卡 / 信用卡 |
-| 发放时间 | 日期范围 | 按发放日期过滤 |
-| 是否领取 | 下拉单选 | 是 / 否 |
-| 是否使用 | 下拉单选 | 是 / 否 |
-
-**操作按钮**:查询 / 重置 / 导出(同 §1)。
-
-### 3.2 列表字段
-
-| 字段  | 说明  |
-| --- | --- |
-| 发放时间 | `Y-m-d H:i:s` |
-| 客户号 | 客户唯一标识 |
-| 立减金类型 | 借记卡 / 信用卡 |
-| 是否有 bin 卡限制 | Tag 展示,可选值:`是`(黄)/ `否`(灰) |
-| 发放金额 | `¥` 前缀的金额(如 `¥50`) |
-| 发放事由 | 发放原因说明(如"新开户礼遇"、"月度消费达标奖励"等),过长省略号 + tooltip |
-| 是否领取 | Tag 展示,可选值:`是`(绿)/ `否`(红) |
-| 领取时间 | `Y-m-d H:i:s`;未领取时显示 `-` |
-| 使用有效期 | `YYYY-MM-DD 至 YYYY-MM-DD`;未领取时显示 `-` |
-| 是否使用 | Tag 展示,可选值:`是`(绿)/ `否`(红) |
-| 使用时间 | `Y-m-d H:i:s`;未使用时显示 `-` |
-
-### 3.3 分页
-
--   默认每页 10 条,布局为"总数 / 上一页 / 页码 / 下一页 / 跳转"
-    
-
-<br>

+ 0 - 0
pc-v3/.gitignore → 工作空间/产研/权益/汇丰全行/产品原型/pc-demo/.gitignore


+ 0 - 0
pc-v3/CLAUDE.md → 工作空间/产研/权益/汇丰全行/产品原型/pc-demo/CLAUDE.md


+ 0 - 0
pc-v3/README.md → 工作空间/产研/权益/汇丰全行/产品原型/pc-demo/README.md


+ 0 - 0
pc-v3/index.html → 工作空间/产研/权益/汇丰全行/产品原型/pc-demo/index.html


+ 0 - 0
pc-v3/jsconfig.json → 工作空间/产研/权益/汇丰全行/产品原型/pc-demo/jsconfig.json


+ 0 - 0
pc-v3/package-lock.json → 工作空间/产研/权益/汇丰全行/产品原型/pc-demo/package-lock.json


+ 0 - 0
pc-v3/package.json → 工作空间/产研/权益/汇丰全行/产品原型/pc-demo/package.json


+ 0 - 0
pc-v3/public/favicon.ico → 工作空间/产研/权益/汇丰全行/产品原型/pc-demo/public/favicon.ico


+ 0 - 0
pc-v3/scripts/MIGRATION_RULES.md → 工作空间/产研/权益/汇丰全行/产品原型/pc-demo/scripts/MIGRATION_RULES.md


+ 0 - 0
pc-v3/scripts/capture-one.js → 工作空间/产研/权益/汇丰全行/产品原型/pc-demo/scripts/capture-one.js


+ 0 - 0
pc-v3/scripts/capture-screenshots.js → 工作空间/产研/权益/汇丰全行/产品原型/pc-demo/scripts/capture-screenshots.js


+ 0 - 0
pc-v3/scripts/capture-supplements.js → 工作空间/产研/权益/汇丰全行/产品原型/pc-demo/scripts/capture-supplements.js


+ 0 - 0
pc-v3/scripts/dom-probe.mjs → 工作空间/产研/权益/汇丰全行/产品原型/pc-demo/scripts/dom-probe.mjs


+ 0 - 0
pc-v3/scripts/dom-probe2.mjs → 工作空间/产研/权益/汇丰全行/产品原型/pc-demo/scripts/dom-probe2.mjs


+ 0 - 0
pc-v3/scripts/probe-channel.mjs → 工作空间/产研/权益/汇丰全行/产品原型/pc-demo/scripts/probe-channel.mjs


+ 0 - 0
pc-v3/scripts/screenshot-equity-products.png → 工作空间/产研/权益/汇丰全行/产品原型/pc-demo/scripts/screenshot-equity-products.png


+ 0 - 0
pc-v3/scripts/screenshot.mjs → 工作空间/产研/权益/汇丰全行/产品原型/pc-demo/scripts/screenshot.mjs


+ 0 - 0
pc-v3/scripts/shot-add-equity.png → 工作空间/产研/权益/汇丰全行/产品原型/pc-demo/scripts/shot-add-equity.png


+ 0 - 0
pc-v3/scripts/shot-channel-dialog.png → 工作空间/产研/权益/汇丰全行/产品原型/pc-demo/scripts/shot-channel-dialog.png


+ 0 - 0
pc-v3/scripts/shot-channel.mjs → 工作空间/产研/权益/汇丰全行/产品原型/pc-demo/scripts/shot-channel.mjs


+ 0 - 0
pc-v3/scripts/shot-crowd-tasks.png → 工作空间/产研/权益/汇丰全行/产品原型/pc-demo/scripts/shot-crowd-tasks.png


+ 0 - 0
pc-v3/scripts/shot-equity.png → 工作空间/产研/权益/汇丰全行/产品原型/pc-demo/scripts/shot-equity.png


+ 0 - 0
pc-v3/scripts/shot-grant-campaign.png → 工作空间/产研/权益/汇丰全行/产品原型/pc-demo/scripts/shot-grant-campaign.png


+ 0 - 0
pc-v3/scripts/shot-page-home.png → 工作空间/产研/权益/汇丰全行/产品原型/pc-demo/scripts/shot-page-home.png


+ 0 - 0
pc-v3/scripts/shot-quill-final.png → 工作空间/产研/权益/汇丰全行/产品原型/pc-demo/scripts/shot-quill-final.png


+ 0 - 0
pc-v3/scripts/shot-quill-fixed.png → 工作空间/产研/权益/汇丰全行/产品原型/pc-demo/scripts/shot-quill-fixed.png


+ 0 - 0
pc-v3/scripts/shot-quill-fixed2.png → 工作空间/产研/权益/汇丰全行/产品原型/pc-demo/scripts/shot-quill-fixed2.png


+ 0 - 0
pc-v3/scripts/shot-quill.mjs → 工作空间/产研/权益/汇丰全行/产品原型/pc-demo/scripts/shot-quill.mjs


+ 0 - 0
pc-v3/scripts/shot-quill2.mjs → 工作空间/产研/权益/汇丰全行/产品原型/pc-demo/scripts/shot-quill2.mjs


+ 0 - 0
pc-v3/scripts/shot-quill3.mjs → 工作空间/产研/权益/汇丰全行/产品原型/pc-demo/scripts/shot-quill3.mjs


+ 0 - 0
pc-v3/scripts/shot-rule-groups.png → 工作空间/产研/权益/汇丰全行/产品原型/pc-demo/scripts/shot-rule-groups.png


+ 0 - 0
pc-v3/scripts/shot-sms-templates.png → 工作空间/产研/权益/汇丰全行/产品原型/pc-demo/scripts/shot-sms-templates.png


+ 0 - 0
pc-v3/scripts/shot-tags.png → 工作空间/产研/权益/汇丰全行/产品原型/pc-demo/scripts/shot-tags.png


+ 0 - 0
pc-v3/scripts/smoke.mjs → 工作空间/产研/权益/汇丰全行/产品原型/pc-demo/scripts/smoke.mjs


+ 0 - 0
pc-v3/src/App.vue → 工作空间/产研/权益/汇丰全行/产品原型/pc-demo/src/App.vue


+ 0 - 0
pc-v3/src/assets/logo.png → 工作空间/产研/权益/汇丰全行/产品原型/pc-demo/src/assets/logo.png


+ 0 - 0
pc-v3/src/components/EquityLinkDialog.vue → 工作空间/产研/权益/汇丰全行/产品原型/pc-demo/src/components/EquityLinkDialog.vue


+ 0 - 0
pc-v3/src/components/HelloWorld.vue → 工作空间/产研/权益/汇丰全行/产品原型/pc-demo/src/components/HelloWorld.vue


+ 0 - 0
pc-v3/src/components/Layout.vue → 工作空间/产研/权益/汇丰全行/产品原型/pc-demo/src/components/Layout.vue


+ 0 - 0
pc-v3/src/components/RongshuProductDialog.vue → 工作空间/产研/权益/汇丰全行/产品原型/pc-demo/src/components/RongshuProductDialog.vue


+ 0 - 0
pc-v3/src/components/ShowPagesDialog.vue → 工作空间/产研/权益/汇丰全行/产品原型/pc-demo/src/components/ShowPagesDialog.vue


+ 0 - 0
pc-v3/src/components/crowdNameList/AdjustMemberDialog.vue → 工作空间/产研/权益/汇丰全行/产品原型/pc-demo/src/components/crowdNameList/AdjustMemberDialog.vue


+ 0 - 0
pc-v3/src/components/crowdNameList/UploadAdjustDialog.vue → 工作空间/产研/权益/汇丰全行/产品原型/pc-demo/src/components/crowdNameList/UploadAdjustDialog.vue


+ 0 - 0
pc-v3/src/components/crowdTask/AddRuleGroupDialog.vue → 工作空间/产研/权益/汇丰全行/产品原型/pc-demo/src/components/crowdTask/AddRuleGroupDialog.vue


+ 0 - 0
pc-v3/src/components/crowdTask/SampleDetailDialog.vue → 工作空间/产研/权益/汇丰全行/产品原型/pc-demo/src/components/crowdTask/SampleDetailDialog.vue


+ 0 - 0
pc-v3/src/components/ruleGroup/RuleEditDialog.vue → 工作空间/产研/权益/汇丰全行/产品原型/pc-demo/src/components/ruleGroup/RuleEditDialog.vue


+ 0 - 0
pc-v3/src/components/tag/RuleBuilder.vue → 工作空间/产研/权益/汇丰全行/产品原型/pc-demo/src/components/tag/RuleBuilder.vue


+ 0 - 0
pc-v3/src/config/metaRules.js → 工作空间/产研/权益/汇丰全行/产品原型/pc-demo/src/config/metaRules.js


+ 0 - 0
pc-v3/src/config/tagParams.js → 工作空间/产研/权益/汇丰全行/产品原型/pc-demo/src/config/tagParams.js


+ 0 - 0
pc-v3/src/main.js → 工作空间/产研/权益/汇丰全行/产品原型/pc-demo/src/main.js


+ 0 - 0
pc-v3/src/mock/index.js → 工作空间/产研/权益/汇丰全行/产品原型/pc-demo/src/mock/index.js


+ 0 - 0
pc-v3/src/router/index.js → 工作空间/产研/权益/汇丰全行/产品原型/pc-demo/src/router/index.js


+ 0 - 0
pc-v3/src/store/crowdNameListStore.js → 工作空间/产研/权益/汇丰全行/产品原型/pc-demo/src/store/crowdNameListStore.js


+ 0 - 0
pc-v3/src/store/crowdTaskStore.js → 工作空间/产研/权益/汇丰全行/产品原型/pc-demo/src/store/crowdTaskStore.js


+ 0 - 0
pc-v3/src/store/ruleGroupStore.js → 工作空间/产研/权益/汇丰全行/产品原型/pc-demo/src/store/ruleGroupStore.js


+ 0 - 0
pc-v3/src/store/smsTemplateStore.js → 工作空间/产研/权益/汇丰全行/产品原型/pc-demo/src/store/smsTemplateStore.js


+ 0 - 0
pc-v3/src/store/tagStore.js → 工作空间/产研/权益/汇丰全行/产品原型/pc-demo/src/store/tagStore.js


+ 0 - 0
pc-v3/src/styles/quill.css → 工作空间/产研/权益/汇丰全行/产品原型/pc-demo/src/styles/quill.css


+ 0 - 0
pc-v3/src/utils/linkOptions.js → 工作空间/产研/权益/汇丰全行/产品原型/pc-demo/src/utils/linkOptions.js


+ 0 - 0
pc-v3/src/utils/request.js → 工作空间/产研/权益/汇丰全行/产品原型/pc-demo/src/utils/request.js


+ 0 - 0
pc-v3/src/views/AddEquityProduct.vue → 工作空间/产研/权益/汇丰全行/产品原型/pc-demo/src/views/AddEquityProduct.vue


+ 0 - 0
pc-v3/src/views/AuditDetail.vue → 工作空间/产研/权益/汇丰全行/产品原型/pc-demo/src/views/AuditDetail.vue


+ 0 - 0
pc-v3/src/views/AuditEquityProduct.vue → 工作空间/产研/权益/汇丰全行/产品原型/pc-demo/src/views/AuditEquityProduct.vue


+ 0 - 0
pc-v3/src/views/AuditList.vue → 工作空间/产研/权益/汇丰全行/产品原型/pc-demo/src/views/AuditList.vue


+ 0 - 0
pc-v3/src/views/CampaignAuditDetail.vue → 工作空间/产研/权益/汇丰全行/产品原型/pc-demo/src/views/CampaignAuditDetail.vue


+ 0 - 0
pc-v3/src/views/CampaignAuditList.vue → 工作空间/产研/权益/汇丰全行/产品原型/pc-demo/src/views/CampaignAuditList.vue


+ 0 - 0
pc-v3/src/views/CampaignManagement.vue → 工作空间/产研/权益/汇丰全行/产品原型/pc-demo/src/views/CampaignManagement.vue


+ 0 - 0
pc-v3/src/views/CashDiscountGrant.vue → 工作空间/产研/权益/汇丰全行/产品原型/pc-demo/src/views/CashDiscountGrant.vue


+ 0 - 0
pc-v3/src/views/ChannelManagement.vue → 工作空间/产研/权益/汇丰全行/产品原型/pc-demo/src/views/ChannelManagement.vue


+ 0 - 0
pc-v3/src/views/CreditCardEquity.vue → 工作空间/产研/权益/汇丰全行/产品原型/pc-demo/src/views/CreditCardEquity.vue


+ 0 - 0
pc-v3/src/views/CrowdNameListEdit.vue → 工作空间/产研/权益/汇丰全行/产品原型/pc-demo/src/views/CrowdNameListEdit.vue


+ 0 - 0
pc-v3/src/views/CrowdTaskEdit.vue → 工作空间/产研/权益/汇丰全行/产品原型/pc-demo/src/views/CrowdTaskEdit.vue


+ 0 - 0
pc-v3/src/views/CrowdTaskList.vue → 工作空间/产研/权益/汇丰全行/产品原型/pc-demo/src/views/CrowdTaskList.vue


+ 0 - 0
pc-v3/src/views/CrowdTaskView.vue → 工作空间/产研/权益/汇丰全行/产品原型/pc-demo/src/views/CrowdTaskView.vue


+ 0 - 0
pc-v3/src/views/CustomerEquityGrant.vue → 工作空间/产研/权益/汇丰全行/产品原型/pc-demo/src/views/CustomerEquityGrant.vue


+ 0 - 0
pc-v3/src/views/EditEquityProduct.vue → 工作空间/产研/权益/汇丰全行/产品原型/pc-demo/src/views/EditEquityProduct.vue


+ 0 - 0
pc-v3/src/views/EquityGrantCampaign.vue → 工作空间/产研/权益/汇丰全行/产品原型/pc-demo/src/views/EquityGrantCampaign.vue


+ 0 - 0
pc-v3/src/views/EquityGrantCampaignEdit.vue → 工作空间/产研/权益/汇丰全行/产品原型/pc-demo/src/views/EquityGrantCampaignEdit.vue


+ 0 - 0
pc-v3/src/views/EquityGrantCampaignView.vue → 工作空间/产研/权益/汇丰全行/产品原型/pc-demo/src/views/EquityGrantCampaignView.vue


+ 0 - 0
pc-v3/src/views/EquityProductCoupons.vue → 工作空间/产研/权益/汇丰全行/产品原型/pc-demo/src/views/EquityProductCoupons.vue


+ 0 - 0
pc-v3/src/views/EquityProducts.vue → 工作空间/产研/权益/汇丰全行/产品原型/pc-demo/src/views/EquityProducts.vue


+ 0 - 0
pc-v3/src/views/GrantTaskDetail.vue → 工作空间/产研/权益/汇丰全行/产品原型/pc-demo/src/views/GrantTaskDetail.vue


+ 0 - 0
pc-v3/src/views/GrantTaskList.vue → 工作空间/产研/权益/汇丰全行/产品原型/pc-demo/src/views/GrantTaskList.vue


+ 0 - 0
pc-v3/src/views/Login.vue → 工作空间/产研/权益/汇丰全行/产品原型/pc-demo/src/views/Login.vue


+ 0 - 0
pc-v3/src/views/PageAssembly.vue → 工作空间/产研/权益/汇丰全行/产品原型/pc-demo/src/views/PageAssembly.vue


+ 0 - 0
pc-v3/src/views/PageHomeConfig.vue → 工作空间/产研/权益/汇丰全行/产品原型/pc-demo/src/views/PageHomeConfig.vue


+ 0 - 0
pc-v3/src/views/PageManagement.vue → 工作空间/产研/权益/汇丰全行/产品原型/pc-demo/src/views/PageManagement.vue


+ 0 - 0
pc-v3/src/views/PageZoneConfig.vue → 工作空间/产研/权益/汇丰全行/产品原型/pc-demo/src/views/PageZoneConfig.vue


+ 0 - 0
pc-v3/src/views/PointsDetail.vue → 工作空间/产研/权益/汇丰全行/产品原型/pc-demo/src/views/PointsDetail.vue


+ 0 - 0
pc-v3/src/views/RuleGroupAuditDetail.vue → 工作空间/产研/权益/汇丰全行/产品原型/pc-demo/src/views/RuleGroupAuditDetail.vue


+ 0 - 0
pc-v3/src/views/RuleGroupAuditList.vue → 工作空间/产研/权益/汇丰全行/产品原型/pc-demo/src/views/RuleGroupAuditList.vue


+ 0 - 0
pc-v3/src/views/RuleGroupEdit.vue → 工作空间/产研/权益/汇丰全行/产品原型/pc-demo/src/views/RuleGroupEdit.vue


+ 0 - 0
pc-v3/src/views/RuleGroupList.vue → 工作空间/产研/权益/汇丰全行/产品原型/pc-demo/src/views/RuleGroupList.vue


この差分においてかなりの量のファイルが変更されているため、一部のファイルを表示していません