Pass 00: Ingestion (INGEST)
| Eigenschaft | Wert |
|---|---|
| Pass-Nummer | 00 |
| Schlüssel | ingest (Vorab-Pass; nicht über --passes auswählbar) |
| Signal-Präfix | keines (Pass 00 erzeugt keine Signale) |
| Typ | Deterministische Dateinormalisierung, kein LLM |
| Standard | Läuft immer vor der Pass-Schleife, sofern <app>/ingestion/ existiert und Dateien enthält |
| Assessment-Typen | application, service (läuft immer), llm (läuft innerhalb des Assessments jedes Legs). Läuft nicht bei landing-zone-catalog. |
| Lizenzstufe | Nicht eingeschränkt (ab Community) |
Wofür der Pass gedacht ist
Projektunterlagen kommen selten geordnet an. Kunden übergeben Architektur-Foliensätze, Workshop-Protokolle in Word, Richtlinien als PDF, CMDB-Exporte in Excel und Terraform-State-Dateien, oft alles in einem Ordner. Pass 00 beantwortet die Frage: „Wie bringe ich all dieses Material in das Assessment, ohne es von Hand zu sortieren?“
Sie legen die Dateien in einem einzigen Ordner ab: <app>/ingestion/. Pass 00 sortiert jede Datei in die strukturierte Ablage wsp/inputs/, die von den nachfolgenden Passes gelesen wird, extrahiert lesbaren Text aus Office- und PDF-Dateien, damit die LLM-Passes sie nutzen können, und merkt sich, was bereits verarbeitet wurde. Wiederholte Läufe sind dadurch schnell.
Was Sie bereitstellen müssen
- Dateien in
<app>/ingestion/(Unterordner sind erlaubt und bleiben im Zielpfad erhalten). Dateien mit den Namen.gitkeep,README.mdundingestion-manifest.jsonwerden ignoriert. - Mehr ist nicht erforderlich. Fehlt
ingestion/oder ist der Ordner leer, tut der Pass nichts. - Optional: Pulumi-Cloud-Stacks unter
iac.pulumi.stacksin der App-.swao.ymlsowie ein Pulumi-Zugriffstoken im SWAO-Credential-Store unter dem Schlüsselpulumi-api-token. Pass 00 lädt dann jeden Stack-Export herunter, bevor lokale Dateien verarbeitet werden.
Legen Sie keine Archive in ingestion/ ab. Entpacken Sie diese vorher und legen Sie die Dateien einzeln ab.
Wie der Pass arbeitet
- Optionaler Pulumi-Download. Für jeden konfigurierten Stack (
org,project,stack) ruft SWAO den Export-Endpunkt von Pulumi Cloud auf (https://api.pulumi.com/api/stacks/{org}/{project}/{stack}/export) und schreibt das Ergebnis nachwsp/inputs/pulumi/<project>-<stack>.json. Pass 01 liest diese Dateien später. - Dateien auflisten. Alle Dateien unter
ingestion/werden rekursiv erfasst. - Binärdateien referenzieren, Archive ablehnen. Programme, Installationspakete und Pakete unter
ingestion/binary/(.exe,.msi,.msp,.msix,.appx,.dll,.sys,.so,.dylib,.jar,.war,.ear,.pkg,.dmg,.deb,.rpm,.cab, dazu.bin,.iso,.imgund die unten genannten Archivtypen) werden in jedem Bewertungstyp nicht kopiert. In einem Service Portfolio Assessment werden die Installations- und Pakettypen zusätzlich an jeder anderen Stelle unteringestion/referenziert, weil Service-Apps keine Hinweisordner haben; in einer Anwendungsbewertung wird eine solche Datei außerhalb voningestion/binary/wie bisher nachwsp/inputs/kopiert. Referenzierte Dateien werden im Manifest alsreferencedvermerkt (Pfad und Größe, kein Hash). In einem Service Portfolio Assessment analysiert Pass 25 BINARY sie an Ort und Stelle: Er liestingestion/binary/sowie die Installations- und Paketdateien an jeder anderen Stelle unteringestion/. Eine Kopie, die ein früherer Lauf inwsp/inputs/hinterlassen hat, wird entfernt. An allen anderen Stellen werden Dateien mit den Endungen.zip,.tar,.gz,.tgz,.bz2,.7zoder.rarebenfalls nicht kopiert: Sie werden alsrejectedvermerkt, verbunden mit dem Hinweis, sie zu entpacken. - Warnung bei Dateien ohne Text. Bilder (
.jpg,.jpeg,.png,.gif,.svg,.bmp,.webp,.ico) werden immer nachintake/geleitet und mitimage-no-text-extractionmarkiert; legen Sie eine.description.txtdaneben, wenn der Bildinhalt wichtig ist. Für.xps-Dateien erscheint ein Hinweis, sie in PDF umzuwandeln. - Jede Datei einem Kategorieordner zuordnen. Die Entscheidung fällt anhand von Dateiname und Endung:
- Zuerst werden Namensregeln geprüft. Beispiele: Namen mit
sbom,bomoderbill-of-materials(als.xlsx,.csv,.xml,.json,.cdx) landen incompliance/; Namen mitcmdboderincident(als.csvoder.xlsx) inoperations/; CSV-Dateiennetwork-flow*odernftables*inoperations/; Terraform- und HCL-Dateien sowie YAML-Dateien mit Begriffen wieinfra,k8s,helm,deploy,pipelineoderansibleim Namen interraform/; PDFs mitpolicyoderprocedureim Namen inarchitecture/guardrails/; PDFs, die mitdpaodersocbeginnen oderagreementbzw.legalenthalten, incompliance/;.docx-Dateien inworkshops/;.pptx- und Markdown-Dateien inarchitecture/(Markdown, das mitworkshop,meetingodernotesbeginnt, inworkshops/); Quellcode-Dateien inintake/. - Greift keine Regel, entscheidet die Endung:
.csv,.xlsx,.xlsnachoperations/;.pdf,.docx,.doc,.pptxnachdocs/;.yaml,.yml,.jsonnachstructured/;.md,.txtnacharchitecture/;.tf,.tfstate,.tfplan,.hclnachterraform/; alles andere nachintake/. - Der Zielpfad lautet
wsp/inputs/<Kategorie>/<ursprünglicher relativer Pfad>. Bei späteren Läufen wird das bisherige Ziel wiederverwendet, damit Dateien nicht zwischen Läufen wandern.
- Zuerst werden Namensregeln geprüft. Beispiele: Namen mit
- Unveränderte Dateien überspringen. Der SHA-256-Hash jeder Datei wird mit dem vorherigen Manifest verglichen. Stimmen Hash, Zieldatei und alle extrahierten Begleitdateien überein, wird die Datei übersprungen. Jedes Dokument zählt als neu (nicht im vorherigen Manifest), geändert (anderer Hash, oder die Kopie oder eine Begleitdatei fehlt) oder unverändert.
- Kopieren und Text extrahieren. Neue oder geänderte Dateien werden kopiert. Binäre Office-Formate erhalten anschließend eine Text-Begleitdatei neben der Kopie:
- PDF nach
<Datei>.extracted.txt(pdf-parse) - DOCX nach
<Datei>.extracted.md(mammoth; schlägt mammoth fehl, wird das Dokument-XML direkt ausgelesen) - XLSX nach je einer
<Datei>.<Blattname>.csvpro Arbeitsblatt (exceljs) - PPTX nach
<Datei>.extracted.txtmit dem Text aller Folien (adm-zip) .xls- und ältere.doc-Dateien werden kopiert, aber nicht extrahiert; eine Warnung empfiehlt, sie in.xlsxbeziehungsweise.docxumzuwandeln.- Dateien über 10 MB werden kopiert, aber nicht extrahiert.
- PDF nach
- Aufräumen. Verschwindet eine Datei aus
ingestion/, werden ihre Kopie und ihre Begleitdateien auswsp/inputs/entfernt. - Warnung bei nicht verwalteten Dateien. Liegen Dateien direkt in Unterordnern von
wsp/inputs/, die Pass 00 nicht verwaltet, erscheint eine Warnung mit der Empfehlung, sie nachingestion/zu verschieben. Reservierte Ordner werden nicht geprüft:source,catalogs,terraform,yara-rules,checklists,evidence,interviews,cmdb,llm-gateway,research,binary. - Manifest schreiben nach
ingestion/ingestion-manifest.json.
Wie gemessen wird
Pass 00 erzeugt weder Signale noch Bewertungen. Seine Wirkung ist indirekt:
- Jede Textdatei, die er unter
wsp/inputs/ablegt, wird Kontext für Pass 04 (CTX). Der gewählte Kategorieordner bestimmt zugleich die Priorität der Datei im Prompt-Budget von CTX (beispielsweise habenarchitecture/,compliance/undintake/die höchste Priorität). - Terraform-State in
wsp/inputs/terraform/und Pulumi-Exporte inwsp/inputs/pulumi/speisen die Diensterkennung von Pass 01 (INV). - Nach
wsp/inputs/compliance/geleitete SBOM-Exporte können in Pass 05 (SBOM) einfließen.
Die Konsolenzeile Ingestion normalised N file(s) (Kategorie: Anzahl, ...) fasst jeden Lauf zusammen, und [info] INGEST: N new, M changed, K unchanged document(s) in ingestion/ zeigt, was ein erneuter Lauf übernommen hat.
Drittanbieter-Module und Werkzeuge
| Name | Zweck in diesem Pass | Lizenz (Paket-Metadaten) | Gebündelt oder extern | Verhalten bei Fehlen |
|---|---|---|---|---|
| pdf-parse | Textextraktion aus PDF | MIT | Gebündelt | Entfällt (gebündelt); eine fehlerhafte Datei wird ohne Extraktion kopiert, mit Warnung |
| mammoth | DOCX nach Markdown | BSD-2-Clause | Gebündelt | Rückfall auf direkte XML-Textextraktion |
| exceljs | XLSX-Arbeitsblätter nach CSV | MIT | Gebündelt | Entfällt (gebündelt) |
| adm-zip | Folientext aus PPTX, DOCX-Rückfall | MIT | Gebündelt | Entfällt (gebündelt) |
| Pulumi Cloud API | Download von Stack-Exporten (optional) | Externer Dienst; Lizenz im Repository nicht erfasst | Extern, Netzwerkzugang und Token nötig | Pulumi-Schritt wird mit der Warnung pulumi-token-missing oder pulumi-fetch-failed übersprungen; die Dateiverarbeitung läuft weiter |
Ausgaben
| Pfad | Inhalt |
|---|---|
ingestion/ingestion-manifest.json | Schemaversion, Zeitstempel, jede zugeordnete Datei (Quelle, Ziel, Kategorie, SHA-256, Größe, extrahierte Begleitdateien), Anzahl je Kategorie, abgelehnte Dateien, an Ort und Stelle referenzierte Installationspakete und Pakete (referenced) |
wsp/inputs/<Kategorie>/... | Zugeordnete Kopien Ihrer Dateien |
wsp/inputs/<Kategorie>/....extracted.txt, .extracted.md, .<Blatt>.csv | Extrahierte Text-Begleitdateien |
wsp/inputs/pulumi/<project>-<stack>.json | Pulumi-Stack-Exporte (nur mit iac.pulumi.stacks) |
Pass 00 schreibt keine Datei unter wsp/runs/<ts>/passes/.
Konfiguration und Einschränkungen
Konfiguration
iac.pulumi.stacksin der App-.swao.yml: Liste von{ org, project, stack }; Token aus dem Credential-Store-Schlüsselpulumi-api-token.swao ingest [--workspace <path>] [--app <id>]führt Pass 00 eigenständig aus. Nutzen Sie den Befehl vorswao assess, wenn Sie eine große Dokumentensammlung haben, damit die Extraktion das Assessment nicht verzögert.swao assessführt Pass 00 immer vor der Pass-Schleife aus (in einem Service Portfolio Assessment nach Pass 25 BINARY);--passeshat darauf keinen Einfluss.
Einschränkungen und bekannte Lücken
- Die Zuordnung nutzt Dateinamen und Endungen, nicht den Dateiinhalt. Benennen Sie Dateien aussagekräftig (zum Beispiel
cmdb-export.xlsx,architecture-overview.pptx), damit sie im richtigen Ordner landen. - Bilder und
.xps-Dateien liefern keinen Text an die LLM-Passes. .xls- und.doc-Dateien sowie Dateien über 10 MB werden ohne Textextraktion kopiert. Wandeln Sie ältere Office-Dateien vorher in.xlsxoder.docxum.- Archive werden abgelehnt, nicht entpackt. Unter
ingestion/binary/werden sie stattdessen wie Installationspakete referenziert. - In einem Service Portfolio Assessment legt
swao service initnur den leeren Ordnerapps/<id>/ingestion/an; legen Sie Dateien dort in beliebigen Unterordnern oder direkt ab. Bei Textdateien bleibt der Unterordner als Teil des Pfads unterhalb des Kategorieordners erhalten (ausingestion/binary/x.jsonwird beispielsweisewsp/inputs/structured/binary/x.json). Hinweisordner wiebinary/unddata-flow/aus früheren Versionen funktionieren weiterhin: Das Service-Pass-Profil sucht sie zuerst inwsp/inputs/undingestion/und verwendet andernfalls die Installationspakete, SBOMs und Dokumente an beliebiger Stelle unteringestion/. Installationspakete bleiben an ihrem Ort und belegen inwsp/inputs/keinen zusätzlichen Speicherplatz.
