Community生產力與協作github.com

hamzaabduljabbar/boq-schedule

將一份計價的工程數量清單(BOQ)轉換為初稿、成本加載的施工進度表,並可匯入 Primavera P6(XER)——按工種和位置劃分的活動、從 73 份真實 P6 進度表學習的邏輯,以及每個活動上的 BOQ 金額和數量。

boq-schedule 是什麼?

這個技能專為需要從頭建立基線進度表的專案排程人員設計。它能自動將一份 Excel 或 CSV 格式的計價 BOQ(支援英文、葡萄牙文、西班牙文)轉換為 Primavera P6(XER)的初稿。核心工作流程包括:讀取 BOQ、使用 Claude 將每一行標註為特定工種與位置(附理由)、進行金額總核對,然後透過一系列問題與排程人員互動,獲取地點排列、合約期間、已知工期等無法從 BOQ 推斷的資訊。最終會產生活動、邏輯連結(從真實進度表學習)以及成本加載的 XER 檔案。此技能並非用於現有進度表的成本加載(請改用 p6-cost-loader),也不是現金流預測。支援平台:Claude 作為主要執行引擎,搭配 Python 指令碼。

相容平台✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/hamzaabduljabbar/autoConst-boq-schedule/tree/HEAD

Installed? Explore more 生產力與協作 skills: steipete/gemini, steipete/gh-issues, steipete/skill-creator · View all 6 →

在你喜歡的 AI 中提問

開啟一個已預先載入此 Agent Skill 的新對話。

說明文件

BOQ → 初稿進度表 (Primavera P6)

排程人員在建立基線時,需要逐一手動輸入每個活動、建立連結,並根據 BOQ 進行成本加載。 此技能會自動產出這份初稿:每個工種每個位置一個活動、邏輯來自真實進度表、 BOQ 金額掛載於每個活動上,並輸出可供 P6 匯入的 XER 檔案。排程人員掌握日期 – 初稿僅為一個骨架,由他們校正,而非預測。

需求

  • 計價的 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~=<正則表達式> 當章節名稱重複時(例如兩個章節都叫做 "TUBULACOES E CONEXOES")以項目編號涵蓋 BOQ 區段;一行 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.33 倍)僅適用 4-6/17 個實際工作;加入後 17/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 <行數>」的形式出現在每個活動中,並附帶數量、單位與單價。

實證(皆基於真實資料,採用留一法)

  • 分類:Hassan BOQ 22/22 行 = 排程人員自己的每行活動(關鍵字猜測 15/22)。Aracaju 643 行與 Januaria 628 行全部分類準確,金額計算到分。
  • 邏輯:在 17 份保留的進度表中,75-80% 的真實連結維持不變;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 匯入檢查)所使用的檔案未包含在此。

相關技能