141RF50RNF85RN18CU27HU60DEC19PA

Requerimientos

Requerimientos no funcionales

docs/01-requerimientos/requerimientos-no-funcionales.md · 211 líneas

Requerimientos no funcionales — MVP

Estado: Borrador · Última actualización: 2026-08-24 Dimensionado para: escenario Bajo — 5 a 10 proyectos activos, ~100 ejecuciones/mes, 1 a 5 GB/mes de evidencia (DEC-021).

Los valores numéricos de este documento son objetivos de diseño, no mediciones. Se revisan cuando exista tráfico real.

BloqueRango
Rendimiento y capacidadRNF-001RNF-008
Disponibilidad y resilienciaRNF-009RNF-015
SeguridadRNF-016RNF-024
Privacidad y tratamiento de datosRNF-025RNF-029
Usabilidad e idiomaRNF-030RNF-035
Observabilidad técnicaRNF-036RNF-040
CostosRNF-041RNF-044
Mantenibilidad y evoluciónRNF-045RNF-050

Rendimiento y capacidad

RNF-001 — Usuarios concurrentes. El sistema debe operar con al menos 20 usuarios concurrentes sin degradación perceptible. No se requiere escalado horizontal en el MVP.

RNF-002 — Latencia de las vistas de trabajo. Las vistas de ejecución de pruebas, plan y dashboard deben responder en menos de 1,5 s en el percentil 95, con el volumen de diseño.

RNF-003 — Latencia de la escritura de resultados. Registrar el resultado de un paso debe confirmarse en menos de 500 ms. Es la acción más repetida del flujo; si se siente lenta, el equipo deja de usar la herramienta.

RNF-004 — Carga de evidencia. La subida de un archivo de hasta 10 MB debe completarse en menos de 15 s en una conexión de 10 Mbps, con indicación de progreso.

RNF-005 — Tamaño máximo de documento de origen. 2 MB por documento de texto o Markdown. Suficiente para minutas y especificaciones extensas, y coherente con enviar el contexto directo al modelo sin RAG (DEC-018).

RNF-006 — Tamaño máximo de evidencia. 25 MB por archivo. El límite se comunica antes de la carga.

RNF-007 — Operaciones de IA asíncronas. Toda invocación al proveedor de IA se ejecuta de forma asíncrona, con estado consultable. La interfaz nunca queda bloqueada esperando al modelo.

RNF-008 — Tiempo de respuesta de la IA. Una generación de casos de uso debe completarse en menos de 90 s para un documento de tamaño típico. Si excede, el sistema informa el avance en lugar de aparentar estar colgado.

Disponibilidad y resiliencia

RNF-009 — Disponibilidad objetivo. 99% mensual en horario hábil. No se compromete alta disponibilidad en el MVP; el despliegue es de instancia única (DEC-013).

RNF-010 — Independencia de Argos Operaciones. La indisponibilidad de argos.flagare no puede impedir ejecutar pruebas, registrar resultados ni adjuntar evidencia (RN-017).

RNF-011 — Independencia del proveedor de IA. La indisponibilidad del proveedor de IA no puede impedir ninguna operación manual (RN-065).

RNF-012 — Independencia de notifications. La indisponibilidad de notifications.flagare no puede hacer fallar una operación de negocio. Los eventos se persisten antes de publicarse (RN-069).

RNF-013 — Dependencia dura de S3. El almacenamiento de evidencia es una dependencia bloqueante: sin S3 no se puede registrar un resultado, porque la evidencia es obligatoria (RN-046). El sistema debe indicarlo con claridad en lugar de fallar de forma opaca.

RNF-014 — Respaldo. Respaldo diario de la base de datos con retención de 30 días. La evidencia queda cubierta por el versionado y la durabilidad de S3.

RNF-015 — Recuperación. Objetivo de recuperación de 4 horas y pérdida máxima admisible de 24 horas de datos.

Seguridad

RNF-016 — Cifrado en tránsito. Toda comunicación, interna y externa, sobre TLS.

RNF-017 — Cifrado en reposo. Base de datos y bucket de evidencia cifrados en reposo.

RNF-018 — Sin secretos almacenados. El sistema no persiste credenciales de ambientes en ninguna forma, ni siquiera cifradas (RN-012, RN-026).

RNF-019 — Secretos de la propia plataforma. Las credenciales que Argos QA necesita para operar — Argos Operaciones, S3, Bedrock, notifications, vault — se inyectan por configuración externa. Nunca en el repositorio ni en la base de datos.

RNF-020 — Autorización en cada petición. El permiso se verifica en el backend en cada petición, sobre la dupla usuario + proyecto. La interfaz oculta lo que no corresponde, pero ocultar no es autorizar.

RNF-021 — URLs firmadas de vida corta. Las URLs de evidencia expiran en 15 minutos y no son reutilizables tras su vencimiento (RN-049).

RNF-022 — Protección contra enumeración. Los identificadores de artefactos no deben ser secuenciales adivinables a nivel de API. Los identificadores legibles (CU-007) son de presentación y viven dentro del ámbito del proyecto.

RNF-023 — Límite de peticiones. El sistema debe aplicar límites por usuario en las operaciones costosas: invocaciones de IA, carga de archivos y generación de reportes.

RNF-024 — Registro de accesos. Todo acceso a evidencia queda auditado con usuario, timestamp y elemento (RN-050).

Privacidad y tratamiento de datos

RNF-025 — Contenido enviado a la IA. El sistema debe registrar qué contenido se envió al proveedor de IA en cada invocación, para poder responder ante una consulta de privacidad.

RNF-026 — Residencia de datos. La región donde se procesan los datos con el proveedor de IA debe ser una decisión explícita y documentada. Depende de PA-011.

RNF-027 — Advertencia sobre datos sensibles. La interfaz debe advertir, al cargar requerimientos y al adjuntar evidencia, que el contenido puede procesarse con servicios externos y quedar almacenado según la política de retención.

RNF-028 — Aislamiento del rol Client. La restricción del rol Client se aplica en el backend, no filtrando en la interfaz. Ninguna respuesta de API dirigida a un Client puede contener casos de uso, escenarios, evidencia, comentarios ni descripciones de bugs (RN-061).

RNF-029 — Retención aplicada automáticamente. La política de retención (DEC-020) se ejecuta como proceso automático, no como tarea manual.

Usabilidad e idioma

RNF-030 — Idioma. La interfaz está íntegramente en español, incluidos los estados del dominio, que se presentan traducidos (DEC-036).

RNF-031 — Nombres técnicos internos. Los estados conservan su nombre técnico en inglés, en snake_case, en la API, la base de datos y los eventos. La traducción es de presentación. El mapeo es único y está documentado para las siete entidades en máquinas de estado § 10. Un identificador técnico no cambia nunca, aunque cambie su etiqueta. DEC-057.

RNF-032 — Sin internacionalización. No se implementa i18n en el MVP. El diseño no debe impedirla, pero tampoco pagar su costo ahora.

RNF-033 — Ejecución sin conocimiento previo. Una persona que nunca vio el proyecto debe poder ejecutar un escenario correctamente leyendo solo lo que muestra la pantalla. Es el criterio de éxito del producto, expresado como requisito de interfaz.

RNF-034 — No perder trabajo. La ejecución guiada debe conservar el progreso ante recarga o cierre accidental de la pestaña.

RNF-035 — Origen visible de lo generado por IA. Todo artefacto propuesto por IA debe mostrar esa procedencia de forma visible hasta que un humano lo revise. El usuario nunca debe confundir una propuesta con una definición validada.

Observabilidad técnica

RNF-036 — Logs estructurados. Todos los servicios emiten logs estructurados con identificador de correlación por petición.

RNF-037 — Trazas distribuidas. Instrumentación con OpenTelemetry en las operaciones que cruzan servicios: Argos Operaciones, S3, proveedor de IA y notifications.

RNF-038 — Sin datos sensibles en logs. Los logs no deben contener contenido de requerimientos, evidencia, tokens ni referencias resueltas de secretos.

RNF-039 — Health checks. Cada componente expone un endpoint de salud que refleja el estado de sus dependencias.

RNF-040 — Alertas mínimas. Deben existir alertas para: fallo sostenido de sincronización con Argos Operaciones, cola de eventos creciendo sin drenar, errores de subida a S3 y tasa de error del proveedor de IA.

Costos

RNF-041 — Medición desde el primer día. El consumo de IA y de storage se mide por proyecto desde el MVP, aunque no exista techo definido (PA-010).

RNF-042 — Modelo económico por defecto. La configuración por defecto usa el modelo más económico capaz de resolver cada tarea (RN-067).

RNF-043 — Sin procesamiento automático. Ninguna operación de IA se dispara sin acción del usuario, para que el gasto sea siempre atribuible a una decisión (RN-064).

RNF-044 — Retención como control de costo. Las lifecycle policies de S3 se configuran desde el despliegue inicial, no cuando el bucket ya creció.

Mantenibilidad y evolución

RNF-045 — Alineación con el estándar Flagare. El backend y el estilo de API siguen el estándar existente de los servicios Flagare (DEC-014, DEC-015). Depende de PA-005.

RNF-046 — Proveedor de IA abstraído. El acceso al modelo se hace tras una interfaz de proveedor. Cambiar de Bedrock a otro proveedor no debe requerir tocar la lógica de negocio. Con Bedrock aún sin habilitar (DEC-017), esto es una precaución concreta, no teórica.

RNF-047 — Storage abstraído. El acceso a S3 se hace tras una interfaz de storage.

RNF-048 — Espacio reservado para las fases siguientes. El modelo de datos debe contemplar sin rehacerse: dev specs, scripts Playwright, pipelines de GitLab y evidencia en video. Contemplar no significa implementar.

RNF-049 — Migraciones versionadas. Todo cambio de esquema se aplica mediante migraciones versionadas y reversibles.

RNF-050 — Despliegue en contenedores. La aplicación y sus workers se despliegan en Docker sobre la infraestructura Flagare existente (DEC-013).