System Design Document

PRP (Periodic Recurring Program)

定期投资 — 系统设计方案

项目: G3SF / G3SB 版本: v1.3 日期: 2026-08-03 分类: Internal 作者: Jagon Li

1 项目概述 & 集成全景

1.1 业务背景

N2N-AFE 为券商和银行提供一体化交易解决方案已超过 43 年。随着零售投资者对「被动定投」和「自动化理财」需求的快速增长,券商客户迫切需要一套内嵌于现有交易系统的PRP(Periodic Recurring Program,定期投资)功能。

该模块允许投资者设定自动化定额定期投资,系统按设定频率通过券商自有交易通道执行下单,并由结算系统自动更新持仓,全程可追踪、可修改、可审计。

1.2 N2N-AFE 产品集成全景

投资者入口
eServices
Web 门户
员工操作
ProX
专业交易终端
员工操作
OMC
运营管理中心
后端处理
G3SF + G3SB
前台交易 + 后台结算

1.3 设计原则

01
嵌入式 Widget 架构
同一组件,跨 5 个宿主产品复用,响应式自适应
02
零外部依赖
不接入 IBKR 或第三方 API,完全走券商自有 OMS 通道
03
现有系统无缝集成
G3SF 管理计划/订单,G3SB 处理成交/结算(Settlement)/持仓更新 — 复用现有交易与结算基础设施
04
专业级 UI/UX
简洁、大气、信息密度适中,适配金融场景

1.4 核心业务流程图

投资者 → 创建 PRP 计划 → G3SF 存储 → Scheduler 定时触发 → G3SF 生成订单 → 券商 OMS → G3SB 结算 → 更新持仓 → 邮件通知 → 投资者

2 功能需求规格

2.1 角色定义

角色描述权限范围
Investor券商终端投资者创建/修改/查看/暂停/恢复/取消 自己的 PRP 计划
Staff券商运营/客服人员监控全部计划、系统配置、报表导出、手动干预
Admin系统管理员市场规则配置、费率模板、通知模板、数据维护

2.2 投资者端功能(A 模块)

A1 — 创建 PRP 投资计划
步骤字段类型说明
1标的代码搜索框支持代码/名称搜索,自动补全,显示交易所+币种
2每次投入金额数值按币种单位
3投资频率下拉每日 / 每周 / 每月
4频率日选择器 每周=选周一到周五;每月=选 1-28 号
如果所选日期为非交易日,订单将于下一个交易日执行
5开始日期日期选择必须大于当前日期(最小为 T+1)
6结束方式切换 选项 A: 设定结束日期(日期选择)
选项 B: 设定投资次数(输入轮数,如 12 次 = 一年)
如选择"无截止日期"(Good Till Cancel),请将结束日期留空
7碎股/零股处理单选向上取整 / 向下取整 / 四舍五入 / 允许碎股
确认前实时预览 → 展示预估执行次数、总投资额、费用估算
A2 — 查看和管理计划
  • 计划列表,卡片式布局,显示:标的名称/代码、频率、累计投入、当前市值、盈亏%
  • 状��标签:进行中 已暂停 已完成 已取消
  • 计划详情页:参数完整展示 + 投资曲线图(累计投入 vs 市值/盈亏)
  • 执行历史明细表(分页、日期筛选、导出 CSV)
  • 投资进度条(已执行次数 / 总计划次数)
  • 持仓不足时的 PnL 展示逻辑: 如果系统内持有的该标的股数 < PRP 累计购入的总股数(即部分股票已被卖出),PnL 按「当前持仓部分 + PRP 交易历史总盈亏」分别列示:
    ① 当前持仓市值 vs 当前持仓成本 → 持仓 PnL
    ② PRP 历史累计:总买入金额 vs 总卖出金额 + 剩余持仓市值 → PRP 总回报
A3 — 修改计划(进行中)
可修改字段不可修改字段
每次投入金额、频率、频率日、结束方式(日期/次数)、碎股处理方式标的代码、开始日期(若需改=取消重建)
修改即时生效(下次执行使用新参数),全部修改记录到审计表
A4 — 暂停/恢复/取消
暂停:计划保留,停止后续执行。恢复:继续按原参数执行。取消:永久终止。
A5 — 投资预测
输入预估年化回报率 → 输出总投资额、预估终值、预估收益、DCA 成本摊平曲线图
A5 示例:投资者设定每月投入 $1,000 买入 NVDA,持续 30 年(360 次),预估年化回报 12%。系统计算:总投资额 = $360,000;按 DCA + 复利计算,预估投资组合终值约 $3,520,000(约为总投入的 9.8 倍);累计收益约 $3,160,000。下方的双线图直观展示:即使每笔投入金额不大,透过长期纪律性定投 + 复利效应,30 年后投资组合价值可达总投入的 8-10 倍。系统计算:总投资额 = $36,000;按 10% 复利计算预估终值 ≈ $41,780;预估收益 ≈ $5,780;并展示「累计投入 vs 预估市值」累积曲线图。

2.3 员工端功能(B 模块)

B1 — 计划监控
  • 全部计划总览(按状态/交易所/投资者筛选)
  • 今日待执行清单
  • 执行结果监控(成功/失败/异常)
  • 异常即时告警
B2 — 系统配置
  • 市场参数管理
  • 交易时间窗口配置
  • 通知模板编辑
  • 风控规则设置
B3 — 报表中心
日度执行汇总 · 月度计划统计 · 费用/佣金明细 · 异常/失败清单

3 数据模型设计

说明:投资者与账户管理 (investors / investor_accounts) 由现有系统处理,PRP 模块不重复设计。以下仅列 PRP 特有数据表。

3.1 投资计划主表 — plans

字段类型约束说明
plan_idVARCHAR(32)PK如 PRP-20260801-0001
client_idVARCHAR(32)NOT NULL关联投资者(沿用现有系统 client_id)
account_idVARCHAR(32)NOT NULL关联交易账户
instrument_codeVARCHAR(20)NOT NULL标的代码(G3SF 标准格式)
exchange_idVARCHAR(10)NOT NULL交易所代码(沿用现有系统)
amount_per_timeDECIMAL(18,4)NOT NULL每次投入金额
frequencyENUMNOT NULLDAILY / WEEKLY / MONTHLY
frequency_dayTINYINTWEEKLY=1-5(周一到周五), MONTHLY=1-28
start_dateDATENOT NULL计划开始日期
end_dateDATENULLNULL=无限期;非空=指定结束日期
total_roundsINTNULL计划执行总次数(与 end_date 互斥,二选一)
fractional_handlingENUMNOT NULLROUND_UP / ROUND_DOWN / NEAREST / ALLOW_FRACTIONAL
statusENUMNOT NULLACTIVE / PAUSED / COMPLETED / CANCELLED
total_investedDECIMAL(18,4)DEFAULT 0累计已投入金额
total_unitsDECIMAL(18,6)DEFAULT 0累计已购份额
avg_costDECIMAL(18,6)DEFAULT 0平均成本价
execution_countINTDEFAULT 0已执行次数
created_atDATETIMENOT NULL
updated_atDATETIMENOT NULL
created_byVARCHAR(32)NOT NULLclient_id 或 staff_id
公司行动处理:若标的发生公司行动产生并行交易代码(如供股产生供股权、拆股产生临时代码等),PRP 计划仅跟踪原 instrument_code,不自动切换至新代码。因公司行动产生的持仓或权益变化由 G3SB 结算系统按常规公司行动流程处理,不影响 PRP 的定投执行。

3.2 执行记录表 — plan_executions

字段类型说明
execution_idVARCHAR(32) PK如 EXEC-20260801-0001
plan_idVARCHAR(32) FK关联计划
scheduled_dateDATE计划执行日期
actual_timeDATETIME实际执行时间
amountDECIMAL(18,4)本次投入金额
execution_priceDECIMAL(18,6)实际成交均价
quantity_fullINT整股数量
quantity_fractionalDECIMAL(18,6)碎股数量(如有)
total_quantityDECIMAL(18,6)总份额
commissionDECIMAL(18,4)佣金
other_feesDECIMAL(18,4)其他费用
statusENUMPENDING / EXECUTED / PARTIAL / FAILED / SKIPPED
g3sf_order_idVARCHAR(32)G3SF 订单编号(可通过订单 ID 追溯全部关联信息)
trade_remarkVARCHAR(100)成交备注标记为 PRP 投资计划
error_codeVARCHAR(20)失败错误码:SHORTFUND / SUSPENDED / PRICE_REJECTED / SYSTEM_ERROR
error_msgTEXT失败详情
notification_sentBOOLEAN邮件通知是否已发送
停牌处理:若计划执行日标的股票处于停牌状态,系统将标记执行记录为 REJECTED(error_code=SUSPENDED),发送邮件通知投资者"标的已停牌",该笔执行不会补单。系统在下一个计划执行周期继续按正常流程处理。

3.3 修改审计表 — plan_modifications

字段类型说明
mod_idVARCHAR(32) PK修改编号
plan_idVARCHAR(32) FK关联计划
field_changedVARCHAR(50)修改字段名
old_valueTEXT旧值(JSON)
new_valueTEXT新值(JSON)
modified_byVARCHAR(32)修改人
modified_by_roleENUMINVESTOR / STAFF / SYSTEM
modified_atDATETIME修改时间
reasonVARCHAR(200)修改原因

3.4 系统配置表 — system_config

说明:系统配置相关表结构及字段细节由开发团队根据具体实现需求自行设计。本表仅供概念参考,不作为强制规范。
字段类型说明
config_keyVARCHAR(100) PK配置键
config_valueTEXT配置值(JSON)
updated_byVARCHAR(32)更新人
updated_atDATETIME更新时间

4 UI/UX 设计建议

4.1 嵌入环境概览

宿主产品用户设备分辨率参考布局策略
eServicesInvestorDesktop Browser1280-1920px侧栏 / 全宽卡片式
ProXStaffDesktop1440-2560px全宽表格 + 侧栏筛选
OMCStaffDesktop1280-1920px全宽控制面板

4.2 投资者 Widget — 创建 PRP 计划页面

eServices — PRP 定期投资
创建 PRP 定期投资计划
Step 1: 选择标的
搜索股票代码... NVDA
标的资料 (Instrument Master)
NVIDIA Corp
每次金额
$ 1,000 USD
频率
执行日
周三 ▼
如遇非交易日,自动顺延至下一个交易日
开始日期 *
2026-08-03 (必须 > 今日)
结束日期
2027-08-03
碎股处理
允许碎股 ▼
预估: 52次/年 · 年投入 $52,000 · 费用约 $26/年
UI 字段中英对照 (Bilingual Reference) — 创建 PRP 计划
选择标的Select Instrument
搜索股票代码...Search stock code...
标的资料 (Instrument Master)Instrument Master
每次金额Amount per Time
频率Frequency
每日 / 每周 / 每月Daily / Weekly / Monthly
执行日Execution Day
如遇非交易日,自动顺延至下一个交易日If non-trading day, deferred to next trading day
开始日期 *Start Date *
必须 > 今日Must be > today
结束日期End Date
Good Till Cancel (勾选后结束日期自动禁用)Good Till Cancel (Checking disables end date)
碎股处理Fractional Share Handling
允许碎股Allow Fractional Shares
确认创建Confirm Creation
预估Estimate

4.3 投资者 Widget — 计划列表页

我的 PRP 投资计划
标的
频率
累计投入
持仓市值 / 盈亏
PRP 总回报
NVDA NVIDIA Corp
每周三
$8,000
$9,240 +15.5%
+$1,240 (+15.5%)
进行中
QQQ Invesco QQQ
每周一
$12,500
$13,800 +10.4%
+$1,300 (+10.4%)
进行中
0700 Tencent
每月 1 号
HK$15,000
HK$13,200 -12.0%
已卖出部分
HK$-1,800 (-12%)
已暂停
UI 字段中英对照 (Bilingual Reference) — 计划列表
我的 PRP 投资计划My PRP Investment Plans
标的Instrument
频率Frequency
累计投入Total Invested
持仓市值 / 盈亏Position Value / P&L
PRP 总回报PRP Total Return
每周三 / 每周一 / 每月 1 号Every Wednesday / Every Monday / 1st of month
已卖出部分Partially Sold
进行中Active
已暂停Paused

4.4 投资者 Widget — 修改 PRP 计划页面

修改 PRP 计划 — NVDA (NVIDIA Corp)
计划编号: PRP-20260801-0001 · 创建于: 2026-07-15 · 已执行: 2次
标的代码(不可修改)
NVDA
标的���料 (Instrument Master)
NVIDIA Corp
每次金额
$ 2,000 USD (原: $1,000)
修改后下次执行生效
频率
碎股处理
向下取整 ▼ (原: 允许碎股)
修改原因
增加每月投资金额
全部修改将记录至审计日志
修改后预估: 12次/年 · 年投入 $24,000
UI 字段中英对照 (Bilingual Reference) — 修改 PRP 计划
修改 PRP 计划Modify PRP Plan
计划编号Plan ID
创建于Created
已执行Executed
标的代码(不可修改)Instrument Code (Non-modifiable)
标的资料 (Instrument Master)Instrument Master
每次金额Amount per Time
修改后下次执行生效Takes effect on next execution
频率Frequency
每日 / 每周 / 每月Daily / Weekly / Monthly
碎股处理Fractional Share Handling
向下取整 / 允许碎股Round Down / Allow Fractional
修改原因Reason for Modification
全部修改将记录至审计日志All modifications recorded in audit log
修改后预估Revised Estimate
取消Cancel
确认修改Confirm Modification

4.5 投资者 Widget — A5 投资预测

投资预测 — PRP 定期投资模拟
计划参数
NVDA · 每月 $1,000
30 年 · 360 次执行
预估年化回报率
12%
总投资额
$360,000
(30年 x $12,000/年)
预估组合市值
$3,520,000
9.8x 总投入
累计复利收益
+$3,160,000
+878%
Demostration — DCA vs Portfolio Value (30-Year Projection)
$0 $0.5M $1.0M $1.5M $2.0M $2.5M $3.0M 0 5 10 15 20 25 30 年份 $3.52M $360K 投资组合市值 (12% CAGR) 累计投入 (Cost Basis)
累计投入 (30年共 $360K)
投资组合市值 (终值 $3.52M, 9.8x)
关键洞察:即使每笔只需 $1,000/月,经过 30 年纪律性定投 + 12% 年化复利,投资组合市值可达总投入的 9.8 倍。这正是 DCA 定投的核心价值 — 时间 + 复利 = 财富增长的最大杠杆。
UI 字段中英对照 (Bilingual Reference) — 投资预测
投资预测 — PRP 定期投资模拟Investment Forecast — PRP Recurring Investment Simulation
计划参数Plan Parameters
预估年化回报率Estimated Annualized Return
更新 / 计算Update / Calculate
总投资额Total Investment
预估组合市值Estimated Portfolio Value
累计复利收益Cumulative Compound Returns
投资组合市值 (12% CAGR)Portfolio Value (12% CAGR)
累计投入 (Cost Basis)Total Invested (Cost Basis)
关键洞察Key Insight

4.6 员工 Widget — 计划监控 (ProX / OMC)

ProX / OMC — PRP 计划监控面板
全部交易所 ▼
全部状态 ▼
搜索客户/代码...
活跃计划: 1,247 · 今日待执行: 83 · 异常: 2
计划编号客户ID标的金额频率状态操作
PRP-0001C12034NVDA$1,000每月ACTIVE
PRP-0042C087120700HK$5,000每周ACTIVE
PRP-0103C29105AAPL$500每日PAUSED
支持双击表格行快速进入修改模式,员工可代投资者修改计划参数。修改操作记录审计日志并标记 modified_by_role=STAFF。
UI 字段中英对照 (Bilingual Reference) — 员工计划监控
计划监控面板Plan Monitoring Dashboard
全部交易所All Exchanges
全部状态All Statuses
搜索客户/代码...Search client/code...
刷新Refresh
导出 CSVExport CSV
活跃计划Active Plans
今日待执行Today Pending
异常Anomalies
计划编号Plan ID
客户IDClient ID
标的Instrument
金额Amount
频率Frequency
状态Status
操作Actions
详情Details
代客修改Modify on Behalf
支持双击表格行快速进入修改模式...Double-click row to enter modification mode...

4.7 员工 Widget — B3 报表样本

OMC — PRP 月度报表 (2026年7月)
2026 年 7 月
全部交易所 ▼
活跃计划数
1,247
+38 vs 上月
月执行次数
18,962
成功率 99.2%
月总投入金额
US$8.3M
折合 HK$64.7M / CNY59.6M
交易所活跃计划执行次数成功失败总金额平均每笔
US85213,44013,35090$6.2M$464
HK2984,3124,28824HK$16.4MHK$3,820
CN971,2101,19614CNY5.8MCNY4,849
失败清单 (TOP 3): 资金不足 (62) · 停牌 (38) · 系统超时 (28)
UI 字段中英对照 (Bilingual Reference) — 月度报表
月度报表Monthly Report
导出 PDFExport PDF
导出 ExcelExport Excel
活跃计划数Active Plans
月执行次数Monthly Executions
月总投入金额Monthly Total Investment
交易所Exchange
成功Success
失败Failed
总金额Total Amount
平均每笔Avg per Trade
失败清单 (TOP 3)Failure List (TOP 3)

4.8 设计风格

说明:PRP Widget 的视觉风格(配色、字体、间距、组件样式)应与嵌入的宿主产品(eServices / ProX / OMC)保持一致,由开发团队按各产品现有 Design System 实现。本报告中的 Wireframe 仅供布局参考。

5 技术架构 & 集成方案

5.1 N2N-AFE 系统集成架构

展示层 — Embedded Widget

投资者端 (eServices) + 员工端 (ProX / OMC) — 同一组件,通过 G3SF API 通信。

▼

G3SF — 前台交易系统

存储: 计划数据 (plans)、执行记录 (executions)、审计日志 (modifications)
调度: 08:00 HKT(亚洲市场)/ 20:00 HKT(美股市场)定时扫描待执行计划
订单生成: 根据计划参数 + 市场规则计算股数、生成订单发送至券商 OMS
API: RESTful API 供 Widget 调用

▼

G3SB — 后台结算系统

PRP 成交数据基于现有 G3SB 与券商 OMS 之间的数据交换机制处理,无需新增接口。成交回报中标记 trade_remark 为 PRP 投资计划,G3SB 据此更新投资者持仓并将执行结果回写 execution 记录。

▼

数据层 — 使用现有数据库

PRP 数据表 (plans / plan_executions / plan_modifications) 存放于现有 G3SF 数据库实例中,无需新建独立数据库。通过 g3sf_order_id 与订单系统关联追踪。

5.2 数据流详解

1
投资者创建 PRP 计划 → Widget 调用 G3SF API
POST /api/prp/plans → G3SF 校验参数 → 存入 plans 表 → 返回 plan_id
2
Scheduler 定时扫描 → 生成执行记录
08:00 / 20:00 HKT → 查询 ACTIVE 计划,判断今天是否为执行日 → INSERT INTO plan_executions (PENDING)
3
计算股数 → 生成订单 → 发送至券商 OMS
G3SF 根据 fractional_handling 计算 quantity → 创建 G3SF 订单(trade_remark="PRP") → 路由至券商 OMS
4
OMS 成交 → G3SB 结算 → 更新持仓
基于现有 G3SB-OMS 数据交换 → 结算处理 → 更新投资者持仓 → 回写 execution(EXECUTED, price, fees)
5
更新计划累计统计 + 发送邮件通知
更新 plans(total_invested / total_units / avg_cost / execution_count) → 发送执行成功邮件给投资者

5.3 错误处理与重试机制

5.3.1 资金不足处理 (SHORTFUND)
  • 系统在生成订单前,通过 G3SF 尝试预留/冻结购买所需资金(金额 + 预估费用)
  • 若账户可用资金不足 → 执行记录标记为 REJECTED(error_code=SHORTFUND)
  • 发送邮件通知客户:PRP 执行失败 — 账户资金不足,邮件包含:计划详情、所需金额、账户可用余额
  • 客户需自行手动补购该期份额(系统不追溯补单)
  • 系统在下一执行周期自动重新触发(按正常计划参数执行,不累积失败期数)
5.3.2 标的停牌处理 (SUSPENDED)
  • 执行日扫描时,校验标的交易状态
  • 若标的处于停牌状态 → 执行记录标记为 REJECTED(error_code=SUSPENDED)
  • 发送邮件通知客户:PRP 执行失败 — 标的已停牌
  • 该笔不补单,系统在下一执行周期按正常流程重新尝试
5.3.3 无效订单��格重试 (PRICE_REJECTED)
  • 若订单提交至交易所后因无效价格(如超出涨跌停范围、报价单位不符等)被拒绝
  • 系统自动重试,重试次数 X 由系统配置(默认 3 次),每次间隔 Y 秒(默认 30 秒)
  • 每次重试时重新获取最新市价并调整订单价格
  • 重试 X 次后仍全部失败 → 执行记录标记为 FAILED(error_code=PRICE_REJECTED)
  • 发送邮件通知客户:PRP 执行失败 — 订单价格无效,已重试 X 次

5.3.4 拒绝邮件清单

error_code邮件主题触发条件后续动作
SHORTFUNDPRP 执行失败 — 账户资金不足预扣资金时账户余额不足客户手动补购;下周期自动重试
SUSPENDEDPRP 执行失败 — 标的已停牌执行日标的处于停牌状态下周期自动重试
PRICE_REJECTEDPRP 执行失败 — 订单价格无效交易所拒单,重试 X 次后仍失败标记 FAILED,不再重试
SYSTEM_ERRORPRP 执行失败 — 系统异常G3SF/G3SB 内部错误或超时员工人工介入

5.3.5 系统配置参数

execution: # 价格重试 price_retry_count: 3 # 无效价格最大重试次数 price_retry_interval_sec: 30 # 每次重试间隔(秒) # 资金预扣 prehold_fund_check: true # 执行前是否预扣资金检查 prehold_buffer_pct: 5 # 预扣金额缓冲百分比(覆盖费用波动) # 交易状态检查 check_trading_status: true # 执行前检查标的是否可交易

5.4 API 接口规范(建议)

方法路径说明调用方
POST/api/v1/prp/plans创建 PRP 计划Investor Widget
GET/api/v1/prp/plans?client_id=...查询客户计划列表Investor Widget
GET/api/v1/prp/plans/{plan_id}计划详情Investor & Staff Widget
PUT/api/v1/prp/plans/{plan_id}修改计划Investor Widget
PATCH/api/v1/prp/plans/{plan_id}/status暂停/恢复/取消Investor & Staff Widget
GET/api/v1/prp/plans/{plan_id}/executions执行历史Investor Widget
GET/api/v1/prp/staff/executions/today今日执行清单Staff Widget
GET/api/v1/prp/staff/plans?status=...&exchange=...员工计划总览Staff Widget
GET/api/v1/prp/staff/reports/monthly月度报表Staff Widget