docs: defer shopee retcode mapping

This commit is contained in:
曾志威
2026-06-04 15:55:16 +08:00
parent 9792a99db2
commit d27c557f91
@@ -635,7 +635,7 @@ Convert WES `ResponseMessage` back to Shopee response shape:
[retcode: 0, message: 'success', data: rsp.data ?: [:]]
```
On WES business error, map to the configured Shopee error code and message. Do not expose WES stack traces.
On WES business error, do not implement final Shopee `retcode` mapping yet. Return a generic Shopee failure shape, keep the WES message sanitized, and log the original WES error for later mapping design. Do not expose WES stack traces.
- [ ] **Step 4: Add outbound call method**
@@ -889,8 +889,9 @@ POST /api/v2/automation/tovendor/inventory/racktransfer/create_rt_order
Failure handling:
- For retryable Shopee errors `-10013099` or timeout, record process history and let existing retry infrastructure retry the sync.
- For non-retryable errors `-10013001`, `-10013023`, `-10013049`, `-10013098`, record the response and block/flag the transfer order according to the current WES transfer failure pattern.
- Preserve Shopee `retcode` and message in the EDI call log.
- Do not finalize retry/non-retry mapping in this phase.
- Use existing transport failure handling for timeout/network errors only.
- [ ] **Step 5: Add 5.1 and 5.5 Vendor-to-WES basic handlers**
@@ -1002,34 +1003,33 @@ cd C:\work\gitlab\shopee\wes-loghub
.\gradlew :wms-api:compileGroovy :wms-wave:compileGroovy --no-problems-report
```
### Task 10: Error Code and Response Contract
### Task 10: Error Code and Response Contract Placeholder
**Files:**
- Modify: `ShopeeInboundApiHandler.groovy`
- Modify: `ShopeeOutboundShipmentMappingService.groovy`
- [ ] **Step 1: Normalize WES response**
- [ ] **Step 1: Keep retcode mapping as a placeholder**
WES standard `ResponseMessage` is acceptable inside current sync API. If raw Shopee response shape is required later, add one adapter at the boundary only:
WES standard `ResponseMessage` is acceptable inside current sync API. Final mapping from WES errors to Shopee protocol `retcode` is not decided yet and must not be implemented in this phase.
Boundary adapter behavior for now:
```groovy
[
retcode: rsp.hasError() ? mappedCode : 0,
message: rsp.hasError() ? translatedText : 'success',
retcode: rsp.hasError() ? -1 : 0,
message: rsp.hasError() ? sanitize(rsp.message) : 'success',
data: rsp.data ?: [:]
]
```
Do not change `ResponseMessage` globally.
Keep original WES error code/message in logs for later retcode mapping. Do not change `ResponseMessage` globally.
- [ ] **Step 2: Map retry behavior**
- [ ] **Step 2: Defer retry mapping**
Use the protocol:
Do not create a retry table or classify business `retcode` values yet.
- Parameter/business errors -> no auto retry.
- System, DB, timeout, upstream unavailable -> auto retry.
Represent this either as mapped retcode or process-history reason. Do not invent a new retry table unless current sync-fail infrastructure cannot express it.
Only transport-level failures such as timeout, connection refused, and upstream unavailable use existing retry behavior. Business retcode retry rules stay pending until the final error-code mapping is confirmed.
### Task 11: Verification and Documentation