F4 Android: align Act contracts with lock and seal

This commit is contained in:
2026-09-07 21:25:53 -03:00
parent 009f4d10cf
commit d0c55b8b39
@@ -37,6 +37,15 @@ data class MobileActSummary(
val title: String,
val summary: String,
val observations: String? = null,
val urgency: String = "NON_URGENT",
val deadlineDays: Int? = null,
val deadlineDayType: String? = null,
val deadlineBasis: String? = null,
val deadlineBaseAt: String? = null,
val deadlineAt: String? = null,
val lockedAt: String? = null,
val lockedSha256: String? = null,
val sealedAt: String? = null,
val currentVersion: Int = 0,
val closedAt: String? = null,
val closureSha256: String? = null,
@@ -53,6 +62,15 @@ data class MobileActDetail(
val title: String,
val summary: String,
val observations: String? = null,
val urgency: String = "NON_URGENT",
val deadlineDays: Int? = null,
val deadlineDayType: String? = null,
val deadlineBasis: String? = null,
val deadlineBaseAt: String? = null,
val deadlineAt: String? = null,
val lockedAt: String? = null,
val lockedSha256: String? = null,
val sealedAt: String? = null,
val currentVersion: Int = 0,
val closedAt: String? = null,
val closureSha256: String? = null,
@@ -75,6 +93,7 @@ data class MobileActListResponse(
data class CreateMobileActRequest(
val occurredAt: String,
val urgency: String,
val title: String,
val summary: String,
val observations: String? = null,
@@ -113,6 +132,15 @@ data class MobileActClosureHeader(
val code: String,
val status: String,
val visitId: String,
val urgency: String = "NON_URGENT",
val deadlineDays: Int? = null,
val deadlineDayType: String? = null,
val deadlineBasis: String? = null,
val deadlineBaseAt: String? = null,
val deadlineAt: String? = null,
val lockedAt: String? = null,
val lockedSha256: String? = null,
val sealedAt: String? = null,
val currentVersion: Int = 0,
val closedAt: String? = null,
val closureSha256: String? = null,
@@ -169,7 +197,7 @@ data class MobileCompanyOutcomeRequest(
val reason: String,
)
data class MobileCloseActRequest(
data class MobileSealActRequest(
val clientClosedAt: String = Instant.now().toString(),
val uploadMode: String = "ONLINE",
)
@@ -219,14 +247,8 @@ private interface MobileActsApi {
@Body request: MobileResponsibleRequest,
): MobileActClosure
@POST("inspection-acts/{actId}/ready")
suspend fun ready(
@Header("Authorization") authorization: String,
@Path("actId") actId: String,
): MobileActClosure
@POST("inspection-acts/{actId}/reopen")
suspend fun reopen(
@POST("inspection-acts/{actId}/lock")
suspend fun lock(
@Header("Authorization") authorization: String,
@Path("actId") actId: String,
): MobileActClosure
@@ -268,11 +290,11 @@ private interface MobileActsApi {
@Body request: MobileCompanyOutcomeRequest,
): MobileActClosure
@POST("inspection-acts/{actId}/close")
suspend fun closeAct(
@POST("inspection-acts/{actId}/seal")
suspend fun sealAct(
@Header("Authorization") authorization: String,
@Path("actId") actId: String,
@Body request: MobileCloseActRequest,
@Body request: MobileSealActRequest,
): MobileActClosure
@POST("inspection-visits/{visitId}/close")
@@ -305,14 +327,20 @@ class MobileActsRepository(context: Context) {
api.act("Bearer ${session.accessToken}", actId)
}
suspend fun create(visitId: String, assetId: String, visitCode: String): MobileActDetail = authorized { session ->
suspend fun create(
visitId: String,
assetId: String,
visitCode: String,
urgency: String,
): MobileActDetail = authorized { session ->
api.createAct(
"Bearer ${session.accessToken}",
visitId,
CreateMobileActRequest(
occurredAt = Instant.now().toString(),
urgency = urgency,
title = "Acta de inspección $visitCode",
summary = "Acta de inspección en curso. Los Hallazgos y observaciones se incorporan de forma trazable durante la visita.",
summary = "Acta de inspección en curso. Los Hallazgos y observaciones se incorporan de forma trazable durante la inspección.",
assetIds = listOf(assetId),
),
)
@@ -335,12 +363,8 @@ class MobileActsRepository(context: Context) {
api.responsible("Bearer ${session.accessToken}", actId, request)
}
suspend fun prepare(actId: String): MobileActClosure = authorized { session ->
api.ready("Bearer ${session.accessToken}", actId)
}
suspend fun reopen(actId: String): MobileActClosure = authorized { session ->
api.reopen("Bearer ${session.accessToken}", actId)
suspend fun lock(actId: String): MobileActClosure = authorized { session ->
api.lock("Bearer ${session.accessToken}", actId)
}
suspend fun signInspector(
@@ -378,8 +402,8 @@ class MobileActsRepository(context: Context) {
)
}
suspend fun closeAct(actId: String): MobileActClosure = authorized { session ->
api.closeAct("Bearer ${session.accessToken}", actId, MobileCloseActRequest())
suspend fun seal(actId: String): MobileActClosure = authorized { session ->
api.sealAct("Bearer ${session.accessToken}", actId, MobileSealActRequest())
}
suspend fun closeVisit(visitId: String): VisitDetail = authorized { session ->