@oondemand/oon-core-back 0.4.23 → 0.4.24

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -15,6 +15,13 @@ O Core suporta `ecosystem.role` em `central.config.js`: `root` para a Central de
15
15
 
16
16
  Compatibilidade temporária: `CENTRAL_ATIVACAO_BACKEND_URL` e `MEUS_APPS_BACKEND_URL` continuam aceitas como aliases da URL da API. Nunca aponte a URL da API para o próprio Core.
17
17
 
18
+ ## Saúde operacional
19
+
20
+ - `GET /health/ready`: retorna HTTP 200 somente quando o MongoDB está conectado; retorna 503 enquanto o runtime não estiver pronto.
21
+ - `GET /health/version`: expõe as versões do OonCore e da Central, commit, release, build e ambiente da publicação.
22
+
23
+ Na imagem de entrega, essas rotas são publicadas pelo Nginx sob `/api/health/ready` e `/api/health/version`.
24
+
18
25
  ## Fluxo
19
26
 
20
27
  `GET /ativacao/status` informa estado sem segredos. `POST /ativacao/validar-codigo` valida sem consumir. `POST /ativacao/concluir` revalida, chama `/ativar`, criptografa imediatamente o token da instância, executa hooks declarativos, chama `/concluir` e marca a instância como `ativa`. `POST /ativacao/tentar-novamente` retoma uma ativação já registrada sem exigir novo código.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@oondemand/oon-core-back",
3
- "version": "0.4.23",
3
+ "version": "0.4.24",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "git+https://github.com/oondemand/oon-platform.git",
@@ -1,21 +1,65 @@
1
+ "use strict";
2
+
1
3
  const express = require("express");
2
4
  const mongoose = require("mongoose");
3
5
  const ctx = require("../core/context");
6
+ const { runtimeSummary } = require("./core.routes");
4
7
 
5
8
  const router = express.Router();
6
9
 
7
- router.get("/", (_req, res) => {
8
- const states = {
9
- 0: "Desconectado",
10
- 1: "Conectado",
11
- 2: "Conectando",
12
- 3: "Desconectando",
10
+ const DATABASE_STATES = Object.freeze({
11
+ 0: { code: "disconnected", label: "Desconectado" },
12
+ 1: { code: "connected", label: "Conectado" },
13
+ 2: { code: "connecting", label: "Conectando" },
14
+ 3: { code: "disconnecting", label: "Desconectando" },
15
+ });
16
+
17
+ function databaseState(readyState = mongoose.connection.readyState) {
18
+ return DATABASE_STATES[readyState] || {
19
+ code: "unknown",
20
+ label: "Status desconhecido",
21
+ };
22
+ }
23
+
24
+ function readinessSummary(readyState = mongoose.connection.readyState) {
25
+ const database = databaseState(readyState);
26
+ const ready = readyState === 1;
27
+ return {
28
+ status: ready ? "ready" : "not_ready",
29
+ service: ctx.config.serviceName,
30
+ database: {
31
+ ready,
32
+ state: database.code,
33
+ },
34
+ };
35
+ }
36
+
37
+ function versionSummary() {
38
+ return {
39
+ status: "ok",
40
+ service: ctx.config.serviceName,
41
+ ...runtimeSummary(),
13
42
  };
14
- const dbState = mongoose.connection.readyState;
43
+ }
44
+
45
+ router.get("/", (_req, res) => {
46
+ const database = databaseState();
15
47
  res.status(200).json({
16
48
  message: `${ctx.config.serviceName} rodando - vs ${ctx.config.serviceVersion}`,
17
- database: states[dbState] || "Status desconhecido",
49
+ database: database.label,
18
50
  });
19
51
  });
20
52
 
53
+ router.get("/health/ready", (_req, res) => {
54
+ const summary = readinessSummary();
55
+ res.status(summary.database.ready ? 200 : 503).json(summary);
56
+ });
57
+
58
+ router.get("/health/version", (_req, res) => {
59
+ res.status(200).json(versionSummary());
60
+ });
61
+
21
62
  module.exports = router;
63
+ module.exports.databaseState = databaseState;
64
+ module.exports.readinessSummary = readinessSummary;
65
+ module.exports.versionSummary = versionSummary;