feat: analiz zincirini atlayıp ham segmenti doğrudan Telegram'a gönderme modu

Yeni "Ham Kayıt Modu" ayarı (send_raw_segments_to_telegram, varsayılan
kapalı): açıksa her ham segment tamamlanır tamamlanmaz sinyal analizi/
STT/9:16 render zincirine hiç girmeden doğrudan Telegram'a gönderiliyor
ve sunucudan siliniyor. Kullanıcı transkript/9:16 istemediğinde ("sen
bana direk videoyu gönder") tüm analiz pipeline'ını atlayıp sadece
kayıt+gönder+sil yapan basit bir mod.

- RawSegmentStatus'a SENT_TO_TELEGRAM eklendi, RawSegment.filePath
  nullable yapıldı (aynı ShortVideo.filePath deseni — gönderim sonrası
  null, dosya diskten silinmiş demek).
- api-daemon/src/telegram.ts'e sendTelegramVideo eklendi (native fetch+
  FormData+Blob ile multipart upload, ~50MB bot-limiti önceden kontrol
  ediliyor) — worker/telegram.py'deki aynı fonksiyonun Node karşılığı.
- streamIngest.ts: segment tamamlanınca, mod açıksa signal-detection
  kuyruğuna hiç eklemeden doğrudan gönderiyor (kuyruğa eklemek, aşağıda
  dosyayı silmenin sinyal analizini bozmasına sebep olurdu).
- Panel: segment listelerinde filePath=null durumunda video/indir yerine
  "Telegram'a gönderildi" notu (segments, channels/[id]).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
2026-09-04 19:57:14 +03:00
co-authored by Claude Sonnet 5
parent 9aed4e891e
commit 11e98b300e
10 changed files with 193 additions and 52 deletions
+30 -1
View File
@@ -6,6 +6,7 @@ import {
updateSttEnabled,
updateAutoRenderEnabled,
updateDeleteAfterTelegramSend,
updateSendRawSegmentsToTelegram,
addCookieProfile,
updateCookieProfile,
deleteCookieProfile,
@@ -36,6 +37,7 @@ export default async function SettingsPage() {
sttSetting,
autoRenderSetting,
deleteAfterSendSetting,
sendRawSetting,
cookieProfiles,
] = await Promise.all([
prisma.appSetting.findUnique({ where: { key: "ytdlp_cookies" } }),
@@ -47,6 +49,7 @@ export default async function SettingsPage() {
prisma.appSetting.findUnique({ where: { key: "stt_enabled" } }),
prisma.appSetting.findUnique({ where: { key: "auto_render_enabled" } }),
prisma.appSetting.findUnique({ where: { key: "delete_after_telegram_send" } }),
prisma.appSetting.findUnique({ where: { key: "send_raw_segments_to_telegram" } }),
prisma.cookieProfile.findMany({ orderBy: { createdAt: "asc" } }),
]);
@@ -60,6 +63,7 @@ export default async function SettingsPage() {
const sttEnabled = sttSetting?.value !== "false";
const autoRenderEnabled = autoRenderSetting?.value !== "false";
const deleteAfterTelegramSend = deleteAfterSendSetting?.value === "true";
const sendRawSegmentsToTelegram = sendRawSetting?.value === "true";
return (
<div className="flex flex-col gap-6">
@@ -259,8 +263,33 @@ export default async function SettingsPage() {
<Card>
<CardHeader>
<CardTitle className="text-sm font-medium text-muted-foreground">Depolama</CardTitle>
<CardTitle className="text-sm font-medium text-muted-foreground">Ham Kayıt Modu</CardTitle>
<CardDescription>
Açarsan her ham segment (analiz/transkript/9:16 zincirine hiç girmeden) tamamlanır tamamlanmaz doğrudan
Telegram&apos;a gönderilip sunucudan silinir transkript ve 9:16 render tamamen atlanır. Bunu açtıysan
STT ve 9:16 Render ayarlarının kapalı olması mantıklı (aksi halde ikisi de boşa kalır, çünkü bu mod
segmenti analiz kuyruğuna hiç sokmuyor). ~50MB&apos;ı geçen segmentler gönderilemez, sunucuda kalır
gerekirse yukarıdaki &quot;Sistem Parametreleri&quot;nden segment süresini kısalt.
</CardDescription>
</CardHeader>
<form action={updateSendRawSegmentsToTelegram}>
<CardContent>
<Label className="flex items-center justify-between gap-4 text-sm font-normal">
Ham segmenti doğrudan Telegram&apos;a gönder (analiz atlanır)
<SettingSwitch name="sendRawSegmentsToTelegram" defaultChecked={sendRawSegmentsToTelegram} />
</Label>
</CardContent>
<CardFooter>
<Button type="submit">Kaydet</Button>
</CardFooter>
</form>
</Card>
<Card>
<CardHeader>
<CardTitle className="text-sm font-medium text-muted-foreground">Depolama (9:16 klipler)</CardTitle>
<CardDescription>
Yukarıdaki &quot;Ham Kayıt Modu&quot;ndan farklı bu, STT+9:16 render zincirinden geçmiş klipler için.
Açarsan her render biten video Telegram&apos;a gönderilip <strong>sunucudan kalıcı olarak
silinir</strong> sadece Telegram&apos;daki kopyada kalır (geri alınamaz). Gönderim başarısız olursa
dosya sunucuda kalır. Kanal sayısı arttıkça disk doluluğunu önlemek için.