35 lines
1.5 KiB
Python
35 lines
1.5 KiB
Python
"""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()
|