Commit af22fc8a authored by 于飞's avatar 于飞

添加敏感词

parent f170abd5
...@@ -14,7 +14,7 @@ from sqlalchemy.orm import joinedload, aliased ...@@ -14,7 +14,7 @@ from sqlalchemy.orm import joinedload, aliased
from sqlalchemy.orm.strategy_options import _AbstractLoad, contains_eager from sqlalchemy.orm.strategy_options import _AbstractLoad, contains_eager
from dbgpt.app.apps.core.exception import CustomException from dbgpt.app.apps.core.exception import CustomException
from fastapi.encoders import jsonable_encoder from fastapi.encoders import jsonable_encoder
from sqlalchemy import select, false, and_ from sqlalchemy import select, false, and_, update
from dbgpt.app.apps.core.crud import DalBase from dbgpt.app.apps.core.crud import DalBase
from sqlalchemy.ext.asyncio import AsyncSession from sqlalchemy.ext.asyncio import AsyncSession
from dbgpt.app.apps.core.validator import vali_telephone from dbgpt.app.apps.core.validator import vali_telephone
...@@ -27,7 +27,7 @@ from dbgpt.app.apps.utils.tools import test_password ...@@ -27,7 +27,7 @@ from dbgpt.app.apps.utils.tools import test_password
from . import models, schemas from . import models, schemas
from .params.similar import SimilarParams from .params.similar import SimilarParams
from .schemas.similar import SimilarIn from .schemas.similar import SimilarIn,SimilarUpdate
from .schemas.sensitive import SensitiveIn from .schemas.sensitive import SensitiveIn
from .models import sensitive from .models import sensitive
...@@ -69,17 +69,14 @@ class SimilarDal(DalBase): ...@@ -69,17 +69,14 @@ class SimilarDal(DalBase):
else: else:
print(f"编号:{similar1.id} 词条:{similar1.word_name} 近义词:{similar1.similar_name} ") print(f"编号:{similar1.id} 词条:{similar1.word_name} 近义词:{similar1.similar_name} ")
async def delete_similar_byid(self, qid): async def update_similars(self, ids: [], data: SimilarUpdate):
""" await self.db.execute(
根据ID删除一个近义词 update(self.model).where(self.model.id.in_(ids)).values(
""" update_datetime=datetime.now().strftime("%Y-%m-%d %H:%M:%S"),
sql1 = self.delete_datas(qid) word_name=data.word_name,
queryset1 = await self.db.scalars(sql1) similar_name=data.similar_name
similar1 = queryset1.unique().first() )
if similar1 is None: )
print('similar1 is None')
else:
print(f"编号:{similar1.id} 词条:{similar1.word_name} 近义词:{similar1.similar_name} ")
async def create_similar_data( async def create_similar_data(
self, self,
...@@ -121,4 +118,44 @@ class SensitiveDal(DalBase): ...@@ -121,4 +118,44 @@ class SensitiveDal(DalBase):
self.model = models.sensitive.VadminWordSensitive self.model = models.sensitive.VadminWordSensitive
self.schema = schemas.sensitive.SensitiveSchemas self.schema = schemas.sensitive.SensitiveSchemas
async def create_sensitive_data(
self,
data: SensitiveIn,
v_options: list[_AbstractLoad] = None,
v_return_obj: bool = False,
v_schema: Any = None
) -> Any:
"""
创建敏感词
:param data:
:param v_options:
:param v_return_obj:
:param v_schema:
:return:
"""
if data is None:
raise CustomException("data is None!", code=status.HTTP_ERROR)
unique = await self.get_data(word_name=data.word_name, v_return_none=True)
if unique:
raise CustomException("词条已存在!", code=status.HTTP_ERROR)
obj = self.model()
obj.word_name = data.word_name
#await self.flush(obj)
#return await self.out_dict(obj, v_options, v_return_obj, v_schema)
self.db.add(obj)
await self.db.commit()
return None
async def get_sensitives(self)-> Any:
sql = select(models.sensitive.VadminWordSensitive).where(models.sensitive.VadminWordSensitive.is_delete == false())
queryset = await self.db.scalars(sql)
"""
for row in dataqs:
print(f"编号:{row.id} 词条:{row.word_name} ")
"""
return list(queryset.all())
...@@ -21,13 +21,9 @@ class SensitiveSchemas(BaseModel): ...@@ -21,13 +21,9 @@ class SensitiveSchemas(BaseModel):
class SensitiveIn(SensitiveSchemas): class SensitiveIn(SensitiveSchemas):
""" """
创建近义 创建敏感
""" """
word_name: str | None = "" word_name: str | None = ""
is_delete: int | None = 0
create_datetime: datetime | None = None
update_datetime: datetime | None = None
delete_datetime: datetime | None = None
class SensitiveOut(SensitiveSchemas): class SensitiveOut(SensitiveSchemas):
word_name: str | None = "" word_name: str | None = ""
...@@ -38,7 +34,7 @@ class SensitiveOut(SensitiveSchemas): ...@@ -38,7 +34,7 @@ class SensitiveOut(SensitiveSchemas):
class SensitiveUpdate(BaseModel): class SensitiveUpdate(BaseModel):
""" """
更新近义词信息 更新敏感词信息
""" """
word_name: str | None = "" word_name: str | None = ""
is_delete: int | None = 0 is_delete: int | None = 0
......
...@@ -39,13 +39,9 @@ class SimilarOut(SimilarSchemas): ...@@ -39,13 +39,9 @@ class SimilarOut(SimilarSchemas):
update_datetime: datetime | None = None update_datetime: datetime | None = None
delete_datetime: datetime | None = None delete_datetime: datetime | None = None
class SimilarUpdate(BaseModel): class SimilarUpdate(SimilarSchemas):
""" """
更新近义词信息 更新近义词信息
""" """
word_name: str | None = "" word_name: str | None = ""
similar_name: str | None = "" similar_name: str | None = ""
is_delete: int | None = 0
create_datetime: datetime | None = None
update_datetime: datetime | None = None
delete_datetime: datetime | None = None
...@@ -9,7 +9,8 @@ from dbgpt.app.apps.vadmin.auth.utils.validation.auth import Auth ...@@ -9,7 +9,8 @@ from dbgpt.app.apps.vadmin.auth.utils.validation.auth import Auth
from . import schemas, crud, models from . import schemas, crud, models
from dbgpt.app.apps.vadmin.word.models.similar import VadminWordSimilar from dbgpt.app.apps.vadmin.word.models.similar import VadminWordSimilar
from dbgpt.app.apps.vadmin.word.params.similar import SimilarParams from dbgpt.app.apps.vadmin.word.params.similar import SimilarParams
from dbgpt.app.apps.vadmin.word.schemas.similar import SimilarSchemas, SimilarIn from dbgpt.app.apps.vadmin.word.schemas.similar import SimilarSchemas, SimilarIn,SimilarUpdate
from dbgpt.app.apps.vadmin.word.schemas.sensitive import SensitiveSchemas, SensitiveIn
from dbgpt.app.apps.vadmin.word import crud from dbgpt.app.apps.vadmin.word import crud
from fastapi.encoders import jsonable_encoder from fastapi.encoders import jsonable_encoder
...@@ -40,15 +41,15 @@ async def create_similar(data: Request, auth: Auth = Depends(OpenAuth())): ...@@ -40,15 +41,15 @@ async def create_similar(data: Request, auth: Auth = Depends(OpenAuth())):
else: else:
print(f"req词条:{data.query_params['word_name']} req近义词:{data.query_params['similar_name']} ") print(f"req词条:{data.query_params['word_name']} req近义词:{data.query_params['similar_name']} ")
data: SimilarIn sdata = SimilarIn()
data.word_name = data.query_params['word_name'] sdata.word_name = data.query_params['word_name']
data.similar_name = data.query_params['similar_name'] sdata.similar_name = data.query_params['similar_name']
data.is_delete = 0 sdata.is_delete = 0
data.create_datetime = '' sdata.create_datetime = ''
data.update_datetime = '' sdata.update_datetime = ''
data.delete_datetime = '' sdata.delete_datetime = ''
await crud.SimilarDal(auth.db).create_similar_data(data=data) await crud.SimilarDal(auth.db).create_similar_data(data=sdata)
datas = [] datas = []
return SuccessResponse(datas, count=1) return SuccessResponse(datas, count=1)
...@@ -67,18 +68,60 @@ async def delete_similars(data: Request, auth: Auth = Depends(OpenAuth())): ...@@ -67,18 +68,60 @@ async def delete_similars(data: Request, auth: Auth = Depends(OpenAuth())):
await crud.SimilarDal(auth.db).delete_datas(ids=similarids, v_soft=True) await crud.SimilarDal(auth.db).delete_datas(ids=similarids, v_soft=True)
return SuccessResponse("删除成功") return SuccessResponse("删除成功")
@router.get("/update_similar_byid", summary="根据id修改同义词") @router.post("/update_similar_byid", summary="根据id修改同义词")
async def update_similar_byid(auth: Auth = Depends(OpenAuth())): async def update_similar_byid(data: Request, auth: Auth = Depends(OpenAuth())):
model = VadminWordSimilar if data is None:
print(f"编号:{model.id} 近义词:{model.word_name}") print('SimilarIn is None')
return ErrorResponse("不能修改当前近义词")
else:
print(f"word_id:{data.query_params['word_id']} req词条:{data.query_params['word_name']} req词条:{data.query_params['word_name']} req近义词:{data.query_params['similar_name']} ")
datas = await crud.SimilarDal(auth.db).get_similars() data_id = data.query_params['word_id']
jsondatas = jsonable_encoder(datas)
for row in datas: sdata = SimilarUpdate
print(f"编号:{row.id} 词条:{row.word_name} 近义词:{row.similar_name} ") sdata.word_name = data.query_params['word_name']
return SuccessResponse(jsondatas, count=1) sdata.similar_name = data.query_params['similar_name']
similarids = []
similarids.append(data_id)
await crud.SimilarDal(auth.db).update_similars(similarids, sdata)
return SuccessResponse("修改成功")
###########################################################
# 敏感词管理
###########################################################
@router.post("/create_sensitive", summary="创建敏感词") @router.post("/create_sensitive", summary="创建敏感词")
async def create_user(data: schemas.SensitiveIn, auth: Auth = Depends(OpenAuth())): async def create_sensitive(req: Request, auth: Auth = Depends(OpenAuth())):
return SuccessResponse(await crud.SensitiveDal(auth.db).create_data(data=data)) if req is None:
\ No newline at end of file print('SimilarIn is None')
return ErrorResponse("不能创建当前敏感词")
else:
print(f"req词条:{req.query_params['word_name']} ")
"""
sdata = SensitiveSchemas()
sdata.word_name = req.query_params['word_name']
return SuccessResponse(await crud.SensitiveDal(auth.db).create_data(data=sdata))
"""
sdata = SensitiveIn
sdata.word_name = req.query_params['word_name']
sdata.is_delete = 0
sdata.create_datetime = ''
sdata.update_datetime = ''
sdata.delete_datetime = ''
await crud.SensitiveDal(auth.db).create_sensitive_data(data=sdata)
return SuccessResponse("请求成功!")
@router.get("/get_sensitives", summary="获取敏感词列表")
async def get_sensitives(auth: Auth = Depends(OpenAuth())):
datas = await crud.SensitiveDal(auth.db).get_sensitives()
jsondatas = jsonable_encoder(datas)
for row in datas:
print(f"编号:{row.id} 词条:{row.word_name} ")
return SuccessResponse(jsondatas, count=1)
\ No newline at end of file
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