Unique Product Upload

Description

Enable uploading a CSV of unique products for registration/processing. Files are authenticated, stored, and imported asynchronously via background jobs.

Overview Activity Diagram

---
config:
  theme: base
  layout: dagre
  flowchart:
    curve: linear
    htmlLabels: true
  themeVariables:
    edgeLabelBackground: "transparent"
---
flowchart TB
    Client[Client App]
    Upload[Unique Product Upload]
    Controller[UniqueProductWishlistController]
    Service(UniqueProductUploadService)
    Storage[(GCS)]
    Queue[(Queue)]

    Upload --- Step1[
      <div style='text-align: center'>
        <span style='display: inline-block; background-color: #6699cc !important; color:white; width: 28px; height: 28px; line-height: 28px; border-radius: 50%; font-weight: bold'>1</span>
        <p style='margin-top: 8px'>POST CSV</p>
      </div>
    ]
    Step1 --> Controller

    Controller --- Step2[
      <div style='text-align: center'>
        <span style='display: inline-block; background-color: #6699cc !important; color:white; width: 28px; height: 28px; line-height: 28px; border-radius: 50%; font-weight: bold'>2</span>
        <p style='margin-top: 8px'>Auth & Validate</p>
      </div>
    ]
    Step2 --> Service

    Service --- Step3[
      <div style='text-align: center'>
        <span style='display: inline-block; background-color: #6699cc !important; color:white; width: 28px; height: 28px; line-height: 28px; border-radius: 50%; font-weight: bold'>3</span>
        <p style='margin-top: 8px'>Store File</p>
      </div>
    ]
    Step3 --> Storage

    Service --- Step4[
      <div style='text-align: center'>
        <span style='display: inline-block; background-color: #6699cc !important; color:white; width: 28px; height: 28px; line-height: 28px; border-radius: 50%; font-weight: bold'>4</span>
        <p style='margin-top: 8px'>Enqueue Import</p>
      </div>
    ]
    Step4 --> Queue

    Queue --> Service
    Service --> Controller
    Controller --> Client

    %% Styling
    style Client fill:#e6f3ff,stroke:#0066cc,stroke-width:2px
    style Upload fill:#e6f3ff,stroke:#0066cc,stroke-width:2px
    style Controller fill:#e6f3ff,stroke:#0066cc,stroke-width:2px
    style Service fill:#f0f8e6,stroke:#339933,stroke-width:2px
    style Storage fill:#ffe6cc,stroke:#ff9900,stroke-width:2px
    style Queue fill:#ffe6cc,stroke:#ff9900,stroke-width:2px
    style Step1 fill:transparent,stroke:transparent,stroke-width:1px
    style Step2 fill:transparent,stroke:transparent,stroke-width:1px
    style Step3 fill:transparent,stroke:transparent,stroke-width:1px
    style Step4 fill:transparent,stroke:transparent,stroke-width:1px

Module List

Name Overview Link Description
Import CSV Import Upload and import unique products CSV