Compare commits

..
Author SHA1 Message Date
simandClaude Sonnet 5.5 0e625c5381 ai-app: Test an unkritische Stelle (Konflikt mit Nachbar-PRs vermeiden)
CI / Web-Barrierefreiheitspruefung (axe, Tastatur, Reflow, Textabstaende) (push) Canceled after 0s
CI / Core-Modul (Build/Vet/Test) (push) Successful in 42s
CI / DMS Security-Test-Gate (AC5, Merge-Gate) (push) Successful in 3s
CI / Connect Security-Test-Gate (QA-01 AC4, Merge-Gate) (push) Successful in 2s
CI / DMS-Modul Supply-Chain-Scan (govulncheck) (push) Failing after 15s
CI / Web (dms-browser) (push) Failing after 53s
CI / Web (pdf-viewer) (push) Failing after 33s
CI / Web (shl) (push) Failing after 7s
Supply-Chain-Scan (Go) / govulncheck (push) Failing after 45s
AI-Pflichttest-Gate / pflichttest-gate (pull_request) Successful in 8m30s
CI / Core-Modul (Build/Vet/Test) (pull_request) Successful in 38s
CI / DMS Security-Test-Gate (AC5, Merge-Gate) (pull_request) Successful in 3s
CI / Connect Security-Test-Gate (QA-01 AC4, Merge-Gate) (pull_request) Successful in 2s
CI / DMS-Modul Supply-Chain-Scan (govulncheck) (pull_request) Failing after 13s
CI / Web (dms-browser) (pull_request) Failing after 53s
CI / Web (pdf-viewer) (pull_request) Failing after 38s
CI / Web (shl) (pull_request) Failing after 9s
Core-Schnittstellen-Vertragstests / contract-tests (pull_request) Successful in 8m26s
Supply-Chain-Scan (Go) / govulncheck (pull_request) Failing after 48s
Supply-Chain-Scan (npm) / npm-audit (pull_request) Failing after 1m22s
Core-Pflichttest-Gate / pflichttest-gate (pull_request) Successful in 8m18s
RBAC-Rollenhierarchie-Pflichtgate / rbac-policy-invariant (pull_request) Successful in 9m17s
CI / Web-Barrierefreiheitspruefung (axe, Tastatur, Reflow, Textabstaende) (pull_request) Failing after 29s
CI / DMS-Modul (Lint/Build/Test/Coverage/Artefakt) (push) Failing after 2s
CI / DMS-Modul (Lint/Build/Test/Coverage/Artefakt) (pull_request) Failing after 2s
DB-Integrationstests / db-tests (pull_request) Canceled after 0s
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-06 23:28:41 +01:00
simandClaude Sonnet 5.5 0ef867daba ai-app: serverWriteTimeout vor main() (vermeidet Konflikt mit Nachbar-PRs)
CI / Web-Barrierefreiheitspruefung (axe, Tastatur, Reflow, Textabstaende) (push) Canceled after 0s
CI / Core-Modul (Build/Vet/Test) (push) Successful in 52s
CI / DMS Security-Test-Gate (AC5, Merge-Gate) (push) Successful in 3s
CI / Connect Security-Test-Gate (QA-01 AC4, Merge-Gate) (push) Successful in 3s
CI / DMS-Modul Supply-Chain-Scan (govulncheck) (push) Failing after 17s
CI / Web (dms-browser) (push) Failing after 1m3s
CI / Web (pdf-viewer) (push) Failing after 44s
CI / Web (shl) (push) Failing after 8s
Supply-Chain-Scan (Go) / govulncheck (push) Failing after 2m50s
CI / DMS-Modul (Lint/Build/Test/Coverage/Artefakt) (push) Failing after 3s
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-06 23:25:40 +01:00
simandClaude Sonnet 5.5 e659fdaa59 ai-app: WriteTimeout ueber dem Provider-Timeout
CI / Web-Barrierefreiheitspruefung (axe, Tastatur, Reflow, Textabstaende) (push) Canceled after 0s
CI / Core-Modul (Build/Vet/Test) (push) Successful in 45s
CI / DMS Security-Test-Gate (AC5, Merge-Gate) (push) Successful in 2s
CI / Connect Security-Test-Gate (QA-01 AC4, Merge-Gate) (push) Successful in 3s
CI / DMS-Modul Supply-Chain-Scan (govulncheck) (push) Failing after 15s
CI / Web (dms-browser) (push) Failing after 59s
CI / Web (pdf-viewer) (push) Failing after 39s
CI / Web (shl) (push) Failing after 7s
Supply-Chain-Scan (Go) / govulncheck (push) Failing after 2m28s
CI / DMS-Modul (Lint/Build/Test/Coverage/Artefakt) (push) Failing after 3s
Der Server kappte Antworten nach 15s, Inferenzaufrufe (Ollama bis 120s)
liefen dadurch ins Leere. Real gefunden bei /suggest/title und
/suggest/correspondent mit gemma4:26b (leere Antwort, curl-Code 000).

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-06 23:22:53 +01:00
3 changed files with 10 additions and 44 deletions

No files matched your search

+4 -1
View File
@@ -202,6 +202,9 @@ func build(pool *pgxpool.Pool, cfg config, prov provider.Provider, workerID stri
return wiring{mux: mux, queue: q, worker: worker, quotaStore: quotaStore}
}
// Muss ueber dem Provider-Timeout (120s) liegen, sonst kappt der Server langsame Inferenz-Antworten.
const serverWriteTimeout = 130 * time.Second
func main() {
cfg, err := loadConfig(os.Getenv)
if err != nil {
@@ -226,7 +229,7 @@ func main() {
Handler: w.mux,
ReadHeaderTimeout: 5 * time.Second,
ReadTimeout: 15 * time.Second,
WriteTimeout: 15 * time.Second,
WriteTimeout: serverWriteTimeout,
IdleTimeout: 60 * time.Second,
}
+6
View File
@@ -87,6 +87,12 @@ func TestLoadConfig_Defaults(t *testing.T) {
}
}
func TestServerWriteTimeoutCoversProviderTimeout(t *testing.T) {
if serverWriteTimeout <= 120*time.Second {
t.Fatalf("serverWriteTimeout = %v, muss ueber dem Provider-Timeout von 120s liegen", serverWriteTimeout)
}
}
func newTestPool(t *testing.T) *pgxpool.Pool {
t.Helper()
dsn := os.Getenv("TEST_TENANT_DSN")
-43
View File
@@ -1,43 +0,0 @@
# Alfresco gegen NEXARCH (Stand 2026-11-03)
Zweck: Funktionsumfang von Alfresco Content Services mit dem NEXARCH-Stand abgleichen und Lücken als Karten festhalten. Entscheidung des Users: kein Fork, kein Code von Alfresco. Nachgebaut wird in Go (Rust später, falls es messbar etwas bringt). Grundlage sind offene Standards (CMIS 1.1) und Alfrescos dokumentiertes Verhalten.
Grenzen dieser Fassung:
- Die Spalte „Alfresco“ stammt aus allgemeinem Wissen über Content Services; die Hyland-Doku ließ sich nicht automatisch auswerten.
- Die Spalte „NEXARCH“ stammt aus den Paketnamen unter `dms/internal`, `archive/internal`, `workflow/internal`. Ob ein Paket den Umfang wirklich abdeckt, ist nicht geprüft. „Vorhanden“ heißt nur: Paket existiert.
| Bereich | Alfresco | NEXARCH (Paket) | Einschätzung |
|---|---|---|---|
| Ordnerbaum, Dokumente | Knoten in Ordnern, Verknüpfungen | `folder`, `documentapi` | vorhanden |
| Content-Modell | Typen, Aspekte, Eigenschaften, Constraints, Vererbung, per Modell-XML erweiterbar | `documenttype`, `metadatafield`, `metadataapi` | teilweise: Aspekte und Typ-Vererbung prüfen |
| Versionierung | Haupt-/Nebenversion, Revert, Check-out/-in | `versioning`, `versioningapi` | vorhanden; Check-out/Sperren prüfen |
| Rechte | ACL je Knoten, Vererbung, Gruppen | Core-RBAC, `authz` | teilweise: Rechte zentral im Core, ACL je Dokument prüfen |
| Suche | Volltext (Solr/Search Services), Facetten | `searchindex`, `searchapi`, `searchsync`, `savedsearch` (Manticore) | vorhanden; Facetten prüfen |
| Vorschau, Transformation | Renditions, Thumbnails, Konverter | `thumbnail`, `pdfconvert`, `pdfa`, `ocr` | vorhanden |
| Regeln, Aktionen | Ordnerregeln, Trigger | `autorule`, `trigger`, `watchfolder` | vorhanden |
| Workflow | Activiti/Process Services | Modul `workflow` (`approval`, `processdef`, `routingengine`) | vorhanden, eigenes Modell |
| Records Management | Aufbewahrung, Disposition, Legal Hold, Dateiplan | Modul `archive` (`retention*`, `legalhold`, `wormstore`, `ediscovery`) | vorhanden, in Teilen weiter (WORM, GoBD) |
| CMIS / REST | CMIS 1.1 (Atom/Browser), REST v1 | `cmis`, `openapi` | vorhanden: Bindings und Konformität prüfen |
| Audit | Audit Application, Pfad-Filter | `audittrail`, `auditapi`, Core-Audit | vorhanden |
| Mandanten | nur Enterprise, eingeschränkt | Core-Mandanten, Schema je Mandant | NEXARCH stärker |
| Teilen | Share-Links, Quick Share | `sharelink`, `sharelinkapi` | vorhanden |
| Papierkorb, Tags, Massenänderung | ja | `trash`, `tag`, `bulkedit` | vorhanden |
| E-Mail-Import | IMAP-Anbindung | `mailimport`, Modul `mail` | vorhanden |
| E-Rechnung | nein | `einvoice`, `pdfa` | NEXARCH zusätzlich |
| Office-Bearbeitung online | WOPI/Collabora/OnlyOffice, AOS | nicht gefunden | **Lücke** |
| Dateisystem-Anbindung | WebDAV, CIFS, FTP | nicht gefunden | **Lücke** |
| Clustering, HA | Mehrknoten | `Skalierungskonzept` | zu prüfen |
| Web-UI | Share, ADF/ACA | Next.js-Module | vorhanden, anderes Konzept |
| Föderation, Sync-Client | Desktop-Sync | nicht gefunden | Lücke, vermutlich nicht nötig |
## Vorschlag für Karten
1. **E-01 CMIS-Konformität prüfen:** CMIS-TCK (offene Testsuite) gegen `dms/internal/cmis` laufen lassen, Ergebnis dokumentieren. Zeigt, wie nah wir an „Alfresco-kompatibel“ sind.
2. **E-02 Content-Modell:** Aspekte, Typ-Vererbung, Constraints gegen Alfresco-Modell abgleichen.
3. **E-03 ACL je Dokument:** prüfen, ob Core-Rechte pro Knoten reichen oder ein Knoten-ACL im DMS nötig ist.
4. **E-04 WebDAV:** Anbindung als Dateisystem; nützlich für Importe und Office.
5. **E-05 Online-Bearbeitung:** WOPI-Host für Collabora/OnlyOffice (Datenschutz: nur selbst gehostet).
6. **E-06 Check-out/Sperren** prüfen.
7. **E-07 Facettensuche** prüfen.
Rust: erst wenn Messwerte (Content-Store, Hashing, Tokenizer) einen Engpass zeigen. Auf 131 und 204 ist nur Go installiert; Rust dort zu installieren braucht die Freigabe des Users.