fix compileation eror
This commit is contained in:
29
AGENTS.md
29
AGENTS.md
@@ -98,28 +98,31 @@ Properties / Orgs
|
|||||||
- Org create/get returns emailAliases + allowedTransportModes.
|
- Org create/get returns emailAliases + allowedTransportModes.
|
||||||
|
|
||||||
Booking flow
|
Booking flow
|
||||||
- /bookings/{id}/check-in (creates RoomStay rows)
|
- /properties/{propertyId}/bookings/{bookingId}/check-in (creates RoomStay rows)
|
||||||
- /bookings/{id}/check-out (closes RoomStay)
|
- /properties/{propertyId}/bookings/{bookingId}/check-out (closes RoomStay)
|
||||||
- /bookings/{id}/cancel, /no-show
|
- /properties/{propertyId}/bookings/{bookingId}/cancel
|
||||||
- /bookings/{id}/room-stays (pre-assign RoomStay with date range)
|
- /properties/{propertyId}/bookings/{bookingId}/no-show
|
||||||
- /room-stays/{id}/change-room (idempotent via RoomStayChange)
|
- /properties/{propertyId}/bookings/{bookingId}/room-stays (pre-assign RoomStay with date range)
|
||||||
|
- /properties/{propertyId}/room-stays/{roomStayId}/change-room (idempotent via RoomStayChange)
|
||||||
|
|
||||||
Card issuing
|
Card issuing
|
||||||
- /room-stays/{id}/cards/prepare -> returns cardIndex + sector0 payload
|
- /properties/{propertyId}/room-stays/{roomStayId}/cards/prepare -> returns cardIndex + sector0 payload
|
||||||
- /room-stays/{id}/cards -> store issued card
|
- /properties/{propertyId}/room-stays/{roomStayId}/cards -> store issued card
|
||||||
- /room-stays/{id}/cards (list)
|
- /properties/{propertyId}/room-stays/{roomStayId}/cards (list)
|
||||||
- /room-stays/cards/{id}/revoke (ADMIN only)
|
- /properties/{propertyId}/room-stays/cards/{cardId}/revoke (ADMIN only)
|
||||||
|
|
||||||
Guest APIs
|
Guest APIs
|
||||||
- /properties/{propertyId}/guests/search?phone=... or ?vehicleNumber=...
|
- /properties/{propertyId}/guests/search?phone=... or ?vehicleNumber=...
|
||||||
- /properties/{propertyId}/guests/{guestId}/vehicles (add vehicle)
|
- /properties/{propertyId}/guests/{guestId}/vehicles (add vehicle)
|
||||||
|
|
||||||
Guest documents
|
Guest documents
|
||||||
- /properties/{propertyId}/guests/{guestId}/documents (upload/list/file)
|
- /properties/{propertyId}/guests/{guestId}/documents (upload/list)
|
||||||
|
- /properties/{propertyId}/guests/{guestId}/documents/{documentId}/file
|
||||||
- AI extraction with strict system prompt.
|
- AI extraction with strict system prompt.
|
||||||
|
|
||||||
Room images
|
Room images
|
||||||
- /properties/{propertyId}/rooms/{roomId}/images (upload/list/file)
|
- /properties/{propertyId}/rooms/{roomId}/images (upload/list)
|
||||||
|
- /properties/{propertyId}/rooms/{roomId}/images/{imageId}/file
|
||||||
- Thumbnails generated (320px).
|
- Thumbnails generated (320px).
|
||||||
|
|
||||||
Transport modes
|
Transport modes
|
||||||
@@ -130,8 +133,8 @@ Inbound email ingestion
|
|||||||
- Saves audit PDF + raw .eml under /home/androidlover5842/docs/emails.
|
- Saves audit PDF + raw .eml under /home/androidlover5842/docs/emails.
|
||||||
- Property match: To/CC email first; fallback to name/code/address/otaAliases.
|
- Property match: To/CC email first; fallback to name/code/address/otaAliases.
|
||||||
- AI extracts booking fields; creates/cancels Booking.
|
- AI extracts booking fields; creates/cancels Booking.
|
||||||
- Booking emailAuditPdfUrl -> /properties/{propertyId}/inbound-emails/{emailId}/file
|
- /properties/{propertyId}/inbound-emails/{emailId}/file (audit PDF)
|
||||||
- Manual upload: POST /properties/{propertyId}/inbound-emails/manual (PDF).
|
- POST /properties/{propertyId}/inbound-emails/manual (PDF upload)
|
||||||
|
|
||||||
Realtime
|
Realtime
|
||||||
- SSE room board events with heartbeat, on room create/update, check-in/out, and room change.
|
- SSE room board events with heartbeat, on room create/update, check-in/out, and room change.
|
||||||
|
|||||||
@@ -25,13 +25,14 @@ dependencies {
|
|||||||
implementation("org.springframework.boot:spring-boot-starter-flyway")
|
implementation("org.springframework.boot:spring-boot-starter-flyway")
|
||||||
implementation("org.springframework.boot:spring-boot-starter-validation")
|
implementation("org.springframework.boot:spring-boot-starter-validation")
|
||||||
implementation("org.springframework.boot:spring-boot-starter-webmvc")
|
implementation("org.springframework.boot:spring-boot-starter-webmvc")
|
||||||
|
implementation("org.springframework.boot:spring-boot-starter-web")
|
||||||
implementation("org.springframework.boot:spring-boot-starter-websocket")
|
implementation("org.springframework.boot:spring-boot-starter-websocket")
|
||||||
implementation("org.flywaydb:flyway-database-postgresql")
|
implementation("org.flywaydb:flyway-database-postgresql")
|
||||||
implementation("org.jetbrains.kotlin:kotlin-reflect")
|
implementation("org.jetbrains.kotlin:kotlin-reflect")
|
||||||
implementation("tools.jackson.module:jackson-module-kotlin")
|
implementation("com.fasterxml.jackson.module:jackson-module-kotlin")
|
||||||
implementation("org.springframework.boot:spring-boot-starter-security")
|
implementation("org.springframework.boot:spring-boot-starter-security")
|
||||||
implementation("com.google.firebase:firebase-admin:9.7.0")
|
implementation("com.google.firebase:firebase-admin:9.7.0")
|
||||||
implementation("com.sun.mail:jakarta.mail:2.0.1")
|
implementation("com.sun.mail:jakarta.mail:2.0.2")
|
||||||
implementation("org.apache.pdfbox:pdfbox:2.0.30")
|
implementation("org.apache.pdfbox:pdfbox:2.0.30")
|
||||||
runtimeOnly("org.postgresql:postgresql")
|
runtimeOnly("org.postgresql:postgresql")
|
||||||
testImplementation("org.springframework.boot:spring-boot-starter-data-jpa-test")
|
testImplementation("org.springframework.boot:spring-boot-starter-data-jpa-test")
|
||||||
|
|||||||
@@ -1,18 +1,18 @@
|
|||||||
package com.android.trisolarisserver.config
|
package com.android.trisolarisserver.config
|
||||||
|
|
||||||
import org.springframework.boot.web.client.RestTemplateBuilder
|
|
||||||
import org.springframework.context.annotation.Bean
|
import org.springframework.context.annotation.Bean
|
||||||
import org.springframework.context.annotation.Configuration
|
import org.springframework.context.annotation.Configuration
|
||||||
|
import org.springframework.http.client.SimpleClientHttpRequestFactory
|
||||||
import org.springframework.web.client.RestTemplate
|
import org.springframework.web.client.RestTemplate
|
||||||
import java.time.Duration
|
|
||||||
|
|
||||||
@Configuration
|
@Configuration
|
||||||
class HttpConfig {
|
class HttpConfig {
|
||||||
@Bean
|
@Bean
|
||||||
fun restTemplate(builder: RestTemplateBuilder): RestTemplate {
|
fun restTemplate(): RestTemplate {
|
||||||
return builder
|
val factory = SimpleClientHttpRequestFactory().apply {
|
||||||
.setConnectTimeout(Duration.ofSeconds(10))
|
setConnectTimeout(10_000)
|
||||||
.setReadTimeout(Duration.ofMinutes(5))
|
setReadTimeout(5 * 60 * 1_000)
|
||||||
.build()
|
}
|
||||||
|
return RestTemplate(factory)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ import com.android.trisolarisserver.controller.dto.GuestResponse
|
|||||||
import com.android.trisolarisserver.controller.dto.GuestVehicleRequest
|
import com.android.trisolarisserver.controller.dto.GuestVehicleRequest
|
||||||
import com.android.trisolarisserver.models.booking.Guest
|
import com.android.trisolarisserver.models.booking.Guest
|
||||||
import com.android.trisolarisserver.models.booking.GuestVehicle
|
import com.android.trisolarisserver.models.booking.GuestVehicle
|
||||||
import com.android.trisolarisserver.repo.GuestRepo
|
import com.android.trisolarisserver.db.repo.GuestRepo
|
||||||
import com.android.trisolarisserver.repo.GuestVehicleRepo
|
import com.android.trisolarisserver.repo.GuestVehicleRepo
|
||||||
import com.android.trisolarisserver.repo.PropertyRepo
|
import com.android.trisolarisserver.repo.PropertyRepo
|
||||||
import com.android.trisolarisserver.security.MyPrincipal
|
import com.android.trisolarisserver.security.MyPrincipal
|
||||||
@@ -85,7 +85,7 @@ class Guests(
|
|||||||
vehicleNumber = request.vehicleNumber.trim()
|
vehicleNumber = request.vehicleNumber.trim()
|
||||||
)
|
)
|
||||||
guestVehicleRepo.save(vehicle)
|
guestVehicleRepo.save(vehicle)
|
||||||
return listOf(guest).toResponse(guestVehicleRepo).first()
|
return setOf(guest).toResponse(guestVehicleRepo).first()
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun requirePrincipal(principal: MyPrincipal?) {
|
private fun requirePrincipal(principal: MyPrincipal?) {
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ class Organization {
|
|||||||
joinColumns = [JoinColumn(name = "org_id")]
|
joinColumns = [JoinColumn(name = "org_id")]
|
||||||
)
|
)
|
||||||
@Column(name = "email", nullable = false)
|
@Column(name = "email", nullable = false)
|
||||||
var emailAliases: MutableSet<String> = mutableSetOf(),
|
var emailAliases: MutableSet<String> = mutableSetOf()
|
||||||
|
|
||||||
@ElementCollection(fetch = FetchType.EAGER)
|
@ElementCollection(fetch = FetchType.EAGER)
|
||||||
@CollectionTable(
|
@CollectionTable(
|
||||||
@@ -30,7 +30,7 @@ class Organization {
|
|||||||
@Column(name = "mode", nullable = false)
|
@Column(name = "mode", nullable = false)
|
||||||
@Enumerated(EnumType.STRING)
|
@Enumerated(EnumType.STRING)
|
||||||
var allowedTransportModes: MutableSet<com.android.trisolarisserver.models.booking.TransportMode> =
|
var allowedTransportModes: MutableSet<com.android.trisolarisserver.models.booking.TransportMode> =
|
||||||
mutableSetOf(),
|
mutableSetOf()
|
||||||
|
|
||||||
@Column(name = "created_at", nullable = false, columnDefinition = "timestamptz")
|
@Column(name = "created_at", nullable = false, columnDefinition = "timestamptz")
|
||||||
val createdAt: OffsetDateTime = OffsetDateTime.now()
|
val createdAt: OffsetDateTime = OffsetDateTime.now()
|
||||||
|
|||||||
Reference in New Issue
Block a user