"""
Point d'entrée pour l'exécution en SERVICE Windows (toujours accessible sur le
réseau : bind 0.0.0.0). Contrairement à `python app.py` (qui lit FICHE_HOST et
peut rester en 127.0.0.1), ce script force l'écoute sur TOUTES les interfaces.

Il écrit AUSSI son propre journal de démarrage détaillé dans
data\service_boot.log : c'est ce fichier qu'il faut consulter si le service ne
démarre pas (il contient l'erreur exacte, même quand la redirection NSSM reste
vide).
"""
import datetime
import os
import sys
import traceback

HERE = os.path.dirname(os.path.abspath(__file__))
BOOT_LOG = os.path.join(HERE, "data", "service_boot.log")


def _log(msg):
    try:
        os.makedirs(os.path.dirname(BOOT_LOG), exist_ok=True)
        with open(BOOT_LOG, "a", encoding="utf-8") as f:
            f.write(f"[{datetime.datetime.now():%Y-%m-%d %H:%M:%S}] {msg}\n")
    except Exception:
        pass  # si on ne peut même pas écrire ici -> probleme de droits sur data\


def main():
    _log("==== demarrage serveur.py ====")
    _log(f"python      = {sys.executable}")
    _log(f"version     = {sys.version}")
    _log(f"dossier     = {HERE}")
    _log(f"cwd         = {os.getcwd()}")
    try:
        os.chdir(HERE)  # garantit import app + chemins relatifs
        _log("import de l'application...")
        from app import app
        port = int(os.environ.get("FICHE_PORT", "5000"))
        host = "0.0.0.0"
        _log(f"import OK -> demarrage du serveur sur {host}:{port}")
        try:
            from waitress import serve
            _log("serveur : waitress")
            serve(app, host=host, port=port, threads=8)
        except ImportError:
            _log("waitress absent -> serveur Flask integre")
            app.run(debug=False, use_reloader=False, threaded=True, host=host, port=port)
    except Exception:
        _log("ERREUR FATALE au demarrage :\n" + traceback.format_exc())
        raise


if __name__ == "__main__":
    main()
