LUXJANEL — gestao.luxjanel.pt — cPanel
====================================

REQUISITO DO ALOJAMENTO
Setup Python App (CloudLinux/Python Selector) ou Application Manager com
Python WSGI/Passenger, Python 3.11+ com sqlite3 e hashlib.scrypt e disco local
persistente. O alojamento tem de permitir escrita na pasta data.
Sem essa funcionalidade, pede-a ao fornecedor. Este pacote não é um site PHP
nem pode ser instalado apenas por upload para public_html.

1. SUBDOMÍNIO E HTTPS
No cPanel > Domains, cria gestao.luxjanel.pt com uma raiz própria, diferente
da raiz de luxjanel.pt. Não partilhes a document root com o site principal.
Usa o DNS indicado pelo teu alojamento; não inventes um IP.
Em SSL/TLS Status ativa AutoSSL para gestao.luxjanel.pt e confirma o certificado.

2. FICHEIROS
No Gestor de Ficheiros, vai à pasta HOME da conta, fora de public_html.
Envia e extrai CaixiGest-cPanel.zip aí. A pasta resultante será caixigest.
Exemplo: /home/TEU_UTILIZADOR/caixigest
Não coloques o código, a base de dados ou a chave de instalação na raiz pública.

3. SETUP PYTHON APP > CREATE APPLICATION
Python version: 3.11 ou superior
Application root: caixigest
Application URL: gestao.luxjanel.pt / (sem caminho adicional)
Application startup file: passenger_wsgi.py
Application Entry point: application
Passenger log file: caminho privado sugerido pelo alojamento, fora da raiz pública

Se cPanel criar um passenger_wsgi.py de exemplo, substitui-o pelo deste pacote.
Não alteres a configuração gerada do Passenger/.htaccess sem orientação.
Não existem dependências externas para instalar com pip.
Se o painel só tiver Application Manager, regista a mesma pasta e domínio como
aplicação Python; o fornecedor pode ter de configurar o interpretador.

4. VARIÁVEIS DE AMBIENTE
CAIXIGEST_ORIGIN = https://gestao.luxjanel.pt
Guarda e reinicia a aplicação no painel.
A aplicação exige HTTPS. O Passenger deve fornecer wsgi.url_scheme=https ou
HTTPS=on. Se houver um ciclo de redirecionamento, pede ao alojamento que corrija
essa informação do servidor. Não desatives a exigência HTTPS para contornar.

5. CRIAR ADMINISTRADOR NO NAVEGADOR
Abre https://gestao.luxjanel.pt uma vez para a app iniciar.
No Gestor de Ficheiros abre caixigest/private/setup.key (criado automaticamente).
Copia a chave para o campo Chave de instalação no navegador.
Escolhe o teu nome de utilizador e palavra-passe (mínimo 12 caracteres).
Usa Mostrar palavras-passe se precisares. A chave deixa de permitir criação
quando o primeiro utilizador é guardado. Não partilhes esta chave.
Volta a entrar com a conta criada.

6. OUTROS UTILIZADORES
No Terminal do cPanel ativa o ambiente virtual com o comando apresentado no
Setup Python App. Dentro da pasta caixigest executa:
python server.py --add-user nome-do-colega
A palavra-passe é introduzida no terminal sem mostrar caracteres.
Se o teu painel não tiver Terminal, pede ao suporte a criação das contas.
Todos os utilizadores têm as mesmas permissões nesta versão.

7. DADOS E BACKUPS
Base de dados: caixigest/data/caixigest.sqlite3
Sessões ficam na base, partilhadas pelos processos Passenger e sobrevivem
a reinícios por até 8 horas. Cookies Secure, HttpOnly e SameSite=Strict.
Para backup consistente, no ambiente virtual e pasta da aplicação:
python server.py --backup /home/TEU_UTILIZADOR/copia-caixigest.sqlite3
Configura as cópias do alojamento para incluir a pasta da aplicação e data.
Não copies uma base ativa com o Gestor de Ficheiros ignorando o WAL.
Não publiques backups ou chaves em public_html.
Para trazer dados de uma versão anterior, utiliza Exportar/Importar dados na app.
Importar substitui os registos existentes e pede confirmação.

VALIDAÇÃO ANTES DE USAR
Testa criação de conta, login, cliente, modelo, orçamento, gravação, reabertura,
cortes, exportação e acesso a partir de outro computador.
Testes automáticos locais incluídos. A instalação neste alojamento e a
compatibilidade das máquinas ainda não foram testadas.

LIMITES DO PRODUTO
Esta é uma aplicação própria em desenvolvimento, não uma cópia completa do
PrefSuite. Otimização heurística de barras, cortes retos 90°, regras configuráveis
e CSV genérico. Não inclui cálculo estrutural, certificação, integração CNC
validada, permissões granulares nem auditoria. Validar regras com casos reais.
