:feat 新增模型配置页面和相关功能

- 新增模型配置页面组件和路由
- 实现模型配置表单和相关逻辑- 添加全局配置入口和功能- 优化首页布局和样式- 新增 404 页面组件
- 更新部分组件样式和结构
This commit is contained in:
Jefferyhcool
2025-04-22 17:01:02 +08:00
parent 2aad103a77
commit bb974b0b89
95 changed files with 7723 additions and 1697 deletions

View File

@@ -1,124 +1,120 @@
import { create } from 'zustand'
import { persist } from 'zustand/middleware'
import {delete_task} from "@/services/note.ts";
import { delete_task } from '@/services/note.ts'
export type TaskStatus = 'PENDING' | 'RUNNING' | 'SUCCESS' | 'FAILD'
export interface AudioMeta {
cover_url: string
duration: number
file_path: string
platform: string
raw_info: any
title: string
video_id: string
cover_url: string
duration: number
file_path: string
platform: string
raw_info: any
title: string
video_id: string
}
export interface Segment {
start: number
end: number
text: string
start: number
end: number
text: string
}
export interface Transcript {
full_text: string
language: string
raw: any
segments: Segment[]
full_text: string
language: string
raw: any
segments: Segment[]
}
export interface Task {
id: string
markdown: string
transcript: Transcript
status: TaskStatus
audioMeta: AudioMeta
createdAt: string
id: string
markdown: string
transcript: Transcript
status: TaskStatus
audioMeta: AudioMeta
createdAt: string
}
interface TaskStore {
tasks: Task[]
currentTaskId: string | null
platform:string|null
addPendingTask: (taskId: string, platform: string) => void
updateTaskContent: (id: string, data: Partial<Omit<Task, "id" | "createdAt">>) => void
removeTask: (id: string) => void
clearTasks: () => void
setCurrentTask: (taskId: string | null) => void
getCurrentTask: () => Task | null
tasks: Task[]
currentTaskId: string | null
addPendingTask: (taskId: string, platform: string) => void
updateTaskContent: (id: string, data: Partial<Omit<Task, 'id' | 'createdAt'>>) => void
removeTask: (id: string) => void
clearTasks: () => void
setCurrentTask: (taskId: string | null) => void
getCurrentTask: () => Task | null
}
export const useTaskStore = create<TaskStore>()(
persist(
(set,get) => ({
tasks: [],
currentTaskId: null,
persist(
(set, get) => ({
tasks: [],
currentTaskId: null,
addPendingTask: (taskId: string,platform: string) =>
set((state) => ({
tasks: [
{
id: taskId,
status: "PENDING",
markdown: "",
platform:platform,
transcript: {
full_text: "",
language: "",
raw: null,
segments: [],
},
createdAt: new Date().toISOString(),
audioMeta: {
cover_url: "",
duration: 0,
file_path: "",
platform: '',
raw_info: null,
title: "",
video_id: "",
},
},
...state.tasks,
],
currentTaskId: taskId, // 默认设置为当前任务
})),
updateTaskContent: (id, data) =>
set((state) => ({
tasks: state.tasks.map((task) =>
task.id === id ? { ...task, ...data } : task
),
})),
getCurrentTask: () => {
const currentTaskId = get().currentTaskId
return get().tasks.find((task) => task.id === currentTaskId) || null
addPendingTask: (taskId: string, platform: string) =>
set(state => ({
tasks: [
{
id: taskId,
status: 'PENDING',
markdown: '',
platform: platform,
transcript: {
full_text: '',
language: '',
raw: null,
segments: [],
},
createdAt: new Date().toISOString(),
audioMeta: {
cover_url: '',
duration: 0,
file_path: '',
platform: '',
raw_info: null,
title: '',
video_id: '',
},
},
removeTask: async (id) => {
const task = get().tasks.find((t) => t.id === id)
...state.tasks,
],
currentTaskId: taskId, // 默认设置为当前任务
})),
// 更新 Zustand 状态
set((state) => ({
tasks: state.tasks.filter((task) => task.id !== id),
currentTaskId: state.currentTaskId === id ? null : state.currentTaskId,
}))
updateTaskContent: (id, data) =>
set(state => ({
tasks: state.tasks.map(task => (task.id === id ? { ...task, ...data } : task)),
})),
getCurrentTask: () => {
const currentTaskId = get().currentTaskId
return get().tasks.find(task => task.id === currentTaskId) || null
},
removeTask: async id => {
const task = get().tasks.find(t => t.id === id)
// 调用后端删除接口(如果找到了任务)
if (task) {
await delete_task({
video_id: task.audioMeta.video_id,
platform: task.platform,
})
}
},
// 更新 Zustand 状态
set(state => ({
tasks: state.tasks.filter(task => task.id !== id),
currentTaskId: state.currentTaskId === id ? null : state.currentTaskId,
}))
clearTasks: () => set({ tasks: [], currentTaskId: null }),
setCurrentTask: (taskId) => set({ currentTaskId: taskId }),
}),
{
name: 'task-storage',
// 调用后端删除接口(如果找到了任务)
if (task) {
await delete_task({
video_id: task.audioMeta.video_id,
platform: task.platform,
})
}
)
},
clearTasks: () => set({ tasks: [], currentTaskId: null }),
setCurrentTask: taskId => set({ currentTaskId: taskId }),
}),
{
name: 'task-storage',
}
)
)