refactor(harness): renaming prodotto tht (Onda -1)
Thoth (tht) è il prodotto, PSD è il cliente. Nessun riferimento al contesto
clinico nel codice.
Rinomine:
- comando+package nsp→tht (dir nsp/→tht/, 46 import, pyproject entry point)
- gate nsp-gate.js→tht-gate.js (+ rewrite token, relayIfNspFails→relayIfThtFails)
- workspace chirone.{example,test}.yaml→tht.{example,test}.yaml (generici)
- env THOTH_→THT_ (19 var) + NSP_ stragglers (NSP_HARNESS_ROOT, NSP_SESSION)
- commenti/docstring chirone/psdwp3/policlinico neutralizzati ('the reference
implementation', 'the DWH')
Aggiunto [tool.setuptools.packages.find] include=['tht*'] (necessario: l'auto-
discovery rompeva con tht/ + workspaces/ come top-level multipli).
.env operatore aggiornato in-place (prefissi THT_, valori preservati, gitignored).
Verifica: pytest 109 passed, npm test 14 pass, tht phase meta --json OK, zero
residui nsp/THOTH_/NSP_/chirone nel package.
This commit is contained in:
@@ -1,59 +1,59 @@
|
||||
from pathlib import Path
|
||||
|
||||
from nsp.workspace import load_workspace, WorkspaceError
|
||||
from tht.workspace import load_workspace, WorkspaceError
|
||||
|
||||
|
||||
def test_load_workspace_expands_env_vars(monkeypatch, tmp_path):
|
||||
# Isolate profile: load_dotenv (conftest D3) injects THOTH_PROFILE from the real
|
||||
# Isolate profile: load_dotenv (conftest D3) injects THT_PROFILE from the real
|
||||
# harness/.env into os.environ; this test asserts the *default* (server), so it
|
||||
# must del THOTH_PROFILE rather than inherit whatever the operator set.
|
||||
monkeypatch.delenv("THOTH_PROFILE", raising=False)
|
||||
monkeypatch.setenv("THOTH_VEC_API_KEY", "secret-reader")
|
||||
monkeypatch.setenv("THOTH_VEC_WRITE_API_KEY", "secret-writer")
|
||||
monkeypatch.setenv("THOTH_VEC_REST_URL", "https://example/vector/v1/")
|
||||
monkeypatch.setenv("THOTH_DWH_REST_URL", "https://example/dwh/")
|
||||
monkeypatch.setenv("THOTH_DWH_API_KEY", "dwh-key")
|
||||
monkeypatch.setenv("THOTH_DB_HOST", "h")
|
||||
monkeypatch.setenv("THOTH_DB_NAME", "db")
|
||||
monkeypatch.setenv("THOTH_DB_USER", "u")
|
||||
monkeypatch.setenv("THOTH_DB_PASSWORD", "p")
|
||||
monkeypatch.setenv("THOTH_VEC_HOST", "vh")
|
||||
monkeypatch.setenv("THOTH_VEC_USER", "vu")
|
||||
monkeypatch.setenv("THOTH_VEC_PASSWORD", "vp")
|
||||
monkeypatch.setenv("THOTH_OLLAMA_URL", "http://ollama")
|
||||
monkeypatch.setenv("THOTH_DOCS_ROOT", str(tmp_path / "docs"))
|
||||
# must del THT_PROFILE rather than inherit whatever the operator set.
|
||||
monkeypatch.delenv("THT_PROFILE", raising=False)
|
||||
monkeypatch.setenv("THT_VEC_API_KEY", "secret-reader")
|
||||
monkeypatch.setenv("THT_VEC_WRITE_API_KEY", "secret-writer")
|
||||
monkeypatch.setenv("THT_VEC_REST_URL", "https://example/vector/v1/")
|
||||
monkeypatch.setenv("THT_DWH_REST_URL", "https://example/dwh/")
|
||||
monkeypatch.setenv("THT_DWH_API_KEY", "dwh-key")
|
||||
monkeypatch.setenv("THT_DB_HOST", "h")
|
||||
monkeypatch.setenv("THT_DB_NAME", "db")
|
||||
monkeypatch.setenv("THT_DB_USER", "u")
|
||||
monkeypatch.setenv("THT_DB_PASSWORD", "p")
|
||||
monkeypatch.setenv("THT_VEC_HOST", "vh")
|
||||
monkeypatch.setenv("THT_VEC_USER", "vu")
|
||||
monkeypatch.setenv("THT_VEC_PASSWORD", "vp")
|
||||
monkeypatch.setenv("THT_OLLAMA_URL", "http://ollama")
|
||||
monkeypatch.setenv("THT_DOCS_ROOT", str(tmp_path / "docs"))
|
||||
yaml = tmp_path / "w.yaml"
|
||||
yaml.write_text(
|
||||
"database:\n"
|
||||
" host: ${THOTH_DB_HOST}\n"
|
||||
" host: ${THT_DB_HOST}\n"
|
||||
" port: 5432\n"
|
||||
" database: ${THOTH_DB_NAME}\n"
|
||||
" database: ${THT_DB_NAME}\n"
|
||||
" schema: datawarehouse\n"
|
||||
" user: ${THOTH_DB_USER}\n"
|
||||
" password: ${THOTH_DB_PASSWORD}\n"
|
||||
" user: ${THT_DB_USER}\n"
|
||||
" password: ${THT_DB_PASSWORD}\n"
|
||||
" transport: rest\n"
|
||||
"rest:\n"
|
||||
" base_url: ${THOTH_DWH_REST_URL}\n"
|
||||
" api_key: ${THOTH_DWH_API_KEY}\n"
|
||||
" base_url: ${THT_DWH_REST_URL}\n"
|
||||
" api_key: ${THT_DWH_API_KEY}\n"
|
||||
"vector_db:\n"
|
||||
" host: ${THOTH_VEC_HOST}\n"
|
||||
" host: ${THT_VEC_HOST}\n"
|
||||
" port: 5438\n"
|
||||
" database: postgres\n"
|
||||
" schema: vectors\n"
|
||||
" user: ${THOTH_VEC_USER}\n"
|
||||
" password: ${THOTH_VEC_PASSWORD}\n"
|
||||
" user: ${THT_VEC_USER}\n"
|
||||
" password: ${THT_VEC_PASSWORD}\n"
|
||||
"vector_rest:\n"
|
||||
" base_url: ${THOTH_VEC_REST_URL}\n"
|
||||
" api_key: ${THOTH_VEC_API_KEY}\n"
|
||||
" base_url: ${THT_VEC_REST_URL}\n"
|
||||
" api_key: ${THT_VEC_API_KEY}\n"
|
||||
"vector_write_rest:\n"
|
||||
" base_url: ${THOTH_VEC_REST_URL}\n"
|
||||
" api_key: ${THOTH_VEC_WRITE_API_KEY}\n"
|
||||
" base_url: ${THT_VEC_REST_URL}\n"
|
||||
" api_key: ${THT_VEC_WRITE_API_KEY}\n"
|
||||
"embeddings:\n"
|
||||
" base_url: ${THOTH_OLLAMA_URL}\n"
|
||||
" base_url: ${THT_OLLAMA_URL}\n"
|
||||
" model: nomic-embed-text-v2-moe\n"
|
||||
" dim: 768\n"
|
||||
"evidence:\n"
|
||||
" source_root: ${THOTH_DOCS_ROOT}\n"
|
||||
" source_root: ${THT_DOCS_ROOT}\n"
|
||||
)
|
||||
ws = load_workspace(yaml)
|
||||
# Dual vector key (top-level, per Config reale): reader and writer separate
|
||||
@@ -66,7 +66,7 @@ def test_load_workspace_expands_env_vars(monkeypatch, tmp_path):
|
||||
|
||||
|
||||
def test_load_workspace_missing_env_raises(monkeypatch, tmp_path):
|
||||
monkeypatch.delenv("THOTH_VEC_API_KEY", raising=False)
|
||||
monkeypatch.delenv("THT_VEC_API_KEY", raising=False)
|
||||
yaml = tmp_path / "w.yaml"
|
||||
yaml.write_text(
|
||||
"database:\n"
|
||||
@@ -74,10 +74,10 @@ def test_load_workspace_missing_env_raises(monkeypatch, tmp_path):
|
||||
" user: u\n password: p\n transport: direct\n"
|
||||
"vector_rest:\n"
|
||||
" base_url: 'https://v/'\n"
|
||||
" api_key: '${THOTH_VEC_API_KEY}'\n"
|
||||
" api_key: '${THT_VEC_API_KEY}'\n"
|
||||
)
|
||||
try:
|
||||
load_workspace(yaml)
|
||||
assert False, "should have raised"
|
||||
except WorkspaceError as e:
|
||||
assert "THOTH_VEC_API_KEY" in str(e)
|
||||
assert "THT_VEC_API_KEY" in str(e)
|
||||
|
||||
Reference in New Issue
Block a user