O Speco segue uma arquitetura modular baseada no framework Tryton 8.0, com submódulos git que podem ser carregados independentemente.
A seguir a hierarquia de dependências dos submódulos Speco:
speco_suspend → ir (MÓDULO BASE)
↓
speco_core → ir, res, party, speco_suspend
↓
speco_group → ir, res, party, speco, speco_core, speco_suspend
↓
speco_production → ir, res, party, product, country, speco, speco_core, speco_suspend
↓
speco_production_agroindustry → party, speco_production (extensão)
↓
speco_family → ir, res, speco_production
↓
speco_management_scheme → ir, res, speco_production + speco_family
↓
speco_documents → ir, res, speco
↓
speco_extend → TODOS OS MÓDULOS ANTERIORES (MÓDULO PRINCIPAL)
↓
speco_annuity → ir, speco_extend, notification_email
↓
speco_ecovida → ir, speco_extend, notification_email
Módulo base que fornece o mixin Suspend para controle de estado:
speco.suspend - Mixin com estados: active, inactive, suspended, excluded, detached
speco.suspend_type - Tipos de suspensão
speco.suspend_history - Histórico de suspensões
speco.suspension_request - Solicitação de suspensão
Módulo de nucleação (Core):
speco.core - Modelo de Núcleo SPG
speco.core_supporting_entity - Entidades de suporte
party.party - Extensão com supporting_entities
speco.suspension_request - Extensão com campo core
Módulo de Grupos:
speco.group - Modelo de Grupo
speco.group_coordinator - Coordenadores de grupo
party.party - Extensão com current_group e group
Módulo de Entidades de Produção:
speco.production_entity - UP ou Agroindústria
speco.production_scope - Escopo de produção (vegetal, animal, mudas)
speco.production_entity_production - Produções vinculadas
Helpers para coordenadas (latitude/longitude/DMS)
Módulo de Famílias:
speco.family - Modelo de Família
speco.family_members - Membros da família
speco.family_change_group_history - Histórico de mudança de grupo
Módulo de PMO/PPO:
speco.production_entity.management_scheme - Esquema de gestão
Extensões em ProductionEntityProduction e ProductionQuantity
Módulo base de documentos:
speco.process_management - Processo de gestão
DeliveryDocumentValidator - Validador de documentos
MÓDULO PRINCIPAL - Contém as regras de negócio principais:
speco.certification - Certificação (Workflow)
speco.certificate_line - Linha de certificado
speco.dac - DAC (Workflow)
speco.delivery_document - Documentos de entrega
speco.main_models_fields - Mixin de notificações
speco.version - Mixin de versionamento
Módulo de Anualidades:
speco.annual - Anualidade hierárquica
speco.annuity.line - Linha de anualidade
speco.annuity.payment - Pagamento
Módulo de Notificações:
ExpirationDocumentMixin - Mixin para cálculo de expiração
Módulo específico da Rede Ecovida:
res.user - Extensão com default_language = pt
Reportes HTML de notificações
Scripts de importação
Extensões com PoolMeta: Nunca modificar módulos base, sempre usar PoolMeta
Mixins reutilizáveis: Código compartilhado em mixins (Suspend, Version)
Estados em Python: Estados de campos definidos em Python, não em XML
Herança de vistas: Usar xpath para extender vistas, não criar duplicatas
Imports circulares: Solução - constants.py centralizado
AttributeError em __setup__(): Solução - guard clause com hasattr()
XMLs duplicados: Solução - manter apenas no módulo base
Referências sem prefixo: Solução - usar prefixo do módulo (speco_core.menu_speco_core)