| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- @startuml
- title Request Pickup (Fast Path)
- actor "Factory Officer" as FO
- participant "Public Site (FE)" as Web
- participant "Backend (Django)" as API
- actor "Staff (Web Admin)" as Staff
- actor Driver
- participant "Weigh Station" as Scale
- participant Billing
- FO -> Web: Open "Sell Scrap" (Request Pickup)
- Web --> FO: Show form (materials, qty, photos, address, time)
- FO -> Web: Submit form (+photos)
- Web -> API: POST /pickup-request
- API -> API: Create Lead (org, details)
- API --> Staff: Notify (inbox/email)
- Staff -> API: Create/attach Customer + Site
- Staff -> API: Create PickupOrder (status=requested)
- Staff -> API: Schedule + Assign Driver
- API --> FO: Confirmation (schedule)
- Driver -> FO: Arrive and collect
- Driver -> Scale: Weigh materials
- Scale -> API: Record WeighTicket + lines
- API -> Billing: Generate Invoice or Payout
- Billing --> FO: Invoice/Payout issued
- FO -> Billing: Pay / Receive funds
- API -> API: Mark Pickup completed
- @enduml
- @startuml
- title Get Bids (Marketplace Path)
- actor "Factory Officer" as FO
- participant "Public Site (FE)" as Web
- participant "Backend (Django)" as API
- actor "Staff (Web Admin)" as Staff
- actor "Recycler(s)" as Rec
- actor Driver
- participant "Weigh Station" as Scale
- participant Billing
- FO -> Web: "Sell Scrap" → Get Bids
- Web --> FO: Listing form (title, materials, qty, photos, reserve, ends)
- FO -> Web: Submit request
- Web -> API: POST listing-request
- API -> API: Create Draft ScrapListing (or Lead: listing_request)
- Staff -> API: Review + Publish (public or invite-only)
- API --> Rec: Listing visible / invites sent
- Rec -> API: Place Bid(s)
- Staff -> API: Close listing at end time
- Staff -> API: Award winning bid
- API -> API: Create PickupOrder from award
- Driver -> FO: Collect materials
- Driver -> Scale: Weigh materials
- Scale -> API: Record WeighTicket + lines
- API -> Billing: Generate Invoice or Payout
- Billing --> FO: Invoice/Payout issued
- API -> API: Mark Pickup completed
- @enduml
|