Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
D
dify
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
ai-tech
dify
Commits
eed5fdd7
Unverified
Commit
eed5fdd7
authored
Jan 11, 2024
by
crazywoola
Committed by
GitHub
Jan 11, 2024
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
chore: remove unused code (#1989)
parent
f7939c75
Changes
12
Hide whitespace changes
Inline
Side-by-side
Showing
12 changed files
with
7 additions
and
298 deletions
+7
-298
page.tsx
...monLayout)/app/(appDetailLayout)/[appId]/develop/page.tsx
+2
-5
index.tsx
web/app/components/develop/index.tsx
+2
-5
i18n-server.tsx
web/app/components/i18n-server.tsx
+2
-3
i18n.tsx
web/app/components/i18n.tsx
+1
-3
index.tsx
web/app/components/share/text-generation/history/index.tsx
+0
-79
en.json
web/dictionaries/en.json
+0
-27
zh-Hans.json
web/dictionaries/zh-Hans.json
+0
-27
server.ts
web/i18n/server.ts
+0
-14
middleware.ts
web/middleware.ts
+0
-44
history.ts
web/models/history.ts
+0
-11
index.ts
web/test/factories/index.ts
+0
-36
test_util.ts
web/test/test_util.ts
+0
-44
No files found.
web/app/(commonLayout)/app/(appDetailLayout)/[appId]/develop/page.tsx
View file @
eed5fdd7
import
React
from
'react'
import
React
from
'react'
import
{
getDictionary
}
from
'@/i18n/server'
import
{
type
Locale
}
from
'@/i18n'
import
{
type
Locale
}
from
'@/i18n'
import
DevelopMain
from
'@/app/components/develop'
import
DevelopMain
from
'@/app/components/develop'
...
@@ -8,11 +7,9 @@ export type IDevelopProps = {
...
@@ -8,11 +7,9 @@ export type IDevelopProps = {
}
}
const
Develop
=
async
({
const
Develop
=
async
({
params
:
{
locale
,
appId
},
params
:
{
appId
},
}:
IDevelopProps
)
=>
{
}:
IDevelopProps
)
=>
{
const
dictionary
=
await
getDictionary
(
locale
)
return
<
DevelopMain
appId=
{
appId
}
/>
return
<
DevelopMain
appId=
{
appId
}
dictionary=
{
dictionary
}
/>
}
}
export
default
Develop
export
default
Develop
web/app/components/develop/index.tsx
View file @
eed5fdd7
...
@@ -9,20 +9,17 @@ import { fetchAppDetail } from '@/service/apps'
...
@@ -9,20 +9,17 @@ import { fetchAppDetail } from '@/service/apps'
type
IDevelopMainProps
=
{
type
IDevelopMainProps
=
{
appId
:
string
appId
:
string
dictionary
:
any
}
}
const
DevelopMain
=
({
appId
,
dictionary
}:
IDevelopMainProps
)
=>
{
const
DevelopMain
=
({
appId
}:
IDevelopMainProps
)
=>
{
const
commonParams
=
{
url
:
'/apps'
,
id
:
appId
}
const
commonParams
=
{
url
:
'/apps'
,
id
:
appId
}
const
{
data
:
appDetail
}
=
useSWR
(
commonParams
,
fetchAppDetail
)
const
{
data
:
appDetail
}
=
useSWR
(
commonParams
,
fetchAppDetail
)
const
{
t
}
=
useTranslation
()
const
{
t
}
=
useTranslation
()
// const serverApi = `${appDetail?.site?.app_base_url}/api/${appDetail?.site?.access_token}`
return
(
return
(
<
div
className=
'relative flex flex-col h-full overflow-hidden'
>
<
div
className=
'relative flex flex-col h-full overflow-hidden'
>
<
div
className=
'flex items-center justify-between flex-shrink-0 px-6 border-b border-solid py-2 border-b-gray-100'
>
<
div
className=
'flex items-center justify-between flex-shrink-0 px-6 border-b border-solid py-2 border-b-gray-100'
>
<
div
className=
'text-lg font-medium text-gray-900'
>
{
dictionary
.
app
?.
develop
?.
title
}
</
div
>
<
div
className=
'text-lg font-medium text-gray-900'
></
div
>
<
div
className=
'flex items-center flex-wrap gap-y-1'
>
<
div
className=
'flex items-center flex-wrap gap-y-1'
>
<
InputCopy
className=
'flex-shrink-0 mr-1 w-52 sm:w-80'
value=
{
appDetail
?.
api_base_url
}
>
<
InputCopy
className=
'flex-shrink-0 mr-1 w-52 sm:w-80'
value=
{
appDetail
?.
api_base_url
}
>
<
div
className=
{
`ml-2 border border-gray-200 border-solid flex-shrink-0 px-2 py-0.5 rounded-[6px] text-gray-500 text-[0.625rem] ${s.customApi}`
}
>
<
div
className=
{
`ml-2 border border-gray-200 border-solid flex-shrink-0 px-2 py-0.5 rounded-[6px] text-gray-500 text-[0.625rem] ${s.customApi}`
}
>
...
...
web/app/components/i18n-server.tsx
View file @
eed5fdd7
import
React
from
'react'
import
React
from
'react'
import
I18N
from
'./i18n'
import
I18N
from
'./i18n'
import
{
ToastProvider
}
from
'./base/toast'
import
{
ToastProvider
}
from
'./base/toast'
import
{
get
Dictionary
,
get
LocaleOnServer
}
from
'@/i18n/server'
import
{
getLocaleOnServer
}
from
'@/i18n/server'
export
type
II18NServerProps
=
{
export
type
II18NServerProps
=
{
children
:
React
.
ReactNode
children
:
React
.
ReactNode
...
@@ -11,10 +11,9 @@ const I18NServer = async ({
...
@@ -11,10 +11,9 @@ const I18NServer = async ({
children
,
children
,
}:
II18NServerProps
)
=>
{
}:
II18NServerProps
)
=>
{
const
locale
=
getLocaleOnServer
()
const
locale
=
getLocaleOnServer
()
const
dictionary
=
await
getDictionary
(
locale
)
return
(
return
(
<
I18N
{
...
{
locale
,
dictionary
}}
>
<
I18N
{
...
{
locale
}}
>
<
ToastProvider
>
{
children
}
</
ToastProvider
>
<
ToastProvider
>
{
children
}
</
ToastProvider
>
</
I18N
>
</
I18N
>
)
)
...
...
web/app/components/i18n.tsx
View file @
eed5fdd7
...
@@ -9,12 +9,10 @@ import { setLocaleOnClient } from '@/i18n/client'
...
@@ -9,12 +9,10 @@ import { setLocaleOnClient } from '@/i18n/client'
export
type
II18nProps
=
{
export
type
II18nProps
=
{
locale
:
Locale
locale
:
Locale
dictionary
:
Record
<
string
,
any
>
children
:
React
.
ReactNode
children
:
React
.
ReactNode
}
}
const
I18n
:
FC
<
II18nProps
>
=
({
const
I18n
:
FC
<
II18nProps
>
=
({
locale
,
locale
,
dictionary
,
children
,
children
,
})
=>
{
})
=>
{
useEffect
(()
=>
{
useEffect
(()
=>
{
...
@@ -24,7 +22,7 @@ const I18n: FC<II18nProps> = ({
...
@@ -24,7 +22,7 @@ const I18n: FC<II18nProps> = ({
return
(
return
(
<
I18NContext
.
Provider
value=
{
{
<
I18NContext
.
Provider
value=
{
{
locale
,
locale
,
i18n
:
dictionary
,
i18n
:
{}
,
setLocaleOnClient
,
setLocaleOnClient
,
}
}
>
}
}
>
{
children
}
{
children
}
...
...
web/app/components/share/text-generation/history/index.tsx
deleted
100644 → 0
View file @
f7939c75
'use client'
import
React
,
{
useState
}
from
'react'
import
useSWR
from
'swr'
import
{
ChevronDownIcon
,
ChevronUpIcon
,
}
from
'@heroicons/react/24/outline'
import
{
fetchHistories
}
from
'@/models/history'
import
type
{
History
as
HistoryItem
}
from
'@/models/history'
import
Loading
from
'@/app/components/base/loading'
import
{
mockAPI
}
from
'@/test/test_util'
mockAPI
()
export
type
IHistoryProps
=
{
dictionary
:
any
}
const
HistoryCard
=
(
{
history
}:
{
history
:
HistoryItem
},
)
=>
{
return
(
<
div
className=
'p-4 h-32 bg-gray-50 border-gray-200 rounded-lg relative flex flex-col justify-between items-center cursor-pointer'
>
<
div
className=
'text-gray-700 text-sm'
>
{
history
.
source
}
</
div
>
<
div
className=
"absolute inset-0 flex items-center m-4"
aria
-
hidden=
"true"
>
<
div
className=
"w-full border-t border-gray-100"
/>
</
div
>
<
div
className=
'text-gray-700 text-sm'
>
{
history
.
target
}
</
div
>
</
div
>
)
}
const
History
=
({
dictionary
,
}:
IHistoryProps
)
=>
{
const
{
data
,
error
}
=
useSWR
(
'http://localhost:3000/api/histories'
,
fetchHistories
)
const
[
showHistory
,
setShowHistory
]
=
useState
(
false
)
const
DivideLine
=
()
=>
{
return
<
div
className=
"mt-6 relative"
>
{
/* divider line */
}
<
div
className=
"absolute inset-0 flex items-center"
aria
-
hidden=
"true"
>
<
div
className=
"w-full border-t border-gray-300"
/>
</
div
>
<
div
className=
"relative flex justify-center flex-col items-center"
>
{
!
showHistory
?
<
ChevronUpIcon
className=
"h-3 w-3 text-gray-500"
aria
-
hidden=
"true"
/>
:
<
div
className=
'h-3 w-3'
/>
}
<
span
className=
"px-2 bg-white text-sm font-medium text-gray-600 cursor-pointer"
>
{
dictionary
.
app
.
textGeneration
.
history
}
</
span
>
{
!
showHistory
?
<
div
className=
'h-3 w-3'
/>
:
<
ChevronDownIcon
className=
"h-3 w-3 text-gray-500"
aria
-
hidden=
"true"
/>
}
</
div
>
</
div
>
}
if
(
error
)
return
<
div
>
failed to load
</
div
>
if
(
!
data
)
return
<
Loading
/>
return
showHistory
?
<
div
className=
'w-1/2 block fixed bottom-0 right-0 px-10 py-4'
onClick=
{
()
=>
setShowHistory
(
v
=>
!
v
)
}
>
<
DivideLine
/>
<
div
className=
'mt-4 grid grid-cols-3 space-x-4 h-[400px] overflow-auto'
>
{
data
.
histories
.
map
((
item
:
HistoryItem
)
=>
<
HistoryCard
key=
{
item
.
id
}
history=
{
item
}
/>)
}
</
div
>
</
div
>
:
<
div
className=
'w-1/2 block fixed bottom-0 right-0 px-10 py-4'
onClick=
{
()
=>
setShowHistory
(
true
)
}
>
<
DivideLine
/>
</
div
>
}
export
default
History
web/dictionaries/en.json
deleted
100644 → 0
View file @
f7939c75
{
"common"
:
{
"confrim"
:
"Confirm"
,
"cancel"
:
"Cancel"
,
"refresh"
:
"Refresh"
},
"index"
:
{
"welcome"
:
"Welcome to "
},
"signin"
:
{},
"app"
:
{
"overview"
:
{
"title"
:
"Overview"
,
"To get started,"
:
"To get started,"
,
"enter your OpenAI API key below"
:
"enter your OpenAI API key below"
,
"Get your API key from OpenAI dashboard"
:
"Get your API key from OpenAI dashboard"
,
"Token Usage"
:
"Token Usage"
},
"logs"
:
{
"title"
:
"Logs"
,
"description"
:
"You can review and annotate the conversation and response text of the LLM, which will be used for subsequent model fine-tuning."
},
"textGeneration"
:
{
"history"
:
"History"
}
}
}
\ No newline at end of file
web/dictionaries/zh-Hans.json
deleted
100644 → 0
View file @
f7939c75
{
"common"
:
{
"confrim"
:
"确定"
,
"cancel"
:
"取消"
,
"refresh"
:
"刷新"
},
"index"
:
{
"welcome"
:
"欢迎来到 "
},
"signin"
:
{},
"app"
:
{
"overview"
:
{
"title"
:
"概览"
,
"To get started,"
:
"从这里开始"
,
"enter your OpenAI API key below 👇"
:
"输入你的 OpenAI API 密钥👇"
,
"Get your API key from OpenAI dashboard"
:
"去 OpenAI 管理面板获取"
,
"Token Usage"
:
"Token 消耗"
},
"logs"
:
{
"title"
:
"日志"
,
"description"
:
"日志记录了应用的运行情况,包括用户的输入和 AI 的回复。"
},
"textGeneration"
:
{
"history"
:
"历史"
}
}
}
\ No newline at end of file
web/i18n/server.ts
View file @
eed5fdd7
...
@@ -27,17 +27,3 @@ export const getLocaleOnServer = (): Locale => {
...
@@ -27,17 +27,3 @@ export const getLocaleOnServer = (): Locale => {
const
matchedLocale
=
match
(
languages
,
locales
,
i18n
.
defaultLocale
)
as
Locale
const
matchedLocale
=
match
(
languages
,
locales
,
i18n
.
defaultLocale
)
as
Locale
return
matchedLocale
return
matchedLocale
}
}
// We enumerate all dictionaries here for better linting and typescript support
// We also get the default import for cleaner types
const
dictionaries
=
{
'en'
:
()
=>
import
(
'@/dictionaries/en.json'
).
then
(
module
=>
module
.
default
),
'zh-Hans'
:
()
=>
import
(
'@/dictionaries/zh-Hans.json'
).
then
(
module
=>
module
.
default
),
}
as
{
[
locale
:
string
]:
()
=>
Promise
<
any
>
}
export
const
getDictionary
=
async
(
locale
:
Locale
=
'en'
)
=>
{
try
{
return
await
dictionaries
[
locale
]()
}
catch
(
e
)
{
console
.
error
(
'locale not found'
,
locale
)
}
}
web/middleware.ts
deleted
100644 → 0
View file @
f7939c75
import
{
match
}
from
'@formatjs/intl-localematcher'
import
Negotiator
from
'negotiator'
import
{
NextResponse
}
from
'next/server'
import
type
{
NextRequest
}
from
'next/server'
import
type
{
Locale
}
from
'./i18n'
import
{
i18n
}
from
'./i18n'
export
const
getLocale
=
(
request
:
NextRequest
):
Locale
=>
{
// @ts-expect-error locales are readonly
const
locales
:
Locale
[]
=
i18n
.
locales
let
languages
:
string
[]
|
undefined
// get locale from cookie
const
localeCookie
=
request
.
cookies
.
get
(
'locale'
)
languages
=
localeCookie
?.
value
?
[
localeCookie
.
value
]
:
[]
if
(
!
languages
.
length
)
{
// Negotiator expects plain object so we need to transform headers
const
negotiatorHeaders
:
Record
<
string
,
string
>
=
{}
request
.
headers
.
forEach
((
value
,
key
)
=>
(
negotiatorHeaders
[
key
]
=
value
))
// Use negotiator and intl-localematcher to get best locale
languages
=
new
Negotiator
({
headers
:
negotiatorHeaders
}).
languages
()
}
// match locale
let
matchedLocale
:
Locale
=
i18n
.
defaultLocale
try
{
// If languages is ['*'], Error would happen in match function.
matchedLocale
=
match
(
languages
,
locales
,
i18n
.
defaultLocale
)
as
Locale
}
catch
(
e
)
{}
return
matchedLocale
}
export
const
middleware
=
async
(
request
:
NextRequest
)
=>
{
const
pathname
=
request
.
nextUrl
.
pathname
if
(
/
\.(
css|js
(
on
)?
|ico|svg|png
)
$/
.
test
(
pathname
))
return
const
locale
=
getLocale
(
request
)
const
response
=
NextResponse
.
next
()
response
.
cookies
.
set
(
'locale'
,
locale
)
return
response
}
web/models/history.ts
deleted
100644 → 0
View file @
f7939c75
export
type
History
=
{
id
:
string
source
:
string
target
:
string
}
export
type
HistoryResponse
=
{
histories
:
History
[]
}
export
const
fetchHistories
=
(
url
:
string
)
=>
fetch
(
url
).
then
<
HistoryResponse
>
(
r
=>
r
.
json
())
web/test/factories/index.ts
View file @
eed5fdd7
import
{
Factory
}
from
'miragejs'
import
{
Factory
}
from
'miragejs'
import
{
faker
}
from
'@faker-js/faker'
import
{
faker
}
from
'@faker-js/faker'
import
type
{
History
}
from
'@/models/history'
import
type
{
User
}
from
'@/models/user'
import
type
{
User
}
from
'@/models/user'
import
type
{
Log
}
from
'@/models/log'
export
const
seedHistory
=
()
=>
{
return
Factory
.
extend
<
Partial
<
History
>>
({
source
()
{
return
faker
.
address
.
streetAddress
()
},
target
()
{
return
faker
.
address
.
streetAddress
()
},
})
}
export
const
seedUser
=
()
=>
{
export
const
seedUser
=
()
=>
{
return
Factory
.
extend
<
Partial
<
User
>>
({
return
Factory
.
extend
<
Partial
<
User
>>
({
...
@@ -41,26 +28,3 @@ export const seedUser = () => {
...
@@ -41,26 +28,3 @@ export const seedUser = () => {
},
},
})
})
}
}
export
const
seedLog
=
()
=>
{
return
Factory
.
extend
<
Partial
<
Log
>>
({
get
key
()
{
return
faker
.
datatype
.
uuid
()
},
get
conversationId
()
{
return
faker
.
datatype
.
uuid
()
},
get
question
()
{
return
faker
.
lorem
.
sentence
()
},
get
answer
()
{
return
faker
.
lorem
.
sentence
()
},
get
userRate
()
{
return
faker
.
datatype
.
number
(
5
)
},
get
adminRate
()
{
return
faker
.
datatype
.
number
(
5
)
},
})
}
web/test/test_util.ts
deleted
100644 → 0
View file @
f7939c75
import
{
Model
,
createServer
}
from
'miragejs'
import
type
{
User
}
from
'@/models/user'
import
type
{
History
}
from
'@/models/history'
import
type
{
Log
}
from
'@/models/log'
import
{
seedHistory
,
seedLog
,
seedUser
}
from
'@/test/factories'
export
function
mockAPI
()
{
if
(
process
.
env
.
NODE_ENV
===
'development'
)
{
console
.
log
(
'in development mode, starting mock server ... '
)
const
server
=
createServer
({
environment
:
process
.
env
.
NODE_ENV
,
factories
:
{
user
:
seedUser
(),
history
:
seedHistory
(),
log
:
seedLog
(),
},
models
:
{
user
:
Model
.
extend
<
Partial
<
User
>>
({}),
history
:
Model
.
extend
<
Partial
<
History
>>
({}),
log
:
Model
.
extend
<
Partial
<
Log
>>
({}),
},
routes
()
{
this
.
namespace
=
'/api'
this
.
get
(
'/users'
,
()
=>
{
return
this
.
schema
.
all
(
'user'
)
})
this
.
get
(
'/histories'
,
()
=>
{
return
this
.
schema
.
all
(
'history'
)
})
this
.
get
(
'/logs'
,
()
=>
{
return
this
.
schema
.
all
(
'log'
)
})
},
seeds
(
server
)
{
server
.
createList
(
'user'
,
20
)
server
.
createList
(
'history'
,
50
)
server
.
createList
(
'log'
,
50
)
},
})
return
server
}
console
.
log
(
'Not in development mode, not starting mock server ... '
)
return
null
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment