Satyam Rastogi
34fb4e8226
feat(data): extend permission modules to cover all routed features + add assignedAgentId to leads
2026-05-29 22:06:57 +05:30
Satyam Rastogi
6ff8ef31b1
feat(abac): pure policy engine (deny-wins, default-deny) + compilePolicies folding RBAC + resource rules
2026-05-29 22:04:04 +05:30
Satyam Rastogi
56f6075ceb
feat(data): lead-verification queue + mutators (verify pushes a grounded New Lead into the pipeline)
2026-05-29 21:05:34 +05:30
Satyam Rastogi
2f07103617
feat(dispatch): map dispatch reps to canonical field agents; ground recommendations in real profile facts
2026-05-29 20:30:09 +05:30
Satyam Rastogi
fab8644d9c
feat(data): add org skill catalog + two-layer person profiles + profile store API
2026-05-29 20:22:23 +05:30
Satyam Rastogi
5ce956b37a
feat(analytics): add subcontractor project scoping selectors (permitted-subset project view)
2026-05-29 20:01:33 +05:30
Satyam Rastogi
777af1ed70
feat(data): reconcile subcontractor<->project linkage (subcontractorIds + teamMembers from tasks)
2026-05-29 19:59:58 +05:30
Satyam Rastogi
1e8b72f18d
feat(data): re-stage subcontractor demo tasks across the full state machine with coherent history
2026-05-29 19:38:10 +05:30
Satyam Rastogi
42792a82ca
feat(data): expand subcontractor task state machine constants + add category/assignedDate; audit cancel
2026-05-29 19:31:26 +05:30
Satyam Rastogi
c06b7f2ab4
fix(analytics): switch revenue recognition to cost-to-cost POC so P&L reflects true margins (positive net, not front-load-distorted)
2026-05-29 19:16:36 +05:30
Satyam Rastogi
a0bc7c4d34
feat(dashboard): show analytics+financial cards to owner; ground Top Sales leaderboard in real reps; fix en-US currency formatting
2026-05-29 19:13:05 +05:30
Satyam Rastogi
94ddc1b030
fix(owner): replace native Team Management select with custom dark-mode-aware project picker
2026-05-29 18:59:50 +05:30
Satyam Rastogi
c27d64d75e
fix(data): tune PRJ-004/005 to healthy margins (PRJ-019 stays the sole problem job); compute owner portfolio count
2026-05-29 18:42:03 +05:30
Satyam Rastogi
a8ed0c0034
feat(leads): enrich lead data + add clickable lead detail page mirroring the create-lead form
2026-05-29 18:18:58 +05:30
Satyam Rastogi
aeabcea850
fix(analytics): recognize revenue/commission on percentage-of-completion basis (fix spurious negative gross profit)
2026-05-29 18:11:38 +05:30
Satyam Rastogi
6d2c06f74b
fix(data): remove duplicate completionPercentage keys introduced with lifecycleStage
2026-05-29 17:39:57 +05:30
Satyam Rastogi
ffb2307066
feat(store): add lifecycle/inspection/estimate-version mutators
2026-05-29 17:26:40 +05:30
Satyam Rastogi
63b80a91b5
feat(data): add inspections, estimate versions, and scope variance to demo scenarios
2026-05-29 17:25:18 +05:30
Satyam Rastogi
1a96346200
feat(data): add lifecycleStage + stageHistory to all projects
2026-05-29 17:19:39 +05:30
Satyam Rastogi
293abb6d27
feat(lifecycle): add pure project lifecycle stage model (stages, progress map, helpers)
2026-05-29 17:10:53 +05:30
Satyam Rastogi
8e75aa15c9
fix(data): convert signed lead kl_044 to PRJ-2026-029 (resolves orphan signed-column lead)
2026-05-29 17:01:20 +05:30
Satyam Rastogi
8f5a32179d
feat(analytics): add pure selectors for pipeline, revenue, commission, sub performance, storm
2026-05-29 16:46:57 +05:30
Satyam Rastogi
4857033994
feat(data): de-fake customer phones, tag 10 demo archetypes, add lost lead ( #3 ), make #6 over-budget
2026-05-29 16:43:48 +05:30
Satyam Rastogi
76df03f6fa
feat(data): realistic pre-sale lead identities, values, dates, and storm attribution
2026-05-29 16:31:23 +05:30
Satyam Rastogi
d5ea0935b4
fix(data): correct pendingInvoiceCount and align cost-invoice vendors to breakdown
2026-05-29 15:39:36 +05:30
Satyam Rastogi
2b741dd0b5
fix(data): trade-correct vendors, margins, and timeline details on converted projects
2026-05-29 15:20:01 +05:30
Satyam Rastogi
4b2bb37b3b
feat(data): convert won kanban leads (kl_023-038) into unified project records
2026-05-29 14:10:54 +05:30
Satyam Rastogi
058f41c763
refactor(data): migrate project ids to PRJ-2026-### (with inbound FKs)
2026-05-29 13:50:13 +05:30
Satyam Rastogi
f794ec28b4
chore(data): purge residual placeholder name in docs; normalize sub_001 trade + owner email
2026-05-29 05:00:22 +05:30
Satyam Rastogi
155bf6ce63
feat(data): add kanban lead values, fix Complete-stage data, set stormSource
2026-05-29 04:37:57 +05:30
Satyam Rastogi
2f43205854
fix(data): match subcontractor tasks to real projects; style On Hold status
2026-05-29 04:22:30 +05:30
Satyam Rastogi
2010ca080e
fix(data): align sub_002-005 login company/trade/phone with subcontractor records
2026-05-29 04:16:26 +05:30
Satyam Rastogi
2399b40926
feat(data): add login records for sub_002-005 so each subcontractor inbox is reachable
2026-05-29 04:13:52 +05:30
Satyam Rastogi
cb6695aa94
fix(data): seed leads list so the Leads page is populated on load
2026-05-29 04:09:11 +05:30
Satyam Rastogi
4ee480ec87
fix(data): reconcile project financials and add missing budget breakdowns
2026-05-29 04:01:27 +05:30
Satyam Rastogi
ebd5b78f41
fix(data): remap subcontractor task/notification actor ids to canonical scheme
2026-05-29 03:48:24 +05:30
Satyam Rastogi
8c4e6695be
fix(data): remap orgMembers userId to canonical id scheme
2026-05-29 03:44:23 +05:30
Satyam Rastogi
890072a051
feat(data): canonical roster — real Texan names + unified LUP employee ids
2026-05-29 03:41:18 +05:30
Satyam Rastogi
0c40f1c881
feat(data): add resolvePerson selector over a merged people index
2026-05-29 03:31:40 +05:30
Satyam Rastogi
a03fb0cf00
chore(data): add DEMO_TODAY anchor and use it for kanban day-counter
2026-05-29 03:24:57 +05:30
Satyam Rastogi
73387366fe
merge: integrate subcontractor, org-settings & commission features from project-refinement
...
# Conflicts:
# src/App.jsx
# src/components/Layout.jsx
# src/data/mockStore.jsx
# src/pages/LeadsListPage.jsx
# src/pages/owner/OwnerProjectDetail.jsx
# src/pages/owner/OwnerSnapshot.jsx
2026-05-29 01:11:03 +05:30
Satyam Rastogi
490d16b80a
subcontrcator: post a status update section- removed photo required option
2026-05-21 20:49:10 +05:30
Satyam Rastogi
e648547f1b
change mock data of all projects to show positive net profit
2026-05-21 17:48:55 +05:30
Satyam Rastogi
371c52fe9d
subcontractor: task thread section having teams and direct chat options now
2026-05-21 15:50:19 +05:30
Satyam Rastogi
3a038ffc6f
subcontractor: add progress updates and task activity timeline
2026-05-21 15:30:19 +05:30
Satyam Rastogi
5dd781ca45
subcontractor payments table added in owners box
2026-05-20 18:45:00 +05:30
Satyam Rastogi
2589975074
adds sections as list tasks,log expenses. fees, notifications for sub contrcator
2026-05-19 18:17:36 +05:30
Satyam-Rastogi
a6d3997d07
feat(storm-intel): configurable pin radius, fix blank map, 6mo default, remove mock polygons
...
- Map always renders (removed blank overlay when no nearby events)
- Pin radius is now user-configurable (default 5 mi, input shown in pin strip)
- Default date range changed to 6 months for faster initial load
- IEM fetch window narrowed to 6 months to match default
- MOCK_STORM_EVENTS cleared (IEM provides real NWS polygon data)
2026-05-19 00:47:43 +05:30
Satyam-Rastogi
7799a83a4a
feat(storm-intel): replace hexagonal storm polygons with realistic NWS-style swath shapes
...
Updated all 7 MOCK_STORM_EVENTS polygons to use irregular, amoeba-like
swath outlines matching real hail storm paths from NWS reports. Also
renamed project to LynkedUpPro-CRM in package.json.
2026-05-18 23:35:31 +05:30
Satyam-Rastogi
12bd2fe0de
feat(storm-intel): Phase 4+5 — Tomorrow.io forecast overlay and canvasser zone assignment
...
- Tomorrow.io 7-day forecast strip with weather icons, storm score bar, and per-day risk color coding
- High-risk alert banner in forecast strip when any day scores >=65
- api/storm-forecast.js: Vercel proxy that reads TOMORROW_API_KEY server-side; graceful empty response when key unset
- useStormForecast hook: USE_MOCK=false with realistic MOCK_FORECAST fallback
- ZoneDrawingLayer: click-to-place polygon vertices using react-leaflet useMapEvents; disables double-click zoom while active; shows live vertex dots + dashed preview polygon
- ZoneLayer: renders stormZones as colored semi-transparent polygons with agent initials at centroid
- ZoneAssignmentModal: name + canvasser picker + color selector + optional storm link; portaled modal
- StormIntelPage: Draw Zone button (Admin/Owner only); drawing state/cancel flow; stormZones displayed on map; zone summary strip in sidebar; StormDetailDrawer has working "Draw Canvasser Zone" action
- FieldStormZonePage: canvasser mobile view at /field/storm-zones showing assigned zones with map, linked storm details, conversion window badge, and peak window alert
- Layout: Storm Zones entry in FIELD_AGENT nav
- App: /field/storm-zones route (FIELD_AGENT + Admin + Owner)
2026-05-18 18:06:17 +05:30