# 证券中台管理系统 - 最小上线方案（MVP）
## Minimum Viable Product Implementation Plan

---

**文档版本**: v1.0  
**编写日期**: 2025-10-14  
**目标**: 支持股票、基金、债券、结构化产品交易的最小可行产品上线方案  
**预计上线时间**: 6-8周

---

## 📋 目录

1. [执行摘要](#1-执行摘要)
2. [系统概述](#2-系统概述)
3. [MVP功能清单](#3-mvp功能清单)
4. [核心模块详细设计](#4-核心模块详细设计)
5. [技术架构方案](#5-技术架构方案)
6. [数据模型设计](#6-数据模型设计)
7. [系统集成方案](#7-系统集成方案)
8. [上线实施计划](#8-上线实施计划)
9. [合规与风控](#9-合规与风控)
10. [测试方案](#10-测试方案)
11. [上线检查清单](#11-上线检查清单)

---

## 1. 执行摘要

### 1.1 项目目标

本方案旨在设计一个**最小可行产品（MVP）**，使证券中台管理系统能够支持：
- ✅ **股票交易**：港股、美股、A股下单与执行
- ✅ **基金交易**：基金认购、赎回、分红管理
- ✅ **债券交易**：债券认购、到期管理、派息处理
- ✅ **结构化产品**：FCN等结构化产品接单、风控、下单
- ✅ **产品库管理**：四类产品的完整生命周期管理

### 1.2 核心价值

| 维度 | 价值 |
|------|------|
| **业务覆盖** | 覆盖券商核心交易产品，满足80%业务需求 |
| **上线速度** | 6-8周快速上线，抢占市场先机 |
| **技术风险** | 基于成熟技术栈，降低技术风险 |
| **扩展性** | 预留扩展接口，支持后续功能迭代 |

### 1.3 关键成功因素

1. **核心功能完整性**：确保交易流程端到端可执行
2. **系统稳定性**：7×24小时稳定运行，99.5%可用性
3. **合规性**：满足香港SFC和HKMA监管要求
4. **用户体验**：操作简便，响应速度快

---

## 2. 系统概述

### 2.1 系统定位

证券中台管理系统是一个面向香港持牌券商的企业级中台平台，连接前端CRM系统和后端Ayers交易系统，实现：

```
CRM系统 (客户下单)
    ↓
中台系统 (订单处理、风控、审批)
    ↓
Ayers系统 (交易执行)
    ↓
清算系统 (结算交收)
```

### 2.2 MVP范围界定

#### ✅ 包含的功能（MVP核心）

1. **产品管理模块**
   - 产品库基础信息管理（股票、基金、债券、结构化产品）
   - 产品上架/下架流程
   - 产品白名单管理（股票）

2. **订单管理模块**
   - CRM订单接收
   - 白名单检查（股票）
   - 风控检查
   - 订单提交到Ayers
   - 订单状态跟踪

3. **存续管理模块**
   - 基金存续管理（分红、NAV更新）
   - 债券存续管理（派息、到期）
   - 结构化产品存续管理（敲出、派息）

4. **清算模块**
   - 已成交订单导出Ayers CSV
   - 清算报表生成

5. **审批模块**
   - 基础审批流程
   - 风控超限审批

#### ❌ 暂不包含的功能（后续迭代）

1. 客户管理（暂时依赖CRM系统）
2. 开户管理（暂时依赖现有系统）
3. 佣金管理（暂时依赖现有系统）
4. 数据分析报表（后续迭代）
5. 实时行情集成（后续迭代）

---

## 3. MVP功能清单

### 3.1 产品管理功能

#### 3.1.1 股票管理
- [x] 股票产品列表展示
- [x] 股票白名单管理
  - 添加/删除白名单股票
  - 白名单状态管理
- [x] 股票基本信息管理（代码、名称、市场、行业）

#### 3.1.2 基金管理
- [x] 基金产品列表展示
- [x] 基金基本信息管理（代码、名称、管理人、类型、NAV）
- [x] 基金存续管理
  - 分红事件管理
  - NAV更新跟踪
  - 申购/赎回事件

#### 3.1.3 债券管理
- [x] 债券产品列表展示
- [x] 债券基本信息管理（代码、名称、发行人、票息率、到期日）
- [x] 债券存续管理
  - 派息事件管理
  - 到期事件管理
  - 公司行动跟踪

#### 3.1.4 结构化产品管理
- [x] 结构化产品列表展示
- [x] 发行人管理
  - 发行人DA类型（PTP, Arranger, Subdistribution）
  - 发行人接单时间管理
  - 发行人联系方式
- [x] 结构化产品存续管理
  - 敲出事件管理
  - 派息事件管理

### 3.2 订单管理功能

#### 3.2.1 CRM订单接收
- [x] CRM订单列表展示
- [x] 订单详情查看
- [x] 订单状态跟踪（待处理、处理中、已下单、已拒绝）

#### 3.2.2 订单处理流程
- [x] **股票订单处理**
  - 白名单检查
  - 风控检查（金额限额、客户额度、价格波动）
  - 提交到Ayers系统
  
- [x] **基金订单处理**
  - 基金产品验证
  - 风控检查
  - 提交到Ayers系统
  
- [x] **债券订单处理**
  - 债券产品验证
  - 风控检查
  - 提交到Ayers系统
  
- [x] **结构化产品订单处理**
  - FCN订单接单
  - 邮件内容生成
  - 发行人收件人管理
  - 风控检查
  - 审批流程（超限时）
  - 提交到Ayers系统

#### 3.2.3 询价功能
- [x] 债券询价（MarketAxess集成）
- [x] 结构化产品询价（发行人询价）

### 3.3 存续管理功能

#### 3.3.1 基金存续管理
- [x] 存续基金列表
- [x] 待分红事件管理
- [x] NAV更新提醒
- [x] 申购/赎回事件处理
- [x] 到期事件管理

#### 3.3.2 债券存续管理
- [x] 存续债券列表
- [x] 待派息事件管理
- [x] 到期事件管理
- [x] 公司行动跟踪

#### 3.3.3 结构化产品存续管理
- [x] 存续产品列表
- [x] 敲出事件管理
- [x] 派息事件管理

### 3.4 清算管理功能

- [x] 已成交订单列表
- [x] 订单筛选（日期、产品类型、清算状态）
- [x] Ayers CSV文件生成
  - 支持基金、债券、结构化产品
  - CSV格式符合Ayers系统要求
- [x] 清算报表预览

### 3.5 审批管理功能

- [x] 审批列表展示
- [x] 风控超限审批流程
- [x] 审批状态跟踪

---

## 4. 核心模块详细设计

### 4.1 产品管理模块

#### 4.1.1 数据库设计

**产品主表 (products)**
```sql
CREATE TABLE products (
    product_id VARCHAR(50) PRIMARY KEY,
    product_type ENUM('STOCK', 'FUND', 'BOND', 'STRUCTURED') NOT NULL,
    product_code VARCHAR(50) NOT NULL UNIQUE,
    product_name VARCHAR(200) NOT NULL,
    market VARCHAR(50), -- HK, US, CN
    currency VARCHAR(10) DEFAULT 'USD',
    status ENUM('ACTIVE', 'SUSPENDED', 'DELISTED') DEFAULT 'ACTIVE',
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
    INDEX idx_product_type (product_type),
    INDEX idx_product_code (product_code),
    INDEX idx_status (status)
);
```

**股票信息表 (stocks)**
```sql
CREATE TABLE stocks (
    product_id VARCHAR(50) PRIMARY KEY,
    stock_code VARCHAR(50) NOT NULL,
    stock_name VARCHAR(200) NOT NULL,
    market VARCHAR(50) NOT NULL,
    industry VARCHAR(100),
    is_whitelisted BOOLEAN DEFAULT FALSE,
    current_price DECIMAL(18,4),
    price_updated_at TIMESTAMP,
    FOREIGN KEY (product_id) REFERENCES products(product_id)
);
```

**基金信息表 (funds)**
```sql
CREATE TABLE funds (
    product_id VARCHAR(50) PRIMARY KEY,
    fund_code VARCHAR(50) NOT NULL,
    fund_name VARCHAR(200) NOT NULL,
    fund_manager VARCHAR(200),
    fund_type VARCHAR(50), -- 股票型、债券型、混合型
    nav DECIMAL(18,4),
    nav_updated_at TIMESTAMP,
    subscription_date DATE,
    maturity_date DATE,
    FOREIGN KEY (product_id) REFERENCES products(product_id)
);
```

**债券信息表 (bonds)**
```sql
CREATE TABLE bonds (
    product_id VARCHAR(50) PRIMARY KEY,
    bond_code VARCHAR(50) NOT NULL,
    bond_name VARCHAR(200) NOT NULL,
    issuer VARCHAR(200),
    coupon_rate DECIMAL(10,4),
    coupon_frequency VARCHAR(20), -- 半年、季度
    face_value DECIMAL(18,2),
    maturity_date DATE,
    issue_date DATE,
    current_price DECIMAL(18,4),
    yield DECIMAL(10,4),
    FOREIGN KEY (product_id) REFERENCES products(product_id)
);
```

**结构化产品信息表 (structured_products)**
```sql
CREATE TABLE structured_products (
    product_id VARCHAR(50) PRIMARY KEY,
    product_code VARCHAR(50) NOT NULL,
    product_name VARCHAR(200) NOT NULL,
    issuer_code VARCHAR(50),
    issuer_name VARCHAR(200),
    product_type VARCHAR(50), -- FCN, ELN等
    underlying VARCHAR(200),
    issue_date DATE,
    maturity_date DATE,
    knock_out_level DECIMAL(18,4),
    coupon_rate DECIMAL(10,4),
    FOREIGN KEY (product_id) REFERENCES products(product_id)
);
```

**发行人管理表 (issuers)**
```sql
CREATE TABLE issuers (
    issuer_code VARCHAR(50) PRIMARY KEY,
    issuer_name VARCHAR(200) NOT NULL,
    is_ptp BOOLEAN DEFAULT FALSE,
    is_arranger BOOLEAN DEFAULT FALSE,
    allow_subdistribution BOOLEAN DEFAULT FALSE,
    order_accept_timezone VARCHAR(50),
    order_accept_start_time TIME,
    order_accept_end_time TIME,
    contact_email VARCHAR(200),
    contact_phone VARCHAR(50),
    status ENUM('ACTIVE', 'INACTIVE') DEFAULT 'ACTIVE',
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
```

#### 4.1.2 API接口设计

**产品查询接口**
```
GET /api/v1/products
Query Parameters:
  - product_type: STOCK|FUND|BOND|STRUCTURED
  - market: HK|US|CN
  - status: ACTIVE|SUSPENDED|DELISTED
  - page: 页码
  - page_size: 每页数量

Response:
{
  "code": 200,
  "data": {
    "items": [...],
    "total": 100,
    "page": 1,
    "page_size": 20
  }
}
```

**白名单管理接口**
```
POST /api/v1/stocks/whitelist
Body: {
  "stock_code": "00700.HK",
  "stock_name": "腾讯控股",
  "market": "HK"
}

DELETE /api/v1/stocks/whitelist/{stock_code}
```

### 4.2 订单管理模块

#### 4.2.1 数据库设计

**订单主表 (orders)**
```sql
CREATE TABLE orders (
    order_id VARCHAR(50) PRIMARY KEY,
    crm_order_id VARCHAR(50), -- CRM系统订单号
    customer_id VARCHAR(50) NOT NULL,
    customer_name VARCHAR(100),
    product_id VARCHAR(50) NOT NULL,
    product_type ENUM('STOCK', 'FUND', 'BOND', 'STRUCTURED') NOT NULL,
    order_type ENUM('BUY', 'SELL', 'SUBSCRIPTION', 'REDEMPTION') NOT NULL,
    quantity DECIMAL(18,4),
    price DECIMAL(18,4),
    amount DECIMAL(18,2),
    currency VARCHAR(10) DEFAULT 'USD',
    order_time TIMESTAMP NOT NULL,
    status ENUM('PENDING', 'PROCESSING', 'SUBMITTED', 'REJECTED', 'CANCELLED') DEFAULT 'PENDING',
    whitelist_check_status ENUM('PENDING', 'PASSED', 'FAILED') DEFAULT 'PENDING',
    risk_check_status ENUM('PENDING', 'PASSED', 'FAILED', 'APPROVAL_REQUIRED') DEFAULT 'PENDING',
    ayers_trade_id VARCHAR(50),
    rejection_reason TEXT,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
    INDEX idx_customer_id (customer_id),
    INDEX idx_product_id (product_id),
    INDEX idx_status (status),
    INDEX idx_order_time (order_time)
);
```

**订单处理日志表 (order_logs)**
```sql
CREATE TABLE order_logs (
    log_id BIGINT AUTO_INCREMENT PRIMARY KEY,
    order_id VARCHAR(50) NOT NULL,
    step VARCHAR(50), -- WHITELIST_CHECK, RISK_CHECK, AYERS_SUBMIT
    status VARCHAR(50), -- SUCCESS, FAILED
    message TEXT,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    INDEX idx_order_id (order_id)
);
```

#### 4.2.2 订单处理流程设计

**股票订单处理流程**
```
1. 接收CRM订单
   ↓
2. 白名单检查
   ├─ 通过 → 3
   └─ 失败 → 拒绝订单
   ↓
3. 风控检查
   ├─ 通过 → 4
   ├─ 失败 → 拒绝订单
   └─ 超限 → 提交审批
   ↓
4. 提交到Ayers
   ├─ 成功 → 更新订单状态为SUBMITTED
   └─ 失败 → 记录错误，通知管理员
```

**基金/债券订单处理流程**
```
1. 接收CRM订单
   ↓
2. 产品验证
   ├─ 有效 → 3
   └─ 无效 → 拒绝订单
   ↓
3. 风控检查
   ├─ 通过 → 4
   ├─ 失败 → 拒绝订单
   └─ 超限 → 提交审批
   ↓
4. 提交到Ayers
```

**结构化产品订单处理流程**
```
1. 接收CRM订单（FCN等）
   ↓
2. 生成邮件内容
   ↓
3. Dealing确认邮件
   ↓
4. 风控检查
   ├─ 通过 → 5
   ├─ 失败 → 拒绝订单
   └─ 超限 → 提交审批 → 审批通过 → 5
   ↓
5. 发送邮件给发行人
   ↓
6. 提交到Ayers
```

#### 4.2.3 API接口设计

**接收CRM订单接口**
```
POST /api/v1/orders/receive
Body: {
  "crm_order_id": "CRM-ORD-20251013-001",
  "customer_id": "CUST001",
  "customer_name": "张伟",
  "product_code": "00700.HK",
  "product_type": "STOCK",
  "order_type": "BUY",
  "quantity": 100,
  "price": 385.20,
  "amount": 38520,
  "currency": "USD",
  "order_time": "2025-10-13T14:30:25Z"
}

Response: {
  "code": 200,
  "data": {
    "order_id": "ORD-20251013-001",
    "status": "PENDING"
  }
}
```

**订单处理接口**
```
POST /api/v1/orders/{order_id}/process
Response: {
  "code": 200,
  "data": {
    "order_id": "ORD-20251013-001",
    "whitelist_check": "PASSED",
    "risk_check": "PASSED",
    "ayers_trade_id": "AYERS-123456",
    "status": "SUBMITTED"
  }
}
```

**查询订单状态接口**
```
GET /api/v1/orders/{order_id}
Response: {
  "code": 200,
  "data": {
    "order_id": "ORD-20251013-001",
    "status": "SUBMITTED",
    "whitelist_check_status": "PASSED",
    "risk_check_status": "PASSED",
    "ayers_trade_id": "AYERS-123456"
  }
}
```

### 4.3 风控模块

#### 4.3.1 风控规则设计

**股票风控规则**
- 单笔订单金额限制：$100,000
- 客户总授信额度检查
- 价格波动检查（超过3%波动率警告）
- 白名单检查

**基金/债券风控规则**
- 单笔订单金额限制：$500,000
- 客户总授信额度检查
- 产品状态检查（是否可交易）

**结构化产品风控规则**
- 单笔订单金额限制：$1,000,000
- 客户总授信额度检查
- PI客户要求（某些产品仅限PI客户）
- 超过限额需要审批

#### 4.3.2 数据库设计

**客户信用额度表 (customer_credit)**
```sql
CREATE TABLE customer_credit (
    customer_id VARCHAR(50) PRIMARY KEY,
    total_limit DECIMAL(18,2) NOT NULL,
    used_amount DECIMAL(18,2) DEFAULT 0,
    available_amount DECIMAL(18,2) GENERATED ALWAYS AS (total_limit - used_amount),
    updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);
```

**风控规则表 (risk_rules)**
```sql
CREATE TABLE risk_rules (
    rule_id INT AUTO_INCREMENT PRIMARY KEY,
    product_type ENUM('STOCK', 'FUND', 'BOND', 'STRUCTURED'),
    rule_type VARCHAR(50), -- AMOUNT_LIMIT, VOLATILITY_CHECK
    rule_config JSON, -- 规则配置（JSON格式）
    is_active BOOLEAN DEFAULT TRUE,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
```

### 4.4 存续管理模块

#### 4.4.1 数据库设计

**存续持仓表 (holdings)**
```sql
CREATE TABLE holdings (
    holding_id BIGINT AUTO_INCREMENT PRIMARY KEY,
    customer_id VARCHAR(50) NOT NULL,
    product_id VARCHAR(50) NOT NULL,
    product_type ENUM('STOCK', 'FUND', 'BOND', 'STRUCTURED') NOT NULL,
    quantity DECIMAL(18,4),
    purchase_price DECIMAL(18,4),
    purchase_date DATE,
    current_price DECIMAL(18,4),
    current_value DECIMAL(18,2),
    status ENUM('ACTIVE', 'LIQUIDATED', 'MATURED') DEFAULT 'ACTIVE',
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    INDEX idx_customer_id (customer_id),
    INDEX idx_product_id (product_id)
);
```

**存续事件表 (lifecycle_events)**
```sql
CREATE TABLE lifecycle_events (
    event_id BIGINT AUTO_INCREMENT PRIMARY KEY,
    holding_id BIGINT NOT NULL,
    product_type ENUM('STOCK', 'FUND', 'BOND', 'STRUCTURED') NOT NULL,
    event_type VARCHAR(50), -- DIVIDEND, COUPON, NAV_UPDATE, MATURITY, KNOCK_OUT
    event_date DATE NOT NULL,
    event_amount DECIMAL(18,2),
    description TEXT,
    status ENUM('PENDING', 'PROCESSED', 'CANCELLED') DEFAULT 'PENDING',
    priority ENUM('LOW', 'MEDIUM', 'HIGH', 'URGENT') DEFAULT 'MEDIUM',
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    INDEX idx_holding_id (holding_id),
    INDEX idx_event_date (event_date),
    INDEX idx_status (status)
);
```

### 4.5 清算模块

#### 4.5.1 Ayers CSV格式设计

**CSV文件格式**
```csv
OrderID,TradeID,CustomerID,CustomerName,ProductCode,ProductName,ProductType,Direction,Price,Quantity,Amount,Fee,Currency,TradeDate,SettlementDate,SettlementType
ORD20251013001,TRD20251013001,CUST001,张伟,HK0000987654,富达亚洲成长基金,FUND,认购,12.58,50000,629000,3145,USD,2025-10-13,2025-10-15,T+2
```

#### 4.5.2 API接口设计

**生成Ayers CSV接口**
```
POST /api/v1/settlement/generate-csv
Body: {
  "order_ids": ["ORD-001", "ORD-002"], // 可选，不传则导出所有待清算订单
  "settlement_date": "2025-10-15"
}

Response: {
  "code": 200,
  "data": {
    "file_url": "/downloads/ayers_settlement_20251015.csv",
    "order_count": 5,
    "total_amount": 8956000
  }
}
```

---

## 5. 技术架构方案

### 5.1 系统架构图

```
┌─────────────────────────────────────────────────────────┐
│                     前端层                                │
│  HTML5 + Tailwind CSS + JavaScript                      │
│  - 响应式设计，支持桌面和移动端                           │
└─────────────────────────────────────────────────────────┘
                          ↓
┌─────────────────────────────────────────────────────────┐
│                   API网关层                               │
│  Kong / Nginx                                            │
│  - 路由、认证、限流、日志                                │
└─────────────────────────────────────────────────────────┘
                          ↓
┌─────────────────────────────────────────────────────────┐
│                   应用服务层                              │
│  ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐  │
│  │产品服务  │ │订单服务  │ │风控服务  │ │清算服务  │  │
│  │Product   │ │Order     │ │Risk      │ │Settlement│  │
│  │Service   │ │Service   │ │Service   │ │Service   │  │
│  └──────────┘ └──────────┘ └──────────┘ └──────────┘  │
└─────────────────────────────────────────────────────────┘
                          ↓
┌─────────────────────────────────────────────────────────┐
│                   数据持久层                              │
│  PostgreSQL (主数据库)                                    │
│  Redis (缓存)                                            │
│  RabbitMQ (消息队列)                                     │
└─────────────────────────────────────────────────────────┘
                          ↓
┌─────────────────────────────────────────────────────────┐
│                   外部系统集成                            │
│  CRM系统 | Ayers系统 | Bloomberg | MarketAxess         │
└─────────────────────────────────────────────────────────┘
```

### 5.2 技术栈选型

| 层级 | 技术选型 | 版本 | 说明 |
|------|---------|------|------|
| **前端** | HTML5 + CSS3 | - | 响应式设计 |
| | Tailwind CSS | 3.x | 样式框架 |
| | JavaScript (ES6+) | - | 前端交互 |
| **后端** | Java | 17+ | 主要开发语言 |
| | Spring Boot | 3.x | 应用框架 |
| | Spring Cloud | 2022.x | 微服务框架 |
| **数据库** | PostgreSQL | 14+ | 主数据库 |
| | Redis | 7.x | 缓存 |
| **消息队列** | RabbitMQ | 3.x | 异步消息 |
| **API网关** | Kong | 3.x | API管理 |
| **部署** | Docker | 20.x | 容器化 |
| | Kubernetes | 1.28+ | 编排（可选） |
| **监控** | Prometheus | - | 指标监控 |
| | Grafana | - | 可视化 |

### 5.3 部署架构

**MVP阶段部署方案（简化版）**

```
┌─────────────────────────────────────┐
│         Nginx (负载均衡)              │
└─────────────────────────────────────┘
           ↓         ↓
    ┌──────────┐ ┌──────────┐
    │ 应用服务器1│ │ 应用服务器2│
    │ (Docker) │ │ (Docker) │
    └──────────┘ └──────────┘
           ↓         ↓
    ┌──────────────────────┐
    │   PostgreSQL (主从)   │
    └──────────────────────┘
           ↓
    ┌──────────────────────┐
    │   Redis (缓存)       │
    └──────────────────────┘
```

**硬件资源要求（MVP）**

| 组件 | 配置 | 数量 |
|------|------|------|
| **应用服务器** | 4核CPU, 8GB内存, 100GB磁盘 | 2台 |
| **数据库服务器** | 8核CPU, 16GB内存, 500GB SSD | 1台（主）+ 1台（从）|
| **Redis服务器** | 2核CPU, 4GB内存 | 1台 |
| **Nginx服务器** | 2核CPU, 2GB内存 | 1台 |

---

## 6. 数据模型设计

### 6.1 核心实体关系图（ERD）

```
┌─────────────┐
│  Products   │
│─────────────│
│ product_id  │◄──┐
│ product_type│   │
│ product_code│   │
│ status      │   │
└─────────────┘   │
       │          │
       │          │
       ├──────────┼──────────┬──────────────┐
       │          │          │              │
┌──────▼───┐ ┌───▼────┐ ┌──▼──────┐ ┌────▼─────────┐
│  Stocks  │ │ Funds  │ │ Bonds   │ │ Structured   │
│──────────│ │────────│ │─────────│ │ Products     │
│ stock_code││fund_code││bond_code│ │ product_code │
│ market   │ │manager │ │issuer   │ │ issuer_code  │
│ whitelist│ │nav     │ │coupon   │ │ underlying   │
└──────────┘ └────────┘ └─────────┘ └──────────────┘
                                              │
                                              │
                                    ┌─────────▼────────┐
                                    │    Issuers       │
                                    │──────────────────│
                                    │ issuer_code      │
                                    │ is_ptp           │
                                    │ is_arranger      │
                                    │ accept_time      │
                                    └──────────────────┘

┌─────────────┐
│   Orders    │
│─────────────│
│ order_id    │
│ customer_id │─────┐
│ product_id  │─────┤
│ status      │     │
│ whitelist   │     │
│ risk_check  │     │
└─────────────┘     │
       │            │
       │            │
┌──────▼────────────▼────┐
│    Holdings            │
│────────────────────────│
│ holding_id             │
│ customer_id            │
│ product_id             │
│ quantity               │
│ purchase_date          │
└────────────────────────┘
       │
       │
┌──────▼──────────────┐
│ Lifecycle Events     │
│──────────────────────│
│ event_id             │
│ holding_id           │
│ event_type           │
│ event_date           │
│ status               │
└──────────────────────┘
```

### 6.2 数据初始化脚本

**产品数据初始化**
```sql
-- 初始化股票白名单（示例）
INSERT INTO products (product_id, product_type, product_code, product_name, market, status)
VALUES 
  ('PROD-STOCK-001', 'STOCK', '00700.HK', '腾讯控股', 'HK', 'ACTIVE'),
  ('PROD-STOCK-002', 'STOCK', 'AAPL', '苹果公司', 'US', 'ACTIVE');

INSERT INTO stocks (product_id, stock_code, stock_name, market, is_whitelisted)
VALUES 
  ('PROD-STOCK-001', '00700.HK', '腾讯控股', 'HK', TRUE),
  ('PROD-STOCK-002', 'AAPL', '苹果公司', 'US', TRUE);

-- 初始化基金数据（示例）
INSERT INTO products (product_id, product_type, product_code, product_name, currency, status)
VALUES 
  ('PROD-FUND-001', 'FUND', 'HK0000987654', '富达亚洲成长基金', 'USD', 'ACTIVE');

INSERT INTO funds (product_id, fund_code, fund_name, fund_manager, fund_type, nav)
VALUES 
  ('PROD-FUND-001', 'HK0000987654', '富达亚洲成长基金', '富达基金管理公司', '股票型', 12.58);

-- 初始化债券数据（示例）
INSERT INTO products (product_id, product_type, product_code, product_name, currency, status)
VALUES 
  ('PROD-BOND-001', 'BOND', 'US9128283J45', '美国国债 3.5% 2030', 'USD', 'ACTIVE');

INSERT INTO bonds (product_id, bond_code, bond_name, issuer, coupon_rate, maturity_date)
VALUES 
  ('PROD-BOND-001', 'US9128283J45', '美国国债 3.5% 2030', '美国财政部', 3.5, '2030-08-15');

-- 初始化发行人数据
INSERT INTO issuers (issuer_code, issuer_name, is_ptp, is_arranger, allow_subdistribution, status)
VALUES 
  ('ISS-001', '发行人A', TRUE, TRUE, FALSE, 'ACTIVE'),
  ('ISS-002', '发行人B', FALSE, TRUE, TRUE, 'ACTIVE');
```

---

## 7. 系统集成方案

### 7.1 CRM系统集成

#### 7.1.1 集成方式

**方案1：REST API（推荐）**
- CRM系统通过REST API推送订单到中台
- 中台返回订单接收状态和处理结果

**方案2：消息队列**
- CRM系统发送订单消息到RabbitMQ
- 中台系统订阅消息队列接收订单

#### 7.1.2 接口规范

**CRM订单推送接口**
```
POST /api/v1/integration/crm/order
Headers:
  Authorization: Bearer {token}
  Content-Type: application/json

Body: {
  "crm_order_id": "CRM-ORD-20251013-001",
  "customer_id": "CUST001",
  "customer_name": "张伟",
  "product_code": "00700.HK",
  "product_type": "STOCK",
  "order_type": "BUY",
  "quantity": 100,
  "price": 385.20,
  "amount": 38520,
  "currency": "USD",
  "order_time": "2025-10-13T14:30:25Z"
}

Response: {
  "code": 200,
  "message": "订单接收成功",
  "data": {
    "order_id": "ORD-20251013-001",
    "status": "PENDING"
  }
}
```

### 7.2 Ayers系统集成

#### 7.2.1 集成方式

**方案1：文件传输（CSV）**
- 中台生成CSV文件
- 通过FTP/SFTP传输到Ayers系统
- Ayers系统自动导入

**方案2：API接口**
- 中台通过REST API提交订单到Ayers
- 实时返回交易结果

#### 7.2.2 CSV文件格式

参考4.5.1节设计的CSV格式。

#### 7.2.3 订单提交接口（如果Ayers支持API）

```
POST /api/v1/integration/ayers/order
Body: {
  "order_id": "ORD-20251013-001",
  "customer_id": "CUST001",
  "product_code": "00700.HK",
  "order_type": "BUY",
  "quantity": 100,
  "price": 385.20,
  "trade_date": "2025-10-13"
}

Response: {
  "code": 200,
  "data": {
    "ayers_trade_id": "AYERS-123456",
    "status": "SUBMITTED"
  }
}
```

### 7.3 外部数据源集成

#### 7.3.1 行情数据（后续迭代）

- **Bloomberg API**：实时行情、NAV更新
- **MarketAxess**：债券报价

#### 7.3.2 风控数据源

- **客户信用数据**：从CRM系统获取
- **产品基础数据**：从产品管理系统获取

---

## 8. 上线实施计划

### 8.1 项目时间线

```
第1-2周：需求确认与详细设计
├─ 与业务方确认MVP范围
├─ 数据库详细设计评审
├─ API接口设计评审
└─ 技术方案评审

第3-4周：开发阶段1 - 基础功能
├─ 数据库创建与初始化
├─ 产品管理模块开发
├─ 白名单管理功能
└─ 基础API开发

第5-6周：开发阶段2 - 核心功能
├─ 订单管理模块开发
├─ 风控模块开发
├─ CRM/Ayers集成开发
└─ 存续管理模块开发

第7周：开发阶段3 - 清算与测试
├─ 清算模块开发
├─ 单元测试
├─ 集成测试
└─ 用户验收测试（UAT）

第8周：上线准备与上线
├─ 性能测试
├─ 安全测试
├─ 生产环境部署
├─ 数据迁移
└─ 正式上线
```

### 8.2 人员配置

| 角色 | 人数 | 职责 |
|------|------|------|
| **项目经理** | 1 | 项目协调、进度管理 |
| **架构师** | 1 | 技术架构设计、技术决策 |
| **后端开发** | 3 | API开发、业务逻辑 |
| **前端开发** | 1 | 前端页面开发（已有HTML） |
| **测试工程师** | 1 | 测试用例设计、执行 |
| **运维工程师** | 1 | 环境搭建、部署 |
| **业务分析师** | 1 | 需求分析、UAT支持 |

### 8.3 里程碑与交付物

| 里程碑 | 时间 | 交付物 |
|--------|------|--------|
| **M1：设计完成** | 第2周末 | 详细设计文档、数据库设计、API文档 |
| **M2：基础功能完成** | 第4周末 | 产品管理模块、白名单功能 |
| **M3：核心功能完成** | 第6周末 | 订单管理、风控、集成功能 |
| **M4：测试完成** | 第7周末 | 测试报告、UAT报告 |
| **M5：正式上线** | 第8周末 | 生产环境部署完成 |

---

## 9. 合规与风控

### 9.1 合规要求

#### 9.1.1 香港SFC要求

1. **客户适当性评估**
   - 确保产品与客户风险承受能力匹配
   - 记录客户投资经验

2. **交易记录保存**
   - 所有订单记录保存至少7年
   - 审计日志完整记录

3. **信息披露**
   - 产品风险提示
   - 交易确认通知

#### 9.1.2 系统实现

- 订单处理前进行客户风险等级检查
- 所有操作记录审计日志
- 敏感数据加密存储

### 9.2 风控措施

#### 9.2.1 系统风控

- **订单金额限制**：单笔订单上限
- **客户额度检查**：总授信额度控制
- **白名单机制**：股票交易白名单
- **审批流程**：超限订单审批

#### 9.2.2 操作风控

- **双重验证**：关键操作需要二次确认
- **权限控制**：基于角色的访问控制（RBAC）
- **操作日志**：所有操作可追溯

---

## 10. 测试方案

### 10.1 测试策略

#### 10.1.1 单元测试

- **覆盖率目标**：80%以上
- **测试工具**：JUnit, Mockito
- **测试范围**：核心业务逻辑

#### 10.1.2 集成测试

- **API测试**：Postman / REST Assured
- **数据库测试**：事务回滚测试
- **外部系统集成测试**：Mock服务

#### 10.1.3 系统测试

- **功能测试**：端到端业务流程
- **性能测试**：响应时间、吞吐量
- **安全测试**：SQL注入、XSS、权限测试

### 10.2 测试用例示例

#### 10.2.1 股票订单处理测试

```
测试用例：TC-001
标题：白名单股票订单成功处理
前置条件：
  - 股票00700.HK在白名单中
  - 客户CUST001有足够额度
步骤：
  1. CRM推送订单（股票：00700.HK，金额：$38,520）
  2. 系统检查白名单 → 通过
  3. 系统检查风控 → 通过
  4. 系统提交到Ayers → 成功
预期结果：
  - 订单状态：SUBMITTED
  - Ayers交易ID生成
  - 订单日志完整记录
```

```
测试用例：TC-002
标题：非白名单股票订单被拒绝
前置条件：
  - 股票TSLA不在白名单中
步骤：
  1. CRM推送订单（股票：TSLA，金额：$5,000）
  2. 系统检查白名单 → 失败
预期结果：
  - 订单状态：REJECTED
  - 拒绝原因：股票不在白名单中
```

### 10.3 性能指标要求

| 指标 | 目标值 |
|------|--------|
| **API响应时间** | < 200ms (P95) |
| **订单处理时间** | < 5秒 (端到端) |
| **系统可用性** | > 99.5% |
| **并发订单处理** | > 100笔/分钟 |
| **数据库查询** | < 50ms (P95) |

---

## 11. 上线检查清单

### 11.1 功能检查清单

#### 产品管理
- [ ] 股票产品列表正常显示
- [ ] 白名单添加/删除功能正常
- [ ] 基金产品列表正常显示
- [ ] 债券产品列表正常显示
- [ ] 结构化产品列表正常显示
- [ ] 发行人管理功能正常

#### 订单管理
- [ ] CRM订单接收接口正常
- [ ] 股票订单白名单检查正常
- [ ] 股票订单风控检查正常
- [ ] 基金订单处理流程正常
- [ ] 债券订单处理流程正常
- [ ] 结构化产品订单处理流程正常
- [ ] 订单状态查询正常
- [ ] 订单提交Ayers正常

#### 存续管理
- [ ] 基金存续列表正常
- [ ] 债券存续列表正常
- [ ] 结构化产品存续列表正常
- [ ] 事件管理功能正常

#### 清算管理
- [ ] 已成交订单列表正常
- [ ] Ayers CSV生成功能正常
- [ ] CSV格式符合Ayers要求

### 11.2 技术检查清单

#### 基础设施
- [ ] 生产环境服务器已准备
- [ ] 数据库已创建并初始化
- [ ] Redis缓存已配置
- [ ] 消息队列已配置
- [ ] 负载均衡已配置
- [ ] SSL证书已配置

#### 监控与日志
- [ ] 应用日志配置完成
- [ ] 错误监控已配置
- [ ] 性能监控已配置
- [ ] 告警规则已配置

#### 安全
- [ ] API接口认证已配置
- [ ] 数据库连接加密
- [ ] 敏感数据加密存储
- [ ] 防火墙规则已配置

### 11.3 集成检查清单

#### CRM集成
- [ ] CRM系统接口测试通过
- [ ] 订单推送功能正常
- [ ] 订单状态回传正常

#### Ayers集成
- [ ] CSV文件格式验证通过
- [ ] 文件传输流程测试通过
- [ ] Ayers系统接收确认

### 11.4 数据检查清单

- [ ] 产品基础数据已导入
- [ ] 白名单数据已导入
- [ ] 发行人数据已导入
- [ ] 客户信用数据已同步
- [ ] 测试数据已清理

### 11.5 文档检查清单

- [ ] API接口文档已更新
- [ ] 用户操作手册已准备
- [ ] 运维手册已准备
- [ ] 应急处理流程已准备

---

## 12. 风险评估与应对

### 12.1 技术风险

| 风险 | 影响 | 概率 | 应对措施 |
|------|------|------|---------|
| **Ayers系统接口不稳定** | 高 | 中 | 1. 增加重试机制 2. 使用消息队列异步处理 3. 准备人工介入流程 |
| **数据库性能瓶颈** | 中 | 低 | 1. 数据库索引优化 2. 读写分离 3. 缓存优化 |
| **CRM集成接口变更** | 中 | 低 | 1. 接口版本管理 2. 兼容性设计 3. 及时沟通 |

### 12.2 业务风险

| 风险 | 影响 | 概率 | 应对措施 |
|------|------|------|---------|
| **需求变更** | 中 | 中 | 1. 严格控制MVP范围 2. 需求变更流程 3. 预留缓冲时间 |
| **上线时间延期** | 中 | 中 | 1. 设置里程碑 2. 每日站会跟踪进度 3. 提前识别风险 |

### 12.3 运营风险

| 风险 | 影响 | 概率 | 应对措施 |
|------|------|------|---------|
| **系统故障影响业务** | 高 | 低 | 1. 主备切换机制 2. 7×24小时监控 3. 应急响应流程 |
| **数据丢失** | 高 | 极低 | 1. 定期数据备份 2. 主从复制 3. 备份验证 |

---

## 13. 后续迭代规划

### 13.1 第二期功能（上线后3个月）

- 客户管理模块完整功能
- 开户管理模块
- 佣金管理模块
- 实时行情集成
- 数据分析报表

### 13.2 第三期功能（上线后6个月）

- 移动端APP
- 人工智能产品推荐
- 高级风控模型
- 多语言支持

---

## 14. 附录

### 14.1 术语表

| 术语 | 说明 |
|------|------|
| **MVP** | Minimum Viable Product，最小可行产品 |
| **PMS** | Product Management System，产品管理系统 |
| **FCN** | Fixed Coupon Note，固定票息票据 |
| **PI** | Professional Investor，专业投资者 |
| **LPOA** | Limited Power of Attorney，有限授权书 |
| **NAV** | Net Asset Value，净值 |
| **YTM** | Yield to Maturity，到期收益率 |

### 14.2 参考文档

1. 《证券中台管理系统 - 系统架构设计方案》
2. 《API接口设计文档》
3. 《数据库设计文档》
4. 《系统集成方案文档》

### 14.3 联系方式

- **项目负责人**：[姓名]
- **技术负责人**：[姓名]
- **业务负责人**：[姓名]

---

## 文档变更记录

| 版本 | 日期 | 变更内容 | 变更人 |
|------|------|---------|--------|
| v1.0 | 2025-10-14 | 初版发布 | [姓名] |

---

**文档结束**

---

## 重要提示

1. 本方案为最小可行产品（MVP）上线方案，优先保证核心交易功能
2. 建议在正式上线前进行充分的测试，特别是与Ayers系统的集成测试
3. 上线后应持续监控系统运行情况，及时处理问题
4. 根据业务反馈，逐步迭代完善功能

