Skip to content

Extracción de requisitos del sistema

Subrepo que se usó al inicio del proyecto para destilar los requisitos de LinkAnvil — desde una descripción libre del problema hasta un backlog técnico ejecutable — aplicando un pipeline de 7 fases asistido por IA.

¿Qué hay aquí?

5 documentos maestros + 54 features de backlog repartidos en 10 épicas (E-00 … E-09). Esto no es código del producto; es el diseño que justificó cada decisión técnica que después se implementó en src/.

Si vienes a entender el "cómo" del sistema, ve a la sección Proyecto del sidebar. Si vienes a entender el "por qué", quédate aquí.

El flujo de 7 fases

El pipeline ejecuta una transición controlada de ambigüedad → diseño ejecutable, dejando trazabilidad en cada paso. Cada fase produce un artefacto concreto que alimenta a la siguiente.

FaseEntradaSalidaAsistencia IA
1. Contexto brutoIdea libre del stakeholder0_descripcion_proyecto.md — problema, restricciones, glosario inicialEntrevista guiada con Claude para no dejar huecos
2. Destilación de épicasContexto bruto1_epics_and_features.md — 10 épicas, 54 features clasificados MoSCoW (MUST · SHOULD · COULD)Agente planner extrae y clasifica
3. Análisis de riesgosÉpicas + restricciones2_architecture_risks.md — NFRs, ADRs, tabla STRIDEAgentes architect + security-reviewer
4. Backlogs detalladosCada feature → ficha individualbacklog/F-XX.Y_*.md — acceptance criteria, dependencias, notas de implementaciónplanner por feature, revisión cruzada
5. Diagramas C4Épicas + backlog3_c4_diagrams.md — 21 contenedores en C4 (Context → Container → Component)architect produce mermaid
6. Documentación VitePressTodo lo anteriordocs/src/*.md (lo que estás leyendo)doc-updater convierte backlog en docs para humanos
7. GitHub Issues / ProjectsBacklog cerradoUna issue por feature, agrupadas por épica en un Project boardgithub-orchestrator

Cada paso queda registrado en AUDIT_LOG.md con timestamp, agente responsable y prompt usado.

Por qué se mantiene este subrepo

Aunque el código final ya vive en src/, conservar este subrepo cumple tres funciones:

  • Trazabilidad feature → ADR → código. Si en el futuro se cuestiona "¿por qué tomamos esta decisión arquitectónica?", el ADR existe y apunta al feature que lo motivó.
  • Onboarding rápido. Un nuevo colaborador puede leer una ficha F-XX.Y y entender el porqué antes de tocar el cómo en el repo principal.
  • Re-uso del proceso. El pipeline de 7 fases es replicable en futuros sub-proyectos o módulos. Las plantillas de los maestros sirven de base.

Mapeo a la arquitectura final

Cada épica tiene contrapartida directa en contenedores del sistema desplegado. Esta tabla es el puente entre el "qué pedimos" y el "qué construimos":

ÉpicaContenedores realesDocumentación canónica
E-00 Setupdocker-compose, traefik, postgres, redis, rabbitmq, qdrant1 · Instalación · 4 · Arquitectura
E-01 Ingestascraper-worker, ingest-api, bot Telegram3 · Componentes · 9 · Ejemplo Fase 1
E-02 Procesamiento IAembedder-worker, LiteLLM, prompt extractor7 · Prompts · 3 · Componentes
E-03 RAGqdrant, embedder, retriever en api8 · Lifecycle · 9 · Ejemplo Fase 2
E-04 Chatapi (chat + SSE), frontend Next.js9 · Ejemplo Fase 3 · 10 · Demo
E-05 Curaciónaudit_cron, notificaciones outbox8 · Lifecycle · 4 · Arquitectura
E-06 ObservabilidadOTel collector, métricas Prometheus4 · Arquitectura
E-07 Offline(fuera de scope MVP — backlog congelado)
E-08 Authapi JWT + refresh tokens httpOnly4 · Arquitectura
E-09 UXfrontend, demo público con sub-tenants10 · Demo · 9 · Ejemplo Fase 3.d

Convenciones de los documentos

  • Idioma: español. Los snippets de código y los IDs internos (épica, feature, ADR) permanecen en inglés.
  • Numeración estable: los IDs de épica/feature/ADR NO se reutilizan si se borra un elemento. Garantiza que un link externo no apunte a contenido distinto del esperado.
  • MoSCoW por feature: MUST · SHOULD · COULD · WON'T (esta última vacía en el MVP).
  • STRIDE por superficie de ataque en 2_architecture_risks.md.

Backlog

Las 54 fichas individuales están agrupadas por épica en el sidebar a la izquierda. Cada ficha sigue el mismo esquema:

# F-XX.Y · Nombre del feature
- Épica: E-XX
- Prioridad: MUST | SHOULD | COULD
- Dependencias: F-AA.B, F-CC.D
- Acceptance criteria
- Notas de implementación
- ADRs relacionados