fix MI poll: log full response, fix synchroResult=0 mapped to REJECTED not UNDER_REVIEW
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
这个提交包含在:
父节点
f7dbce7268
当前提交
81f04ee432
@ -479,24 +479,30 @@ public class StoreSubmissionService {
|
||||
String publicKey = resolveMiPublicKey(creds);
|
||||
String privateKey = require(creds, "privateKey", "MI");
|
||||
JsonNode root = miGetAppInfo(account, requirePackageName(v), publicKey, privateKey);
|
||||
// Log full root response so we can verify exact field names from production
|
||||
log.info("MI poll full response for version={}: {}", v.getId(), root);
|
||||
JsonNode pkg = root.path("packageInfo");
|
||||
// Log the full packageInfo so we can tune status-field mapping from production logs.
|
||||
log.info("MI poll packageInfo for version={}: {}", v.getId(), pkg);
|
||||
// Xiaomi /devupload/dev/query response:
|
||||
// packageInfo.appStatus (or .status): 1=待审核, 2=审核中, 3=已发布/上线, 4=已下线, 5=拒绝
|
||||
// Fallback candidate: .synchroResult (1=成功/已上线, 0=失败/拒绝)
|
||||
// packageInfo.appStatus: 1=待审核, 2=审核中, 3=已发布/上线, 4=已下线, 5=拒绝
|
||||
// root.updateVersion (bool): true=用户可更新(已上线), false=不可更新(审核中或拒绝)
|
||||
// packageInfo.synchroResult: 1=上线成功, 0=拒绝/失败
|
||||
int appStatus = pkg.path("appStatus").asInt(pkg.path("status").asInt(-1));
|
||||
log.info("MI poll appStatus={} for version={}", appStatus, v.getId());
|
||||
boolean updateVersion = root.path("updateVersion").asBoolean(true);
|
||||
log.info("MI poll appStatus={} updateVersion={} for version={}", appStatus, updateVersion, v.getId());
|
||||
yield switch (appStatus) {
|
||||
case 3 -> AppVersionEntity.StoreReviewState.APPROVED;
|
||||
case 3 -> updateVersion
|
||||
? AppVersionEntity.StoreReviewState.APPROVED
|
||||
: AppVersionEntity.StoreReviewState.UNDER_REVIEW; // published but new version rejected
|
||||
case 5 -> AppVersionEntity.StoreReviewState.REJECTED;
|
||||
case 1, 2 -> AppVersionEntity.StoreReviewState.UNDER_REVIEW;
|
||||
default -> {
|
||||
// Fall back to synchroResult: 1=已上线(通过), -1/0=其他
|
||||
// appStatus field absent — fall back to synchroResult and updateVersion
|
||||
int synchroResult = pkg.path("synchroResult").asInt(-1);
|
||||
log.info("MI poll synchroResult={} for version={}", synchroResult, v.getId());
|
||||
yield synchroResult == 1
|
||||
? AppVersionEntity.StoreReviewState.APPROVED
|
||||
// synchroResult: 1=已上线(通过), 0=拒绝/失败
|
||||
yield synchroResult == 1 ? AppVersionEntity.StoreReviewState.APPROVED
|
||||
: synchroResult == 0 ? AppVersionEntity.StoreReviewState.REJECTED
|
||||
: updateVersion ? AppVersionEntity.StoreReviewState.APPROVED
|
||||
: AppVersionEntity.StoreReviewState.UNDER_REVIEW;
|
||||
}
|
||||
};
|
||||
|
||||
正在加载...
在新工单中引用
屏蔽一个用户