Integration: gofmt-Bereinigung und Pruefprotokoll
CI / Core-Modul (Build/Vet/Test) (push) Canceled after 0s
CI / DMS Security-Test-Gate (AC5, Merge-Gate) (push) Canceled after 0s
CI / DMS-Modul (Lint/Build/Test/Coverage/Artefakt) (push) Canceled after 0s
CI / DMS-Modul Supply-Chain-Scan (govulncheck) (push) Canceled after 0s
CI / Web (dms-browser) (push) Canceled after 0s
CI / Web (pdf-viewer) (push) Canceled after 0s
CI / Web (shl) (push) Canceled after 0s
CI / Core-Modul (Build/Vet/Test) (pull_request) Canceled after 0s
CI / DMS Security-Test-Gate (AC5, Merge-Gate) (pull_request) Canceled after 0s
CI / DMS-Modul (Lint/Build/Test/Coverage/Artefakt) (pull_request) Canceled after 0s
CI / DMS-Modul Supply-Chain-Scan (govulncheck) (pull_request) Canceled after 0s
CI / Web (dms-browser) (pull_request) Canceled after 0s
CI / Web (pdf-viewer) (pull_request) Canceled after 0s
CI / Web (shl) (pull_request) Canceled after 0s

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
patrickandClaude Sonnet 5 committed 2026-09-20 00:52:59 +02:00
1 parent f90a2e7af6
commit f45cf29184
8 files changed
+59 -26

No files matched your search

+32
View File
@@ -0,0 +1,32 @@
# Integration-Pruefprotokoll: `integration/dms-gesamtstand`
Zusammenfuehrung aller bis dahin offenen DMS-Ticket-Branches auf einen lauffaehigen Gesamtstand. Kein Merge nach `main`, kein Deploy.
## Umfang
- 13 zuvor nicht enthaltene Ticket-Branches eingemergt; alle uebrigen offenen Ticket-Branches waren bereits Vorfahren.
- Konflikte manuell aufgeloest: `go.mod`/`go.sum` (Vereinigung mit jeweils hoechster Version), `storage/driver.go` (`DerivativeKey` und FDN-10-TTL-Konstanten beide behalten), `trash`/`trashapi`/`upload` (SRC-02 Suchindex-Enqueuer mit VER-09 Audit/Akteur zusammengefuehrt), `jobqueue/worker.go` (Request-ID plus FDN-11-Limits).
- Signaturen angeglichen: `trash.*(ctx, pool, searchIndex, id, actor)`, `storage.NewLocalDriver(..., maxTTL)` (Aufrufer uebergeben `0`), `upload.Service.Complete(ctx, id, confirmDuplicate)`.
- `cmd/app/main.go`: `workerruntime.AttachEnqueuers` haengt die Upload-Hooks an; Warnung, wenn `malwarescan.scan` nicht in `NEXARCH_DMS_APP_ENQUEUE_JOB_TYPES` steht.
## Pruefungen (Testhost 192.168.1.131, frischer Clone)
| Pruefung | Ergebnis |
|---|---|
| `go build ./...` | sauber |
| `go vet ./...` | sauber |
| `go test -count=1 ./...` (paralleler Paketlauf, 3 Laeufe hintereinander) | alle Pakete `ok` |
| `gofmt -l .` | nach Bereinigung leer |
| verwaiste `dmstest_*`-Schemas | 2 Altbestaende entfernt |
## Beim Integrationslauf gefundene und behobene Testfehler
1. `searchsync`-Test legte Tabellen im gemeinsamen `public`-Schema an und kollidierte mit dem Migrationsstand. Umgestellt auf `testdb.Pool`.
2. `watchfolder`-Test: Handschema von `file_revisions` ohne `confirmed_duplicate` (DOC-02). Spalte ergaenzt.
3. Flaky Fehler (`relation "users" does not exist`, `sitzung nicht gefunden`, FK-Verletzungen) in `autorule`/`qa05`: `testenv` legte `users` im gemeinsamen `public`-Schema an, andere Pakete leerten oder loeschten sie per `TRUNCATE/DROP users CASCADE` ueber den `search_path`-Fallback. `testenv` legt `users` nun im Testschema an; `docmerge`-Test auf `testdb.Pool` umgestellt (nutzte roh `public`).
## Bekannte Punkte
- Migrationsnummern nicht eindeutig: drei `0016_*` (`document_merge_split`, `duplicate_detection`, `revision_pdf_derivatives`). Die Anwendungsreihenfolge ergibt sich alphabetisch nach Dateiname und ist im Test konsistent. Vor Produktivnutzung auf eindeutige, fortlaufende Nummern umstellen.
- SRC-02: Index-Handler noch nicht in `workerruntime` verdrahtet.
- Weiterhin offen: `soffice` fehlt auf dem Testhost (DOC-06), `clamd` nur Test-Scanner, TEN-12 Core-Seite, INT-01/INT-09 durch Core API-01/RBAC-02 blockiert.
+1 -1
View File
@@ -5,8 +5,8 @@ import (
"context"
"fmt"
"image"
"image/png"
_ "image/jpeg"
"image/png"
"os"
"os/exec"
"path/filepath"
+4 -4
View File
@@ -99,10 +99,10 @@ func (s *Syncer) SyncDocument(ctx context.Context, documentID string) error {
id := DocIndexID(documentID)
var (
title string
trashedAt, deletedAt *string
folderID, documentType *string
createdBy string
title string
trashedAt, deletedAt *string
folderID, documentType *string
createdBy string
createdAtSec, updatedAtSec int64
)
err := s.Pool.QueryRow(ctx, `
+1 -1
View File
@@ -2,8 +2,8 @@ package searchsync
import (
"context"
"fmt"
"database/sql"
"fmt"
"os"
"testing"
"time"
+4 -4
View File
@@ -95,11 +95,11 @@ func GenerateXlsx(rows [][]string) ([]byte, error) {
buf := &bytes.Buffer{}
zw := zip.NewWriter(buf)
files := map[string]string{
"[Content_Types].xml": contentTypesXlsx,
"_rels/.rels": rootRelsXlsx,
"xl/workbook.xml": workbookXML,
"[Content_Types].xml": contentTypesXlsx,
"_rels/.rels": rootRelsXlsx,
"xl/workbook.xml": workbookXML,
"xl/_rels/workbook.xml.rels": workbookRels,
"xl/worksheets/sheet1.xml": sheet,
"xl/worksheets/sheet1.xml": sheet,
}
for name, content := range files {
w, err := zw.Create(name)
+7 -7
View File
@@ -35,13 +35,13 @@ func GenerateTIFF(width, height int, fill byte) []byte {
typeLong = 4
)
writeTag(256, typeLong, 1, uint32(width)) // ImageWidth
writeTag(257, typeLong, 1, uint32(height)) // ImageLength
writeTag(258, typeShort, 1, 8) // BitsPerSample
writeTag(259, typeShort, 1, 1) // Compression: none
writeTag(262, typeShort, 1, 1) // PhotometricInterpretation: BlackIsZero
writeTag(273, typeLong, 1, pixelOffset) // StripOffsets
writeTag(277, typeShort, 1, 1) // SamplesPerPixel
writeTag(256, typeLong, 1, uint32(width)) // ImageWidth
writeTag(257, typeLong, 1, uint32(height)) // ImageLength
writeTag(258, typeShort, 1, 8) // BitsPerSample
writeTag(259, typeShort, 1, 1) // Compression: none
writeTag(262, typeShort, 1, 1) // PhotometricInterpretation: BlackIsZero
writeTag(273, typeLong, 1, pixelOffset) // StripOffsets
writeTag(277, typeShort, 1, 1) // SamplesPerPixel
writeTag(279, typeLong, 1, uint32(len(pixelData))) // StripByteCounts
binary.Write(buf, binary.LittleEndian, uint32(0)) // naechste IFD: keine
+9 -9
View File
@@ -242,15 +242,15 @@ func buildMultiPageTIFF(t *testing.T, pixelValues [2]byte) []byte {
_ = binary.Write(buf, binary.LittleEndian, value)
}
_ = binary.Write(buf, binary.LittleEndian, uint16(9))
entry(0x0100, 3, 1, 1) // ImageWidth
entry(0x0101, 3, 1, 1) // ImageLength
entry(0x0102, 3, 1, 8) // BitsPerSample
entry(0x0103, 3, 1, 1) // Compression: none
entry(0x0106, 3, 1, 1) // PhotometricInterpretation: BlackIsZero
entry(0x0111, 4, 1, stripOffset) // StripOffsets
entry(0x0115, 3, 1, 1) // SamplesPerPixel
entry(0x0116, 4, 1, 1) // RowsPerStrip
entry(0x0117, 4, 1, 1) // StripByteCounts
entry(0x0100, 3, 1, 1) // ImageWidth
entry(0x0101, 3, 1, 1) // ImageLength
entry(0x0102, 3, 1, 8) // BitsPerSample
entry(0x0103, 3, 1, 1) // Compression: none
entry(0x0106, 3, 1, 1) // PhotometricInterpretation: BlackIsZero
entry(0x0111, 4, 1, stripOffset) // StripOffsets
entry(0x0115, 3, 1, 1) // SamplesPerPixel
entry(0x0116, 4, 1, 1) // RowsPerStrip
entry(0x0117, 4, 1, 1) // StripByteCounts
_ = binary.Write(buf, binary.LittleEndian, nextIFDOffset)
}
@@ -26,6 +26,7 @@ type fakeKEKProvider struct{ kek []byte }
func (f *fakeKEKProvider) TenantKEK(ctx context.Context, tenantSlug string) ([]byte, error) {
return f.kek, nil
}
type noopUsageReporter struct{}
func (noopUsageReporter) Report(ctx context.Context, tenantSlug, metric string, delta int64) error {