218 lines
6.5 KiB
Markdown
218 lines
6.5 KiB
Markdown
# KYC (Know Your Customer) 模块
|
||
|
||
## 概述
|
||
|
||
KYC 模块是 AML (Anti-Money Laundering) 系统的核心组成部分,用于对客户进行身份验证和合规检查。系统支持个人(Individual)和企业(Organization)两种实体类型。
|
||
|
||
## 目录结构
|
||
|
||
### 后端 (AML_Backend)
|
||
|
||
```
|
||
modules/iCON.Abp.AML/
|
||
├── src/
|
||
│ ├── iCON.Abp.AML.Application/
|
||
│ │ └── KYC/
|
||
│ │ ├── KYCService.cs # 核心KYC服务
|
||
│ │ ├── HandlerService.cs # 证件处理器服务
|
||
│ │ ├── XiangyunService.cs # 祥云OCR识别服务
|
||
│ │ ├── WebSearchService.cs # 失信人网络搜索
|
||
│ │ ├── CardInfoContentReader.cs # 卡片信息读取
|
||
│ │ ├── CertificateEntityValueFinder.cs
|
||
│ │ ├── ElasticResultJsonReader.cs
|
||
│ │ ├── TranslateMapper.cs
|
||
│ │ ├── MockKYCService.cs # KYC模拟服务(测试用)
|
||
│ │ └── MockHandlerService.cs # 处理器模拟服务
|
||
│ ├── iCON.Abp.AML.Application.Contracts/
|
||
│ │ └── KYCAppLayer/
|
||
│ │ ├── IKYCService.cs # KYC服务接口
|
||
│ │ ├── ScanCertificateDto.cs
|
||
│ │ ├── CertificateHandleDto.cs
|
||
│ │ └── ...
|
||
│ ├── iCON.Abp.AML.Domain/
|
||
│ │ └── KYC/
|
||
│ │ ├── KYCSetting.cs # KYC设置实体
|
||
│ │ ├── KYCCheckResultRecord.cs # KYC检查结果记录
|
||
│ │ ├── CertificateValidateRecord.cs
|
||
│ │ ├── ScanAndValidateSetting.cs
|
||
│ │ └── AttachmentFileSetting.cs
|
||
│ └── iCON.Abp.AML.HttpApi/
|
||
│ └── Controllers/
|
||
│ └── KYCController.cs # API控制器
|
||
└── test/
|
||
└── iCON.Abp.AML.Application.Tests/
|
||
└── TestKYCService_*.cs # KYC单元测试
|
||
```
|
||
|
||
### 前端 (AML_Frontend)
|
||
|
||
```
|
||
AML_Frontend/src/app/
|
||
├── services/
|
||
│ └── aml-kyc.service.ts # KYC服务
|
||
├── util/interfaces/
|
||
│ └── aml-kyc.ts # KYC接口定义
|
||
└── components/
|
||
└── components-viewer/
|
||
└── viewer-customer-info/
|
||
└── components/
|
||
└── kyc-section/ # KYC区域组件
|
||
└── components-form/
|
||
└── form-kyc-org-inv/ # 企业KYC表单
|
||
```
|
||
|
||
## 支持的证件类型
|
||
|
||
证件类型配置位于: `src/iCON.Abp.FX.HttpApi.Host/Data/AML/KYC/CertificateMappings/`
|
||
|
||
### 个人证件 (Individual)
|
||
| 证件类型 | 代码 | 说明 |
|
||
|---------|------|------|
|
||
| 中国居民身份证 | IDCard_CHN | 支持2012版 |
|
||
| 香港居民身份证 | IDCard_HKG | 支持2003/2018版 |
|
||
| 护照 | Passport_* | 支持多国护照 (USA, VNM, CHN, DEU, GBR, TWN等) |
|
||
| 旅行证 | Travel_Permit_* | 往来内地/港澳通行证等 |
|
||
|
||
### 企业证件 (Organization)
|
||
| 证件类型 | 代码 | 说明 |
|
||
|---------|------|------|
|
||
| 香港公司注册证书 | ORG_HKG | BR (Business Registration) |
|
||
| 香港公司CI | ORG_HKG_CI | 公司注册证明书 |
|
||
| 中国企业证件 | ORG_CHN | |
|
||
|
||
## API 接口
|
||
|
||
基础路径: `/api/aml/kyc`
|
||
|
||
### 证件扫描
|
||
|
||
| 接口 | 方法 | 说明 |
|
||
|------|------|------|
|
||
| `/ScanCertificate` | POST | 扫描证件 (v1) |
|
||
| `/ScanCertificateV2` | POST | 扫描证件 (v2) |
|
||
|
||
### 证件处理
|
||
|
||
| 接口 | 方法 | 说明 |
|
||
|------|------|------|
|
||
| `/CertificateHandle` | POST | 证件识别/验证/失信人检测 |
|
||
| `/ValidateCredit` | POST | 征信查询 |
|
||
| `/GetLastValidateCredit` | POST | 获取上次征信结果 |
|
||
|
||
### 设置管理
|
||
|
||
| 接口 | 方法 | 说明 |
|
||
|------|------|------|
|
||
| `/GetScanAndValidateSetting` | POST | 获取扫描/验证设置 |
|
||
| `/UpdateScanAndValidateSetting` | POST | 更新扫描/验证设置 |
|
||
| `/GetAttachmentFileSetting` | POST | 获取附件文件设置 |
|
||
| `/UpdateAttachmentFileSetting` | POST | 更新附件文件设置 |
|
||
|
||
### KYC 结果
|
||
|
||
| 接口 | 方法 | 说明 |
|
||
|------|------|------|
|
||
| `/GetKYCCheckResult` | POST | 获取KYC检查结果 |
|
||
| `/SaveKYCCheckResult` | POST | 保存KYC检查结果 |
|
||
| `/ReCheckKYCStatus` | POST | 重新检查KYC状态 |
|
||
| `/GetReportIndividualKYCCheckResult` | POST | 获取个人KYC报告 |
|
||
| `/GetReportOrganizationKYCCheckResult` | POST | 获取企业KYC报告 |
|
||
|
||
### 外部 API
|
||
|
||
| 接口 | 方法 | 说明 |
|
||
|------|------|------|
|
||
| `/openApi/kycCertificateVerify` | POST | 外部证件验证 |
|
||
| `/openApi/kycQueryCredit` | POST | 外部征信查询 |
|
||
|
||
## 核心流程
|
||
|
||
### 证件扫描 (ScanCertificateV2)
|
||
|
||
```
|
||
用户上传证件图片
|
||
↓
|
||
调用 OCR 服务识别证件内容
|
||
↓
|
||
提取证件信息 (姓名、证件号、有效期等)
|
||
↓
|
||
返回识别结果
|
||
```
|
||
|
||
### 证件处理 (CertificateHandle)
|
||
|
||
```
|
||
传入 EntityInfo + KYCCertificateCode + HandlerCodes
|
||
↓
|
||
根据 HandlerCodes 执行对应处理器:
|
||
- ValidateIDCard: 身份证验证
|
||
- ValidateBR: 商业登记证验证
|
||
- ValidateCredit: 失信人检测
|
||
- ScanCertificate: 证件扫描
|
||
↓
|
||
返回处理结果 (IsValidated, SourceResult 等)
|
||
```
|
||
|
||
### KYC 状态检查
|
||
|
||
```
|
||
获取实体 (Individual/Organization)
|
||
↓
|
||
检查所需证件是否齐全
|
||
↓
|
||
验证证件有效性
|
||
↓
|
||
检测失信人名单
|
||
↓
|
||
返回 KYC 状态评级 (RatingEnum)
|
||
```
|
||
|
||
## 关键服务
|
||
|
||
### KYCService
|
||
核心服务类,负责协调各子服务完成KYC流程。
|
||
|
||
### HandlerService
|
||
证件处理器,根据不同证件类型调用对应的验证服务。
|
||
|
||
### XiangyunService
|
||
调用祥云OCR服务进行证件识别。
|
||
|
||
### WebSearchService
|
||
执行网络搜索检测实体是否在失信人名单中。
|
||
|
||
## 数据模型
|
||
|
||
### KYCSetting
|
||
存储租户的KYC配置,包括:
|
||
- `AttachmentFileSetting`: 附件文件设置
|
||
- `ScanAndValidateSetting`: 扫描验证设置
|
||
|
||
### KYCCheckResultRecord
|
||
存储KYC检查结果记录,关联到具体实体。
|
||
|
||
### CertificateValidateRecord
|
||
存储证件验证记录,包含验证状态和来源结果。
|
||
|
||
## 前端集成
|
||
|
||
```typescript
|
||
import { AmlKycService } from '@/services/aml-kyc.service';
|
||
|
||
constructor(private kycService: AmlKycService) {}
|
||
|
||
// 扫描证件
|
||
this.kycService.scanCertificateV2(params);
|
||
|
||
// 获取KYC结果
|
||
this.kycService.getKYCCheckResult(entityId);
|
||
```
|
||
|
||
## 测试
|
||
|
||
测试文件位于: `modules/iCON.Abp.AML/test/iCON.Abp.AML.Application.Tests/`
|
||
|
||
- `TestKYCService_ScanCertificate*.cs`
|
||
- `TestKYCService_GetAttachmentFileSettingAsync.cs`
|
||
- `TestKYCService_GetScanAndValidateSettingAsync.cs`
|