AML/docs/KYC/README.md

218 lines
6.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

# 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`