AML/docs/KYC/README.md

6.5 KiB
Raw Blame History

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

存储证件验证记录,包含验证状态和来源结果。

前端集成

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