feat(cli): реализован шаг 5 — CLI-связка всех модулей с исправлениями из ревью
- Зачем:
- шаг 5 плана: нужен рабочий CLI-happy path, связывающий utils / transcriber / formatter.
- ревью этапов 4–5 выявило два medium-бага в formatter и отсутствие тестов для CLI.
- Что:
- cli.py: все опции по PRD 3.2 (--model, --language, --output, --device, --compute-type, --verbose),
rich Status + stderr-консоль, предупреждение на пустую речь, статистика времени.
- transcriber.py: добавлена ensure_model_available() с проверкой кэша HF и валидацией
локальной директории; on_status callback для передачи прогресса в CLI; обработка
ImportError при отсутствии socksio через SOCKS proxy.
- formatter.py: исправлен overflow в format_timestamp (0.995 → 00:01.00 вместо 00:00.100);
сегменты теперь пишутся с явным пробелом и strip() независимо от whisper-формата текста.
- deps: добавлен socksio>=1.0.0 для поддержки SOCKS proxy при загрузке модели.
- tests: test_cli.py (8 тестов на CLI-контракт), расширены test_formatter.py и test_transcriber.py.
- Проверка:
- uv run pytest — 42 passed.
- uv run transcribe --help показывает все опции.
This commit is contained in:
+3
-3
@@ -216,7 +216,7 @@
|
||||
|
||||
> PRD-ссылки: 3.1 (flow), 3.2 (CLI-интерфейс)
|
||||
|
||||
- [ ] Typer command с аргументами и опциями по PRD 3.2:
|
||||
- [x] Typer command с аргументами и опциями по PRD 3.2:
|
||||
- `file: Path` — позиционный аргумент
|
||||
- `--model` / `-m` → default `"large-v3"`
|
||||
- `--language` / `-l` → default `"auto"`
|
||||
@@ -224,7 +224,7 @@
|
||||
- `--device` / `-d` → default `"auto"`
|
||||
- `--compute-type` → default `"int8"`
|
||||
- `--verbose` / `-v` → flag, default False
|
||||
- [ ] Happy path flow:
|
||||
- [x] Happy path flow:
|
||||
1. `check_ffmpeg()`
|
||||
2. `validate_input_file(file)`
|
||||
3. `detect_device(device)` → получить device; `--compute-type` используется как есть (независим от device)
|
||||
@@ -236,7 +236,7 @@
|
||||
9. `write_transcript(...)`
|
||||
10. `console.print("✓ Транскрипт сохранён: <путь>", style="green")`
|
||||
11. Статистика: кол-во сегментов, время работы (замерить через `time.monotonic()`)
|
||||
- [ ] Exit codes: 0 — успех (включая пустую речь), 1 — ошибка
|
||||
- [x] Exit codes: 0 — успех (включая пустую речь), 1 — ошибка
|
||||
|
||||
**Критерий готовности**: `uv run transcribe test.mp3` — создаёт корректный .md файл (проверить на локальной машине с реальным файлом).
|
||||
|
||||
|
||||
Reference in New Issue
Block a user