Commit 4dc93be
fix(server): extract IfcRelAssignsToGroup(ByFactor)/Nests/ConnectsPathElements (#3969)
apps/server/src/services/data_model/relationships.rs only extracted 9 of
the ~19 IfcRel* types the TS/WASM path resolves, so a server-parsed
model's relationship graph silently dropped edges the client is fully
wired to consume. Confirmed live consumer chains for four of the ten
missing types and added them:
- IFCRELASSIGNSTOGROUP / IFCRELASSIGNSTOGROUPBYFACTOR: the viewer's
Groups panel, "By Zone" lens, and IDS partOf all read
RelationshipType.AssignsToGroup; without this a server-parsed model's
Groups tab renders empty even when the model has real IfcSystem/
IfcZone/IfcGroup memberships.
- IFCRELNESTS: packages/ids/src/bridge/data-accessor.ts maps it onto the
same edge bucket as IfcRelAggregates for IDS partOf checks.
- IFCRELCONNECTSPATHELEMENTS: the Properties panel's "connected walls"
(extractRelationshipsOnDemand) reads this edge.
Left out IFCRELASSIGNSTOPRODUCT, IFCRELCONNECTSELEMENTS,
IFCRELCONNECTSPORTTOELEMENT, IFCRELCONNECTSPORTS, IFCRELSPACEBOUNDARY,
and IFCRELREFERENCEDINSPATIALSTRUCTURE: grepping the app/server/mcp/cli/
ids trees found no consumer for any of them beyond generic cache/export/
query plumbing and parser-level tests, so adding them now would be dead
weight with no user-visible fix.
Orientation was verified per added type against the TS
`extractRelFast`/`REL_TYPE_MAP` byte-level scanner (not assumed):
AssignsToGroup(ByFactor) reads RelatingGroup at attr 6 (after the
RelatedObjects list at attr 4 and the RelatedObjectsType enum at attr
5); ConnectsPathElements reads RelatingElement/RelatedElement as two
SINGLE refs at attrs 5/6 (an optional ConnectionGeometry sits at attr
4), the same failure mode class as #1751 if handled as lists; Nests
shares the existing default (4,5) arm already used for Aggregates.
RED-GREEN'd against a synthetic STEP fixture, with a mutation removing
IFCRELNESTS from the type list and a second flipping the
ConnectsPathElements orientation, both confirmed caught by the new
tests. All 9 pre-existing relationship types and a fixture with none of
the new types were re-verified unaffected (274/274 `-p ifc-lite-server`
tests pass); the browser/WASM path is untouched.
Closes #3964
Claude-Session: https://claude.ai/code/session_01QPHChk3Ve9N519A4kY7436
Co-authored-by: Louis Trümpler <78563314+louistrue@users.noreply.github.com>1 parent 95f25d6 commit 4dc93be
2 files changed
Lines changed: 152 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
26 | 26 | | |
27 | 27 | | |
28 | 28 | | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
29 | 42 | | |
30 | 43 | | |
31 | 44 | | |
| |||
138 | 151 | | |
139 | 152 | | |
140 | 153 | | |
| 154 | + | |
| 155 | + | |
| 156 | + | |
| 157 | + | |
| 158 | + | |
| 159 | + | |
| 160 | + | |
| 161 | + | |
| 162 | + | |
| 163 | + | |
| 164 | + | |
| 165 | + | |
| 166 | + | |
| 167 | + | |
| 168 | + | |
| 169 | + | |
| 170 | + | |
| 171 | + | |
141 | 172 | | |
142 | 173 | | |
143 | 174 | | |
| |||
151 | 182 | | |
152 | 183 | | |
153 | 184 | | |
| 185 | + | |
| 186 | + | |
| 187 | + | |
| 188 | + | |
| 189 | + | |
| 190 | + | |
| 191 | + | |
| 192 | + | |
| 193 | + | |
154 | 194 | | |
155 | 195 | | |
156 | 196 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
733 | 733 | | |
734 | 734 | | |
735 | 735 | | |
| 736 | + | |
| 737 | + | |
| 738 | + | |
| 739 | + | |
| 740 | + | |
| 741 | + | |
| 742 | + | |
| 743 | + | |
| 744 | + | |
| 745 | + | |
| 746 | + | |
| 747 | + | |
| 748 | + | |
| 749 | + | |
| 750 | + | |
| 751 | + | |
| 752 | + | |
| 753 | + | |
| 754 | + | |
| 755 | + | |
| 756 | + | |
| 757 | + | |
| 758 | + | |
| 759 | + | |
| 760 | + | |
| 761 | + | |
| 762 | + | |
| 763 | + | |
| 764 | + | |
| 765 | + | |
| 766 | + | |
| 767 | + | |
| 768 | + | |
| 769 | + | |
| 770 | + | |
| 771 | + | |
| 772 | + | |
| 773 | + | |
| 774 | + | |
| 775 | + | |
| 776 | + | |
| 777 | + | |
| 778 | + | |
| 779 | + | |
| 780 | + | |
| 781 | + | |
| 782 | + | |
| 783 | + | |
| 784 | + | |
| 785 | + | |
| 786 | + | |
| 787 | + | |
| 788 | + | |
| 789 | + | |
| 790 | + | |
| 791 | + | |
| 792 | + | |
| 793 | + | |
| 794 | + | |
| 795 | + | |
| 796 | + | |
| 797 | + | |
| 798 | + | |
| 799 | + | |
| 800 | + | |
| 801 | + | |
| 802 | + | |
| 803 | + | |
| 804 | + | |
| 805 | + | |
| 806 | + | |
| 807 | + | |
| 808 | + | |
| 809 | + | |
| 810 | + | |
| 811 | + | |
| 812 | + | |
| 813 | + | |
| 814 | + | |
| 815 | + | |
| 816 | + | |
| 817 | + | |
| 818 | + | |
| 819 | + | |
| 820 | + | |
| 821 | + | |
| 822 | + | |
| 823 | + | |
| 824 | + | |
| 825 | + | |
| 826 | + | |
| 827 | + | |
| 828 | + | |
| 829 | + | |
| 830 | + | |
| 831 | + | |
| 832 | + | |
| 833 | + | |
| 834 | + | |
| 835 | + | |
| 836 | + | |
| 837 | + | |
| 838 | + | |
| 839 | + | |
| 840 | + | |
| 841 | + | |
| 842 | + | |
| 843 | + | |
| 844 | + | |
| 845 | + | |
| 846 | + | |
| 847 | + | |
0 commit comments