Commit graph

71 commits

Author SHA1 Message Date
Daniel Roth
11e8a52ec6 Add room bottom borders, section start borders, and blank floor separator columns 🟩 2026-05-15 15:54:16 +00:00
Daniel Roth
3eaf2011b0 Wire _apply_section_borders into headers and data rows; consolidate constants 🟪 2026-05-15 15:44:46 +00:00
Daniel Roth
2801756e56 Blank separator columns (E, U) carry no header fill 🟩 2026-05-15 15:42:24 +00:00
Daniel Roth
a078578122 _write_data_rows places door data at cols 22–25 (V–Y) 🟩 2026-05-15 15:41:30 +00:00
Daniel Roth
500ec02be2 _write_data_rows places door data at cols 22–25 (V–Y) 🟥 2026-05-15 15:40:04 +00:00
Daniel Roth
a748260b7d _apply_section_borders sets medium right-border on subtable boundary columns 🟥 2026-05-15 15:38:21 +00:00
Daniel Roth
65a40ad371 _write_headers uses 25 columns, 2 rows, and "Doors" group label 🟩 2026-05-15 15:36:57 +00:00
Daniel Roth
4ba9d64c09 _write_headers uses 25 columns, 2 rows, and "Doors" group label 🟥 2026-05-15 15:36:16 +00:00
Daniel Roth
70035e6e14 AuditRow carries opening and trickle_vent fields, all None on every row 🟩 2026-05-15 15:35:04 +00:00
Daniel Roth
f010a360c5 AuditRow opening and trickle_vent fields are None on all rows 🟥 2026-05-15 15:34:47 +00:00
Daniel Roth
f105c21d35 Wire audit_script.py with DB read, row builder, and openpyxl spreadsheet output 🟩 2026-05-15 14:49:59 +00:00
Daniel Roth
e6878a821f _build_rows produces correct row groups, window labels, and location fields 🟩 2026-05-15 14:48:12 +00:00
Daniel Roth
b6320b745e _build_rows returns structured audit rows from a Plan 🟩 2026-05-15 14:47:18 +00:00
Daniel Roth
0ce0228c31 _build_rows returns structured audit rows from a Plan 🟥 2026-05-15 14:45:10 +00:00
Daniel Roth
509fbf2abf Store uploaded_file_id on magic_plan_plan row 🟩 2026-05-13 11:02:46 +00:00
Daniel Roth
265be9849b Store uploaded_file_id on magic_plan_plan row 🟥 2026-05-13 10:50:28 +00:00
Jun-te Kim
e458f0a2b7 task and sub tasks imrpvoed 2026-05-12 16:24:11 +00:00
Daniel Roth
5f77fbf4e4 Fetch all pages in get_plans pagination loop 🟪 2026-05-12 14:54:14 +00:00
Daniel Roth
0d324f99b2 Fetch all pages in get_plans pagination loop 🟩 2026-05-12 14:52:46 +00:00
Daniel Roth
6dfca082f8 Fetch all pages in get_plans pagination loop 🟥 2026-05-12 14:52:31 +00:00
Daniel Roth
f83ddd05a8 Paginate get_plans to return flat list[PlanSummary] 🟩 2026-05-12 14:46:00 +00:00
Daniel Roth
62acc3ce98 Paginate get_plans to return flat list[PlanSummary] 🟥 2026-05-12 14:45:09 +00:00
Daniel Roth
8727a78f8b correct magic plan url paths 🟩 2026-05-12 14:33:58 +00:00
Daniel Roth
beaf21fdcc correct magic plan url paths 2026-05-12 14:32:37 +00:00
Daniel Roth
75d0313934 fix broken magicplan handler tests 2026-05-12 14:14:37 +00:00
Daniel Roth
04df924146 fix local invoker 2026-05-12 14:13:12 +00:00
Daniel Roth
3df726937e Remove unused _api_key instance variable now auth is fully header-based 🟪 2026-05-12 14:03:07 +00:00
Daniel Roth
eb381a778c _fetch_plan() sends no API key query parameter 🟩 2026-05-12 14:02:17 +00:00
Daniel Roth
7752039dbd _fetch_plan() sends no API key query parameter 🟥 2026-05-12 14:01:40 +00:00
Daniel Roth
20b32bcda0 get_plans() sends no API key query parameter 🟩 2026-05-12 14:01:35 +00:00
Daniel Roth
ffcff33dd4 get_plans() sends no API key query parameter 🟥 2026-05-12 14:00:07 +00:00
Daniel Roth
d59bf2d7cb Set API key as session header on MagicPlanClient construction 🟩 2026-05-12 13:59:33 +00:00
Daniel Roth
da4f5f44c0 Set API key as session header on MagicPlanClient construction 🟥 2026-05-12 13:58:16 +00:00
Daniel Roth
a672c0dea0 add localhandler for testing and update requirements 2026-05-12 13:51:46 +00:00
Daniel Roth
1243690d10 give handler permission to write to s3 bucket 2026-05-08 15:41:12 +00:00
Daniel Roth
ce2b61d60b Upload gzip-compressed MagicPlan JSON to S3 - only make one API call 🟪 2026-05-08 15:07:09 +00:00
Daniel Roth
9f62e3c31a typehint 2026-05-08 14:30:59 +00:00
Daniel Roth
e1972e4349 Upload gzip-compressed MagicPlan JSON to S3 🟪 2026-05-08 14:23:32 +00:00
Daniel Roth
337474e773 Persist UploadedFile record for each MagicPlan S3 upload 🟩 2026-05-08 14:20:49 +00:00
Daniel Roth
8ac77ce8b9 Persist UploadedFile record for each MagicPlan S3 upload 🟥 2026-05-08 14:19:49 +00:00
Daniel Roth
03e8750c1a Upload MagicPlan JSON to S3 using hubspot_deal_id key when UPRN absent 🟩 2026-05-08 14:17:51 +00:00
Daniel Roth
14a064fdef Upload gzip-compressed MagicPlan JSON to S3 🟩 2026-05-08 14:16:41 +00:00
Daniel Roth
7c9cb5b161 Upload gzip-compressed MagicPlan JSON to S3 🟥 2026-05-08 14:14:42 +00:00
Daniel Roth
f6c17be70a Expose get_plan_raw method on MagicPlanClient 🟩 2026-05-08 14:09:33 +00:00
Daniel Roth
c3aae8fd51 Expose get_plan_raw method on MagicPlanClient 🟥 2026-05-08 14:08:56 +00:00
Daniel Roth
4a9cabe197 Add hubspot_deal_id required field to MagicPlanTriggerRequest 🟩
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-08 13:45:10 +00:00
Daniel Roth
74b3a7f297 Add hubspot_deal_id required field to MagicPlanTriggerRequest 🟥
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-08 13:42:57 +00:00
Daniel Roth
e30e06cb6e simplify dockerfile as playwright not used 2026-05-08 13:24:04 +00:00
Daniel Roth
feaa1ea680 Add MagicPlan Lambda Dockerfile, CI/CD jobs, and SQS IAM wiring in hubspot_deal_etl 2026-05-08 13:12:13 +00:00
Daniel Roth
f903fdefe7 add TODO 2026-05-08 10:20:12 +00:00