Commit c161fbd6 authored by Yaowentong's avatar Yaowentong

fix

parent c8aad3b3
...@@ -93,10 +93,10 @@ plat_form_map = { ...@@ -93,10 +93,10 @@ plat_form_map = {
"WXYY": "文心一言", "WXYY": "文心一言",
"BDAI": "百度ai", "BDAI": "百度ai",
"DYAI": "抖音ai", "DYAI": "抖音ai",
"DOUBA": "豆包安卓版", "DOUBA": "豆包手机版",
"DPA": "deepseek安卓版", "DPA": "deepseek手机版",
"TXYBA": "腾讯元宝安卓版", "TXYBA": "腾讯元宝手机版",
"TYQWA": "通义千问安卓版", "TYQWA": "通义千问手机版",
} }
...@@ -144,8 +144,8 @@ def to_excel(req_data_list, file_name, output_dir): ...@@ -144,8 +144,8 @@ def to_excel(req_data_list, file_name, output_dir):
"WXYY": "文心一言", "WXYY": "文心一言",
"BDAI": "百度ai", "BDAI": "百度ai",
"DYAI": "抖音ai", "DYAI": "抖音ai",
"DOUBA": "豆包安卓版", "DOUBA": "豆包手机版",
"DPA": "deepseek安卓版", "DPA": "deepseek手机版",
} }
task_list = [] task_list = []
...@@ -184,6 +184,9 @@ def export_all_brand_excel(data_list, phone, begin): ...@@ -184,6 +184,9 @@ def export_all_brand_excel(data_list, phone, begin):
def get_req_id(phone, begin, end): def get_req_id(phone, begin, end):
print(phone)
print(begin)
print(end)
url = f"https://openapi.aidso.com/openapi/ywt/geoReqList?phone={phone}&begin={begin} 00:00:00&end={end} 23:59:59" url = f"https://openapi.aidso.com/openapi/ywt/geoReqList?phone={phone}&begin={begin} 00:00:00&end={end} 23:59:59"
payload = {} payload = {}
...@@ -508,7 +511,9 @@ def cha_report(phone_list, begin, end): ...@@ -508,7 +511,9 @@ def cha_report(phone_list, begin, end):
result.append(item) result.append(item)
for r in result: for r in result:
platforms = ["DB", "DOUBA", "TYQW", "TXYB"] # platforms = ["DB", "DOUBA", "TYQW", "TXYB"]
platforms = ["DB", "DOUBA", "TYQW", "TXYB", "DP", "DPA", "TXYBA", "TYQWA", "BDAI", "WXYY", "KIMI",
"DYAI"]
for p in platforms: for p in platforms:
t_data = get_url_top40(r.get('user_id'), r.get('brand_library_id'), de, de, p) t_data = get_url_top40(r.get('user_id'), r.get('brand_library_id'), de, de, p)
fields = ["site_name", "log_count", "quote_ratio_percent"] fields = ["site_name", "log_count", "quote_ratio_percent"]
...@@ -518,7 +523,41 @@ def cha_report(phone_list, begin, end): ...@@ -518,7 +523,41 @@ def cha_report(phone_list, begin, end):
writer.write_batch_rows(result) writer.write_batch_rows(result)
writer.close() writer.close()
def zhou_report_suggestion(phone, begin, end, brand_name,platform=None):
req_list = get_req_id(phone, begin, end)
req_time_map = {}
req_ids = []
for item in req_list:
print(item)
if item.get('brand_name') == brand_name:
req_id = item.get("req_id")
created_at = item.get("created_at")
req_ids.append(req_id)
req_time_map[req_id] = created_at
req_id_sql = ",".join([f"'{req_id}'" for req_id in req_ids])
if platform:
platform_list = ",".join([f"'{p}'" for p in platform])
query_sql = f"select * from geo_commit_task where reqId in ({req_id_sql}) and platform in ({platform_list}) "
else:
query_sql = f"select * from geo_commit_task where reqId in ({req_id_sql})"
query_list = bh_utils.query_data(query_sql)
result = []
if query_list:
for q in query_list:
r = {
"prompt": q.get('prompt'),
"platform": plat_form_map[q.get('platform')],
"suggestions": tos_utils.get_string_from_tos(f"geo/{q.get('taskId')}/{q.get('platform')}/suggestions.txt"),
"created_at": req_time_map[q.get('reqId')],
}
result.append(r)
all_file = f"/Users/yaowentong/Desktop/{brand_name}_all.txt"
with open(all_file, "w", encoding="utf-8") as f:
for item in result:
f.write(json.dumps(item, ensure_ascii=False) + "\n\n\n")
def qian_report(phone, begin, end, brand_name,platform=None): def qian_report(phone, begin, end, brand_name,platform=None):
req_list = get_req_id(phone, begin, end) req_list = get_req_id(phone, begin, end)
...@@ -533,7 +572,6 @@ def qian_report(phone, begin, end, brand_name,platform=None): ...@@ -533,7 +572,6 @@ def qian_report(phone, begin, end, brand_name,platform=None):
req_time_map[req_id] = created_at req_time_map[req_id] = created_at
req_id_sql = ",".join([f"'{req_id}'" for req_id in req_ids]) req_id_sql = ",".join([f"'{req_id}'" for req_id in req_ids])
if platform: if platform:
platform_list = ",".join([f"'{p}'" for p in platform]) platform_list = ",".join([f"'{p}'" for p in platform])
query_sql = f"select * from geo_commit_task where reqId in ({req_id_sql}) and platform in ({platform_list}) " query_sql = f"select * from geo_commit_task where reqId in ({req_id_sql}) and platform in ({platform_list}) "
...@@ -558,7 +596,7 @@ def qian_report(phone, begin, end, brand_name,platform=None): ...@@ -558,7 +596,7 @@ def qian_report(phone, begin, end, brand_name,platform=None):
for item in result: for item in result:
f.write(json.dumps(item, ensure_ascii=False) + "\n\n\n") f.write(json.dumps(item, ensure_ascii=False) + "\n\n\n")
remove_keys = {"url", "site_icon", "task_id", "quto_id"} remove_keys = {"site_icon", "task_id", "quto_id"}
data = [] data = []
with open(all_file, "r", encoding="utf-8") as f: with open(all_file, "r", encoding="utf-8") as f:
for line in f: for line in f:
...@@ -599,7 +637,7 @@ def zhou_report(phone, begin, end, brand_name): ...@@ -599,7 +637,7 @@ def zhou_report(phone, begin, end, brand_name):
created_at = item.get("created_at") created_at = item.get("created_at")
req_ids.append(req_id) req_ids.append(req_id)
req_time_map[req_id] = created_at req_time_map[req_id] = created_at
print(req_ids)
result = [] result = []
platform_data = get_platforms(brand_id, user_id, begin, end) platform_data = get_platforms(brand_id, user_id, begin, end)
...@@ -727,6 +765,18 @@ def zhou_report(phone, begin, end, brand_name): ...@@ -727,6 +765,18 @@ def zhou_report(phone, begin, end, brand_name):
"引用网站": quto_statistics.get('site_count'), "引用网站": quto_statistics.get('site_count'),
}) })
print(quto_statistics_result) print(quto_statistics_result)
return {
"brand_overview_result":brand_overview_result,
"result":result,
"all_word_result":all_word_result,
"overview_result":overview_result,
"platform_sentiment_result":platform_sentiment_result,
"url_top_40_result":url_top_40_result,
"site_category_result":site_category_result,
"positive_top_result":positive_top_result,
"negative_top_result":negative_top_result,
"quto_statistics_result":quto_statistics_result
}
def cha_report_video(videoId): def cha_report_video(videoId):
...@@ -898,10 +948,16 @@ if __name__ == "__main__": ...@@ -898,10 +948,16 @@ if __name__ == "__main__":
# AIDSO爱搜 这个品牌 # AIDSO爱搜 这个品牌
# 最近7天 # 最近7天
# 所有问题 # 所有问题
phone = 13810898434 phone = 15652410076
begin = '2026-05-13' begin = '2026-05-11'
end = '2026-05-20' end = '2026-06-02'
brand_name = 'AIDSO爱搜' brand_name = ['葆蝶家-第一批','葆蝶家-第二批','BV葆蝶家','葆蝶家']
platform = ['DB'] for b in brand_name:
dao_report(phone, begin, end, brand_name, platform) zhou_report(phone, begin, end, b)
qian_report(phone,begin,end,b)
# qian_report(phone,begin,end,b)
# brand_name = 'AIDSO爱搜'
# platform = ['DB']
# dao_report(phone, begin, end, brand_name, platform)
# qian_report(start, end, keyword_list, file_name) # qian_report(start, end, keyword_list, file_name)
\ No newline at end of file
import json import json
import secrets
from datetime import datetime
from flask import request, jsonify, Flask,Blueprint from flask import request, jsonify, Flask,Blueprint
import requests
from aidso_geo.core.feishu_snipaste import init_redis4, send_message, webhook_snipaste from aidso_geo.core.feishu_snipaste import init_redis4, send_message, webhook_snipaste
from aidso_geo.utils import bh_utils, tos_utils
feishu_app = Blueprint("feishu_app", __name__) feishu_app = Blueprint("feishu_app", __name__)
from loguru import logger from loguru import logger
...@@ -62,6 +61,104 @@ def webhook(): ...@@ -62,6 +61,104 @@ def webhook():
send_message("----格式错误需要用 ||| 分割每一个问题-----") send_message("----格式错误需要用 ||| 分割每一个问题-----")
return jsonify({"code": 0}) return jsonify({"code": 0})
if __name__ == '__main__': plat_form_map = {
print(r.scard('mt_third_task')) "DP": "deepseek网页版",
"DB": "豆包网页版",
"TXYB": "腾讯元宝",
"TYQW": "通义千问",
"KIMI": "kimi",
"WXYY": "文心一言",
"BDAI": "百度ai",
"DYAI": "抖音ai",
"DOUBA": "豆包手机版",
"DPA": "deepseek手机版",
}
def get_req_id(phone, begin, end):
url = f"https://openapi.aidso.com/openapi/ywt/geoReqList?phone={phone}&begin={begin} 00:00:00&end={end} 23:59:59"
payload = {}
headers = {
'Authorization': ''
}
response = requests.request("GET", url, headers=headers, data=payload)
return response.json().get('data')
def success(data=None, msg="success"):
return jsonify({
"code": 200,
"data": data,
"msg": msg
})
def fail(msg="fail", data=None):
return jsonify({
"code": 400,
"data": data,
"msg": msg
})
@feishu_app.route("/feishu/export", methods=["POST"])
def qian_report():
data = request.get_json() or {}
phone = data.get("phone")
begin = data.get("begin")
end = data.get("end")
brand_name = data.get("brand_name", [])
platform = data.get("platform") # 非必填,可能是 None
if not phone:
return fail("phone不能为空")
if not begin:
return fail("begin不能为空")
if not end:
return fail("end不能为空")
if not brand_name:
return fail("brand_name不能为空")
if not isinstance(brand_name, list):
return fail("brand_name必须是数组")
if platform and not isinstance(platform, list):
return fail("platform必须是数组")
req_list = get_req_id(phone, begin, end)
try:
req_time_map = {}
req_brand_map = {}
req_ids = []
for b in brand_name:
for item in req_list:
if item.get('brand_name') == b:
req_id = item.get("req_id")
created_at = item.get("created_at")
req_ids.append(req_id)
req_time_map[req_id] = created_at
req_brand_map[req_id] = b
req_id_sql = ",".join([f"'{req_id}'" for req_id in req_ids])
if platform:
platform_list = ",".join([f"'{p}'" for p in platform])
query_sql = f"select * from geo_commit_task where reqId in ({req_id_sql}) and platform in ({platform_list})"
else:
query_sql = f"select * from geo_commit_task where reqId in ({req_id_sql})"
query_list = bh_utils.query_data(query_sql)
result = []
if query_list:
for q in query_list:
r = {
"prompt": q.get('prompt'),
"platform": plat_form_map[q.get('platform')],
"content": tos_utils.get_string_from_tos(f"geo/{q.get('taskId')}/{q.get('platform')}/context.txt"),
"quote": tos_utils.get_string_from_tos(f"geo/{q.get('taskId')}/{q.get('platform')}/quote.txt"),
"created_at": req_time_map[q.get('reqId')],
"brand_name": req_brand_map[q.get('reqId')],
}
result.append(r)
return success(result)
except Exception as e:
return fail('fail')
...@@ -155,31 +155,6 @@ def task_commit(): ...@@ -155,31 +155,6 @@ def task_commit():
"status": f"缺少必要字段:{', '.join(missing_fields)}", "status": f"缺少必要字段:{', '.join(missing_fields)}",
"reqId": req_id "reqId": req_id
}) })
# logger.success(f"{req_id}--{platform}--{prompt}--{type}")
# ret = redis_client8.lpush("geo:task_commit:list",json.dumps(data, ensure_ascii=False))
# if ret and ret > 0:
# resp_cache_key = f"geo:task_check:resp:{req_id}"
# resp = {
# "code": 200,
# "msg": "success",
# "data": {
# "status": 'ING',
# "result": {}
# }
# }
# _cache_set_json(resp_cache_key, resp, 10)
# return jsonify({
# "code": 200,
# "msg": "任务已提交",
# "reqId": req_id
# })
#
# else:
# return jsonify({
# "code": 400,
# "msg": "提交失败",
# "reqId": req_id
# })
if type == 'stream': if type == 'stream':
insert_ok = commit_task(data, 'ING') insert_ok = commit_task(data, 'ING')
ok = submit_background_task(main_process, data) ok = submit_background_task(main_process, data)
...@@ -211,13 +186,6 @@ def task_commit(): ...@@ -211,13 +186,6 @@ def task_commit():
"msg": "任务已提交", "msg": "任务已提交",
"reqId": req_id "reqId": req_id
}) })
# ok = submit_background_task(main_process, data)
# if ok:
# return jsonify({
# "code": 200,
# "msg": 'success',
# "reqId": req_id
# })
return jsonify({ return jsonify({
"code": 503, "code": 503,
......
...@@ -1197,6 +1197,7 @@ def attach_favorability_score(score_list, word_list): ...@@ -1197,6 +1197,7 @@ def attach_favorability_score(score_list, word_list):
def attach_favorability_brand_score(score_list, word_list): def attach_favorability_brand_score(score_list, word_list):
# 先构建品牌分数字典 # 先构建品牌分数字典
score_map = { score_map = {
item.get("brand_name"): item.get("favorability_score", 0) item.get("brand_name"): item.get("favorability_score", 0)
for item in score_list for item in score_list
...@@ -1435,7 +1436,6 @@ def result_v2(response_content, data): ...@@ -1435,7 +1436,6 @@ def result_v2(response_content, data):
product_map_list_with_rank, all_product_list_with_rank = merge_com_and_ai_by_subset(product_map_list_with_rank, product_map_list_with_rank, all_product_list_with_rank = merge_com_and_ai_by_subset(product_map_list_with_rank,
all_product_list_with_rank) all_product_list_with_rank)
# 获取产品词的分 # 获取产品词的分
product_map_list_with_rank = attach_favorability_brand_score(all_product_sentiment_and_mentions_score, product_map_list_with_rank = attach_favorability_brand_score(all_product_sentiment_and_mentions_score,
...@@ -1508,14 +1508,21 @@ def result_v2(response_content, data): ...@@ -1508,14 +1508,21 @@ def result_v2(response_content, data):
"totalCompetitorCount": com_count_sum, "totalCompetitorCount": com_count_sum,
"mentionsList": mentionsList "mentionsList": mentionsList
} }
# 修复里外不一致
result["productVos"] = rebuild_count_and_rank(result.get("productVos") or [])
# 情感分
pos_count = len(mentionsList[0].get("positiveMentions", []) or [])
neg_count = len(mentionsList[0].get("negativeMentions", []) or [])
total = pos_count + neg_count
sentimentScore = int((pos_count / total) * 100) if total > 0 else 50
result['sentimentScore'] = sentimentScore
# 品牌情感倾向 # 品牌情感倾向
if brand_words_list_with_rank: if brand_words_list_with_rank:
sentiment_result = get_first_sentiment(brand_words_list_with_rank) sentiment_result = get_first_sentiment(brand_words_list_with_rank)
if sentiment_result: if sentiment_result:
result['sentiment'] = sentiment_result result['sentiment'] = sentiment_result
score_result = get_first_score(brand_words_list_with_rank)
if score_result:
result['sentimentScore'] = score_result
# ---------------------------------结果整合----------------------------- # ---------------------------------结果整合-----------------------------
...@@ -1639,7 +1646,9 @@ def main_process(data): ...@@ -1639,7 +1646,9 @@ def main_process(data):
req_id = data.get('reqId') req_id = data.get('reqId')
prompt = data.get('prompt') prompt = data.get('prompt')
data["prompt"] = prompt.strip() data["prompt"] = prompt.strip()
data["search_enabled"] = data.get('searchEnabled', '1')
if data.get('thinkingEnabled'):
data["thinking_enabled"] = data.get('thinkingEnabled')
check = bh_utils.query_data( check = bh_utils.query_data(
f"select status from geo_commit_task where taskId ='{task_id}' and platform = '{platform}'") f"select status from geo_commit_task where taskId ='{task_id}' and platform = '{platform}'")
...@@ -1829,8 +1838,8 @@ if __name__ == '__main__': ...@@ -1829,8 +1838,8 @@ if __name__ == '__main__':
from concurrent.futures import ThreadPoolExecutor, as_completed from concurrent.futures import ThreadPoolExecutor, as_completed
# #
# begin = '2026-05-22' # begin = '2026-05-23'
# end = '2026-05-22' # end = '2026-05-29'
# req_list = get_req_id(15100000026,begin,end) # req_list = get_req_id(15100000026,begin,end)
# #
# req_ids = [] # req_ids = []
...@@ -1838,14 +1847,15 @@ if __name__ == '__main__': ...@@ -1838,14 +1847,15 @@ if __name__ == '__main__':
# req_id = item.get("req_id") # req_id = item.get("req_id")
# req_ids.append(req_id) # req_ids.append(req_id)
# req_id_sql = ",".join([f"'{req_id}'" for req_id in req_ids]) # req_id_sql = ",".join([f"'{req_id}'" for req_id in req_ids])
query_sql = f"select * from geo_commit_task where type = 'stream_batch' and status != 'SUCCESS'"
data_list = bh_utils.query_data(query_sql)
# print(len(data_list))
# #
# query_sql = f"select * from geo_commit_task where reqId in ({req_id_sql}) " # data_list = bh_utils.query_data(f"select * from geo_commit_task where status !='SUCCESS' and type = 'stream_batch' ")
# data_list = bh_utils.query_data(query_sql) # # #
# # # #
data_list = bh_utils.query_data(f"select * from geo_commit_task where reqId='38a293ed-407c-477a-a7b9-2a22d02e6de7' ") # # # # #
# #
# #
# # # #
def handle_item(i): def handle_item(i):
if i.get('comWordsMap'): if i.get('comWordsMap'):
i['comWordsMap'] = json.loads(i.get('comWordsMap')) i['comWordsMap'] = json.loads(i.get('comWordsMap'))
......
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