Ë
    ­¹Ùj½  ã                   óZ  — d Z ddlZdddddœdd	d
ddœdd	dddœdd	d
ddœdœZdddgfdddgfdddgfdddgfddd gfd!d"d#gfd$d%d&gfgd'd(d)gfd*d+d,gfd-d.d/gfd0d1d2gfd3d4gfd5d6gfgd7d8d9gfd:d;d<gfd=d>d?gfd@dAgfdBdCgfdDdEgfgdFdGdHgfdIdJgfdKg dL¢fdMdNdOgfdPdQgfgdRdSgfdTdUdVgfdWdXgfdYdZd[gfd\d]gfd^d_gfgd`dagfdbg dc¢fdddedfgfdgdhgfdidjgfgdkœZdrdm„Zednk(  rWddlZ e ej                   eej                  do    e
ej                  «      dpkD  rej                  dp   ndl«      dp¬q«      «       yy)suV  
AI Room Designer â€” step-by-step plan + CAD budget engine (Stage 2).

Generates a plan FROM the actual redesign job: mode + room type + the mode's
change clause drive the steps, and every step carries priced line items in CAD
(ranges from a small in-code 2026 GTA retail/labour table â€” big-box mid-range,
not luxury, not bargain-bin). Totals are summed per step and for the plan.

This is deliberately deterministic: same mode + room = same plan structure, so
plans are reviewable and testable. When a live room-analysis model is wired in,
it will only swap the item quantities, not the shape.
é    Nzcabinetry and counterszcabinet frontszstool cushions and a runnerz"under-cabinet and pendant lighting)ÚheroÚsurfaceÚsoftÚlightzsofa and media wallÚwallszcushions, throws and the rugzfloor and table lampszbed and headboard wallzbedding, cushions and a rugzbedside lamps and a pendantzmain furniture groupingzlamps and ceiling light)ÚkitchenÚlivingÚbedroomÚroomzClear & prep)z(Room clear-out and surface prep (labour)é   é–   é,  )zWall repair and primerr   éZ   é´   zPaint the shell)z'Premium interior paint, walls + ceilingr   éÜ   i¤  )úPainter labour (or DIY $0)r   r   éX  zReplace the {hero})zNew hero furniture piece(s)r   i°  i€  )zSecondary furniture piecer   iô  ix  zNew lighting scheme)zStatement fixture for {light}r   éú   iî  )zBulbs, dimmers and switchesr   éP   éÈ   zTextiles & soft layers)zCurtains / window treatmentr   r   i  )z
{soft} setr   r   é&  zDecor & styling)zWall art and mirrorr   r   éÂ  )zPlants and styling objectsr   éd   r   zFinal fit & finish)zDelivery and assemblyr   r   é�  )zTouch-up kit and final cleanr   é<   éx   zDeclutter & deep clean)z"Editing/declutter session (labour)r   r   r   )zStorage baskets and organisersr   r   r   zUpgrade the {surface})z$Premium finish upgrade for {surface}r   r   i  )u5   Hardware swap â€” brass/matte-black pulls and handlesr   r   é^  zLayer the lighting)zAdded light source for {light}r   r   iŠ  )zWarm 2700K bulbs throughoutr   é(   r   zRicher textiles)zUpgrade {soft} to velvet/linenr   r   i¼  )zFull-length curtains, hung highr   r   r   zOne statement piece)z0Statement decor piece (mirror, art or sculpture)r   r   i„  zStyle & photograph)u-   Styling session â€” surfaces, books, greeneryr   r   r   zLock the colour story)u%   Paint â€” one cohesive palette, wallsr   r   é|  )zSample pots and swatch testingr   é   r   zStyle the {surface})z!Styled shelving/surface decor setr   r   r   )z"Matching storage baskets and traysr   r   r   zLayer textiles)zLayered {soft} in the paletter   r   r   )u   Curtains â€” soft, floor-lengthr   r   ià  ÚGreenery)u   Plants â€” 3 sizes, with potsr   r   i@  zArt & focal wall)z(Gallery art set / large print with framer   r   r   zWarm the light)z(Warm bulbs + one accent lamp for {light}r   r   r   zDeclutter & rearrange)u%   Declutter session (labour â€” DIY $0)r   r   r   )zStorage bins and donation bagsr   é   r   ÚRepaint)u*   One fresh wall colour â€” paint + suppliesr   r   i  zCheap soft touches))zNew cushion covers (set of 4)r   é2   én   )zThrow blanketr   r    éF   )z
Budget rugr   r   r   zGreenery & art)zTwo easy-care plants with potsr   r   r   )z(Printable art + budget frames (set of 3)r   é#   éU   z
Light lift)zWarm LED bulbs throughoutr   r"   é7   zMeasure & map)z0Tape measure + painter's tape for layout markingr   é   r'   zMove the {hero})z#Furniture sliders and moving strapsr   r"   r   )z#Two-person moving help (labour, 2h)r   r   é    zFix the walkways)z,Rug repositioning / right-size rug if neededr   r   éð   zCable & clutter control)zCable management kitr   r"   r&   )z'One storage piece only if a gap remainsr   r   r   zRe-anchor the lighting)z'Move/re-aim {light} to the new groupingr   r   r   zLive with it a week)u"   No purchase â€” adjustment sessionr   r   r   zPick the palette)z'Sample pots (3 colours) + swatch boardsr   r    éA   zRepaint the {surface}))u   Premium paint â€” wallsr   r   r   )zRollers, tape and drop clothsr   é-   r   )r   r   r   r   zLayer the light)u   Second light source â€” {light}r   r   r   )zDimmer switch + installr   r   r+   zWarm bulbs throughout)z2700K LED bulbs, full room setr   r   é_   zTie it together)z'Two accents in the new palette ({soft})r   r   r   )zcomplete-transformationzlook-more-expensivezpinterest-modezbudget-refreshzfix-my-layoutzcolors-and-lightingr   c           	      óœ  — t         j                  |t         d   «      }g dd}}}t        t        |    d¬«      D ]‰  \  }\  }}g }	dx}
}|D ]E  \  }}}} |j                  d
i |¤Ž}|	j                  ||||z  ||z  dœ«       |
||z  z  }
|||z  z  }ŒG |j                  | |j                  d
i |¤Ž|	|
|dœ«       ||
z  }||z  }Œ‹ | |d|||dd	œS )Nr   r   r   )Ústart)ÚitemÚqtyÚcad_lowÚcad_high)ÚstepÚtitleÚitemsr4   r5   ÚCADzxConcept-render plan. Prices are mid-range GTA retail/labour ranges (2026) to confirm at purchase; measure before buying.)Úmoder   ÚcurrencyÚstepsÚtotal_cad_lowÚtotal_cad_highÚnote© )ÚROOM_ANCHORSÚgetÚ	enumerateÚ
MODE_PLANSÚformatÚappend)Úmode_keyr   Úanchorsr<   Ú	total_lowÚ
total_highÚir7   r8   ÚpricedÚs_lowÚs_highÚnamer3   ÚlowÚhighs                   ú./var/www/room-designer/pipeline/plan_engine.pyÚ
build_planrS   f   s(  € Ü×Ñ˜t¤\°&Ñ%9Ó:€GØ#% q¨!�jˆ9€EÜ&¤z°(Ñ';À1ÔEò Ñˆ‰>ˆE�5ØˆØÐˆ�Ø$)ò 	!Ñ ˆD�#�s˜DØ�4—;‘;Ñ) Ñ)ˆDØ�M‰M 4°Ø&)¨C¡i¸TÀC¹ZñIô Jà�S˜3‘YÑˆEØ�d˜S‘jÑ ‰Fð	!ð 	�‰˜a¨,¨%¯,©,Ñ*A¸Ñ*AØ%°%ÀVñMô 	Nà�UÑˆ	Ø�fÑ‰
ðð  d¸Ø¨YÈ*ðSñTð Tó    Ú__main__r   é   )Úindent)r   )Ú__doc__ÚjsonrA   rD   rS   Ú__name__ÚsysÚprintÚdumpsÚargvÚlenr@   rT   rR   ú<module>r`      s?  ðñó ð 1Ð=MØ5Ð@dñfà,¸Ø5Ð@WñYà0¸WØ5Ð@]ñ_à.¸7Ø3Ð>WñYñ	€ð 
ÐSØ@ðBð 	Cà	ÐUØFðHð 	Ià	Ð NØ Kð Mð 	Nà	Ð!OØ!Lð!Nð 	Oà	!Ð$PØ$?ð$Að 	Bà	ÐAØHðJð 	Kà	Ð FØ Lð Nð 	Oð ð" 
"Ð$UØ$Rð$Tð 	Uà	 Ð#YØ#ið#kð 	là	Ð OØ Jð Lð 	Mà	ÐLØLðNð 	Oà	Ð!bÐ cÐdØ	Ð ]Ð^Ð_ðð 
!Ð#YØ#Pð#Rð 	Sà	Ð!SØ!Sð!Uð 	Và	ÐJØLðNð 	Oà	ÐDÐEÐFØ	ÐWÐXÐYØ	ÐUÐVÐWð
ð 
!Ð#UØ#Pð#Rð 	Sà	ÐPÐQÐRØ	ò  <ð 	=ð 
ÐIØSðUð 	Và	Ð@ÐAÐBð
ð 
ÐZÐ[Ð\Ø	ÐOØOðQð 	Rà	ÐYÐZÐ[Ø	"Ð%HØ%[ð%]ð 	^à	!Ð$ZÐ#[Ð\Ø	Ð!PÐ QÐRð	ð 
ÐTÐUÐVØ	 ò #Nð 	Oð 
ÐMØDðFð 	Gà	 Ð#PÐ"QÐRØ	ÐTÐUÐVð	ñ{G€
óTTð, ˆzÒÛÙ	ˆ*ˆ$�*‰*‘Z §¡¨¡¹CÀÇÁ»MÈAÒ<M¨S¯X©X°aª[ÐSYÓZÐcdÔ
eÕfð rT   