This commit is contained in:
2026-02-24 21:22:14 +08:00
parent d71c79c87a
commit bf80e17514
3 changed files with 23 additions and 26 deletions

View File

@@ -2,18 +2,15 @@
```bash
# 使用以下命令检查代码合法性
pnpm run build
pnpm eslint
```
- **Next.js 16** 使用 App Router 和 standalone 输出模式
- **React 19** 启用 React Compiler 进行优化
- **TypeScript** 严格模式和 ES2023 目标
- **Tailwind CSS v4** 样式框架
- **PostgreSQL** + **Prisma ORM**(自定义输出目录:`src/generated/prisma`
- **better-auth** 身份验证(邮箱/密码)
- **next-intl** 国际化支持en-US, zh-CN, ja-JP, ko-KR, de-DE, fr-FR, it-IT, ug-CN
- **阿里云千问 TTS** (qwen3-tts-flash) 文本转语音
- Next.js 16 使用 App Router
- TypeScript 严格模式和 ES2023 目标
- better-auth 身份验证(邮箱/密码)
- next-intl 国际化支持en-US, zh-CN, ja-JP, ko-KR, de-DE, fr-FR, it-IT, ug-CN
- 阿里云千问 TTS (qwen3-tts-flash) 文本转语音
- 使用 pnpm而不是 npm 或 yarn
- 应用使用 TypeScript 严格模式 - 确保类型安全
- 所有面向用户的文本都需要国际化

View File

@@ -24,25 +24,25 @@ export function useSubtitleSync() {
const seek = useSrtPlayerStore((state) => state.seek);
const pause = useSrtPlayerStore((state) => state.pause);
// 获取当前时间对应的字幕索引
const getCurrentSubtitleIndex = (time: number): number | null => {
for (let i = 0; i < subtitleData.length; i++) {
const subtitle = subtitleData[i];
if (time >= subtitle.start && time <= subtitle.end) {
return i;
}
}
return null;
};
// 检查是否需要自动暂停
const shouldAutoPause = (subtitle: { start: number; end: number }, time: number): boolean => {
return autoPause && time >= subtitle.end - 0.2 && time < subtitle.end;
};
// 同步循环
useEffect(() => {
const syncSubtitles = () => {
// 获取当前时间对应的字幕索引
const getCurrentSubtitleIndex = (time: number): number | null => {
for (let i = 0; i < subtitleData.length; i++) {
const subtitle = subtitleData[i];
if (time >= subtitle.start && time <= subtitle.end) {
return i;
}
}
return null;
};
// 检查是否需要自动暂停
const shouldAutoPause = (subtitle: { start: number; end: number }, time: number): boolean => {
return autoPause && time >= subtitle.end - 0.2 && time < subtitle.end;
};
const currentIndex = getCurrentSubtitleIndex(currentTime);
// 检查字幕是否发生变化

View File

@@ -134,7 +134,7 @@ export function Progress({
</div>
</div>
{showLabel && (
<div className="ml-3 text-sm font-medium text-gray-700 min-w-[3rem] text-right">
<div className="ml-3 text-sm font-medium text-gray-700 min-w-12 text-right">
{formatLabel()}
</div>
)}