feat(t219): show pending-payment reconciliation
This commit is contained in:
+48
-1
@@ -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 -> "订单需要人工核对"
|
||||
}
|
||||
|
||||
+49
@@ -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")
|
||||
)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user