RepAttention

Historial de Cambios

Versión actual v0.28.0

v0.28.0 ACTUAL

18/12/2025

  • 🚀 FEATURE: Endpoint batch para recibir respuestas completas del LLM
  • 📥 POST /api/v1/mentions/analysis/batch - Procesa múltiples análisis en una sola petición
  • 🧠 Acepta rri_final, severity, impact directamente del LLM (sin recalcular en backend)
  • ⏱️ Almacena metadata de tiempos: start_time, end_time, total_elapsed_time_seconds, average_time_seconds
  • 🗃️ Nueva tabla analysis_batches: tracking de lotes procesados por el LLM
  • 🗃️ Nueva tabla analysis_batch_mention: relación pivot batch-menciones con status individual
  • 📊 Soporte para errores parciales: procesa menciones válidas, reporta errores individuales
  • 🔐 FEATURE: Endpoint protegido para archivos de storage
  • 📁 GET /api/v1/storage/{path} - Sirve archivos con autenticación JWT/API token
  • 🔒 Archivos en storage/app/public ahora requieren autenticación
  • 8 nuevos tests para batch analysis LLM (50 assertions)
Serie 0.27

v0.27.0

15/12/2025

  • 🚀 MAJOR: Sistema completo de notificaciones de usuario implementado
  • 🔔 Notificaciones de Alertas: GET/PUT /api/v1/user/notifications/alert (realtime, in-app, email, Slack, Teams)
  • 📢 Notificaciones del Sistema: GET/PUT /api/v1/user/notifications/system (team changes, billing, workspace, product updates)
  • 💬 Notificaciones de Menciones: GET/PUT /api/v1/user/notifications/mentions (new mentions, only negative)
  • 📧 Correos Resumen (Digest): GET/PUT /api/v1/user/notifications/digest (daily/weekly/monthly)
  • 🌙 Horas Silenciosas: GET/PUT /api/v1/user/notifications/quiet-hours (timezone support)
  • 👤 User Profile: PUT /api/v1/user/profile (name, phone), POST /api/v1/user/profile/avatar
  • 🔐 Passwordless Auth: POST /api/v1/auth/request-code, POST /api/v1/auth/verify-code
  • SendDigestEmailJob: Job programado para envío de emails resumen (respeta timezone y quiet hours)
  • 📬 DigestEmail Mailable: Template HTML responsive para correos resumen
  • 🔑 AuthCode: Sistema de códigos de 6 dígitos con rate limiting y expiración
  • 🗃️ Migración: create_user_notification_settings_table (configuraciones por usuario)
  • 🗃️ Migración: add_profile_fields_to_users (phone_number, avatar_url)
  • 🗃️ Migración: create_auth_codes_table (passwordless authentication)
  • 🗃️ Migración: increase_security_logs_action_column (varchar 10 → 50)
  • 🔧 FIX: Validación de status en alertas RRI (ACTIVE, INACTIVE, PAUSED)
  • 74 nuevos tests para el sistema de notificaciones
Serie 0.26

v0.26.0

27/11/2025

  • 🚀 MAJOR: API de Studies extendida para sincronización completa con frontend
  • 📊 Nuevos campos en studies: entity_type, term_matching, folder_id
  • 🆕 Nuevo modelo StudyObjective: objetivos simples (trust, awareness, transparency, innovation, leadership, ethics, responsibility, proximity)
  • 🆕 Nuevo modelo CalendarMilestone: hitos del calendario con fecha + descripción
  • 🔧 StoreStudyRequest/UpdateStudyRequest: validación de keywords, objectives y calendar_milestones anidados
  • StudyController: sync inteligente de keywords (crear/actualizar/eliminar) con variants y exclusions
  • StudyController: sync de objectives (estrategia reemplazo) y calendar_milestones (estrategia sync por id)
  • 📦 StudyResource actualizado: incluye entity_type, term_matching, folder_id, objectives como array de strings
  • 📦 KeywordResource: ahora incluye avg_rri, last_mention_date, statistics, variants y exclusions como arrays
  • 🆕 CalendarMilestoneResource: nuevo resource para milestones
  • 🗃️ Migración: add_fields_to_studies_table (entity_type, term_matching, folder_id)
  • 🗃️ Migración: create_study_objectives_table
  • 🗃️ Migración: create_calendar_milestones_table
  • 🗃️ Migración: convert_status_enum_to_varchar_in_mentions (status ENUM → VARCHAR)
  • 🔧 FIX: Migraciones pendientes marcadas como ejecutadas (mentions_meta y convert_enums ya existían en BD)
Serie 0.25

v0.25.3

27/11/2025

  • 🔧 REFACTOR: Sistema de versionado modular en storage/version/
  • 📁 Estructura: manifest.json + changelog/*.x.json por serie
  • 📦 Changelog compactado: 0.14.x.json contiene versiones 0.1.0 a 0.14.0
  • 🧪 FIX: Test it_sets_error_status_when_calculation_fails actualizado para emociones parciales

v0.25.2

27/11/2025

  • 🎯 FIX: Cálculo RRI ahora acepta feel_emotions parciales (1-4 emociones en lugar de exactamente 4)
  • Emociones faltantes tratadas como neutral (0), no como errores de validación
  • 📊 Añadido logging INFO para emociones parciales para monitorear patrones del proveedor NLP
  • 🧪 Nuevos tests: it_accepts_partial_feel_emotions, it_rejects_empty_feel_emotions
  • 🎨 UI: Secciones del changelog ahora expandidas por defecto para mejor UX

v0.25.1

24/11/2025

  • 🎯 FIX: Adaptación al formato EXACTO del proveedor externo
  • think_result ahora acepta scores array [{driver, score, reasoning}] + average_score
  • feel_result ahora acepta scores array [{emotion, score, reasoning}] + average_score
  • do_result ahora acepta clasification (con typo del proveedor) → behavior
  • align_results (plural) en lugar de align_result
  • 💾 Guardado de input, think_result, feel_result, do_result completos en mentions_meta
  • 🔧 Helper methods adaptan scores arrays a campos de base de datos
  • 📊 getThinkData(): Extrae driver con mayor score de scores array
  • 📊 getFeelData(): Convierte scores array a emotions object normalizado
  • 📊 getDoData(): Mapea clasification → do_behavior
  • 🔧 audience_channel_score default 50.0 si no existe
  • 🔧 severity guardada desde proveedor

v0.25.0

24/11/2025

  • 🚀 MAJOR: Manejo flexible de JSON para servicios NLP externos
  • StoreMentionAnalysisRequest rediseñado con helper methods (getThinkData, getFeelData, getDoData, getAlignData)
  • 📊 Acepta estructuras JSON variables: objetos think_result, feel_result, do_result
  • 💾 Preservación completa de JSON en tabla mentions_meta para auditoría/reentrenamiento de IA
  • 🔧 UpdateMentionStatusRequest mejorado con campos metadata opcionales (error_code, objeto metadata)
  • 🎯 MentionAnalysisController::store() reescrito para normalizar formatos flexibles de proveedores IA
  • 🔐 Integración SecurityLog para tracking de análisis con atribución de proveedor
  • 📝 Cumplimiento estándar API: Usando clases Response personalizadas (no response()->json() directo)
Serie 0.24

v0.24.7

24/11/2025

  • 🐛 FIX: Corregida serialización de valores meta en ListMentionResponse
  • Cambiado de ResourceCollection a interfaz Responsable
  • 📊 Campos meta ahora retornan valores simples en lugar de arrays
  • 🔧 Corregido problema de doble serialización con metadata de paginación

v0.24.6

24/11/2025

  • 🔄 API: Estructura de respuesta unificada para endpoint de menciones pendientes
  • /mentions/pending ahora retorna mismos datos que /studies/{id}/mentions
  • 📦 Usa MentionResource y ListMentionResponse para consistencia
  • 🎯 Incluye relaciones keyword y study con datos minimizados

v0.24.5

24/11/2025

  • 📚 API DOCS: Reordenados tags de endpoints alfabéticamente en documentación Scramble
  • 🔤 Tags ahora aparecen en orden A-Z: Alerts, Authentication, Keywords, Mentions, Studies, Users
  • Mejorada navegación y usabilidad de documentación API

v0.24.3

24/11/2025

  • 🔒 API: Optimizada exposición de datos de relaciones en MentionResource
  • Creados MentionKeywordResource y MentionStudyResource para datos mínimos
  • 📉 Eliminados deleted_at, timestamps y otros metadata de relaciones anidadas
  • 🎯 Keyword: Solo muestra id, study_id, term, is_primary, total_mentions, avg_rri
  • 🎯 Study: Solo muestra id, name, analyzed_brand, study_mode, status

v0.24.2

24/11/2025

  • 🔒 API: Optimizada exposición de datos de usuario en StudyResource
  • Creado StudyUserResource para datos mínimos de usuario en listados de estudios
  • 📉 Reducido tamaño de payload API eliminando campos de usuario innecesarios
  • 🔐 Eliminados campos sensibles: email_verified_at, global_role, status, timestamps, pivot

v0.24.0

21/11/2025

  • 🔄 Sistema flexible de metadata para menciones (soporte análisis dinámicos de IA)
  • 📊 Nueva tabla mentions_meta para campos no mapeados de proveedores externos
  • 🔧 Conversión ENUM → VARCHAR en mentions (source_type, think_driver, do_behavior)
  • 🤖 Auto-cálculo de external_context_score en MentionObserver (Decision 2C)
  • ⚠️ Fallback a NEUTRAL con logging para do_behavior desconocido (Decision 1A)
  • 🔍 Columna provider indexada en mentions_meta para queries eficientes (Decision 3B)
  • MentionAnalysisController ahora guarda metadata de proveedores (model_used, reasoning, timing)
  • 📝 StoreMentionAnalysisRequest acepta campos opcionales metadata (think_result, feel_result, do_result, source_analysis, context_analysis, performance)
  • 🔗 MentionResource expone metadata agrupada por tipo (analysis_metadata, think_reasoning, feel_reasoning, etc.)
  • 💾 Migración segura preservando datos existentes (temp column pattern)
  • 🔌 Compatible con múltiples proveedores IA: ChatGPT4, Claude, modelos custom
Serie 0.23

v0.23.0

18/01/2025

  • Fase 1 Completa: 100% Cumplimiento Estándar API Controller (Study, Keyword, RriAlert, ReputationSnapshot)
  • 🔧 StudyController: Refactorizado con patrón FormRequest + Resource + Response
  • 🔧 KeywordController: Refactorizado con autorización + validación completa en FormRequest
  • 🔧 RriAlertController: Refactorizado con validación exhaustiva de configuración de alertas
  • 🔧 ReputationSnapshotController: Refactorizado con soporte paginación + filtrado
  • 📝 Creados 11 archivos FormRequest con autorización + reglas de validación apropiadas
  • 📝 Creados 4 API Resources con documentación @property exhaustiva
  • 📝 Creadas 12 clases Response para respuestas HTTP consistentes (Index/Show/Store/Update/Destroy)
  • 🔐 Todos los controllers ahora siguen patrón de autorización FormRequest (movido desde controller)
  • Todos los endpoints retornan clases Response personalizadas (sin response()->json() en controllers)
  • 📊 Helpers de paginación en FormRequest (métodos getPagination, getFilters, getSorting)
  • 🎯 Checklist de archivos relacionados: Controller → Request → Resource → Response → Migration → Scramble
  • 📚 Ejemplo real: Fix de source_type (3 Requests + Resource + annotations + docs)
  • ⚠️ Regla de oro: 1 cambio requiere validar 5+ archivos relacionados
  • 🔗 Validación cruzada: Request rules ↔ Resource @property ↔ columnas DB ↔ valores ENUM
  • 📋 Sincronización docs: Si cambia patrón → actualizar CHECKLIST + EXAMPLE + STANDARD
Serie 0.22

v0.22.1

18/01/2025

  • 🔧 FIX: Corrección de validación source_type en menciones
  • CreateMentionRequest: Valores ENUM correctos (NEWS_MEDIA, SOCIAL_MEDIA, BLOG, FORUM, DARKWEB, VIDEO, PODCAST, OTHER)
  • ListMentionRequest: Filtros actualizados con valores correctos del ENUM
  • UpdateMentionRequest: Ya tenía valores correctos, sin cambios
  • 📝 PHPDoc actualizado: MentionResource, CreateMentionRequest, ListMentionRequest
  • 📖 Scramble annotations: MentionController index() y store() con valores correctos
  • 📚 Documentación: EXPLICACION_MENCIONES.md, EXPLICACION_RRI.md, SCRAMBLE_ANNOTATIONS.md actualizados
  • 📁 Roadmap: STEP-4 y STEP-5 con ejemplos corregidos
  • 🎯 Eliminados valores incorrectos: WEB, NEWS, REVIEW (no existen en DB)
  • Agregado valor OTHER faltante en todas las validaciones

v0.22.0

18/01/2025

  • 📚 DOCS: Estándar completo de implementación de controladores API
  • 📄 API_CONTROLLER_STANDARD.md: Documento maestro con 8 secciones modulares
  • 🏗️ FILE_STRUCTURE.md: Convenciones de nomenclatura (Controller/Request/Resource/Response)
  • 🎯 CONTROLLER_PATTERNS.md: 5 métodos CRUD con patrones completos
  • 🔐 REQUEST_PATTERNS.md: authorize() + rules() + helpers con ejemplos
  • 📝 RESOURCE_PATTERNS.md: @property tags + transformaciones + relationships
  • 📊 RESPONSE_PATTERNS.md: Códigos de estado + estructura meta + paginación
  • 📖 SCRAMBLE_ANNOTATIONS.md: Guía completa @tags/@queryParam/@bodyParam/@response
  • IMPLEMENTATION_CHECKLIST.md: 70 items en 11 fases para validación
  • 💡 STUDY_CRUD_EXAMPLE.md: Ejemplo completo Study CRUD siguiendo estándar
  • 🔗 Integración INDICE.md: 4 referencias cruzadas al estándar API
Serie 0.21

v0.21.0

18/01/2025

  • 📚 DOCS: Documentación completa para Scramble en todos los controladores API
  • AuthController: @tags Authentication, login/logout/me/refresh con ejemplos JWT
  • StudyController: @tags Studies, CRUD completo con validaciones y roles
  • KeywordController: @tags Keywords, gestión con variants y exclusions
  • MentionController: @tags Mentions, 6 endpoints documentados (index, show, store, update, destroy, statistics)
  • RriAlertController: @tags Alerts, 5 tipos de alertas con configs específicas
  • ApiTokenController: @tags API Tokens, gestión de tokens para integraciones
  • MentionAnalysisController: @tags Mention Analysis (External Services), endpoints para servicios NLP/MML externos
  • ReputationSnapshotController: @tags Reputation Snapshots, agregaciones DAILY/WEEKLY/MONTHLY
  • 🎯 @bodyParam completos: Todos los campos con tipos, ejemplos y valores permitidos
  • 🎯 @queryParam completos: Filtros, ordenamiento, paginación con ejemplos
  • 📝 @response con ejemplos reales: 200, 201, 204, 403, 404, 422, 500
  • 🏷️ Tags organizados por funcionalidad: Authentication, Studies, Keywords, Mentions, Alerts, API Tokens, Mention Analysis, Reputation Snapshots
  • 📖 PHPDoc descriptivo: Explicaciones claras de funcionalidad, flujo y requisitos
  • 🔐 Documentación de autorización: Roles requeridos (ADMIN, EDITOR, ANALYST, VIEWER)
  • 🔄 Documentación de flujos externos: Patrones de integración de servicios NLP
  • 📊 Ejemplos de respuestas: Datos realistas con estructura completa
Serie 0.20

v0.20.2

18/01/2025

  • 🏗️ REFACTOR: Separación arquitectónica Resources vs Responses
  • 📁 Estructura: app/Http/Resources/ (transformaciones) + app/Http/Responses/ (wrappers HTTP)
  • 📦 MentionResource movido a app/Http/Resources/ (raíz, sin subdirectorios)
  • 📤 Responses en app/Http/Responses/Mention/ (ListMentionResponse, ShowMentionResponse, etc.)
  • 🔄 Namespaces: App\Http\Resources vs App\Http\Responses\Mention
  • Claridad semántica: Resources = Transformación de datos, Responses = Capa HTTP

v0.20.1

18/01/2025

  • 🔧 REFACTOR: Reestructuración de Resources - eliminados subdirectorios Api/V1
  • 📁 Estructura simplificada: app/Http/Resources/Mention/ y app/Http/Resources/
  • 🔄 Namespaces actualizados: App\Http\Resources\Mention y App\Http\Resources
  • Imports actualizados en MentionController y ReputationSnapshotController

v0.20.0

18/01/2025

  • 📝 FEATURE: Nuevo estándar de implementación para controladores API
  • 🔧 MentionController refactorizado: Custom Requests + Custom Resources por endpoint
  • 🔐 Autorización: Movida de controlador a Request->authorize() (patrón FormRequest)
  • 🎯 Parámetros estandarizados: Todos los endpoints usan 'int $id' en lugar de $studyId/$mentionId
  • 📚 Documentación Scramble: PHPDoc completo con @queryParam, @bodyParam, @response
  • 🏷️ Tags organizados: Mentions, Studies, Keywords, Alerts, Users, Authentication
  • 📦 Request Classes: ListMentionRequest, ShowMentionRequest, CreateMentionRequest, UpdateMentionRequest, DeleteMentionRequest, MentionStatisticsRequest
  • 📤 Response Classes: ListMentionResponse, ShowMentionResponse, CreateMentionResponse, UpdateMentionResponse, DeleteMentionResponse, MentionStatisticsResponse
  • 🔍 MentionResource: Base resource con tipos de retorno específicos (array{...})
  • 🎨 ScrambleServiceProvider: Custom tags con descripciones para organización de endpoints
  • Query params documentados: Filtros (fecha, RRI, driver, behavior, source), ordenamiento, paginación
  • Body params documentados: Todos los campos con tipos, validaciones y ejemplos
  • 🔄 Helper methods: getFilters(), getSorting(), getPagination() en ListMentionRequest
  • 🚫 Eliminados: StoreMentionRequest (reemplazado por CreateMentionRequest)
  • 📋 Valores enum documentados: THINK drivers, DO behaviors, source types, status values
Serie 0.19

v0.19.0

17/01/2025

  • 🛡️ FEATURE: Sistema completo de logs de seguridad ENS
  • 🔎 Vista index: Filtros avanzados (usuario, acción, método, status, fechas, búsqueda)
  • 🔍 Vista detail: Detalle completo de cada log con metadatos
  • 📊 Exportar CSV: UTF-8 BOM con 12 columnas (ID, fecha, usuario, acción, método, ruta, status, IP, navegador, dispositivo, user agent)
  • 🔉 Middleware automático: Registra TODAS las peticiones HTTP y API
  • 🚫 Exclusiones: Assets (build/*, fonts/*), livewire, horizon, telescope
  • 🔒 Campos capturados: method, path, status_code, user_id, ip_address, user_agent, details (JSON)
  • 🌐 Detección IP: Soporte para X-Forwarded-For, X-Real-IP (proxies/balanceadores)
  • 🧹 Sanitización: Redacta password, token, secret, api_key en logs
  • 🎯 Badges semánticos: Actions (13 tipos) y códigos HTTP status con colores
  • 📱 Detección dispositivo: Móvil, Tablet, Desktop + navegador (cURL, Postman, Chrome, Firefox, Safari, Edge)
  • 👁️ Control de acceso: ADMIN ve todos, usuarios ven solo propios
  • 🗑️ Prune: Eliminar logs antiguos (mínimo 30 días ENS)
  • 🔒 Inmutabilidad: Sin UPDATED_AT, logs son permanentes
  • 📈 Índices optimizados: (user_id, action, created_at), path
  • 🔗 Navegación: Enlace en sidebar con icono shield, highlight activo
Serie 0.18

v0.18.0

17/01/2025

  • 🔉 BREAKING: Cambio de hash SHA-256 a encriptación AES-256 reversible
  • 🔐 FEATURE: Copiar token siempre disponible (desencripta desde BD)
  • 🔒 Formato visual mejorado: [7 letras]******[5 últimas letras]
  • Notificación toast: Confirma copia al portapapeles con icono check
  • 🔓 Método getPlainTextToken(): Desencripta token almacenado
  • 🗄️ Migración actualizada: Columna 'token' de string(128) a text
  • 🔍 findByToken(): Busca desencriptando todos los tokens activos
  • ⚠️ NOTA: Requiere php artisan migrate:fresh (regenera tokens)
Serie 0.17

v0.17.0

17/01/2025

  • 🔐 FEATURE: Panel de gestión de API Tokens con CRUD completo
  • 🔎 Listado de tokens: Nombre, estado (Activo/Inactivo/Nuevo/Expirado), último uso
  • Crear token: Formulario con nombre descriptivo y prefijo 'rpa_'
  • 🔒 Seguridad: Token solo se muestra una vez (SHA-256 hash almacenado)
  • 📜 Historial detallado: Últimas 50 peticiones API por token
  • 🌐 Tracking avanzado: IP, user-agent, endpoint, fecha/hora de cada petición
  • 📱 Detección de dispositivo: Móvil/Tablet/Desktop + cliente (Chrome, cURL, Postman)
  • 🎯 UI/UX: Badges de estado con colores semánticos, cards estadísticas
  • 🗑️ Eliminar token: Confirmación de seguridad antes de borrar
  • 🔒 Botón copiar: Copia token al portapapeles con feedback visual
  • 🔉 Permisos: Solo ADMIN y ANALYST pueden gestionar tokens
  • 🔔 Integración: SecurityLog registra uso de API (action: API_REQUEST)
  • Navegación: Enlace en sidebar con highlight activo
Serie 0.16

v0.16.1

14/01/2025

  • 🔧 HOTFIX: Excluir /public/build/* del control de versiones
  • 🐛 FIX: Conflicto entre npm run dev y npm run build en manifest.json
  • 🔥 Gitignore actualizado para evitar commits de assets compilados
  • ⚙️ Assets ahora se generan localmente y en CI/CD (no en repo)

v0.16.0

14/01/2025

  • 📜 FEATURE: Changelog con navegación tipo árbol lateral desplegable
  • Scroll-spy: Resalta automáticamente la versión visible en el árbol
  • 🔀 Dual layout: Panel admin (autenticados) vs página pública (invitados)
  • 📱 Responsive: Sidebar 300px desktop, oculto en móvil (<1024px)
  • 🌲 Árbol colapsable: Versiones agrupadas por serie (0.15.x, 0.14.x)
  • ⬆️ Botón 'Volver arriba': Aparece tras scroll de segunda sección
  • Botón 'Volver al inicio': Sticky bottom en sidebar (solo invitados)
  • 🔗 Copiar enlace: Botón en cada versión para compartir enlace directo
  • 💾 Persistencia: Estado del árbol guardado en localStorage
  • 🎨 Tokens semánticos: bg-bg-surface, text-fg-base, border-border-base
  • 🎯 Alpine.js store 'changelogTree': Gestión de estado del árbol
  • 🧩 Componente reutilizable: <x-ui.changelog-tree> con props
  • 🔀 Partial compartido: changelog-content.blade.php para ambos layouts
  • 👁️ Intersection Observer API: Detección automática de sección visible
Serie 0.15

v0.15.1

13/01/2025

  • 🔧 HOTFIX: Corrección de error en método seed() de DatabaseSeeder
  • 🐛 FIX: Actualizar llamadas a seeders en DatabaseSeeder
  • 🔄 Renombrar seeders con sufijo Seeder estándar de Laravel

v0.15.0

13/01/2025

  • 🔉 FEATURE: Sistema de autenticación dual (Web + API)
  • 🎯 UI: Login con validación, dashboard estadístico, navbar + sidebar
  • 🔒 JWT: Tokens para API REST con middleware personalizado
  • 🔐 Sesiones: Laravel Breeze para rutas web autenticadas
  • Guards: 'web' (sesiones) y 'api' (JWT) en config/auth.php
  • 📱 Responsive: Sidebar colapsable (Alpine.js), tema dark
  • 🛡️ ENS: Logs de auditoría en security_logs (login, acceso, cambios)
  • 🔎 Dashboard: Cards con estadísticas dinámicas (usuarios, estudios, menciones)
  • 👁️ Componentes: Badge, button, modal, alert, dropdown, theme-toggle
  • 🔍 Detección IP real: Soporte X-Forwarded-For/X-Real-IP
  • 🌐 API Docs: Scramble /docs/api con auto-discovery de endpoints
  • 🔄 Comandos CLI: token:generate para testing rápido de API
Serie 0.14

v0.14.0

10/01/2025

  • 🎯 FEATURE: Sistema de diseño completo con TailwindCSS 4 + SCSS
  • 🌈 10 paletas de color + tokens semánticos (bg-base, fg-muted, border-base)
  • 📈 Arquitectura @layer: variables, theme, typography, utilities
  • 👁️ Componentes UI: navbar, sidebar, layouts (app.blade.php, admin.blade.php)
  • 🌙 Dark mode: Sistema localStorage + Alpine.js con toggle
  • 🔤 Tipografía: Familia Coftein (400-700) con rutas absolutas/dev y relativas/prod
  • ⚙️ Layouts: Sistema Stack (@push meta/styles/scripts) para modularidad
  • Vite 7: HMR en puerto 5174, build optimizado con manifest.json
  • 📱 Responsive: Breakpoints sm/md/lg/xl, sidebar colapsable
  • 🔀 Alpine stores: sidebar (open/collapsed) con persistencia localStorage
Serie 0.13

v0.13.0

08/01/2025

  • 🔒 FEATURE: Sistema de API Tokens con autenticación Bearer
  • ⚙️ Tabla api_tokens: user_id, name, token (SHA-256), abilities, expires_at
  • 🔉 Modelo ApiToken: generateFor(), findByToken(), markAsUsed()
  • 🛡️ Middleware ApiAuth: Valida Bearer tokens y gestiona expiración
  • 🔎 Factory + Seeder: Datos de prueba para desarrollo
  • 🔍 Relationships: ApiToken->user(), User->apiTokens()
  • ✓ Validación: Comprobación de expiración con Carbon (método isValid)
Serie 0.12

v0.12.0

07/01/2025

  • ⚠️ FEATURE: Sistema de alertas RRI con 5 tipos de detección
  • 🚨 Alertas: CRISIS, SENTIMENT_DROP, NEGATIVE_SPIKE, THRESHOLD_BREACH, KEYWORD_ANOMALY
  • ⚙️ Tablas: rri_alerts (reglas), alert_triggers (disparos), alert_trigger_mention (pivot)
  • 📧 Canales: EMAIL, SLACK, WEBHOOK (config JSON por canal)
  • ProcessAlertJob: Evaluación automática con queries optimizadas
  • 🔎 Factories + Seeders: 3 alertas predefinidas con triggers
  • 🔍 Relationships: RriAlert->triggers(), AlertTrigger->mentions() many-to-many
  • Estados: ACTIVE, TRIGGERED, RESOLVED con metadata de evaluación
Serie 0.11

v0.11.0

06/01/2025

  • 🔎 FEATURE: Sistema de snapshots reputacionales agregados
  • ⚙️ Tabla reputation_snapshots: Agregación por estudio y periodo (DAILY/WEEKLY/MONTHLY)
  • 📊 Métricas: avg_rri, min_rri, max_rri, total_mentions, sentiment_distribution
  • ⚠️ Job GenerateReputationSnapshotJob: Cálculo asíncrono con agregaciones SQL
  • 🔍 Índices optimizados: (study_id, period_type, period_start)
  • 📅 Períodos: Snapshot diario (00:00), semanal (lunes), mensual (día 1)
  • 🎯 Factory: Datos sintéticos para testing con sentimientos balanceados
Serie 0.10

v0.10.0

05/01/2025

  • 🕵️ FEATURE: Monitoreo de exposiciones en dark web
  • ⚙️ Tabla data_exposures: source_url, exposed_data (JSON), severity (LOW/MEDIUM/HIGH/CRITICAL)
  • 🔗 Relationships: DataExposure->study(), Study->dataExposures()
  • 🔎 Factory + Seeder: 15 exposiciones sintéticas con datos realistas
  • 🔍 Índices: (study_id, discovered_at), (severity)
  • ⚠️ Validación: Enum severity con 4 niveles, JSON para exposed_data
Serie 0.9

v0.9.0

04/01/2025

  • 📅 FEATURE: Gestión de eventos de marca con contexto externo
  • ⚙️ Tabla brand_events: title, description, event_date, event_type (INTERNAL/EXTERNAL/INDUSTRY/CRISIS)
  • 🔗 Relationships: BrandEvent->study(), Study->brandEvents()
  • 🔎 Factory + Seeder: 30 eventos realistas con tipos variados
  • Uso: Contexto para análisis RRI y correlación temporal
  • 📊 Índices: (study_id, event_date) para queries temporales
Serie 0.8

v0.8.0

03/01/2025

  • FEATURE: Sistema de objetivos reputacionales para modo STRATEGIC
  • ⚙️ Tabla reputation_objectives: description, target_score (0-100), priority (LOW/MEDIUM/HIGH/CRITICAL)
  • 🔗 Relationships: ReputationObjective->study(), Study->reputationObjectives()
  • 🔎 Factory + Seeder: 12 objetivos distribuidos en 3 estudios STRATEGIC
  • ⚠️ Validación: Solo estudios en modo STRATEGIC pueden tener objetivos
  • 🎯 Prioridades: 4 niveles con distribución 50% MEDIUM, 25% HIGH, 15% LOW, 10% CRITICAL
Serie 0.7

v0.7.0

02/01/2025

  • 🔍 FEATURE: Sistema completo de keywords (primarias + variantes + exclusiones)
  • ⚙️ Tablas: keywords, keyword_variants, keyword_exclusions con relaciones study_id
  • 🔎 Seeder: 45 keywords (15 por estudio) con 3 variantes y 2 exclusiones cada una
  • 🔗 Relationships: Study->keywords(), Keyword->variants/exclusions/mentions()
  • 📊 Estadísticas: total_mentions calculado dinámicamente desde tabla mentions
  • Uso: Sistema listo para scraping y análisis de menciones
Serie 0.6

v0.6.0

01/01/2025

  • 🔎 FEATURE: Modelo de menciones con RRI V2 completo
  • ⚙️ Tabla mentions: 18 columnas incluyendo scores, sentimientos, y metadata
  • 🔗 Relationships: Mention->study(), Mention->keyword(), study/keyword inversos
  • 📊 Cálculo RRI: think_score (40%), feel_score (28%), do_score (20%), align_score (12%)
  • ⚠️ MentionObserver: Auto-cálculo de RRI en eventos save/update
  • 🎯 Enums: DriverEnum (7 drivers), BehaviorEnum (5 behaviors)
  • 🔍 Índices optimizados: content_hash unique, (study_id, collected_at), (study_id, rri_final)
  • 🌐 Campos: source_type (NEWS_MEDIA/SOCIAL_MEDIA/BLOG/FORUM/DARKWEB/VIDEO/PODCAST/OTHER), content, URL, fecha colección
Serie 0.5

v0.5.0

30/12/2024

  • 👥 FEATURE: Roles de usuario a nivel de estudio con tabla pivot user_study
  • 🔉 Roles: OWNER (control total), COLLABORATOR (edición), VIEWER (solo lectura)
  • 🔗 Many-to-many: User <-> Study con columna 'role' en pivot
  • 🔎 Factory + Seeder: Asignación automática de usuarios a estudios
  • Métodos: User->studies(), Study->users() con withPivot('role')
Serie 0.4

v0.4.0

29/12/2024

  • 📜 FEATURE: Modelo Study con modos ANALYTICAL y STRATEGIC
  • ⚙️ Migración: Tabla studies con 8 campos (name, description, mode, active, config)
  • 🔗 Relationships: Study->user() (belongsTo), User->studies() (hasMany)
  • 🔎 Factory + Seeder: 3 estudios (2 ANALYTICAL, 1 STRATEGIC) con configuración JSON
  • Config: sources (WEB, SOCIAL_MEDIA, DARKWEB), languages, search params
Serie 0.3

v0.3.0

28/12/2024

  • 🔉 FEATURE: Sistema de logs de auditoría compatible con ENS
  • ⚙️ Tabla security_logs: action, user_id, ip_address, user_agent, details (JSON)
  • 🔎 Acciones: LOGIN, LOGOUT, ACCESS, CREATE, UPDATE, DELETE, API_REQUEST
  • 🔍 Índices: (user_id, created_at), (action, created_at) para queries rápidas
  • Modelo SecurityLog con cast JSON para 'details'
Serie 0.2

v0.2.0

27/12/2024

  • 👥 FEATURE: Modelo User extendido con roles (ADMIN, ANALYST, VIEWER, API)
  • ⚙️ Migración: Campo 'role' tipo enum en tabla users
  • 🔎 Factory + Seeder: 10 usuarios (1 admin, 3 analistas, 3 viewers, 3 usuarios API)
  • 🔉 Hashing contraseñas: Bcrypt por defecto en Laravel 11
  • Configuración: Guardia 'web' para autenticación de sesión
Serie 0.1

v0.1.0

26/12/2024

  • 🎉 Inicialización del proyecto RepAttention Backend v3
  • ⚙️ Laravel 12 con PHP 8.2, SQLite desarrollo, MySQL producción
  • Configuración base: Vite, TailwindCSS 4, SCSS, Alpine.js
  • 🔥 Dependencias: JWT (tymon/jwt-auth), Laravel Pail, Scramble API Docs
  • 🗄️ Migraciones base: users, cache, jobs, sessions
  • 📚 Documentación: README.md
  • 🔧 Scripts Composer: setup, dev, test para flujo de desarrollo