Endpoint GET /api/help/wiki — Proxy catálogo wiki con whitelist product
Endpoint GET /api/help/wiki — Proxy catálogo wiki con whitelist product
Endpoint del backend Django (core/api_help.py) que actúa como proxy al workspace Cloudflare Workers para obtener el catálogo de artículos wiki destinados al Help Widget de usuario. Desde la versión v1.0.58+ (commit c94e74e) aplica un filtrado por whitelist de producto en lugar de la antigua blacklist de categorías.
Referencia
| Campo | Valor |
|---|---|
| Método | GET |
| Ruta | /api/help/wiki |
| Archivo | core/api_help.py |
| Router | router (Django Ninja, prefijo /api/help) |
| Autenticación | Requiere sesión autenticada (headers de workspace) |
Comportamiento
Cliente (Help Widget Alpine)
→ GET /api/help/wiki
→ Django proxy (core/api_help.py)
→ GET {WORKSPACE_URL}/biblioteca/wiki?product=crearack
← JSON: { categories: { [key]: { label, articles[] } } }
← _apply_english() — traduce labels y paths
← JSON procesado al cliente
Parámetros de la request al workspace
| Parámetro | Valor fijo | Descripción |
|---|---|---|
product | crearack | Filtra server-side en D1. Solo pages con product == "crearack" se devuelven. |
Constante de whitelist
# core/api_help.py
_USER_FACING_PRODUCT = "crearack"
Historial de cambios en el filtrado
v1.0.58+ (2026-04-25) — Whitelist por product
Motivación: la antigua blacklist (_PRIVATE_CATEGORIES = {"workspace"}) eliminaba categorías enteras del response Django-side, pero era frágil (cualquier nueva categoría interna quedaba expuesta hasta que se añadiera a la lista).
Cambio: el filtrado se delega al workspace pasando ?product=crearack. El corpus de D1 es la fuente de verdad — sólo las pages etiquetadas explícitamente como product=crearack llegan al usuario final.
Pages excluidas por este cambio:
product = workspace-techproduct = crearack-tech- Pages sin campo
product(quedan fuera hasta re-tagging en I5)
Antes de v1.0.58+
_PRIVATE_CATEGORIES = {"workspace"}
# En _apply_english(): eliminaba la clave "workspace" del dict categories
Procesamiento post-proxy (_apply_english)
Tras recibir el JSON del workspace, la función _apply_english() aplica:
- Traducción de labels de categoría: usando
_CATEGORY_ENdict (ES → EN). - Traducción de títulos de artículo: usando
_load_title_map()(cargado desde JSON local). - Reescritura de paths:
wiki/→wiki-en/para servir la versión en inglés al Help Widget.
Trade-offs
| Aspecto | Descripción |
|---|---|
| Cobertura | Depende de que el corpus D1 tenga product etiquetado. Pages sin product quedan fuera. |
| Re-tagging | Pendiente como parte de la iniciativa I5 del plan post-audit Supercontexto. |
| Latencia | El proxy añade un RTT adicional al workspace. Timeout configurado en TIMEOUT (definido en api_help.py). |
Véase también
- [[feature—core—help-widget-i4]]