feat:新增投顾agent和nl2sqlagent
This commit is contained in:
@@ -11,9 +11,10 @@ from model.advisor_visit_record import AdvisorVisitRecord
|
||||
from model.sys_user import SysUser
|
||||
from repositories.advisor_visit_record import AdvisorVisitRecordRepo
|
||||
from repositories.sys_message import SysMessageRepo
|
||||
from schemas.advisor import VisitCreateReq
|
||||
from schemas.advisor import VisitCreateReq, VisitUpdateReq
|
||||
from service.advisor.permissions import ensure_customer_owned
|
||||
from utils.exceptions import ParamError
|
||||
from service.advisor.audit_writer import write_audit
|
||||
from utils.exceptions import NotFoundError, ParamError
|
||||
|
||||
# 合规话术库(内置,标准化投教/市场解读/调仓沟通)。
|
||||
# 假设:V1.0 内置常量,后续可迁移 sys_config 运营化;内容不含承诺收益等敏感词。
|
||||
@@ -63,9 +64,50 @@ async def create_visit(db: AsyncSession, user: SysUser, req: VisitCreateReq) ->
|
||||
audio_url=req.audio_url,
|
||||
)
|
||||
record = await AdvisorVisitRecordRepo(db).add(record)
|
||||
await write_audit(
|
||||
db,
|
||||
user_id=user.id,
|
||||
username=user.username,
|
||||
module="advisor",
|
||||
action="visit_create",
|
||||
target=str(record.id),
|
||||
detail={"customer_id": req.customer_id},
|
||||
)
|
||||
return {"visit_id": record.id}
|
||||
|
||||
|
||||
async def get_visit(db: AsyncSession, user: SysUser, visit_id: int) -> dict:
|
||||
record = await AdvisorVisitRecordRepo(db).get_by_advisor(visit_id, user.id)
|
||||
if record is None:
|
||||
raise NotFoundError("回访记录不存在")
|
||||
return _visit_item(record)
|
||||
|
||||
|
||||
async def update_visit(
|
||||
db: AsyncSession, user: SysUser, visit_id: int, req: VisitUpdateReq
|
||||
) -> dict:
|
||||
changes = req.model_dump(exclude_unset=True)
|
||||
if not changes:
|
||||
raise ParamError("至少提供一项回访记录修改内容")
|
||||
record = await AdvisorVisitRecordRepo(db).get_by_advisor(visit_id, user.id)
|
||||
if record is None:
|
||||
raise NotFoundError("回访记录不存在")
|
||||
for field, value in changes.items():
|
||||
setattr(record, field, value)
|
||||
await db.commit()
|
||||
await db.refresh(record)
|
||||
await write_audit(
|
||||
db,
|
||||
user_id=user.id,
|
||||
username=user.username,
|
||||
module="advisor",
|
||||
action="visit_update",
|
||||
target=str(record.id),
|
||||
detail={"customer_id": record.customer_id, "fields": list(changes)},
|
||||
)
|
||||
return _visit_item(record)
|
||||
|
||||
|
||||
def list_talk_templates() -> list[dict]:
|
||||
"""合规话术库(内置,投顾参考;不自动发送)。"""
|
||||
return TALK_TEMPLATES
|
||||
|
||||
Reference in New Issue
Block a user