Client request UI: My Property view with package and request form #123
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Type
Feature
Lineage
Child of spike #121 (client request flow design). Part of Phase 3. Depends on #122 (ServiceRequest model — MERGED).
Repo
ldraney/landscaping-assistantUser Story
As a client, I want to see my current service package and submit requests (package changes or projects) so I can manage my landscaping service through the app — including getting an initial bid for mowing, weeding, or trimming & edging for my property.
Context
The My Property view (Person/Profile tab) is where clients interact with the app. They need to see their current package (which services, monthly price), active project requests and their status, and a form to submit new requests. Package changes and projects both use the same "Request a Change" form. Even the initial service bid (getting mowing/weeding/trimming for the first time) is treated as a service request.
This is the client-facing counterpart to #176 (admin display) and #179 (admin workflow). See
docs/service-requests.mdfor the full architecture, status lifecycle, and data model.File Targets
app/views/person/index.html.erb(update — add service package display and request list)app/controllers/service_requests_controller.rb(new — create action for clients)app/views/service_requests/_client_form.html.erb(new — request form partial)app/views/service_requests/_client_request_list.html.erb(new — status list partial)app/assets/stylesheets/application.css(add client request styles, status badges)config/routes.rb(add service_requests resource)spec/requests/service_requests_spec.rb(new)Acceptance Criteria
Test Expectations
spec/requests/service_requests_spec.rb: create, authorization, validation errors, accept/declinebundle exec rspecConstraints
~/ror-css-guide— no Tailwind, design tokens in :rootdocs/service-requests.mdfor status values, transitions, and role access matrixFeature Flag
None
Checklist
Related
docs/service-requests.md— architecture referenceScope Review: NEEDS_REFINEMENT
Review note:
review-1348-2026-06-07Template is complete and file targets verified, but several scope gaps will block or confuse the implementing agent.
Critical:
docs/service-requests.mddoes not exist -- referenced in Context and Constraints but never created. The agent has no architecture reference.requested, quoted, paid, scheduled, completed, declined.Body fixes needed:
crew_member_idis resolved from Keycloak session (clients may not have a CrewMember record)quoted -> paidtransition, not an "accepted" statussubforowner_subcheck (not in session hash currently)Scope:
docs/service-requests.mdwith status lifecycle, transitions, and role access matrixarch-rails-appnote in pal-e-docsScope update (post review-1348-2026-06-07):
New dependency: #195 (auth prereqs — session sub, accepted status, CrewMember auto-create, current_crew_member helper).
Fixes for review findings:
acceptedstatus — added to ServiceRequest in #195. Flow: quoted → accepted → paid/scheduledcurrent_crew_memberhelper added in #195, CrewMember auto-created on loginsub(Keycloak UUID) via #195, matches property.owner_subdocs/service-requests.md— exists once PR #182 mergesProperty access model:
Access update: Request creation is NOT client-only. Any role can create a service request:
Only admin can set a price/bid. Only the client (property owner) can accept a bid.