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
- 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
- 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
- User provides credentials
- Authenticate.validate_credentials()
- Security.create_ticket(login_name)
- Return login ticket
- 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.