From f10d04e661cd9ecfe726167e7fa117b840a650eb Mon Sep 17 00:00:00 2001 From: workpc Date: Fri, 8 Nov 2024 11:18:40 +0800 Subject: [PATCH] =?UTF-8?q?10.7=E5=8F=91=E7=89=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- config_jingbo.py | 123 +++++++++++++++--------------- jbsh_yuanyou线上数据库10.7备份.db | Bin 0 -> 69632 bytes main.py | 53 ++++++------- 原油预测定时任务,请勿关闭.py | 3 +- 4 files changed, 88 insertions(+), 91 deletions(-) create mode 100644 jbsh_yuanyou线上数据库10.7备份.db diff --git a/config_jingbo.py b/config_jingbo.py index 2f45bcc..5b6111b 100644 --- a/config_jingbo.py +++ b/config_jingbo.py @@ -86,50 +86,13 @@ ClassifyId = 1214 ### 报告上传配置 # 变量定义--线上环境 -# 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" - -# login_data = { -# "data": { -# "account": "api_dev", -# "password": "ZTEwYWRjMzk0OWJhNTlhYmJlNTZlMDU3ZjIwZjg4M2U=", -# "tenantHashCode": "8a4577dbd919675758d57999a1e891fe", -# "terminal": "API" -# }, -# "funcModule": "API", -# "funcOperation": "获取token" -# } - - - -# upload_data = { -# "funcModule":'研究报告信息', -# "funcOperation":'上传原油价格预测报告', -# "data":{ -# "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" # 商品分类 -# } -# } - - - -# # 变量定义--测试环境 -login_pushreport_url = "http://192.168.100.53:8080/jingbo-dev/api/server/login" -upload_url = "http://192.168.100.53:8080/jingbo-dev/api/analysis/reportInfo/researchUploadReportSave" -# upload_url = "http://192.168.100.109:8080/jingbo/api/analysis/reportInfo/researchUploadReportSave" # zhaoqiwei - +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" login_data = { "data": { - "account": "api_test", - "password": "MmVmNzNlOWI0MmY0ZDdjZGUwNzE3ZjFiMDJiZDZjZWU=", + "account": "api_dev", + "password": "ZTEwYWRjMzk0OWJhNTlhYmJlNTZlMDU3ZjIwZjg4M2U=", "tenantHashCode": "8a4577dbd919675758d57999a1e891fe", "terminal": "API" }, @@ -137,48 +100,85 @@ login_data = { "funcOperation": "获取token" } + + upload_data = { "funcModule":'研究报告信息', "funcOperation":'上传原油价格预测报告', "data":{ - "ownerAccount":'arui', #报告所属用户账号 + "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" # 商品分类 } } -### 线上开关 -# is_train = True # 是否训练 -# is_debug = False # 是否调试 -# is_eta = True # 是否使用eta接口 -# is_timefurture = True # 是否使用时间特征 -# is_fivemodels = False # 是否使用之前保存的最佳的5个模型 -# is_edbcode = False # 特征使用edbcoding列表中的 -# is_edbnamelist = False # 自定义特征,对应上面的edbnamelist -# is_update_eta = True # 预测结果上传到eta -# is_update_report = True # 是否上传报告 -### 开关 +# # 变量定义--测试环境 +# login_pushreport_url = "http://192.168.100.53:8080/jingbo-dev/api/server/login" +# upload_url = "http://192.168.100.53:8080/jingbo-dev/api/analysis/reportInfo/researchUploadReportSave" +# # upload_url = "http://192.168.100.109:8080/jingbo/api/analysis/reportInfo/researchUploadReportSave" # zhaoqiwei + + +# login_data = { +# "data": { +# "account": "api_test", +# "password": "MmVmNzNlOWI0MmY0ZDdjZGUwNzE3ZjFiMDJiZDZjZWU=", +# "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" # 商品分类 +# } +# } + + +### 线上开关 is_train = True # 是否训练 is_debug = False # 是否调试 -is_eta = False # 是否使用eta接口 +is_eta = True # 是否使用eta接口 is_timefurture = True # 是否使用时间特征 is_fivemodels = False # 是否使用之前保存的最佳的5个模型 is_edbcode = False # 特征使用edbcoding列表中的 is_edbnamelist = False # 自定义特征,对应上面的edbnamelist -is_update_eta = False # 预测结果上传到eta -is_update_report = False # 是否上传报告 +is_update_eta = True # 预测结果上传到eta +is_update_report = True # 是否上传报告 + +### 开关 +# is_train = True # 是否训练 +# is_debug = False # 是否调试 +# is_eta = False # 是否使用eta接口 +# is_timefurture = True # 是否使用时间特征 +# is_fivemodels = False # 是否使用之前保存的最佳的5个模型 +# is_edbcode = False # 特征使用edbcoding列表中的 +# is_edbnamelist = False # 自定义特征,对应上面的edbnamelist +# is_update_eta = False # 预测结果上传到eta +# is_update_report = False # 是否上传报告 # 数据截取日期 -end_time = '2024-10-28' # 数据截取日期 +end_time = '' # 数据截取日期 delweekenday = True is_corr = False # 特征是否参与滞后领先提升相关系数 add_kdj = False # 是否添加kdj指标 @@ -212,7 +212,8 @@ db_name = os.path.join(dataset,'jbsh_yuanyou.db') settings = f'{input_size}-{horizon}-{train_steps}--{k}-{data_set}-{y}' # 获取日期时间 -now = datetime.datetime.now().strftime('%Y%m%d%H%M%S') # 获取当前日期时间 +# now = datetime.datetime.now().strftime('%Y%m%d%H%M%S') # 获取当前日期时间 +now = datetime.datetime.now().strftime('%Y-%m-%d') # 获取当前日期时间 reportname = f'Brent原油大模型预测--{now}.pdf' # 报告文件名 reportname = reportname.replace(':', '-') # 替换冒号 diff --git a/jbsh_yuanyou线上数据库10.7备份.db b/jbsh_yuanyou线上数据库10.7备份.db new file mode 100644 index 0000000000000000000000000000000000000000..a8e89ff821fafebe77078b9219a970884d086274 GIT binary patch literal 69632 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 P7