Add Filter of Get Workflow Logs (#21172)
Co-authored-by: lizb <lizb@sugon.com>
This commit is contained in:
@@ -34,6 +34,20 @@ class WorkflowAppLogApi(Resource):
|
|||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
"created_at__after", type=str, location="args", help="Filter logs created after this timestamp"
|
"created_at__after", type=str, location="args", help="Filter logs created after this timestamp"
|
||||||
)
|
)
|
||||||
|
parser.add_argument(
|
||||||
|
"created_by_end_user_session_id",
|
||||||
|
type=str,
|
||||||
|
location="args",
|
||||||
|
required=False,
|
||||||
|
default=None,
|
||||||
|
)
|
||||||
|
parser.add_argument(
|
||||||
|
"created_by_account",
|
||||||
|
type=str,
|
||||||
|
location="args",
|
||||||
|
required=False,
|
||||||
|
default=None,
|
||||||
|
)
|
||||||
parser.add_argument("page", type=int_range(1, 99999), default=1, location="args")
|
parser.add_argument("page", type=int_range(1, 99999), default=1, location="args")
|
||||||
parser.add_argument("limit", type=int_range(1, 100), default=20, location="args")
|
parser.add_argument("limit", type=int_range(1, 100), default=20, location="args")
|
||||||
args = parser.parse_args()
|
args = parser.parse_args()
|
||||||
@@ -57,6 +71,8 @@ class WorkflowAppLogApi(Resource):
|
|||||||
created_at_after=args.created_at__after,
|
created_at_after=args.created_at__after,
|
||||||
page=args.page,
|
page=args.page,
|
||||||
limit=args.limit,
|
limit=args.limit,
|
||||||
|
created_by_end_user_session_id=args.created_by_end_user_session_id,
|
||||||
|
created_by_account=args.created_by_account,
|
||||||
)
|
)
|
||||||
|
|
||||||
return workflow_app_log_pagination
|
return workflow_app_log_pagination
|
||||||
|
@@ -135,6 +135,20 @@ class WorkflowAppLogApi(Resource):
|
|||||||
parser.add_argument("status", type=str, choices=["succeeded", "failed", "stopped"], location="args")
|
parser.add_argument("status", type=str, choices=["succeeded", "failed", "stopped"], location="args")
|
||||||
parser.add_argument("created_at__before", type=str, location="args")
|
parser.add_argument("created_at__before", type=str, location="args")
|
||||||
parser.add_argument("created_at__after", type=str, location="args")
|
parser.add_argument("created_at__after", type=str, location="args")
|
||||||
|
parser.add_argument(
|
||||||
|
"created_by_end_user_session_id",
|
||||||
|
type=str,
|
||||||
|
location="args",
|
||||||
|
required=False,
|
||||||
|
default=None,
|
||||||
|
)
|
||||||
|
parser.add_argument(
|
||||||
|
"created_by_account",
|
||||||
|
type=str,
|
||||||
|
location="args",
|
||||||
|
required=False,
|
||||||
|
default=None,
|
||||||
|
)
|
||||||
parser.add_argument("page", type=int_range(1, 99999), default=1, location="args")
|
parser.add_argument("page", type=int_range(1, 99999), default=1, location="args")
|
||||||
parser.add_argument("limit", type=int_range(1, 100), default=20, location="args")
|
parser.add_argument("limit", type=int_range(1, 100), default=20, location="args")
|
||||||
args = parser.parse_args()
|
args = parser.parse_args()
|
||||||
@@ -158,6 +172,8 @@ class WorkflowAppLogApi(Resource):
|
|||||||
created_at_after=args.created_at__after,
|
created_at_after=args.created_at__after,
|
||||||
page=args.page,
|
page=args.page,
|
||||||
limit=args.limit,
|
limit=args.limit,
|
||||||
|
created_by_end_user_session_id=args.created_by_end_user_session_id,
|
||||||
|
created_by_account=args.created_by_account,
|
||||||
)
|
)
|
||||||
|
|
||||||
return workflow_app_log_pagination
|
return workflow_app_log_pagination
|
||||||
|
@@ -5,7 +5,7 @@ from sqlalchemy import and_, func, or_, select
|
|||||||
from sqlalchemy.orm import Session
|
from sqlalchemy.orm import Session
|
||||||
|
|
||||||
from core.workflow.entities.workflow_execution import WorkflowExecutionStatus
|
from core.workflow.entities.workflow_execution import WorkflowExecutionStatus
|
||||||
from models import App, EndUser, WorkflowAppLog, WorkflowRun
|
from models import Account, App, EndUser, WorkflowAppLog, WorkflowRun
|
||||||
from models.enums import CreatorUserRole
|
from models.enums import CreatorUserRole
|
||||||
|
|
||||||
|
|
||||||
@@ -21,6 +21,8 @@ class WorkflowAppService:
|
|||||||
created_at_after: datetime | None = None,
|
created_at_after: datetime | None = None,
|
||||||
page: int = 1,
|
page: int = 1,
|
||||||
limit: int = 20,
|
limit: int = 20,
|
||||||
|
created_by_end_user_session_id: str | None = None,
|
||||||
|
created_by_account: str | None = None,
|
||||||
) -> dict:
|
) -> dict:
|
||||||
"""
|
"""
|
||||||
Get paginate workflow app logs using SQLAlchemy 2.0 style
|
Get paginate workflow app logs using SQLAlchemy 2.0 style
|
||||||
@@ -32,6 +34,8 @@ class WorkflowAppService:
|
|||||||
:param created_at_after: filter logs created after this timestamp
|
:param created_at_after: filter logs created after this timestamp
|
||||||
:param page: page number
|
:param page: page number
|
||||||
:param limit: items per page
|
:param limit: items per page
|
||||||
|
:param created_by_end_user_session_id: filter by end user session id
|
||||||
|
:param created_by_account: filter by account email
|
||||||
:return: Pagination object
|
:return: Pagination object
|
||||||
"""
|
"""
|
||||||
# Build base statement using SQLAlchemy 2.0 style
|
# Build base statement using SQLAlchemy 2.0 style
|
||||||
@@ -71,6 +75,26 @@ class WorkflowAppService:
|
|||||||
if created_at_after:
|
if created_at_after:
|
||||||
stmt = stmt.where(WorkflowAppLog.created_at >= created_at_after)
|
stmt = stmt.where(WorkflowAppLog.created_at >= created_at_after)
|
||||||
|
|
||||||
|
# Filter by end user session id or account email
|
||||||
|
if created_by_end_user_session_id:
|
||||||
|
stmt = stmt.join(
|
||||||
|
EndUser,
|
||||||
|
and_(
|
||||||
|
WorkflowAppLog.created_by == EndUser.id,
|
||||||
|
WorkflowAppLog.created_by_role == CreatorUserRole.END_USER,
|
||||||
|
EndUser.session_id == created_by_end_user_session_id,
|
||||||
|
),
|
||||||
|
)
|
||||||
|
if created_by_account:
|
||||||
|
stmt = stmt.join(
|
||||||
|
Account,
|
||||||
|
and_(
|
||||||
|
WorkflowAppLog.created_by == Account.id,
|
||||||
|
WorkflowAppLog.created_by_role == CreatorUserRole.ACCOUNT,
|
||||||
|
Account.email == created_by_account,
|
||||||
|
),
|
||||||
|
)
|
||||||
|
|
||||||
stmt = stmt.order_by(WorkflowAppLog.created_at.desc())
|
stmt = stmt.order_by(WorkflowAppLog.created_at.desc())
|
||||||
|
|
||||||
# Get total count using the same filters
|
# Get total count using the same filters
|
||||||
|
@@ -533,6 +533,12 @@ Workflow applications offers non-session support and is ideal for translation, a
|
|||||||
<Property name='limit' type='int' key='limit'>
|
<Property name='limit' type='int' key='limit'>
|
||||||
How many chat history messages to return in one request, default is 20.
|
How many chat history messages to return in one request, default is 20.
|
||||||
</Property>
|
</Property>
|
||||||
|
<Property name='created_by_end_user_session_id' type='str' key='created_by_end_user_session_id'>
|
||||||
|
Created by which endUser, for example, `abc-123`.
|
||||||
|
</Property>
|
||||||
|
<Property name='created_by_account' type='str' key='created_by_account'>
|
||||||
|
Created by which email account, for example, lizb@test.com.
|
||||||
|
</Property>
|
||||||
</Properties>
|
</Properties>
|
||||||
|
|
||||||
### Response
|
### Response
|
||||||
|
@@ -534,6 +534,12 @@ import { Row, Col, Properties, Property, Heading, SubProperty, Paragraph } from
|
|||||||
<Property name='limit' type='int' key='limit'>
|
<Property name='limit' type='int' key='limit'>
|
||||||
1回のリクエストで返すチャット履歴メッセージの数、デフォルトは20。
|
1回のリクエストで返すチャット履歴メッセージの数、デフォルトは20。
|
||||||
</Property>
|
</Property>
|
||||||
|
<Property name='created_by_end_user_session_id' type='str' key='created_by_end_user_session_id'>
|
||||||
|
どのendUserによって作成されたか、例えば、`abc-123`。
|
||||||
|
</Property>
|
||||||
|
<Property name='created_by_account' type='str' key='created_by_account'>
|
||||||
|
どのメールアカウントによって作成されたか、例えば、lizb@test.com。
|
||||||
|
</Property>
|
||||||
</Properties>
|
</Properties>
|
||||||
|
|
||||||
### 応答
|
### 応答
|
||||||
|
@@ -522,6 +522,12 @@ Workflow 应用无会话支持,适合用于翻译/文章写作/总结 AI 等
|
|||||||
<Property name='limit' type='int' key='limit'>
|
<Property name='limit' type='int' key='limit'>
|
||||||
每页条数, 默认20.
|
每页条数, 默认20.
|
||||||
</Property>
|
</Property>
|
||||||
|
<Property name='created_by_end_user_session_id' type='str' key='created_by_end_user_session_id'>
|
||||||
|
由哪个endUser创建,例如,`abc-123`.
|
||||||
|
</Property>
|
||||||
|
<Property name='created_by_account' type='str' key='created_by_account'>
|
||||||
|
由哪个邮箱账户创建,例如,lizb@test.com.
|
||||||
|
</Property>
|
||||||
</Properties>
|
</Properties>
|
||||||
|
|
||||||
### Response
|
### Response
|
||||||
|
Reference in New Issue
Block a user