需求分解

This commit is contained in:
wkc
2026-01-27 17:09:32 +08:00
parent 0c00a00df0
commit 79cd4fe755
152 changed files with 14990 additions and 21 deletions

View File

@@ -1,7 +1,11 @@
{
"permissions": {
"allow": [
"Bash(findstr:*)"
"Bash(findstr:*)",
"mcp__zai-mcp-server__extract_text_from_screenshot",
"Bash(pandoc:*)",
"mcp__zread__read_file",
"mcp__zread__search_doc"
]
}
}

View File

@@ -0,0 +1,145 @@
# 01-项目管理模块
## 模块概述
项目管理模块是系统的首页和入口,用于管理所有历史创建的核查项目。该模块提供项目的创建、查询、状态管理、归档等核心功能,是用户进行项目管理和监控的主要界面。
## 模块结构
```
项目管理模块
├── 导航与搜索区
├── 项目列表区
└── 快捷入口区
```
## 功能分解
### 1.1 导航与搜索区
**功能描述**: 位于页面顶部,提供项目搜索和新建项目的入口功能。
**功能点**:
- **项目搜索**: 支持通过输入关键词对项目名称进行模糊搜索
- **新建项目**: 点击打开标准表单,填写项目名称、人员等完整信息创建新项目
- **导入历史项目**: 复制历史项目配置(人员范围、流水、征信数据配置)快速创建新项目
**数据要素**:
- 项目名称(搜索关键词)
- 项目配置模板
### 1.2 项目列表区
**功能描述**: 以表格形式展示所有初核项目,是用户进行项目管理和监控的核心面板。
**功能点**:
- **项目信息展示**: 显示项目名称、简要描述、创建日期、状态、目标人数、预警人数
- **项目状态标识**: 通过色块直观标识项目状态(进行中、已完成等)
- **预警人数动态更新**: 对于"进行中"项目,预警人数数据动态更新
- **查看结果**: 适用于已完成项目,跳转至该项目的初核结果页
- **重新分析**: 适用于已完成项目,基于原有数据重新运行风险模型,更新分析结果
- **归档项目**: 将已结束且无需日常关注的项目移入归档库生成PDF文件导出
- **进入项目**: 适用于进行中项目,进入该项目的工作台开展具体工作
**数据要素**:
- 项目名称
- 项目描述
- 创建时间
- 项目状态(进行中、已完成)
- 目标人数
- 预警人数
### 1.3 快捷入口区
**功能描述**: 提供一键触达的高频操作按钮,提升常用工作流的启动效率。
**功能点**:
- **导入历史项目**: 复制历史项目的配置(人员范围、流水、征信数据),快速创建新项目
- **创建季度初核**: 快速启动标准化季度周期性排查项目,系统预填当前季度时间范围等配置
- **创建新员工排查**: 为特定新员工创建专项排查任务
**数据要素**:
- 历史项目模板
- 当前季度时间范围
- 新员工信息
## 数据模型
### 项目实体 (Project)
| 字段名 | 类型 | 说明 | 必填 |
|-------|------|------|-----|
| projectId | Long | 项目ID | 是 |
| projectName | String | 项目名称 | 是 |
| description | String | 项目描述 | 否 |
| createTime | DateTime | 创建时间 | 是 |
| status | String | 状态(进行中/已完成) | 是 |
| targetCount | Integer | 目标人数 | 是 |
| warningCount | Integer | 预警人数 | 是 |
| isArchived | Boolean | 是否归档 | 否 |
## 页面原型
### 原型设计文档
详细的页面原型设计请查看:[06-页面原型设计.md](./06-页面原型设计.md)
### 主要页面
1. **首页** - 项目列表展示页面
- 搜索和操作区
- 项目列表表格
- 快捷入口卡片
2. **新建项目弹窗页** - 项目信息录入表单
- 基本信息表单
- 人员选择器
- 时间范围选择器
3. **导入历史项目弹窗页** - 历史项目选择列表
- 项目列表(带单选)
- 项目详情预览
- 新项目配置
### 原型资源
- **墨刀原型**: [../../纪检初核系统-离线演示包/演示模式.html](../../纪检初核系统-离线演示包/演示模式.html)
- **设计规范**: 基于 Element UI 2.15 组件库
## 子文档索引
本模块包含以下详细文档:
- [README.md](./README.md) - 模块总览
- [01-导航与搜索区.md](./01-导航与搜索区.md) - 导航与搜索区详细设计
- [02-项目列表区.md](./02-项目列表区.md) - 项目列表区详细设计
- [03-快捷入口区.md](./03-快捷入口区.md) - 快捷入口区详细设计
- [04-数据模型.md](./04-数据模型.md) - 数据模型定义
- [05-业务规则.md](./05-业务规则.md) - 业务规则说明
- [06-页面原型设计.md](./06-页面原型设计.md) - 页面原型详细设计
- [复核报告.md](./复核报告.md) - 需求复核报告
## 业务规则
1. **项目状态流转**: 新建 → 进行中 → 已完成 → 已归档
2. **预警人数更新**: 进行中项目的预警人数需要实时更新
3. **归档条件**: 只有已完成的项目才能归档
4. **重新分析**: 只能对已完成项目执行重新分析
## 交互关系
| 关联模块 | 交互说明 |
|---------|---------|
| 项目工作台 | 点击"进入项目"跳转到项目工作台 |
| 初核结果总览 | 点击"查看结果"跳转到结果页 |
## 功能点统计
- 二级功能: 3个
- 三级功能点: 12个
## 版本信息
- **文档版本**: V1.0
- **创建日期**: 2026-01-27
- **基于原文档**: 纪检初核系统功能说明书V1.0 第9-62行

View File

@@ -0,0 +1,528 @@
# 项目管理模块 - 页面原型设计
## 设计概述
本文档定义项目管理模块的页面原型设计,基于若依框架 + Element UI组件库的设计规范。
## 设计规范
### 颜色规范
| 颜色类型 | 颜色值 | 用途 |
|---------|-------|------|
| 主题色 | #409EFF | 主按钮、链接、高亮 |
| 成功色 | #67C23A | 成功状态、已完成项目 |
| 警告色 | #E6A23C | 警告提示 |
| 危险色 | #F56C6C | 危险操作、删除 |
| 信息色 | #909399 | 次要信息、禁用状态 |
| 文字色 | #303133 | 主要文字 |
| 次要文字 | #606266 | 次要文字 |
| 边框色 | #DCDFE6 | 边框、分割线 |
| 背景色 | #F5F7FA | 页面背景 |
### 字体规范
| 类型 | 字体大小 | 字重 | 行高 |
|-----|---------|------|------|
| 页面标题 | 20px | 500 | 28px |
| 卡片标题 | 16px | 500 | 24px |
| 正文 | 14px | 400 | 22px |
| 小字 | 12px | 400 | 20px |
### 间距规范
| 间距类型 | 数值 |
|---------|------|
| 页面边距 | 20px |
| 卡片间距 | 16px |
| 元素间距 | 8px |
| 小间距 | 4px |
---
## 页面1: 项目管理首页
### 页面布局
```
+------------------------------------------------------------------+
| Logo | 纪检初核系统 首页 | 项目工作台 | 系统管理 | 用户▼ |
+------------------------------------------------------------------+
| 项目管理 |
| +------------------------------------------------------------+ |
| | 🔍 项目搜索: [________________] [新建项目] [导入历史项目] | |
| +------------------------------------------------------------+ |
| |
| +------------------------------------------------------------+ |
| | 项目列表 | |
| +------------------------------------------------------------+ |
| | 序号 | 项目名称 | 创建时间 | 状态 | 目标 | 预警 | 操作| |
| |------|--------------|------------|------|------|------|-----| |
| | 1 | 2024年Q1初核 | 2024-01-01 | ⏳进行中| 500 | 15 |[详情]| |
| | 2 | 2023年Q4初核 | 2023-10-01 | ✅已完成| 480 | 23 |[查看]| |
| +------------------------------------------------------------+ |
| |
| +------------------------------------------------------------+ |
| | 快捷入口 | |
| +------------------------------------------------------------+ |
| | [📋 导入历史项目] [📅 创建季度初核] [👤 创建新员工排查] | |
| +------------------------------------------------------------+ |
+------------------------------------------------------------------+
```
### 详细组件说明
#### 1. 顶部导航栏
**位置**: 固定在页面顶部
**组件**:
- 左侧: Logo + 系统名称
- 中间: 主导航菜单
- 右侧: 用户信息下拉菜单
**代码示例**:
```vue
<el-menu mode="horizontal" :default-active="activeIndex">
<el-menu-item index="/project">项目管理</el-menu-item>
<el-menu-item index="/workspace">项目工作台</el-menu-item>
<el-menu-item index="/system">系统管理</el-menu-item>
</el-menu>
```
#### 2. 搜索和操作区
**位置**: 导航栏下方,全宽度
**布局**:
```
+------------------------------------------------------------+
| 项目管理 [新建项目] [导入历史项目] |
+------------------------------------------------------------+
| 🔍 [搜索项目名称...................] 高级搜索 ▼ |
+------------------------------------------------------------+
```
**组件规格**:
- 搜索框: 宽度 300px, 高度 32px
- 按钮: 高度 32px, 内边距 12px
- 图标: 14px
**Element UI代码**:
```vue
<el-row :gutter="16">
<el-col :span="18">
<el-input
v-model="queryParams.projectName"
placeholder="请输入项目名称"
prefix-icon="el-icon-search"
clearable
@keyup.enter.native="handleQuery"
/>
</el-col>
<el-col :span="6" style="text-align: right">
<el-button
type="primary"
icon="el-icon-plus"
@click="handleAdd"
>新建项目</el-button>
<el-button
icon="el-icon-folder-opened"
@click="handleImport"
>导入历史项目</el-button>
</el-col>
</el-row>
```
#### 3. 项目列表表格
**位置**: 搜索区下方
**列定义**:
| 列名 | 宽度 | 对齐 | 说明 |
|-----|------|------|------|
| 序号 | 60px | 居中 | 自动编号 |
| 项目名称 | 200px | 左对齐 | 主标题+描述 |
| 创建时间 | 120px | 居中 | YYYY-MM-DD |
| 状态 | 100px | 居中 | 带颜色的标签 |
| 目标人数 | 80px | 居中 | 数字 |
| 预警人数 | 80px | 居中 | 数字+刷新图标 |
| 操作 | 200px | 左对齐 | 按钮组 |
**状态标签样式**:
```vue
<el-tag
:type="row.projectStatus === '0' ? 'primary' : (row.projectStatus === '1' ? 'success' : 'info')"
size="small"
>
{{ row.projectStatus === '0' ? '进行中' : (row.projectStatus === '1' ? '已完成' : '已归档') }}
</el-tag>
```
**操作按钮显示规则**:
```vue
<!-- 进行中项目 -->
<el-button size="mini" type="text" icon="el-icon-s-data">进入项目</el-button>
<!-- 已完成项目 -->
<el-button size="mini" type="text" icon="el-icon-view">查看结果</el-button>
<el-button size="mini" type="text" icon="el-icon-refresh">重新分析</el-button>
<el-button size="mini" type="text" icon="el-icon-folder">归档</el-button>
<!-- 已归档项目 -->
<el-button size="mini" type="text" icon="el-icon-document">查看详情</el-button>
```
**表格组件代码**:
```vue
<el-table
v-loading="loading"
:data="projectList"
@selection-change="handleSelectionChange"
>
<el-table-column type="selection" width="55" />
<el-table-column label="序号" type="index" width="60" align="center" />
<el-table-column label="项目名称" min-width="200" show-overflow-tooltip>
<template slot-scope="scope">
<div class="project-name">
<div class="name">{{ scope.row.projectName }}</div>
<div class="desc">{{ scope.row.projectDesc }}</div>
</div>
</template>
</el-table-column>
<el-table-column label="创建时间" prop="createTime" width="120" align="center" />
<el-table-column label="状态" prop="projectStatus" width="100" align="center">
<template slot-scope="scope">
<el-tag :type="getStatusType(scope.row.projectStatus)" size="small">
{{ getStatusLabel(scope.row.projectStatus) }}
</el-tag>
</template>
</el-table-column>
<el-table-column label="目标人数" prop="targetCount" width="80" align="center" />
<el-table-column label="预警人数" width="100" align="center">
<template slot-scope="scope">
<span v-if="scope.row.projectStatus === '0'">
{{ scope.row.warningCount }}
<i class="el-icon-refresh" @click="refreshWarningCount(scope.row)"></i>
</span>
<span v-else>{{ scope.row.warningCount }}</span>
</template>
</el-table-column>
<el-table-column label="操作" width="200" align="center" fixed="right">
<template slot-scope="scope">
<!-- 根据状态显示不同按钮 -->
</template>
</el-table-column>
</el-table>
```
#### 4. 快捷入口区
**位置**: 表格下方
**布局**:
```
+------------------------------------------------------------+
| 快捷入口 |
+------------------------------------------------------------+
| ┌──────────┐ ┌──────────┐ ┌──────────┐ |
| │ 📋 导入 │ │ 📅 季度 │ │ 👤 新员工 │ |
| │ 历史项目 │ │ 初核 │ │ 排查 │ |
| └──────────┘ └──────────┘ └──────────┘ |
+------------------------------------------------------------+
```
**卡片样式**:
```css
.quick-entry-card {
width: 100%;
height: 120px;
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
border-radius: 8px;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
cursor: pointer;
transition: all 0.3s;
}
.quick-entry-card:hover {
transform: translateY(-4px);
box-shadow: 0 4px 12px rgba(0,0,0,0.15);
}
```
---
## 页面2: 新建项目弹窗
### 对话框规格
```
+------------------------------------------------------------------+
| ┌──────────────────────────────────────────────────────────┐ |
| │ 新建项目 │ |
| ├──────────────────────────────────────────────────────────┤ |
| │ 项目名称: [________________________] * │ |
| │ 项目描述: [________________________] │ |
| │ [________________________________] │ |
| │ │ |
| │ 目标人员: [+ 添加人员] │ |
| │ ┌─────────────────────────────────────────┐ │ |
| │ │ ✗ 张三 (3301**********202101) [删除] │ │ |
| │ │ ✗ 李四 (3302**********202102) [删除] │ │ |
| │ └─────────────────────────────────────────┘ │ |
| │ │ |
| │ 时间范围: │ |
| │ 开始日期: [2024-01-01 📅] │ |
| │ 结束日期: [2024-03-31 📅] │ |
| │ │ |
| │ 项目配置: [展开高级设置 ▼] │ |
| │ │ |
| ├──────────────────────────────────────────────────────────┤ |
| │ [取消] [确定] │ |
| └──────────────────────────────────────────────────────────┘ |
+------------------------------------------------------------------+
```
### 表单验证规则
```javascript
rules: {
projectName: [
{ required: true, message: '请输入项目名称', trigger: 'blur' },
{ min: 2, max: 50, message: '长度在 2 到 50 个字符', trigger: 'blur' }
],
startDate: [
{ required: true, message: '请选择开始日期', trigger: 'change' }
],
endDate: [
{ required: true, message: '请选择结束日期', trigger: 'change' },
{
validator: (rule, value, callback) => {
if (value && this.form.startDate && value < this.form.startDate) {
callback(new Error('结束日期不能早于开始日期'));
} else {
callback();
}
},
trigger: 'change'
}
]
}
```
---
## 页面3: 导入历史项目弹窗
### 对话框规格
```
+------------------------------------------------------------------+
| ┌──────────────────────────────────────────────────────────┐ |
| │ 导入历史项目 │ |
| ├──────────────────────────────────────────────────────────┤ |
| │ 搜索: [________________] 📅 时间筛选 ▼ │ |
| │ │ |
| │ 历史项目列表: │ |
| │ ┌─────────────────────────────────────────────┐ │ |
| │ │ ☐ 2024年Q1初核 │ │ |
| │ │ 创建时间: 2024-01-01 人员: 500 [详情] │ │ |
| │ ├─────────────────────────────────────────────┤ │ |
| │ │ ☑ 2023年Q4初核 │ │ |
| │ │ 创建时间: 2023-10-01 人员: 480 [详情] │ │ |
| │ ├─────────────────────────────────────────────┤ │ |
| │ │ ☐ 2023年Q3初核 │ │ |
| │ │ 创建时间: 2023-07-01 人员: 450 [详情] │ │ |
| │ └─────────────────────────────────────────────┘ │ |
| │ │ |
| │ 新项目名称: [2024年Q2初核复制] * │ |
| │ 时间范围: │ |
| │ 开始: [2024-04-01] 结束: [2024-06-30] │ |
| │ │ |
| ├──────────────────────────────────────────────────────────┤ |
| │ [取消] [导入] │ |
| └──────────────────────────────────────────────────────────┘ |
+------------------------------------------------------------------+
```
### 项目列表项样式
```vue
<el-radio-group v-model="selectedProjectId">
<el-radio
v-for="item in historyProjects"
:key="item.projectId"
:label="item.projectId"
class="project-radio"
>
<div class="project-item">
<div class="project-header">
<span class="name">{{ item.projectName }}</span>
<el-button type="text" size="small" @click.stop="viewDetail(item)">
详情
</el-button>
</div>
<div class="project-info">
<span>创建时间: {{ item.createTime }}</span>
<span>人员: {{ item.targetCount }}</span>
<el-tag size="mini" :type="getStatusType(item.projectStatus)">
{{ getStatusLabel(item.projectStatus) }}
</el-tag>
</div>
</div>
</el-radio>
</el-radio-group>
```
---
## 页面4: 项目归档确认
### 确认对话框
```
+------------------------------------------------------------------+
| ┌──────────────────────────────────────────────────────────┐ |
| │ ⚠️ 归档确认 │ |
| ├──────────────────────────────────────────────────────────┤ |
| │ │ |
| │ 确定要归档项目"2024年Q1初核"吗? │ |
| │ │ |
| │ 归档后将: │ |
| │ ✓ 项目状态变为"已归档" │ |
| │ ✓ 自动生成项目报告PDF │ |
| │ ✓ 移入归档库 │ |
| │ │ |
| │ ☐ 同时删除项目相关数据(不可恢复) │ |
| │ │ |
| │ 归档后可从"归档库"中查看和恢复 │ |
| │ │ |
| ├──────────────────────────────────────────────────────────┤ |
| │ [取消] [确认归档] │ |
| └──────────────────────────────────────────────────────────┘ |
+------------------------------------------------------------------+
```
---
## 交互规范
### 1. 加载状态
- 首次加载显示骨架屏
- 数据刷新显示loading遮罩
- 按钮操作后显示loading状态
### 2. 空状态
```
+------------------------------------------------------------------+
| ┌──────────────────────────────────────────────────────────┐ |
| │ 📂 │ |
| │ │ |
| │ 暂无项目数据 │ |
| │ │ |
| │ [新建项目] [导入历史项目] │ |
| └──────────────────────────────────────────────────────────┘ |
+------------------------------------------------------------------+
```
### 3. 错误提示
- 表单验证错误:红色边框 + 错误文字
- 网络错误:全屏错误提示
- 操作失败:右上角消息提示
### 4. 成功反馈
- 操作成功:右上角成功消息
- 删除成功:列表自动刷新
- 创建成功:跳转到详情页
---
## 响应式设计
### 断点定义
| 设备类型 | 屏幕宽度 | 布局调整 |
|---------|---------|---------|
| 大屏 | ≥1920px | 显示完整表格 |
| 标准 | ≥1200px | 标准布局 |
| 平板 | ≥768px | 隐藏次要列 |
| 手机 | <768px | 卡片式布局 |
### 移动端适配
```css
/* 移动端使用卡片式布局 */
@media (max-width: 768px) {
.project-list-table {
display: none;
}
.project-list-cards {
display: block;
}
}
```
---
## 可访问性
### 键盘导航
- Tab: 在元素间切换焦点
- Enter: 确认/提交
- Esc: 关闭对话框
- Space: 选中/取消选中
### ARIA标签
```html
<!-- 搜索框 -->
<input
aria-label="搜索项目名称"
role="searchbox"
/>
<!-- 表格 -->
<table role="table" aria-label="项目列表">
<caption>当前共5个项目</caption>
...
</table>
```
---
## 设计资源
### Figma设计稿
如需查看详细的设计稿,请联系设计团队。
### 墨刀原型
[在线查看原型](演示模式.html)
### 图标库
使用Element UI内置图标文档https://element.eleme.io/#/zh-CN/component/icon
---
## 版本信息
- **设计版本**: V1.0
- **设计日期**: 2026-01-27
- **设计师**: 待定
- **基于框架**: Vue 2.6 + Element UI 2.15

View File

@@ -0,0 +1,240 @@
# 项目管理模块文档复核报告
## 复核概述
**复核日期**: 2026-01-27
**复核人**: Claude
**对比文档**:
- 原始需求: [纪检初核系统功能说明书V1.0](../../纪检初核系统功能说明书-V1.0.md) 第9-62行
- 分解文档: [01-项目管理模块.md](./01-项目管理模块.md)
## 复核结论
### ✅ 功能覆盖完整性: 100%
所有功能点均已覆盖,无遗漏。
## 详细对比分析
### 一、导航与搜索区
| 功能需求 | 文档覆盖 | 状态 | 说明 |
|---------|---------|------|------|
| 项目搜索(关键词模糊搜索) | ✅ 已覆盖 | 完整 | 1.1.1节详细说明 |
| 新建项目(标准表单) | ✅ 已覆盖 | 完整 | 1.1.2节详细说明 |
| 导入历史项目 | ✅ 已覆盖 | 完整 | 1.1.3节详细说明 |
### 二、项目列表区
#### 列表信息列
| 功能需求 | 文档覆盖 | 状态 | 说明 |
|---------|---------|------|------|
| 项目名称+简要描述 | ✅ 已覆盖 | 完整 | 1.2.1节说明 |
| 创建时间 | ✅ 已覆盖 | 完整 | 1.2.1节说明 |
| 状态标识(进行中、已完成) | ✅ 已覆盖 | 完整 | 1.2.2节详细说明 |
| 目标人数 | ✅ 已覆盖 | 完整 | 1.2.1节说明 |
| 预警人数(动态更新) | ✅ 已覆盖 | 完整 | 1.2.3节详细说明 |
#### 操作列
| 功能需求 | 文档覆盖 | 状态 | 说明 |
|---------|---------|------|------|
| 查看结果(已完成项目) | ✅ 已覆盖 | 完整 | 1.2.4节说明 |
| 重新分析(已完成项目) | ✅ 已覆盖 | 完整 | 1.2.5节详细说明 |
| 归档项目生成PDF | ✅ 已覆盖 | 完整 | 1.2.6节详细说明明确说明生成PDF |
| 进入项目(进行中项目) | ✅ 已覆盖 | 完整 | 1.2.7节说明 |
### 三、快捷入口区
| 功能需求 | 文档覆盖 | 状态 | 说明 |
|---------|---------|------|------|
| 导入历史项目 | ✅ 已覆盖 | 完整 | 1.3.1节详细说明 |
| 创建季度初核 | ✅ 已覆盖 | 完整 | 1.3.2节详细说明,包含季度时间规则 |
| 创建新员工排查 | ✅ 已覆盖 | 完整 | 1.3.3节详细说明,包含新员工定义 |
### 四、业务规则
| 业务需求 | 文档覆盖 | 状态 | 说明 |
|---------|---------|------|------|
| 项目状态流转 | ✅ 已覆盖 | 完整 | 业务规则节说明 |
| 预警人数实时更新 | ✅ 已覆盖 | 完整 | 业务规则节说明 |
| 归档条件 | ✅ 已覆盖 | 完整 | 业务规则节说明 |
| 重新分析条件 | ✅ 已覆盖 | 完整 | 业务规则节说明 |
## 发现的问题
### ⚠️ 问题1: 数据模型命名不符合若依框架规范
**问题描述**:
当前文档中的数据模型字段命名不符合若依框架的命名规范。
**当前定义**:
| 字段名 | 类型 |
|-------|------|
| projectId | Long |
| projectName | String |
| status | String |
| isArchived | Boolean |
**建议修改**(符合若依规范):
| 字段名 | 类型 | 说明 |
|-------|------|------|
| project_id | bigint(20) | 项目ID |
| project_name | varchar(100) | 项目名称 |
| project_desc | varchar(500) | 项目描述 |
| project_status | char(1) | 项目状态0进行中 1已完成 2已归档 |
| target_count | int(11) | 目标人数 |
| warning_count | int(11) | 预警人数 |
| archive_flag | char(1) | 归档标志0未归档 1已归档 |
| create_by | varchar(64) | 创建者 |
| create_time | datetime | 创建时间 |
| update_by | varchar(64) | 更新者 |
| update_time | datetime | 更新时间 |
| remark | varchar(500) | 备注 |
**影响**: 需要修改数据模型章节
### ⚠️ 问题2: 状态枚举值未明确定义
**问题描述**:
原文档中提到的状态包括"进行中"、"已完成",但在数据模型中未明确定义状态值的枚举。
**建议**:
```
project_status项目状态:
- 0: 进行中
- 1: 已完成
- 2: 已归档
```
### ⚠️ 问题3: 缺少原型图
**问题描述**:
原始需求中明确提到需要3个原型图
(1) 首页
(2) 新建项目弹窗页入口
(3) 导入历史项目弹窗页入口
当前文档在"页面原型"章节只是简单列出,没有详细的界面设计说明。
**建议**:
需要补充详细的UI原型设计包括
- 页面布局
- 组件位置
- 交互流程
- 状态变化
### ✅ 优点
1. **功能分解细致**: 将每个功能点分解到三级,便于开发理解
2. **交互说明完整**: 每个功能都包含详细的交互流程
3. **页面原型示例**: 提供了详细的表单和布局示例
4. **技术实现要点**: 包含了技术实现的关键点
5. **业务规则清晰**: 业务规则章节清晰定义了状态流转和约束条件
## 建议改进
### 1. 数据模型规范化
**优先级**: 高
建议创建独立的数据模型文档,符合若依框架规范:
```sql
-- 项目信息表
CREATE TABLE dpc_project (
project_id bigint(20) not null auto_increment comment '项目ID',
project_name varchar(100) not null comment '项目名称',
project_desc varchar(500) default null comment '项目描述',
project_status char(1) default '0' comment '项目状态0进行中 1已完成 2已归档',
target_count int(11) default 0 comment '目标人数',
warning_count int(11) default 0 comment '预警人数',
start_date date default null comment '开始日期',
end_date date default null comment '结束日期',
archive_flag char(1) default '0' comment '归档标志0未归档 1已归档',
archive_time datetime default null comment '归档时间',
del_flag char(1) default '0' comment '删除标志0存在 2删除',
create_by varchar(64) default '' comment '创建者',
create_time datetime comment '创建时间',
update_by varchar(64) default '' comment '更新者',
update_time datetime comment '更新时间',
remark varchar(500) default null comment '备注',
primary key (project_id)
) engine=innodb auto_increment=1 comment = '核查项目表';
```
### 2. 补充原型图设计
**优先级**: 中
建议使用工具如Figma、Sketch、墨刀创建详细的UI原型图或使用ASCII/Mermaid图表展示界面布局。
### 3. 添加API接口定义
**优先级**: 中
建议为每个功能添加RESTful API接口定义包括
- 请求方法
- 请求路径
- 请求参数
- 响应格式
示例:
```
POST /dpc/project/list
功能: 查询项目列表
请求参数:
{
"pageNum": 1,
"pageSize": 20,
"projectName": "关键词",
"projectStatus": "0"
}
响应:
{
"code": 200,
"msg": "查询成功",
"rows": [...],
"total": 100
}
```
## 总结
### 覆盖率统计
| 维度 | 覆盖率 | 状态 |
|-----|--------|------|
| 功能点覆盖 | 100% | ✅ 优秀 |
| 数据模型 | 80% | ⚠️ 需改进 |
| 业务规则 | 100% | ✅ 优秀 |
| 交互说明 | 100% | ✅ 优秀 |
| 技术实现 | 70% | ⚠️ 需补充 |
### 整体评价
**文档质量**: ⭐⭐⭐⭐ (4/5星)
**优点**:
- ✅ 功能分解完整且细致
- ✅ 交互流程清晰
- ✅ 业务规则明确
**需要改进**:
- ⚠️ 数据模型需符合若依框架规范
- ⚠️ 需要补充详细的UI原型图
- ⚠️ 建议添加API接口定义
### 下一步行动
1. **高优先级**: 修改数据模型,符合若依框架规范
2. **中优先级**: 补充UI原型设计
3. **中优先级**: 添加API接口定义
4. **低优先级**: 创建数据库设计文档和开发规范文档
## 复核签字
**复核人**: Claude (AI助手)
**复核日期**: 2026-01-27
**文档版本**: V1.0

View File

@@ -0,0 +1,143 @@
# 02.1-数据管理
## 模块概述
数据管理是项目工作台的核心模块之一,用于统一接入来自行内流水、征信数据、人工上传等不同来源和格式的数据,并自动化检查识别数据问题,保证后续风险识别的准确性。
## 模块结构
```
数据管理
├── 数据导入
└── 数据质量检查
```
## 功能分解
### 1.1 数据导入
**功能描述**: 提供多种数据源的导入功能,支持行内数据拉取和外部数据上传。
**功能点**:
- **拉取本行信息**: 输入证件号码或导入身份证号表格,自动拉取行内流水、资产等数据信息
- **他行流水导入**: 批量上传员工的他行银行、支付宝微信等交易流水文件支持Excel、文本型PDF系统自动解析提取交易金额、对手方、交易时间、余额、摘要等关键字段
- **征信信息导入**: 上传个人信用报告HTML格式系统自动解析提取信贷账户、负债总额、担保信息、查询记录等核心数据
- **员工家庭关系导入**: 上传员工的家庭成员信息,用于构建关系人图谱和关联分析
- **名单库选择**: 从"信息维护-中介库管理"内的名单中选择确认后的可疑名单
- **生成报告**: 生成初核结果,跳转至结果页
**数据要素**:
- 证件号码/身份证号
- 本行流水数据
- 他行流水文件
- 征信报告文件
- 员工家庭关系信息
- 名单库数据
### 1.2 数据质量检查
**功能描述**: 在数据导入后,系统自动执行预定义的质量规则对数据集进行检查。
**功能点**:
- **质量规则执行**: 自动执行数据质量检查规则
- **检查结果展示**: 以列表形式展示发现的具体问题
- 数据格式不一致(如日期格式不统一、金额单位混杂)
- 余额链条性异常(相邻交易记录间的余额计算逻辑断裂)
- 缺失关键字段(如交易记录缺少对手方账号或户名)
- **质量评分仪表盘**: 通过三个关键指标量化数据质量
- 数据完整性(衡量必填字段的填充率)
- 格式一致性(衡量数据遵循预定格式规范的程度)
- 余额连续性(衡量流水数据中余额连续、计算正确的程度)
**数据要素**:
- 数据完整性评分
- 格式一致性评分
- 余额连续性评分
- 异常记录详情
## 数据模型
### 数据导入记录 (DataImport)
| 字段名 | 类型 | 说明 | 必填 |
|-------|------|------|-----|
| importId | Long | 导入ID | 是 |
| projectId | Long | 项目ID | 是 |
| importType | String | 导入类型(本行/他行/征信/家庭关系) | 是 |
| importTime | DateTime | 导入时间 | 是 |
| importStatus | String | 导入状态 | 是 |
| fileCount | Integer | 文件数量 | 否 |
| recordCount | Integer | 记录数量 | 否 |
### 数据质量检查结果 (DataQualityCheck)
| 字段名 | 类型 | 说明 | 必填 |
|-------|------|------|-----|
| checkId | Long | 检查ID | 是 |
| projectId | Long | 项目ID | 是 |
| completenessScore | Double | 数据完整性评分 | 是 |
| consistencyScore | Double | 格式一致性评分 | 是 |
| continuityScore | Double | 余额连续性评分 | 是 |
| formatIssueCount | Integer | 格式不一致数量 | 是 |
| balanceIssueCount | Integer | 余额链条性异常数量 | 是 |
| missingFieldCount | Integer | 缺失关键字段数量 | 是 |
| checkTime | DateTime | 检查时间 | 是 |
## 支持的文件格式
| 数据类型 | 支持格式 | 解析方式 |
|---------|---------|---------|
| 他行流水 | Excel、文本型PDF | 自动解析 |
| 征信报告 | HTML | 自动解析 |
| 身份证号表格 | Excel | 导入读取 |
| 员工家庭关系 | Excel | 导入读取 |
## 业务规则
1. **数据导入顺序**: 建议先拉取本行信息,再导入他行流水和征信信息
2. **质量检查触发**: 数据导入完成后自动触发质量检查
3. **质量评分计算**:
- 数据完整性 = (已填充必填字段数 / 应填必填字段数) × 100%
- 格式一致性 = (格式正确记录数 / 总记录数) × 100%
- 余额连续性 = (余额计算正确记录数 / 总记录数) × 100%
4. **异常数据处理**: 发现异常需要用户确认后才能生成报告
## 页面原型
### 1. 数据导入页面
- 数据源选择区
- 文件上传区
- 导入进度展示
### 2. 数据质量检查页面
- 质量评分仪表盘
- 异常记录列表
- 异常详情展示
## 交互关系
| 关联模块 | 交互说明 |
|---------|---------|
| 初核结果总览 | 点击"生成报告"跳转到初核结果总览页 |
| 信息维护模块 | 从"中介库管理"选择名单 |
| 专项排查 | 导入的数据用于专项排查分析 |
## 异常处理
| 异常类型 | 处理方式 |
|---------|---------|
| 文件格式不支持 | 提示用户支持的格式,拒绝导入 |
| 数据解析失败 | 记录失败原因,提示用户检查文件 |
| 质量检查失败 | 展示异常详情,允许用户修正后重新导入 |
| 余额计算异常 | 标注异常记录,提示数据可能缺失或被篡改 |
## 功能点统计
- 二级功能: 2个
- 三级功能点: 10个
## 版本信息
- **文档版本**: V1.0
- **创建日期**: 2026-01-27
- **基于原文档**: 纪检初核系统功能说明书V1.0 第73-118行

View File

@@ -0,0 +1,235 @@
# 02.2-初核结果总览
## 模块概述
初核结果总览模块展示项目中上传的数据经过模型识别出的风险信息总览及明细,包括风险总览、风险模型、风险明细三个主要部分。
## 模块结构
```
初核结果总览
├── 风险总览
│ ├── 风险全局仪表盘
│ ├── 高风险/中风险人员名单
│ └── 单个风险人员详情
├── 风险模型
│ ├── 模型触发情况总计
│ └── 各模型触发人员列表
└── 风险明细
├── 涉疑交易明细表
├── 涉及违法人员清单表
└── 异常账户清单表
```
## 功能分解
### 2.1 风险总览
**功能描述**: 以数据卡片和列表形式集中展示项目整体风险态势。
**功能点**:
- **风险全局仪表盘**: 展示项目整体风险数据卡片
- 总人数(项目覆盖的员工总数)
- 无预警人数
- 低风险人数
- 中风险人数
- 高风险人数
- **高风险/中风险人员名单**: 按风险评分降序排列
- 显示姓名、身份证号、部门、风险评分、触发模型数、核心异常点
- 高风险人员全部展示
- 中风险人员展示评分最高的10名
- **查看单个风险人员详情**: 钻取至单个员工的全面风险报告
- 所有异常行为列表
- 每个行为对应的模型判断依据(规则)
- 资产分析
- 征信概览
- 关系人图谱
- 针对可疑交易及可疑对象手动添加至关注方
- **批量操作**:
- 批量生成报告
- 批量导出证据
- 批量添加到关注列表
- 添加到案例库
**数据要素**:
- 总人数
- 各风险等级人数
- 人员详细信息
- 风险评分
- 触发模型数
- 核心异常点
### 2.2 风险模型
**功能描述**: 展示所有风险模型的整体触发情况和触发人员列表。
**功能点**:
- **模型触发情况总计**: 以表格形式展示
- 模型名称
- 触发总人数
- 主要触发人员示例
- 点击"查看详情"跳转至触发该模型的全体人员列表
- **各模型触发人员列表**: 支持多维度筛选
- 下拉菜单选择触发某一特定风险模型
- 筛选同时触发多个如2个以上风险模型的高风险人员
- 搜索人员姓名或工号
- 将常用筛选组合保存为固定策略
- 点击【查看详情】查看该员工详细的风险情况
**数据要素**:
- 模型名称
- 触发人数
- 触发人员列表
- 筛选策略配置
### 2.3 风险明细
**功能描述**: 展示涉疑交易、违法人员、异常账户等详细风险信息。
**功能点**:
- **涉疑交易明细表**:
- 支持按「全部可疑人员类型」「名单库命中」「模型规则命中」等维度筛选
- 支持穿透式查看交易流水
- 显示交易时间、可疑人员、关联人、关联员工、关系、摘要、交易类型、交易金额
- 点击「查看详情」跳转至可疑流水详情页
- **涉及违法人员清单表**:
- 展示外部违法名单库命中的人员信息
- 显示违法人员姓名、身份证号、是否为失信被执行人、是否有刑事判决记录、是否有行政处罚记录、是否涉及公安案件、是否被限制高消费、违法信息更新时间
- 点击「查看详情」展示该人员的违法详情、更新日期等完整背景信息
- **异常账户清单表**:
- 独立列出经模型识别出的所有异常账户
- 显示账号、开户人、银行、异常类型、异常发生时间、状态
- 点击「查看详情」查看该账号的所有异常交易明细
- **批量导出数据及报告**:
- 导出所有列表为Excel
- 一键生成项目多维统计报告PDF/Word
- 模型触发排行、部门风险分布、风险评分区间等多维度分析
**数据要素**:
- 交易流水详情
- 违法人员信息
- 异常账户信息
- 导出配置
## 数据模型
### 风险人员 (RiskPerson)
| 字段名 | 类型 | 说明 | 必填 |
|-------|------|------|-----|
| personId | Long | 人员ID | 是 |
| projectId | Long | 项目ID | 是 |
| name | String | 姓名 | 是 |
| idCard | String | 身份证号 | 是 |
| department | String | 部门 | 否 |
| riskScore | Double | 风险评分 | 是 |
| riskLevel | String | 风险等级 | 是 |
| triggerModelCount | Integer | 触发模型数 | 是 |
| coreAnomaly | String | 核心异常点 | 否 |
### 风险模型 (RiskModel)
| 字段名 | 类型 | 说明 | 必填 |
|-------|------|------|-----|
| modelId | Long | 模型ID | 是 |
| modelName | String | 模型名称 | 是 |
| triggerCount | Integer | 触发总人数 | 是 |
| modelType | String | 模型类型 | 是 |
### 涉疑交易 (SuspiciousTransaction)
| 字段名 | 类型 | 说明 | 必填 |
|-------|------|------|-----|
| transactionId | Long | 交易ID | 是 |
| transactionTime | DateTime | 交易时间 | 是 |
| suspiciousPerson | String | 可疑人员 | 是 |
| relatedPerson | String | 关联人 | 是 |
| relatedEmployee | String | 关联员工 | 是 |
| relation | String | 关系 | 是 |
| summary | String | 摘要 | 否 |
| transactionType | String | 交易类型 | 是 |
| amount | BigDecimal | 交易金额 | 是 |
### 违法人员 (IllegalPerson)
| 字段名 | 类型 | 说明 | 必填 |
|-------|------|------|-----|
| personId | Long | 人员ID | 是 |
| name | String | 姓名 | 是 |
| idCard | String | 身份证号 | 是 |
| isDishonestExecutor | Boolean | 是否失信被执行人 | 是 |
| hasCriminalJudgment | Boolean | 是否刑事判决 | 是 |
| hasAdministrativePenalty | Boolean | 是否行政处罚 | 是 |
| hasPublicSecurityCase | Boolean | 是否公安涉案 | 是 |
| isConsumptionRestricted | Boolean | 是否限制高消费 | 是 |
| updateTime | DateTime | 违法信息更新时间 | 是 |
### 异常账户 (AbnormalAccount)
| 字段名 | 类型 | 说明 | 必填 |
|-------|------|------|-----|
| accountId | Long | 账户ID | 是 |
| accountNo | String | 账号 | 是 |
| accountHolder | String | 开户人 | 是 |
| bank | String | 银行 | 是 |
| abnormalType | String | 异常类型 | 是 |
| abnormalTime | DateTime | 异常发生时间 | 是 |
| status | String | 状态 | 是 |
## 风险等级定义
| 等级 | 评分范围 | 说明 |
|-----|---------|-----|
| 无风险 | 0 | 未触发任何风险模型 |
| 低风险 | 1-40 | 触发少量风险模型,风险较低 |
| 中风险 | 41-70 | 触发多个风险模型,需要关注 |
| 高风险 | 71-100 | 触发多个高风险模型,需要重点核查 |
## 业务规则
1. **风险评分计算**: 基于触发的风险模型数量和严重程度计算
2. **人员名单排序**: 按风险评分降序排列
3. **模型触发统计**: 实时统计各模型的触发情况
4. **批量操作**: 支持多选人员进行批量操作
## 页面原型
### 1. 风险总览页面
- 风险仪表盘
- 人员名单列表
- 批量操作按钮
### 2. 风险模型页面
- 模型触发情况表
- 筛选条件区
- 人员列表
### 3. 风险明细页面
- 涉疑交易明细表
- 违法人员清单表
- 异常账户清单表
### 4. 人员详情页面
- 异常明细列表
- 资产分析图表
- 征信摘要
- 关系人图谱
## 交互关系
| 关联模块 | 交互说明 |
|---------|---------|
| 数据管理 | 使用导入的数据进行风险分析 |
| 专项排查 | 从人员详情跳转到专项排查 |
| 流水明细查询 | 从交易详情跳转到流水查询 |
## 功能点统计
- 二级功能: 3个
- 三级功能点: 16个
## 版本信息
- **文档版本**: V1.0
- **创建日期**: 2026-01-27
- **基于原文档**: 纪检初核系统功能说明书V1.0 第119-262行

View File

@@ -0,0 +1,242 @@
# 02.3-专项排查
## 模块概述
专项排查模块针对单人用户进行深度调查,包括员工详查分析、图谱分析和拓展查询等功能。
## 模块结构
```
专项排查
├── 员工详查分析
├── 图谱分析
│ ├── 关系人图谱
│ ├── 资金流图谱
│ └── 实控账户图谱
└── 拓展查询
├── 采购查询
├── 人员调动查询
└── 招聘查询
```
## 功能分解
### 3.1 员工详查分析
**功能描述**: 针对单个目标员工进行深度调查分析。
**功能点**:
- **输入查询条件**: 输入目标员工的身份证号,可选择自定义时间范围
- **收入资产负债分析**: 根据检查对象及其主要家庭成员(配偶等),根据收入、资产、负债三者的关系进行初核判断
- **风险结果判断**:
- 正常
- 收入+负债远低于资产
- 收入+负债远高于资产
- 其他风险提示
**数据要素**:
- 员工身份证号
- 时间范围
- 收入数据
- 资产数据
- 负债数据
- 家庭成员信息
### 3.2 图谱分析
**功能描述**: 通过图形化方式,揭示隐藏的人员与资金关系网络。
**功能点**:
- **关系人图谱**:
- 通过身份证号等信息筛选展示以该员工为中心的社会关系网络
- 展示家庭成员、密切关联人
- 点击节点查看详情
- 点击关联企业穿透查询企业下的法人、股东等信息
- **资金流图谱**:
- 针对个人的资金流向进行分析
- 对可疑资金向前追溯多层交易对手
- 支持手工加入资金流向节点
- 支持备注资金流向
- **实控账户图谱**:
- 输入身份证号生成该员工实际控制的账户网络图
- 实控账户可能非本人名下
- 排查逻辑:基于手机登录丰收互联次数、线下多次代理存取等进行判断
**数据要素**:
- 身份证号
- 社会关系数据
- 资金流向数据
- 账户控制关系数据
- 企业关联数据
### 3.3 拓展查询
**功能描述**: 提供采购、人员调动、招聘等多维度的查询功能。
**功能点**:
- **采购查询**:
- 筛选查询采购时段
- 选择关联员工
- 查询其参与的所有采购
- 清单包含:采购事项名称、交易日期、采购金额、供应商名称、关联员工
- 支持穿透展示采购全量信息(采购方式、入围/中标公司、经办人、对方账号等)
- **人员调动查询**:
- 查询员工的岗位/机构调动记录
- 辅助排查"异常调动、岗位晋升合规性"
- 可选择查询时间和员工姓名
- 包含:姓名、工号、调动时间、原/现岗位、原/现机构、调动原因
- **招聘查询**:
- 查询招聘事项信息
- 辅助排查"招聘流程合规性、面试官关联风险"
- 可筛选查询时间段和员工姓名
- 包含:招聘人员、岗位、招聘时间、关联面试官、面试结果
**数据要素**:
- 采购信息
- 人员调动记录
- 招聘信息
## 数据模型
### 员工详查记录 (EmployeeDetailCheck)
| 字段名 | 类型 | 说明 | 必填 |
|-------|------|------|-----|
| checkId | Long | 检查ID | 是 |
| personId | String | 身份证号 | 是 |
| timeRangeStart | Date | 时间范围开始 | 是 |
| timeRangeEnd | Date | 时间范围结束 | 是 |
| income | BigDecimal | 收入 | 否 |
| assets | BigDecimal | 资产 | 否 |
| liabilities | BigDecimal | 负债 | 否 |
| checkResult | String | 检查结果 | 是 |
| checkTime | DateTime | 检查时间 | 是 |
### 关系人图谱节点 (RelationshipGraphNode)
| 字段名 | 类型 | 说明 | 必填 |
|-------|------|------|-----|
| nodeId | Long | 节点ID | 是 |
| nodeType | String | 节点类型(人员/企业/账户) | 是 |
| nodeName | String | 节点名称 | 是 |
| nodeInfo | String | 节点详细信息JSON | 否 |
### 关系人图谱边 (RelationshipGraphEdge)
| 字段名 | 类型 | 说明 | 必填 |
|-------|------|------|-----|
| edgeId | Long | 边ID | 是 |
| sourceNodeId | Long | 源节点ID | 是 |
| targetNodeId | Long | 目标节点ID | 是 |
| relationType | String | 关系类型 | 是 |
| relationInfo | String | 关系详细信息 | 否 |
### 采购记录 (ProcurementRecord)
| 字段名 | 类型 | 说明 | 必填 |
|-------|------|------|-----|
| procurementId | Long | 采购ID | 是 |
| procurementName | String | 采购事项名称 | 是 |
| transactionDate | Date | 交易日期 | 是 |
| procurementAmount | BigDecimal | 采购金额 | 是 |
| supplierName | String | 供应商名称 | 是 |
| relatedEmployee | String | 关联员工 | 是 |
| procurementMethod | String | 采购方式 | 否 |
| winningCompany | String | 入围/中标公司 | 否 |
| operator | String | 经办人 | 否 |
| targetAccount | String | 对方账号 | 否 |
### 人员调动记录 (PersonnelTransfer)
| 字段名 | 类型 | 说明 | 必填 |
|-------|------|------|-----|
| transferId | Long | 调动ID | 是 |
| name | String | 姓名 | 是 |
| employeeId | String | 工号 | 是 |
| transferTime | DateTime | 调动时间 | 是 |
| originalPosition | String | 原岗位 | 是 |
currentPosition | String | 现岗位 | 是 |
| originalOrganization | String | 原机构 | 是 |
| currentOrganization | String | 现机构 | 是 |
| transferReason | String | 调动原因 | 否 |
### 招聘记录 (RecruitmentRecord)
| 字段名 | 类型 | 说明 | 必填 |
|-------|------|------|-----|
| recruitmentId | Long | 招聘ID | 是 |
| recruitPerson | String | 招聘人员 | 是 |
| position | String | 岗位 | 是 |
| recruitmentTime | DateTime | 招聘时间 | 是 |
| relatedInterviewer | String | 关联面试官 | 是 |
| interviewResult | String | 面试结果 | 是 |
## 图谱分析说明
### 关系人图谱
- **中心节点**: 查询的员工
- **一级关联**: 配偶、父母、子女等家庭成员
- **二级关联**: 密切关联人、关联企业
- **企业穿透**: 法人、股东、高管等信息
### 资金流图谱
- **流向追溯**: 向前追溯多层交易对手
- **可疑资金标记**: 高亮显示可疑交易路径
- **手工标注**: 支持用户添加节点和备注
### 实控账户图谱
- **判断依据**:
- 手机登录丰收互联次数
- 线下多次代理存取记录
- 交易行为模式分析
- **账户类型**: 本人账户、亲属账户、其他关联账户
## 业务规则
1. **员工详查分析**:
- 正常: 收入 + 负债 ≈ 资产误差±20%以内)
- 收入+负债远低于资产: 资产来源可疑
- 收入+负债远高于资产: 可能存在隐瞒资产
2. **图谱分析**:
- 最多展示3层关联关系
- 单个节点最多展示100个关联节点
3. **拓展查询**:
- 支持模糊搜索
- 支持多条件组合筛选
## 页面原型
### 1. 员工详查分析页面
- 查询条件输入区
- 收入资产负债对比表
- 风险结果展示区
### 2. 图谱分析页面
- 查询输入区
- 图谱可视化区域
- 节点详情面板
- 操作工具栏
### 3. 拓展查询页面
- 查询条件区
- 结果列表
- 详情展示区
## 交互关系
| 关联模块 | 交互说明 |
|---------|---------|
| 初核结果总览 | 从人员详情跳转到专项排查 |
| 数据管理 | 使用导入的数据进行分析 |
| 流水明细查询 | 从资金流图谱跳转到流水查询 |
## 功能点统计
- 二级功能: 3个
- 三级功能点: 10个
## 版本信息
- **文档版本**: V1.0
- **创建日期**: 2026-01-27
- **基于原文档**: 纪检初核系统功能说明书V1.0 第263-328行

View File

@@ -0,0 +1,200 @@
# 02.4-流水明细查询
## 模块概述
流水明细查询模块对拉取的本行流水以及上传的他行流水进行批量分析,提供多账户流水合并和二次分析功能。
## 模块结构
```
流水明细查询
├── 多账户流水明细合并
└── 全量流水二次分析
```
## 功能分解
### 4.1 多账户流水明细合并
**功能描述**: 将多个银行的流水合并成一个流水文件进行统一查询和分析。
**功能点**:
- **流水合并**: 将多个银行的流水数据合并为一个统一的数据集
- **账号筛选**: 左侧筛选区可筛选账号和银行进行查询
- **自主排序**: 主页面可选择按交易金额、交易时间等自主排序
- **对手方分析**: 支持切换对手方分析视图
**数据要素**:
- 账号
- 银行名称
- 交易时间
- 交易金额
- 交易类型
- 对手方信息
- 余额
### 4.2 全量流水二次分析
**功能描述**: 对全量流水表中的关键流水进行手工提交分析,实现重点流水的深入分析。
**功能点**:
- **加入分析**: 对关键流水进行手工提交"加入分析"操作
- **新建交易表**: 将关键流水重新放置在一个新的交易表中进行分析
- **独立分析**: 新的交易表独立于原流水表,支持单独的操作和分析
**数据要素**:
- 选中的流水记录
- 新建的交易表
- 分析结果
## 数据模型
### 流水记录 (TransactionRecord)
| 字段名 | 类型 | 说明 | 必填 |
|-------|------|------|-----|
| transactionId | Long | 交易ID | 是 |
| projectId | Long | 项目ID | 是 |
| accountNo | String | 账号 | 是 |
| bankName | String | 银行名称 | 是 |
| transactionTime | DateTime | 交易时间 | 是 |
| transactionType | String | 交易类型 | 是 |
| amount | BigDecimal | 交易金额 | 是 |
| balance | BigDecimal | 余额 | 是 |
| counterparty | String | 对手方 | 否 |
| summary | String | 摘要 | 否 |
| dataSource | String | 数据来源(本行/他行) | 是 |
### 二次分析表 (SecondaryAnalysisTable)
| 字段名 | 类型 | 说明 | 必填 |
|-------|------|------|-----|
| tableId | Long | 分析表ID | 是 |
| projectId | Long | 项目ID | 是 |
| tableName | String | 分析表名称 | 是 |
| createTime | DateTime | 创建时间 | 是 |
| transactionCount | Integer | 流水数量 | 是 |
### 二次分析流水关联 (SecondaryAnalysisTransaction)
| 字段名 | 类型 | 说明 | 必填 |
|-------|------|------|-----|
| id | Long | 关联ID | 是 |
| tableId | Long | 分析表ID | 是 |
| transactionId | Long | 交易ID | 是 |
| addTime | DateTime | 添加时间 | 是 |
## 页面布局
### 流水明细查询页面
```
+----------------------------------+
| 流水明细查询 |
+----------------------------------+
| 筛选区 | 流水列表区 |
| | |
| 账号: [▼] | 交易时间 | 金额 | |
| 银行: [▼] | 2024-01-15| 5000 | |
| | 2024-01-14| 3000 | |
| 排序: [▼] | 2024-01-13| 2000 | |
| | |
| [加入分析] | |
+----------------------------------+
```
## 业务规则
1. **流水合并规则**:
- 同一账号的流水按时间顺序排列
- 不同账号的流水保持独立,在合并表中通过账号/银行字段区分
- 支持的最大账号数量: 100个
2. **排序规则**:
- 按交易时间排序(升序/降序)
- 按交易金额排序(升序/降序)
- 支持多字段组合排序
3. **二次分析规则**:
- 单个分析表最多包含10000条流水记录
- 同一流水记录可以加入多个分析表
- 分析表支持导出和删除操作
## 操作流程
### 流水查询流程
```
1. 选择账号/银行
2. 选择排序方式
3. 查看流水列表
4. 切换对手方分析(可选)
5. 选中关键流水
6. 点击"加入分析"
```
### 二次分析流程
```
1. 在全量流水表中选中关键流水
2. 点击"加入分析"
3. 创建或选择目标分析表
4. 流水添加到分析表
5. 在新分析表中进行独立分析
```
## 页面原型
### 1. 流水明细查询页面
- 左侧筛选区(账号、银行、排序)
- 右侧流水列表区
- 对手方分析切换按钮
- 批量操作区
### 2. 二次分析表页面
- 分析表列表
- 流水明细
- 统计分析
- 导出功能
## 交互关系
| 关联模块 | 交互说明 |
|---------|---------|
| 数据管理 | 使用导入的流水数据 |
| 初核结果总览 | 从交易详情跳转到流水查询 |
| 专项排查 | 从资金流图谱跳转到流水查询 |
## 功能特性
### 多账户流水合并
- 支持跨银行流水统一查询
- 支持多种排序方式
- 支持对手方分析视图切换
- 支持流水数据导出
### 全量流水二次分析
- 灵活的手工选择机制
- 独立的分析空间
- 支持多个分析表并行工作
- 支持分析结果导出
## 功能点统计
- 二级功能: 2个
- 三级功能点: 4个
## 版本信息
- **文档版本**: V1.0
- **创建日期**: 2026-01-27
- **基于原文档**: 纪检初核系统功能说明书V1.0 第315-328行

View File

@@ -0,0 +1,115 @@
# 02-项目工作台
## 模块概述
项目工作台是系统的核心业务模块,用户从项目列表点击"进入项目"后进入该模块。工作台涵盖从数据准备到风险识别的全流程,通过侧边导航栏实现各功能模块间的切换。
## 模块结构
```
项目工作台
├── 02.1-数据管理
├── 02.2-初核结果总览
├── 02.3-专项排查
└── 02.4-流水明细查询
```
## 侧边导航栏
**功能描述**: 提供项目工作台内各功能模块的导航和状态展示。
**功能点**:
- **返回项目列表**: 返回当前项目的上一层列表页
- **项目状态标识**: 明确标识当前项目阶段(进行中/已完成)
- **最后更新时间**: 显示数据或项目状态的最后变更时间,用于判断信息时效性
## 子模块说明
### 02.1-数据管理
数据管理是进入具体项目后的核心工作台之一,将来自行内流水、征信数据、人工上传不同来源和格式的数据,在一个界面内完成统一接入,并自动化检查识别数据问题。
**主要功能**:
- 数据导入(本行信息、他行流水、征信信息、员工家庭关系、名单库)
- 数据质量检查
**功能点数**: 10个
**文档链接**: [02.1-数据管理.md](./02.1-数据管理.md)
### 02.2-初核结果总览
初核结果总览展示项目中上传的数据经过模型识别出的风险信息总览及明细。
**主要功能**:
- 风险总览(仪表盘、人员名单、人员详情)
- 风险模型(模型触发情况、模型触发人员列表)
- 风险明细(涉疑交易明细、违法人员清单、异常账户清单)
**功能点数**: 16个
**文档链接**: [02.2-初核结果总览.md](./02.2-初核结果总览.md)
### 02.3-专项排查
专项排查针对单人用户进行深度调查和分析。
**主要功能**:
- 员工详查分析
- 图谱分析(关系人图谱、资金流图谱、实控账户图谱)
- 拓展查询(采购查询、人员调动查询、招聘查询)
**功能点数**: 10个
**文档链接**: [02.3-专项排查.md](./02.3-专项排查.md)
### 02.4-流水明细查询
流水明细查询对拉取的本行流水以及上传的他行流水进行批量分析。
**主要功能**:
- 多账户流水明细合并
- 全量流水二次分析
**功能点数**: 4个
**文档链接**: [02.4-流水明细查询.md](./02.4-流水明细查询.md)
## 业务流程
```
进入项目工作台
[数据管理] - 导入数据、质量检查
[生成报告] - 运行风险模型
[初核结果总览] - 查看风险分析结果
[专项排查] - 针对性深度调查
[流水明细查询] - 流水数据二次分析
```
## 功能点统计
| 子模块 | 功能点数量 |
|-------|----------|
| 02.1-数据管理 | 10 |
| 02.2-初核结果总览 | 16 |
| 02.3-专项排查 | 10 |
| 02.4-流水明细查询 | 4 |
| **合计** | **40** |
## 交互关系
| 关联模块 | 交互说明 |
|---------|---------|
| 项目管理模块 | 从项目列表进入,返回项目列表 |
| 各子模块 | 通过侧边导航栏切换 |
## 版本信息
- **文档版本**: V1.0
- **创建日期**: 2026-01-27
- **基于原文档**: 纪检初核系统功能说明书V1.0 第63-328行

View File

@@ -0,0 +1,207 @@
# 03-信息维护模块
## 模块概述
信息维护模块用于建立和维护系统所需的基础数据,包括中介库管理、员工信息管理和信贷客户家庭关系维护。
## 模块结构
```
信息维护模块
├── 中介库管理
├── 员工信息管理
└── 信贷客户家庭关系维护
```
## 功能分解
### 3.1 中介库管理
**功能描述**: 建立并维护外部中介人员/机构黑名单库。
**功能点**:
- **名单导入**: 支持Excel批量导入中介名单
- **名单维护**: 对中介名单进行增、删、改、查操作
- **名单查询**: 支持按姓名、身份证号、机构名称等条件查询
- **名单选择**: 在项目工作台中从中介库选择确认后的可疑名单
- **自动预警**: 当员工交易对手命中该库时,系统自动产生高风险预警
**数据要素**:
- 中介人员姓名
- 身份证号
- 中介机构名称
- 统一社会信用代码
- 风险等级
- 备注
### 3.2 员工信息管理
**功能描述**: 对员工实控账户、实控手机号、关系人信息等进行批量维护。
**功能点**:
- **实控账户维护**: 维护员工实际控制的账户信息(可能非本人名下)
- **实控手机号维护**: 维护员工实际使用的手机号信息
- **关系人信息维护**: 维护员工的关系人信息(未在户口本上的特定关系人等)
- **批量导入**: 支持Excel批量导入员工附属信息
- **信息查询**: 支持按员工姓名、工号等条件查询
- **信息编辑**: 对员工附属信息进行编辑和更新
**数据要素**:
- 员工姓名
- 工号
- 实控账户信息
- 实控手机号
- 关系人信息
- 关系类型
### 3.3 信贷客户家庭关系维护
**功能描述**: 上传并维护信贷客户家庭关系表格信息。
**功能点**:
- **家庭关系导入**: 上传信贷客户家庭关系表格
- **家庭关系维护**: 对家庭关系信息进行增、删、改、查操作
- **关系查询**: 支持按客户姓名、身份证号等条件查询家庭关系
- **关系展示**: 以树形结构展示家庭成员关系
**数据要素**:
- 客户姓名
- 身份证号
- 家庭成员姓名
- 家庭成员身份证号
- 关系类型(配偶、父母、子女等)
- 关系说明
## 数据模型
### 中介库 (IntermediaryBlacklist)
| 字段名 | 类型 | 说明 | 必填 |
|-------|------|------|-----|
| intermediaryId | Long | 中介ID | 是 |
| name | String | 姓名/机构名称 | 是 |
| idCard | String | 身份证号/统一社会信用代码 | 否 |
| intermediaryType | String | 中介类型(个人/机构) | 是 |
| riskLevel | String | 风险等级 | 是 |
| remarks | String | 备注 | 否 |
| createTime | DateTime | 创建时间 | 是 |
| updateTime | DateTime | 更新时间 | 是 |
| status | String | 状态(有效/失效) | 是 |
### 员工附属信息 (EmployeeAdditionalInfo)
| 字段名 | 类型 | 说明 | 必填 |
|-------|------|------|-----|
| infoId | Long | 信息ID | 是 |
| employeeId | String | 员工工号 | 是 |
| employeeName | String | 员工姓名 | 是 |
| infoType | String | 信息类型(实控账户/实控手机号/关系人) | 是 |
| infoContent | String | 信息内容JSON格式 | 是 |
| source | String | 信息来源 | 否 |
| createTime | DateTime | 创建时间 | 是 |
| updateTime | DateTime | 更新时间 | 是 |
### 信贷客户家庭关系 (CreditCustomerFamilyRelation)
| 字段名 | 类型 | 说明 | 必填 |
|-------|------|------|-----|
| relationId | Long | 关系ID | 是 |
| customerName | String | 客户姓名 | 是 |
| customerIdCard | String | 客户身份证号 | 是 |
| familyMemberName | String | 家庭成员姓名 | 是 |
| familyMemberIdCard | String | 家庭成员身份证号 | 是 |
| relationType | String | 关系类型 | 是 |
| relationDescription | String | 关系说明 | 否 |
| createTime | DateTime | 创建时间 | 是 |
| updateTime | DateTime | 更新时间 | 是 |
## 中介类型分类
| 类型 | 说明 |
|-----|------|
| 个人中介 | 个人身份的中介人员 |
| 机构中介 | 中介公司、机构等 |
## 关系类型分类
| 关系类型 | 说明 |
|---------|------|
| 配偶 | 合法配偶关系 |
| 父母 | 父母、公婆、岳父母 |
| 子女 | 子女、儿媳、女婿 |
| 兄弟姐妹 | 兄弟姐妹关系 |
| 其他 | 其他社会关系 |
## 业务规则
1. **中介库管理**:
- 中介信息删除前需要确认未在项目中使用
- 支持Excel导入批量更新
- 导入时需要验证数据格式正确性
2. **员工信息管理**:
- 实控账户需要说明判断依据
- 实控手机号需要验证有效性
- 关系人信息需要注明关系类型
3. **信贷客户家庭关系维护**:
- 家庭关系需要双向维护A-B和B-A
- 支持家庭关系图的展示
## 页面原型
### 1. 中介库管理页面
- 名单列表
- 搜索筛选区
- 导入/导出按钮
- 新增/编辑/删除操作
### 2. 员工信息管理页面
- 员工列表
- 信息类型切换(实控账户/实控手机号/关系人)
- 信息详情展示
- 编辑操作
### 3. 信贷客户家庭关系维护页面
- 客户列表
- 家庭关系树形展示
- 关系维护操作
- 导入功能
## 交互关系
| 关联模块 | 交互说明 |
|---------|---------|
| 数据管理 | 从中介库选择名单用于项目分析 |
| 专项排查 | 使用员工信息进行关联分析 |
## 功能特性
### 中介库管理
- 支持Excel批量导入导出
- 支持多条件组合查询
- 自动风险预警机制
- 名单状态管理
### 员工信息管理
- 支持多种信息类型维护
- 支持批量导入更新
- 信息变更历史记录
- 信息有效性验证
### 信贷客户家庭关系维护
- 支持家庭关系可视化
- 支持Excel批量导入
- 关系双向维护
- 关系图谱展示
## 功能点统计
- 二级功能: 3个
- 三级功能点: 6个
## 版本信息
- **文档版本**: V1.0
- **创建日期**: 2026-01-27
- **基于原文档**: 纪检初核系统功能说明书V1.0 第330-345行

View File

@@ -0,0 +1,203 @@
# 04-参数配置模块
## 模块概述
参数配置模块用于风险模型参数的管理,提供风险模型核心参数的维护界面和阈值规则细化功能。
## 模块结构
```
参数配置模块
├── 大额交易模型
├── 可疑兼职模型
└── 可疑外汇交易模型
```
## 功能分解
### 4.1 大额交易模型
**功能描述**: 识别大额/高频资金交易,监测调整单笔交易额、频繁转账次数等阈值。
**功能点**:
- **单笔交易额阈值**: 设置单笔交易金额阈值,超过该金额触发预警
- **频繁转账次数阈值**: 设置一定时间内的转账次数阈值
- **交易时间范围**: 设置监测的时间范围(日/周/月)
- **参数保存**: 保存配置的阈值参数
- **恢复默认**: 恢复系统默认的阈值参数
**数据要素**:
- 单笔交易额阈值
- 频繁转账次数阈值
- 时间范围
- 监测周期
### 4.2 可疑兼职模型
**功能描述**: 识别异常额外收入,监测调整月度固定收入、固定对手转入等阈值。
**功能点**:
- **月度固定收入阈值**: 设置月度固定收入上限,超过触发预警
- **固定对手转入阈值**: 设置从固定对手方转入的金额和频率阈值
- **异常收入识别规则**: 配置异常收入的识别规则
- **参数保存**: 保存配置的阈值参数
- **恢复默认**: 恢复系统默认的阈值参数
**数据要素**:
- 月度固定收入阈值
- 固定对手转入金额阈值
- 固定对手转入频率阈值
- 收入来源类型
### 4.3 可疑外汇交易模型
**功能描述**: 识别异常外汇收支,监测调整单笔购汇金额、频繁外汇交易次数等阈值。
**功能点**:
- **单笔购汇金额阈值**: 设置单笔购汇金额阈值
- **单笔结汇金额阈值**: 设置单笔结汇金额阈值
- **跨境汇款金额阈值**: 设置单笔跨境汇款金额阈值
- **月度购汇总额阈值**: 设置月度累计购汇总额阈值
- **月度结汇总额阈值**: 设置月度累计结汇总额阈值
- **频繁外汇交易次数阈值**: 设置单日外汇交易次数阈值
- **参数保存**: 保存配置的阈值参数
- **恢复默认**: 恢复系统默认的阈值参数
**数据要素**:
- 单笔购汇金额阈值(美元/笔)
- 单笔结汇金额阈值(美元/笔)
- 跨境汇款金额阈值(美元/笔)
- 月度购汇总额阈值(美元/月)
- 月度结汇总额阈值(美元/月)
- 频繁外汇交易次数阈值(次/日)
## 数据模型
### 模型参数配置 (ModelParameterConfig)
| 字段名 | 类型 | 说明 | 必填 |
|-------|------|------|-----|
| configId | Long | 配置ID | 是 |
| modelType | String | 模型类型 | 是 |
| parameterName | String | 参数名称 | 是 |
| parameterCode | String | 参数编码 | 是 |
| parameterValue | String | 参数值 | 是 |
| unit | String | 单位 | 否 |
| description | String | 参数描述 | 否 |
| defaultValue | String | 默认值 | 是 |
| createTime | DateTime | 创建时间 | 是 |
| updateTime | DateTime | 更新时间 | 是 |
## 模型参数明细
### 大额交易模型参数
| 参数名称 | 描述 | 默认值 | 单位 |
|---------|------|--------|------|
| 单笔大额交易 | 单笔交易超过该金额 | 500000 | 人民币/笔 |
| 日频繁转账 | 单日转账次数超过 | 10 | 次/日 |
| 周频繁转账 | 单周转账次数超过 | 50 | 次/周 |
| 月频繁转账 | 单月转账次数超过 | 200 | 次/月 |
### 可疑兼职模型参数
| 参数名称 | 描述 | 默认值 | 单位 |
|---------|------|--------|------|
| 月度固定收入 | 月度固定收入超过 | 50000 | 人民币/月 |
| 固定对手转入金额 | 从固定对手单次转入超过 | 20000 | 人民币/笔 |
| 固定对手转入频率 | 从固定对手月度转入次数超过 | 5 | 次/月 |
### 可疑外汇交易模型参数
| 参数名称 | 描述 | 默认值 | 单位 |
|---------|------|--------|------|
| 单笔购汇金额 | 单笔购汇超过该金额 | 50000 | 美元/笔 |
| 单笔结汇金额 | 单笔结汇超过该金额 | 50000 | 美元/笔 |
| 跨境汇款金额 | 单笔跨境汇款超过该金额 | 100000 | 美元/笔 |
| 月度购汇总额 | 月度累计购汇超过 | 200000 | 美元/月 |
| 月度结汇总额 | 月度累计结汇超过 | 200000 | 美元/月 |
| 频繁外汇交易 | 单日外汇交易次数超过 | 5 | 次/日 |
## 业务规则
1. **参数配置权限**: 只有系统管理员可以修改模型参数
2. **参数生效时机**: 参数修改后对新生成的分析报告生效
3. **参数验证**: 保存时验证参数值的合理性和有效性
4. **参数变更记录**: 记录参数的变更历史,包括变更人、变更时间、变更内容
## 页面原型
### 参数配置页面
```
+------------------------------------------+
| 模型参数管理 |
+------------------------------------------+
| 模型名称: [可疑外汇交易模型 ▼] |
+------------------------------------------+
| 阈值参数配置 |
+------------------------------------------+
| 监测项 | 描述 | 阈值设置 | 单位 |
|-------------|------------------|----------|---------|
| 单笔购汇金额 | 单笔购汇超过该金额| 50000 |美元/笔 [查询]|
| 单笔结汇金额 | 单笔结汇超过该金额| 50000 |美元/笔 |
| 跨境汇款金额 | 单笔跨境汇款超过 | 100000 |美元/笔 |
| 月度购汇总额 | 月度累计购汇超过 | 200000 |美元/月 |
| 月度结汇总额 | 月度累计结汇超过 | 200000 |美元/月 |
| 频繁外汇交易 | 单日外汇交易次数超过| 5 |次/日 |
+------------------------------------------+
| [保存配置] [恢复默认] |
+------------------------------------------+
```
## 操作流程
```
1. 选择模型类型
2. 查看当前参数配置
3. 修改参数值
4. 验证参数有效性
5. 保存配置
6. 系统记录变更历史
```
## 交互关系
| 关联模块 | 交互说明 |
|---------|---------|
| 数据管理 | 配置的参数用于数据质量检查 |
| 初核结果总览 | 配置的参数用于风险模型分析 |
## 功能特性
### 参数管理
- 支持多模型参数配置
- 支持参数值的实时验证
- 支持参数默认值恢复
- 支持参数变更历史记录
### 参数验证
- 参数类型验证
- 参数范围验证
- 参数逻辑关系验证
### 权限控制
- 系统管理员可修改参数
- 普通用户只能查看参数
- 参数修改需要审批(可选)
## 功能点统计
- 二级功能: 3个
- 三级功能点: 6个
## 版本信息
- **文档版本**: V1.0
- **创建日期**: 2026-01-27
- **基于原文档**: 纪检初核系统功能说明书V1.0 第346-373行

View File

@@ -0,0 +1,215 @@
# 05-系统管理模块
## 模块概述
系统管理模块提供系统基础管理功能,包括用户权限管理、项目统计和操作日志管理。
## 模块结构
```
系统管理模块
├── 用户权限管理
├── 项目统计
└── 操作日志管理
```
## 功能分解
### 5.1 用户权限管理
**功能描述**: 系统管理员可对访问系统的用户账号进行增、删、改、禁用等操作。
**功能点**:
- **用户管理**: 对用户账号进行增、删、改、查操作
- **角色管理**: 定义和管理系统角色,分配角色权限
- **权限分配**: 为角色分配菜单权限和数据权限
- **用户禁用/启用**: 对用户账号进行禁用或启用操作
- **密码管理**: 重置用户密码,强制用户修改密码
**数据要素**:
- 用户账号
- 用户姓名
- 所属部门
- 角色
- 账号状态
- 最后登录时间
### 5.2 项目统计
**功能描述**: 根据年度、组长、对象、成果等维度进行项目统计分析。
**功能点**:
- **年度统计**: 按年度统计项目数量、完成情况等
- **组长统计**: 按项目负责人统计项目情况
- **对象统计**: 按核查对象统计项目情况
- **成果统计**: 统计项目成果(发现问题数量、预警人数等)
- **统计报表生成**: 生成可视化统计报表
**数据要素**:
- 统计维度(年度/组长/对象/成果)
- 项目数量
- 完成状态
- 预警人数
- 发现问题数量
### 5.3 操作日志管理
**功能描述**: 记录用户的关键操作,支持按时间、用户、操作类型进行查询。
**功能点**:
- **日志记录**: 自动记录用户的关键操作(登录、数据导入、模型运行、报告生成等)
- **日志查询**: 支持按时间范围、用户、操作类型等条件查询
- **日志详情**: 查看操作日志的详细信息
- **日志导出**: 支持将操作日志导出为Excel
**数据要素**:
- 操作时间
- 操作用户
- 操作类型
- 操作模块
- 操作内容
- 操作结果
- IP地址
## 数据模型
### 用户 (SysUser)
| 字段名 | 类型 | 说明 | 必填 |
|-------|------|------|-----|
| userId | Long | 用户ID | 是 |
| userName | String | 用户账号 | 是 |
| nickName | String | 用户姓名 | 是 |
| deptId | Long | 部门ID | 是 |
| phonenumber | String | 手机号码 | 否 |
| status | String | 账号状态(正常/停用) | 是 |
| lastLoginTime | DateTime | 最后登录时间 | 否 |
### 角色 (SysRole)
| 字段名 | 类型 | 说明 | 必填 |
|-------|------|------|-----|
| roleId | Long | 角色ID | 是 |
| roleName | String | 角色名称 | 是 |
| roleKey | String | 角色权限字符串 | 是 |
| status | String | 角色状态(正常/停用) | 是 |
### 操作日志 (SysOperLog)
| 字段名 | 类型 | 说明 | 必填 |
|-------|------|------|-----|
| operId | Long | 日志ID | 是 |
| title | String | 模块标题 | 是 |
| businessType | String | 业务类型0其它 1新增 2修改 3删除 | 是 |
| method | String | 方法名称 | 是 |
| requestMethod | String | 请求方式 | 是 |
| operName | String | 操作人员 | 是 |
| deptName | String | 部门名称 | 否 |
| operUrl | String | 请求URL | 是 |
| operIp | String | 主机地址 | 是 |
| operLocation | String | 操作地点 | 否 |
| operParam | String | 请求参数 | 是 |
| jsonResult | String | 返回参数 | 是 |
| status | Integer | 操作状态0正常 1异常 | 是 |
| errorMsg | String | 错误消息 | 否 |
| operTime | DateTime | 操作时间 | 是 |
### 项目统计 (ProjectStatistics)
| 字段名 | 类型 | 说明 | 必填 |
|-------|------|------|-----|
| statId | Long | 统计ID | 是 |
| statDimension | String | 统计维度 | 是 |
| statValue | String | 统计值 | 是 |
| projectCount | Integer | 项目数量 | 是 |
| completedCount | Integer | 完成项目数 | 是 |
| warningCount | Integer | 预警人数 | 是 |
| issueCount | Integer | 发现问题数 | 是 |
| statYear | Integer | 统计年度 | 否 |
## 操作类型分类
| 操作类型 | 说明 |
|---------|------|
| 用户登录 | 用户登录系统 |
| 数据导入 | 导入各类数据 |
| 模型运行 | 运行风险模型 |
| 报告生成 | 生成分析报告 |
| 数据导出 | 导出数据或报告 |
| 参数配置 | 修改系统参数 |
| 用户管理 | 管理用户账号 |
| 其他 | 其他操作 |
## 业务规则
1. **用户权限管理**:
- 只有系统管理员可以进行用户管理操作
- 禁用用户后该用户无法登录系统
- 用户密码重置后需要用户首次登录时修改
2. **项目统计**:
- 支持多维度组合统计
- 统计数据实时更新
- 支持统计报表导出
3. **操作日志管理**:
- 关键操作自动记录日志
- 日志保留期限至少1年
- 支持日志数据的备份和恢复
## 页面原型
### 1. 用户管理页面
- 用户列表
- 搜索筛选区
- 新增/编辑/删除/禁用操作
- 角色分配
### 2. 项目统计页面
- 统计维度选择区
- 统计结果展示(图表/表格)
- 报表导出功能
### 3. 操作日志页面
- 日志列表
- 搜索筛选区(时间/用户/操作类型)
- 日志详情查看
- 日志导出功能
## 交互关系
| 关联模块 | 交互说明 |
|---------|---------|
| 所有模块 | 操作日志记录所有模块的操作 |
| 项目管理模块 | 项目统计使用项目管理数据 |
## 功能特性
### 用户权限管理
- 基于RBAC的权限控制模型
- 支持角色和权限的灵活配置
- 支持数据权限控制(全部/本部门/本人等)
- 支持用户账号的全生命周期管理
### 项目统计
- 多维度统计分析
- 可视化图表展示
- 支持自定义统计维度
- 支持统计报表导出
### 操作日志管理
- 全面的操作记录
- 灵活的查询条件
- 详细的日志信息
- 支持日志审计和追溯
## 功能点统计
- 二级功能: 3个
- 三级功能点: 6个
## 版本信息
- **文档版本**: V1.0
- **创建日期**: 2026-01-27
- **基于原文档**: 纪检初核系统功能说明书V1.0 第374-388行

66
doc/modules/README.md Normal file
View File

@@ -0,0 +1,66 @@
# 纪检初核系统功能模块总览
## 文档说明
本文档是《纪检初核系统功能说明书V1.0》的需求分解文档,采用三级分解方式将系统功能细化为可执行的功能点。
## 分解结构
```
纪检初核系统
├── 01-项目管理模块
├── 02-项目工作台
│ ├── 02.1-数据管理
│ ├── 02.2-初核结果总览
│ ├── 02.3-专项排查
│ └── 02.4-流水明细查询
├── 03-信息维护模块
├── 04-参数配置模块
└── 05-系统管理模块
```
## 模块概览
| 模块编号 | 模块名称 | 功能说明 | 子模块数 |
|---------|---------|---------|---------|
| 01 | 项目管理模块 | 管理所有历史创建的核查项目,提供项目创建、查询、状态管理等功能 | 0 |
| 02 | 项目工作台 | 核心业务模块,包含数据管理、风险分析、专项排查等功能 | 4 |
| 02.1 | 数据管理 | 数据导入、数据质量检查 | 0 |
| 02.2 | 初核结果总览 | 风险总览、风险模型、风险明细 | 0 |
| 02.3 | 专项排查 | 员工详查、图谱分析、拓展查询 | 0 |
| 02.4 | 流水明细查询 | 流水合并、二次分析 | 0 |
| 03 | 信息维护模块 | 中介库管理、员工信息管理、信贷客户家庭关系维护 | 0 |
| 04 | 参数配置模块 | 风险模型参数管理 | 0 |
| 05 | 系统管理模块 | 用户权限、项目统计、操作日志管理 | 0 |
## 功能点统计
| 模块 | 三级功能点数量 |
|-----|--------------|
| 01-项目管理模块 | 12 |
| 02.1-数据管理 | 10 |
| 02.2-初核结果总览 | 16 |
| 02.3-专项排查 | 10 |
| 02.4-流水明细查询 | 4 |
| 03-信息维护模块 | 6 |
| 04-参数配置模块 | 6 |
| 05-系统管理模块 | 6 |
| **合计** | **70** |
## 文档索引
- [01-项目管理模块](./01-项目管理模块.md)
- [02-项目工作台](./02-项目工作台/)
- [02.1-数据管理](./02-项目工作台/02.1-数据管理.md)
- [02.2-初核结果总览](./02-项目工作台/02.2-初核结果总览.md)
- [02.3-专项排查](./02-项目工作台/02.3-专项排查.md)
- [02.4-流水明细查询](./02-项目工作台/02.4-流水明细查询.md)
- [03-信息维护模块](./03-信息维护模块.md)
- [04-参数配置模块](./04-参数配置模块.md)
- [05-系统管理模块](./05-系统管理模块.md)
## 版本信息
- **文档版本**: V1.0
- **创建日期**: 2026-01-27
- **基于原文档**: 纪检初核系统功能说明书V1.0 (2026-01-16)

Binary file not shown.

Binary file not shown.

View File

@@ -0,0 +1 @@
window.ENV = {"IS_FEAT_FLPAK4GB":true,"IS_FEAT_ABOARD":true,"IS_FEAT_SIGMA":true,"IS_LEGACY_V7":true,"BOMX_API_SDK_URL":"https://sdk.boardmix.cn/bmsdk","BOMX_API_CLIENT_ID":"IpfSMaEsOHWu7cg7","AIPPT_CLIENT_ID":"0ePnORDMD6KJSIIB","AIPPT_API_SDK_URL":"https://sdk.pptgo.cn/pptsdk","PIXSO_API_URL":"https://ps.modao.cc","PIXSO_USER_CLIENT_ID":"pixso_design_online"}

View File

@@ -0,0 +1 @@
TAG_V++3NXya0fYxmDs8mWSM69pSHMU=|2026-01-27T00_2026-01-27T00:11:10.126Z

View File

@@ -0,0 +1 @@
window["hzv5"] = window["hzv5"] || {};window["hzv5"]["init"] = {"MBServer":"modao.cc","MBClientDownloadURL":"https://cdn-release.modao.cc/desktop/Mockitt-darwin-x64-zh-1.2.5.dmg","MBChromeDownloadURL":"https://www.google.cn/chrome/","MBSketchPluginDownloadURL":"https://cdn-release.modao.cc/sketch/MockingBot.zh.sketchplugin.zip","isOnPremises":false,"isWonderShare":false,"projectUpper":{"owner_id":2209883,"owner_name":"谢小涵","owner_email":"153276082@qq.com","owner_avatar":"https://oss-mb-fog.modao.cc/uploads4/avatars/220/2209883/forum_132.jpeg","id":33418631,"limitation":{"storage":5000,"exportable":["png","pngs","htmlzip"],"encryptable":true,"inspectable":true,"slices":true,"projects":65535,"screens":65535,"commentable":true},"screens_count":5,"cid":"pb2mk0rvsqu5j6763","team_cid":"temk0rv8qmsbc9ft","space_cid":"splopmenp3ricy1f","space_name":"默认空间","name":"纪检初核系统","type":"proto2","attr":{"export_settings":[{"affix":"suffix","scale":"1","format":"png"}],"export_with_device_frame":false},"created_at":1767594090000,"updated_at":1768285464000,"timestamp":"1768285464","access":"public","access_token":"WEvGV4cIt8dobuo9KjUF","version":"v3","icon":null,"cover":"/uploads7/covers/3341/33418631/cover_1769473447.png","custom_cover":null,"is_custom_cover":false,"splash":null,"width":1440,"height":1024,"device":"web","model":"desktop","scale":100,"archived":false,"is_sclib":false,"parent_cid":"pb2m9uxlouyf4dwms","source_upper_cid":null,"clones":11,"shell_type":"device","password":"","wechat":false,"highlight":true,"preview_option":1,"expired":false,"deleted":false,"duplicating":false,"permissions":[{"user_id":2209883,"role":"project_owner"}],"is_org_project":false,"is_sub_project":false,"runner_mode":"preview","comment_permission":"org_member","tabs":null,"visibility":"open","building":"view_sticky","scene_tag":"PC-web","is_solo_lifetime":true,"is_first_canvas_open":null},"projectMeta":{"cid":"pm2mk0rvsquvpcjcs","mtime":1767594090054,"name":"","type":"proto2","ttag":"flat","upper_cid":"pb2mk0rvsqu5j6763","upper_type":"project-basic","is_flat_meta":true}}

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1 @@
window["hzv5"] = window["hzv5"] || {};window["hzv5"]["mktc"] = {"md_vip_mkt_list":[],"mt_vip_mkt_list":[],"no_wm_mkt_list":["igk8iirffgi4hpfx","igk8iisxdk72zt9","igk8iiv3qpgl3lsx","igk8iiw2zlastfks","igk8ij5zxd43jlud","igk8ijdjkayrsvvz","igk8ijgosea1iye0","igkszmzkoc8bv5fq","igkw1wjh6762ojwr","igkwotlxrcwn19vd"]}

View File

@@ -0,0 +1,44 @@
<!doctype html><html translate="no"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width,user-scalable=no,initial-scale=1,maximum-scale=1,minimum-scale=1"><meta name="apple-mobile-web-app-capable" content="yes"><meta name="mobile-web-app-capable" content="yes"><meta name="renderer" content="webkit"><meta http-equiv="X-UA-Compatible" content="ie=edge"><title>墨刀</title><link rel="icon" id="icon" href="mb-proto2/vis/modao/favicon_home_screen_new.ico"><link rel="apple-touch-icon-precomposed" id="apple-touch-icon" href="mb-proto2/vis/modao/favicon_home_screen_new.ico"><link rel="stylesheet" href="mb-proto2/icons/fa5/css/fa5.css"><script>if (
function() { try { eval([
'for (const a of []) {}',
'let b = { fetch, Proxy }',
'let c = (async () => {})()',
'let { d0, ...d1 } = { ...b }'
].join(';')) } catch (e) { console.log('!!', e); return true } }()
) location.href = "https://modao.cc/browser-update"</script><script src="mb-static/2410/echarts-map/loadMap.js"></script><script src="env/2203.js"></script><script>window.ENV.NO_SENTRY = true; window.ENV.NO_TRACK = true</script><script>if (ENV.IS_MO) {
document.title = 'Mockitt';
document.documentElement.classList.add('wonder-share');
document.getElementById('icon').href = '/mb-static/2509/favicon-mo.ico';
document.getElementById('apple-touch-icon').href = '/mb-static/2509/favicon-mo.ico';
}</script><script>window.dataLayer = window.dataLayer || [];
function gtag() { dataLayer.push(arguments) };
ENV.IS_MO && gtag('js', new Date());
ENV.IS_MO && gtag('config', 'UA-4839360-64');
ENV.IS_MO && document.write('<script async src="https://www.googletagmanager.com/gtag/js?id=UA-4839360-64"><'+'/script>')</script><script>window.dataLayer = window.dataLayer || [];
function gtag() { dataLayer.push(arguments) };
ENV.IS_MO && gtag('js', new Date());
ENV.IS_MO && gtag('config', 'G-24WTSJBD5B');
ENV.IS_MO && document.write('<script async src="https://www.googletagmanager.com/gtag/js?id=G-24WTSJBD5B"><'+'/script>')</script><script src="mb-static/2308/core-js-3.32.1/modern.js"></script><script>ENV.NO_TRACK || document.write('<script src="mb-static/2502/sa-1.26.18/_.js"><'+'/script>')</script><script defer="defer" src="mb-proto2/6.3688a-vendor-0d07687f4be09b8b3eca.js"></script><script defer="defer" src="mb-proto2/5.fxqum-vendor-f8aaf1fb2db7ed4b19df.js"></script><script defer="defer" src="mb-proto2/5.7b24m-vendor-c6215ade32c4d6e04f4c.js"></script><script defer="defer" src="mb-proto2/4.ekpaa-vendor-4a8c0d8af0989de4a89f.js"></script><script defer="defer" src="mb-proto2/4.n9fxu-vendor-121f3fbb2320541a30bc.js"></script><script defer="defer" src="mb-proto2/3.h4vam-vendor-5567a1235ac230e00561.js"></script><script defer="defer" src="mb-proto2/preview-html-zip-40b1c65b44de21c4ab8a.js"></script><link href="mb-proto2/6.3688a-vendor-16f3ece222913e7058d1.css" rel="stylesheet"><link href="mb-proto2/preview-html-zip-f0d9de76208db26b1137.css" rel="stylesheet"><script>function loadGTM() {
if (ENV.NO_TRACK) {
return
}
(function (w, d, s, l, i) {
w[l] = w[l] || [];
w[l].push({
'gtm.start': new Date().getTime(),
event: 'gtm.js',
});
var f = d.getElementsByTagName(s)[0],
j = d.createElement(s),
dl = l !== 'dataLayer' ? '&l=' + l : '';
j.async = true;
j.src = 'https://www.googletagmanager.com/gtm.js?id=' + i + dl;
f.parentNode.insertBefore(j, f);
})(window, document, 'script', 'dataLayer', 'GTM-TZJK297T');
}
loadGTM()</script></head><body><div id="workspace"></div><script>HZv5_PREVIEW_MODE="device"</script>
<script src="extra/data.0.js"></script>
<script src="extra/data.2.js"></script>
<script src="extra/data.1.js"></script>
</body></html>

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

Binary file not shown.

After

Width:  |  Height:  |  Size: 44 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 56 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 56 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 53 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 52 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 53 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 139 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 88 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 104 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 143 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 379 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 129 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 112 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 35 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 52 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 62 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 39 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 45 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 43 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 49 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 100 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 123 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 88 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 118 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 351 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 103 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 361 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 60 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 43 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 49 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 375 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 665 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 81 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 48 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 194 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 146 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 67 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 74 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 88 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 43 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 63 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 69 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 75 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 67 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 66 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 72 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 62 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 68 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 56 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 61 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 52 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 62 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

Some files were not shown because too many files have changed in this diff Show More