File size: 2,048 Bytes
e0d84e6
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
from __future__ import annotations

import json
import os
from http.server import BaseHTTPRequestHandler, ThreadingHTTPServer


HTML = b"""<!doctype html>
<html lang="en">
  <head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><title>BLUM startup</title></head>
  <body style="margin:0;background:#080b0e;color:#e8eef2;font-family:system-ui,sans-serif;display:grid;min-height:100vh;place-items:center">
    <main style="max-width:620px;padding:32px"><p style="color:#72d6a3;font-weight:700">BLUM | TRADER BRAIN</p><h1>BLUM is restoring its learning memory</h1><p style="color:#9aa7b2;line-height:1.6">The service is healthy but not ready. The API starts automatically after persisted market history is restored. No learning data is being discarded.</p></main>
  </body>
</html>
"""


class RestoreStatusHandler(BaseHTTPRequestHandler):
    def do_GET(self) -> None:  # noqa: N802 - BaseHTTPRequestHandler contract
        if self.path.split("?", 1)[0] in {"/health", "/startup/status"}:
            payload = json.dumps(
                {
                    "status": "restoring",
                    "healthy": True,
                    "api_ready": False,
                    "ui_ready": True,
                    "current_stage": "database_restore",
                }
            ).encode("utf-8")
            self.send_response(200)
            self.send_header("Content-Type", "application/json")
            self.send_header("Content-Length", str(len(payload)))
            self.end_headers()
            self.wfile.write(payload)
            return
        self.send_response(200)
        self.send_header("Content-Type", "text/html; charset=utf-8")
        self.send_header("Content-Length", str(len(HTML)))
        self.end_headers()
        self.wfile.write(HTML)

    def log_message(self, format: str, *args: object) -> None:
        return


if __name__ == "__main__":
    port = int(os.getenv("PORT", "7860"))
    ThreadingHTTPServer(("0.0.0.0", port), RestoreStatusHandler).serve_forever()