Commit 0d0ee9cb authored by wenwen.tang's avatar wenwen.tang 😕

更新config-mdis_prr3.yml数据库连接配置与投组元数据,升级lxml版本要求,web端新增推荐概览功能

parent 3234e299
...@@ -30,10 +30,10 @@ py-jftech: ...@@ -30,10 +30,10 @@ py-jftech:
level: ${LOG_LEVEL:INFO} level: ${LOG_LEVEL:INFO}
handlers: ${LOG_HANDLERS:[ console ]} handlers: ${LOG_HANDLERS:[ console ]}
database: database:
host: ${MYSQL_HOST:192.168.68.85} host: ${MYSQL_HOST:192.168.68.121}
port: ${MYSQL_PORT:3306} port: ${MYSQL_PORT:3306}
user: ${MYSQL_USER:root} user: ${MYSQL_USER:root}
password: ${MYSQL_PWD:changeit} password: ${MYSQL_PWD:12345678}
dbname: ${MYSQL_DBNAME:mdis_prr3} # mdis_prr3 dbname: ${MYSQL_DBNAME:mdis_prr3} # mdis_prr3
injectable: injectable:
names: names:
...@@ -262,6 +262,9 @@ web: ...@@ -262,6 +262,9 @@ web:
guid: AB088E61-FAB1-4466-B6AD-6E8AE253391E guid: AB088E61-FAB1-4466-B6AD-6E8AE253391E
port: 8080 port: 8080
save-path: ${EXPORT_PATH:json} save-path: ${EXPORT_PATH:json}
name: "科技帶路投組"
feature: "科技為主 x 其他產業為輔 x 風險調控"
tag: "卡位時機"
...@@ -3,7 +3,7 @@ charset-normalizer==2.1.1 ...@@ -3,7 +3,7 @@ charset-normalizer==2.1.1
empyrical==0.5.5 empyrical==0.5.5
et-xmlfile==1.1.0 et-xmlfile==1.1.0
idna==3.4 idna==3.4
lxml==4.9.0 lxml>=4.9.0
numpy==1.23.4 numpy==1.23.4
openpyxl==3.0.10 openpyxl==3.0.10
pandas==1.5.1 pandas==1.5.1
......
...@@ -82,6 +82,17 @@ def load_report(max_date=None, min_date=None, combo: RoboReportor = None): ...@@ -82,6 +82,17 @@ def load_report(max_date=None, min_date=None, combo: RoboReportor = None):
return cp, roi, risk return cp, roi, risk
def build_overview(asset_weights: dict):
overview = {
"name": get_config('web.name'),
"feature": get_config('web.feature'),
"tag": get_config('web.tag'),
"month": dt.date.today().strftime("%m月"),
"setting": [{"name": k, "rate": v} for k, v in asset_weights.items()]
}
return overview
@app.get("/franklin/recommend") @app.get("/franklin/recommend")
async def recommend(): async def recommend():
sig = get_today_rec() sig = get_today_rec()
...@@ -111,16 +122,27 @@ async def recommend(): ...@@ -111,16 +122,27 @@ async def recommend():
sum(weight * 100 for key, weight in funds.items() if id_ticker_map[key]['assetType'] == 'STOCK')) sum(weight * 100 for key, weight in funds.items() if id_ticker_map[key]['assetType'] == 'STOCK'))
data["p_note"] = f"{stock_weight}:{100 - stock_weight}" data["p_note"] = f"{stock_weight}:{100 - stock_weight}"
portfolios['data'] = data portfolios['data'] = data
# funds根据assetType分类,计算比重
asset_weights = {}
for key, weight in funds.items():
asset_type = id_ticker_map[key]['assetType']
if asset_type not in asset_weights:
asset_weights[asset_type] = 0
asset_weights[asset_type] += weight * 100
overview = build_overview(asset_weights)
portfolios['overview'] = overview
rec_list.append(portfolios) rec_list.append(portfolios)
return rec_list return rec_list
else: else:
return {'msg': '当日投组未产生,待10:30后获取'} return {'msg': '当日投组未产生,待10:30后获取'}
@app.get("/franklin/recommend/save") @app.get("/franklin/recommend/save")
async def recommend_save(): async def recommend_save():
await save_json() await save_json()
return {'msg': '保存成功'} return {'msg': '保存成功'}
# 其他异常处理程序 # 其他异常处理程序
@app.exception_handler(Exception) @app.exception_handler(Exception)
async def general_exception_handler(request: Request, exc: Exception): async def general_exception_handler(request: Request, exc: Exception):
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment