Objective
Let people scan required information (the same structured fields used on jobs and quotes) without opening the full workorder or quote, directly from Work custom worklists.
Present those fields in the expanded row for each worklist item, at the bottom beneath the HubSport Deal and Activity feed, with the block open by default and
clear controls to collapse the whole block and to collapse individual categories.
Background
- Today, inspection worklist rows expand into
SingleJobsDropdown, which shows payment notes, people, and activity — not required info (attik-frontend/src/components/task-check/SingleJobsDropdown.tsx). - Quote worklist rows expand into
SingleQuoteDropdown, which shows property/quote blocks, people, activity, and related job tooling — not a dedicated required-info summary (attik-frontend/src/components/task-check/SingleQuoteDropdown.tsx). - On the inspection workorder, required info is driven by inspection
requiredInfoValues, company definitions from therequired-infoAPI, and UI built aroundRequiredInfoSectionplusRequiredInfoAccordion(category grouping and field layout) (attik-frontend/src/app/tools/inspections/[id]/page.tsx,RequiredInfoSection.tsx,RequiredInfoAccordion.tsx). - Quotes carry
requiredInfoValueson the schema (attik-backend/src/models/quoteSchema.ts); inspections carry the same pattern on the inspection model. Worklist data is loaded viaGET /worklist/:id/dataand assembled withbuildWorklistPopulationStagesinattik-backend/src/routes/worklist.ts, then rendered throughWorklistResolver(attik-frontend/src/components/task-check/WorklistResolver.tsx) intoSingleJobsBar/GroupedClientJobsBarorSingleQuoteBar. - Grouped inspection worklists use
GroupedClientJobsBarandDropdownContent/SubJobList— any design should stay coherent when multiple jobs share one expanded group header.
Scope
Frontend (primary)
- Work page entry:
attik-frontend/src/app/tools/work/[[...type]]/page.tsxresolves custom worklists throughWorklistResolver. - Extend expanded content for:
- Inspections:
SingleJobsBar→SingleJobsDropdown; grouped flows:GroupedClientJobsBar→DropdownContent/_Subjoblist/SubJobListso each job’s expanded area can still expose required info appropriately. - Quotes:
SingleQuoteBar→SingleQuoteDropdown. - Reuse or mirror the category grouping behavior already implemented in
RequiredInfoAccordion(categories, ordering, “No Category” bucket) for display; decision needed on whether this worklist surface is read-only or allows the same edits/save flows asRequiredInfoSection(workorder parity vs lighter read-only summary). - UX requirements: section at the bottom of the expanded panel; default expanded; user can collapse the entire required-info section and individual categories.
WorklistResolveralready batches server fetches for a worklist — if definitions are needed company-wide (same pattern as the workorder page’srequired-infofetch), prefer one fetch per worklist render rather than per row, where practical.
Backend
- Confirm whether inspection and quote documents returned by the worklist aggregation already include everything needed to render values (e.g.
requiredInfoValuesand charge/service linkage for which fields apply). Population is centralized inbuildWorklistPopulationStagesandgetInspectionPopulationPipeline(attik-backend/src/util/functions/aggregation/inspectionPopulation.ts). Decision needed only if payloads are missing definitions or fields and require pipeline or projection changes.
Out of scope unless product expands the ask
- Event worklists (
SingleEventBar/SingleEventDropdown) only show required info if product wants parity when an event has a linked inspection; the current issue text centers on quotes and inspections.
References
- Workorder required-info data load:
attik-frontend/src/app/tools/inspections/[id]/page.tsx(required-infofetch). - Worklist API:
attik-backend/src/routes/worklist.ts(GET /worklist/:id/data). - Quote schema:
attik-backend/src/models/quoteSchema.ts(requiredInfoValues).