diff --git a/aa.py b/aa.py index e71435f..d0712a3 100644 --- a/aa.py +++ b/aa.py @@ -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')) - # 判断是不是工作日且 是17:00 7:00 才执行 - 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) \ No newline at end of file + +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) diff --git a/aisenzhecode/沥青/沥青定性模型每日推送-ytj.ipynb b/aisenzhecode/沥青/沥青定性模型每日推送-ytj.ipynb index 9482964..be989d0 100644 --- a/aisenzhecode/沥青/沥青定性模型每日推送-ytj.ipynb +++ b/aisenzhecode/沥青/沥青定性模型每日推送-ytj.ipynb @@ -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, diff --git a/aisenzhecode/沥青/沥青定量价格预测每日推送-ytj.ipynb b/aisenzhecode/沥青/沥青定量价格预测每日推送-ytj.ipynb index ad9c10a..c8ef396 100644 --- a/aisenzhecode/沥青/沥青定量价格预测每日推送-ytj.ipynb +++ b/aisenzhecode/沥青/沥青定量价格预测每日推送-ytj.ipynb @@ -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, diff --git a/aisenzhecode/沥青/沥青数据项.xlsx b/aisenzhecode/沥青/沥青数据项.xlsx index d4401ff..7c619f5 100644 Binary files a/aisenzhecode/沥青/沥青数据项.xlsx and b/aisenzhecode/沥青/沥青数据项.xlsx differ diff --git a/config_jingbo.py b/config_jingbo.py index 1713032..d99b7a4 100644 --- a/config_jingbo.py +++ b/config_jingbo.py @@ -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 # 是否调试 diff --git a/config_jingbo_yuedu.py b/config_jingbo_yuedu.py index 713b0c4..4712185 100644 --- a/config_jingbo_yuedu.py +++ b/config_jingbo_yuedu.py @@ -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 # 是否调试 diff --git a/config_jingbo_zhoudu.py b/config_jingbo_zhoudu.py index ab8e8c7..304130e 100644 --- a/config_jingbo_zhoudu.py +++ b/config_jingbo_zhoudu.py @@ -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 # 是否调试 diff --git a/lib/dataread.py b/lib/dataread.py index 4177901..f04195f 100644 --- a/lib/dataread.py +++ b/lib/dataread.py @@ -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数据 diff --git a/lib/pydantic_models.py b/lib/pydantic_models.py new file mode 100644 index 0000000..17c56b1 --- /dev/null +++ b/lib/pydantic_models.py @@ -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 diff --git a/lib/tools.py b/lib/tools.py index 97021df..2a41232 100644 --- a/lib/tools.py +++ b/lib/tools.py @@ -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.') diff --git a/main_yuanyou.py b/main_yuanyou.py index d98512d..ab150d5 100644 --- a/main_yuanyou.py +++ b/main_yuanyou.py @@ -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) diff --git a/main_yuanyou_yuedu.py b/main_yuanyou_yuedu.py index 43be498..1702fa1 100644 --- a/main_yuanyou_yuedu.py +++ b/main_yuanyou_yuedu.py @@ -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) diff --git a/main_yuanyou_zhoudu.py b/main_yuanyou_zhoudu.py index 4160a3b..2a56853 100644 --- a/main_yuanyou_zhoudu.py +++ b/main_yuanyou_zhoudu.py @@ -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) diff --git a/models/nerulforcastmodels.py b/models/nerulforcastmodels.py index 36b17bc..23bbc48 100644 --- a/models/nerulforcastmodels.py +++ b/models/nerulforcastmodels.py @@ -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():