FEAT: NEW WORKFLOW ENGINE (#3160)
Co-authored-by: Joel <iamjoel007@gmail.com> Co-authored-by: Yeuoly <admin@srmxy.cn> Co-authored-by: JzoNg <jzongcode@gmail.com> Co-authored-by: StyleZhang <jasonapring2015@outlook.com> Co-authored-by: jyong <jyong@dify.ai> Co-authored-by: nite-knite <nkCoding@gmail.com> Co-authored-by: jyong <718720800@qq.com>
This commit is contained in:
@@ -24,14 +24,14 @@ import { sleep } from '@/utils'
|
||||
import { useProviderContext } from '@/context/provider-context'
|
||||
import AnnotationFullModal from '@/app/components/billing/annotation-full/modal'
|
||||
import { Settings04 } from '@/app/components/base/icons/src/vender/line/general'
|
||||
import { fetchAppDetail } from '@/service/apps'
|
||||
import type { App } from '@/types/app'
|
||||
|
||||
type Props = {
|
||||
appId: string
|
||||
appDetail: App
|
||||
}
|
||||
|
||||
const Annotation: FC<Props> = ({
|
||||
appId,
|
||||
appDetail,
|
||||
}) => {
|
||||
const { t } = useTranslation()
|
||||
const [isShowEdit, setIsShowEdit] = React.useState(false)
|
||||
@@ -39,16 +39,14 @@ const Annotation: FC<Props> = ({
|
||||
const [isChatApp, setIsChatApp] = useState(false)
|
||||
|
||||
const fetchAnnotationConfig = async () => {
|
||||
const res = await doFetchAnnotationConfig(appId)
|
||||
const res = await doFetchAnnotationConfig(appDetail.id)
|
||||
setAnnotationConfig(res as AnnotationReplyConfig)
|
||||
}
|
||||
useEffect(() => {
|
||||
fetchAppDetail({ url: '/apps', id: appId }).then(async (res: any) => {
|
||||
const isChatApp = res.mode === 'chat'
|
||||
setIsChatApp(isChatApp)
|
||||
if (isChatApp)
|
||||
fetchAnnotationConfig()
|
||||
})
|
||||
const isChatApp = appDetail.mode !== 'completion'
|
||||
setIsChatApp(isChatApp)
|
||||
if (isChatApp)
|
||||
fetchAnnotationConfig()
|
||||
}, [])
|
||||
const [controlRefreshSwitch, setControlRefreshSwitch] = useState(Date.now())
|
||||
const { plan, enableBilling } = useProviderContext()
|
||||
@@ -57,7 +55,7 @@ const Annotation: FC<Props> = ({
|
||||
const ensureJobCompleted = async (jobId: string, status: AnnotationEnableStatus) => {
|
||||
let isCompleted = false
|
||||
while (!isCompleted) {
|
||||
const res: any = await queryAnnotationJobStatus(appId, status, jobId)
|
||||
const res: any = await queryAnnotationJobStatus(appDetail.id, status, jobId)
|
||||
isCompleted = res.job_status === JobStatus.completed
|
||||
if (isCompleted)
|
||||
break
|
||||
@@ -81,7 +79,7 @@ const Annotation: FC<Props> = ({
|
||||
const fetchList = async (page = 1) => {
|
||||
setIsLoading(true)
|
||||
try {
|
||||
const { data, total }: any = await fetchAnnotationList(appId, {
|
||||
const { data, total }: any = await fetchAnnotationList(appDetail.id, {
|
||||
...query,
|
||||
page,
|
||||
})
|
||||
@@ -104,7 +102,7 @@ const Annotation: FC<Props> = ({
|
||||
}, [queryParams])
|
||||
|
||||
const handleAdd = async (payload: AnnotationItemBasic) => {
|
||||
await addAnnotation(appId, {
|
||||
await addAnnotation(appDetail.id, {
|
||||
...payload,
|
||||
})
|
||||
Toast.notify({
|
||||
@@ -116,7 +114,7 @@ const Annotation: FC<Props> = ({
|
||||
}
|
||||
|
||||
const handleRemove = async (id: string) => {
|
||||
await delAnnotation(appId, id)
|
||||
await delAnnotation(appDetail.id, id)
|
||||
Toast.notify({
|
||||
message: t('common.api.actionSuccess'),
|
||||
type: 'success',
|
||||
@@ -137,7 +135,7 @@ const Annotation: FC<Props> = ({
|
||||
}
|
||||
|
||||
const handleSave = async (question: string, answer: string) => {
|
||||
await editAnnotation(appId, (currItem as AnnotationItem).id, {
|
||||
await editAnnotation(appDetail.id, (currItem as AnnotationItem).id, {
|
||||
question,
|
||||
answer,
|
||||
})
|
||||
@@ -153,7 +151,7 @@ const Annotation: FC<Props> = ({
|
||||
<div className='flex flex-col h-full'>
|
||||
<p className='flex text-sm font-normal text-gray-500'>{t('appLog.description')}</p>
|
||||
<div className='grow flex flex-col py-4 '>
|
||||
<Filter appId={appId} queryParams={queryParams} setQueryParams={setQueryParams}>
|
||||
<Filter appId={appDetail.id} queryParams={queryParams} setQueryParams={setQueryParams}>
|
||||
<div className='flex items-center space-x-2'>
|
||||
{isChatApp && (
|
||||
<>
|
||||
@@ -173,7 +171,7 @@ const Annotation: FC<Props> = ({
|
||||
setIsShowEdit(true)
|
||||
}
|
||||
else {
|
||||
const { job_id: jobId }: any = await updateAnnotationStatus(appId, AnnotationEnableStatus.disable, annotationConfig?.embedding_model, annotationConfig?.score_threshold)
|
||||
const { job_id: jobId }: any = await updateAnnotationStatus(appDetail.id, AnnotationEnableStatus.disable, annotationConfig?.embedding_model, annotationConfig?.score_threshold)
|
||||
await ensureJobCompleted(jobId, AnnotationEnableStatus.disable)
|
||||
await fetchAnnotationConfig()
|
||||
Toast.notify({
|
||||
@@ -205,7 +203,7 @@ const Annotation: FC<Props> = ({
|
||||
)}
|
||||
|
||||
<HeaderOpts
|
||||
appId={appId}
|
||||
appId={appDetail.id}
|
||||
controlUpdateList={controlUpdateList}
|
||||
onAdd={handleAdd}
|
||||
onAdded={() => {
|
||||
@@ -260,7 +258,7 @@ const Annotation: FC<Props> = ({
|
||||
|
||||
{isShowViewModal && (
|
||||
<ViewAnnotationModal
|
||||
appId={appId}
|
||||
appId={appDetail.id}
|
||||
isShow={isShowViewModal}
|
||||
onHide={() => setIsShowViewModal(false)}
|
||||
onRemove={async () => {
|
||||
@@ -272,7 +270,7 @@ const Annotation: FC<Props> = ({
|
||||
)}
|
||||
{isShowEdit && (
|
||||
<ConfigParamModal
|
||||
appId={appId}
|
||||
appId={appDetail.id}
|
||||
isShow
|
||||
isInit={!annotationConfig?.enabled}
|
||||
onHide={() => {
|
||||
@@ -283,12 +281,12 @@ const Annotation: FC<Props> = ({
|
||||
embeddingModel.embedding_model_name !== annotationConfig?.embedding_model?.embedding_model_name
|
||||
&& embeddingModel.embedding_provider_name !== annotationConfig?.embedding_model?.embedding_provider_name
|
||||
) {
|
||||
const { job_id: jobId }: any = await updateAnnotationStatus(appId, AnnotationEnableStatus.enable, embeddingModel, score)
|
||||
const { job_id: jobId }: any = await updateAnnotationStatus(appDetail.id, AnnotationEnableStatus.enable, embeddingModel, score)
|
||||
await ensureJobCompleted(jobId, AnnotationEnableStatus.enable)
|
||||
}
|
||||
|
||||
if (score !== annotationConfig?.score_threshold)
|
||||
await updateAnnotationScore(appId, annotationConfig?.id || '', score)
|
||||
await updateAnnotationScore(appDetail.id, annotationConfig?.id || '', score)
|
||||
|
||||
await fetchAnnotationConfig()
|
||||
Toast.notify({
|
||||
|
||||
@@ -1,265 +0,0 @@
|
||||
import type { AnnotationItem, HitHistoryItem } from './type'
|
||||
|
||||
const list: AnnotationItem[] = [
|
||||
// create some mock data
|
||||
{
|
||||
id: '1',
|
||||
question: 'What is the capital of the United States?What is the capital of the United States?What is the capital of the United States?What is the capital of the United States?What is the capital of the United States?What is the capital of the United States?What is the capital of the United States?',
|
||||
answer: 'What is the capital of the United States?What is the capital of the United States?What is the capital of the United States?What is the capital of the United States?What is the capital of the United States?What is the capital of the United States?What is the capital of the United States?',
|
||||
created_at: '2020-01-01T00:00:00Z',
|
||||
hit_count: 1,
|
||||
},
|
||||
{
|
||||
id: '2',
|
||||
question: 'What is the capital of Canada?',
|
||||
answer: 'Ottawa',
|
||||
created_at: '2020-01-02T00:00:00Z',
|
||||
hit_count: 2,
|
||||
},
|
||||
{
|
||||
id: '3',
|
||||
question: 'What is the capital of Mexico?',
|
||||
answer: 'Mexico City',
|
||||
created_at: '2020-01-03T00:00:00Z',
|
||||
hit_count: 3,
|
||||
},
|
||||
{
|
||||
id: '4',
|
||||
question: 'What is the capital of Brazil?',
|
||||
answer: 'Brasilia',
|
||||
created_at: '2020-01-04T00:00:00Z',
|
||||
hit_count: 4,
|
||||
},
|
||||
{
|
||||
id: '5',
|
||||
question: 'What is the capital of Argentina?',
|
||||
answer: 'Buenos Aires',
|
||||
created_at: '2020-01-05T00:00:00Z',
|
||||
hit_count: 5,
|
||||
},
|
||||
{
|
||||
id: '6',
|
||||
question: 'What is the capital of Chile?',
|
||||
answer: 'Santiago',
|
||||
created_at: '2020-01-06T00:00:00Z',
|
||||
hit_count: 6,
|
||||
},
|
||||
{
|
||||
id: '7',
|
||||
question: 'What is the capital of Peru?',
|
||||
answer: 'Lima',
|
||||
created_at: '2020-01-07T00:00:00Z',
|
||||
hit_count: 7,
|
||||
},
|
||||
{
|
||||
id: '8',
|
||||
question: 'What is the capital of Ecuador?',
|
||||
answer: 'Quito',
|
||||
created_at: '2020-01-08T00:00:00Z',
|
||||
hit_count: 8,
|
||||
},
|
||||
{
|
||||
id: '9',
|
||||
question: 'What is the capital of Colombia?',
|
||||
answer: 'Bogota',
|
||||
created_at: '2020-01-09T00:00:00Z',
|
||||
hit_count: 9,
|
||||
},
|
||||
]
|
||||
|
||||
export const hitHistoryList: HitHistoryItem[] = [
|
||||
// create some mock data. source can only be: API/Webapp/Explore/Debug
|
||||
{
|
||||
id: '1',
|
||||
question: 'What is the capital of the United States?What is the capital of the United States?What is the capital of the United States?What is the capital of the United States?What is the capital of the United States?What is the capital of the United States?What is the capital of the United States?',
|
||||
source: 'API',
|
||||
score: 0.9,
|
||||
created_at: '2020-01-01T00:00:00Z',
|
||||
},
|
||||
{
|
||||
id: '2',
|
||||
question: 'What is the capital of Canada?',
|
||||
source: 'Webapp',
|
||||
score: 0.8,
|
||||
created_at: '2020-01-02T00:00:00Z',
|
||||
},
|
||||
{
|
||||
id: '3',
|
||||
question: 'What is the capital of Mexico?',
|
||||
source: 'Explore',
|
||||
score: 0.7,
|
||||
created_at: '2020-01-03T00:00:00Z',
|
||||
},
|
||||
{
|
||||
id: '4',
|
||||
question: 'What is the capital of Brazil?',
|
||||
source: 'Debug',
|
||||
score: 0.6,
|
||||
created_at: '2020-01-04T00:00:00Z',
|
||||
},
|
||||
{
|
||||
id: '5',
|
||||
question: 'What is the capital of Argentina?',
|
||||
source: 'API',
|
||||
score: 0.5,
|
||||
created_at: '2020-01-05T00:00:00Z',
|
||||
},
|
||||
{
|
||||
id: '6',
|
||||
question: 'What is the capital of Chile?',
|
||||
source: 'Webapp',
|
||||
score: 0.4,
|
||||
created_at: '2020-01-06T00:00:00Z',
|
||||
},
|
||||
{
|
||||
id: '7',
|
||||
question: 'What is the capital of Peru?',
|
||||
source: 'Explore',
|
||||
score: 0.3,
|
||||
created_at: '2020-01-07T00:00:00Z',
|
||||
},
|
||||
{
|
||||
id: '8',
|
||||
question: 'What is the capital of Ecuador?',
|
||||
source: 'Debug',
|
||||
score: 0.2,
|
||||
created_at: '2020-01-08T00:00:00Z',
|
||||
},
|
||||
{
|
||||
id: '9',
|
||||
question: 'What is the capital of Colombia?',
|
||||
source: 'API',
|
||||
score: 0.1,
|
||||
created_at: '2020-01-09T00:00:00Z',
|
||||
},
|
||||
// make more mock data
|
||||
{
|
||||
id: '10',
|
||||
question: 'What is the capital of the United States?',
|
||||
source: 'API',
|
||||
score: 0.9,
|
||||
created_at: '2020-01-01T00:00:00Z',
|
||||
},
|
||||
{
|
||||
id: '11',
|
||||
question: 'What is the capital of Canada?',
|
||||
source: 'Webapp',
|
||||
score: 0.8,
|
||||
created_at: '2020-01-02T00:00:00Z',
|
||||
},
|
||||
{
|
||||
id: '12',
|
||||
question: 'What is the capital of Mexico?',
|
||||
source: 'Explore',
|
||||
score: 0.7,
|
||||
created_at: '2020-01-03T00:00:00Z',
|
||||
},
|
||||
{
|
||||
id: '13',
|
||||
question: 'What is the capital of Brazil?',
|
||||
source: 'Debug',
|
||||
score: 0.6,
|
||||
created_at: '2020-01-04T00:00:00Z',
|
||||
},
|
||||
{
|
||||
id: '14',
|
||||
question: 'What is the capital of Argentina?',
|
||||
source: 'API',
|
||||
score: 0.5,
|
||||
created_at: '2020-01-05T00:00:00Z',
|
||||
},
|
||||
{
|
||||
id: '15',
|
||||
question: 'What is the capital of Chile?',
|
||||
source: 'Webapp',
|
||||
score: 0.4,
|
||||
created_at: '2020-01-06T00:00:00Z',
|
||||
},
|
||||
{
|
||||
id: '16',
|
||||
question: 'What is the capital of Peru?',
|
||||
source: 'Explore',
|
||||
score: 0.3,
|
||||
created_at: '2020-01-07T00:00:00Z',
|
||||
},
|
||||
{
|
||||
id: '17',
|
||||
question: 'What is the capital of Ecuador?',
|
||||
source: 'Debug',
|
||||
score: 0.2,
|
||||
created_at: '2020-01-08T00:00:00Z',
|
||||
},
|
||||
{
|
||||
id: '18',
|
||||
question: 'What is the capital of Colombia?',
|
||||
source: 'API',
|
||||
score: 0.1,
|
||||
created_at: '2020-01-09T00:00:00Z',
|
||||
},
|
||||
// make more mock data
|
||||
{
|
||||
id: '19',
|
||||
question: 'What is the capital of the United States?',
|
||||
source: 'API',
|
||||
score: 0.9,
|
||||
created_at: '2020-01-01T00:00:00Z',
|
||||
},
|
||||
{
|
||||
id: '20',
|
||||
question: 'What is the capital of Canada?',
|
||||
source: 'Webapp',
|
||||
score: 0.8,
|
||||
created_at: '2020-01-02T00:00:00Z',
|
||||
},
|
||||
{
|
||||
id: '21',
|
||||
question: 'What is the capital of Mexico?',
|
||||
source: 'Explore',
|
||||
score: 0.7,
|
||||
created_at: '2020-01-03T00:00:00Z',
|
||||
},
|
||||
{
|
||||
id: '22',
|
||||
question: 'What is the capital of Brazil?',
|
||||
source: 'Debug',
|
||||
score: 0.6,
|
||||
created_at: '2020-01-04T00:00:00Z',
|
||||
},
|
||||
{
|
||||
id: '23',
|
||||
question: 'What is the capital of Argentina?',
|
||||
source: 'API',
|
||||
score: 0.5,
|
||||
created_at: '2020-01-05T00:00:00Z',
|
||||
},
|
||||
{
|
||||
id: '24',
|
||||
question: 'What is the capital of Chile?',
|
||||
source: 'Webapp',
|
||||
score: 0.4,
|
||||
created_at: '2020-01-06T00:00:00Z',
|
||||
},
|
||||
{
|
||||
id: '25',
|
||||
question: 'What is the capital of Peru?',
|
||||
source: 'Explore',
|
||||
score: 0.3,
|
||||
created_at: '2020-01-07T00:00:00Z',
|
||||
},
|
||||
{
|
||||
id: '26',
|
||||
question: 'What is the capital of Ecuador?',
|
||||
source: 'Debug',
|
||||
score: 0.2,
|
||||
created_at: '2020-01-08T00:00:00Z',
|
||||
},
|
||||
{
|
||||
id: '27',
|
||||
question: 'What is the capital of Colombia?',
|
||||
source: 'API',
|
||||
score: 0.1,
|
||||
created_at: '2020-01-09T00:00:00Z',
|
||||
},
|
||||
]
|
||||
|
||||
export default list
|
||||
Reference in New Issue
Block a user