|
@@ -1,4 +1,3 @@
|
|
|
-import configparser
|
|
|
|
|
import re
|
|
import re
|
|
|
from fastapi import APIRouter , UploadFile
|
|
from fastapi import APIRouter , UploadFile
|
|
|
from pydantic import BaseModel,Field
|
|
from pydantic import BaseModel,Field
|
|
@@ -15,12 +14,12 @@ from fastapi import BackgroundTasks
|
|
|
from typing import Optional
|
|
from typing import Optional
|
|
|
import json
|
|
import json
|
|
|
from agent.logger import logger
|
|
from agent.logger import logger
|
|
|
|
|
+from agent.core.config import get_config_path
|
|
|
|
|
+config = get_config_path()
|
|
|
|
|
+TOP_K = config['app']['top_k']
|
|
|
|
|
|
|
|
router = APIRouter(prefix="/v1", tags=["AI Tagging"])
|
|
router = APIRouter(prefix="/v1", tags=["AI Tagging"])
|
|
|
|
|
|
|
|
-config = configparser.ConfigParser()
|
|
|
|
|
-config.read('config.ini')
|
|
|
|
|
-TOP_K = config['app']['top_k']
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class TaggingRequest(BaseModel):
|
|
class TaggingRequest(BaseModel):
|
|
@@ -35,7 +34,7 @@ async def execute_reg(log_id:str,tag_category_id:str,phrase: str)-> list:
|
|
|
sql = f"""select
|
|
sql = f"""select
|
|
|
tti.id,
|
|
tti.id,
|
|
|
tti.reg
|
|
tti.reg
|
|
|
- from ai_tagging.aitag_tag_info tti left join ai_tagging.aitag_tag_category ttc
|
|
|
|
|
|
|
+ from aitag_tag_info tti left join aitag_tag_category ttc
|
|
|
on tti.category_id = ttc.id
|
|
on tti.category_id = ttc.id
|
|
|
where ttc.is_delete=0 and tti.is_delete=0 and ttc.state = 0 and tti.state = 0 and tti.tag_level = ttc.visibility_level
|
|
where ttc.is_delete=0 and tti.is_delete=0 and ttc.state = 0 and tti.state = 0 and tti.tag_level = ttc.visibility_level
|
|
|
"""
|
|
"""
|
|
@@ -49,7 +48,9 @@ async def execute_reg(log_id:str,tag_category_id:str,phrase: str)-> list:
|
|
|
reg = label[1]
|
|
reg = label[1]
|
|
|
if reg is not None:
|
|
if reg is not None:
|
|
|
pattern = re.compile(reg, re.VERBOSE)
|
|
pattern = re.compile(reg, re.VERBOSE)
|
|
|
|
|
+ logger.info(f"Executing regex for label_id {label[0]}: {reg}")
|
|
|
if pattern.match(phrase):
|
|
if pattern.match(phrase):
|
|
|
|
|
+ logger.info(f"Executing regex for label_id {label[0]}: {reg} true")
|
|
|
result.append(label[0])
|
|
result.append(label[0])
|
|
|
else:
|
|
else:
|
|
|
result.append(label[0])
|
|
result.append(label[0])
|
|
@@ -57,7 +58,7 @@ async def execute_reg(log_id:str,tag_category_id:str,phrase: str)-> list:
|
|
|
logger.error(f"Regex execution failed: {e}")
|
|
logger.error(f"Regex execution failed: {e}")
|
|
|
logger.info(f"Regex filtering candidates: {result}")
|
|
logger.info(f"Regex filtering candidates: {result}")
|
|
|
dao.execute(
|
|
dao.execute(
|
|
|
- """UPDATE ai_tagging.aitag_tag_log SET reg_result = %s WHERE id = %s""",
|
|
|
|
|
|
|
+ """UPDATE aitag_tag_log SET reg_result = %s WHERE id = %s""",
|
|
|
(str(result), log_id)
|
|
(str(result), log_id)
|
|
|
)
|
|
)
|
|
|
logger.info(f"Updated reg_result for log_id {id}")
|
|
logger.info(f"Updated reg_result for log_id {id}")
|
|
@@ -74,20 +75,20 @@ def init_tag_log(request: TaggingRequest):
|
|
|
id = uuid.uuid4().hex
|
|
id = uuid.uuid4().hex
|
|
|
# 保证business_attr的唯一性,如果已经存在相同business_attr且状态为0(处理中)的记录,则将is_delete设为1(已删除),然后插入新记录
|
|
# 保证business_attr的唯一性,如果已经存在相同business_attr且状态为0(处理中)的记录,则将is_delete设为1(已删除),然后插入新记录
|
|
|
dao.execute(
|
|
dao.execute(
|
|
|
- """UPDATE ai_tagging.aitag_tag_log SET is_delete = 1 WHERE business_attr = %s""",
|
|
|
|
|
|
|
+ """UPDATE aitag_tag_log SET is_delete = 1 WHERE business_attr = %s""",
|
|
|
(request.business_attr,)
|
|
(request.business_attr,)
|
|
|
)
|
|
)
|
|
|
# 业务编号如果以test开头,则tag_scope = 1,否则都是0
|
|
# 业务编号如果以test开头,则tag_scope = 1,否则都是0
|
|
|
tag_scope = 1 if request.business_attr.startswith("test") else 0
|
|
tag_scope = 1 if request.business_attr.startswith("test") else 0
|
|
|
dao.execute(
|
|
dao.execute(
|
|
|
- """INSERT INTO ai_tagging.aitag_tag_log (id,app_id, insert_time, business_attr, phrase, state, tag_scope) VALUES (%s, %s, %s, %s, %s, %s, %s)""",
|
|
|
|
|
|
|
+ """INSERT INTO aitag_tag_log (id,app_id, insert_time, business_attr, phrase, state, tag_scope) VALUES (%s, %s, %s, %s, %s, %s, %s)""",
|
|
|
(id,request.app_id, datetime.now(), request.business_attr, request.phrase, 0, tag_scope)
|
|
(id,request.app_id, datetime.now(), request.business_attr, request.phrase, 0, tag_scope)
|
|
|
)
|
|
)
|
|
|
return id
|
|
return id
|
|
|
|
|
|
|
|
def update_tag_log(id:str, result:str):
|
|
def update_tag_log(id:str, result:str):
|
|
|
dao.execute(
|
|
dao.execute(
|
|
|
- """UPDATE ai_tagging.aitag_tag_log SET state = %s, result = %s WHERE id = %s""",
|
|
|
|
|
|
|
+ """UPDATE aitag_tag_log SET state = %s, result = %s WHERE id = %s""",
|
|
|
(1, result, id)
|
|
(1, result, id)
|
|
|
)
|
|
)
|
|
|
|
|
|
|
@@ -138,7 +139,7 @@ async def ai_tagging(request: TaggingRequest,background_tasks: BackgroundTasks):
|
|
|
def query(business_attr: str):
|
|
def query(business_attr: str):
|
|
|
logger.info(f"Querying tag log for business_attr: {business_attr}")
|
|
logger.info(f"Querying tag log for business_attr: {business_attr}")
|
|
|
# 查询指定business_attr对应的标签信息
|
|
# 查询指定business_attr对应的标签信息
|
|
|
- sql = """SELECT * FROM ai_tagging.aitag_tag_log WHERE business_attr = %s and is_delete = 0"""
|
|
|
|
|
|
|
+ sql = """SELECT * FROM aitag_tag_log WHERE business_attr = %s and is_delete = 0"""
|
|
|
result = dao.query_dict(sql, (business_attr,))
|
|
result = dao.query_dict(sql, (business_attr,))
|
|
|
logger.info(f"Query result: {result}")
|
|
logger.info(f"Query result: {result}")
|
|
|
return {"code": 200, "message": "AI Query Endpoint", "data": result[0] if result else None}
|
|
return {"code": 200, "message": "AI Query Endpoint", "data": result[0] if result else None}
|
|
@@ -158,7 +159,7 @@ def ai_feedback(feedback_request: FeedbackRequest):
|
|
|
logger.info(f"Received feedback request: {feedback_request}")
|
|
logger.info(f"Received feedback request: {feedback_request}")
|
|
|
# 这里将用户的反馈信息保存到数据库中aitag_tag_log,供后续分析和模型优化使用
|
|
# 这里将用户的反馈信息保存到数据库中aitag_tag_log,供后续分析和模型优化使用
|
|
|
dao.execute(
|
|
dao.execute(
|
|
|
- """update ai_tagging.aitag_tag_log set feedback = %s, feedback_result = %s, feedback_time = %s, feedback_user_id = %s, feedback_user_nm = %s, contract_no = %s, feedback_user_org = %s, feedback_user_endpoint = %s, state = %s where business_attr = %s""",
|
|
|
|
|
|
|
+ """update aitag_tag_log set feedback = %s, feedback_result = %s, feedback_time = %s, feedback_user_id = %s, feedback_user_nm = %s, contract_no = %s, feedback_user_org = %s, feedback_user_endpoint = %s, state = %s where business_attr = %s""",
|
|
|
(feedback_request.feedback, feedback_request.feedback_result, datetime.now(), feedback_request.user_id, feedback_request.user_nm, feedback_request.contract_no, feedback_request.user_org, feedback_request.user_endpoint, 2, feedback_request.business_attr)
|
|
(feedback_request.feedback, feedback_request.feedback_result, datetime.now(), feedback_request.user_id, feedback_request.user_nm, feedback_request.contract_no, feedback_request.user_org, feedback_request.user_endpoint, 2, feedback_request.business_attr)
|
|
|
)
|
|
)
|
|
|
return {"code": 200, "message": "Feedback received successfully"}
|
|
return {"code": 200, "message": "Feedback received successfully"}
|