"""Keep a valid generation, or create both indexes before starting the API.""" import hashlib import json from app.security import validate_security_configuration from tools.rag.common import DB_FILE, ZPWIKI_ROOT from tools.rag.embedding_utils import embed_query from tools.rag.rebuild_index import rebuild_index from tools.runtime.runtime_assets import asset_root, verify from tools.sync.sync_indexes import git_revision, source_files from tools.runtime.tool_health import tools_readiness def main(): validate_security_configuration() verify(asset_root()) embed_query("overenie pripravenosti") tools, version = tools_readiness(DB_FILE, security_configured=True, embedding_ready=True) source_hash = hashlib.sha256( json.dumps(source_files(ZPWIKI_ROOT), sort_keys=True).encode() ).hexdigest() current = ( all(value["ready"] for value in tools.values()) and version and version.get("git_revision") == git_revision(ZPWIKI_ROOT) and version.get("source_sha256") == source_hash ) if not current: result = rebuild_index(pull_git=False) tools, version = tools_readiness(DB_FILE, security_configured=True, embedding_ready=True) if not all(value["ready"] for value in tools.values()): raise RuntimeError("Nové indexy nie sú pripravené; API sa nespustí.") print( json.dumps( {"bootstrap": "rebuilt", "counts": result["counts"], "index_version": version} ) ) else: print(json.dumps({"bootstrap": "existing", "index_version": version})) if __name__ == "__main__": main()