mirror of
https://git.mirrors.martin98.com/https://github.com/langgenius/dify.git
synced 2025-08-12 12:49:11 +08:00
workflow logs support workflow run id filter (#6833)
This commit is contained in:
parent
4ffa706e4f
commit
5542ee4d0d
@ -1,3 +1,5 @@
|
|||||||
|
import uuid
|
||||||
|
|
||||||
from flask_sqlalchemy.pagination import Pagination
|
from flask_sqlalchemy.pagination import Pagination
|
||||||
from sqlalchemy import and_, or_
|
from sqlalchemy import and_, or_
|
||||||
|
|
||||||
@ -25,20 +27,26 @@ class WorkflowAppService:
|
|||||||
)
|
)
|
||||||
|
|
||||||
status = WorkflowRunStatus.value_of(args.get('status')) if args.get('status') else None
|
status = WorkflowRunStatus.value_of(args.get('status')) if args.get('status') else None
|
||||||
if args['keyword'] or status:
|
keyword = args['keyword']
|
||||||
|
if keyword or status:
|
||||||
query = query.join(
|
query = query.join(
|
||||||
WorkflowRun, WorkflowRun.id == WorkflowAppLog.workflow_run_id
|
WorkflowRun, WorkflowRun.id == WorkflowAppLog.workflow_run_id
|
||||||
)
|
)
|
||||||
|
|
||||||
if args['keyword']:
|
if keyword:
|
||||||
keyword_val = f"%{args['keyword'][:30]}%"
|
keyword_like_val = f"%{args['keyword'][:30]}%"
|
||||||
keyword_conditions = [
|
keyword_conditions = [
|
||||||
WorkflowRun.inputs.ilike(keyword_val),
|
WorkflowRun.inputs.ilike(keyword_like_val),
|
||||||
WorkflowRun.outputs.ilike(keyword_val),
|
WorkflowRun.outputs.ilike(keyword_like_val),
|
||||||
# filter keyword by end user session id if created by end user role
|
# filter keyword by end user session id if created by end user role
|
||||||
and_(WorkflowRun.created_by_role == 'end_user', EndUser.session_id.ilike(keyword_val))
|
and_(WorkflowRun.created_by_role == 'end_user', EndUser.session_id.ilike(keyword_like_val))
|
||||||
]
|
]
|
||||||
|
|
||||||
|
# filter keyword by workflow run id
|
||||||
|
keyword_uuid = self._safe_parse_uuid(keyword)
|
||||||
|
if keyword_uuid:
|
||||||
|
keyword_conditions.append(WorkflowRun.id == keyword_uuid)
|
||||||
|
|
||||||
query = query.outerjoin(
|
query = query.outerjoin(
|
||||||
EndUser,
|
EndUser,
|
||||||
and_(WorkflowRun.created_by == EndUser.id, WorkflowRun.created_by_role == CreatedByRole.END_USER.value)
|
and_(WorkflowRun.created_by == EndUser.id, WorkflowRun.created_by_role == CreatedByRole.END_USER.value)
|
||||||
@ -60,3 +68,14 @@ class WorkflowAppService:
|
|||||||
)
|
)
|
||||||
|
|
||||||
return pagination
|
return pagination
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def _safe_parse_uuid(value: str):
|
||||||
|
# fast check
|
||||||
|
if len(value) < 32:
|
||||||
|
return None
|
||||||
|
|
||||||
|
try:
|
||||||
|
return uuid.UUID(value)
|
||||||
|
except ValueError:
|
||||||
|
return None
|
||||||
|
Loading…
x
Reference in New Issue
Block a user