server: port: ${SERVER_PORT:18080} shutdown: graceful servlet: session: cookie: name: KAIDI_SESSION http-only: true same-site: lax secure: ${SESSION_COOKIE_SECURE:false} spring: application: name: kaidi-finance profiles: default: local datasource: url: ${DB_URL:jdbc:mysql://127.0.0.1:3307/kaidi_finance?useUnicode=true&characterEncoding=utf8&connectionTimeZone=UTC&serverTimezone=UTC} username: ${DB_USERNAME:kaidi} password: ${DB_PASSWORD:kaidi_local_2026} hikari: maximum-pool-size: 20 minimum-idle: 2 connection-timeout: 10000 # R1 fixes the transaction view used by amount/commitment checks. transaction-isolation: TRANSACTION_READ_COMMITTED connection-init-sql: SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED flyway: enabled: true locations: classpath:db/migration validate-migration-naming: true session: timeout: 30m jdbc: initialize-schema: never cleanup-cron: "0 */5 * * * *" servlet: multipart: max-file-size: 100MB max-request-size: 500MB jackson: default-property-inclusion: non_null time-zone: UTC mybatis: configuration: map-underscore-to-camel-case: true default-fetch-size: 100 default-statement-timeout: 10 management: endpoints: web: exposure: include: health,info,metrics endpoint: health: probes: enabled: true springdoc: api-docs: path: /api-docs swagger-ui: path: /swagger-ui.html finance: setup: enabled: ${FINANCE_SETUP_ENABLED:false} token-sha256: ${FINANCE_SETUP_TOKEN_SHA256:} env-file: ${FINANCE_SETUP_ENV_FILE:/var/lib/kaidi/setup/application.env} marker-file: ${FINANCE_SETUP_MARKER_FILE:/var/lib/kaidi/setup/locked} restart-after-complete: ${FINANCE_SETUP_RESTART_AFTER_COMPLETE:true} session: absolute-timeout: ${FINANCE_SESSION_ABSOLUTE_TIMEOUT:8h} crypto: field-key: ${FIELD_ENCRYPTION_KEY} reject-default: ${FIELD_ENCRYPTION_KEY_REJECT_DEFAULT:false} storage: root: ${FILE_STORAGE_ROOT:../runtime/files} temp: ${FILE_STORAGE_TEMP:../runtime/tmp} max-bytes: 104857600 scanner: enabled: ${FILE_SCANNER_ENABLED:false} host: ${FILE_SCANNER_HOST:127.0.0.1} port: ${FILE_SCANNER_PORT:3310} connect-timeout-millis: ${FILE_SCANNER_CONNECT_TIMEOUT_MS:2000} read-timeout-millis: ${FILE_SCANNER_READ_TIMEOUT_MS:30000} chunk-bytes: 65536 bootstrap: enabled: false demo-data: true update: enabled: ${FINANCE_UPDATE_ENABLED:false} current-version: ${APP_VERSION:1.0.0-SNAPSHOT} current-version-file: ${UPDATE_CURRENT_VERSION_FILE:VERSION} release-base-url: ${UPDATE_RELEASE_BASE_URL:} release-api-url: ${UPDATE_RELEASE_API_URL:} release-token: ${UPDATE_RELEASE_TOKEN:} request-file: ${UPDATE_REQUEST_FILE:runtime/update/inbox/request.json} status-file: ${UPDATE_STATUS_FILE:runtime/update/status.json} connect-timeout: ${UPDATE_CONNECT_TIMEOUT:3s} read-timeout: ${UPDATE_READ_TIMEOUT:8s} allow-insecure-url: ${UPDATE_ALLOW_INSECURE_URL:false}