Objective
- Let agents choose quote scope when requesting repair quotes so they can request quotes for:
- the current repair list
- all report deficiencies
- selected repair lists when multiple lists exist
- Support negotiation workflows where buyer agents sometimes want a focused subset, and other times need a full-deficiency scope.
- Avoid forcing one quote-request model across all repair and QuickFix workflows.
Background
- Current quote-request flows are organized around a single active repair list and category selection, with quote requests generated from selected items.
- Product feedback highlights three valid scope modes:
- curated list for negotiation
- complete deficiency set from report
- multi-list selection for jobs with multiple saved repair lists
- Existing client repair-list UX already supports multiple saved lists and category-level item inclusion for quotes, but scope choice (current vs all vs selected lists) is not explicit in the request entry flow.
- Decision needed on source-of-truth behavior when the same deficiency appears in multiple lists (dedupe strategy, ordering, and quote payload semantics).
Scope
Frontend (attik-frontend)
- Repair-list state and saved-list selection are managed in
src/app/client/reports/components/RepairListProvider.tsx and src/app/client/reports/components/RepairListSidebar.tsx, including savedRepairLists, currentSavedListId, and the handleGetQuotes path that currently navigates from one active list context.
- Categorization and quote-request preflight are in
src/app/client/reports/[slug]/repair-list/[id]/components/CategorizationPageClient.tsx, where selected categories and includedInQuotes drive the request URL (/request?categories=...) and persist assignment state.
- Quote request execution flow is in:
src/app/client/reports/[slug]/repair-list/[id]/request/page.tsx
src/app/client/reports/[slug]/repair-list/[id]/request/components/MultiCategoryRequestClient.tsx
src/app/client/reports/[slug]/repair-list/[id]/request/components/RequestFlowDrawer.tsx
- Scope-selection UI likely belongs near the existing “Get quotes” entry in
RepairListSidebar.tsx, with a model that can gather item IDs from:
- current list only
- all deficiencies in report context
- selected saved lists
- Decision needed on where to host this control: pre-navigation modal in sidebar vs. in categorization/request pages.
Backend (attik-backend)
- Quote requests are persisted and sent in
src/routes/repairList.ts, especially:
POST /repair-list/:id/request-quotes (company assignments + item IDs)
- category endpoints (
/categorize, /categories) that currently shape item inclusion
- Repair list data model is in
src/models/repairListSchema.ts (repairItems, quoteRequests, quoteSubmissions, categoryAssignments, includedInQuotes).
- Scope expansion for “all report deficiencies” and “selected repair lists” likely needs request-contract changes so the server can accept/resolve multi-list or report-wide item sets deterministically.
- Decision needed on validation and dedupe rules before sending PDFs/emails when items are merged from multiple sources.
Mobile
- No direct mobile quote-scope flow surfaced in current audit; treat mobile as out of scope unless explicitly requested.
References
attik-frontend/src/app/client/reports/components/RepairListSidebar.tsx
attik-frontend/src/app/client/reports/components/RepairListProvider.tsx
attik-frontend/src/app/client/reports/[slug]/repair-list/[id]/components/CategorizationPageClient.tsx
attik-frontend/src/app/client/reports/[slug]/repair-list/[id]/request/page.tsx
attik-backend/src/routes/repairList.ts
attik-backend/src/models/repairListSchema.ts