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>
这个提交包含在:
XuqmGroup 2026-05-17 12:39:06 +08:00
父节点 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;
}
};