原油预测结果存储到市场信息平台数据库

This commit is contained in:
workpc 2025-06-24 16:05:41 +08:00
parent a06b5dc525
commit d9efdde78b
14 changed files with 854 additions and 468 deletions

26
aa.py
View File

@ -1,10 +1,18 @@
# 定时执行cmd命令
import os
import time
import numpy as np
import config_jingbo
from datetime import datetime
from decimal import Decimal
import pandas as pd
from pydantic import BaseModel
from typing import Optional
from datetime import datetime
from decimal import Decimal
while True:
print(time.strftime('%H:%M'))
# 判断是不是工作日且 是1700 700 才执行
if time.strftime('%A') not in ['Saturday', 'Sunday'] and time.strftime('%H:%M') in [ '07:00']:
os.system(' D:/ProgramData/anaconda3/python.exe main.py')
time.sleep(60)
df = pd.read_csv('predict.csv')
df['created_dt'] = pd.to_datetime(df['created_dt'])
df['ds'] = pd.to_datetime(df['ds'])
# 获取次日预测结果
df = df[df['ds'] == df['ds'].min()]
print(df)

View File

@ -2300,7 +2300,7 @@
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"display_name": "base",
"language": "python",
"name": "python3"
},
@ -2314,7 +2314,7 @@
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.7.0"
"version": "3.11.7"
}
},
"nbformat": 4,

View File

@ -1951,7 +1951,7 @@
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"display_name": "base",
"language": "python",
"name": "python3"
},
@ -1965,7 +1965,7 @@
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.7.0"
"version": "3.11.7"
}
},
"nbformat": 4,

View File

@ -1,3 +1,4 @@
from decimal import Decimal
import logging
import os
import logging.handlers
@ -92,163 +93,24 @@ data = {
ClassifyId = 1214
# 变量定义--线上环境
server_host = '10.200.32.39'
login_pushreport_url = "http://10.200.32.39/jingbo-api/api/server/login"
upload_url = "http://10.200.32.39/jingbo-api/api/analysis/reportInfo/researchUploadReportSave"
upload_warning_url = "http://10.200.32.39/jingbo-api/api/basicBuiness/crudeOilWarning/save"
query_data_list_item_nos_url = f"http://{server_host}/jingbo-api/api/warehouse/dwDataItem/queryDataListItemNos"
# 上传数据项值
push_data_value_list_url = f"http://{server_host}/jingbo-api/api/dw/dataValue/pushDataValueList"
# 上传停更数据到市场信息平台
push_waring_data_value_list_url = f"http://{server_host}/jingbo-api/api/basicBuiness/crudeOilWarning/crudeSaveOrupdate"
# 获取预警数据中取消订阅指标ID
get_waring_data_value_list_url = f"http://{server_host}/jingbo-api/api/basicBuiness/crudeOilWarning/dataList"
login_data = {
"data": {
"account": "api_dev",
"password": "ZTEwYWRjMzk0OWJhNTlhYmJlNTZlMDU3ZjIwZjg4M2U=",
"tenantHashCode": "8a4577dbd919675758d57999a1e891fe",
"terminal": "API"
},
"funcModule": "API",
"funcOperation": "获取token"
}
upload_data = {
"funcModule": '研究报告信息',
"funcOperation": '上传原油价格预测报告',
"data": {
"groupNo": '', # 用户组id
"ownerAccount": '27663', # 报告所属用户账号 27663 - 刘小朋
"reportType": 'OIL_PRICE_FORECAST', # 报告类型固定为OIL_PRICE_FORECAST
"fileName": '', # 文件名称
"fileBase64": '', # 文件内容base64
"categoryNo": 'yyjgycbg', # 研究报告分类编码
"smartBusinessClassCode": 'YCJGYCBG', # 分析报告分类编码
"reportEmployeeCode": "E40482", # 报告人 E40482 - 管理员 0000027663 - 刘小朋
"reportDeptCode": "002000621000", # 报告部门 - 002000621000 SH期货研究部
"productGroupCode": "RAW_MATERIAL" # 商品分类
}
}
warning_data = {
"groupNo": '', # 用户组id
"funcModule": '原油特征停更预警',
"funcOperation": '原油特征停更预警',
"data": {
'WARNING_TYPE_NAME': '特征数据停更预警',
'WARNING_CONTENT': '',
'WARNING_DATE': ''
}
}
query_data_list_item_nos_data = {
"funcModule": "数据项",
"funcOperation": "查询",
"data": {
"dateStart": "20200101",
"dateEnd": "20241231",
"dataItemNoList": ["Brentzdj", "Brentzgj"] # 数据项编码,代表 brent最低价和最高价
}
}
push_data_value_list_data = {
"funcModule": "数据表信息列表",
"funcOperation": "新增",
"data": [
{"dataItemNo": "91230600716676129",
"dataDate": "20230113",
"dataStatus": "add",
"dataValue": 100.11
},
{"dataItemNo": "91230600716676129P|ETHYL_BEN|CAPACITY",
"dataDate": "20230113",
"dataStatus": "add",
"dataValue": 100.55
},
{"dataItemNo": "91230600716676129P|ETHYL_BEN|CAPACITY",
"dataDate": "20230113",
"dataStatus": "add",
"dataValue": 100.55
}
]
}
push_waring_data_value_list_data = {
"data": {
"crudeOilWarningDtoList": [
{
"lastUpdateDate": "20240501",
"updateSuspensionCycle": 1,
"dataSource": "8",
"frequency": "1",
"indicatorName": "美元指数",
"indicatorId": "myzs001",
"warningDate": "2024-05-13"
}
],
"dataSource": "8"
},
"funcModule": "商品数据同步",
"funcOperation": "同步"
}
get_waring_data_value_list_data = {
"data": "8", "funcModule": "商品数据同步", "funcOperation": "同步"}
# 八大维度数据项编码
bdwd_items = {
'ciri': '原油大数据预测|FORECAST|PRICE|T',
'benzhou': '原油大数据预测|FORECAST|PRICE|W',
'cizhou': '原油大数据预测|FORECAST|PRICE|W_1',
'gezhou': '原油大数据预测|FORECAST|PRICE|W_2',
'ciyue': '原油大数据预测|FORECAST|PRICE|M_1',
'cieryue': '原油大数据预测|FORECAST|PRICE|M_2',
'cisanyue': '原油大数据预测|FORECAST|PRICE|M_3',
'cisiyue': '原油大数据预测|FORECAST|PRICE|M_4',
}
# 生产环境数据库
host = 'rm-2zehj3r1n60ttz9x5.mysql.rds.aliyuncs.com'
port = 3306
dbusername = 'jingbo'
password = 'shihua@123'
dbname = 'jingbo'
table_name = 'v_tbl_crude_oil_warning'
# # # 变量定义--测试环境
# server_host = '192.168.100.53' # 内网
# # server_host = '183.242.74.28' # 外网
# login_pushreport_url = f"http://{server_host}:8080/jingbo-dev/api/server/login"
# # 上传报告
# upload_url = f"http://{server_host}:8080/jingbo-dev/api/analysis/reportInfo/researchUploadReportSave"
# # 停更预警
# upload_warning_url = f"http://{server_host}:8080/jingbo-dev/api/basicBuiness/crudeOilWarning/save"
# # 查询数据项编码
# query_data_list_item_nos_url = f"http://{server_host}:8080/jingbo-dev/api/warehouse/dwDataItem/queryDataListItemNos"
# # 变量定义--线上环境
# server_host = '10.200.32.39'
# login_pushreport_url = "http://10.200.32.39/jingbo-api/api/server/login"
# upload_url = "http://10.200.32.39/jingbo-api/api/analysis/reportInfo/researchUploadReportSave"
# upload_warning_url = "http://10.200.32.39/jingbo-api/api/basicBuiness/crudeOilWarning/save"
# query_data_list_item_nos_url = f"http://{server_host}/jingbo-api/api/warehouse/dwDataItem/queryDataListItemNos"
# # 上传数据项值
# push_data_value_list_url = f"http://{server_host}:8080/jingbo-dev/api/dw/dataValue/pushDataValueList"
# push_data_value_list_url = f"http://{server_host}/jingbo-api/api/dw/dataValue/pushDataValueList"
# # 上传停更数据到市场信息平台
# push_waring_data_value_list_url = f"http://{server_host}:8080/jingbo-dev/api/basicBuiness/crudeOilWarning/crudeSaveOrupdate"
# push_waring_data_value_list_url = f"http://{server_host}/jingbo-api/api/basicBuiness/crudeOilWarning/crudeSaveOrupdate"
# # 获取预警数据中取消订阅指标ID
# get_waring_data_value_list_url = f"http://{server_host}:8080/jingbo-dev/api/basicBuiness/crudeOilWarning/dataList"
# get_waring_data_value_list_url = f"http://{server_host}/jingbo-api/api/basicBuiness/crudeOilWarning/dataList"
# login_data = {
# "data": {
# "account": "api_test",
# # "password": "MmVmNzNlOWI0MmY0ZDdjZGUwNzE3ZjFiMDJiZDZjZWU=", # Shihua@123456
# "password": "ZTEwYWRjMzk0OWJhNTlhYmJlNTZlMDU3ZjIwZjg4M2U=", # 123456
# "account": "api_dev",
# "password": "ZTEwYWRjMzk0OWJhNTlhYmJlNTZlMDU3ZjIwZjg4M2U=",
# "tenantHashCode": "8a4577dbd919675758d57999a1e891fe",
# "terminal": "API"
# },
@ -256,25 +118,24 @@ table_name = 'v_tbl_crude_oil_warning'
# "funcOperation": "获取token"
# }
# upload_data = {
# "groupNo": '', # 用户组id
# "funcModule": '研究报告信息',
# "funcOperation": '上传原油价格预测报告',
# "data": {
# "ownerAccount": 'arui', # 报告所属用户账号
# "groupNo": '', # 用户组id
# "ownerAccount": '27663', # 报告所属用户账号 27663 - 刘小朋
# "reportType": 'OIL_PRICE_FORECAST', # 报告类型固定为OIL_PRICE_FORECAST
# "fileName": '2000-40-5-50--100-原油指标数据.xlsx-Brent活跃合约--2024-09-06-15-01-29-预测报告.pdf', # 文件名称
# "fileName": '', # 文件名称
# "fileBase64": '', # 文件内容base64
# "categoryNo": 'yyjgycbg', # 研究报告分类编码
# "smartBusinessClassCode": 'YCJGYCBG', # 分析报告分类编码
# "reportEmployeeCode": "E40116", # 报告人
# "reportDeptCode": "D0044", # 报告部门
# "reportEmployeeCode": "E40482", # 报告人 E40482 - 管理员 0000027663 - 刘小朋
# "reportDeptCode": "002000621000", # 报告部门 - 002000621000 SH期货研究部
# "productGroupCode": "RAW_MATERIAL" # 商品分类
# }
# }
# # 已弃用
# warning_data = {
# "groupNo": '', # 用户组id
# "funcModule": '原油特征停更预警',
@ -296,6 +157,7 @@ table_name = 'v_tbl_crude_oil_warning'
# }
# }
# push_data_value_list_data = {
# "funcModule": "数据表信息列表",
# "funcOperation": "新增",
@ -318,6 +180,7 @@ table_name = 'v_tbl_crude_oil_warning'
# ]
# }
# push_waring_data_value_list_data = {
# "data": {
# "crudeOilWarningDtoList": [
@ -341,28 +204,179 @@ table_name = 'v_tbl_crude_oil_warning'
# get_waring_data_value_list_data = {
# "data": "8", "funcModule": "商品数据同步", "funcOperation": "同步"}
# # 八大维度数据项编码
# bdwd_items = {
# 'ciri': 'yyycbdwdcr',
# 'benzhou': 'yyycbdwdbz',
# 'cizhou': 'yyycbdwdcz',
# 'gezhou': 'yyycbdwdgz',
# 'ciyue': 'yyycbdwdcy',
# 'cieryue': 'yyycbdwdcey',
# 'cisanyue': 'yyycbdwdcsy',
# 'cisiyue': 'yyycbdwdcsiy',
# 'ciri': '原油大数据预测|FORECAST|PRICE|T',
# 'benzhou': '原油大数据预测|FORECAST|PRICE|W',
# 'cizhou': '原油大数据预测|FORECAST|PRICE|W_1',
# 'gezhou': '原油大数据预测|FORECAST|PRICE|W_2',
# 'ciyue': '原油大数据预测|FORECAST|PRICE|M_1',
# 'cieryue': '原油大数据预测|FORECAST|PRICE|M_2',
# 'cisanyue': '原油大数据预测|FORECAST|PRICE|M_3',
# 'cisiyue': '原油大数据预测|FORECAST|PRICE|M_4',
# }
# # 北京环境数据库
# host = '192.168.101.27'
# # 生产环境数据库
# host = 'rm-2zehj3r1n60ttz9x5.mysql.rds.aliyuncs.com'
# port = 3306
# dbusername = 'root'
# password = '123456'
# dbname = 'jingbo_test'
# dbusername = 'jingbo'
# password = 'shihua@123'
# dbname = 'jingbo'
# table_name = 'v_tbl_crude_oil_warning'
# # 变量定义--测试环境
server_host = '192.168.100.53' # 内网
# server_host = '183.242.74.28' # 外网
login_pushreport_url = f"http://{server_host}:8080/jingbo-dev/api/server/login"
# 上传报告
upload_url = f"http://{server_host}:8080/jingbo-dev/api/analysis/reportInfo/researchUploadReportSave"
# 停更预警
upload_warning_url = f"http://{server_host}:8080/jingbo-dev/api/basicBuiness/crudeOilWarning/save"
# 查询数据项编码
query_data_list_item_nos_url = f"http://{server_host}:8080/jingbo-dev/api/warehouse/dwDataItem/queryDataListItemNos"
# 上传数据项值
push_data_value_list_url = f"http://{server_host}:8080/jingbo-dev/api/dw/dataValue/pushDataValueList"
# 上传停更数据到市场信息平台
push_waring_data_value_list_url = f"http://{server_host}:8080/jingbo-dev/api/basicBuiness/crudeOilWarning/crudeSaveOrupdate"
# 获取预警数据中取消订阅指标ID
get_waring_data_value_list_url = f"http://{server_host}:8080/jingbo-dev/api/basicBuiness/crudeOilWarning/dataList"
login_data = {
"data": {
"account": "api_test",
# "password": "MmVmNzNlOWI0MmY0ZDdjZGUwNzE3ZjFiMDJiZDZjZWU=", # Shihua@123456
"password": "ZTEwYWRjMzk0OWJhNTlhYmJlNTZlMDU3ZjIwZjg4M2U=", # 123456
"tenantHashCode": "8a4577dbd919675758d57999a1e891fe",
"terminal": "API"
},
"funcModule": "API",
"funcOperation": "获取token"
}
upload_data = {
"groupNo": '', # 用户组id
"funcModule": '研究报告信息',
"funcOperation": '上传原油价格预测报告',
"data": {
"ownerAccount": 'arui', # 报告所属用户账号
"reportType": 'OIL_PRICE_FORECAST', # 报告类型固定为OIL_PRICE_FORECAST
"fileName": '2000-40-5-50--100-原油指标数据.xlsx-Brent活跃合约--2024-09-06-15-01-29-预测报告.pdf', # 文件名称
"fileBase64": '', # 文件内容base64
"categoryNo": 'yyjgycbg', # 研究报告分类编码
"smartBusinessClassCode": 'YCJGYCBG', # 分析报告分类编码
"reportEmployeeCode": "E40116", # 报告人
"reportDeptCode": "D0044", # 报告部门
"productGroupCode": "RAW_MATERIAL" # 商品分类
}
}
# 已弃用
warning_data = {
"groupNo": '', # 用户组id
"funcModule": '原油特征停更预警',
"funcOperation": '原油特征停更预警',
"data": {
'WARNING_TYPE_NAME': '特征数据停更预警',
'WARNING_CONTENT': '',
'WARNING_DATE': ''
}
}
query_data_list_item_nos_data = {
"funcModule": "数据项",
"funcOperation": "查询",
"data": {
"dateStart": "20200101",
"dateEnd": "20241231",
"dataItemNoList": ["Brentzdj", "Brentzgj"] # 数据项编码,代表 brent最低价和最高价
}
}
push_data_value_list_data = {
"funcModule": "数据表信息列表",
"funcOperation": "新增",
"data": [
{"dataItemNo": "91230600716676129",
"dataDate": "20230113",
"dataStatus": "add",
"dataValue": 100.11
},
{"dataItemNo": "91230600716676129P|ETHYL_BEN|CAPACITY",
"dataDate": "20230113",
"dataStatus": "add",
"dataValue": 100.55
},
{"dataItemNo": "91230600716676129P|ETHYL_BEN|CAPACITY",
"dataDate": "20230113",
"dataStatus": "add",
"dataValue": 100.55
}
]
}
push_waring_data_value_list_data = {
"data": {
"crudeOilWarningDtoList": [
{
"lastUpdateDate": "20240501",
"updateSuspensionCycle": 1,
"dataSource": "8",
"frequency": "1",
"indicatorName": "美元指数",
"indicatorId": "myzs001",
"warningDate": "2024-05-13"
}
],
"dataSource": "8"
},
"funcModule": "商品数据同步",
"funcOperation": "同步"
}
get_waring_data_value_list_data = {
"data": "8", "funcModule": "商品数据同步", "funcOperation": "同步"}
# 八大维度数据项编码
bdwd_items = {
'ciri': 'yyycbdwdcr',
'benzhou': 'yyycbdwdbz',
'cizhou': 'yyycbdwdcz',
'gezhou': 'yyycbdwdgz',
'ciyue': 'yyycbdwdcy',
'cieryue': 'yyycbdwdcey',
'cisanyue': 'yyycbdwdcsy',
'cisiyue': 'yyycbdwdcsiy',
}
# 北京环境数据库
host = '192.168.101.27'
port = 3306
dbusername = 'root'
password = '123456'
dbname = 'jingbo_test'
table_name = 'v_tbl_crude_oil_warning'
DEFAULT_CONFIG = {
'feature_factor_frequency': 'D',
'strategy_id': 1,
'model_evaluation_id': 1,
'tenant_code': '',
'version_num': Decimal(1),
'delete_flag': '0',
'create_user': 'admin',
'create_date': datetime.datetime.now(),
'update_user': 'admin',
'update_date': datetime.datetime.now()
}
# 开关
is_train = True # 是否训练
is_debug = False # 是否调试

View File

@ -1,3 +1,4 @@
from decimal import Decimal
import logging
import os
import logging.handlers
@ -171,131 +172,19 @@ data = {
ClassifyId = 1214
# 变量定义--线上环境
server_host = '10.200.32.39'
login_pushreport_url = "http://10.200.32.39/jingbo-api/api/server/login"
upload_url = "http://10.200.32.39/jingbo-api/api/analysis/reportInfo/researchUploadReportSave"
upload_warning_url = "http://10.200.32.39/jingbo-api/api/basicBuiness/crudeOilWarning/save"
query_data_list_item_nos_url = f"http://{server_host}/jingbo-api/api/warehouse/dwDataItem/queryDataListItemNos"
# 上传数据项值
push_data_value_list_url = f"http://{server_host}/jingbo-api/api/dw/dataValue/pushDataValueList"
login_data = {
"data": {
"account": "api_dev",
"password": "ZTEwYWRjMzk0OWJhNTlhYmJlNTZlMDU3ZjIwZjg4M2U=",
"tenantHashCode": "8a4577dbd919675758d57999a1e891fe",
"terminal": "API"
},
"funcModule": "API",
"funcOperation": "获取token"
}
upload_data = {
"funcModule": '研究报告信息',
"funcOperation": '上传原油价格预测报告',
"data": {
"groupNo": '', # 用户组id
"ownerAccount": '27663', # 报告所属用户账号 27663 - 刘小朋
"reportType": 'OIL_PRICE_FORECAST', # 报告类型固定为OIL_PRICE_FORECAST
"fileName": '', # 文件名称
"fileBase64": '', # 文件内容base64
"categoryNo": 'yyjgycbg', # 研究报告分类编码
"smartBusinessClassCode": 'YCJGYCBG', # 分析报告分类编码
"reportEmployeeCode": "E40482", # 报告人 E40482 - 管理员 0000027663 - 刘小朋
"reportDeptCode": "002000621000", # 报告部门 - 002000621000 SH期货研究部
"productGroupCode": "RAW_MATERIAL" # 商品分类
}
}
warning_data = {
"groupNo": '', # 用户组id
"funcModule": '原油特征停更预警',
"funcOperation": '原油特征停更预警',
"data": {
'WARNING_TYPE_NAME': '特征数据停更预警',
'WARNING_CONTENT': '',
'WARNING_DATE': ''
}
}
query_data_list_item_nos_data = {
"funcModule": "数据项",
"funcOperation": "查询",
"data": {
"dateStart": "20200101",
"dateEnd": "20241231",
"dataItemNoList": ["Brentzdj", "Brentzgj"] # 数据项编码,代表 brent最低价和最高价
}
}
push_data_value_list_data = {
"funcModule": "数据表信息列表",
"funcOperation": "新增",
"data": [
{"dataItemNo": "91230600716676129",
"dataDate": "20230113",
"dataStatus": "add",
"dataValue": 100.11
},
{"dataItemNo": "91230600716676129P|ETHYL_BEN|CAPACITY",
"dataDate": "20230113",
"dataStatus": "add",
"dataValue": 100.55
},
{"dataItemNo": "91230600716676129P|ETHYL_BEN|CAPACITY",
"dataDate": "20230113",
"dataStatus": "add",
"dataValue": 100.55
}
]
}
# 八大维度数据项编码
bdwd_items = {
'ciri': '原油大数据预测|FORECAST|PRICE|T',
'benzhou': '原油大数据预测|FORECAST|PRICE|W',
'cizhou': '原油大数据预测|FORECAST|PRICE|W_1',
'gezhou': '原油大数据预测|FORECAST|PRICE|W_2',
'ciyue': '原油大数据预测|FORECAST|PRICE|M_1',
'cieryue': '原油大数据预测|FORECAST|PRICE|M_2',
'cisanyue': '原油大数据预测|FORECAST|PRICE|M_3',
'cisiyue': '原油大数据预测|FORECAST|PRICE|M_4',
}
# 报告中八大维度数据项重命名
columnsrename = {
'原油大数据预测|FORECAST|PRICE|T': '次日', '原油大数据预测|FORECAST|PRICE|W': '本周',
'原油大数据预测|FORECAST|PRICE|W_1': '次周', '原油大数据预测|FORECAST|PRICE|W_2': '隔周',
'原油大数据预测|FORECAST|PRICE|M_1': '次月', '原油大数据预测|FORECAST|PRICE|M_2': '次二月',
'原油大数据预测|FORECAST|PRICE|M_3': '次三月', '原油大数据预测|FORECAST|PRICE|M_4': '次四月'
}
# 生产环境数据库
host = 'rm-2zehj3r1n60ttz9x5.mysql.rds.aliyuncs.com'
port = 3306
dbusername = 'jingbo'
password = 'shihua@123'
dbname = 'jingbo'
table_name = 'v_tbl_crude_oil_warning'
# # 变量定义--测试环境
# server_host = '192.168.100.53:8080' # 内网
# # server_host = '183.242.74.28' # 外网
# login_pushreport_url = f"http://{server_host}/jingbo-dev/api/server/login"
# upload_url = f"http://{server_host}/jingbo-dev/api/analysis/reportInfo/researchUploadReportSave"
# upload_warning_url = f"http://{server_host}/jingbo-dev/api/basicBuiness/crudeOilWarning/save"
# query_data_list_item_nos_url = f"http://{server_host}/jingbo-dev/api/warehouse/dwDataItem/queryDataListItemNos"
# # 变量定义--线上环境
# server_host = '10.200.32.39'
# login_pushreport_url = "http://10.200.32.39/jingbo-api/api/server/login"
# upload_url = "http://10.200.32.39/jingbo-api/api/analysis/reportInfo/researchUploadReportSave"
# upload_warning_url = "http://10.200.32.39/jingbo-api/api/basicBuiness/crudeOilWarning/save"
# query_data_list_item_nos_url = f"http://{server_host}/jingbo-api/api/warehouse/dwDataItem/queryDataListItemNos"
# # 上传数据项值
# push_data_value_list_url = f"http://{server_host}/jingbo-dev/api/dw/dataValue/pushDataValueList"
# push_data_value_list_url = f"http://{server_host}/jingbo-api/api/dw/dataValue/pushDataValueList"
# login_data = {
# "data": {
# "account": "api_test",
# # "password": "MmVmNzNlOWI0MmY0ZDdjZGUwNzE3ZjFiMDJiZDZjZWU=", # Shihua@123456
# "password": "ZTEwYWRjMzk0OWJhNTlhYmJlNTZlMDU3ZjIwZjg4M2U=", # 123456
# "account": "api_dev",
# "password": "ZTEwYWRjMzk0OWJhNTlhYmJlNTZlMDU3ZjIwZjg4M2U=",
# "tenantHashCode": "8a4577dbd919675758d57999a1e891fe",
# "terminal": "API"
# },
@ -303,24 +192,24 @@ table_name = 'v_tbl_crude_oil_warning'
# "funcOperation": "获取token"
# }
# upload_data = {
# "groupNo": '', # 用户组id
# "funcModule": '研究报告信息',
# "funcOperation": '上传原油价格预测报告',
# "data": {
# "ownerAccount": 'arui', # 报告所属用户账号
# "groupNo": '', # 用户组id
# "ownerAccount": '27663', # 报告所属用户账号 27663 - 刘小朋
# "reportType": 'OIL_PRICE_FORECAST', # 报告类型固定为OIL_PRICE_FORECAST
# "fileName": '2000-40-5-50--100-原油指标数据.xlsx-Brent活跃合约--2024-09-06-15-01-29-预测报告.pdf', # 文件名称
# "fileName": '', # 文件名称
# "fileBase64": '', # 文件内容base64
# "categoryNo": 'yyjgycbg', # 研究报告分类编码
# "smartBusinessClassCode": 'YCJGYCBG', # 分析报告分类编码
# "reportEmployeeCode": "E40116", # 报告人
# "reportDeptCode": "D0044", # 报告部门
# "reportEmployeeCode": "E40482", # 报告人 E40482 - 管理员 0000027663 - 刘小朋
# "reportDeptCode": "002000621000", # 报告部门 - 002000621000 SH期货研究部
# "productGroupCode": "RAW_MATERIAL" # 商品分类
# }
# }
# warning_data = {
# "groupNo": '', # 用户组id
# "funcModule": '原油特征停更预警',
@ -342,6 +231,7 @@ table_name = 'v_tbl_crude_oil_warning'
# }
# }
# push_data_value_list_data = {
# "funcModule": "数据表信息列表",
# "funcOperation": "新增",
@ -365,28 +255,152 @@ table_name = 'v_tbl_crude_oil_warning'
# }
# # 八大维度数据项编码
# bdwd_items = {
# 'ciri': 'yyycbdwdcr',
# 'benzhou': 'yyycbdwdbz',
# 'cizhou': 'yyycbdwdcz',
# 'gezhou': 'yyycbdwdgz',
# 'ciyue': 'yyycbdwdcy',
# 'cieryue': 'yyycbdwdcey',
# 'cisanyue': 'yyycbdwdcsy',
# 'cisiyue': 'yyycbdwdcsiy',
# 'ciri': '原油大数据预测|FORECAST|PRICE|T',
# 'benzhou': '原油大数据预测|FORECAST|PRICE|W',
# 'cizhou': '原油大数据预测|FORECAST|PRICE|W_1',
# 'gezhou': '原油大数据预测|FORECAST|PRICE|W_2',
# 'ciyue': '原油大数据预测|FORECAST|PRICE|M_1',
# 'cieryue': '原油大数据预测|FORECAST|PRICE|M_2',
# 'cisanyue': '原油大数据预测|FORECAST|PRICE|M_3',
# 'cisiyue': '原油大数据预测|FORECAST|PRICE|M_4',
# }
# # 报告中八大维度数据项重命名
# columnsrename = {'yyycbdwdbz': '本周', 'yyycbdwdcey': '次二月', 'yyycbdwdcr': '次日', 'yyycbdwdcsiy': '次四月',
# 'yyycbdwdcsy': '次三月', 'yyycbdwdcy': '次月', 'yyycbdwdcz': '次周', 'yyycbdwdgz': '隔周', }
# # 北京环境数据库
# host = '192.168.101.27'
# columnsrename = {
# '原油大数据预测|FORECAST|PRICE|T': '次日', '原油大数据预测|FORECAST|PRICE|W': '本周',
# '原油大数据预测|FORECAST|PRICE|W_1': '次周', '原油大数据预测|FORECAST|PRICE|W_2': '隔周',
# '原油大数据预测|FORECAST|PRICE|M_1': '次月', '原油大数据预测|FORECAST|PRICE|M_2': '次二月',
# '原油大数据预测|FORECAST|PRICE|M_3': '次三月', '原油大数据预测|FORECAST|PRICE|M_4': '次四月'
# }
# # 生产环境数据库
# host = 'rm-2zehj3r1n60ttz9x5.mysql.rds.aliyuncs.com'
# port = 3306
# dbusername = 'root'
# password = '123456'
# dbname = 'jingbo_test'
# dbusername = 'jingbo'
# password = 'shihua@123'
# dbname = 'jingbo'
# table_name = 'v_tbl_crude_oil_warning'
# 变量定义--测试环境
server_host = '192.168.100.53:8080' # 内网
# server_host = '183.242.74.28' # 外网
login_pushreport_url = f"http://{server_host}/jingbo-dev/api/server/login"
upload_url = f"http://{server_host}/jingbo-dev/api/analysis/reportInfo/researchUploadReportSave"
upload_warning_url = f"http://{server_host}/jingbo-dev/api/basicBuiness/crudeOilWarning/save"
query_data_list_item_nos_url = f"http://{server_host}/jingbo-dev/api/warehouse/dwDataItem/queryDataListItemNos"
# 上传数据项值
push_data_value_list_url = f"http://{server_host}/jingbo-dev/api/dw/dataValue/pushDataValueList"
login_data = {
"data": {
"account": "api_test",
# "password": "MmVmNzNlOWI0MmY0ZDdjZGUwNzE3ZjFiMDJiZDZjZWU=", # Shihua@123456
"password": "ZTEwYWRjMzk0OWJhNTlhYmJlNTZlMDU3ZjIwZjg4M2U=", # 123456
"tenantHashCode": "8a4577dbd919675758d57999a1e891fe",
"terminal": "API"
},
"funcModule": "API",
"funcOperation": "获取token"
}
upload_data = {
"groupNo": '', # 用户组id
"funcModule": '研究报告信息',
"funcOperation": '上传原油价格预测报告',
"data": {
"ownerAccount": 'arui', # 报告所属用户账号
"reportType": 'OIL_PRICE_FORECAST', # 报告类型固定为OIL_PRICE_FORECAST
"fileName": '2000-40-5-50--100-原油指标数据.xlsx-Brent活跃合约--2024-09-06-15-01-29-预测报告.pdf', # 文件名称
"fileBase64": '', # 文件内容base64
"categoryNo": 'yyjgycbg', # 研究报告分类编码
"smartBusinessClassCode": 'YCJGYCBG', # 分析报告分类编码
"reportEmployeeCode": "E40116", # 报告人
"reportDeptCode": "D0044", # 报告部门
"productGroupCode": "RAW_MATERIAL" # 商品分类
}
}
warning_data = {
"groupNo": '', # 用户组id
"funcModule": '原油特征停更预警',
"funcOperation": '原油特征停更预警',
"data": {
'WARNING_TYPE_NAME': '特征数据停更预警',
'WARNING_CONTENT': '',
'WARNING_DATE': ''
}
}
query_data_list_item_nos_data = {
"funcModule": "数据项",
"funcOperation": "查询",
"data": {
"dateStart": "20200101",
"dateEnd": "20241231",
"dataItemNoList": ["Brentzdj", "Brentzgj"] # 数据项编码,代表 brent最低价和最高价
}
}
push_data_value_list_data = {
"funcModule": "数据表信息列表",
"funcOperation": "新增",
"data": [
{"dataItemNo": "91230600716676129",
"dataDate": "20230113",
"dataStatus": "add",
"dataValue": 100.11
},
{"dataItemNo": "91230600716676129P|ETHYL_BEN|CAPACITY",
"dataDate": "20230113",
"dataStatus": "add",
"dataValue": 100.55
},
{"dataItemNo": "91230600716676129P|ETHYL_BEN|CAPACITY",
"dataDate": "20230113",
"dataStatus": "add",
"dataValue": 100.55
}
]
}
# 八大维度数据项编码
bdwd_items = {
'ciri': 'yyycbdwdcr',
'benzhou': 'yyycbdwdbz',
'cizhou': 'yyycbdwdcz',
'gezhou': 'yyycbdwdgz',
'ciyue': 'yyycbdwdcy',
'cieryue': 'yyycbdwdcey',
'cisanyue': 'yyycbdwdcsy',
'cisiyue': 'yyycbdwdcsiy',
}
# 报告中八大维度数据项重命名
columnsrename = {'yyycbdwdbz': '本周', 'yyycbdwdcey': '次二月', 'yyycbdwdcr': '次日', 'yyycbdwdcsiy': '次四月',
'yyycbdwdcsy': '次三月', 'yyycbdwdcy': '次月', 'yyycbdwdcz': '次周', 'yyycbdwdgz': '隔周', }
# 北京环境数据库
host = '192.168.101.27'
port = 3306
dbusername = 'root'
password = '123456'
dbname = 'jingbo_test'
table_name = 'v_tbl_crude_oil_warning'
DEFAULT_CONFIG = {
'feature_factor_frequency': 'D',
'strategy_id': 1,
'model_evaluation_id': 1,
'tenant_code': '',
'version_num': Decimal(1),
'delete_flag': '0',
'create_user': 'admin',
'create_date': datetime.datetime.now(),
'update_user': 'admin',
'update_date': datetime.datetime.now()
}
# 开关
is_train = True # 是否训练
is_debug = False # 是否调试

View File

@ -1,3 +1,4 @@
from decimal import Decimal
import logging
import os
import logging.handlers
@ -118,125 +119,19 @@ data = {
ClassifyId = 1214
# 变量定义--线上环境
server_host = '10.200.32.39'
login_pushreport_url = "http://10.200.32.39/jingbo-api/api/server/login"
upload_url = "http://10.200.32.39/jingbo-api/api/analysis/reportInfo/researchUploadReportSave"
upload_warning_url = "http://10.200.32.39/jingbo-api/api/basicBuiness/crudeOilWarning/save"
query_data_list_item_nos_url = f"http://{server_host}/jingbo-api/api/warehouse/dwDataItem/queryDataListItemNos"
# 上传数据项值
push_data_value_list_url = f"http://{server_host}/jingbo-api/api/dw/dataValue/pushDataValueList"
login_data = {
"data": {
"account": "api_dev",
"password": "ZTEwYWRjMzk0OWJhNTlhYmJlNTZlMDU3ZjIwZjg4M2U=",
"tenantHashCode": "8a4577dbd919675758d57999a1e891fe",
"terminal": "API"
},
"funcModule": "API",
"funcOperation": "获取token"
}
upload_data = {
"funcModule": '研究报告信息',
"funcOperation": '上传原油价格预测报告',
"data": {
"groupNo": '', # 用户组id
"ownerAccount": '27663', # 报告所属用户账号 27663 - 刘小朋
"reportType": 'OIL_PRICE_FORECAST', # 报告类型固定为OIL_PRICE_FORECAST
"fileName": '', # 文件名称
"fileBase64": '', # 文件内容base64
"categoryNo": 'yyjgycbg', # 研究报告分类编码
"smartBusinessClassCode": 'YCJGYCBG', # 分析报告分类编码
"reportEmployeeCode": "E40482", # 报告人 E40482 - 管理员 0000027663 - 刘小朋
"reportDeptCode": "002000621000", # 报告部门 - 002000621000 SH期货研究部
"productGroupCode": "RAW_MATERIAL" # 商品分类
}
}
warning_data = {
"groupNo": '', # 用户组id
"funcModule": '原油特征停更预警',
"funcOperation": '原油特征停更预警',
"data": {
'WARNING_TYPE_NAME': '特征数据停更预警',
'WARNING_CONTENT': '',
'WARNING_DATE': ''
}
}
query_data_list_item_nos_data = {
"funcModule": "数据项",
"funcOperation": "查询",
"data": {
"dateStart": "20200101",
"dateEnd": "20241231",
"dataItemNoList": ["Brentzdj", "Brentzgj"] # 数据项编码,代表 brent最低价和最高价
}
}
push_data_value_list_data = {
"funcModule": "数据表信息列表",
"funcOperation": "新增",
"data": [
{"dataItemNo": "91230600716676129",
"dataDate": "20230113",
"dataStatus": "add",
"dataValue": 100.11
},
{"dataItemNo": "91230600716676129P|ETHYL_BEN|CAPACITY",
"dataDate": "20230113",
"dataStatus": "add",
"dataValue": 100.55
},
{"dataItemNo": "91230600716676129P|ETHYL_BEN|CAPACITY",
"dataDate": "20230113",
"dataStatus": "add",
"dataValue": 100.55
}
]
}
# 八大维度数据项编码
bdwd_items = {
'ciri': '原油大数据预测|FORECAST|PRICE|T',
'benzhou': '原油大数据预测|FORECAST|PRICE|W',
'cizhou': '原油大数据预测|FORECAST|PRICE|W_1',
'gezhou': '原油大数据预测|FORECAST|PRICE|W_2',
'ciyue': '原油大数据预测|FORECAST|PRICE|M_1',
'cieryue': '原油大数据预测|FORECAST|PRICE|M_2',
'cisanyue': '原油大数据预测|FORECAST|PRICE|M_3',
'cisiyue': '原油大数据预测|FORECAST|PRICE|M_4',
}
# 生产环境数据库
host = 'rm-2zehj3r1n60ttz9x5.mysql.rds.aliyuncs.com'
port = 3306
dbusername = 'jingbo'
password = 'shihua@123'
dbname = 'jingbo'
table_name = 'v_tbl_crude_oil_warning'
# # # 变量定义--测试环境
# server_host = '192.168.100.53:8080' # 内网
# # server_host = '183.242.74.28' # 外网
# login_pushreport_url = f"http://{server_host}/jingbo-dev/api/server/login"
# upload_url = f"http://{server_host}/jingbo-dev/api/analysis/reportInfo/researchUploadReportSave"
# upload_warning_url = f"http://{server_host}/jingbo-dev/api/basicBuiness/crudeOilWarning/save"
# query_data_list_item_nos_url = f"http://{server_host}/jingbo-dev/api/warehouse/dwDataItem/queryDataListItemNos"
# # 变量定义--线上环境
# server_host = '10.200.32.39'
# login_pushreport_url = "http://10.200.32.39/jingbo-api/api/server/login"
# upload_url = "http://10.200.32.39/jingbo-api/api/analysis/reportInfo/researchUploadReportSave"
# upload_warning_url = "http://10.200.32.39/jingbo-api/api/basicBuiness/crudeOilWarning/save"
# query_data_list_item_nos_url = f"http://{server_host}/jingbo-api/api/warehouse/dwDataItem/queryDataListItemNos"
# # 上传数据项值
# push_data_value_list_url = f"http://{server_host}/jingbo-dev/api/dw/dataValue/pushDataValueList"
# push_data_value_list_url = f"http://{server_host}/jingbo-api/api/dw/dataValue/pushDataValueList"
# login_data = {
# "data": {
# "account": "api_test",
# # "password": "MmVmNzNlOWI0MmY0ZDdjZGUwNzE3ZjFiMDJiZDZjZWU=", # Shihua@123456
# "password": "ZTEwYWRjMzk0OWJhNTlhYmJlNTZlMDU3ZjIwZjg4M2U=", # 123456
# "account": "api_dev",
# "password": "ZTEwYWRjMzk0OWJhNTlhYmJlNTZlMDU3ZjIwZjg4M2U=",
# "tenantHashCode": "8a4577dbd919675758d57999a1e891fe",
# "terminal": "API"
# },
@ -244,24 +139,26 @@ table_name = 'v_tbl_crude_oil_warning'
# "funcOperation": "获取token"
# }
# upload_data = {
# "funcModule": '研究报告信息',
# "funcOperation": '上传原油价格预测报告',
# "data": {
# "ownerAccount": 'arui', # 报告所属用户账号
# "groupNo": '', # 用户组id
# "ownerAccount": '27663', # 报告所属用户账号 27663 - 刘小朋
# "reportType": 'OIL_PRICE_FORECAST', # 报告类型固定为OIL_PRICE_FORECAST
# "fileName": '2000-40-5-50--100-原油指标数据.xlsx-Brent活跃合约--2024-09-06-15-01-29-预测报告.pdf', # 文件名称
# "fileName": '', # 文件名称
# "fileBase64": '', # 文件内容base64
# "categoryNo": 'yyjgycbg', # 研究报告分类编码
# "smartBusinessClassCode": 'YCJGYCBG', # 分析报告分类编码
# "reportEmployeeCode": "E40116", # 报告人
# "reportDeptCode": "D0044", # 报告部门
# "reportEmployeeCode": "E40482", # 报告人 E40482 - 管理员 0000027663 - 刘小朋
# "reportDeptCode": "002000621000", # 报告部门 - 002000621000 SH期货研究部
# "productGroupCode": "RAW_MATERIAL" # 商品分类
# }
# }
# warning_data = {
# "groupNo": '', # 用户组id
# "funcModule": '原油特征停更预警',
# "funcOperation": '原油特征停更预警',
# "data": {
@ -281,6 +178,7 @@ table_name = 'v_tbl_crude_oil_warning'
# }
# }
# push_data_value_list_data = {
# "funcModule": "数据表信息列表",
# "funcOperation": "新增",
@ -304,26 +202,143 @@ table_name = 'v_tbl_crude_oil_warning'
# }
# # 八大维度数据项编码
# bdwd_items = {
# 'ciri': 'yyycbdwdcr',
# 'benzhou': 'yyycbdwdbz',
# 'cizhou': 'yyycbdwdcz',
# 'gezhou': 'yyycbdwdgz',
# 'ciyue': 'yyycbdwdcy',
# 'cieryue': 'yyycbdwdcey',
# 'cisanyue': 'yyycbdwdcsy',
# 'cisiyue': 'yyycbdwdcsiy',
# 'ciri': '原油大数据预测|FORECAST|PRICE|T',
# 'benzhou': '原油大数据预测|FORECAST|PRICE|W',
# 'cizhou': '原油大数据预测|FORECAST|PRICE|W_1',
# 'gezhou': '原油大数据预测|FORECAST|PRICE|W_2',
# 'ciyue': '原油大数据预测|FORECAST|PRICE|M_1',
# 'cieryue': '原油大数据预测|FORECAST|PRICE|M_2',
# 'cisanyue': '原油大数据预测|FORECAST|PRICE|M_3',
# 'cisiyue': '原油大数据预测|FORECAST|PRICE|M_4',
# }
# # 北京环境数据库
# host = '192.168.101.27'
# # 生产环境数据库
# host = 'rm-2zehj3r1n60ttz9x5.mysql.rds.aliyuncs.com'
# port = 3306
# dbusername = 'root'
# password = '123456'
# dbname = 'jingbo_test'
# dbusername = 'jingbo'
# password = 'shihua@123'
# dbname = 'jingbo'
# table_name = 'v_tbl_crude_oil_warning'
# # 变量定义--测试环境
server_host = '192.168.100.53:8080' # 内网
# server_host = '183.242.74.28' # 外网
login_pushreport_url = f"http://{server_host}/jingbo-dev/api/server/login"
upload_url = f"http://{server_host}/jingbo-dev/api/analysis/reportInfo/researchUploadReportSave"
upload_warning_url = f"http://{server_host}/jingbo-dev/api/basicBuiness/crudeOilWarning/save"
query_data_list_item_nos_url = f"http://{server_host}/jingbo-dev/api/warehouse/dwDataItem/queryDataListItemNos"
# 上传数据项值
push_data_value_list_url = f"http://{server_host}/jingbo-dev/api/dw/dataValue/pushDataValueList"
login_data = {
"data": {
"account": "api_test",
# "password": "MmVmNzNlOWI0MmY0ZDdjZGUwNzE3ZjFiMDJiZDZjZWU=", # Shihua@123456
"password": "ZTEwYWRjMzk0OWJhNTlhYmJlNTZlMDU3ZjIwZjg4M2U=", # 123456
"tenantHashCode": "8a4577dbd919675758d57999a1e891fe",
"terminal": "API"
},
"funcModule": "API",
"funcOperation": "获取token"
}
upload_data = {
"funcModule": '研究报告信息',
"funcOperation": '上传原油价格预测报告',
"data": {
"ownerAccount": 'arui', # 报告所属用户账号
"reportType": 'OIL_PRICE_FORECAST', # 报告类型固定为OIL_PRICE_FORECAST
"fileName": '2000-40-5-50--100-原油指标数据.xlsx-Brent活跃合约--2024-09-06-15-01-29-预测报告.pdf', # 文件名称
"fileBase64": '', # 文件内容base64
"categoryNo": 'yyjgycbg', # 研究报告分类编码
"smartBusinessClassCode": 'YCJGYCBG', # 分析报告分类编码
"reportEmployeeCode": "E40116", # 报告人
"reportDeptCode": "D0044", # 报告部门
"productGroupCode": "RAW_MATERIAL" # 商品分类
}
}
warning_data = {
"funcModule": '原油特征停更预警',
"funcOperation": '原油特征停更预警',
"data": {
'WARNING_TYPE_NAME': '特征数据停更预警',
'WARNING_CONTENT': '',
'WARNING_DATE': ''
}
}
query_data_list_item_nos_data = {
"funcModule": "数据项",
"funcOperation": "查询",
"data": {
"dateStart": "20200101",
"dateEnd": "20241231",
"dataItemNoList": ["Brentzdj", "Brentzgj"] # 数据项编码,代表 brent最低价和最高价
}
}
push_data_value_list_data = {
"funcModule": "数据表信息列表",
"funcOperation": "新增",
"data": [
{"dataItemNo": "91230600716676129",
"dataDate": "20230113",
"dataStatus": "add",
"dataValue": 100.11
},
{"dataItemNo": "91230600716676129P|ETHYL_BEN|CAPACITY",
"dataDate": "20230113",
"dataStatus": "add",
"dataValue": 100.55
},
{"dataItemNo": "91230600716676129P|ETHYL_BEN|CAPACITY",
"dataDate": "20230113",
"dataStatus": "add",
"dataValue": 100.55
}
]
}
# 八大维度数据项编码
bdwd_items = {
'ciri': 'yyycbdwdcr',
'benzhou': 'yyycbdwdbz',
'cizhou': 'yyycbdwdcz',
'gezhou': 'yyycbdwdgz',
'ciyue': 'yyycbdwdcy',
'cieryue': 'yyycbdwdcey',
'cisanyue': 'yyycbdwdcsy',
'cisiyue': 'yyycbdwdcsiy',
}
# 北京环境数据库
host = '192.168.101.27'
port = 3306
dbusername = 'root'
password = '123456'
dbname = 'jingbo_test'
table_name = 'v_tbl_crude_oil_warning'
DEFAULT_CONFIG = {
'feature_factor_frequency': 'D',
'strategy_id': 1,
'model_evaluation_id': 1,
'tenant_code': '',
'version_num': Decimal(1),
'delete_flag': '0',
'create_user': 'admin',
'create_date': datetime.datetime.now(),
'update_user': 'admin',
'update_date': datetime.datetime.now()
}
# 开关
is_train = True # 是否训练
is_debug = False # 是否调试

View File

@ -123,6 +123,8 @@ global_config = {
'sqlitedb': None,
'db_mysql': None,
'baichuan_table_name': None,
'DEFAULT_CONFIG': None,
'TIME_SPAN_MAPPING': None,
# 报告配置
'is_bdwd': None, # 是否使用bdwd数据

33
lib/pydantic_models.py Normal file
View File

@ -0,0 +1,33 @@
from datetime import datetime
from decimal import Decimal
from pydantic import BaseModel
from typing import Optional
from datetime import datetime
from decimal import Decimal
class PredictionResult(BaseModel):
prediction_date: datetime
bdwd: Optional[str] = None
feature_factor_frequency: str
strategy_id: int
predicted_price: Decimal
model_evaluation_id: int
model_id: int
tenant_code: Optional[str] = None
reserved_str1: Optional[str] = None
reserved_str2: Optional[str] = None
reserved_str3: Optional[str] = None
reserved_str4: Optional[str] = None
reserved_str5: Optional[str] = None
reserved_num1: Optional[Decimal] = None
reserved_num2: Optional[Decimal] = None
reserved_num3: Optional[Decimal] = None
reserved_num4: Optional[Decimal] = None
reserved_num5: Optional[Decimal] = None
version_num: Decimal = Decimal(1)
delete_flag: str = '0'
create_user: Optional[str] = None
create_date: Optional[datetime] = None
update_user: Optional[str] = None
update_date: Optional[datetime] = None

View File

@ -1,3 +1,4 @@
from decimal import Decimal
from langchain_core.documents import Document
from langchain_openai import ChatOpenAI
from langchain.chains.summarize import load_summarize_chain
@ -35,8 +36,9 @@ import os
import time
import logging
from dotenv import load_dotenv
load_dotenv()
from lib.pydantic_models import PredictionResult
load_dotenv()
global logger
@ -537,6 +539,13 @@ class MySQLDB:
except pymysql.Error as e:
logging.error(f"Error connecting to the database: {e}")
def is_connected(self):
try:
self.connection.ping(reconnect=True)
return True
except pymysql.Error:
return False
def execute_query(self, query):
try:
self.cursor.execute(query)
@ -555,6 +564,29 @@ class MySQLDB:
logging.error(f"Error executing insert: {e}")
self.connection.rollback()
def execute_batch_insert(self, query, params_list):
"""
Batch insert data
:param query: SQL insert statement
:param params_list: Parameter list, each element is a parameter for a record
:return: Number of affected rows
"""
if not self.is_connected():
print("Database is not connected, please call the connect method first")
return 0
try:
cursor = self.connection.cursor()
cursor.executemany(query, params_list)
self.connection.commit()
affected_rows = cursor.rowcount
cursor.close()
return affected_rows
except pymysql.Error as err:
print(f"Batch insert failed: {err}")
if self.is_connected():
self.connection.rollback()
return 0
def execute_update(self, query, values):
try:
self.cursor.execute(query, values)
@ -640,5 +672,40 @@ class DeepSeek():
return summary
def get_modelsname(df, global_config):
'''
预测结果和模型表求子集得到模型名称
'''
columns = df.columns.tolist()
tb = 'v_tbl_predict_models'
sql = f'select model_name,id from {tb} '
modelsname = global_config['db_mysql'].execute_query(sql)
model_id_name_dict = {row['model_name']: row['id'] for row in modelsname}
model_name_list = [row['model_name'] for row in modelsname]
model_name_list = set(columns) & set(model_name_list)
model_name_list = list(model_name_list)
global_config['db_mysql'].close()
return model_name_list, model_id_name_dict
def convert_df_to_pydantic(df_predict, model_id_name_dict, bdwd, global_config):
results = []
data = global_config['DEFAULT_CONFIG'].copy()
data['prediction_date'] = df_predict['created_dt'].values[0]
if isinstance(data['prediction_date'], np.datetime64):
data['prediction_date'] = pd.Timestamp(
data['prediction_date']).to_pydatetime()
for c in df_predict.columns:
if c not in ['ds', 'created_dt']:
data['model_id'] = model_id_name_dict[c]
data['bdwd'] = bdwd
data['predicted_price'] = Decimal(
round(df_predict[c].values[0], 2))
result = PredictionResult(**data)
results.append(result)
return results
if __name__ == '__main__':
print('This is a tool, not a script.')

View File

@ -2,7 +2,7 @@
from lib.dataread import *
from config_jingbo import *
from lib.tools import SendMail, exception_logger
from lib.tools import SendMail, convert_df_to_pydantic, exception_logger, get_modelsname
from models.nerulforcastmodels import ex_Model, model_losss, brent_export_pdf
import datetime
import torch
@ -90,6 +90,8 @@ global_config.update({
'sqlitedb': sqlitedb,
'bdwd_items': bdwd_items,
'is_bdwd': is_bdwd,
'db_mysql': db_mysql,
'DEFAULT_CONFIG': DEFAULT_CONFIG,
})
@ -150,6 +152,69 @@ def push_market_value():
config.logger.error(f"推送数据失败: {e}")
def sql_inset_predict(global_config):
df = pd.read_csv(os.path.join(config.dataset, 'predict.csv'))
df['created_dt'] = pd.to_datetime(df['created_dt'])
df['ds'] = pd.to_datetime(df['ds'])
# 获取次日预测结果
next_day_df = df[df['ds'] == df['ds'].min()]
# 获取本周预测结果
this_week_df = df[df['ds'] == df['ds'].max()]
wd = ['next_day', 'this_week']
model_name_list, model_id_name_dict = get_modelsname(df, global_config)
for df, w in zip([next_day_df, this_week_df], wd):
next_day_df = df[['ds', 'created_dt'] + model_name_list]
pydantic_results = convert_df_to_pydantic(
next_day_df, model_id_name_dict, w, global_config)
if pydantic_results:
insert_query = """
INSERT INTO v_tbl_predict_prediction_results (
prediction_date, bdwd,
feature_factor_frequency, strategy_id, predicted_price,
model_evaluation_id, model_id, tenant_code,
version_num, delete_flag, create_user, create_date, update_user, update_date
) VALUES (
%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s
)
ON DUPLICATE KEY UPDATE
feature_factor_frequency = VALUES(feature_factor_frequency),
predicted_price = VALUES(predicted_price),
model_evaluation_id = VALUES(model_evaluation_id),
tenant_code = VALUES(tenant_code),
version_num = VALUES(version_num),
delete_flag = VALUES(delete_flag),
create_user = VALUES(create_user),
create_date = VALUES(create_date),
update_user = VALUES(update_user),
update_date = VALUES(update_date)
"""
params_list = []
for result in pydantic_results:
params = (
result.prediction_date,
result.bdwd,
result.feature_factor_frequency,
result.strategy_id,
result.predicted_price,
result.model_evaluation_id,
result.model_id,
result.tenant_code,
result.version_num,
result.delete_flag,
result.create_user,
result.create_date,
result.update_user,
result.update_date
)
params_list.append(params)
affected_rows = config.db_mysql.execute_batch_insert(
insert_query, params_list)
print(f"成功插入 {affected_rows} 条记录")
config.db_mysql.close()
def predict_main():
"""
主预测函数用于从 ETA 获取数据处理数据训练模型并进行预测
@ -467,6 +532,7 @@ def predict_main():
# logger.info('模型训练完成')
# push_market_value()
# sql_inset_predict(global_config)
# # LSTM 单变量模型
# ex_Lstm(df,input_seq_len=input_size,output_seq_len=horizon,is_debug=is_debug,dataset=dataset)
@ -497,5 +563,6 @@ if __name__ == '__main__':
# end_time = i_time.strftime('%Y-%m-%d')
# predict_main()
predict_main()
# predict_main()
# push_market_value()
sql_inset_predict(global_config)

View File

@ -2,7 +2,7 @@
from lib.dataread import *
from config_jingbo_yuedu import *
from lib.tools import SendMail, exception_logger
from lib.tools import SendMail, convert_df_to_pydantic, exception_logger, get_modelsname
from models.nerulforcastmodels import ex_Model, model_losss, brent_export_pdf
import datetime
import torch
@ -81,6 +81,8 @@ global_config.update({
# 数据库配置
'sqlitedb': sqlitedb,
'is_bdwd': is_bdwd,
'db_mysql': db_mysql,
'DEFAULT_CONFIG': DEFAULT_CONFIG,
})
@ -156,6 +158,75 @@ def push_market_value():
logger.error(f"推送数据失败: {e}")
def sql_inset_predict(global_config):
df = pd.read_csv(os.path.join(config.dataset, 'predict.csv'))
df['created_dt'] = pd.to_datetime(df['created_dt'])
df['ds'] = pd.to_datetime(df['ds'])
# 获取次月预测结果
next_month_df = df[df['ds'] == df['ds'].min()]
# 获取次二月预测结果
next_two_months_df = df.iloc[[1]]
# 获取次三月预测结果
next_three_months_df = df.iloc[[2]]
# 获取次四月预测结果
next_four_months_df = df[df['ds'] == df['ds'].max()]
wd = ['next_month', 'next_two_months',
'next_three_months', 'next_four_months']
model_name_list, model_id_name_dict = get_modelsname(df, global_config)
for df, w in zip([next_month_df, next_two_months_df, next_three_months_df, next_four_months_df], wd):
next_day_df = df[['ds', 'created_dt'] + model_name_list]
pydantic_results = convert_df_to_pydantic(
next_day_df, model_id_name_dict, w, global_config)
if pydantic_results:
insert_query = """
INSERT INTO v_tbl_predict_prediction_results (
prediction_date, bdwd,
feature_factor_frequency, strategy_id, predicted_price,
model_evaluation_id, model_id, tenant_code,
version_num, delete_flag, create_user, create_date, update_user, update_date
) VALUES (
%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s
)
ON DUPLICATE KEY UPDATE
feature_factor_frequency = VALUES(feature_factor_frequency),
predicted_price = VALUES(predicted_price),
model_evaluation_id = VALUES(model_evaluation_id),
tenant_code = VALUES(tenant_code),
version_num = VALUES(version_num),
delete_flag = VALUES(delete_flag),
create_user = VALUES(create_user),
create_date = VALUES(create_date),
update_user = VALUES(update_user),
update_date = VALUES(update_date)
"""
params_list = []
for result in pydantic_results:
params = (
result.prediction_date,
result.bdwd,
result.feature_factor_frequency,
result.strategy_id,
result.predicted_price,
result.model_evaluation_id,
result.model_id,
result.tenant_code,
result.version_num,
result.delete_flag,
result.create_user,
result.create_date,
result.update_user,
result.update_date
)
params_list.append(params)
affected_rows = config.db_mysql.execute_batch_insert(
insert_query, params_list)
print(f"成功插入 {affected_rows} 条记录")
config.db_mysql.close()
def predict_main():
"""
主预测函数用于从 ETA 获取数据处理数据训练模型并进行预测
@ -351,8 +422,6 @@ def predict_main():
sqlitedb.insert_data('most_model', (datetime.datetime.now().strftime(
'%Y-%m-%d %H:%M:%S'), most_common_model,), columns=('ds', 'most_common_model',))
if is_corr:
df = corr_feature(df=df)
@ -437,4 +506,5 @@ if __name__ == '__main__':
# logger.info(f'预测失败:{e}')
# continue
predict_main()
# predict_main()
sql_inset_predict(global_config)

View File

@ -2,7 +2,7 @@
from lib.dataread import *
from config_jingbo_zhoudu import *
from lib.tools import SendMail, exception_logger
from lib.tools import SendMail, convert_df_to_pydantic, exception_logger, get_modelsname
from models.nerulforcastmodels import ex_Model, model_losss, brent_export_pdf
import datetime
import torch
@ -80,6 +80,8 @@ global_config.update({
# 数据库配置
'sqlitedb': sqlitedb,
'is_bdwd': is_bdwd,
'db_mysql': db_mysql,
'DEFAULT_CONFIG': DEFAULT_CONFIG,
})
@ -139,6 +141,69 @@ def push_market_value():
logger.error(f"推送数据失败: {e}")
def sql_inset_predict(global_config):
df = pd.read_csv(os.path.join(config.dataset, 'predict.csv'))
df['created_dt'] = pd.to_datetime(df['created_dt'])
df['ds'] = pd.to_datetime(df['ds'])
# 获取次日预测结果
next_week_df = df[df['ds'] == df['ds'].min()]
# 获取本周预测结果
next_two_weeks_df = df[df['ds'] == df['ds'].max()]
wd = ['next_week', 'next_two_weeks']
model_name_list, model_id_name_dict = get_modelsname(df, global_config)
for df, w in zip([next_week_df, next_two_weeks_df], wd):
next_day_df = df[['ds', 'created_dt'] + model_name_list]
pydantic_results = convert_df_to_pydantic(
next_day_df, model_id_name_dict, w, global_config)
if pydantic_results:
insert_query = """
INSERT INTO v_tbl_predict_prediction_results (
prediction_date, bdwd,
feature_factor_frequency, strategy_id, predicted_price,
model_evaluation_id, model_id, tenant_code,
version_num, delete_flag, create_user, create_date, update_user, update_date
) VALUES (
%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s
)
ON DUPLICATE KEY UPDATE
feature_factor_frequency = VALUES(feature_factor_frequency),
predicted_price = VALUES(predicted_price),
model_evaluation_id = VALUES(model_evaluation_id),
tenant_code = VALUES(tenant_code),
version_num = VALUES(version_num),
delete_flag = VALUES(delete_flag),
create_user = VALUES(create_user),
create_date = VALUES(create_date),
update_user = VALUES(update_user),
update_date = VALUES(update_date)
"""
params_list = []
for result in pydantic_results:
params = (
result.prediction_date,
result.bdwd,
result.feature_factor_frequency,
result.strategy_id,
result.predicted_price,
result.model_evaluation_id,
result.model_id,
result.tenant_code,
result.version_num,
result.delete_flag,
result.create_user,
result.create_date,
result.update_user,
result.update_date
)
params_list.append(params)
affected_rows = config.db_mysql.execute_batch_insert(
insert_query, params_list)
print(f"成功插入 {affected_rows} 条记录")
config.db_mysql.close()
def predict_main():
"""
主预测函数用于从 ETA 获取数据处理数据训练模型并进行预测
@ -335,7 +400,6 @@ def predict_main():
sqlitedb.insert_data('most_model', (datetime.datetime.now().strftime(
'%Y-%m-%d %H:%M:%S'), most_common_model,), columns=('ds', 'most_common_model',))
if is_corr:
df = corr_feature(df=df)
@ -413,4 +477,5 @@ if __name__ == '__main__':
# logger.info(f'预测失败:{e}')
# continue
predict_main()
# predict_main()
sql_inset_predict(global_config)

View File

@ -241,6 +241,37 @@ def ex_Model(df, horizon, input_size, train_steps, val_check_steps, early_stop_p
if config.is_update_eta:
df_predict['ds'] = pd.to_datetime(df_predict['ds'])
# 按行遍历df_predict
IndexName = data['IndexName']
for index, row in df_predict.iterrows():
try:
yy = config.bdwdname[index]
except IndexError as e:
break
for m in modelsindex[index].keys():
if m not in df_predict.columns:
continue
if m == 'FEDformer':
continue
list = [{'Date': config.end_time, 'Value': round(row[m], 2)}]
data['DataList'] = list
data['IndexCode'] = modelsindex[index][m]
# data['IndexName'] = f'价格预测{m}模型'
data['IndexName'] = data['IndexName'].replace('xx', m)
data['IndexName'] = data['IndexName'].replace('yy', yy)
data['Remark'] = m
print('预测数据上传到eta:')
etadata.push_data(data)
# print(data)
data['IndexName'] = IndexName
# 把预测值上传到市场信息平台
if config.is_update_market:
'''
预测结果整理写入到数据表 v_tbl_predict_prediction_results
'''
df_predict['ds'] = pd.to_datetime(df_predict['ds'])
# 按行遍历df_predict
IndexName = data['IndexName']
for index, row in df_predict.iterrows():