feat(engine): implement PLATEAU6 01-01-common quality-check workflow#2133
Conversation
There was a problem hiding this comment.
Pull request overview
Implements the PLATEAU6 (CityGML 3.0 / i-UR 4.0) 01-01-common quality-check workflow and refactors the existing PLATEAU4 implementation to share version-agnostic “common” validation actions via a new CityGML spec layer (CityGmlSpec) and PLATEAU generation profile (PlateauProfile).
Changes:
- Added a CityGML-spec namespace layer (CityGML 2.0 vs 3.0) and a PLATEAU profile abstraction used by shared common processors.
- Introduced
plateau6processor action mappings and fixture workflows/graphs for01-common+ testcase fixtures for01-01-common. - Updated the shared
DomainOfDefinitionValidator/UDXFolderExtractorto be profile-driven and registered PLATEAU6 actions; bumpedfastxmlto0.8.2.
Reviewed changes
Copilot reviewed 71 out of 78 changed files in this pull request and generated 1 comment.
Show a summary per file
| File | Description |
|---|---|
| engine/testing/data/testcases/quality-check/plateau6/01-01-common/Z-common-01_xlink_03/README.md | Placeholder note explaining why PLATEAU6 fixture is skipped for this case |
| engine/testing/data/testcases/quality-check/plateau6/01-01-common/Z-common-01_xlink_02/README.md | Placeholder note explaining why PLATEAU6 fixture is skipped for this case |
| engine/testing/data/testcases/quality-check/plateau6/01-01-common/Z-common-01_xlink_01/README.md | Placeholder note explaining why PLATEAU6 fixture is skipped for this case |
| engine/testing/data/testcases/quality-check/plateau6/01-01-common/Z-common-00_no-error/workflow_test.json | PLATEAU6 “no error” workflow test definition |
| engine/testing/data/testcases/quality-check/plateau6/01-01-common/Z-common-00_no-error/udx/bldg/49303425_bldg_6697_op.gml | CityGML 3.0 minimal “no error” GML fixture |
| engine/testing/data/testcases/quality-check/plateau6/01-01-common/Z-common-00_no-error/summary_common.json | Expected summary counts for “no error” case |
| engine/testing/data/testcases/quality-check/plateau6/01-01-common/Z-common-00_no-error/01_共通.csv | Expected per-file summary CSV for “no error” case |
| engine/testing/data/testcases/quality-check/plateau6/01-01-common/X-invalid-gml-id/README.md | Placeholder note explaining why PLATEAU6 fixture is skipped for this case |
| engine/testing/data/testcases/quality-check/plateau6/01-01-common/T03_02/README.md | Placeholder note explaining why PLATEAU6 fixture is skipped for this case |
| engine/testing/data/testcases/quality-check/plateau6/01-01-common/T03_01/README.md | Placeholder note explaining why PLATEAU6 fixture is skipped for this case |
| engine/testing/data/testcases/quality-check/plateau6/01-01-common/L06/README.md | Placeholder note explaining why PLATEAU6 fixture is skipped for this case |
| engine/testing/data/testcases/quality-check/plateau6/01-01-common/L05/README.md | Placeholder note explaining why PLATEAU6 fixture is skipped for this case |
| engine/testing/data/testcases/quality-check/plateau6/01-01-common/L04_02/workflow_test.json | PLATEAU6 L04 #2 workflow test definition |
| engine/testing/data/testcases/quality-check/plateau6/01-01-common/L04_02/udx/bldg/54377074_bldg_6697_op.gml | CityGML 3.0 fixture for invalid codeSpace resolution |
| engine/testing/data/testcases/quality-check/plateau6/01-01-common/L04_02/summary_common.json | Expected summary counts for L04 #2 |
| engine/testing/data/testcases/quality-check/plateau6/01-01-common/L04_02/01_共通.csv | Expected per-file summary CSV for L04 #2 |
| engine/testing/data/testcases/quality-check/plateau6/01-01-common/L04_02/01_共通_不正なcodeSpace.csv | Expected detailed CSV output for invalid codeSpace findings |
| engine/testing/data/testcases/quality-check/plateau6/01-01-common/L04_01/workflow_test.json | PLATEAU6 L04 #1 workflow test definition |
| engine/testing/data/testcases/quality-check/plateau6/01-01-common/L04_01/udx/bldg/54377074_bldg_6697_op.gml | CityGML 3.0 fixture for invalid code value (resolvable codeSpace) |
| engine/testing/data/testcases/quality-check/plateau6/01-01-common/L04_01/summary_common.json | Expected summary counts for L04 #1 |
| engine/testing/data/testcases/quality-check/plateau6/01-01-common/L04_01/01_共通.csv | Expected per-file summary CSV for L04 #1 |
| engine/testing/data/testcases/quality-check/plateau6/01-01-common/L04_01/01_共通_L04エラー.csv | Expected detailed CSV output for L04 error findings |
| engine/testing/data/testcases/quality-check/plateau6/01-01-common/L03/workflow_test.json | PLATEAU6 L03 workflow test definition |
| engine/testing/data/testcases/quality-check/plateau6/01-01-common/L03/udx/bldg/54377074_bldg_6697_op.gml | CityGML 3.0 fixture for invalid feature type placement |
| engine/testing/data/testcases/quality-check/plateau6/01-01-common/L03/summary_common.json | Expected summary counts for L03 |
| engine/testing/data/testcases/quality-check/plateau6/01-01-common/L03/01_共通.csv | Expected per-file summary CSV for L03 |
| engine/testing/data/testcases/quality-check/plateau6/01-01-common/L02/workflow_test.json | PLATEAU6 L02 workflow test definition |
| engine/testing/data/testcases/quality-check/plateau6/01-01-common/L02/udx/bldg/54377074_bldg_6697_op.gml | CityGML 3.0 fixture with schema-invalid date value |
| engine/testing/data/testcases/quality-check/plateau6/01-01-common/L02/summary_common.json | Expected summary counts for L02 |
| engine/testing/data/testcases/quality-check/plateau6/01-01-common/L02/01_共通.csv | Expected per-file summary CSV for L02 |
| engine/testing/data/testcases/quality-check/plateau6/01-01-common/L02/01_共通_L02エラー.csv | Expected detailed CSV output for L02 schema errors |
| engine/testing/data/testcases/quality-check/plateau6/01-01-common/L01/workflow_test.json | PLATEAU6 L01 workflow test definition |
| engine/testing/data/testcases/quality-check/plateau6/01-01-common/L01/udx/bldg/54377074_bldg_6697_op.gml | CityGML 3.0 fixture with malformed XML (syntax error) |
| engine/testing/data/testcases/quality-check/plateau6/01-01-common/L01/summary_common.json | Expected summary counts for L01 |
| engine/testing/data/testcases/quality-check/plateau6/01-01-common/L01/01_共通.csv | Expected per-file summary CSV for L01 |
| engine/testing/data/testcases/quality-check/plateau6/01-01-common/L01/01_共通_L01エラー.csv | Expected detailed CSV output for L01 parse errors |
| engine/testing/data/testcases/quality-check/plateau6/01-01-common/L-frn-01/README.md | Notes documenting why the existing L-frn-01 approach doesn’t port 1:1 to CityGML 3.0 |
| engine/testing/data/testcases/quality-check/plateau6/01-01-common/C01/README.md | Placeholder note explaining why PLATEAU6 fixture is skipped for this case |
| engine/testing/data/fixtures/plateau6-citymodel/z16211_imizu-shi_city_2024_citygml_1_op/schemas/iur/uro/4.0/urbanObject.xsd | Added i-UR 4.0 (prototype) Urban Object ADE schema fixture |
| engine/testing/data/fixtures/plateau6-citymodel/z16211_imizu-shi_city_2024_citygml_1_op/codelists/Room_function.xml | Added PLATEAU6 codelist fixture |
| engine/testing/data/fixtures/plateau6-citymodel/z16211_imizu-shi_city_2024_citygml_1_op/codelists/Room_class.xml | Added PLATEAU6 codelist fixture |
| engine/testing/data/fixtures/plateau6-citymodel/z16211_imizu-shi_city_2024_citygml_1_op/codelists/BuildingDetailAttribute_fireproofStructureType.xml | Added PLATEAU6 codelist fixture |
| engine/testing/data/fixtures/plateau6-citymodel/z16211_imizu-shi_city_2024_citygml_1_op/codelists/BuildingDetailAttribute_buildingStructureType.xml | Added PLATEAU6 codelist fixture |
| engine/testing/data/fixtures/plateau6-citymodel/z16211_imizu-shi_city_2024_citygml_1_op/codelists/Building_usage.xml | Added PLATEAU6 codelist fixture |
| engine/testing/data/fixtures/plateau6-citymodel/z16211_imizu-shi_city_2024_citygml_1_op/codelists/Building_class.xml | Added PLATEAU6 codelist fixture |
| engine/runtime/runtime/src/forwarder.rs | Added redundant clippy allow attribute (needs cleanup) |
| engine/runtime/examples/fixture/workflow/quality-check/plateau6/01-common/workflow.yml | New PLATEAU6 01-common workflow wiring 01-01-common subgraph |
| engine/runtime/examples/fixture/graphs/plateau6/xml_validator.yml | New PLATEAU6 XML validator graph fixture |
| engine/runtime/examples/fixture/graphs/plateau6/domain_of_definition_validator.yml | New PLATEAU6 domain-of-definition validator graph fixture |
| engine/runtime/action-plateau-processor/src/types/mod.rs | Added module export (types/dictionary) |
| engine/runtime/action-plateau-processor/src/tests/mod.rs | Added module export for test utils |
| engine/runtime/action-plateau-processor/src/plateau6/profile.rs | Defined PLATEAU6 PlateauProfile instance |
| engine/runtime/action-plateau-processor/src/plateau6/mod.rs | Added PLATEAU6 module wiring |
| engine/runtime/action-plateau-processor/src/plateau6/mapping.rs | Registered PLATEAU6 action factories |
| engine/runtime/action-plateau-processor/src/plateau4/profile.rs | Defined PLATEAU4 PlateauProfile instance |
| engine/runtime/action-plateau-processor/src/plateau4/mod.rs | Updated plateau4 module exports (profile handling for tests) |
| engine/runtime/action-plateau-processor/src/plateau4/mapping.rs | Updated plateau4 mappings to use common/profile-based factories |
| engine/runtime/action-plateau-processor/src/plateau4/attribute_flattener/mod.rs | Added module declarations (mod split) |
| engine/runtime/action-plateau-processor/src/plateau3/mod.rs | Added/updated plateau3 module declarations |
| engine/runtime/action-plateau-processor/src/mapping.rs | Extended global action mapping to include PLATEAU6 |
| engine/runtime/action-plateau-processor/src/lib.rs | Exported new citygml and common modules + plateau6 |
| engine/runtime/action-plateau-processor/src/common/udx_folder_extractor.rs | Refactored extractor factory to be profile-based (action name) |
| engine/runtime/action-plateau-processor/src/common/profile.rs | Added PlateauProfile abstraction for generation-specific settings |
| engine/runtime/action-plateau-processor/src/common/mod.rs | Introduced common module exports |
| engine/runtime/action-plateau-processor/src/common/errors.rs | Added shared error types for common processors |
| engine/runtime/action-plateau-processor/src/common/domain_of_definition_validator.rs | Refactored validator to be profile-driven + CityGML 2/3 aware |
| engine/runtime/action-plateau-processor/src/citygml/v3.rs | Added CityGML 3.0 namespace spec |
| engine/runtime/action-plateau-processor/src/citygml/v2.rs | Added CityGML 2.0 namespace spec |
| engine/runtime/action-plateau-processor/src/citygml/spec.rs | Added CityGmlSpec and fixed GML dictionary namespace constant |
| engine/runtime/action-plateau-processor/src/citygml/mod.rs | Added citygml module exports |
| engine/Cargo.toml | Bumped fastxml dependency to 0.8.2 |
| engine/Cargo.lock | Updated lockfile for fastxml 0.8.2 |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
a2a4044 to
f70dbae
Compare
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #2133 +/- ##
=====================================
Coverage 7.86% 7.86%
=====================================
Files 224 224
Lines 37600 37600
=====================================
Hits 2956 2956
Misses 34391 34391
Partials 253 253
Flags with carried forward coverage won't be shown. Click here to find out more. 🚀 New features to boost your workflow:
|
Overview
Implements the PLATEAU6 (CityGML 3.0 / i-UR 4.0)
01-01-commonquality-check workflow, introducing a version-agnostic CityGML profile layer so the common checks can be shared across PLATEAU generations.What I've done
citygml/module withCityGmlSpecandCITYGML2/CITYGML3namespace constants (CityGML 3.0 addscon, dropspbase/tex).domain_of_definition_validatorandudx_folder_extractorfromplateau4into a sharedcommon/layer parameterized byPlateauProfile(CityGML spec + iur namespaces + action prefix).plateau6module (PLATEAU6profile) and registered its actions; reworkedplateau4to use thePLATEAU4profile.plateau6/01-01-commontest fixtures and the01-01-commonworkflow / graph YAML.fastxml0.8.1→0.8.2.What I haven't done
01-01-commonis covered; other PLATEAU6 quality-check modules are out of scope.C01,L05,L06,T03_*,X-invalid-gml-id,Z-common-01_xlink_*ship asREADME.mdplaceholders only.How I tested
cargo make test— addedworkflow-testsfixtures forL01–L04andZ-common-00_no-errorwith expected CSV/JSON.Screenshot
Which point I want you to review particularly
The
CityGmlSpec/PlateauProfileboundary (spec-level vs. PLATEAU product-spec-level), and the redundant second#[allow(clippy::large_enum_variant)]added inforwarder.rs.Memo