인터페이스는 현지화되어 있으며, Skill 소개와 설명 문서는 선택한 언어로 AI가 자동 번역합니다. 코드·명령어·경로·전문 용어는 원문을 유지하며 원작자 문서가 우선합니다.
Skills 둘러보기
생산성 및 협업 · SKILL.md

oce-validation-engine

oce-validation-engine

Use the OpenConstructionERP validation engine: rule packs (BOQ quality, DIN 276, NRM, GAEB, MasterFormat, DPGF) that check estimates at import time and on demand. Use when verifying BOQ correctness or writing custom validation rules.

Independent GitHub snapshot · Automated classification · Original documentation governs

Skill 문서

GitHub

name: oce-validation-engine description: "Use the OpenConstructionERP validation engine: rule packs (BOQ quality, DIN 276, NRM, GAEB, MasterFormat, DPGF) that check estimates at import time and on demand. Use when verifying BOQ correctness or writing custom validation rules."

Validation Engine in OpenConstructionERP

Philosophy

"Validation is a first-class citizen." Every BOQ import (Excel/CSV/GAEB X83/X84) runs the configured rule packs at import time, so violations surface immediately — not when a user is staring at row 452.

Built-in rule packs

PackChecks
boq_qualityrequired fields, unit consistency, duplicate codes, quantity sanity
DIN 276cost-group codes valid, hierarchy consistent
NRMelement codes, measurement rules
GAEBX83/X84 structure, item references
MasterFormat / DPGFclassification codes

Configure the default set via OE_DEFAULT_VALIDATION_RULE_SETS (default ["boq_quality"]); run on demand with POST /api/v1/boqs/{id}/validate/.

Writing custom rules

A rule is: condition + severity + message. Example patterns:

# pseudo-rule: labour share sanity on a BOQ line
def rule_labour_share(line):
    labour = line.components_labour_cost
    total = line.rate
    if total > 0 and labour / total > 0.95:
        return {"severity": "warning",
                "message": f"Line {line.code}: labour is {labour/total:.0%} of rate"}

Reconciliation rules (the ones that actually catch data problems):

  • qty × unit_price = cost per component line (tolerance ±0.01 or rounding-aware).
  • Σ components = total_resource_cost_per_position (markup applied on top).
  • classification non-empty at every tree level.
  • no negative quantities outside documented deduction lines.

Where validation plugs in

  1. Import gate — import_inline_validation (env) runs packs during upload.
  2. On demand — /boqs/{id}/validate/ returns violations with severity.
  3. Continuous — the BOQ quality score updates live as the editor changes lines.

Best practices

  1. Fail imports on error-severity, warn on warning — never block a user silently.
  2. Keep rule messages actionable: name the row, the expected value, the found value.
  3. Version rule packs with the standards they encode (DIN 276:2018-12, NRM2, …).
  4. Use validation as the QA agent's deterministic backbone (see ai-agent-orchestration).
저장한 Skills