Browse Source

Add Filter of Get Workflow Logs (#21172)

Co-authored-by: lizb <lizb@sugon.com>
tags/1.5.0
Ganondorf 4 months ago
parent
commit
e99861d4fe
No account linked to committer's email address

+ 16
- 0
api/controllers/console/app/workflow_app_log.py View File

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()
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

+ 16
- 0
api/controllers/service_api/app/workflow.py View File

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()
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

+ 25
- 1
api/services/workflow_app_service.py View File

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




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
: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
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

+ 6
- 0
web/app/components/develop/template/template_workflow.en.mdx View File

<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

+ 6
- 0
web/app/components/develop/template/template_workflow.ja.mdx View File

<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>


### 応答 ### 応答

+ 6
- 0
web/app/components/develop/template/template_workflow.zh.mdx View File

<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

Loading…
Cancel
Save