routes/onboarding.py
Rama main · réplica de lectura del repositorio original.
"""
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