BOQ → 초안 일정 (Primavera P6)
플래너가 기준 일정을 시작할 때 모든 활동을 수동으로 입력하고, 연결하고, BOQ에서 비용을 탑재합니다. 이 스킬은 그 첫 번째 초안을 작성합니다: 공종별, 위치별로 하나의 활동, 실제 일정에서 학습한 로직, 모든 활동에 BOQ 금액이 포함된 XER 파일을 생성하여 P6에서 가져올 수 있습니다. 플래너가 날짜를 결정합니다 - 초안은 예측이 아니라 수정해야 할 뼈대입니다.
필요한 것
- 가격이 포함된 BOQ: .xlsx 또는 .csv 형식, 설명 + 수량 + 금액(또는 단가) 포함. 헤더는 열 또는 라인 위의 텍스트 행으로, 항목 번호(1, 1.2, 1.2.3)도 괜찮습니다. 영어, 포르투갈어 또는 스페인어 헤더.
- Python 3 및
data/rates.json(마이닝된 단가와 로직). 그 외에는 없습니다.
워크플로우 (Claude가 모든 단계를 실행하며, 플래너는 분류를 승인하고 질문에 답변)
1. BOQ 읽기
py scripts/read_boq.py <boq.xlsx|.csv> --out outputs/<job>
brief.csv (각 라인과 해당 장 경로 및 키워드 추정) 및 types.md (작업 유형 및 2단계 규칙)를 작성합니다.
사용자에게 라인 수, 합계, 사용된 시트/열을 알립니다.
합계가 BOQ 자체 합계와 일치하지 않으면 중지하고 분류 전에 이유를 찾습니다.
2. 모든 라인 분류 (Claude의 작업, 키워드 추정이 아님)
types.md를 읽은 다음 brief.csv 전체를 읽습니다 - 장별로, 길면 페이지 단위로.
outputs/<job>/decisions.csv를 열 key,type,locations,reason로 작성합니다:
chapter=<장 경로 시작>은 장을 포함합니다 (대소문자/악센트 무시);id~=<정규식>은 항목 번호로 BOQ 섹션을 포함합니다 (예: "TUBULACOES E CONEXOES"라는 두 장 모두); 라인 id는 하나의 라인을 포함합니다.- 일반 규칙 먼저, 예외는 나중에: 나중 규칙이 이전 규칙을 재정의합니다. 라인 규칙이 항상 우선합니다.
- 철근 콘크리트: 하나의 요소에 대한 거푸집, 철근 및 타설을 해당 요소의 유형(기초, 기둥, 연결보, 슬래브)으로 접습니다. 단, BOQ가 이를 공종별 작업으로 가격 책정한 경우는 예외입니다.
- 위치: 항상 설정합니다 (공백은 사이트를 포함한 모든 위치에 라인을 분산). 건물 층은 낮은 순서로; 사이트 설정, 외부 작업, 경계 벽, 외부 탱크 -> 사이트 위치.
skip은 현장 작업이 아닌 금액에만 사용하고 이유를 명시합니다. 혼합 또는 불확실한 장: 가장 좋은 유형을 선택하고 이유에 "플래너가 분할할 수 있음"을 작성합니다 - 이는 질문으로 다시 돌아옵니다.- 키워드 추정을 신뢰하지 마십시오: 잘못 읽습니다 ("tapume com telha" -> 지붕, "cabeamento" -> 슬래브, "aluminio" -> 조명).
py scripts/apply_types.py outputs/<job> --locations "Site|GF|FF"
알 수 없는 유형, 알 수 없는 위치 또는 결정되지 않은 라인이 있으면 중단됩니다. 금액 확인: 분류 + 건너뜀 = BOQ 합계.
lines.csv 및 typing.md (공종별 금액, 각 라인을 결정한 사람, 단위 경고)를 작성합니다. 사용자에게
공종별 금액 표와 경고를 표시합니다. 깨끗해질 때까지 수정하고 다시 실행합니다.
3. 플래너에게 질문
py scripts/questions.py outputs/<job> --start 2026-01-05
보정되지 않은 첫 번째 초안을 작성하고 questions.md + answers.json을 제안된 답변과 함께 작성합니다.
질문을 일반 언어로 사용자에게 제시하고 (AskUserQuestion은 예/아니오 질문에 잘 작동합니다), 그런 다음
answers.json을 채웁니다:
| 질문 | 중요한 이유 |
|---|---|
| 시작일, 작업 주(5/6/7), 통화 | P6의 달력 및 금액 통화 |
| 위치, 사이트, 레이아웃(층별 적층 / 별도 블록), 병렬 실행 여부 | 순서. 테스트됨: 초안의 자체 시퀀싱 전략이 실제 작업의 주요 차이점 |
| 계약 기간(개월) | 이 정보 없이 기간이 정확했음 (0.75-1.33x) 실제 작업 17개 중 4-6개; 포함 시 17개 모두 정확 |
| 알고 있는 세 가지 기간 (하나의 구조, 하나의 외피/마감, 하나의 설비 공종) | 초안 기간은 라인당 ~2.25배 차이; 세 가지 기준점이 ~1.76배로 줄이고 나머지 조정 |
| 현장 작업이 구조물보다 먼저인지 나중인지 (경계 벽, 배수, 탱크, 포장) | 실제 금액 이동; 계약자는 종종 벽을 먼저 시공 |
| "플래너가 분할할 수 있음"으로 표시된 분류 지점 | Claude가 배치했지만 플래너가 분할할 수 있는 라인 |
빈 답변은 기본값을 유지하고 보고서에 명시합니다 - 플래너를 위해 답변을 임의로 만들지 마십시오.
4. 빌드
py scripts/build.py outputs/<job>
plan.py + export.py 실행: schedule.json/.csv, report.md, schedule.xer.
모든 활동은 BOQ 라인 ID와 기간 이유를 전달합니다. 모든 연결은 출처를 명시합니다
(실제 일정: n개 링크 A->B, 기본 순서, 플래너의 답변).
가져오기
- P6: 파일 > 가져오기 > Primavera PM (XER) > 새 프로젝트 생성, 그런 다음 도구 > 일정 (F9). 비용은 활동당 " BOQ "로 수량, 단위 및 단가와 함께 표시됩니다.
증거 (모든 실제 데이터, leave-one-out 방식)
- 분류: Hassan BOQ 22/22 라인 = 플래너 자체 활동당 라인 (키워드 추정 15/22). Aracaju 643 라인 및 Januaria 628 라인 분류, 금액 정확.
- 로직: 실제 링크의 75-80%가 보류된 17개 일정에서 유지됨; Hassan 18/18.
- P6: 초안 XER이 P6 Professional 25로 가져와져 엔진과 동일한 날짜로 일정이 작성됨.
- 기간: 중앙값 오차 x2.25, 플래너의 세 가지 기간 포함 시 x1.76.
- 현금 흐름 예측 아님: 초안의 월별 곡선은 교과서 S-곡선보다 실제 곡선에 가깝지 않았습니다. 누군가가 초안에서 현금 흐름이나 시기에 대해 물을 때마다 이를 언급하십시오.
한계
- 텍스트 BOQ만 해당 (스캔된 PDF 불가). 공종별 위치별 하나의 활동: 플래너가 더 세분화.
- 단가와 로직은 73개의 일정(대부분 건물 공사)에서 추출됨; 토목/인프라는 테스트되지 않음.
data/는 73개의 공개 P6 일정에서 마이닝됨 (원시 XER은 번들에 포함되지 않음).
테스트
py tests/smoke.py - 번들된 예제 (공개 Januaria 입찰 BOQ, 628 라인)를 분류, 질문, 빌드 및
P6 XER을 통해 테스트: 라인, 정확한 금액, 표, 작업, 비용, 링크, 프로젝트 달력. 변경 후 실행.
개발 테스트 (3개의 실제 BOQ, 17개의 보류 일정, P6 가져오기 확인)는 번들에 포함되지 않은 파일을 사용했습니다.