ab4c9c81b02a905114b2bf82eec47ecf25632f2b
- SECRET_KEY desde variable de entorno (warn si no configurado) - login: rate limiting (10 intentos / 15 min) + validación next param (open redirect fix) - update_status: allowlist de estados válidos antes de ejecutar SQL - purchase_update_status: allowlist contra PURCHASE_STATUSES - save/clear_signature: allowlist _SIG_COLS para col derivado del request - upload_invoice: validación de extensión contra ALLOWED_DOCS - update_fields, update_labor, upload_photo, add_part_to_order: ownership check (empresa) - update_status, save/clear_signature: ownership check en WO mutations - auth.py: contraseña admin inicial desde ADMIN_PASSWORD env var Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
==================================================
MARINE MAINTENANCE PRO v2.0
==================================================
INSTALACIÓN
-----------
1. Descomprime el ZIP en cualquier carpeta, ej: C:\Projects\marine_maintenance\
2. Instala dependencias (solo una vez):
pip install flask reportlab Pillow
3. Arranca la aplicación:
cd marine_maintenance
python app.py
4. Abre en el navegador:
http://localhost:5500
PRIMER ACCESO
-------------
Usuario: admin
Contraseña: admin123
(Cámbiala inmediatamente en Usuarios → Editar)
ACCESO DESDE CELULAR (misma red WiFi)
--------------------------------------
http://192.168.x.x:5500
(reemplaza x.x con la IP de tu PC)
ROLES
-----
- superadmin : Ve todo, todas las compañías
- admin : Ve solo su compañía
- technician : Ve solo su compañía, sin acceso a administración
ESTRUCTURA DE CARPETAS
----------------------
marine_maintenance/
├── app.py ← Servidor principal
├── auth.py ← Sistema de login
├── report_generator.py ← Generador de PDF
├── schema.sql ← Estructura de la BD
├── requirements.txt
├── templates/ ← Pantallas HTML
└── static/
└── uploads/
├── photos/ ← Fotos de órdenes de trabajo
├── logos/ ← Logos de compañías
└── docs/ ← Documentos adjuntos
INTEGRACIÓN FUTURA CON MARINEINVOICE PRO
-----------------------------------------
Las órdenes completadas tienen un campo invoice_exported=0
listo para ser usado cuando se integren ambos sistemas.
==================================================
Description
Languages
HTML
52.7%
Python
46.8%
Batchfile
0.3%
VBScript
0.2%