# ============================================================================
# Profil "local" — mode local-first (application de bureau, sans Docker)
# ============================================================================
# Active via : --spring.profiles.active=local  (ou SPRING_PROFILES_ACTIVE=local)
#
# Objectif : faire tourner le Core sur le poste de l'utilisateur SANS aucune
# infrastructure externe (ni Postgres, ni MinIO, ni Docker). Toutes les donnees
# vivent sous loremind.home (defaut : ~/.loremind).
#
# Surcharge UNIQUEMENT ce qui differe du profil par defaut (application.properties) :
# le reste (timeouts, multipart, licensing...) est herite tel quel.

# --- Config utilisateur editable (port + identifiants admin) ----------------
# Charge ~/.loremind/loremind.properties s'il existe (cree au 1er lancement par
# DesktopUserConfig). "optional:" = pas d'erreur s'il manque. Les valeurs y
# definies (server.port, admin.username, admin.password) SURCHARGENT les defauts
# ci-dessous (un import a une priorite superieure au fichier qui l'importe).
# NB : le port effectif est de toute facon fixe par DesktopUserConfig au demarrage
# (propriete systeme server.port, avec repli si le port est occupe).
spring.config.import=optional:file:${user.home}/.loremind/loremind.properties

# --- Serveur : ecoute UNIQUEMENT sur la boucle locale -----------------------
# App de bureau mono-utilisateur : jamais exposee au reseau (securite). Et ca
# rend coherent le test "port libre" de DesktopUserConfig (qui teste 127.0.0.1)
# avec l'adresse de bind reelle de Tomcat -> le repli sur port libre fonctionne
# meme si une autre appli occupe le port sur une autre interface.
server.address=127.0.0.1

# --- Base de donnees : H2 en mode fichier, compatibilite PostgreSQL ---------
# MODE=PostgreSQL : H2 interprete le SQL PostgreSQL -> les MEMES migrations
# Flyway (ecrites en SQL Postgres) tournent ici comme sur la prod Postgres.
# Aligne aussi la casse des identifiants (minuscules, comme PG).
# DB_CLOSE_ON_EXIT=FALSE : Spring/Hikari pilote la fermeture (pas le shutdown
# hook H2). AUTO_SERVER volontairement absent (interdit avec DB_CLOSE_ON_EXIT,
# et inutile pour un process unique).
# NON_KEYWORDS=VALUE : PostgreSQL accepte `value` comme nom de colonne non-quote
# (colonne de playthrough_flag), mais H2 le reserve par defaut -> on le relache
# pour que le baseline SQL Postgres (non-quote) passe aussi sur H2. Ajouter
# d'autres mots ici si une migration future utilise un identifiant reserve H2.
spring.datasource.url=jdbc:h2:file:${loremind.home}/db/loremind;MODE=PostgreSQL;DB_CLOSE_ON_EXIT=FALSE;NON_KEYWORDS=VALUE
spring.datasource.username=sa
spring.datasource.password=
spring.datasource.driver-class-name=org.h2.Driver
spring.jpa.database-platform=org.hibernate.dialect.H2Dialect
# Schema gere par Flyway (cf. application.properties) ; Hibernate valide seulement.
spring.jpa.hibernate.ddl-auto=validate
spring.jpa.show-sql=false

# --- Stockage des images : systeme de fichiers -----------------------------
storage.backend=filesystem
storage.filesystem.path=${loremind.home}/images

# --- Brain : service IA Python lance en sidecar sur le poste ---------------
brain.base-url=http://localhost:8000
# Secret partage Core <-> Brain. En local il n'a pas de role securitaire fort
# (tout est sur localhost, mono-utilisateur) mais le Brain est fail-closed :
# il DOIT etre defini des deux cotes. Le lanceur de sidecar (BrainSidecar)
# propage cette meme valeur au process Brain via la variable BRAIN_INTERNAL_SECRET.
brain.internal-secret=${BRAIN_INTERNAL_SECRET:loremind-local-secret}

# --- Brain en sidecar (lance par le Core) ----------------------------------
# Le Core demarre lui-meme le process Brain (pas de Docker en local).
brain.sidecar.enabled=${BRAIN_SIDECAR_ENABLED:true}
# Le Brain ecrit son dossier data/ (index vectoriel, settings) sous ce dossier.
brain.sidecar.working-dir=${loremind.home}/brain
# Commande de lancement. VIDE par defaut : le dev qui lance le Brain a la main
# n'est pas perturbe. Le packaging (jpackage) la renseigne vers l'exe PyInstaller.
#   - Empaquete : chemin de l'exe, ex. C:/Program Files/LoreMind/brain/loremind-brain.exe
#   - Dev       : python,-m,uvicorn,app.main:app,--host,127.0.0.1,--port,8000
#                 (avec brain.sidecar.working-dir pointant sur le dossier brain/)
brain.sidecar.command=${BRAIN_SIDECAR_COMMAND:}

# --- Admin (localhost uniquement) ------------------------------------------
# Application mono-utilisateur sur le poste : l'utilisateur EST l'admin.
# Defauts admin/admin, SURCHARGEABLES par l'utilisateur dans
# ~/.loremind/loremind.properties (cf. spring.config.import ci-dessus).
admin.username=${ADMIN_USERNAME:admin}
admin.password=${ADMIN_PASSWORD:admin}

# --- Front servi par le Core (meme origine) --------------------------------
# Le front Angular est servi en statique par le Core (cf. LocalWebConfig),
# donc tout est sur http://localhost:8080 : CORS sans objet, mais on autorise
# l'origine locale par securite si un dev lance Angular separement.
spring.web.cors.allowed-origins=http://localhost:8080,http://localhost:4200

# Mode demo desactive (instance personnelle complete).
app.demo-mode=false

# --- Licensing / Patreon : desactive en mode bureau ------------------------
# Le gating par IMAGE Docker (canal beta tire d'un registry prive) n'a aucun
# sens hors Docker. On coupe toute la machinerie : daemon de refresh no-op,
# /api/license/* renvoie enabled=false, et l'UI masque la section Patreon.
# La distribution beta desktop se fait par installeur beta via Patreon, pas
# par une connexion in-app.
licensing.enabled=false

# --- Verification des mises a jour (bureau) --------------------------------
# Interroge l'API GitHub Releases (derniere release STABLE) au demarrage ; si
# une version plus recente existe, l'icone systray le signale (bulle + item
# « Telecharger »). Pas de mise a jour auto : l'utilisateur telecharge et lance
# le nouvel installeur. Mettre a false pour desactiver toute requete sortante.
desktop.update.enabled=${DESKTOP_UPDATE_CHECK:true}
desktop.update.releases-api-url=https://api.github.com/repos/IGMLcreation/LoreMind/releases/latest
