需求文档

⁡‬⁣⁢⁡⁤‍⁤⁤‍‌‍⁢⁤‌⁢⁣‌⁤​​‌‍⁢​‌⁤‬‬⁡‌‌‌⁣‌‬‬​⁤⁢‬‬​⁣‬‌cross engine配置 - 飞书云文档 (feishu.cn)

背景

cross engine 是新增的支持sid之间内部成交的系统. 自动配置依赖在这个页面配置的相关数据

目标

在 "新版自动配置管理"功能下, 能够管理cross engine相关配置数据

方案调研

数据库中 Leonis.jurassicpark_pycross 表已经创建




自动配置页签中, 目前已经支持手工填入pycross字段,  该字段值会保存到  Leonis.jurassicpark_trade.pycross 与 Leonis.jurassicpark_pycross.pycross_id 字段进行关联




解决方案
概要设计
在 "新版自动配置管理" 下新增页签 "PyCross配置", 参照 "Locator服务" 页面样式实现对 Leonis.jurassicpark_pycross 的增删改查
删除配置按其他页面规范, 将 "失效日期" 设置为now, 列表仅展示当前日期下有效的 pycross 配置
为配置入口提供下拉选项接口获取可选的 pycross_id, 传入参数 start_date, 按trade页面 设计文档 - PB - UConfluence (ubiquant.com) 要求返回相同结构的数据
接口	请求方法	请求参数	返回结果	注释
/pbconfig/list_pycross_for_sid	GET	start_date=20230612	

{
    "data": [{'id': xxxx, 'value': xxx}] 
    "error": "",
    "status": true
}

	

返回response中data字段下是列表

列表内装有键是id和value，对应值是 pycross_id, remark 的字典


/api/v1/pbPycrossConfig/list_all_pycross_k8s_pack	GET	
	同上	

页面上获取 ""k8s集群" "下拉选项, 下拉数据源:

AD_JurassicPark.AD_DomainInfo

Get_DomainInfo_FromDB


/api/v1/pbPycrossConfig/list_all_pycross_trans_type	GET	
	同上	页面上获取 "传输类型" 下拉选项   目前固定: pubsub, kafka 两种
/api/v1/pbPycrossConfig/list_all_pycross_host	GET	
	同上	

页面上获取 "host" 下拉选项, 下拉数据源:

AD_ServerInfo

Get_Server_List_FromDB  (获取hostname字段)


/api/v1/pbPycrossConfig/list_all_pycross_inst_type	GET	
	同上	页面上获取 "inst_type" 下拉选项,  资产类型枚举目前仅 Futures, Option  @梁雨  板块编码 CategoryL1 待提供 AD 函数
/api/v1/pbPycrossConfig/list_all_pycross_market	GET	
	同上	页面上获取 "market" 下拉选项, 市场枚举目前仅支持CN, 后期会支持US等  @梁雨 正在开发相关获取 AD 函数
/api/v1/pbPycrossConfig/query_config_for_pycross	GET	page_size=15&page_num=1&condition=	
	condition 根据 pycross_id or remark 模糊匹配, 筛选 end_date > today() 的数据
/api/v1/pbPycrossConfig/save_config_for_pycross	POST	

{
    "config_date": "20230612",                        "pycross_id": "abc",
    "creator": "develop_test",
    "inst_type": "Futures",
    "market": "CN",
    "host": "wgpan_1",
    "trans_type": "pubsub",
    "is_k8s": 1,
    "k8s_pack": "vela",
    "remark": "abc"
}

	{
    "data": "",
    "error": "",
    "status": true
}	

编辑时, 页面通过带出相关 pycross_id 的数据, 同时实现对现有配置的覆盖来避免创建多条时间可能重复的条目

config_date 传入页面右上角选择的日期 (格式: YYYYmmdd)


/api/v1/pbPycrossConfig/delete_config_for_pycross	POST	{
    "pycross_id": "abc",
    "start_date": "2023-06-12",
    "end_date": "9999-12-31"
}	同上	

删除是通过修改 end_date = now() 实现,

需要修改这个表的 schema, 增加 start_date 为 PRIMARY KEY







软删除逻辑 (已补充ut用例覆盖)

为了实现软删除逻辑, 需要修改 jurassicpark_pycross 表结构, 增加 start_date 为主键索引  @魏亚欣 2023年6月14日已添加




前置条件 pycross_id, start_date 同为主键索引

用例1

假设数据库已存在一个 pycross_id = 'test' start_date = '2023-06-10'  end_date = '9999-12-31' 的条目

现在save一个 pycross_id = 'test' config_date = '20230613' 的条目的结果为

因为 pycross_id = 'test' start_date = '2023-06-13' 的条目不存在, insert 一条记录
将当前所有 start_date < '2023-06-13', 且 end_date > '2023-06-13' 的条目的 end_date 设置为 2023-06-13 (使旧记录在 新记录开始前生效)
将当前所有 start_date > '2023-06-13', 且start_date < end_date  的条目的 end_date 设置为 2023-06-13 (对此场景不起作用)

最终结果

记录1: pycross_id = 'test' start_date = '2023-06-10'  end_date = '2023-06-13'
记录2: pycross_id = 'test' start_date = '2023-06-13'  end_date = '9999-12-31'
下拉数据获取改造
inst_type / market 下拉枚举项获取需要等数据团队出新的AD函数获取.   @qzhao @梁雨














