feat(t219): show pending-payment reconciliation

This commit is contained in:
QiuSW
2026-07-28 18:16:09 +08:00
parent c2ec98d5be
commit 78dc595815
20 changed files with 768 additions and 37 deletions
@@ -45,6 +45,7 @@ import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp
import com.roubao.autopilot.procurement.LoginInput
import com.roubao.autopilot.procurement.ExecutionMode
import com.roubao.autopilot.procurement.OrderSubmissionStatus
import com.roubao.autopilot.procurement.ProcurementPhase
import com.roubao.autopilot.procurement.ProcurementUiState
import com.roubao.autopilot.readiness.DeviceReadinessSnapshot
@@ -471,6 +472,30 @@ private fun ExecutionDetails(state: ProcurementUiState) {
DetailRow("核验总额", "¥%.2f".format(cents / 100.0))
}
}
state.orderSubmission?.let { submission ->
DetailRow(
"提交对账",
orderSubmissionStatusLabel(submission.status)
)
submission.platformOrderNo?.let { orderNo ->
DetailRow("拼多多订单号", orderNo)
}
submission.platformOrderedAt?.let { orderedAt ->
DetailRow("平台下单时间", orderedAt)
}
submission.platformOrderStatus?.let { status ->
DetailRow(
"平台订单状态",
if (status == "PENDING_PAYMENT") "待付款" else status
)
}
submission.manualReasonCode?.let { reason ->
DetailRow(
"人工对账原因",
orderSubmissionManualReasonLabel(reason)
)
}
}
DetailRow(
"后台连接",
when (state.backendOnline) {
@@ -505,7 +530,7 @@ private fun ExecutionDetails(state: ProcurementUiState) {
ProcurementPhase.ORDER_SUBMISSION_MANUAL_REVIEW ->
"订单未能唯一对账,保持禁止重复提交"
ProcurementPhase.ORDER_RECONCILED ->
"待付款订单已回传后台,请人工确认付款"
"待付款订单已回传后台,请到拼多多订单列表人工确认付款"
else -> "订单提交保持禁用"
},
color = if (
@@ -577,3 +602,25 @@ private fun phaseLabel(state: ProcurementUiState): String =
ProcurementPhase.ORDER_RECONCILED -> "待付款订单已回传"
ProcurementPhase.AUTHORIZATION_EXPIRED -> "授权到期,已停止"
}
internal fun orderSubmissionStatusLabel(
status: OrderSubmissionStatus
): String =
when (status) {
OrderSubmissionStatus.FENCE_INTENT_SAVED -> "提交意图已安全保存"
OrderSubmissionStatus.CLICK_ASSUMED -> "提交结果待确认"
OrderSubmissionStatus.RECONCILING -> "正在对账"
OrderSubmissionStatus.MANUAL_REVIEW -> "需要人工对账"
OrderSubmissionStatus.RECONCILED -> "待人工确认付款"
}
internal fun orderSubmissionManualReasonLabel(reason: String): String =
when (reason) {
"ORDER_NOT_FOUND" -> "未找到符合条件的新订单"
"ORDER_AMBIGUOUS" -> "找到多个可能订单"
"ORDER_FIELDS_INCOMPLETE" -> "订单字段不完整"
"ORDER_PAGE_UNKNOWN" -> "订单页面无法确认"
"RISK_OR_PAYMENT_BOUNDARY" -> "遇到风控或付款边界"
"EVIDENCE_UNAVAILABLE" -> "无法取得对账证据"
else -> "订单需要人工核对"
}
@@ -0,0 +1,49 @@
package com.roubao.autopilot.ui.screens
import com.roubao.autopilot.procurement.OrderSubmissionStatus
import org.junit.Assert.assertEquals
import org.junit.Test
class OrderSubmissionUiLabelTest {
@Test
fun `submission states use stable buyer-facing labels`() {
assertEquals(
"提交意图已安全保存",
orderSubmissionStatusLabel(
OrderSubmissionStatus.FENCE_INTENT_SAVED
)
)
assertEquals(
"提交结果待确认",
orderSubmissionStatusLabel(OrderSubmissionStatus.CLICK_ASSUMED)
)
assertEquals(
"正在对账",
orderSubmissionStatusLabel(OrderSubmissionStatus.RECONCILING)
)
assertEquals(
"需要人工对账",
orderSubmissionStatusLabel(OrderSubmissionStatus.MANUAL_REVIEW)
)
assertEquals(
"待人工确认付款",
orderSubmissionStatusLabel(OrderSubmissionStatus.RECONCILED)
)
}
@Test
fun `manual review reasons never expose internal codes`() {
assertEquals(
"找到多个可能订单",
orderSubmissionManualReasonLabel("ORDER_AMBIGUOUS")
)
assertEquals(
"遇到风控或付款边界",
orderSubmissionManualReasonLabel("RISK_OR_PAYMENT_BOUNDARY")
)
assertEquals(
"订单需要人工核对",
orderSubmissionManualReasonLabel("UNKNOWN_REASON")
)
}
}