From c1481ca6c6b47da8d57a44babab2d527e3f03ecc Mon Sep 17 00:00:00 2001 From: DU Date: Thu, 15 Oct 2026 19:24:17 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E9=A3=8E=E6=8E=A7=E4=B8=8E?= =?UTF-8?q?=E5=AE=A1=E8=AE=A1=E9=A1=B5=E9=9D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 新增 src/views/risk/index.vue:风控预警 Tab(异常行为检测、自报自审检测)+ 审计日志 Tab(筛选/分页/展开前后数据) - 新增 src/api/risk/index.js:audit/log 与 anti/farm 检测接口封装 - 风控预警列表与处置无后端接口,保留占位 - 同步更新 PAGES_TODO / CURRENT_STATUS / DEVELOPMENT_LOG;提交前 eslint 与 build:prod 通过 --- docs/development/CURRENT_STATUS.md | 1 + docs/development/DEVELOPMENT_LOG.md | 8 + docs/development/PAGES_TODO.md | 4 +- src/api/risk/index.js | 25 ++ src/views/risk/index.vue | 372 ++++++++++++++++++++++++++++ 5 files changed, 408 insertions(+), 2 deletions(-) create mode 100644 src/api/risk/index.js create mode 100644 src/views/risk/index.vue diff --git a/docs/development/CURRENT_STATUS.md b/docs/development/CURRENT_STATUS.md index 01210ab..17cbd8c 100644 --- a/docs/development/CURRENT_STATUS.md +++ b/docs/development/CURRENT_STATUS.md @@ -41,6 +41,7 @@ | 申诉台账 | `src/views/points/appeal/index.vue` | `points/appeal/index` | 已开发(2026-10-15),待测试。独立页(抄隐患台账 + 审批):列表 `appeal/todoList`、详情 `appeal/detail/{id}`、审批 `appeal/completeFlow`(taskId 由 `flowable/busiInfo/getProcessDetail` 补全)。待联调确认:completeFlow 的 taskId 来源、改判补分 `adjustPoints` 传参 | | 安全兑换管理 | `src/views/exchange/security/index.vue` | `exchange/security/index` | 已开发(2026-10-15),待测试。安全校验总开关 + 兑换限额 + 预警与大额审批 + 防刷配置;接口 `exchange/config/*`、`anti/farm/*`。“校验配置”为前端本地一致性校验 | | 数据分析 | `src/views/analysis/index.vue` | `analysis/index` | 已开发(2026-10-15),待测试。处理时效(按级别)与积分排行(积分/上报/兑换)左右一行;分类/级别分布用 echarts;月度运营报告 + 导出。按甲方要求无隐患热力图、无顶部筛选列;“超期未处理表”无接口未做 | +| 风控与审计 | `src/views/risk/index.vue` | `risk/index` | 部分开发(2026-10-15),待测试。审计日志 Tab 完整(`audit/log/getListByPage`);风控预警 Tab 提供异常行为检测 / 自报自审检测,**预警列表与处置无接口保留占位** | | 隐患流程配置 | `src/views/flowable/hazardConfig/index.vue` | `flowable/hazardConfig/index` | 已完成列表、筛选、分页、新增、修改、状态 Tag、删除和厂区权限展示;新增“流程类型”字段(`bizType`,字典 `flow_biz_type`)并在列表以 Tag 展示;分页按真实 `data.list/data.total` 解析 | | 切换日志 | `src/views/flowable/switchLog/index.vue` | `flowable/switchLog/index` | 空白页面,无明确列表接口 | diff --git a/docs/development/DEVELOPMENT_LOG.md b/docs/development/DEVELOPMENT_LOG.md index 56593c3..f0f2296 100644 --- a/docs/development/DEVELOPMENT_LOG.md +++ b/docs/development/DEVELOPMENT_LOG.md @@ -1,5 +1,13 @@ # 开发日志 +## 2026-10-15:新增 Web 风控与审计页面(W8) + +- 新增 `src/views/risk/index.vue` + `src/api/risk/index.js`,两个 Tab: + - **风控预警**:异常行为检测(`anti/farm/detectAll`,按用户返回上报/积分获取/兑换三项校验 + 综合结论)、自报自审检测(`anti/farm/detectSelfAudit`,上报人+审核人)。**预警列表与处置(放行/冻结 24h/黑名单)后端无接口,保留占位说明**;防刷 4 维度开关已在「安全兑换管理」维护,此处不重复。 + - **审计日志**:`audit/log/getListByPage`,筛选(操作类型/操作人/业务单号)+ 分页 + 展开显示操作前/后 JSON。 +- 菜单(需后端配置):一级「分析与风控」→「风控与审计」,路由 `risk/index`,组件 `risk/index`(`/risk/index`)。 +- 验证:`eslint --no-ignore` 通过、`npm run build:prod` 通过(仅既有 warning)。 + ## 2026-10-15:新增 Web 数据分析页面(W6) - 新增 `src/views/analysis/index.vue` + `src/api/analysis/index.js`。 diff --git a/docs/development/PAGES_TODO.md b/docs/development/PAGES_TODO.md index fbec35c..2530bb3 100644 --- a/docs/development/PAGES_TODO.md +++ b/docs/development/PAGES_TODO.md @@ -40,7 +40,7 @@ | 16 | 积分与商城 | 商城运营 › 日常积分兑换专区 | ❌ | ⛔ | ⛔ | 同上 | | 17 | 安全兑换管理 | 安全兑换管理(总开关/限额/大额审批/防刷配置) | ⚠️ 待测试 | ✅ | ✅ | **已开发(2026-10-15)**:`src/views/exchange/security/index.vue` + `src/api/exchange/config.js`。接口 `exchange/config/active`·`switch/status`·`switch/toggle`·`add`·`updateById`、`anti/farm/active`·`updateById`。注:“校验配置”为前端本地一致性校验(无后端校验配置接口) | | 18 | 分析与风控 | 数据分析(时效/排行/分类分布/级别分布/月度报告导出;无热力图、无顶部筛选) | ⚠️ 待测试 | ✅ | ✅ | **已开发(2026-10-15)**:`src/views/analysis/index.vue` + `src/api/analysis/index.js`。接口 `stats/category`·`stats/level`·`timeliness/level`·`ranking/points|report|exchange`·`report/monthly`(+`/export`)。“超期未处理表”无接口,暂未做 | -| 19 | 分析与风控 | 风控与审计(Tab1 风控预警 + Tab2 审计日志) | ❌ | ⚠️ | ⚠️ | 审计日志 ✅:`audit/log/getListByPage`、`audit/log/biz/{bizId}`([操作审计日志](../api/modules/16-audit-log.md));**风控预警列表 + 处置(放行/冻结 24h/黑名单)无接口**,Tab1 需等后端 | +| 19 | 分析与风控 | 风控与审计(Tab1 风控预警 + Tab2 审计日志) | ⚠️ 待测试 | ⚠️ | ⚠️ | **部分已开发(2026-10-15)**:`src/views/risk/index.vue` + `src/api/risk/index.js`。① 风控预警 Tab:异常行为检测 `anti/farm/detectAll`、自报自审检测 `anti/farm/detectSelfAudit`;**预警列表 + 处置(放行/冻结 24h/黑名单)无接口,保留占位**。② 审计日志 Tab:`audit/log/getListByPage` 完整可用 | | 20 | 流程管理 | 隐患流程配置 | ✅ | ✅ | — | [flowable/hazardConfig](../../src/views/flowable/hazardConfig/index.vue) | | 21 | 流程管理 | 隐患上报(流程发起) | ✅ | ✅ | — | [flowable/task/myProcess](../../src/views/flowable/task/myProcess) | | 22 | 流程管理 | 隐患审批(待办/已办) | ✅ | ✅ | — | [flowable/task/todo](../../src/views/flowable/task/todo) | @@ -215,6 +215,6 @@ | 编号 | 端 | 功能 / 页面 | 关键接口 | 建议文件(页面 / 封装) | 优先级 | 状态 | 依赖 / 备注 | | --- | --- | --- | --- | --- | --- | --- | --- | | W7 | Web | 商城运营(订单主体) | `exchange/order/getListByPage`·`info`·`refund/{orderId}`、`points/order/track/list/{orderId}`、`exchange/item/*` | `src/views/exchange/mall/index.vue` + `src/api/exchange/order.js` | 中 | ☐ | “惠服对接状态卡”无接口,后续再补,不阻塞订单部分 | -| W8 | Web | 风控与审计(审计日志 Tab) | `audit/log/getListByPage`、`audit/log/biz/{bizId}` | `src/views/analysis/risk/index.vue` + `src/api/audit/log.js` | 中 | ☐ | 风控预警 Tab 待后端接口 | +| W8 | Web | 风控与审计 | `audit/log/getListByPage`、`anti/farm/detectAll`、`anti/farm/detectSelfAudit` | `src/views/risk/index.vue` + `src/api/risk/index.js` | 中 | ◐ 待测试 | **部分已开发(2026-10-15)**,待测试。审计日志 Tab 完整;风控预警 Tab 提供异常检测/自报自审检测,**预警列表与处置无接口(占位)**。菜单:一级「分析与风控」→「风控与审计」,路由 `risk/index`,组件 `risk/index`(`/risk/index`) | > 约定:每完成一项 → 勾选状态 → 同步更新第三节状态、[DEVELOPMENT_LOG.md](./DEVELOPMENT_LOG.md) 与 [page-api-map.md](../api/page-api-map.md)。 diff --git a/src/api/risk/index.js b/src/api/risk/index.js new file mode 100644 index 0000000..5933f36 --- /dev/null +++ b/src/api/risk/index.js @@ -0,0 +1,25 @@ +import request from '@/utils/request' + +// 审计日志分页查询(操作类型 / 操作人 / 业务单号) +export function listAuditLogs(params) { + return request({ url: '/business/audit/log/getListByPage', method: 'get', params }) +} + +// 按业务单号查询关联审计日志(时间倒序) +export function listAuditLogsByBiz(bizId) { + return request({ url: '/business/audit/log/biz/' + bizId, method: 'get' }) +} + +// 异常行为一键检测(指定用户,聚合上报/积分获取/兑换 3 类校验) +export function detectAbnormal(userId) { + return request({ url: '/business/points/anti/farm/detectAll', method: 'get', params: { userId }}) +} + +// 自报自审行为检测(上报人 = 审核人?) +export function detectSelfAudit(reporterId, auditorId) { + return request({ + url: '/business/points/anti/farm/detectSelfAudit', + method: 'get', + params: { reporterId, auditorId } + }) +} diff --git a/src/views/risk/index.vue b/src/views/risk/index.vue new file mode 100644 index 0000000..b3cbc7c --- /dev/null +++ b/src/views/risk/index.vue @@ -0,0 +1,372 @@ + + + + +