Fix construction schedule sequence ordering

Foundations → Structure → Ground Floor (upper storey) → Roof → Openings → Finishes

- Remove wrong sequence: Ground Floor → Foundations (was backwards, causing upper storey to start Feb 23 before foundations)
- Remove Structure → Roof, Structure → Openings, Roof → Finishes
- Add correct chain: Structure → Ground Floor → Roof → Openings → Finishes
- Cascade dates forward: upper storey Mar 30–Apr 17, roof Apr 20–24, openings Apr 27–29, finishes Apr 30–May 5
- Extend Structure summary to P14D and Finishes summary to P4D to match subtask spans

Closes #28

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Bruno Postle 2026-03-20 19:33:26 +00:00
parent 86801e8adf
commit bf367bb457

View file

@ -3299,21 +3299,18 @@ DATA;
#3961=IFCTASK('2t8ODJP_TDbupmWFfWUiez',$,'Install Floor Covering',$,$,'P5.2',$,$,$,.F.,$,#3980,.CONSTRUCTION.); #3961=IFCTASK('2t8ODJP_TDbupmWFfWUiez',$,'Install Floor Covering',$,$,'P5.2',$,$,$,.F.,$,#3980,.CONSTRUCTION.);
#3969=IFCRELSEQUENCE('1Eie02rhH3Ket6S3RWMgju',$,$,$,#3950,#3952,$,.FINISH_START.,$); #3969=IFCRELSEQUENCE('1Eie02rhH3Ket6S3RWMgju',$,$,$,#3950,#3952,$,.FINISH_START.,$);
#3970=IFCRELSEQUENCE('11GFsFvz1F1fjd2dYSy55R',$,$,$,#3944,#3946,$,.FINISH_START.,$); #3970=IFCRELSEQUENCE('11GFsFvz1F1fjd2dYSy55R',$,$,$,#3944,#3946,$,.FINISH_START.,$);
#3971=IFCRELSEQUENCE('3xY4xKf1H8kuZJIwHffDko',$,$,$,#3946,#3947,$,.FINISH_START.,$);
#3972=IFCRELSEQUENCE('199GyALTD0wfMfKxNSoyWc',$,$,$,#3946,#3948,$,.FINISH_START.,$);
#3973=IFCRELSEQUENCE('0VBtoUmx50yPd01pKoFz98',$,$,$,#3947,#3949,$,.FINISH_START.,$);
#3974=IFCTASKTIME($,$,$,$,'P5D','2026-03-02T09:00:00','2026-03-06T17:00:00',$,$,$,$,$,$,$,$,$,$,$,$,$); #3974=IFCTASKTIME($,$,$,$,'P5D','2026-03-02T09:00:00','2026-03-06T17:00:00',$,$,$,$,$,$,$,$,$,$,$,$,$);
#3975=IFCTASKTIME($,$,$,$,'P3D','2026-03-07T09:00:00','2026-03-09T17:00:00',$,$,$,$,$,$,$,$,$,$,$,$,$); #3975=IFCTASKTIME($,$,$,$,'P3D','2026-03-07T09:00:00','2026-03-09T17:00:00',$,$,$,$,$,$,$,$,$,$,$,$,$);
#3976=IFCTASKTIME($,$,$,$,'P7D','2026-03-12T09:00:00','2026-03-20T17:00:00',$,$,$,$,$,$,$,$,$,$,$,$,$); #3976=IFCTASKTIME($,$,$,$,'P7D','2026-03-12T09:00:00','2026-03-20T17:00:00',$,$,$,$,$,$,$,$,$,$,$,$,$);
#3977=IFCTASKTIME($,$,$,$,'P5D','2026-03-23T09:00:00','2026-03-27T17:00:00',$,$,$,$,$,$,$,$,$,$,$,$,$); #3977=IFCTASKTIME($,$,$,$,'P5D','2026-04-20T09:00:00','2026-04-24T17:00:00',$,$,$,$,$,$,$,$,$,$,$,$,$);
#3978=IFCTASKTIME($,$,$,$,'P3D','2026-03-23T09:00:00','2026-03-25T17:00:00',$,$,$,$,$,$,$,$,$,$,$,$,$); #3978=IFCTASKTIME($,$,$,$,'P3D','2026-04-27T09:00:00','2026-04-29T17:00:00',$,$,$,$,$,$,$,$,$,$,$,$,$);
#3979=IFCTASKTIME($,$,$,$,'P2D','2026-03-30T09:00:00','2026-03-31T17:00:00',$,$,$,$,$,$,$,$,$,$,$,$,$); #3979=IFCTASKTIME($,$,$,$,'P2D','2026-04-30T09:00:00','2026-05-01T17:00:00',$,$,$,$,$,$,$,$,$,$,$,$,$);
#3980=IFCTASKTIME($,$,$,$,'P2D','2026-03-30T09:00:00','2026-03-31T17:00:00',$,$,$,$,$,$,$,$,$,$,$,$,$); #3980=IFCTASKTIME($,$,$,$,'P2D','2026-04-30T09:00:00','2026-05-01T17:00:00',$,$,$,$,$,$,$,$,$,$,$,$,$);
#3981=IFCTASKTIME($,$,$,$,'P8D','2026-03-02T09:00:00','2026-03-11T17:00:00',$,$,$,$,$,$,$,$,$,$,$,$,$); #3981=IFCTASKTIME($,$,$,$,'P8D','2026-03-02T09:00:00','2026-03-11T17:00:00',$,$,$,$,$,$,$,$,$,$,$,$,$);
#3982=IFCTASKTIME($,$,$,$,'P7D','2026-03-12T09:00:00','2026-03-20T17:00:00',$,$,$,$,$,$,$,$,$,$,$,$,$); #3982=IFCTASKTIME($,$,$,$,'P14D','2026-03-12T09:00:00','2026-03-27T17:00:00',$,$,$,$,$,$,$,$,$,$,$,$,$);
#3983=IFCTASKTIME($,$,$,$,'P5D','2026-03-23T09:00:00','2026-03-27T17:00:00',$,$,$,$,$,$,$,$,$,$,$,$,$); #3983=IFCTASKTIME($,$,$,$,'P5D','2026-04-20T09:00:00','2026-04-24T17:00:00',$,$,$,$,$,$,$,$,$,$,$,$,$);
#3984=IFCTASKTIME($,$,$,$,'P3D','2026-03-23T09:00:00','2026-03-25T17:00:00',$,$,$,$,$,$,$,$,$,$,$,$,$); #3984=IFCTASKTIME($,$,$,$,'P3D','2026-04-27T09:00:00','2026-04-29T17:00:00',$,$,$,$,$,$,$,$,$,$,$,$,$);
#3985=IFCTASKTIME($,$,$,$,'P2D','2026-03-30T09:00:00','2026-03-31T17:00:00',$,$,$,$,$,$,$,$,$,$,$,$,$); #3985=IFCTASKTIME($,$,$,$,'P4D','2026-04-30T09:00:00','2026-05-05T17:00:00',$,$,$,$,$,$,$,$,$,$,$,$,$);
#3986=IFCWORKCALENDAR('0B4XYw5DvE1Qx0dtTrH7MU',$,'Mon-Fri Work Week',$,$,$,(#3987),$,.NOTDEFINED.); #3986=IFCWORKCALENDAR('0B4XYw5DvE1Qx0dtTrH7MU',$,'Mon-Fri Work Week',$,$,$,(#3987),$,.NOTDEFINED.);
#3987=IFCWORKTIME($,$,$,#3988,$,$); #3987=IFCWORKTIME($,$,$,#3988,$,$);
#3988=IFCRECURRENCEPATTERN(.WEEKLY.,$,(1,2,3,4,5),$,$,$,$,$); #3988=IFCRECURRENCEPATTERN(.WEEKLY.,$,(1,2,3,4,5),$,$,$,$,$);
@ -3911,7 +3908,7 @@ DATA;
#4924=IFCQUANTITYLENGTH('Length',$,$,4.,$); #4924=IFCQUANTITYLENGTH('Length',$,$,4.,$);
#4925=IFCCOSTITEM('164NUcU$b1XBbw7CzbvA3W',$,'Doors',$,$,'F',$,(#4934),$); #4925=IFCCOSTITEM('164NUcU$b1XBbw7CzbvA3W',$,'Doors',$,$,'F',$,(#4934),$);
#4926=IFCTASK('2h$8d8iXD1jOftF6jkh58c',$,'Install Entrance Door',$,$,'P4.2',$,$,$,.F.,$,#4927,.CONSTRUCTION.); #4926=IFCTASK('2h$8d8iXD1jOftF6jkh58c',$,'Install Entrance Door',$,$,'P4.2',$,$,$,.F.,$,#4927,.CONSTRUCTION.);
#4927=IFCTASKTIME($,$,$,$,'P1D','2026-03-23T09:00:00','2026-03-23T17:00:00',$,$,$,$,$,$,$,$,$,$,$,$,$); #4927=IFCTASKTIME($,$,$,$,'P1D','2026-04-27T09:00:00','2026-04-27T17:00:00',$,$,$,$,$,$,$,$,$,$,$,$,$);
#4928=IFCCOSTITEM('2$yTsuB79BIemTR0GvmhPk',$,'Entrance Door',$,$,'F.1',$,(#4933),(#4932)); #4928=IFCCOSTITEM('2$yTsuB79BIemTR0GvmhPk',$,'Entrance Door',$,$,'F.1',$,(#4933),(#4932));
#4929=IFCRELNESTS('0bpe3L2SrELhYdyWZ$lVJm',$,$,$,#4925,(#4928,#5452,#8829)); #4929=IFCRELNESTS('0bpe3L2SrELhYdyWZ$lVJm',$,$,$,#4925,(#4928,#5452,#8829));
#4931=IFCRELASSIGNSTOCONTROL('0PmqIUQHjAQuu$WiGZPSKX',$,$,$,(#4811),$,#4928); #4931=IFCRELASSIGNSTOCONTROL('0PmqIUQHjAQuu$WiGZPSKX',$,$,$,(#4811),$,#4928);
@ -3923,9 +3920,9 @@ DATA;
#4937=IFCTASK('1L42ShaUPB0AlHecBlC$m4',$,'Install Front Door Bench and Plant Fruit Tree',$,$,'P5.5',$,$,$,.F.,$,#4942,.CONSTRUCTION.); #4937=IFCTASK('1L42ShaUPB0AlHecBlC$m4',$,'Install Front Door Bench and Plant Fruit Tree',$,$,'P5.5',$,$,$,.F.,$,#4942,.CONSTRUCTION.);
#4938=IFCCOSTITEM('0PwIjvSCz3fedPsW1eLWka',$,'Fixtures and Fittings',$,$,'G',$,(#4968),$); #4938=IFCCOSTITEM('0PwIjvSCz3fedPsW1eLWka',$,'Fixtures and Fittings',$,$,'G',$,(#4968),$);
#4939=IFCCOSTITEM('2q4bVzV656JQBYsqGIQhzh',$,'Landscaping',$,$,'H',$,(#4969),$); #4939=IFCCOSTITEM('2q4bVzV656JQBYsqGIQhzh',$,'Landscaping',$,$,'H',$,(#4969),$);
#4940=IFCTASKTIME($,$,$,$,'P1D','2026-03-30T09:00:00','2026-03-30T17:00:00',$,$,$,$,$,$,$,$,$,$,$,$,$); #4940=IFCTASKTIME($,$,$,$,'P1D','2026-04-30T09:00:00','2026-04-30T17:00:00',$,$,$,$,$,$,$,$,$,$,$,$,$);
#4941=IFCTASKTIME($,$,$,$,'P1D','2026-03-30T09:00:00','2026-03-30T17:00:00',$,$,$,$,$,$,$,$,$,$,$,$,$); #4941=IFCTASKTIME($,$,$,$,'P1D','2026-04-30T09:00:00','2026-04-30T17:00:00',$,$,$,$,$,$,$,$,$,$,$,$,$);
#4942=IFCTASKTIME($,$,$,$,'P1D','2026-03-31T09:00:00','2026-03-31T17:00:00',$,$,$,$,$,$,$,$,$,$,$,$,$); #4942=IFCTASKTIME($,$,$,$,'P1D','2026-05-01T09:00:00','2026-05-01T17:00:00',$,$,$,$,$,$,$,$,$,$,$,$,$);
#4946=IFCCOSTITEM('0$wpOptrT8IwdC5zUOwxmb',$,'Wood Burning Stove',$,$,'G.1',$,(#4963),(#4954)); #4946=IFCCOSTITEM('0$wpOptrT8IwdC5zUOwxmb',$,'Wood Burning Stove',$,$,'G.1',$,(#4963),(#4954));
#4947=IFCRELNESTS('0p0c6splj42PF66irBh$OB',$,$,$,#4938,(#4946,#4948,#4949,#7796,#7797,#7798,#7799)); #4947=IFCRELNESTS('0p0c6splj42PF66irBh$OB',$,$,$,#4938,(#4946,#4948,#4949,#7796,#7797,#7798,#7799));
#4948=IFCCOSTITEM('1NMB6a6LL6AfLKX$5$OvJH',$,'Chimney',$,$,'G.2',$,(#4964),(#4956)); #4948=IFCCOSTITEM('1NMB6a6LL6AfLKX$5$OvJH',$,'Chimney',$,$,'G.2',$,(#4964),(#4956));
@ -4079,7 +4076,7 @@ DATA;
#5399=IFCTASK('1EoRBnl2DFygSfF1HirBhA',$,'Erect Porch Walls',$,$,'P2.2',$,$,$,.F.,$,#5401,.CONSTRUCTION.); #5399=IFCTASK('1EoRBnl2DFygSfF1HirBhA',$,'Erect Porch Walls',$,$,'P2.2',$,$,$,.F.,$,#5401,.CONSTRUCTION.);
#5400=IFCTASK('2AolDq9VX7zhj_$DpFQSeh',$,'Install Lobby Doors',$,$,'P4.3',$,$,$,.F.,$,#5402,.CONSTRUCTION.); #5400=IFCTASK('2AolDq9VX7zhj_$DpFQSeh',$,'Install Lobby Doors',$,$,'P4.3',$,$,$,.F.,$,#5402,.CONSTRUCTION.);
#5401=IFCTASKTIME($,$,$,$,'P2D','2026-03-23T09:00:00','2026-03-24T17:00:00',$,$,$,$,$,$,$,$,$,$,$,$,$); #5401=IFCTASKTIME($,$,$,$,'P2D','2026-03-23T09:00:00','2026-03-24T17:00:00',$,$,$,$,$,$,$,$,$,$,$,$,$);
#5402=IFCTASKTIME($,$,$,$,'P1D','2026-03-25T09:00:00','2026-03-25T17:00:00',$,$,$,$,$,$,$,$,$,$,$,$,$); #5402=IFCTASKTIME($,$,$,$,'P1D','2026-04-29T09:00:00','2026-04-29T17:00:00',$,$,$,$,$,$,$,$,$,$,$,$,$);
#5412=IFCELEMENTQUANTITY('2zYi7FHyz9G8l4mCp6tsjb',$,'Qto_OpeningElementBaseQuantities',$,'BaseQuantities',(#5414,#5415,#5416,#5417,#5418)); #5412=IFCELEMENTQUANTITY('2zYi7FHyz9G8l4mCp6tsjb',$,'Qto_OpeningElementBaseQuantities',$,'BaseQuantities',(#5414,#5415,#5416,#5417,#5418));
#5413=IFCRELDEFINESBYPROPERTIES('29haGnY1b4MORVYwl6$Yd1',$,$,$,(#5243),#5412); #5413=IFCRELDEFINESBYPROPERTIES('29haGnY1b4MORVYwl6$Yd1',$,$,$,(#5243),#5412);
#5414=IFCQUANTITYAREA('Area',$,$,2.49599990844726,$); #5414=IFCQUANTITYAREA('Area',$,$,2.49599990844726,$);
@ -5291,8 +5288,8 @@ DATA;
#7786=IFCTASK('0i7JGI3KT868tnjCCFikwu',$,'Install Sanitary and Kitchenette Fixtures',$,$,'P5.6',$,$,$,.F.,$,#7789,.CONSTRUCTION.); #7786=IFCTASK('0i7JGI3KT868tnjCCFikwu',$,'Install Sanitary and Kitchenette Fixtures',$,$,'P5.6',$,$,$,.F.,$,#7789,.CONSTRUCTION.);
#7787=IFCTASK('2JhcGlk599$9kXXAReLENh',$,'Build Garden Sitting Walls and Paving',$,$,'P5.7',$,$,$,.F.,$,#7790,.CONSTRUCTION.); #7787=IFCTASK('2JhcGlk599$9kXXAReLENh',$,'Build Garden Sitting Walls and Paving',$,$,'P5.7',$,$,$,.F.,$,#7790,.CONSTRUCTION.);
#7788=IFCTASKTIME($,$,$,$,'P3D','2026-03-25T09:00:00','2026-03-27T17:00:00',$,$,$,$,$,$,$,$,$,$,$,$,$); #7788=IFCTASKTIME($,$,$,$,'P3D','2026-03-25T09:00:00','2026-03-27T17:00:00',$,$,$,$,$,$,$,$,$,$,$,$,$);
#7789=IFCTASKTIME($,$,$,$,'P1D','2026-04-01T09:00:00','2026-04-01T17:00:00',$,$,$,$,$,$,$,$,$,$,$,$,$); #7789=IFCTASKTIME($,$,$,$,'P1D','2026-05-04T09:00:00','2026-05-04T17:00:00',$,$,$,$,$,$,$,$,$,$,$,$,$);
#7790=IFCTASKTIME($,$,$,$,'P2D','2026-04-01T09:00:00','2026-04-02T17:00:00',$,$,$,$,$,$,$,$,$,$,$,$,$); #7790=IFCTASKTIME($,$,$,$,'P2D','2026-05-04T09:00:00','2026-05-05T17:00:00',$,$,$,$,$,$,$,$,$,$,$,$,$);
#7794=IFCCOSTITEM('2JtBF2R719Sxe$pdj3T8t$',$,'Extension Internal Walls',$,$,'B.2',$,(#7820),(#7749,#7758)); #7794=IFCCOSTITEM('2JtBF2R719Sxe$pdj3T8t$',$,'Extension Internal Walls',$,$,'B.2',$,(#7820),(#7749,#7758));
#7795=IFCCOSTITEM('1i$1zb6$f9reU3DFiodxQ$',$,'Extension Flat Roof',$,$,'D.5',$,(#7821),(#7680)); #7795=IFCCOSTITEM('1i$1zb6$f9reU3DFiodxQ$',$,'Extension Flat Roof',$,$,'D.5',$,(#7821),(#7680));
#7796=IFCCOSTITEM('3la3OEi018ueAbZsqu5nmv',$,'WC Toilet',$,$,'F.4',$,(#7822),(#7807)); #7796=IFCCOSTITEM('3la3OEi018ueAbZsqu5nmv',$,'WC Toilet',$,$,'F.4',$,(#7822),(#7807));
@ -6039,11 +6036,10 @@ DATA;
#9796=IFCRELNESTS('0ZYlDhfeT5qvgq3w4khdXt',$,$,$,#9794,(#9795,#9797,#9798)); #9796=IFCRELNESTS('0ZYlDhfeT5qvgq3w4khdXt',$,$,$,#9794,(#9795,#9797,#9798));
#9797=IFCTASK('1nYXO5tJrC$wMbhWo5Vy7u',$,'Ground Floor Slab',$,$,'P0.2',$,$,$,.F.,$,#9804,.CONSTRUCTION.); #9797=IFCTASK('1nYXO5tJrC$wMbhWo5Vy7u',$,'Ground Floor Slab',$,$,'P0.2',$,$,$,.F.,$,#9804,.CONSTRUCTION.);
#9798=IFCTASK('1GXuZQa3P1QBMmFNUKjWjh',$,'Ground Floor Windows and Door',$,$,'P0.3',$,$,$,.F.,$,#9805,.CONSTRUCTION.); #9798=IFCTASK('1GXuZQa3P1QBMmFNUKjWjh',$,'Ground Floor Windows and Door',$,$,'P0.3',$,$,$,.F.,$,#9805,.CONSTRUCTION.);
#9802=IFCTASKTIME($,$,$,$,'P15D','2026-02-23T09:00:00','2026-03-13T17:00:00',$,$,$,$,$,$,$,$,$,$,$,$,$); #9802=IFCTASKTIME($,$,$,$,'P15D','2026-03-30T09:00:00','2026-04-17T17:00:00',$,$,$,$,$,$,$,$,$,$,$,$,$);
#9803=IFCTASKTIME($,$,$,$,'P5D','2026-02-23T09:00:00','2026-02-27T17:00:00',$,$,$,$,$,$,$,$,$,$,$,$,$); #9803=IFCTASKTIME($,$,$,$,'P5D','2026-03-30T09:00:00','2026-04-03T17:00:00',$,$,$,$,$,$,$,$,$,$,$,$,$);
#9804=IFCTASKTIME($,$,$,$,'P5D','2026-02-27T09:00:00','2026-03-06T17:00:00',$,$,$,$,$,$,$,$,$,$,$,$,$); #9804=IFCTASKTIME($,$,$,$,'P5D','2026-04-06T09:00:00','2026-04-10T17:00:00',$,$,$,$,$,$,$,$,$,$,$,$,$);
#9805=IFCTASKTIME($,$,$,$,'P5D','2026-03-06T09:00:00','2026-03-13T17:00:00',$,$,$,$,$,$,$,$,$,$,$,$,$); #9805=IFCTASKTIME($,$,$,$,'P5D','2026-04-13T09:00:00','2026-04-17T17:00:00',$,$,$,$,$,$,$,$,$,$,$,$,$);
#9806=IFCRELSEQUENCE('3$qR87Ho16FukilSB987Iq',$,$,$,#9794,#3944,$,.FINISH_START.,$);
#9807=IFCRELSEQUENCE('1nF5Mb4Yb9wvKwQp$76FO$',$,$,$,#9795,#9797,$,.FINISH_START.,$); #9807=IFCRELSEQUENCE('1nF5Mb4Yb9wvKwQp$76FO$',$,$,$,#9795,#9797,$,.FINISH_START.,$);
#9808=IFCRELSEQUENCE('0vNbDyzs18PfMyGBjdPaOs',$,$,$,#9797,#9798,$,.FINISH_START.,$); #9808=IFCRELSEQUENCE('0vNbDyzs18PfMyGBjdPaOs',$,$,$,#9797,#9798,$,.FINISH_START.,$);
#9809=IFCELEMENTQUANTITY('0UsdP5MnX9fRl4fMo2T6jh',$,'Qto_OpeningElementBaseQuantities',$,'BaseQuantities',(#9811,#9812,#9813,#9814,#9815)); #9809=IFCELEMENTQUANTITY('0UsdP5MnX9fRl4fMo2T6jh',$,'Qto_OpeningElementBaseQuantities',$,'BaseQuantities',(#9811,#9812,#9813,#9814,#9815));
@ -6871,5 +6867,9 @@ DATA;
#11019=IFCRELASSIGNSTOPRODUCT('3i4G8yPyj09wskGi8HbUP8',$,$,$,(#9798),$,#10472); #11019=IFCRELASSIGNSTOPRODUCT('3i4G8yPyj09wskGi8HbUP8',$,$,$,(#9798),$,#10472);
#11020=IFCRELASSIGNSTOPRODUCT('0sGWDG9kb1ovYHn0KQPMxM',$,$,$,(#9798),$,#10522); #11020=IFCRELASSIGNSTOPRODUCT('0sGWDG9kb1ovYHn0KQPMxM',$,$,$,(#9798),$,#10522);
#11021=IFCRELASSIGNSTOPRODUCT('3MckIOIHj3dwO2hIbhbrEB',$,$,$,(#9798),$,#10572); #11021=IFCRELASSIGNSTOPRODUCT('3MckIOIHj3dwO2hIbhbrEB',$,$,$,(#9798),$,#10572);
#11022=IFCRELSEQUENCE('07G2G0ZiP789GFpFDKzaH4',$,$,$,#3946,#9794,$,.FINISH_START.,$);
#11023=IFCRELSEQUENCE('0C5vzT8JL6ZRMNhBkBXgu3',$,$,$,#9794,#3947,$,.FINISH_START.,$);
#11024=IFCRELSEQUENCE('0V8CZ0Kvb1ExKWWGP$sAg3',$,$,$,#3947,#3948,$,.FINISH_START.,$);
#11025=IFCRELSEQUENCE('131OzaZ$j7dvwJOkm2mkKM',$,$,$,#3948,#3949,$,.FINISH_START.,$);
ENDSEC; ENDSEC;
END-ISO-10303-21; END-ISO-10303-21;