|
|
@@ -41,6 +41,12 @@ class ReportRequest(BaseModel):
|
|
|
city_uuid: str # 城市id
|
|
|
product_code: str # 卷烟编码
|
|
|
|
|
|
+class EvalReportRequest(BaseModel):
|
|
|
+ city_uuid: str # 城市id
|
|
|
+ product_code: str # 卷烟编码
|
|
|
+ start_time: str # 开始投放时间
|
|
|
+ end_time: str # 结束投放时间
|
|
|
+
|
|
|
@app.post("/brandcultivation/api/v1/recommend")
|
|
|
async def recommend(request: RecommendRequest, backgroundTasks: BackgroundTasks):
|
|
|
gbdtlr_model_path = os.path.join("./models/rank/weights", request.city_uuid, "gbdtlr_model.pkl")
|
|
|
@@ -102,11 +108,11 @@ def upload_file(reports_dir):
|
|
|
}
|
|
|
# 设置Cookie
|
|
|
cookies = {
|
|
|
- "ecp_token": "ZXlKamIyUmxJam9pTURZMVltUXpZbUV5T0dWaFl6ZzRPREJqTkRjNU5ERXpaV0k0T1dRd1pERWlMQ0p6WTI5d1pTSTZJbkJ5YjNSbFkzUmxaQ0lzSW1Oc2FXVnVkQ0k2SW1Oc2FXVnVkRjlzYjI1bmFta2lmUT09",
|
|
|
- "acw_tc": "0a03176c17452016143048775e73c8e9556c4c3ee2dbc80f405a9314a5d0e5",
|
|
|
- "cna": "09T8H5zH8SoCASeqHG9RyLbu",
|
|
|
+ "expires_in": "10800000",
|
|
|
+ "ecp_token": "ZXlKamIyUmxJam9pT1dZNFltRTNOVGhrTW1WbVpUYzRaR05oWkRZME5ERTRPREU1TkRObU9EY2lMQ0p6WTI5d1pTSTZJbkJ5YjNSbFkzUmxaQ0lzSW1Oc2FXVnVkQ0k2SW1Oc2FXVnVkRjlzYjI1bmFta2lmUT09",
|
|
|
+ "acw_tc": "0a067c4317466919842786603e2653311180a2a4fa0fd05acb99cf0458b890",
|
|
|
"isg": "BDAwNyXyI9cQD__-0PkIodjTAfiCeRTD-vUtYyqmIw3d5bGP0Y0nUayWOe2F3syb",
|
|
|
- "dd-ztna-token": "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOiIwNTAwMzQzMDM4MjYxNDMwOTQiLCJjb3JwSWQiOiJkaW5nYzc2YTJhMzdiMjRhODYwYTRhYzVkNjk4MDg2NGQzMzUiLCJkZXB0SWRzIjoiW1s4Mzk0NzIxNjAsODM2MjQ1MTUzLDFdXSIsInJvbGVJZHMiOiJbMjEwNDk3MDY1OF0iLCJ1bmlvbklkIjoiVXFyYTB4U0VQcWNxdFNhQTFqSzRzZ2lFaUUiLCJleHAiOjE3NDU4MDY0MjIsImlhdCI6MTc0NTIwMTYyMn0.S0K3UWF0fBP5fF6TQaUkxe8I7piSQjrXqG3DdviqTzdO9Y0J7wsydcRvfp-OuHUkXbY92diIBGRHBr5Bb0eYgmCZ946Q8CHk12WXWvJmMDPrQ4i2C1J7W7uzUuPYJiWQLGQd40iCxNKfZIGq2ML-6r1i_k0iA7L_f6En1e9b5gLIs0GaluUwhCTTpAHBsmb-FquQER2Um9igARbMT6aaNrJzQbcPPWntQ3Pz_65PgjtTUMiFtBZW-YeAm2iB9JtYo_SJUsoX0d_oYo-6D4IfgZtkYKZZxbLj5rWnhoaJHm5acELAO8otQNZYQra0PfRIaKTT1vNkr1L5rShIxZk3yQ"
|
|
|
+ "dd-ztna-token": "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOiIwNTAwMzQzMDM4MjYxNDMwOTQiLCJjb3JwSWQiOiJkaW5nYzc2YTJhMzdiMjRhODYwYTRhYzVkNjk4MDg2NGQzMzUiLCJkZXB0SWRzIjoiW1s4Mzk0NzIxNjAsODM2MjQ1MTUzLDFdXSIsInJvbGVJZHMiOiJbMjEwNDk3MDY1OF0iLCJ1bmlvbklkIjoiVXFyYTB4U0VQcWNxdFNhQTFqSzRzZ2lFaUUiLCJleHAiOjE3NDcxODQ3MjksImlhdCI6MTc0NjU3OTkyOX0.dfv612-LwnIdoKL2G73gg7LYy8SBmvr3Zaan97Q5wGUbEFdWw0JUqOQQ1jdeom_Nd9FNCHlkZM32DvwyUrNnvbg1QQy2JeYEpAgysG4h0MT_OghE6-xGVQBIkg72GPTo_cvdMYG9SMfaCo5H-73zFfwMFASFoXCDoIPha6NioIskOJMmvQVsDkHtRXYh_gv0XaJxSWirDWhKC9vxPGaIwDff8doHwPdi9uO-tO9LFy9RXdyIsBXWem31rBSD3D6FmqZLZjOOZhCKMym1VenfIKC10Oa1zm8-Y8bGyMHG0LO_68AJstKYT4alJoBVDHXpMp3zvSXXQB6da_fIthQD4A"
|
|
|
}
|
|
|
files_id = {}
|
|
|
for file in files:
|
|
|
@@ -169,7 +175,58 @@ async def get_file_id(request: ReportRequest):
|
|
|
)
|
|
|
|
|
|
return {"code": 200, "msg": "success", "data": {"reportInfo": request_data}}
|
|
|
-
|
|
|
+
|
|
|
+@app.post("/brandcultivation/api/v1/eval_report")
|
|
|
+async def get_eval_report(request: EvalReportRequest):
|
|
|
+ """获取验证报告"""
|
|
|
+ reports_dir = os.path.join('./data/reports', request.city_uuid, request.product_code)
|
|
|
+ # 首先生成验证报告
|
|
|
+ report_util = ReportUtils(request.city_uuid, request.product_code)
|
|
|
+ report_util.generate_eval_data(request.start_time, request.end_time)
|
|
|
+
|
|
|
+ # 其次上传验证报告到阿里云
|
|
|
+ base_url = cfgs["aliyun"]["upload_url"]
|
|
|
+
|
|
|
+ headers = {
|
|
|
+ "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36",
|
|
|
+ "Accept": "*/*",
|
|
|
+ }
|
|
|
+
|
|
|
+ cookies = {
|
|
|
+ "expires_in": "10800000",
|
|
|
+ "ecp_token": "ZXlKamIyUmxJam9pT1dZNFltRTNOVGhrTW1WbVpUYzRaR05oWkRZME5ERTRPREU1TkRObU9EY2lMQ0p6WTI5d1pTSTZJbkJ5YjNSbFkzUmxaQ0lzSW1Oc2FXVnVkQ0k2SW1Oc2FXVnVkRjlzYjI1bmFta2lmUT09",
|
|
|
+ "acw_tc": "0a067c4317466919842786603e2653311180a2a4fa0fd05acb99cf0458b890",
|
|
|
+ "isg": "BDAwNyXyI9cQD__-0PkIodjTAfiCeRTD-vUtYyqmIw3d5bGP0Y0nUayWOe2F3syb",
|
|
|
+ "dd-ztna-token": "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOiIwNTAwMzQzMDM4MjYxNDMwOTQiLCJjb3JwSWQiOiJkaW5nYzc2YTJhMzdiMjRhODYwYTRhYzVkNjk4MDg2NGQzMzUiLCJkZXB0SWRzIjoiW1s4Mzk0NzIxNjAsODM2MjQ1MTUzLDFdXSIsInJvbGVJZHMiOiJbMjEwNDk3MDY1OF0iLCJ1bmlvbklkIjoiVXFyYTB4U0VQcWNxdFNhQTFqSzRzZ2lFaUUiLCJleHAiOjE3NDcxODQ3MjksImlhdCI6MTc0NjU3OTkyOX0.dfv612-LwnIdoKL2G73gg7LYy8SBmvr3Zaan97Q5wGUbEFdWw0JUqOQQ1jdeom_Nd9FNCHlkZM32DvwyUrNnvbg1QQy2JeYEpAgysG4h0MT_OghE6-xGVQBIkg72GPTo_cvdMYG9SMfaCo5H-73zFfwMFASFoXCDoIPha6NioIskOJMmvQVsDkHtRXYh_gv0XaJxSWirDWhKC9vxPGaIwDff8doHwPdi9uO-tO9LFy9RXdyIsBXWem31rBSD3D6FmqZLZjOOZhCKMym1VenfIKC10Oa1zm8-Y8bGyMHG0LO_68AJstKYT4alJoBVDHXpMp3zvSXXQB6da_fIthQD4A"
|
|
|
+ }
|
|
|
+
|
|
|
+ eval_file_path = os.path.join(reports_dir, "投放验证报告.xlsx")
|
|
|
+ try:
|
|
|
+ with open(eval_file_path, 'rb') as f:
|
|
|
+ files = {'file': (os.path.basename(eval_file_path), f)}
|
|
|
+
|
|
|
+ response = requests.post(
|
|
|
+ base_url,
|
|
|
+ headers=headers,
|
|
|
+ files=files,
|
|
|
+ verify=True
|
|
|
+ )
|
|
|
+
|
|
|
+ if response.json()["success"]:
|
|
|
+ file_id = response.json()["data"]["file_info"]["fileid"]
|
|
|
+ return {"code": 200, "msg": "success", "data": {"reportInfo": {"id": 1, "filename": "投放验证报告", "file_id": file_id}}}
|
|
|
+
|
|
|
+ else:
|
|
|
+ raise HTTPException(
|
|
|
+ status_code=status.HTTP_422_UNPROCESSABLE_ENTITY,
|
|
|
+ detail="reports upload failed"
|
|
|
+ )
|
|
|
+
|
|
|
+ except requests.exceptions.RequestException as e:
|
|
|
+ print("请求出错:", e)
|
|
|
+ except Exception as e:
|
|
|
+ print("发生错误:", e)
|
|
|
+ # 最后将file_id返回给前端
|
|
|
|
|
|
if __name__ == "__main__":
|
|
|
uvicorn.run(app, host="0.0.0.0", port=7960)
|