hotword.py 3.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. from fastapi import Depends, APIRouter, Query, HTTPException, UploadFile, WebSocket
  2. from fastapi.responses import JSONResponse, PlainTextResponse
  3. from app.apis.base import Response
  4. from app.models.ai_meeting import AIMeetingModel
  5. from app.services.ai_meeting import AIMeetingService
  6. from app.services.hotword import ReplaceHotwordService, ASRHotwordService
  7. from app.models.hotword import ReplaceHotwordModel, ASRHotwordModel
  8. from app.models.common import Page
  9. router = APIRouter()
  10. @router.post("/asr/add", response_model=Response)
  11. async def create_asr_hotword(asr_hotword: ASRHotwordModel):
  12. asr_hotword_total = await ASRHotwordService.create_asr_hotword(asr_hotword.get_create())
  13. return Response(code=201, msg="success", data={"total": asr_hotword_total})
  14. @router.post("/asr/list", response_model=Response)
  15. async def list_asr_hotwords(page: Page):
  16. data_list = await ASRHotwordService.list_asr_hotwords(page)
  17. return Response(code=200, msg="success", data={"total": await ASRHotwordService.asr_hotwords_total(),
  18. "rows": [i.to_dict() for i in data_list]})
  19. @router.get("/asr/total", response_model=Response)
  20. async def total_asr_hotwords():
  21. return Response(code=200, msg="success", data={"total": await ASRHotwordService.asr_hotwords_total()})
  22. @router.get("/asr/{asr_hotword_id}")
  23. async def get_asr_hotword(asr_hotword_id: int):
  24. return await ASRHotwordService.get_asr_hotword(ASRHotwordModel(id=asr_hotword_id))
  25. @router.put("/asr/{asr_hotword_id}")
  26. async def update_asr_hotword(asr_hotword_id: int, asr_hotword: ASRHotwordModel):
  27. asr_hotword.id = asr_hotword_id
  28. await ASRHotwordService.update_asr_hotword(asr_hotword.get_update())
  29. return PlainTextResponse(status_code=204)
  30. @router.delete("/asr/delete/{hotword_id}", response_model=Response)
  31. async def delete_asr_hotword(hotword_id: int):
  32. await ASRHotwordService.delete_asr_hotword(ASRHotwordModel(id=hotword_id))
  33. return Response(code=204, msg="success", data={})
  34. @router.post("/replace/add", response_model=Response)
  35. async def create_replace_hotword(replace_hotword: ReplaceHotwordModel):
  36. replace_hotword_total = await ReplaceHotwordService.create_replace_hotword(replace_hotword.get_create())
  37. if replace_hotword.meeting_id:
  38. await AIMeetingService.replace_ai_meeting_record(
  39. AIMeetingModel(id=replace_hotword.meeting_id, replace_word=replace_hotword.replace_list)
  40. )
  41. return Response(code=201, msg="success", data={"total": replace_hotword_total})
  42. @router.post("/replace/list", response_model=Response)
  43. async def list_replace_hotwords(page: Page):
  44. data_list = await ReplaceHotwordService.list_replace_hotwords(page)
  45. return Response(code=200, msg="success", data={"total": await ReplaceHotwordService.replace_hotwords_total(),
  46. "rows": [i.to_dict() for i in data_list]})
  47. @router.put("/replace/edit", response_model=Response)
  48. async def update_replace_hotword(replace_hotword: ReplaceHotwordModel):
  49. replace_hotword = await ReplaceHotwordService.update_replace_hotword(replace_hotword.get_update())
  50. return Response(code=204, msg="success", data={"id": replace_hotword.id})
  51. @router.delete("/replace/delete/{replace_id}", response_model=Response)
  52. async def delete_replace_hotword(replace_id: int):
  53. await ReplaceHotwordService.delete_replace_hotword(ReplaceHotwordModel(id=replace_id))
  54. return Response(code=204, msg="success", data={})
  55. @router.get("/replace/total", response_model=Response)
  56. async def total_replace_hotwords():
  57. return Response(code=200, msg="success", data={"total": await ReplaceHotwordService.replace_hotwords_total()})