Add redact doc pages; update timeline docs to remove GPU references

- New: redact-about.php, redact-guide.php, redact-tech.php with full
  two-pass pipeline docs, regional rule sets, output format comparison
- New: translations/redact-{about,guide,tech}.php (en + no)
- redact.php: add About/Guide/How-it-works doc links
- timeline-guide.php: remove GPU/cuttlefish engine row
- timeline-tech.php: remove GPU row, replace fine-tuned LLM section
  with SSE streaming + DOCX export section, stat4 3→2 engines
- timeline-about.php: replace dbn-legal-agent spotlight with
  SSE/DOCX export highlight
- translations/timeline-{about,guide,tech}.php: remove all GPU/
  cuttlefish references across all 4 languages; add stream_* and
  export_* keys; fix upload copy (5 files → 1 file)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-05-25 09:53:54 +02:00
parent d47024ed67
commit 1d1bbeb69f
13 changed files with 1524 additions and 68 deletions
+36 -16
View File
@@ -12,7 +12,7 @@ return array (
'nav_open' => 'Open Timeline →',
'hero_kicker' => 'Technical Showcase · How the AI reads time',
'hero_title' => 'How Timeline knows when things happened.',
'hero_sub' => 'A full walkthrough of the 3-pass extraction pipeline, Norwegian date format recognition, event classification schema, multi-engine architecture, and the fine-tuned dbn-legal-agent model.',
'hero_sub' => 'A full walkthrough of the 3-pass extraction pipeline, Norwegian date format recognition, event classification schema, live SSE streaming, and one-click Word export.',
'stat1' => 'date formats',
'stat2' => 'event types',
'stat3' => 'pipeline passes',
@@ -83,8 +83,13 @@ return array (
'act4_rule' => 'Document-level default',
'act4_example' => 'If no per-event actor, defaults to the document sender/issuing body',
'eng_eyebrow' => 'Engines',
'eng_title' => 'Three engines, one structured output.',
'eng_sub' => 'All engines return the same JSON schema — the post-processor handles all three identically. Engine choice affects speed, quality, and privacy only.',
'eng_title' => 'Two engines, one structured output.',
'eng_sub' => 'Both engines return the same JSON schema — the post-processor handles them identically. Engine choice affects speed, quality, and credit cost only.',
'stream_eyebrow' => 'Live updates & export',
'stream_title' => 'See progress as it happens. Download in Word.',
'stream_h1' => 'SSE streaming + DOCX export',
'stream_p1' => 'Timeline uses Server-Sent Events (SSE) to stream live status messages to the browser as extraction runs. Instead of staring at a spinner for 3060 seconds, you see "Preparing document…", "Calling gpt-4o-mini…", "Parsing events…" in real time.',
'stream_p2' => 'Once extraction completes, click Export to Word to download a formatted .docx with every event as a labelled paragraph, source excerpts, and a divider line between events. No third-party DOCX library is used — the file is assembled directly from OOXML via PHP ZipArchive.',
'th_model' => 'Model',
'th_latency' => 'Latency',
'th_best' => 'Best for',
@@ -102,7 +107,7 @@ return array (
'priv_1_html' => 'All uploaded files are extracted to text <strong>in memory</strong> using PHP\'s in-process file handlers. The raw binary is never written to disk on the server.',
'priv_2' => 'Session context (pasted text, uploaded content, extracted timeline events) is scoped to your authenticated session and discarded when the session ends.',
'priv_3_html' => 'Azure OpenAI (<code>gpt-4o</code>, <code>gpt-4o-mini</code>) is configured on the <strong>West Europe</strong> region. Data processed via Azure OpenAI is not used for model training under the default enterprise agreement.',
'priv_4_html' => 'The GPU/cuttlefish engine processes entirely locally — no data leaves your network. The LiteLLM proxy on cuttlefish receives your document text and returns structured JSON; nothing is forwarded to an external API.',
'priv_4_html' => 'Azure OpenAI is called only for the extraction pass. No document content is retained by Azure after the response is returned, per the enterprise data-handling agreement.',
'priv_5_html' => 'Telemetry logged: tool name, engine, focus mode, event count, latency. <strong>No document text, case references, actor names, or extracted events are logged.</strong>',
'cta_title' => 'See it work on your case.',
'cta_sub' => 'Free for Do Better Norge members. All engines available to every member.',
@@ -121,7 +126,7 @@ return array (
'nav_open' => 'Åpne Tidslinje →',
'hero_kicker' => 'Teknisk Vist · Hvordan AI-en leser tid',
'hero_title' => 'Hvordan Tidslinje vet når ting skjedde.',
'hero_sub' => 'En full gjennomgang av 3-pass ekstraksjonsrørledningen, gjenkjenning av norsk datoformat, hendelsesklassifiseringsskjema, multi-motor arkitektur, og den finjusterte dbn-legal-agent modellen.',
'hero_sub' => 'En full gjennomgang av 3-pass ekstraksjonsrørledningen, gjenkjenning av norsk datoformat, hendelsesklassifiseringsskjema, live SSE-strømming og nedlasting som Word-dokument.',
'stat1' => 'datoformater',
'stat2' => 'hendelsestyper',
'stat3' => 'rørledningspass',
@@ -192,8 +197,13 @@ return array (
'act4_rule' => 'Standard på dokumentnivå',
'act4_example' => 'Hvis ingen aktør per hendelse, standardiseres til dokumentets avsender/utstedende organ',
'eng_eyebrow' => 'Motorer',
'eng_title' => 'Tre motorer, ett strukturert utdata.',
'eng_sub' => 'Alle motorer returnerer det samme JSON-skjemaet — etterbehandleren håndterer alle tre identisk. Valg av motor påvirker hastighet, kvalitet og personvern kun.',
'eng_title' => 'To motorer, ett strukturert utdata.',
'eng_sub' => 'Begge motorer returnerer det samme JSON-skjemaet — etterbehandleren håndterer dem identisk. Valg av motor påvirker hastighet, kvalitet og kreditt-kostnad.',
'stream_eyebrow' => 'Live oppdateringer og eksport',
'stream_title' => 'Se fremgangen i sanntid. Last ned i Word.',
'stream_h1' => 'SSE-strømming + DOCX-eksport',
'stream_p1' => 'Tidslinje bruker Server-Sent Events (SSE) for å strømme live statusmeldinger til nettleseren mens ekstraksjon kjører. I stedet for å stirre på en spinner i 3060 sekunder, ser du «Forbereder dokument…», «Kaller gpt-4o-mini…», «Analyserer hendelser…» i sanntid.',
'stream_p2' => 'Når ekstraksjon er fullført, klikk Eksporter til Word for å laste ned en formatert .docx med hver hendelse som et merket avsnitt, kildesitater og en skillelinje mellom hendelsene.',
'th_model' => 'Modell',
'th_latency' => 'Forsinkelse',
'th_best' => 'Best for',
@@ -211,7 +221,7 @@ return array (
'priv_1_html' => 'Alle opplastede filer blir ekstraktert til tekst <strong>i minnet</strong> ved hjelp av PHPs in-process filbehandlere. Den rå binære data skrives aldri til disk på serveren.',
'priv_2' => 'Sesjonskonteksten (innlimt tekst, opplastet innhold, ekstrakterte tidslinjehendelser) er avgrenset til din autentiserte sesjon og kastes når sesjonen avsluttes.',
'priv_3_html' => 'Azure OpenAI (<code>gpt-4o</code>, <code>gpt-4o-mini</code>) er konfigurert på <strong>Vest-Europa</strong> regionen. Data behandlet via Azure OpenAI brukes ikke til modelltrening under den standard bedriftsavtalen.',
'priv_4_html' => 'GPU/cuttlefish-motoren prosesserer helt lokalt — ingen data forlater nettverket ditt. LiteLLM-proxyen på cuttlefish mottar dokumentteksten din og returnerer strukturert JSON; ingenting videresendes til en ekstern API.',
'priv_4_html' => 'Azure OpenAI kalles kun under ekstraksjonspasset. Ingen dokumentinnhold beholdes av Azure etter at svaret er returnert, i henhold til bedriftsavtalen for datahåndtering.',
'priv_5_html' => 'Telemetri logget: verktøynavn, motor, fokusmodus, hendelsestall, forsinkelse. <strong>Ingen dokumenttekst, saksreferanser, aktørnavn eller ekstrakterte hendelser blir logget.</strong>',
'cta_title' => 'Se det fungere i din sak.',
'cta_sub' => 'Gratis for Do Better Norge medlemmer. Alle motorer tilgjengelig for hvert medlem.',
@@ -230,7 +240,7 @@ return array (
'nav_open' => 'Відкрити Хронологію →',
'hero_kicker' => 'Технічна демонстрація · Як ШІ читає час',
'hero_title' => 'Як Хронологія знає, коли відбулися події.',
'hero_sub' => 'Повний огляд трьохетапного процесу витягування, розпізнавання дат у норвезькому форматі, схеми класифікації подій, архітектури з кількома двигунами та тонко налаштованої моделі dbn-legal-agent.',
'hero_sub' => 'Повний огляд трьохетапного процесу витягування, розпізнавання норвезьких форматів дат, схеми класифікації подій, потокового оновлення SSE та завантаження у форматі Word.',
'stat1' => 'формати дат',
'stat2' => 'типи подій',
'stat3' => 'етапи процесу',
@@ -301,8 +311,13 @@ return array (
'act4_rule' => 'За замовчуванням на рівні документа',
'act4_example' => 'Якщо немає актора для кожної події, за замовчуванням використовується відправник/видавець документа',
'eng_eyebrow' => 'Двигуни',
'eng_title' => 'Три двигуни, один структурований вихід.',
'eng_sub' => 'Усі двигуни повертають однакову JSON-схему — пост-обробник обробляє всі три однаково. Вибір двигуна впливає на швидкість, якість та конфіденційність лише.',
'eng_title' => 'Два двигуни, один структурований вихід.',
'eng_sub' => 'Обидва двигуни повертають однакову JSON-схему — пост-обробник обробляє їх однаково. Вибір двигуна впливає лише на швидкість, якість і вартість кредитів.',
'stream_eyebrow' => 'Живі оновлення та експорт',
'stream_title' => 'Дивіться прогрес у режимі реального часу. Завантажуйте у Word.',
'stream_h1' => 'SSE-потік + експорт DOCX',
'stream_p1' => 'Хронологія використовує Server-Sent Events (SSE) для потокової передачі живих повідомлень про стан у браузер під час виконання вилучення. Замість того, щоб дивитися на індикатор завантаження 30–60 секунд, ви бачите «Підготовка документа…», «Виклик gpt-4o-mini…», «Аналіз подій…» у режимі реального часу.',
'stream_p2' => 'Після завершення вилучення натисніть «Експортувати до Word», щоб завантажити відформатований .docx з кожною подією як позначеним абзацом, цитатами з джерел і роздільником між подіями.',
'th_model' => 'Модель',
'th_latency' => 'Затримка',
'th_best' => 'Найкраще для',
@@ -320,7 +335,7 @@ return array (
'priv_1_html' => 'Усі завантажені файли витягуються в текст <strong>в пам\'яті</strong> за допомогою обробників файлів PHP в процесі. Сирий бінарний файл ніколи не записується на диск на сервері.',
'priv_2' => 'Контекст сесії (вставлений текст, завантажений вміст, витягнуті події хронології) обмежується вашою автентифікованою сесією і знищується, коли сесія закінчується.',
'priv_3_html' => 'Azure OpenAI (<code>gpt-4o</code>, <code>gpt-4o-mini</code>) налаштовано на регіоні <strong>Західна Європа</strong>. Дані, оброблені через Azure OpenAI, не використовуються для навчання моделі за умовами стандартної корпоративної угоди.',
'priv_4_html' => 'Двигун GPU/cuttlefish обробляє повністю локально — жодні дані не залишають вашу мережу. Проксі LiteLLM на cuttlefish отримує текст вашого документа і повертає структурований JSON; нічого не пересилається на зовнішній API.',
'priv_4_html' => 'Azure OpenAI викликається лише під час проходу вилучення. Жодний вміст документа не зберігається Azure після повернення відповіді згідно з корпоративною угодою про обробку даних.',
'priv_5_html' => 'Логування телеметрії: назва інструменту, двигун, режим фокусу, кількість подій, затримка. <strong>Жоден текст документа, посилання на справи, імена учасників або витягнуті події не реєструються.</strong>',
'cta_title' => 'Перегляньте, як це працює у вашій справі.',
'cta_sub' => 'Безкоштовно для членів Do Better Norge. Усі механізми доступні для кожного члена.',
@@ -339,7 +354,7 @@ return array (
'nav_open' => 'Otwórz oś czasu →',
'hero_kicker' => 'Pokaz techniczny · Jak AI odczytuje czas',
'hero_title' => 'Jak oś czasu wie, kiedy miały miejsce wydarzenia.',
'hero_sub' => 'Pełne przejście przez proces ekstrakcji w 3 etapach, rozpoznawanie formatu daty w Norwegii, schemat klasyfikacji wydarzeń, architektura wielosilnikowa oraz dostosowany model dbn-legal-agent.',
'hero_sub' => 'Pełne przejście przez proces ekstrakcji w 3 etapach, rozpoznawanie norweskich formatów dat, schemat klasyfikacji wydarzeń, transmisja SSE na żywo oraz eksport do formatu Word.',
'stat1' => 'formaty dat',
'stat2' => 'typy wydarzeń',
'stat3' => 'przejścia w pipeline',
@@ -410,8 +425,13 @@ return array (
'act4_rule' => 'Domyślne na poziomie dokumentu',
'act4_example' => 'Jeśli brak aktora dla konkretnego zdarzenia, domyślnie przypisuje się nadawcę dokumentu/ciała wydającego',
'eng_eyebrow' => 'Silniki',
'eng_title' => 'Trzy silniki, jeden zorganizowany wynik.',
'eng_sub' => 'Wszystkie silniki zwracają ten sam schemat JSON — post-processer obsługuje wszystkie trzy identycznie. Wybór silnika wpływa tylko na prędkość, jakość i prywatność.',
'eng_title' => 'Dwa silniki, jeden zorganizowany wynik.',
'eng_sub' => 'Oba silniki zwracają ten sam schemat JSON — post-processer obsługuje je identycznie. Wybór silnika wpływa tylko na prędkość, jakość i koszt kredytów.',
'stream_eyebrow' => 'Aktualizacje na żywo i eksport',
'stream_title' => 'Obserwuj postęp na bieżąco. Pobierz w Word.',
'stream_h1' => 'Transmisja SSE + eksport DOCX',
'stream_p1' => 'Oś czasu używa Server-Sent Events (SSE) do strumieniowania komunikatów o stanie na żywo do przeglądarki podczas ekstrakcji. Zamiast patrzeć na spinner przez 3060 sekund, widzisz „Przygotowywanie dokumentu…", „Wywołanie gpt-4o-mini…", „Analiza wydarzeń…" w czasie rzeczywistym.',
'stream_p2' => 'Po zakończeniu ekstrakcji kliknij Eksportuj do Word, aby pobrać sformatowany .docx z każdym wydarzeniem jako oznaczony akapit, cytaty ze źródeł i linię separatora między wydarzeniami.',
'th_model' => 'Model',
'th_latency' => 'Opóźnienie',
'th_best' => 'Najlepszy dla',
@@ -429,7 +449,7 @@ return array (
'priv_1_html' => 'Wszystkie przesłane pliki są ekstraktowane do tekstu <strong>w pamięci</strong> przy użyciu obsługi plików w procesie PHP. Surowy binarny nie jest nigdy zapisywany na dysku serwera.',
'priv_2' => 'Kontekst sesji (wklejony tekst, przesłana zawartość, wyodrębnione zdarzenia czasowe) jest ograniczony do twojej uwierzytelnionej sesji i jest usuwany po zakończeniu sesji.',
'priv_3_html' => 'Azure OpenAI (<code>gpt-4o</code>, <code>gpt-4o-mini</code>) jest skonfigurowany w regionie <strong>Europa Zachodnia</strong>. Dane przetwarzane za pośrednictwem Azure OpenAI nie są wykorzystywane do szkolenia modelu w ramach domyślnej umowy przedsiębiorstwa.',
'priv_4_html' => 'Silnik GPU/cuttlefish przetwarza całkowicie lokalnie — żadne dane nie opuszczają twojej sieci. Proxy LiteLLM na cuttlefish otrzymuje tekst twojego dokumentu i zwraca strukturalny JSON; nic nie jest przesyłane do zewnętrznego API.',
'priv_4_html' => 'Azure OpenAI jest wywoływane tylko podczas kroku ekstrakcji. Żadna treść dokumentu nie jest przechowywana przez Azure po zwróceniu odpowiedzi, zgodnie z umową korporacyjną dotyczącą przetwarzania danych.',
'priv_5_html' => 'Zarejestrowana telemetria: nazwa narzędzia, silnik, tryb skupienia, liczba zdarzeń, opóźnienie. <strong>Żaden tekst dokumentu, odniesienia do spraw, nazwy aktorów ani wyodrębnione zdarzenia nie są rejestrowane.</strong>',
'cta_title' => 'Zobacz, jak to działa w Twojej sprawie.',
'cta_sub' => 'Darmowe dla członków Do Better Norge. Wszystkie silniki dostępne dla każdego członka.',