Ctrl K
ComunidadGuías…

routes/onboarding.py

Rama main · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
"""
Onboarding state blueprint.

GET  /api/onboarding/state  → read onboarding state from runtime dir
POST /api/onboarding/state  → write onboarding state to runtime dir

State file lives at RUNTIME_DIR/onboarding-state.json (bind-mounted volume
in JamBot — persists across containers and devices). Falls back to localStorage
on the frontend when these endpoints return 404 or fail (safe for non-JamBot).
"""

import json
import logging
from flask import Blueprint, jsonify, request
from services.paths import RUNTIME_DIR

logger = logging.getLogger(__name__)

onboarding_bp = Blueprint('onboarding', __name__)

STATE_FILE = RUNTIME_DIR / 'onboarding-state.json'


@onboarding_bp.route('/api/onboarding/state', methods=['GET'])
def get_state():
    try:
        if STATE_FILE.exists():
            return jsonify(json.loads(STATE_FILE.read_text()))
        return jsonify(None)
    except Exception as e:
        logger.error('onboarding get_state error: %s', e)
        return jsonify({'error': str(e)}), 500


@onboarding_bp.route('/api/onboarding/state', methods=['POST'])
def save_state():
    try:
        data = request.get_json(silent=True) or {}
        STATE_FILE.write_text(json.dumps(data))
        return jsonify({'ok': True})
    except Exception as e:
        logger.error('onboarding save_state error: %s', e)
        return jsonify({'error': str(e)}), 500