tactic-rules
TACTIC Rules
...
TACTIC Backend - SKILL.md
🔧 Análisis Técnico Detallado del Backend
Este documento proporciona un análisis exhaustivo del backend TACTIC, detallando cada componente, tecnologías y arquitectura para facilitar el desarrollo, mantenimiento y extensión del sistema.
🏛️ Arquitectura del Core Framework
1. pyasm/ - Framework de Bajo Nivel (Foundation Layer)
pyasm/search/ - Motor de Búsqueda y ORM
Propósito: Proporcionar una capa de abstracción de base de datos y ORM potente.
Clases Principales:
# Clases fundamentales del ORM
- SObject # Clase base para todos los objetos de datos
- Search # Motor de consultas con filtros avanzados
- SearchType # Definición de tipos de búsqueda y esquemas
- DatabaseImpl # Abstracción de base de datos multi-vendor
- Transaction # Sistema de transacciones ACID
- SearchKey # Identificador único de objetos
- ColumnFilter # Sistema de filtros de columnas
Funcionalidades Clave:
- ORM Completo: Mapeo objeto-relacional con relaciones complejas
- Multi-Database: PostgreSQL, MySQL, SQLite, SQL Server
- Query Builder: Construcción dinámica de consultas SQL
- Transaction Management: ACID transactions con rollback
- Caching: Query cache y object cache
- Schema Migration: Migraciones automáticas de esquemas
- Audit Trail: Logging automático de cambios
Patrones Implementados:
- Active Record Pattern
- Unit of Work Pattern
- Data Mapper Pattern
pyasm/web/ - Framework Web y Widget System
Propósito: Proporcionar infraestructura web y sistema de componentes UI.
Clases Principales:
# Core Web Framework
- WebContainer # Gestor de contexto web y estado global
- WebState # Estado de la aplicación web
- AppServer # Servidor de aplicaciones base
- WebEnvironment # Gestión de entorno web
- WebInit # Inicialización del framework
# Widget System
- Widget # Clase base de todos los widgets
- HtmlWdg # Generador de HTML
- BaseRefreshWdg # Widget base con capacidad de refresh
- WebApp # Aplicación web principal
Funcionalidades Clave:
- Widget Hierarchy: Sistema de widgets jerárquico anidable
- State Management: Gestión de estado entre peticiones
- Session Management: Manejo de sesiones de usuario
- Request Routing: Sistema de ruteo flexible
- Template Engine: Integración con Mako templates
- AJAX Support: Comunicación asíncrona integrada
Patrones Implementados:
- Composite Pattern (para widgets)
- Observer Pattern (para eventos)
- Template Method Pattern
pyasm/biz/ - Lógica de Negocio Core
Propósito: Implementar la lógica de negocio fundamental del sistema.
Clases Principales:
# Core Business Objects
- Project # Gestión de proyectos y configuración
- Task # Gestión de tareas y asignaciones
- Pipeline # Definición de flujos de trabajo
- Snapshot # Versionado de archivos y metadatos
- File # Gestión de archivos físicos
- Note # Sistema de notas y comentarios
- Search # Búsquedas guardadas y filtros
Funcionalidades Clave:
- Project Management: Creación y gestión de proyectos
- Workflow Engine: Ejecución de pipelines y procesos
- File Versioning: Sistema de versionado de archivos
- Metadata Management: Gestión de metadatos extensibles
- Task Automation: Automatización de tareas recurrentes
pyasm/security/ - Sistema de Seguridad
Propósito: Proporcionar autenticación, autorización y gestión de accesos.
Clases Principales:
- Security # Gestor de seguridad central
- Authenticate # Sistema de autenticación
- AccessManager # Control de accesos por roles
- Login # Gestión de usuarios
- Group # Gestión de grupos
- Batch # Procesamiento por lotes seguro
Funcionalidades Clave:
- Multi-factor Authentication: Soporte para múltiples métodos
- Role-based Access Control (RBAC): Control granular de accesos
- Ticket-based Authentication: Sistema de tickets con expiración
- Access Rules: Reglas de acceso configurables
- Audit Logging: Registro de actividades de seguridad
pyasm/command/ - Sistema de Comandos
Propósito: Implementar el patrón Command para operaciones ejecutables.
Clases Principales:
- Command # Clase base de comandos
- CommandDelegator # Ejecutor de comandos
- Trigger # Sistema de triggers y eventos
Funcionalidades Clave:
- Undo/Redo Support: Soporte para deshacer/rehacer
- Command Chaining: Encadenamiento de comandos
- Async Execution: Ejecución asíncrona de comandos
- Error Handling: Manejo robusto de errores
2. tactic/ - Framework de Alto Nivel
tactic/ui/ - Componentes UI Avanzados
Propósito: Proporcionar widgets especializados y componentes de UI empresariales.
Módulos Principales:
# Advanced UI Components
- table/ # Tablas de datos con sorting, filtering, pagination
- panel/ # Paneles y layouts complejos
- widget/ # Widgets especializados (forms, calendars, etc.)
- filter/ # Filtros de búsqueda avanzados
- tool/ # Herramientas administrativas
- app/ # Aplicaciones completas
Widgets Clave:
- TableWdg: Tablas con capacidades empresariales
- FilterWdg: Filtros dinámicos y guardables
- EditWdg: Formularios de edición complejos
- CalendarWdg: Calendarios interactivos
- ChartWdg: Gráficos y visualizaciones
tactic/protocol/ - APIs y Protocolos
Propósito: Exponer funcionalidad del sistema através de diversas APIs.
Handlers Principales:
- APIRestHandler # API REST principal
- SObjectRestHandler # Handler específico para objetos
- GraphQLHandler # Soporte GraphQL
- PythonRestHandler # API con scripts Python
- XMLRPCHandler # Handler XML-RPC tradicional
Funcionalidades:
- RESTful API: API completa con métodos CRUD
- GraphQL: Queries flexibles y eficientes
- Authentication: Integración con sistema de seguridad
- Rate Limiting: Control de rate limiting y throttling
- Documentation: Auto-documentación de endpoints
tactic/startup/ - Inicialización del Sistema
Propósito: Gestionar el startup y shutdown del sistema.
Componentes:
- TacticInit: Inicialización principal del framework
- PluginLoader: Carga de plugins y módulos
- DatabaseUpgrade: Migraciones automáticas de base de datos
🗄️ Sistema de Base de Datos Detallado
Esquema Principal (sthpw/)
Tablas del Sistema
-- Core System Tables
CREATE TABLE project (
code VARCHAR(256) PRIMARY KEY,
title VARCHAR(256),
description TEXT,
project_type VARCHAR(256),
status VARCHAR(256),
-- Configuration y metadata
);
CREATE TABLE "login" (
code VARCHAR(256) PRIMARY KEY,
login VARCHAR(256) UNIQUE,
password VARCHAR(256),
first_name VARCHAR(256),
last_name VARCHAR(256),
email VARCHAR(256),
-- Security y preferences
);
CREATE TABLE task (
code VARCHAR(256) PRIMARY KEY,
search_type VARCHAR(256),
search_id INTEGER,
process VARCHAR(256),
status VARCHAR(256),
assigned VARCHAR(256),
-- Timestamps y metadata
);
CREATE TABLE snapshot (
code VARCHAR(256) PRIMARY KEY,
search_type VARCHAR(256),
search_id INTEGER,
context VARCHAR(256),
version INTEGER,
description TEXT,
-- File references
);
Relaciones y Claves Foráneas
- Project -> Task: Un proyecto tiene múltiples tareas
- Task -> Snapshot: Las tareas tienen múltiples snapshots
- Login -> Task: Los usuarios están asignados a tareas
- SearchType -> SObject: Tipos de búsqueda definen esquemas dinámicos
Sistema de Configuración XML
Definición de SObject
<!-- src/config/sthpw/sobject/project.xml -->
<search_type name="project">
<column name="code" type="string" key="true"/>
<column name="title" type="string"/>
<column name="description" type="text"/>
<column name="project_type" type="string"/>
<column name="status" type="string"/>
<column name="metadata" type="text"/>
<!-- Relationships -->
<relationship type="has_many" to="task" on="project_code"/>
<relationship type="has_many" to="snapshot" on="project_code"/>
</search_type>
🔌 Sistema de Plugins
Arquitectura de Plugins
plugins/
├── tactic_enterprise/ # Plugin empresarial
├── tactic_vfx/ # Plugin VFX especializado
├── custom_widgets/ # Widgets personalizados
└── third_party/ # Integraciones de terceros
Plugin Manager
- PluginLoader: Carga dinámica de plugins
- DependencyManager: Gestión de dependencias entre plugins
- PluginRegistry: Registro central de plugins activos
🚀 Sistema de Ejecución y Despliegue
Startup Sequence
# 1. Inicialización del entorno
TacticInit.set_environment()
# 2. Carga de configuración
Config.load_config()
# 3. Inicialización de base de datos
DatabaseInit.initialize()
# 4. Carga de plugins
PluginLoader.load_plugins()
# 5. Inicialización de web framework
WebContainer.start()
Process Management
- Multiprocessing: Soporte para múltiples procesos workers
- Thread Pool: Pool de threads para handling concurrente
- Load Balancing: Configuración de balanceo de carga
🔧 Configuración Avanzada
Database Pool Configuration
<database>
<vendor>PostgreSQL</vendor>
<server>localhost</server>
<port>5432</port>
<user>postgres</user>
<password>encrypted_password</password>
<pool_max_connections>20</pool_max_connections>
<pool_min_connections>5</pool_min_connections>
<connection_timeout>30</connection_timeout>
</database>
Security Configuration
<security>
<version>2</version>
<ticket_expiry>10 hour</ticket_expiry>
<max_failed_attempts>5</max_failed_attempts>
<lockout_duration>30 minutes</lockout_duration>
<password_policy>strong</password_policy>
<session_timeout>8 hours</session_timeout>
</security>
📊 Performance Optimizations
Query Optimization
- Index Strategy: Índices automáticos basados en patrones de consulta
- Query Cache: Caching de consultas frecuentes
- Connection Pooling: Pool de conexiones optimizado
- Lazy Loading: Carga diferida de relaciones
Memory Management
- Object Pooling: Reutilización de objetos frecuentes
- Garbage Collection: Tuning de GC para Python
- Memory Profiling: Herramientas de profiling integradas
🔄 Patrones de Diseño Avanzados
Event-Driven Architecture
# Sistema de eventos central
class EventManager:
@staticmethod
def register_handler(event_type, handler):
# Registro de event handlers
@staticmethod
def trigger_event(event_type, data):
# Disparo de eventos
Plugin Architecture
- Strategy Pattern: Plugins implementan diferentes estrategias
- Observer Pattern: Plugins observan eventos del sistema
- Factory Pattern: Creación dinámica de componentes de plugins
🔍 Monitoring y Debugging
Logging System
# Logging jerárquico por componente
import logging
# Business logic logging
business_logger = logging.getLogger('pyasm.biz')
# Security logging
security_logger = logging.getLogger('pyasm.security')
# Performance logging
perf_logger = logging.getLogger('pyasm.performance')
Performance Metrics
- Response Times: Métricas de tiempo de respuesta
- Database Queries: Estadísticas de consultas
- Memory Usage: Monitoreo de consumo de memoria
- Error Rates: Tasas de error por componente
🧪 Testing Framework
Unit Tests
# Estructura de tests
class TestSObject(unittest.TestCase):
def setUp(self):
# Setup test database
def test_create_sobject(self):
# Test de creación de objetos
def test_query_with_filter(self):
# Test de consultas con filtros
Integration Tests
- API Tests: Testing de endpoints REST
- Database Tests: Testing de operaciones CRUD
- Workflow Tests: Testing de pipelines complejos
🔒 Security Considerations
Authentication Flow
# Flujo de autenticación
1. User provides credentials
2. Authenticate.validate_credentials()
3. Security.create_ticket(login_name)
4. Return login ticket
5. Subsequent requests validate ticket
Authorization Matrix
- Resource-based: Control por recurso específico
- Role-based: Control por roles de usuario
- Attribute-based: Control por atributos dinámicos
🚀 Escalabilidad Considerations
Horizontal Scaling
- Load Balancer: Configuración de balanceo de carga
- Database Replication: Replicación de base de datos
- Cache Layer: Capa de caché distribuida
Vertical Scaling
- Memory Optimization: Optimización de uso de memoria
- CPU Optimization: Optimización de CPU-bound operations
- I/O Optimization: Optimización de operaciones de I/O
Este documento técnico detalla completamente el backend TACTIC, proporcionando el contexto necesario para desarrollo, mantenimiento y extensión del sistema.