"""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 DATA_DIR, DB_FILE, ZPWIKI_ROOT from tools.rag.embedding_utils import embed_query from tools.rag.rebuild_index import rebuild_index from tools.runtime_assets import asset_root, verify from tools.sync_indexes import git_revision, source_files from tools.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()