Merge branch 'develop' into feature/skill_zy

This commit is contained in:
yingzhao
2026-02-05 10:54:14 +08:00
committed by GitHub
19 changed files with 299 additions and 104 deletions

View File

@@ -35,7 +35,7 @@ interface ApplicationModalProps {
/**
* Supported application types
*/
const types = [
export const types = [
'agent',
'multi_agent',
'workflow'

View File

@@ -1,8 +1,8 @@
/*
* @Author: ZhaoYing
* @Date: 2026-02-03 16:34:12
* @Last Modified by: ZhaoYing
* @Last Modified time: 2026-02-03 16:34:12
* @Last Modified by: ZhaoYing
* @Last Modified time: 2026-02-04 18:57:35
*/
/**
* Application Management Page
@@ -12,12 +12,12 @@
import React, { useState, useRef } from 'react';
import { useTranslation } from 'react-i18next';
import { Button, Row, Col, App } from 'antd';
import { Button, Row, Col, App, Select } from 'antd';
import clsx from 'clsx';
import { DeleteOutlined } from '@ant-design/icons';
import type { Application, ApplicationModalRef, Query } from './types';
import ApplicationModal from './components/ApplicationModal';
import ApplicationModal, { types } from './components/ApplicationModal';
import SearchInput from '@/components/SearchInput'
import RbCard from '@/components/RbCard/Card'
import { getApplicationListUrl, deleteApplication } from '@/api/application'
@@ -65,10 +65,25 @@ const ApplicationManagement: React.FC = () => {
}
})
}
const handleChangeType = (value?: string) => {
setQuery(prev => ({...prev, type: value}))
}
return (
<>
<Row gutter={16} className="rb:mb-4">
<Col span={12}>
<Col span={3}>
<Select
placeholder={t('application.applicationType')}
options={types.map((type) => ({
value: type,
label: t(`application.${type}`),
}))}
allowClear
className="rb:w-full"
onChange={handleChangeType}
/>
</Col>
<Col span={9}>
<SearchInput
placeholder={t('application.searchPlaceholder')}
onSearch={(value) => setQuery({ search: value })}

View File

@@ -0,0 +1,53 @@
/*
* @Author: ZhaoYing
* @Date: 2026-02-04 18:34:36
* @Last Modified by: ZhaoYing
* @Last Modified time: 2026-02-04 18:49:59
*/
import { useEffect, type FC } from 'react'
import { useNavigate, useSearchParams } from 'react-router-dom'
import { cookieUtils } from '@/utils/request'
/**
* JumpPage Component
*
* This is an intermediate redirect page used for OAuth authentication flow.
* It handles the callback from external authentication providers by:
* 1. Extracting authentication tokens from URL query parameters
* 2. Storing tokens in cookies for subsequent API requests
* 3. Redirecting users to their intended destination
*
* Expected URL format:
* /jump?access_token=xxx&refresh_token=yyy&target=/dashboard
*
* @returns null - This component doesn't render any UI, it only handles side effects
*/
const JumpPage: FC = () => {
const navigate = useNavigate()
const [searchParams] = useSearchParams()
useEffect(() => {
// Convert URLSearchParams to a plain object for easier access
const data = Object.fromEntries(searchParams)
const { access_token, refresh_token, target } = data
// Store authentication tokens in cookies for API authorization
cookieUtils.set('authToken', access_token)
cookieUtils.set('refreshToken', refresh_token)
// Redirect to the target page if specified
if (target) {
// Use setTimeout to ensure cookie operations complete before navigation
setTimeout(() => {
// Replace current history entry to prevent users from going back to this page
navigate(target, { replace: true })
}, 0)
}
}, [searchParams, navigate])
// No UI rendering needed - this is a pure redirect handler
return null
}
export default JumpPage