提示词保存

This commit is contained in:
2025-11-13 01:06:28 +08:00
parent fc7d2ccea5
commit c652d0ddf3
49 changed files with 4072 additions and 2452 deletions

View File

@@ -107,34 +107,13 @@ export const useUserStore = defineStore('user', () => {
语音文本转换 Hook将音频文件转换为文本转录。
#### 初始化(在应用启动时)
```javascript
// 在应用的 API 服务文件中(如 common.js
import { createApiService } from '@gold/config/api/services'
import { setApiService } from '@gold/hooks/web/useVoiceText'
import http from '@/api/http'
import { getAuthHeader } from '@/utils/token-manager'
import { API_BASE } from '@gold/config/api'
// 创建 API 服务实例
const apiService = createApiService({
http,
getAuthHeader,
baseUrl: API_BASE.TIKHUB_APP,
})
// 设置全局 API 服务(供 useVoiceText hook 使用)
setApiService(apiService)
```
#### 使用方式
```javascript
import useVoiceText from '@gold/hooks/web/useVoiceText'
import type { AudioItem } from '@gold/config/types'
// 在组件中使用
// 在组件中使用(无需任何初始化)
const { getVoiceText } = useVoiceText()
const audioList: AudioItem[] = [
@@ -145,6 +124,11 @@ const transcriptions = await getVoiceText(audioList)
// transcriptions: [{ key: 'url', value: 'transcribed text', audio_url: '...' }]
```
#### 说明
`useVoiceText` Hook 直接使用 mono 级别的 `TikHubService`,无需任何初始化或配置。
所有 API 服务都在 `@gold/api/services` 中统一管理,开箱即用。
#### 类型定义
```typescript
@@ -159,7 +143,8 @@ import type {
- `vue`: Vue 3 Composition API
- `axios`: HTTP 请求库(用于 useUserInfo
- `@gold/config/api`: 公共 API 配置
- `@gold/config/api/services`: 公共 API 服务创建器
- `@gold/api/services`: Mono 级别的 API 服务
- `@gold/api/axios/client`: Mono 级别的 Axios 客户端
- `@gold/config/types`: 公共类型定义
## 🔧 配置要求

View File

@@ -106,8 +106,6 @@ export function useUserInfo(options = {}) {
// code 为 0 或 200 表示成功
if (response.data.code === 0 || response.data.code === 200) {
data = response.data.data || response.data
} else {
throw new Error(response.data.msg || response.data.message || '获取用户信息失败')
}
} else {
// 没有 code 字段,直接使用 data
@@ -118,8 +116,6 @@ export function useUserInfo(options = {}) {
if (data) {
userInfo.value = data
return data
} else {
throw new Error('获取用户信息失败:响应数据为空')
}
} catch (err) {
error.value = err

View File

@@ -6,28 +6,12 @@ import type {
TranscriptionData
} from '@gold/config/types'
/**
* API 服务接口(需要从应用层注入)
*/
interface ApiService {
videoToCharacters: (data: { fileLinkList: string[] }) => Promise<{ data: string }>
}
// 全局 API 服务实例(由应用层设置)
let apiServiceInstance: ApiService | null = null
/**
* 设置 API 服务实例
* @param service - API 服务对象
*/
export function setApiService(service: ApiService) {
apiServiceInstance = service
}
// 直接导入 TikHub 服务,无需全局注入
import { TikHubService } from '@gold/api/services'
/**
* 将音频列表转换为文本转录
* @param list - 音频项列表
* @param apiService - API 服务实例(可选,如果已通过 setApiService 设置则不需要)
* @returns 转录结果数组
* @throws 当转录过程出错时抛出错误
*
@@ -37,18 +21,10 @@ export function setApiService(service: ApiService) {
* console.log(transcriptions) // [{ key: 'url', value: 'transcribed text' }]
*/
export async function getVoiceText(
list: AudioItem[],
apiService?: ApiService
list: AudioItem[]
): Promise<TranscriptionResult[]> {
// 使用传入的 apiService 或全局实例
const service = apiService || apiServiceInstance
if (!service) {
throw new Error('getVoiceText: 需要提供 API 服务实例。请使用 setApiService() 设置或传入 apiService 参数')
}
// 调用API将视频转换为文本
const ret = await service.videoToCharacters({
// 直接使用 TikHub 服务
const ret = await TikHubService.videoToCharacters({
fileLinkList: list.map(item => item.audio_url),
})
@@ -85,28 +61,20 @@ export async function getVoiceText(
* Hook 返回值接口
*/
interface UseVoiceTextReturn {
getVoiceText: (list: AudioItem[], apiService?: ApiService) => Promise<TranscriptionResult[]>
getVoiceText: (list: AudioItem[]) => Promise<TranscriptionResult[]>
}
/**
* 语音文本转换 Hook
* @param apiService - API 服务实例(可选,如果已通过 setApiService 设置则不需要)
* @returns 包含 getVoiceText 方法的对象
*
* @example
* // 方式一:使用全局设置的 API 服务
* setApiService(myApiService)
* const { getVoiceText } = useVoiceText()
* const result = await getVoiceText(audioList)
*
* @example
* // 方式二:传入 API 服务实例
* const { getVoiceText } = useVoiceText()
* const result = await getVoiceText(audioList, myApiService)
*/
export default function useVoiceText(apiService?: ApiService): UseVoiceTextReturn {
export default function useVoiceText(): UseVoiceTextReturn {
return {
getVoiceText: (list: AudioItem[]) => getVoiceText(list, apiService)
getVoiceText
}
}