Files
alro65 deb04c9315 sprint-0: fundaciones VMS-Sailor
Sprint 0 completo del producto VMS-Sailor (Vessel Management System
integrado para buques 30-40m). Brief de referencia en
VMS_Sailor_v2_Parte_*.md (intacto).

Core (vmssailor.core, 95.17% coverage, 99 tests verde):
- ShipCoord: sistema naval x_pp/y_cl/z_bl frozen
- Vessel, Deck, Bulkhead
- Equipment, EquipmentModel, Sensor, EquipmentSpec
- Tag, AlarmConfig, TagBinding, Scaling
- CardInstance, Bus, Topology con validacion 21 puntos I/O AR-NMEA-IO-v1.0
- Alarm, PermissiveRule, Condition
- Project agregado raiz con validacion cross-entity
- Persistencia portable .vmsproj (SQLite) con roundtrip verificable

Biblioteca curada seed (vmssailor.library):
- systems_catalog.json completo (catalogo maestro Parte 1 sec 7)
- 2 vessels: Sunseeker 76, Ferretti 850
- 2 motores: MTU 12V 2000 M96, Volvo D13-900
- 1 genset: Northern Lights M65C13
- yacht_motor_planeo.yaml (reglas heuristicas)
- TODO marcado data_source=seed_estimate - requiere validacion datasheets

Tools:
- vms-validate-library: CLI valida biblioteca completa
- vms-generate-test-project: CLI demo + verificacion roundtrip persistencia

Design System + 8 mockups HTML estaticos:
- docs/design_system.md (paleta Deep Ocean, gradientes, typography, motion)
- docs/brand/ (logo + variantes SVG)
- docs/mockups/splash, studio_main, runtime_overview,
  runtime_mimic_fuel (P&ID animado), runtime_alarms, runtime_trim (panel
  estrella con horizonte artificial), mobile_overview, mobile_trim
- docs/mockups/index.html (galeria)

Firmware (Sprint 12+ implementacion):
- firmware/ar_nmea_io_v1/src/config/pinout.h con macros GPIO

Decisiones autonomas documentadas en docs/decisions_sprint0.md.

Stack: Python 3.11 + uv + Pydantic v2 + SQLite stdlib + hatchling +
pytest 9 + ruff + mypy. Sin PySide6, FastAPI, Flutter ni firmware
funcional (entran en sprints siguientes).

Criterio de aceptacion Sprint 0: cumplido.
- uv sync: OK
- pytest: 99/99 verde
- cov vmssailor.core: 95.17% (objetivo >=80%)
- ruff: clean
- vms-validate-library: OK
- vms-generate-test-project: INTEGRIDAD OK

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-17 07:26:06 -04:00

144 lines
4.8 KiB
Markdown

# VMS-Sailor
**Vessel Management System** integrado (IAS — Integrated Automation System) para buques de 30 a 40 metros.
> Yates motor · Pesqueros · Patrulleros · Ferries pequeños · Offshore support pequeño
Compite en el nicho que Kongsberg K-Chief, Praxis Mega-Guard, Bachmann M-Series y Wärtsilä NACOS desatienden por enfocarse en buques de 80+ m.
---
## Componentes
| Componente | Para quién | Stack |
|---|---|---|
| **VMS-Sailor Studio** | Ingeniería interna (Álvaro) | Python 3.11 + PySide6 |
| **VMS-Sailor Runtime** | A bordo del buque | Python 3.11 + FastAPI + SQLite + DuckDB |
| **VMS-Sailor Mobile** | Owner + tripulación (WiFi local) | Flutter 3.x + Dart 3.x |
| **AR-NMEA-IO-v1.0 firmware** | Tarjeta I/O distribuida | ESP32 + PlatformIO + C++ |
---
## Estado actual
**Sprint 0 — Fundaciones**
Lo que existe en este commit:
- Modelo de datos core (`vmssailor/core/`) con Pydantic v2
- Persistencia portable a `.vmsproj` (SQLite)
- Biblioteca curada seed mínima (2 yates motor, 2 motores, 1 genset, reglas)
- Catálogo maestro completo de sistemas (`vmssailor/library/systems_catalog.json`)
- Validador de biblioteca + generador de proyecto demo
- Tests con cobertura ≥ 80% en `core`
- Design system + mockups HTML estáticos
- Firmware: solo `pinout.h` (Sprint 12 implementa el firmware)
**Lo que NO existe aún** (sprints siguientes):
- ❌ UI Studio operativa (Sprint 1)
- ❌ Runtime servidor con drivers Modbus/NMEA 2000 (Sprint 4)
- ❌ Cliente desktop (Sprint 6)
- ❌ App móvil Flutter (Sprint 11)
- ❌ Firmware funcional (Sprint 12)
---
## Setup
Requiere **Python 3.11** y [**uv**](https://github.com/astral-sh/uv).
```bash
# Si no tienes Python 3.11 instalado, uv lo descarga solo:
uv python install 3.11
# Crear entorno virtual + instalar dependencias:
uv sync --extra dev
# Validar la biblioteca curada:
uv run vms-validate-library
# Generar proyecto demo y verificar roundtrip de persistencia:
uv run vms-generate-test-project
# Tests:
uv run pytest
# Lint + type check:
uv run ruff check vmssailor/ tests/ tools/
uv run mypy vmssailor/core/
```
---
## Estructura del repositorio
```
.
├── vmssailor/ # Código Python compartido (Studio + Runtime)
│ ├── core/ # ★ Modelo de datos del producto (Sprint 0)
│ ├── library/ # ★ Biblioteca curada seed (Sprint 0)
│ ├── shared/ # Utilidades comunes
│ ├── studio/ # App Studio (Sprint 1+)
│ └── runtime/ # App Runtime (Sprint 4+)
├── firmware/ # Firmware ESP32 (Sprint 12+)
│ └── ar_nmea_io_v1/
│ └── src/config/pinout.h
├── mobile/ # App Flutter (Sprint 11)
├── tests/ # Tests Python (pytest)
├── tools/ # Scripts CLI
│ ├── validate_library.py
│ └── generate_test_project.py
├── docs/ # Documentación
│ ├── architecture.md
│ ├── coords.md
│ ├── design_system.md # ★ Sistema visual completo
│ ├── decisions_sprint0.md
│ ├── seed_data_notes.md
│ ├── mockups/ # ★ HTML mockups del producto
│ └── brand/ # ★ Logo y assets
├── installer/ # WiX MSI scripts (Sprint 7)
├── VMS_Sailor_v2_Parte_*.md # Brief original (intacto)
├── pyproject.toml
└── README.md
```
---
## Documentos de referencia (intactos)
Los 6 archivos `VMS_Sailor_v2_Parte_*.md` son el **brief original** y son la verdad de referencia para todos los sprints. **NO se modifican sin acuerdo explícito.**
- Parte 1 — Visión, arquitectura general
- Parte 2 — Studio en detalle
- Parte 3 — Runtime en detalle
- Parte 4 — Hardware AR-NMEA-IO + firmware
- Parte 5 — Mobile
- Parte 6 — Sprints + reglas de oro
---
## Reglas de oro (recordatorio)
1. Antes de cada sprint, plan + OK explícito antes de codear.
2. Tests obligatorios en `core` y `runtime/server`.
3. No agregar dependencias sin preguntar.
4. Documentar normativa (IEC 60092-504, IACS UR E22, ABYC E-11, NMEA 2000, SAE J1939).
5. Sin red de salida en Runtime (salvo activación inicial y VPN administrativa).
6. Biblioteca curada es **ORO** — cambios de formato requieren migración.
7. Runtime es **inmutable** para el cliente — solo deltas firmados.
8. Auditoría siempre activa.
9. Coordenadas navales `ShipCoord(x_pp, y_cl, z_bl)` en todo el código.
10. Unidades SI internas siempre.
11. Idioma: español por defecto.
12. AR-ECDIS es producto separado (no se desarrolla aquí).
13. Firmware y software van juntos en el mismo `.vmspack`.
Detalle completo en `VMS_Sailor_v2_Parte_06_Sprints_y_reglas.md` sección 5.
---
## Licencia
Software **propietario** de Álvaro. Ver `LICENSE.txt`.