Files
plantUML/pricing/1500 CompetitorProductMultipleSave.puml
2025-12-19 12:45:15 +03:00

115 lines
3.0 KiB
Plaintext

@startuml CompetitorProductMultipleSave
scale 0.8
actor Client
participant "API Endpoint" as API
participant "Validation" as Validation
participant "Database" as DB
participant "Kafka" as Kafka
participant "Logging" as Log
autonumber
Client -> API: POST /v1/ui/competitor-product/multiple-save\n{JSON request}
API -> Validation: Deserialize JSON to Protobuf
alt Deserialization error
Validation -> Log: ERROR "PRC-MATCH-1501 | <error>"
API -> Client: 400 Bad Request\n{error details}
return
end
group Type = CREATE (0)
Validation -> Validation: Check for IDs in CREATE mode
loop For each invalid object
Validation -> Log: WARN "PRC-MATCH-1502 | <warning>"
end
Validation -> Validation: Check for duplicates in request
loop For each duplicate
Validation -> Log: WARN "PRC-MATCH-1503 | <warning>"
end
Validation -> DB: Bulk SELECT by (competitor_id + sku)
alt DB error
DB -> Log: ERROR "PRC-MATCH-1504 | <error>"
API -> Client: 500 Server Error\n{error response}
end
loop For each existing record
Validation -> Log: WARN "PRC-MATCH-1505 | <warning>"
end
DB -> API: Return existing records
Validation -> Validation: Filter valid records
alt No valid records
API -> Client: 200 OK\n{empty response}
end
API -> DB: Bulk INSERT with RETURNING id
alt DB error
DB -> Log: ERROR "PRC-MATCH-1504 | <error>"
API -> Client: 500 Server Error\n{error response}
end
DB -> API: Return new IDs
end
group Type = UPDATE (1)
Validation -> Validation: Check for missing IDs
loop For each invalid object
Validation -> Log: WARN "PRC-MATCH-1502 | <warning>"
end
Validation -> Validation: Check for duplicate IDs
loop For each duplicate
Validation -> Log: WARN "PRC-MATCH-1503 | <warning>"
end
Validation -> DB: Bulk SELECT by IDs
alt DB error
DB -> Log: ERROR "PRC-MATCH-1504 | <error>"
API -> Client: 500 Server Error\n{error response}
return
end
loop For each not found ID
Validation -> Log: WARN "PRC-MATCH-1505 | <warning>"
end
Validation -> Validation: Validate status transitions
loop For each invalid transition
Validation -> Log: WARN "PRC-MATCH-1506 | <warning>"
end
alt No valid records
API -> Client: 200 OK\n{empty response}
return
end
API -> DB: Bulk UPDATE
alt DB error
DB -> Log: ERROR "PRC-MATCH-1504 | <error>"
API -> Client: 500 Server Error\n{error response}
return
end
end
API -> Kafka: Send to parsing.collector.out
alt Kafka error
Kafka -> Log: ERROR "PRC-MATCH-1507 | <error>"
API -> Client: 500 Server Error\n{error response}
return
end
API -> Kafka: Send to parsing.competitor_product_status.update
alt Kafka error
Kafka -> Log: ERROR "PRC-MATCH-1508 | <error>"
API -> Client: 500 Server Error\n{error response}
return
end
API -> Client: 200 OK\n{success response}
API -> Log: INFO "PRC-MATCH-1509 | <success>"
@enduml