39 lines
1.5 KiB
Java
39 lines
1.5 KiB
Java
package com.baiyue.integration.provider;
|
|
|
|
import com.baiyue.integration.dto.CarrierScheduleDtos.QueryRequest;
|
|
import com.baiyue.integration.dto.CarrierScheduleDtos.QueryResult;
|
|
import com.baiyue.integration.dto.ProviderStatus;
|
|
import org.springframework.stereotype.Component;
|
|
import org.springframework.core.Ordered;
|
|
import org.springframework.core.annotation.Order;
|
|
|
|
import java.time.LocalDateTime;
|
|
import java.util.List;
|
|
import java.util.Locale;
|
|
import java.util.Set;
|
|
|
|
/**
|
|
* Safe fallback for the six confirmed carriers. It never scrapes captcha/dynamic pages and returns
|
|
* an explicit provider-unavailable outcome until a documented provider API adapter is configured.
|
|
*/
|
|
@Component
|
|
@Order(Ordered.LOWEST_PRECEDENCE)
|
|
public class CompliantCarrierScheduleProviderAdapter implements CarrierScheduleProviderAdapter, IntegrationProviderAdapter {
|
|
private static final Set<String> CARRIERS = Set.of("MATSON", "SML", "ZIM", "COSCO", "EMC", "HEDE");
|
|
|
|
@Override
|
|
public boolean supports(String carrierCode) {
|
|
return carrierCode != null && CARRIERS.contains(carrierCode.trim().toUpperCase(Locale.ROOT));
|
|
}
|
|
|
|
@Override
|
|
public QueryResult query(QueryRequest request) {
|
|
return new QueryResult("COMPLIANT_MANUAL_FALLBACK", "MANUAL_REQUIRED", List.of(), List.of(),
|
|
"PROVIDER_API_NOT_CONFIGURED", "未配置可审计的结构化轨迹供应商接口,不执行网页抓取",
|
|
LocalDateTime.now());
|
|
}
|
|
|
|
@Override
|
|
public ProviderStatus status() { return ProviderStatus.of("CARRIER_SCHEDULE_FALLBACK", true, false); }
|
|
}
|