mirror of
https://github.com/toeverything/AFFiNE.git
synced 2026-07-15 17:16:16 +08:00
chore(server): improve transcript stability (#13821)
<!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **New Features** * Enhanced audio/video detection for MP4 files to better distinguish audio-only vs. video. * **Dependencies** * Added MP4 parsing dependency and updated AI provider libraries (Anthropic, Google, OpenAI, etc.). * **Bug Fixes** * Tightened authentication state validation for magic-link/OTP flows. * Stricter space-join validation to reject invalid client types/versions. * Improved transcript entry deduplication and data handling. * **API** * Transcript submit payload now requires infos and removes deprecated url/mimeType fields. <!-- end of auto-generated comment: release notes by coderabbit.ai -->
This commit is contained in:
@@ -171,11 +171,11 @@ export class CopilotTranscriptionService {
|
||||
if (payload.success) {
|
||||
let { url, mimeType, infos } = payload.data;
|
||||
infos = infos || [];
|
||||
if (url && mimeType) {
|
||||
if (url && mimeType && !infos.find(i => i.url === url)) {
|
||||
infos.push({ url, mimeType });
|
||||
}
|
||||
|
||||
ret.infos = this.mergeInfos(infos, url, mimeType);
|
||||
ret.infos = infos;
|
||||
if (job.status === AiJobStatus.claimed) {
|
||||
ret.transcription = payload.data;
|
||||
}
|
||||
@@ -239,22 +239,6 @@ export class CopilotTranscriptionService {
|
||||
}
|
||||
}
|
||||
|
||||
// TODO(@darkskygit): remove after old server down
|
||||
private mergeInfos(
|
||||
infos?: AudioBlobInfos | null,
|
||||
url?: string | null,
|
||||
mimeType?: string | null
|
||||
) {
|
||||
if (url && mimeType) {
|
||||
if (infos) {
|
||||
infos.push({ url, mimeType });
|
||||
} else {
|
||||
infos = [{ url, mimeType }];
|
||||
}
|
||||
}
|
||||
return infos || [];
|
||||
}
|
||||
|
||||
private convertTime(time: number, offset = 0) {
|
||||
time = time + offset;
|
||||
const minutes = Math.floor(time / 60);
|
||||
@@ -298,14 +282,10 @@ export class CopilotTranscriptionService {
|
||||
jobId,
|
||||
infos,
|
||||
modelId,
|
||||
// @deprecated
|
||||
url,
|
||||
mimeType,
|
||||
}: Jobs['copilot.transcript.submit']) {
|
||||
try {
|
||||
const blobInfos = this.mergeInfos(infos, url, mimeType);
|
||||
const transcriptions = await Promise.all(
|
||||
Array.from(blobInfos.entries()).map(([idx, { url, mimeType }]) =>
|
||||
Array.from(infos.entries()).map(([idx, { url, mimeType }]) =>
|
||||
this.callTranscript(url, mimeType, idx * 10 * 60, modelId)
|
||||
)
|
||||
);
|
||||
|
||||
Reference in New Issue
Block a user