BOQ -> Terminplanentwurf (Primavera P6)
Ein Planer, der einen Basis-Terminplan erstellt, tippt jede Aktivität ein, verknüpft sie und belastet sie manuell mit Kosten aus der BOQ.
Dieser Skill erstellt den ersten Entwurf: eine Aktivität pro Gewerk pro Ort, Logik aus echten Terminplänen, BOQ-Geld auf jeder Aktivität, in einem XER, das P6 importiert. Der Planer bestimmt die Daten – der Entwurf ist das Skelett, das er korrigiert, keine Prognose.
Was benötigt wird
- Eine bepreiste BOQ: .xlsx oder .csv mit Beschreibung + Menge + Betrag (oder Einheitspreis). Überschriften als Spalte oder als Textzeilen über den Zeilen, Positionsnummern (1, 1.2, 1.2.3) in Ordnung. Englische, portugiesische oder spanische Kopfzeilen.
- Python 3 und
data/rates.json(abgeleitete Sätze und Logik). Sonst nichts.
Arbeitsablauf (Claude führt jeden Schritt aus; der Planer genehmigt die Typisierung und beantwortet Fragen)
1. BOQ einlesen
py scripts/read_boq.py <boq.xlsx|.csv> --out outputs/<job>
Schreibt brief.csv (jede Zeile mit Kapitelpfad und Stichwortschätzung) und types.md (die Arbeitstypen und die Regeln für Schritt 2). Teilen Sie dem Benutzer die Zeilenanzahl, die Gesamtsumme und das verwendete Blatt/Spalten mit.
Wenn die Gesamtsumme nicht mit der eigenen Summe der BOQ übereinstimmt, anhalten und den Grund herausfinden, bevor etwas typisiert wird.
2. Jede Zeile typisieren (das ist Claudes Aufgabe, nicht die Stichwortschätzung)
Lesen Sie types.md, dann lesen Sie ALLE brief.csv – Kapitel für Kapitel, seitenweise, wenn es lang ist. Schreiben Sie outputs/<job>/decisions.csv mit den Spalten key,type,locations,reason:
chapter=<Beginn des Kapitelpfads>deckt ein Kapitel ab (Groß-/Kleinschreibung und Akzente ignoriert);id~=<regex>deckt einen BOQ-Abschnitt nach Positionsnummer ab, wenn Kapitelnamen sich wiederholen (z.B. zwei Kapitel namens "TUBULACOES E CONEXOES"); eine Zeilen-ID deckt eine Zeile ab.- Allgemeine Regeln zuerst, Ausnahmen danach: eine spätere Regel überschreibt eine frühere; eine Zeilenregel gewinnt immer.
- Stahlbeton: Schalung, Bewehrung und Beton eines Elements in den Elementtyp falten (Fundament, Stütze, Ringbalken, Decke), es sei denn, die BOQ berechnet sie als baustellenweite Gewerke.
- Orte: immer angeben (leer lässt eine Zeile über jeden Ort verteilen, einschließlich der Baustelle). Gebäudegeschosse zuerst die unteren; Baustelleneinrichtung, Außenanlagen, Grundstücksmauer, Außentanks -> der Ort "Baustelle".
skipnur für Geld, das keine Baustellenarbeit ist, und begründen. Gemischte oder zweifelhafte Kapitel: den besten Typ wählen und "Planer kann splitten" in den Grund schreiben – diese kommen als Fragen zurück.- Vertrauen Sie der Stichwortschätzung nicht: sie liest falsch ("tapume com telha" -> Dach, "cabeamento" -> Decke, "aluminio" -> Licht).
py scripts/apply_types.py outputs/<job> --locations "Baustelle|EG|OG"
Stoppt bei unbekanntem Typ, unbekanntem Ort oder unentschiedener Zeile. Geldprüfung: typisiert + übersprungen = BOQ-Gesamtsumme.
Schreibt lines.csv und typing.md (Geld pro Gewerk, wer welche Zeile entschieden hat, Mengenwarnungen). Zeigen Sie dem Benutzer die Tabelle Geld pro Gewerk und die Warnungen; korrigieren und erneut ausführen, bis alles sauber ist.
3. Den Planer fragen
py scripts/questions.py outputs/<job> --start 2026-01-05
Erstellt einen unkalibrierten ersten Entwurf und schreibt questions.md + answers.json mit vorgeschlagenen Antworten. Stellen Sie dem Benutzer die Fragen in klaren Worten (AskUserQuestion eignet sich gut für die Ja/Nein-Fragen), dann füllen Sie answers.json:
| Frage | Warum wichtig |
|---|---|
| Startdatum, Arbeitswoche (5/6/7), Währung | Kalender und Währungsangabe in P6 |
| Standorte, Baustelle, Layout (Geschosse gestapelt / separate Blöcke), welche parallel laufen | Die Reihenfolge. Getestet: Die eigene Sequenzierungsstrategie des Entwurfs ist der Hauptgrund, warum echte Projekte abweichen |
| Vertragslaufzeit (Monate) | Ohne sie war die Länge für 4-6 von 17 echten Projekten richtig (0,75-1,33x); mit ihr waren es 17 von 17 |
| Drei bekannte Dauern (ein Rohbau, eine Hülle/Abschluss, ein Gewerk der Technischen Gebäudeausrüstung) | Entwurfsdauern liegen bei einer Linie um ~2,25x daneben; drei Anker bringen sie auf ~1,76x und skalieren den Rest |
| Baustellenarbeiten früh oder nach dem Rohbau (Grundstücksmauer, Entwässerung, Tanks, Pflaster) | Verschiebt echtes Geld; Bauunternehmer bauen die Mauer oft zuerst |
| Typisierungspunkte, die als "Planer kann splitten" markiert sind | Zeilen, die Claude platziert hat, die ein Planer aber möglicherweise splitten würde |
Leere Antworten behalten die Vorgabe bei, und der Bericht sagt dies – erfinden Sie niemals eine Antwort für den Planer.
4. Bauen
py scripts/build.py outputs/<job>
Führt plan.py + export.py aus: schedule.json/.csv, report.md, schedule.xer.
Jede Aktivität trägt ihre BOQ-Zeilen-IDs und den Grund für ihre Dauer; jede Verknüpfung sagt, woher sie stammt (echte Terminpläne: n Verknüpfungen A->B, Standardreihenfolge, Antwort des Planers).
Import
- P6: Datei > Importieren > Primavera PM (XER) > Neues Projekt erstellen, dann Extras > Planen (F9). Ausgaben erscheinen pro Aktivität als " BOQ " mit Menge, Einheit und Einheitspreis.
Nachweise (alle auf echten Daten, Leave-One-Out)
- Typisierung: Hassan BOQ 22/22 Zeilen = die eigene Aktivität des Planers pro Zeile (Stichwortschätzung 15/22). Aracaju 643 Zeilen und Januaria 628 Zeilen typisiert, Geld auf den Cent genau.
- Logik: 75-80 % der echten Verknüpfungen halten bei 17 zurückgehaltenen Terminplänen; Hassan 18/18.
- P6: Der Entwurf XER importiert in P6 Professional 25 und plant auf die gleichen Daten wie die Engine.
- Dauern: Medianfehler x2,25, mit drei Planerdauern x1,76.
- Keine Cashflow-Prognose: Die monatliche Kurve des Entwurfs kam der echten nicht näher als eine Lehrbuch-S-Kurve. Sagen Sie dies immer, wenn jemand nach Cashflow oder Zeitplanung aus dem Entwurf fragt.
Grenzen
- Nur Text-BOQs (keine gescannten PDFs). Eine Aktivität pro Gewerk pro Ort: der Planer splittet feiner.
- Sätze und Logik stammen aus 73 Terminplänen, hauptsächlich Hochbauprojekte; Tiefbau/Infrastruktur ist ungetestet.
data/wurde aus 73 öffentlich zugänglichen P6-Terminplänen abgeleitet (die rohen XERs sind nicht beigefügt).
Tests
py tests/smoke.py – das beigefügte Beispiel (öffentliche Januaria-Ausschreibungs-BOQ, 628 Zeilen) durch Typisierung, Fragen, Bau und P6 XER: Zeilen, Geld auf den Cent, Tabellen, Aufgaben, Ausgaben, Verknüpfungen, Projektkalender. Nach jeder Änderung ausführen.
Die Entwicklungstests (3 echte BOQs, 17 zurückgehaltene Terminpläne, der P6-Import-Check) verwendeten Dateien, die nicht beigefügt sind.