diff --git a/.claude/settings.local.json b/.claude/settings.local.json index 45564d9..602b071 100644 --- a/.claude/settings.local.json +++ b/.claude/settings.local.json @@ -44,7 +44,20 @@ "Bash(git rm:*)", "Bash(git add:*)", "Skill(document-skills:frontend-design)", - "Bash(test:*)" + "Bash(test:*)", + "mcp__chrome-devtools__list_pages", + "mcp__chrome-devtools__navigate_page", + "mcp__chrome-devtools__take_snapshot", + "mcp__chrome-devtools__take_screenshot", + "mcp__zai-mcp-server__ui_to_artifact", + "mcp__chrome-devtools__click", + "Skill(backend-restart)", + "Bash(tasklist:*)", + "Bash(wmic:*)", + "Bash(mvn spring-boot:run:*)", + "Bash(timeout:*)", + "mcp__chrome-devtools__wait_for", + "Bash(start cmd /k \"mvn spring-boot:run -pl ruoyi-admin\")" ] }, "enabledMcpjsonServers": [ diff --git a/CLAUDE.md b/CLAUDE.md index d2453a5..28cd2d0 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -4,6 +4,7 @@ - 在进行需求分析与分解任务时,按照不同的模块分为不同的文件,创建模块名的文件夹并将对应文件保存在文件夹中,然后对模块的功能文件进行继续分解 - 在使用/openspec:proposal时,自动开启深度思考模式,输入 “think more”、“think a lot”、“think harder” 或 “think longer” 触发更深层的思考 - 在执行/openspec:apply后,使用code-simplifier 进行代码精简 +- 在分析生成需求文档时,每次都需要在doc目录下新建文件夹并以需求内容为命名 ## Communication - 永远使用简体中文进行思考和对话 diff --git a/doc/frontend/上传数据页面UI设计文档.md b/doc/frontend/上传数据页面UI设计文档.md new file mode 100644 index 0000000..4a271ac --- /dev/null +++ b/doc/frontend/上传数据页面UI设计文档.md @@ -0,0 +1,919 @@ +# 上传数据页面 UI 设计文档 + +## 1. 页面概述 + +### 1.1 功能描述 +上传数据页面是纪检初核系统中项目管理模块的核心页面,支持在一个项目中上传多个主体/账户数据进行汇总/独立分析。提供流水导入、征信导入、员工家庭关系导入、名单库选择等功能。 + +### 1.2 页面路径 +- 菜单位置:项目管理 > 项目详情 > 上传数据 +- 路由路径:`/project/:id/upload-data` + +### 1.3 页面状态 +- 项目状态:已完成 +- 最后更新时间:2024-01-20 15:30 + +--- + +## 2. 页面布局 + +### 2.1 整体结构 +``` +┌─────────────────────────────────────────────────────────────┐ +│ 面包屑导航:项目管理 / 项目详情 / 上传数据 │ +├─────────────────────────────────────────────────────────────┤ +│ 页面标题区 │ +│ ┌───────────────────────────────────────────────────────┐ │ +│ │ 上传数据 │ │ +│ │ 项目状态:已完成 最后更新:2024-01-20 15:30 │ │ +│ │ 支持在一个项目中上传多个主体/账户数据,进行汇总/独立分析 │ │ +│ └───────────────────────────────────────────────────────┘ │ +├─────────────────────────────────────────────────────────────┤ +│ 主要内容区(网格布局) │ +│ ┌─────────────────┐ ┌─────────────────┐ │ +│ │ 流水导入 │ │ 已上传流水查询 │ │ +│ │ [上传组件] │ │ [上传组件] │ │ +│ └─────────────────┘ └─────────────────┘ │ +│ ┌─────────────────┐ ┌─────────────────┐ │ +│ │ 征信导入 │ │ 员工家庭关系导入 │ │ +│ │ [上传组件] │ │ [上传组件] │ │ +│ └─────────────────┘ └─────────────────┘ │ +│ ┌─────────────────────────────────────────────┐ │ +│ │ 名单库选择 │ │ +│ │ ☑ 高风险人员名单(68人) ☑ 历史可疑人员名单 │ │ +│ │ ☑ 监管关注名单(32人) │ │ +│ └─────────────────────────────────────────────┘ │ +├─────────────────────────────────────────────────────────────┤ +│ 数据质量检查区 │ +│ ┌────────────────────────────────────────────────────────┐ │ +│ │ 数据完整性 格式一致性 余额连续性 │ │ +│ │ 98.5% 95.2% 92.8% │ │ +│ │ 检查结果: [查看详情] │ │ +│ │ • 发现 23 条数据格式不一致 │ │ +│ │ • 发现 5 条余额连续性异常 │ │ +│ │ • 发现 12 条缺失关键字段 │ │ +│ └────────────────────────────────────────────────────────┘ │ +├─────────────────────────────────────────────────────────────┤ +│ 操作按钮区 │ +│ [拉取本行信息] [生成报告] │ +└─────────────────────────────────────────────────────────────┘ +``` + +### 2.2 响应式布局 +- 桌面端(≥1200px):4列网格布局 +- 平板端(768px-1199px):2列网格布局 +- 移动端(<768px):单列布局 + +--- + +## 3. 组件设计 + +### 3.1 FileUploadCard 上传卡片组件 + +**Props:** +```typescript +interface FileUploadCardProps { + title: string; // 卡片标题 + description: string; // 描述文字 + acceptTypes: string[]; // 接受的文件类型,如 ['xlsx', 'xls', 'pdf'] + maxSize?: number; // 最大文件大小(MB),默认 10 + multiple?: boolean; // 是否支持多文件上传 + uploadUrl: string; // 上传接口地址 + onUploadSuccess?: (files: UploadedFile[]) => void; + onUploadError?: (error: Error) => void; + showFileList?: boolean; // 是否显示已上传文件列表 +} +``` + +**UI 结构:** +```vue + + + + + {{ title }} + + + + + + + + + + 拖拽文件到此处或点击上传 + 支持格式: {{ acceptTypes.join(', ') }} + + + + + 已上传文件 + + + + + + + + {{ row.status === 'success' ? '成功' : '失败' }} + + + + + + + 删除 + + + + + + + +``` + +### 3.2 CheckboxGroupSelector 名单库选择组件 + +**Props:** +```typescript +interface CheckboxGroupSelectorProps { + options: NameListOption[]; + modelValue: string[]; + onChange: (value: string[]) => void; +} + +interface NameListOption { + label: string; // 显示文本 + value: string; // 选中值 + count: number; // 人数统计 + disabled?: boolean; +} +``` + +**UI 结构:** +```vue + + + + 名单库选择 + + 选择中介库管理内的名单 + + + {{ option.label }}({{ option.count }}人) + + + + +``` + +### 3.3 DataQualityPanel 数据质量检查面板 + +**Props:** +```typescript +interface DataQualityPanelProps { + metrics: QualityMetric[]; + issues: QualityIssue[]; + onCheckQuality?: () => void; + onViewDetails?: (issue: QualityIssue) => void; +} + +interface QualityMetric { + name: string; // 指标名称 + value: number; // 百分比值 + status: 'good' | 'warning' | 'error'; +} + +interface QualityIssue { + type: string; // 问题类型 + count: number; // 数量 + description: string; + details?: any[]; +} +``` + +**UI 结构:** +```vue + + + + + 数据质量检查 + + 重新检查 + + + + + + + + + {{ metric.name }} + + + + + + 检查结果 + + + 发现 {{ issue.count }} {{ issue.description }} + + + 查看详情 → + + + +``` + +--- + +## 4. 交互说明 + +### 4.1 文件上传流程 + +1. **拖拽上传** + - 用户拖拽文件到上传区域 + - 显示上传进度条 + - 上传成功后显示成功提示 + - 自动添加到已上传文件列表 + +2. **点击上传** + - 点击上传区域触发文件选择对话框 + - 选择文件后开始上传 + - 显示上传进度 + +3. **文件验证** + - 文件格式验证:只接受指定格式 + - 文件大小验证:超过限制显示错误提示 + - 重复文件验证:同名文件提示是否覆盖 + +4. **上传状态** + - 上传中:显示进度条 + - 上传成功:绿色勾选标记 + - 上传失败:红色错误标记,显示错误信息 + +### 4.2 名单库选择 + +1. 默认选中全部名单库 +2. 点击复选框切换选中状态 +3. 实时更新选中人数统计 +4. 取消选中时显示确认提示 + +### 4.3 数据质量检查 + +1. **自动触发** + - 文件上传完成后自动触发 + - 显示检查进度 + +2. **手动触发** + - 点击"重新检查"按钮 + - 覆盖之前的检查结果 + +3. **结果展示** + - 三个核心指标以环形进度图展示 + - 颜色指示:绿色(≥95%)、黄色(85-94%)、红色(<85%) + - 问题列表按严重程度排序 + +### 4.4 按钮操作 + +1. **拉取本行信息** + - 点击后显示加载状态 + - 从本行系统拉取相关数据 + - 完成后显示成功提示并刷新页面 + +2. **生成报告** + - 验证必须上传至少一个文件 + - 显示报告生成进度 + - 生成成功后跳转到报告页面 + +--- + +## 5. 数据结构 + +### 5.1 后端接口 + +#### 5.1.1 获取项目上传数据状态 +```typescript +GET /api/project/{projectId}/upload-status + +Response: +{ + "code": 200, + "data": { + "projectStatus": "已完成", + "lastUpdateTime": "2024-01-20 15:30:00", + "uploadedFiles": { + "transactionFiles": [], // 流水文件列表 + "inquiryFiles": [], // 征信文件列表 + "familyRelationFiles": [] // 家庭关系文件列表 + }, + "selectedNameLists": [], // 已选名单库 + "qualityMetrics": { // 质量指标 + "completeness": 98.5, + "consistency": 95.2, + "continuity": 92.8 + }, + "qualityIssues": [] // 质量问题列表 + } +} +``` + +#### 5.1.2 上传文件接口 +```typescript +POST /api/project/{projectId}/upload +Content-Type: multipart/form-data + +Body: +{ + "fileType": "transaction" | "inquiry" | "family_relation", + "files": File[] +} + +Response: +{ + "code": 200, + "data": { + "successCount": 2, + "failedCount": 0, + "uploadedFiles": [ + { + "fileId": "123456", + "fileName": "流水数据.xlsx", + "fileSize": 2048576, + "uploadTime": "2024-01-20 15:30:00", + "status": "success" + } + ] + } +} +``` + +#### 5.1.3 删除文件接口 +```typescript +DELETE /api/project/{projectId}/file/{fileId} + +Response: +{ + "code": 200, + "msg": "删除成功" +} +``` + +#### 5.1.4 获取名单库列表 +```typescript +GET /api/name-list/options + +Response: +{ + "code": 200, + "data": [ + { + "value": "high_risk", + "label": "高风险人员名单", + "count": 68 + }, + { + "value": "history_suspicious", + "label": "历史可疑人员名单", + "count": 45 + }, + { + "value": "regulatory_focus", + "label": "监管关注名单", + "count": 32 + } + ] +} +``` + +#### 5.1.5 更新名单库选择 +```typescript +PUT /api/project/{projectId}/name-lists + +Body: +{ + "selectedLists": ["high_risk", "history_suspicious", "regulatory_focus"] +} + +Response: +{ + "code": 200, + "msg": "更新成功" +} +``` + +#### 5.1.6 执行数据质量检查 +```typescript +POST /api/project/{projectId}/quality-check + +Response: +{ + "code": 200, + "data": { + "checkId": "qc_123456", + "status": "completed", + "metrics": { + "completeness": 98.5, + "consistency": 95.2, + "continuity": 92.8 + }, + "issues": [ + { + "type": "format_inconsistency", + "count": 23, + "description": "条数据格式不一致" + }, + { + "type": "balance_anomaly", + "count": 5, + "description": "条余额连续性异常" + }, + { + "type": "missing_field", + "count": 12, + "description": "条缺失关键字段" + } + ] + } +} +``` + +#### 5.1.7 拉取本行信息 +```typescript +POST /api/project/{projectId}/pull-bank-info + +Response: +{ + "code": 200, + "msg": "拉取成功", + "data": { + "pulledRecords": 156, + "pullTime": "2024-01-20 15:35:00" + } +} +``` + +#### 5.1.8 生成报告 +```typescript +POST /api/project/{projectId}/generate-report + +Response: +{ + "code": 200, + "data": { + "reportId": "rpt_789012", + "reportUrl": "/project/123/report/rpt_789012", + "generateTime": "2024-01-20 15:40:00" + } +} +``` + +### 5.2 前端数据模型 + +```typescript +// 上传文件类型 +type UploadFileType = 'transaction' | 'inquiry' | 'family_relation'; + +// 上传文件状态 +type UploadStatus = 'uploading' | 'success' | 'error'; + +// 上传的文件 +interface UploadedFile { + fileId: string; + fileName: string; + fileSize: number; + uploadTime: string; + status: UploadStatus; + errorMessage?: string; +} + +// 名单库选项 +interface NameListOption { + value: string; + label: string; + count: number; + disabled?: boolean; +} + +// 质量指标 +interface QualityMetric { + name: string; + value: number; + status: 'good' | 'warning' | 'error'; +} + +// 质量问题 +interface QualityIssue { + type: string; + count: number; + description: string; + details?: any[]; +} + +// 项目上传数据状态 +interface ProjectUploadStatus { + projectStatus: string; + lastUpdateTime: string; + uploadedFiles: { + transactionFiles: UploadedFile[]; + inquiryFiles: UploadedFile[]; + familyRelationFiles: UploadedFile[]; + }; + selectedNameLists: string[]; + qualityMetrics: { + completeness: number; + consistency: number; + continuity: number; + }; + qualityIssues: QualityIssue[]; +} +``` + +--- + +## 6. 样式规范 + +### 6.1 颜色规范 +```scss +// 主色 +$primary-color: #409EFF; +$success-color: #67C23A; +$warning-color: #E6A23C; +$danger-color: #F56C6C; +$info-color: #909399; + +// 中性色 +$text-primary: #303133; +$text-regular: #606266; +$text-secondary: #909399; +$text-placeholder: #C0C4CC; + +// 边框色 +$border-base: #DCDFE6; +$border-light: #E4E7ED; +$border-lighter: #EBEEF5; +$border-extra-light: #F2F6FC; + +// 背景色 +$bg-color: #F5F7FA; +$card-bg: #FFFFFF; +``` + +### 6.2 间距规范 +```scss +$spacing-xs: 4px; +$spacing-sm: 8px; +$spacing-md: 16px; +$spacing-lg: 24px; +$spacing-xl: 32px; +``` + +### 6.3 圆角规范 +```scss +$border-radius-sm: 2px; +$border-radius-base: 4px; +$border-radius-lg: 8px; +$border-radius-circle: 50%; +``` + +### 6.4 阴影规范 +```scss +$box-shadow-base: 0 2px 4px rgba(0, 0, 0, 0.12), 0 0 6px rgba(0, 0, 0, 0.04); +$box-shadow-dark: 0 2px 8px rgba(0, 0, 0, 0.15), 0 0 6px rgba(0, 0, 0, 0.1); +$box-shadow-light: 0 2px 12px 0 rgba(0, 0, 0, 0.1); +``` + +--- + +## 7. 组件样式代码 + +### 7.1 上传卡片样式 +```scss +.upload-card { + height: 100%; + + .card-header { + display: flex; + align-items: center; + justify-content: space-between; + + h3 { + margin: 0; + font-size: 16px; + font-weight: 500; + color: $text-primary; + } + + .el-icon-info { + color: $info-color; + cursor: help; + } + } + + .upload-area { + margin-bottom: $spacing-md; + + .el-upload-dragger { + width: 100%; + height: 180px; + border: 2px dashed $border-base; + border-radius: $border-radius-lg; + background: $bg-color; + transition: all 0.3s; + + &:hover { + border-color: $primary-color; + background: #F0F7FF; + } + } + + .upload-content { + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + height: 100%; + + .el-icon-upload { + font-size: 48px; + color: $primary-color; + margin-bottom: $spacing-sm; + } + + p { + margin: $spacing-xs 0; + font-size: 14px; + color: $text-regular; + } + + .upload-tip { + font-size: 12px; + color: $text-secondary; + } + } + } + + .file-list { + border-top: 1px solid $border-light; + padding-top: $spacing-md; + + h4 { + margin: 0 0 $spacing-sm 0; + font-size: 14px; + color: $text-primary; + } + } +} +``` + +### 7.2 数据质量面板样式 +```scss +.quality-panel { + .panel-header { + display: flex; + align-items: center; + justify-content: space-between; + + h3 { + margin: 0; + font-size: 16px; + font-weight: 500; + } + } + + .metrics-container { + display: flex; + justify-content: space-around; + margin-bottom: $spacing-lg; + + .metric-item { + display: flex; + flex-direction: column; + align-items: center; + + .el-progress { + margin-bottom: $spacing-sm; + } + + .metric-name { + font-size: 14px; + color: $text-regular; + } + } + } + + .issues-section { + border-top: 1px solid $border-light; + padding-top: $spacing-md; + + h4 { + margin: 0 0 $spacing-md 0; + font-size: 14px; + color: $text-primary; + } + + .issue-item { + margin-bottom: $spacing-sm; + + &:last-child { + margin-bottom: 0; + } + } + } +} +``` + +### 7.3 页面整体布局样式 +```scss +.upload-data-page { + padding: $spacing-lg; + background: $bg-color; + min-height: calc(100vh - 84px); + + .page-header { + background: $card-bg; + padding: $spacing-lg; + border-radius: $border-radius-lg; + margin-bottom: $spacing-lg; + box-shadow: $box-shadow-base; + + h1 { + margin: 0 0 $spacing-sm 0; + font-size: 24px; + font-weight: 500; + } + + .page-info { + display: flex; + gap: $spacing-lg; + font-size: 14px; + color: $text-secondary; + margin-top: $spacing-sm; + + .info-item { + display: flex; + align-items: center; + + .label { + margin-right: $spacing-xs; + } + + .status { + color: $success-color; + } + } + } + + .page-description { + margin-top: $spacing-md; + padding: $spacing-md; + background: #F0F9FF; + border-left: 3px solid $primary-color; + border-radius: $border-radius-base; + font-size: 14px; + color: $text-regular; + } + } + + .upload-grid { + display: grid; + grid-template-columns: repeat(2, 1fr); + gap: $spacing-lg; + margin-bottom: $spacing-lg; + + @media (min-width: 1200px) { + grid-template-columns: repeat(4, 1fr); + } + + @media (max-width: 767px) { + grid-template-columns: 1fr; + } + } + + .full-width { + grid-column: 1 / -1; + } + + .action-bar { + display: flex; + justify-content: center; + gap: $spacing-lg; + margin-top: $spacing-xl; + } +} +``` + +--- + +## 8. 技术实现要点 + +### 8.1 文件上传 +- 使用 Element UI 的 `el-upload` 组件 +- 支持拖拽上传和点击上传 +- 实现文件类型和大小校验 +- 显示上传进度 +- 支持断点续传(可选) + +### 8.2 数据质量检查 +- 异步执行检查任务 +- 使用 WebSocket 或轮询获取检查进度 +- 实时更新进度和结果 + +### 8.3 状态管理 +- 使用 Vuex 管理上传状态 +- 缓存已上传文件列表 +- 同步名单库选择状态 + +### 8.4 性能优化 +- 文件分片上传大文件 +- 使用 Web Worker 处理文件预检查 +- 虚拟滚动展示大量文件列表 + +--- + +## 9. 测试要点 + +### 9.1 功能测试 +- 文件上传各种格式 +- 文件大小限制验证 +- 删除文件功能 +- 名单库选择功能 +- 数据质量检查准确性 +- 报告生成功能 + +### 9.2 兼容性测试 +- 主流浏览器兼容 +- 不同屏幕尺寸适配 +- 文件格式兼容性 + +### 9.3 性能测试 +- 大文件上传性能 +- 多文件同时上传 +- 页面加载性能 + +### 9.4 异常处理测试 +- 网络中断处理 +- 文件上传失败处理 +- 服务器错误处理 +- 文件格式错误处理 + +--- + +## 10. 附录 + +### 10.1 相关页面 +- 项目详情页:`/project/:id/detail` +- 参数配置页:`/project/:id/config` +- 初核结果页:`/project/:id/result` +- 报告页面:`/project/:id/report/:reportId` + +### 10.2 权限要求 +- 需要项目成员权限 +- 上传操作需要编辑权限 +- 删除操作需要删除权限 +- 生成报告需要报告权限 + +### 10.3 相关文档 +- [Element UI Upload 组件文档](https://element.eleme.cn/#/zh-CN/component/upload) +- [若依框架前端开发规范](../前端开发规范.md) +- [项目接口文档](../API文档/项目管理模块.md) + +--- + +**文档版本**: v1.0 +**创建时间**: 2024-01-30 +**最后更新**: 2024-01-30 +**文档状态**: 待评审 diff --git a/doc/原型图-上传数据页面.png b/doc/原型图-上传数据页面.png new file mode 100644 index 0000000..a39105c Binary files /dev/null and b/doc/原型图-上传数据页面.png differ diff --git a/doc/原型图开发设计文档.md b/doc/原型图开发设计文档.md new file mode 100644 index 0000000..4f71799 --- /dev/null +++ b/doc/原型图开发设计文档.md @@ -0,0 +1,821 @@ +# 纪检初核系统 - 原型图开发设计文档 + +## 一、项目概述 + +### 1.1 项目背景 +本项目是一个**纪检初核系统**,用于对银行信贷部门员工进行初步核查,通过分析银行流水、征信报告、员工关系等数据,识别潜在的违规行为和风险。 + +### 1.2 项目目标 +- 支持多维度数据导入(流水、征信、员工关系) +- 提供可配置的风险监测模型 +- 自动识别高风险人员并生成初核提示 +- 提供专项排查工作台进行深入分析 +- 支持关系图谱和资金流向分析 + +### 1.3 技术栈 +- **后端**: Spring Boot 3.5.8 + MyBatis 3.0.5 + MySQL 8.2.0 +- **前端**: Vue 2.6.12 + Element UI 2.15.14 +- **数据库**: MySQL(表前缀:ccdi_) + +--- + +## 二、页面结构与功能分析 + +### 2.1 页面导航结构 + +``` +纪检初核系统 +├── 项目管理 +│ ├── 项目详情 +│ ├── 上传数据 +│ ├── 参数配置 +│ └── 初核提示 +├── 初核结果 +│ ├── 专项排查工作台(高风险) +│ ├── 专项排查工作台(中风险) +│ └── 专项排查 +└── 流水明细查询 +``` + +--- + +### 2.2 页面1:上传数据 + +#### 功能描述 +支持在一个项目中上传多个主体/账户数据,进行汇总/独立分析。 + +#### 页面元素 +| 元素类型 | 元素名称/内容 | 说明 | +|---------|--------------|------| +| 项目信息 | 项目状态 | 显示项目当前状态(如:已完成) | +| | 最后更新时间 | 显示项目最后更新时间 | +| 上传模块1 | 流水导入 | 支持Excel、PDF格式文件批量上传 | +| | | 占位符:拖拽文件到此处或点击上传 | +| | | 支持格式:xlsx, xls, pdf | +| 上传模块2 | 已上传流水查询 | 支持HTML格式 | +| | | 占位符:拖拽文件到此处或点击上传 | +| 上传模块3 | 征信导入 | 支持HTML格式征信报告解析 | +| 上传模块4 | 员工家庭关系导入 | Excel模板上传员工家庭关系信息 | +| | | 支持格式:xlsx, xls | +| 名单库选择 | 高风险人员名单 | 复选框,显示人数(如68人) | +| | 历史可疑人员名单 | 复选框,显示人数(如45人) | +| | 监管关注名单 | 复选框,显示人数(如32人) | +| 数据质量检查 | 数据完整性 | 进度条,显示百分比(如98.5%) | +| | 格式一致性 | 进度条,显示百分比(如95.2%) | +| | 余额连续性 | 进度条,显示百分比(如92.8%) | +| | 检查结果 | 显示发现的问题数量 | +| 操作按钮 | 拉取本行信息 | 触发拉取银行内部信息 | +| | 生成报告 | 生成初核报告 | + +#### 数据模型 +```sql +-- 项目表 +CREATE TABLE ccdi_project ( + project_id BIGINT PRIMARY KEY AUTO_INCREMENT, + project_name VARCHAR(200) NOT NULL COMMENT '项目名称', + project_status VARCHAR(50) COMMENT '项目状态', + create_time DATETIME DEFAULT CURRENT_TIMESTAMP, + update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + create_by VARCHAR(100), + update_by VARCHAR(100), + remark VARCHAR(500) +) COMMENT '项目表'; + +-- 数据上传记录表 +CREATE TABLE ccdi_data_upload ( + upload_id BIGINT PRIMARY KEY AUTO_INCREMENT, + project_id BIGINT COMMENT '项目ID', + upload_type VARCHAR(50) COMMENT '上传类型:流水/征信/家庭关系', + file_name VARCHAR(500) COMMENT '文件名', + file_path VARCHAR(1000) COMMENT '文件路径', + upload_status VARCHAR(50) COMMENT '上传状态', + upload_time DATETIME COMMENT '上传时间', + create_time DATETIME DEFAULT CURRENT_TIMESTAMP, + create_by VARCHAR(100) +) COMMENT '数据上传记录表'; + +-- 名单库选择记录表 +CREATE TABLE ccdi_blacklist_selection ( + selection_id BIGINT PRIMARY KEY AUTO_INCREMENT, + project_id BIGINT COMMENT '项目ID', + blacklist_type VARCHAR(50) COMMENT '名单类型:高风险/历史可疑/监管关注', + blacklist_id BIGINT COMMENT '名单ID', + create_time DATETIME DEFAULT CURRENT_TIMESTAMP +) COMMENT '名单库选择记录表'; + +-- 数据质量检查表 +CREATE TABLE ccdi_data_quality ( + quality_id BIGINT PRIMARY KEY AUTO_INCREMENT, + project_id BIGINT COMMENT '项目ID', + check_item VARCHAR(100) COMMENT '检查项:完整性/一致性/连续性', + check_result DECIMAL(5,2) COMMENT '检查结果百分比', + issue_count INT COMMENT '问题数量', + issue_detail TEXT COMMENT '问题详情', + create_time DATETIME DEFAULT CURRENT_TIMESTAMP +) COMMENT '数据质量检查表'; +``` + +--- + +### 2.3 页面2:参数配置 + +#### 功能描述 +配置风险监测模型的阈值参数。 + +#### 页面元素 +| 元素类型 | 元素名称/内容 | 说明 | +|---------|--------------|------| +| 模型名称 | 大额交易模型 | 下拉选择 | +| 阈值参数配置表格 | | | +| 表格列1 | 监测项 | 如:单笔交易额 | +| 表格列2 | 描述 | 如:单笔超过该金额视为大额交易 | +| 表格列3 | 阈值设置 | 输入框,如:50000 | +| 表格列4 | 单位 | 如:元 | +| 操作按钮 | 保存配置 | 保存当前配置 | +| | 恢复默认 | 恢复默认值 | +| | 一键导出配置 | 导出配置文件 | + +#### 监测项配置 +1. **单笔交易额**: 50000元 +2. **累计交易额**: 5000000元 +3. **大额存现**: 200000元 +4. **短时多次存现**: 100000元/4小时 +5. **频繁转账**: 10次/日 +6. **转账频率**: 1000000元/日 + +#### 数据模型 +```sql +-- 风险模型表 +CREATE TABLE ccdi_risk_model ( + model_id BIGINT PRIMARY KEY AUTO_INCREMENT, + model_name VARCHAR(200) NOT NULL COMMENT '模型名称', + model_code VARCHAR(100) COMMENT '模型编码', + status VARCHAR(50) DEFAULT 'active' COMMENT '状态', + create_time DATETIME DEFAULT CURRENT_TIMESTAMP, + update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + create_by VARCHAR(100), + update_by VARCHAR(100) +) COMMENT '风险模型表'; + +-- 模型参数配置表 +CREATE TABLE ccdi_model_parameter ( + parameter_id BIGINT PRIMARY KEY AUTO_INCREMENT, + model_id BIGINT COMMENT '模型ID', + parameter_name VARCHAR(200) COMMENT '参数名称', + parameter_code VARCHAR(100) COMMENT '参数编码', + parameter_desc VARCHAR(500) COMMENT '参数描述', + threshold_value DECIMAL(20,2) COMMENT '阈值', + unit VARCHAR(50) COMMENT '单位', + create_time DATETIME DEFAULT CURRENT_TIMESTAMP, + update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP +) COMMENT '模型参数配置表'; +``` + +--- + +### 2.4 页面3:初核提示 + +#### 功能描述 +展示初核结果的总体概况,包括人员风险分布、模型触发情况、可疑交易明细等。 + +#### 页面元素 +| 元素类型 | 元素名称/内容 | 说明 | +|---------|--------------|------| +| 统计卡片 | 总人数 | 显示总人数(如500) | +| | 无预警人数 | 显示无预警人数(如432) | +| | 低风险 | 显示低风险人数(如38) | +| | 中风险 | 显示中风险人数(如20) | +| | 高风险 | 显示高风险人数(如10) | +| 模型触发情况表格 | 模型名称 | 如:大额交易监测 | +| | 触发数 | 触发次数 | +| | 触发人员 | 触发人员列表 | +| | 操作 | 查看详情 | +| 涉疑交易明细表 | 交易时间、可疑人员、关联人、关联员工、关系、摘要/交易类型、交易金额、操作 | | +| 高风险人员清单 | 姓名、身份证号、所属部门、风险评分、触发模型数、核心异常点、操作 | 复选框支持批量操作 | +| 中风险人员TOP10 | 姓名、身份证号、所属部门、触发模型、触发模型数、操作 | | +| 异常账户清单 | 账户号、开户人姓名、开户银行、异常类型、异常发生时间、状态、操作 | | +| 涉及违法人员清单表 | 姓名、身份证号、失信被执行人、刑事判决、行政处罚、公安涉案记录、限制高消费、违法信息更新时间、操作 | | +| 筛选条件 | 姓名/工号搜索 | 输入框 | +| | 部门筛选 | 下拉选择 | +| | 风险等级筛选 | 下拉选择(全部/高风险/中风险/低风险) | +| | 可疑人员类型筛选 | 下拉选择(全部/名单库命中/模型规则命中) | +| | 模型筛选 | 复选框(大额交易/可疑财产/频繁转账等) | +| | 模型筛选逻辑 | 单选:同时触发以上模型/触发任意模型 | +| 批量操作 | 批量生成报告 | | +| | 批量导出证据 | | +| | 批量添加到关注列表 | | + +#### 数据模型 +```sql +-- 人员风险评分表 +CREATE TABLE ccdi_person_risk_score ( + score_id BIGINT PRIMARY KEY AUTO_INCREMENT, + project_id BIGINT COMMENT '项目ID', + person_id BIGINT COMMENT '人员ID', + person_name VARCHAR(100) COMMENT '姓名', + id_card VARCHAR(50) COMMENT '身份证号', + department VARCHAR(200) COMMENT '所属部门', + risk_level VARCHAR(50) COMMENT '风险等级:高/中/低', + risk_score INT COMMENT '风险评分', + trigger_model_count INT COMMENT '触发模型数量', + core_issue VARCHAR(500) COMMENT '核心异常点', + create_time DATETIME DEFAULT CURRENT_TIMESTAMP +) COMMENT '人员风险评分表'; + +-- 模型触发记录表 +CREATE TABLE ccdi_model_trigger_record ( + trigger_id BIGINT PRIMARY KEY AUTO_INCREMENT, + project_id BIGINT COMMENT '项目ID', + model_id BIGINT COMMENT '模型ID', + model_name VARCHAR(200) COMMENT '模型名称', + trigger_count INT COMMENT '触发次数', + trigger_persons TEXT COMMENT '触发人员列表', + create_time DATETIME DEFAULT CURRENT_TIMESTAMP +) COMMENT '模型触发记录表'; + +-- 涉疑交易明细表 +CREATE TABLE ccdi_suspicious_transaction ( + transaction_id BIGINT PRIMARY KEY AUTO_INCREMENT, + project_id BIGINT COMMENT '项目ID', + transaction_time DATETIME COMMENT '交易时间', + suspicious_person VARCHAR(100) COMMENT '可疑人员', + related_person VARCHAR(100) COMMENT '关联人', + related_employee VARCHAR(100) COMMENT '关联员工', + relationship VARCHAR(100) COMMENT '关系', + transaction_type VARCHAR(200) COMMENT '摘要/交易类型', + transaction_amount DECIMAL(20,2) COMMENT '交易金额', + create_time DATETIME DEFAULT CURRENT_TIMESTAMP +) COMMENT '涉嫌交易明细表'; + +-- 异常账户表 +CREATE TABLE ccdi_abnormal_account ( + account_id BIGINT PRIMARY KEY AUTO_INCREMENT, + project_id BIGINT COMMENT '项目ID', + account_no VARCHAR(100) COMMENT '账户号', + account_holder VARCHAR(100) COMMENT '开户人姓名', + bank_name VARCHAR(200) COMMENT '开户银行', + abnormal_type VARCHAR(100) COMMENT '异常类型', + abnormal_time DATETIME COMMENT '异常发生时间', + account_status VARCHAR(50) COMMENT '状态', + create_time DATETIME DEFAULT CURRENT_TIMESTAMP +) COMMENT '异常账户表'; + +-- 违法人员信息表 +CREATE TABLE ccdi_illegal_person_info ( + info_id BIGINT PRIMARY KEY AUTO_INCREMENT, + person_id BIGINT COMMENT '人员ID', + person_name VARCHAR(100) COMMENT '姓名', + id_card VARCHAR(50) COMMENT '身份证号', + is_dishonesty_executor VARCHAR(10) COMMENT '是否失信被执行人', + is_criminal_penalty VARCHAR(10) COMMENT '是否有刑事判决', + is_administrative_penalty VARCHAR(10) COMMENT '是否有行政处罚', + is_police_case VARCHAR(10) COMMENT '是否有公安涉案记录', + is_limit_consumption VARCHAR(10) COMMENT '是否限制高消费', + update_time DATETIME COMMENT '违法信息更新时间', + create_time DATETIME DEFAULT CURRENT_TIMESTAMP +) COMMENT '违法人员信息表'; +``` + +--- + +### 2.5 页面4:专项排查工作台-高风险 + +#### 功能描述 +针对高风险人员的详细排查工作台。 + +#### 页面元素 +| 元素类型 | 元素名称/内容 | 说明 | +|---------|--------------|------| +| 排查对象信息 | 排查对象 | 如:李四 | +| | 姓名、工号、部门、职级、入职时间、风险等级、所属项目 | | +| 触发模型列表 | 触发模型(5个) | | +| | 大额交易监测 | 3笔 > 50万 | +| | 频繁转账监测 | 1小时25笔 | +| | 关联交易排查 | 配偶账户频繁交易 | +| | 异常销户监测 | 1个账户突然销户 | +| | 疑似赌博交易 | 涉赌商户5笔 | +| 初核评分 | 风险评分 | 如:85分(高风险阈值:60分) | +| 异常详情-大额交易 | 交易时间、本方账号/主体、对方名称/账户、摘要/交易类型、交易金额、标记状态 | 标记状态下拉:标记正常/标记可疑/确认异常 | +| 异常详情-频繁转账 | 时间段、总笔数、总金额、主要对手、模式特征、核查建议 | | +| 异常详情-关联交易 | 关联人、关联账户、交易特征、异常点、需核实 | | +| 排查工具箱 | 查看完整流水、查看征信报告、查看资产信息、关系图谱分析、资金流向分析、导出所有证据、添加到案例库 | | +| 排查进度标签页 | 异常明细、资产分析、征信摘要、关系人图谱、资金流向 | | +| 操作按钮 | 生成报告、生成排查报告、标记为案例、关注 | | + +#### 数据模型 +```sql +-- 排查对象表 +CREATE TABLE ccdi_investigation_object ( + object_id BIGINT PRIMARY KEY AUTO_INCREMENT, + project_id BIGINT COMMENT '项目ID', + person_id BIGINT COMMENT '人员ID', + person_name VARCHAR(100) COMMENT '姓名', + employee_no VARCHAR(100) COMMENT '工号', + department VARCHAR(200) COMMENT '部门', + position_level VARCHAR(100) COMMENT '职级', + entry_date DATE COMMENT '入职时间', + risk_level VARCHAR(50) COMMENT '风险等级', + risk_score INT COMMENT '风险评分', + investigation_status VARCHAR(50) COMMENT '排查状态', + create_time DATETIME DEFAULT CURRENT_TIMESTAMP, + update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP +) COMMENT '排查对象表'; + +-- 排查触发模型表 +CREATE TABLE ccdi_investigation_trigger_model ( + trigger_model_id BIGINT PRIMARY KEY AUTO_INCREMENT, + object_id BIGINT COMMENT '排查对象ID', + model_id BIGINT COMMENT '模型ID', + model_name VARCHAR(200) COMMENT '模型名称', + trigger_desc VARCHAR(500) COMMENT '触发描述', + create_time DATETIME DEFAULT CURRENT_TIMESTAMP +) COMMENT '排查触发模型表'; + +-- 异常交易明细表 +CREATE TABLE ccdi_abnormal_transaction_detail ( + detail_id BIGINT PRIMARY KEY AUTO_INCREMENT, + object_id BIGINT COMMENT '排查对象ID', + transaction_time DATETIME COMMENT '交易时间', + own_account VARCHAR(200) COMMENT '本方账号/主体', + counterparty VARCHAR(200) COMMENT '对方名称/账户', + transaction_type VARCHAR(200) COMMENT '摘要/交易类型', + transaction_amount DECIMAL(20,2) COMMENT '交易金额', + mark_status VARCHAR(50) COMMENT '标记状态:正常/可疑/异常', + create_time DATETIME DEFAULT CURRENT_TIMESTAMP +) COMMENT '异常交易明细表'; + +-- 排查进度表 +CREATE TABLE ccdi_investigation_progress ( + progress_id BIGINT PRIMARY KEY AUTO_INCREMENT, + object_id BIGINT COMMENT '排查对象ID', + progress_type VARCHAR(100) COMMENT '进度类型:流水分析/征信分析/资产比对/人工核实', + progress_status VARCHAR(50) COMMENT '进度状态', + complete_time DATETIME COMMENT '完成时间', + create_time DATETIME DEFAULT CURRENT_TIMESTAMP +) COMMENT '排查进度表'; + +-- 关注列表表 +CREATE TABLE ccdi_attention_list ( + attention_id BIGINT PRIMARY KEY AUTO_INCREMENT, + object_id BIGINT COMMENT '排查对象ID', + person_id BIGINT COMMENT '人员ID', + attention_type VARCHAR(50) COMMENT '关注类型', + create_by VARCHAR(100) COMMENT '创建人', + create_time DATETIME DEFAULT CURRENT_TIMESTAMP +) COMMENT '关注列表表'; +``` + +--- + +### 2.6 页面5:专项排查 + +#### 功能描述 +员工详查分析功能,包括资产收入分析、图谱分析、采购查询等。 + +#### 页面元素 +| 元素类型 | 元素名称/内容 | 说明 | +|---------|--------------|------| +| 查询条件 | 身份证号 | 输入框 | +| | 开始日期、结束日期 | 日期选择器 | +| | 查询、重置 | 按钮 | +| 详查结果 | 详查结果描述 | 如:收入+负债远低于资产 | +| 基本信息 | 姓名、身份证号、资产/收入比 | | +| 收入分析 | 工资收入、其他收入 | 显示金额和百分比 | +| 本人资产分析 | 房产、存款、其他 | 显示金额和百分比 | +| 配偶资产分析 | 房产、车产、其他 | 显示金额和百分比 | +| 负债分析 | 房贷、其他贷款 | 显示金额和百分比 | +| 汇总信息 | 本人+配偶资产合计、总负债 | | +| 图谱分析标签页 | 关系人图谱、资金流图谱、实控账户图谱 | | +| 关系人图谱 | 姓名搜索框、生成图谱按钮 | | +| | 可视化图谱 | 显示配偶、对外投资、股东、高管关联等 | +| | 操作按钮 | 展开所有关联、仅显示直接关联、导出图谱、筛选、刷新 | +| 采购查询表格 | 序号、采购事项名称、交易日期、采购金额、供应商名称、对方账号、联系人、关联员工 | | +| 扩展查询标签页 | 采购查询、人员调动查询、招聘查询 | | +| 采购查询条件 | 采购时间范围、关联员工 | | + +#### 数据模型 +```sql +-- 员工资产分析表 +CREATE TABLE ccdi_employee_asset_analysis ( + analysis_id BIGINT PRIMARY KEY AUTO_INCREMENT, + person_id BIGINT COMMENT '人员ID', + person_name VARCHAR(100) COMMENT '姓名', + id_card VARCHAR(50) COMMENT '身份证号', + asset_income_ratio DECIMAL(10,2) COMMENT '资产/收入比', + annual_income DECIMAL(20,2) COMMENT '年收入', + own_asset DECIMAL(20,2) COMMENT '本人资产', + spouse_asset DECIMAL(20,2) COMMENT '配偶资产', + total_asset DECIMAL(20,2) COMMENT '本人+配偶资产合计', + total_liability DECIMAL(20,2) COMMENT '总负债', + income_salary DECIMAL(20,2) COMMENT '工资收入', + income_other DECIMAL(20,2) COMMENT '其他收入', + asset_house DECIMAL(20,2) COMMENT '房产', + asset_deposit DECIMAL(20,2) COMMENT '存款', + asset_other DECIMAL(20,2) COMMENT '其他', + liability_mortgage DECIMAL(20,2) COMMENT '房贷', + liability_loan DECIMAL(20,2) COMMENT '其他贷款', + spouse_asset_house DECIMAL(20,2) COMMENT '配偶房产', + spouse_asset_car DECIMAL(20,2) COMMENT '配偶车产', + spouse_asset_other DECIMAL(20,2) COMMENT '配偶其他', + create_time DATETIME DEFAULT CURRENT_TIMESTAMP +) COMMENT '员工资产分析表'; + +-- 关系人图谱表 +CREATE TABLE ccdi_relationship_graph ( + graph_id BIGINT PRIMARY KEY AUTO_INCREMENT, + person_id BIGINT COMMENT '人员ID', + related_person_name VARCHAR(100) COMMENT '关联人姓名', + relationship_type VARCHAR(100) COMMENT '关系类型:配偶/对外投资/股东/高管关联', + related_entity_name VARCHAR(200) COMMENT '关联实体名称', + share_ratio DECIMAL(5,2) COMMENT '持股比例', + position VARCHAR(200) COMMENT '职位', + create_time DATETIME DEFAULT CURRENT_TIMESTAMP +) COMMENT '关系人图谱表'; + +-- 采购查询记录表 +CREATE TABLE ccdi_purchase_record ( + purchase_id BIGINT PRIMARY KEY AUTO_INCREMENT, + purchase_name VARCHAR(500) COMMENT '采购事项名称', + transaction_date DATE COMMENT '交易日期', + purchase_amount DECIMAL(20,2) COMMENT '采购金额', + supplier_name VARCHAR(500) COMMENT '供应商名称', + supplier_account VARCHAR(200) COMMENT '对方账号', + contact_person VARCHAR(100) COMMENT '联系人', + related_employee VARCHAR(100) COMMENT '关联员工', + create_time DATETIME DEFAULT CURRENT_TIMESTAMP +) COMMENT '采购查询记录表'; +``` + +--- + +### 2.7 页面6:专项排查工作台-中风险 + +#### 功能描述 +针对中风险人员的排查工作台,功能与高风险工作台类似,但风险等级不同。 + +#### 页面元素 +与高风险工作台结构相同,主要区别: +- 风险等级显示为"中风险" +- 初核评分可能较低 +- 触发模型数量可能较少 + +数据模型与高风险工作台共用。 + +--- + +### 2.8 页面7:流水明细查询 + +#### 功能描述 +查询和筛选银行流水明细。 + +#### 页面元素 +| 元素类型 | 元素名称/内容 | 说明 | +|---------|--------------|------| +| 筛选条件 | 交易时间范围 | 开始日期、结束日期 | +| | 对方名称 | 输入框,支持空值筛选 | +| | 摘要 | 输入框,支持空值筛选 | +| | 分类 | 多选下拉 | +| | 本方主体 | 多选下拉 | +| | 本方银行 | 多选下拉 | +| | 本方账户 | 多选下拉 | +| | 交易金额 | 范围输入(最小~最大) | +| | 对方账户 | 输入框,支持空值筛选 | +| | 交易类型 | 输入框,支持空值筛选 | +| | 剔除关联方与本方 | 复选框 | +| | 查询、重置 | 按钮 | +| 流水类型切换 | 全部、流入、流出 | 单选或Tab切换 | +| 流水明细表格 | 交易时间、本行账户/主体、对方名称/账户、摘要/交易类型、交易金额、分类、操作 | 支持复选框 | +| 表格操作 | 修改分类 | 下拉或弹窗 | +| 底部操作栏 | 已筛选X笔流水,已选中X笔流水 | | +| | 导出流水 | | +| | 加入分析 | | +| 标签页 | 流水、对手方 | | + +#### 数据模型 +```sql +-- 流水明细表 +CREATE TABLE ccdi_transaction_detail ( + detail_id BIGINT PRIMARY KEY AUTO_INCREMENT, + project_id BIGINT COMMENT '项目ID', + transaction_time DATETIME COMMENT '交易时间', + own_account VARCHAR(200) COMMENT '本方账户/主体', + own_bank VARCHAR(200) COMMENT '本方银行', + counterparty_name VARCHAR(500) COMMENT '对方名称/账户', + counterparty_account VARCHAR(200) COMMENT '对方账户', + transaction_summary VARCHAR(500) COMMENT '摘要', + transaction_type VARCHAR(200) COMMENT '交易类型', + transaction_amount DECIMAL(20,2) COMMENT '交易金额', + transaction_direction VARCHAR(50) COMMENT '交易方向:流入/流出', + category VARCHAR(200) COMMENT '分类', + create_time DATETIME DEFAULT CURRENT_TIMESTAMP +) COMMENT '流水明细表'; + +-- 流水分类表 +CREATE TABLE ccdi_transaction_category ( + category_id BIGINT PRIMARY KEY AUTO_INCREMENT, + category_code VARCHAR(100) COMMENT '分类编码', + category_name VARCHAR(200) COMMENT '分类名称', + parent_id BIGINT COMMENT '父分类ID', + sort_order INT COMMENT '排序', + create_time DATETIME DEFAULT CURRENT_TIMESTAMP +) COMMENT '流水分类表'; +``` + +--- + +## 三、模块划分与开发建议 + +### 3.1 后端模块划分 + +``` +ruoyi-ccdi/ (新建模块) +├── controller/ +│ ├── CcdiProjectController.java # 项目管理 +│ ├── CcdiDataUploadController.java # 数据上传 +│ ├── CcdiModelConfigController.java # 模型配置 +│ ├── CcdiPreliminaryCheckController.java # 初核提示 +│ ├── CcdiInvestigationController.java # 专项排查工作台 +│ ├── CcdiSpecialCheckController.java # 专项排查 +│ └── CcdiTransactionController.java # 流水明细查询 +├── service/ +│ ├── ICcdiProjectService.java +│ ├── ICcdiDataUploadService.java +│ ├── ICcdiModelConfigService.java +│ ├── ICcdiPreliminaryCheckService.java +│ ├── ICcdiInvestigationService.java +│ ├── ICcdiSpecialCheckService.java +│ └── ICcdiTransactionService.java +├── mapper/ +│ ├── CcdiProjectMapper.java +│ ├── CcdiDataUploadMapper.java +│ ├── CcdiModelConfigMapper.java +│ ├── CcdiPreliminaryCheckMapper.java +│ ├── CcdiInvestigationMapper.java +│ ├── CcdiSpecialCheckMapper.java +│ └── CcdiTransactionMapper.java +├── domain/ +│ ├── CcdiProject.java +│ ├── CcdiDataUpload.java +│ ├── CcdiModelConfig.java +│ ├── CcdiPersonRiskScore.java +│ ├── CcdiInvestigationObject.java +│ └── ... +├── dto/ +│ ├── CcdiProjectQueryDTO.java +│ ├── CcdiDataUploadDTO.java +│ ├── CcdiModelConfigDTO.java +│ └── ... +└── vo/ + ├── CcdiProjectVO.java + ├── CcdiPreliminaryCheckVO.java + ├── CcdiInvestigationVO.java + └── ... +``` + +### 3.2 前端模块划分 + +``` +ruoyi-ui/src/views/ccdi/ +├── project/ +│ ├── index.vue # 项目列表 +│ ├── detail.vue # 项目详情 +│ ├── upload.vue # 上传数据 +│ └── components/ +│ ├── UploadCard.vue # 上传卡片组件 +│ ├── QualityCheck.vue # 数据质量检查组件 +│ └── BlacklistSelect.vue # 名单库选择组件 +├── model/ +│ ├── config.vue # 参数配置 +│ └── components/ +│ └── ModelConfigTable.vue # 模型配置表格组件 +├── preliminary/ +│ ├── index.vue # 初核提示 +│ └── components/ +│ ├── RiskStatistics.vue # 风险统计卡片 +│ ├── ModelTriggerTable.vue # 模型触发表格 +│ ├── SuspiciousTransactionTable.vue # 涉疑交易表格 +│ └── PersonRiskList.vue # 人员风险列表 +├── investigation/ +│ ├── high-risk.vue # 高风险工作台 +│ ├── mid-risk.vue # 中风险工作台 +│ └── components/ +│ ├── ObjectInfo.vue # 排查对象信息 +│ ├── AbnormalTransaction.vue # 异常交易明细 +│ ├── InvestigationTools.vue # 排查工具箱 +│ └── InvestigationTabs.vue # 排查进度标签页 +├── special/ +│ ├── index.vue # 专项排查 +│ └── components/ +│ ├── AssetAnalysis.vue # 资产分析 +│ ├── RelationshipGraph.vue # 关系人图谱 +│ └── PurchaseTable.vue # 采购查询表格 +└── transaction/ + └── index.vue # 流水明细查询 +``` + +### 3.3 开发顺序建议 + +1. **第一阶段:基础数据管理** + - 项目管理(创建、查询、更新) + - 数据上传功能 + - 数据质量检查 + +2. **第二阶段:模型配置** + - 风险模型配置 + - 模型参数配置 + - 模型触发规则 + +3. **第三阶段:初核分析** + - 初核提示页面 + - 风险评分计算 + - 人员风险分类 + +4. **第四阶段:排查工作台** + - 高风险工作台 + - 中风险工作台 + - 排查进度跟踪 + +5. **第五阶段:专项排查** + - 员工详查分析 + - 资产收入分析 + - 关系图谱分析 + - 采购查询 + +6. **第六阶段:流水查询** + - 流水明细查询 + - 多维度筛选 + - 流水分类管理 + +--- + +## 四、关键技术要点 + +### 4.1 文件上传处理 +- 支持Excel、PDF、HTML多种格式 +- 需要实现文件解析功能 +- 大文件上传需要分片处理 +- 上传进度显示 + +### 4.2 数据质量检查 +- 数据完整性检查 +- 格式一致性检查 +- 余额连续性检查 +- 异常数据识别 + +### 4.3 风险评分模型 +- 可配置的风险模型 +- 可配置的阈值参数 +- 多模型触发计算 +- 风险等级分类 + +### 4.4 图谱可视化 +- 关系人图谱展示 +- 资金流向图谱 +- 实控账户图谱 +- 图谱交互操作 + +### 4.5 数据导出 +- 支持多种导出格式 +- 大数据量导出优化 +- 批量导出功能 + +--- + +## 五、接口设计建议 + +### 5.1 项目管理接口 + +``` +POST /ccdi/project/list # 项目列表查询 +GET /ccdi/project/{id} # 项目详情 +POST /ccdi/project # 新增项目 +PUT /ccdi/project # 更新项目 +DELETE /ccdi/project/{id} # 删除项目 +``` + +### 5.2 数据上传接口 + +``` +POST /ccdi/upload/transaction # 上传流水文件 +POST /ccdi/upload/credit # 上传征信文件 +POST /ccdi/upload/relation # 上传家庭关系文件 +GET /ccdi/upload/progress/{id} # 查询上传进度 +POST /ccdi/upload/quality/check # 数据质量检查 +``` + +### 5.3 初核分析接口 + +``` +GET /ccdi/preliminary/statistics # 获取统计数据 +GET /ccdi/preliminary/model/trigger # 模型触发情况 +GET /ccdi/preliminary/transaction # 涉疑交易明细 +GET /ccdi/preliminary/person/list # 人员风险列表 +GET /ccdi/preliminary/abnormal/account # 异常账户列表 +POST /ccdi/preliminary/batch/report # 批量生成报告 +``` + +### 5.4 排查工作台接口 + +``` +GET /ccdi/investigation/object/{id} # 获取排查对象详情 +GET /ccdi/investigation/abnormal/{id} # 获取异常交易详情 +GET /ccdi/investigation/progress/{id} # 获取排查进度 +PUT /ccdi/investigation/mark/status # 标记状态 +POST /ccdi/investigation/report # 生成排查报告 +``` + +--- + +## 六、数据库表汇总 + +| 序号 | 表名 | 说明 | +|------|------|------| +| 1 | ccdi_project | 项目表 | +| 2 | ccdi_data_upload | 数据上传记录表 | +| 3 | ccdi_blacklist_selection | 名单库选择记录表 | +| 4 | ccdi_data_quality | 数据质量检查表 | +| 5 | ccdi_risk_model | 风险模型表 | +| 6 | ccdi_model_parameter | 模型参数配置表 | +| 7 | ccdi_person_risk_score | 人员风险评分表 | +| 8 | ccdi_model_trigger_record | 模型触发记录表 | +| 9 | ccdi_suspicious_transaction | 涉嫌交易明细表 | +| 10 | ccdi_abnormal_account | 异常账户表 | +| 11 | ccdi_illegal_person_info | 违法人员信息表 | +| 12 | ccdi_investigation_object | 排查对象表 | +| 13 | ccdi_investigation_trigger_model | 排查触发模型表 | +| 14 | ccdi_abnormal_transaction_detail | 异常交易明细表 | +| 15 | ccdi_investigation_progress | 排查进度表 | +| 16 | ccdi_attention_list | 关注列表表 | +| 17 | ccdi_employee_asset_analysis | 员工资产分析表 | +| 18 | ccdi_relationship_graph | 关系人图谱表 | +| 19 | ccdi_purchase_record | 采购查询记录表 | +| 20 | ccdi_transaction_detail | 流水明细表 | +| 21 | ccdi_transaction_category | 流水分类表 | + +--- + +## 七、前端组件建议 + +### 7.1 通用组件 + +```javascript +// components/ccdi/ +├── UploadCard.vue # 文件上传卡片 +├── RiskStatisticsCard.vue # 风险统计卡片 +├── QualityProgressBar.vue # 质量检查进度条 +├── ModelTriggerTable.vue # 模型触发表格 +├── PersonRiskList.vue # 人员风险列表 +├── TransactionTable.vue # 交易明细表格 +├── RelationshipGraph.vue # 关系图谱组件 +└── FilterPanel.vue # 筛选面板组件 +``` + +### 7.2 图表组件 + +```javascript +// 使用ECharts实现 +├── RiskDistributionChart.vue # 风险分布图 +├── ModelTriggerChart.vue # 模型触发图表 +├── AssetAnalysisChart.vue # 资产分析图表 +└── RelationshipGraphChart.vue # 关系图谱 +``` + +--- + +## 八、开发注意事项 + +### 8.1 权限控制 +- 项目级权限控制 +- 数据访问权限 +- 敏感信息脱敏 + +### 8.2 性能优化 +- 大数据量查询分页 +- 索引优化 +- 缓存策略 + +### 8.3 数据安全 +- 敏感数据加密 +- 操作日志记录 +- 数据备份 + +### 8.4 用户体验 +- 加载状态提示 +- 操作反馈 +- 错误提示 + +--- + +## 九、后续扩展方向 + +1. **智能分析**:引入机器学习算法,提高风险识别准确率 +2. **移动端适配**:开发移动端应用,支持移动办公 +3. **报表中心**:自定义报表功能 +4. **预警机制**:实时预警通知 +5. **案例库管理**:典型案例沉淀和复用 + +--- + +**文档版本**: v1.0 +**创建时间**: 2025-01-30 +**最后更新**: 2025-01-30 diff --git a/ruoyi-ui/.env.development b/ruoyi-ui/.env.development index 302ecd1..2bf671b 100644 --- a/ruoyi-ui/.env.development +++ b/ruoyi-ui/.env.development @@ -1,5 +1,5 @@ # 页面标题 -VUE_APP_TITLE = 若依管理系统 +VUE_APP_TITLE = 纪检初核系统 # 开发环境配置 ENV = 'development' diff --git a/ruoyi-ui/.env.production b/ruoyi-ui/.env.production index b4893b0..c780532 100644 --- a/ruoyi-ui/.env.production +++ b/ruoyi-ui/.env.production @@ -1,5 +1,5 @@ # 页面标题 -VUE_APP_TITLE = 若依管理系统 +VUE_APP_TITLE = 纪检初核系统 # 生产环境配置 ENV = 'production' diff --git a/ruoyi-ui/.env.staging b/ruoyi-ui/.env.staging index 209b64e..c94ca63 100644 --- a/ruoyi-ui/.env.staging +++ b/ruoyi-ui/.env.staging @@ -1,5 +1,5 @@ # 页面标题 -VUE_APP_TITLE = 若依管理系统 +VUE_APP_TITLE = 纪检初核系统 BABEL_ENV = production diff --git a/ruoyi-ui/src/views/ccdiProject/components/ProjectTable.vue b/ruoyi-ui/src/views/ccdiProject/components/ProjectTable.vue index e30e55f..abf5e7d 100644 --- a/ruoyi-ui/src/views/ccdiProject/components/ProjectTable.vue +++ b/ruoyi-ui/src/views/ccdiProject/components/ProjectTable.vue @@ -96,6 +96,12 @@ icon="el-icon-s-data" @click="handleEnter(scope.row)" >进入项目 + 重新分析 diff --git a/ruoyi-ui/vue.config.js b/ruoyi-ui/vue.config.js index 40e140d..613b424 100644 --- a/ruoyi-ui/vue.config.js +++ b/ruoyi-ui/vue.config.js @@ -7,7 +7,7 @@ function resolve(dir) { const CompressionPlugin = require('compression-webpack-plugin') -const name = process.env.VUE_APP_TITLE || '若依管理系统' // 网页标题 +const name = process.env.VUE_APP_TITLE || '纪检初核系统' // 网页标题 const baseUrl = 'http://localhost:8080' // 后端接口
拖拽文件到此处或点击上传
支持格式: {{ acceptTypes.join(', ') }}
选择中介库管理内的名单