chore: archivar cambio add-toldo-poc-capacitor, mover spec a openspec/specs
This commit is contained in:
0
openspec/changes/archive/.gitkeep
Normal file
0
openspec/changes/archive/.gitkeep
Normal file
32
openspec/config.yaml
Normal file
32
openspec/config.yaml
Normal file
@@ -0,0 +1,32 @@
|
||||
schema: spec-driven
|
||||
|
||||
# Project context (optional)
|
||||
# Add only constraints that should guide OpenSpec artifacts and workflows.
|
||||
# Include constraints an agent cannot infer by reading the code.
|
||||
# Keep general project documentation and discoverable codebase facts out.
|
||||
# Example:
|
||||
# context: |
|
||||
# Designs and tasks must cover Windows, macOS, and Linux
|
||||
# Write all artifacts in Spanish
|
||||
|
||||
# Per-artifact rules (optional)
|
||||
# Add custom rules for specific artifacts.
|
||||
# Example:
|
||||
# rules:
|
||||
# proposal:
|
||||
# - Keep proposals under 500 words
|
||||
# - Always state what is out of scope
|
||||
# tasks:
|
||||
# - Break tasks into chunks of max 2 hours
|
||||
|
||||
# Per-operation guidance (optional)
|
||||
# Add advisory guidance for how apply and archive work should be conducted.
|
||||
# This is separate from artifact rules above.
|
||||
# Example:
|
||||
# operations:
|
||||
# apply:
|
||||
# guidance:
|
||||
# - Keep test summaries concise
|
||||
# archive:
|
||||
# guidance:
|
||||
# - Summarize the archive outcome before finishing
|
||||
0
openspec/specs/.gitkeep
Normal file
0
openspec/specs/.gitkeep
Normal file
193
openspec/specs/toldo-poc/spec.md
Normal file
193
openspec/specs/toldo-poc/spec.md
Normal file
@@ -0,0 +1,193 @@
|
||||
# Spec: toldo-poc
|
||||
|
||||
## Capability: Inventario
|
||||
|
||||
### Requirement: Registrar inventario inicial
|
||||
The system SHALL allow registering initial inventory for products at the start of market day.
|
||||
|
||||
#### Scenario: Registro de inventario inicial
|
||||
- **GIVEN** products exist for producers
|
||||
- **WHEN** user registers initial inventory with quantities for each product
|
||||
- **THEN** movements of type INGRESO_INICIAL are recorded
|
||||
- **AND** initial inventory is stored for the day
|
||||
|
||||
### Requirement: Detectar diferencias de inventario
|
||||
The system SHALL detect and record differences between expected inventory (from previous day) and actual inventory.
|
||||
|
||||
#### Scenario: Diferencia detectada
|
||||
- **GIVEN** there is a previous day's final inventory
|
||||
- **WHEN** current inventory count differs from expected
|
||||
- **THEN** the difference is recorded and visible in reports
|
||||
- **AND** the real inventory is used going forward
|
||||
|
||||
### Requirement: Registrar ingresos entre semana
|
||||
The system SHALL allow registering product restocks during the week to warehouse/bodega.
|
||||
|
||||
#### Scenario: Ingreso en semana
|
||||
- **GIVEN** a product needs restocking
|
||||
- **WHEN** user registers ingreso with product, quantity, and person who received
|
||||
- **THEN** movement of type INGRESO_SEMANA is recorded with receivedBy
|
||||
- **AND** inventory is updated
|
||||
|
||||
## Capability: Ventas
|
||||
|
||||
### Requirement: Registrar ventas
|
||||
The system SHALL allow registering sales with product lines, quantities, prices, and payment method.
|
||||
|
||||
#### Scenario: Venta en efectivo
|
||||
- **GIVEN** products with stock available
|
||||
- **WHEN** user creates a sale with product lines paying in EFECTIVO
|
||||
- **THEN** venta and ventaLineas are recorded
|
||||
- **AND** inventory is decremented
|
||||
- **AND** sale is counted in cash total
|
||||
|
||||
#### Scenario: Venta con QR
|
||||
- **GIVEN** products with stock available
|
||||
- **WHEN** user creates a sale with product lines paying in QR
|
||||
- **THEN** sale is recorded with formaPago QR
|
||||
- **AND** sale is counted in QR total separately
|
||||
|
||||
### Requirement: Productos distintos por productor
|
||||
The system SHALL treat products from different producers as different products even if same name.
|
||||
|
||||
#### Scenario: Mismo nombre diferente productor
|
||||
- **GIVEN** "Café molido 250gr" exists for Productor A and Productor B
|
||||
- **WHEN** selling
|
||||
- **THEN** they are different productos with different IDs
|
||||
- **AND** reported separately by producer
|
||||
|
||||
## Capability: Gastos
|
||||
|
||||
### Requirement: Registrar gastos
|
||||
The system SHALL allow registering expenses during the day.
|
||||
|
||||
#### Scenario: Gasto registrado
|
||||
- **GIVEN** an expense occurs
|
||||
- **WHEN** user registers gasto with concepto and monto
|
||||
- **THEN** gasto is recorded with fecha
|
||||
- **AND** included in cash reconciliation
|
||||
|
||||
## Capability: Cuadre de Caja
|
||||
|
||||
### Requirement: Realizar cuadre de caja
|
||||
The system SHALL allow end-of-day cash reconciliation.
|
||||
|
||||
#### Scenario: Cuadre completo
|
||||
- **GIVEN** base inicial, ventas (cash/QR), gastos (cash/QR) recorded
|
||||
- **WHEN** user performs cuadre
|
||||
- **THEN** saldoEsperadoEfectivo is calculated (base + ventas efectivo - gastos efectivo)
|
||||
- **AND** user can enter saldoRealEfectivo
|
||||
- **AND** descuadreEfectivo is calculated
|
||||
- **AND** QR totals compared (registrado vs banco)
|
||||
- **AND** totalVentas = ventas efectivo + ventas QR
|
||||
|
||||
### Requirement: Detectar descuadres
|
||||
The system SHALL track and report discrepancies.
|
||||
|
||||
#### Scenario: Descuadre en efectivo
|
||||
- **GIVEN** saldoEsperadoEfectivo != saldoRealEfectivo
|
||||
- **WHEN** cuadre is saved
|
||||
- **THEN** descuadreEfectivo is recorded
|
||||
- **AND** visible in cuadre report
|
||||
|
||||
## Capability: Ajustes
|
||||
|
||||
### Requirement: Ajustes requieren motivo
|
||||
The system SHALL require a reason for any adjustment.
|
||||
|
||||
#### Scenario: Ajustar inventario con motivo
|
||||
- **GIVEN** need to adjust inventory
|
||||
- **WHEN** user creates ajuste with producto, cantidadNueva, and motivo
|
||||
- **THEN** ajuste is saved with motivo (non-empty)
|
||||
- **AND** marked as modified/changed
|
||||
- **AND** motivo appears in final report
|
||||
|
||||
### Requirement: Ajustes trazables
|
||||
The system SHALL track all adjustments with before/after values.
|
||||
|
||||
#### Scenario: Trazabilidad de ajuste
|
||||
- **GIVEN** an adjustment is made
|
||||
- **THEN** cantidadAnterior, cantidadNueva, diferencia recorded
|
||||
- **AND** fecha and motivo recorded
|
||||
- **AND** appears in reports marked as changed
|
||||
|
||||
## Capability: Reportes
|
||||
|
||||
### Requirement: Reporte por productor
|
||||
The system SHALL generate reports by producer.
|
||||
|
||||
#### Scenario: Reporte por productor completo
|
||||
- **GIVEN** sales and inventory data for the day
|
||||
- **WHEN** generating report by producer
|
||||
- **THEN** shows inventory differences vs previous day
|
||||
- **AND** shows initial inventory (real)
|
||||
- **AND** shows inventory movements from sales (salidas)
|
||||
- **AND** shows sales value for producer's products
|
||||
- **AND** shows total per producer
|
||||
|
||||
### Requirement: Reporte de cuadre de caja
|
||||
The system SHALL generate cash reconciliation report.
|
||||
|
||||
#### Scenario: Reporte cuadre
|
||||
- **GIVEN** cuadre data
|
||||
- **WHEN** generating report
|
||||
- **THEN** shows fecha/hora, concepto, ingreso, gastos, saldo
|
||||
- **AND** separate sections for efectivo and QR
|
||||
- **AND** shows descuadres if any
|
||||
- **AND** shows totalVentas (efectivo + QR)
|
||||
|
||||
### Requirement: Reporte consolidado
|
||||
The system SHALL generate consolidated reports by date range, week, or month.
|
||||
|
||||
#### Scenario: Consolidado por rango
|
||||
- **GIVEN** multiple days of data
|
||||
- **WHEN** generating consolidated report for date range
|
||||
- **THEN** aggregates sales, expenses, adjustments
|
||||
- **AND** shows totals by producer
|
||||
|
||||
## Capability: Persistencia y Exportar/Importar
|
||||
|
||||
### Requirement: Exportar datos
|
||||
The system SHALL export all data in versioned JSON format.
|
||||
|
||||
#### Scenario: Exportar
|
||||
- **GIVEN** data exists in the app
|
||||
- **WHEN** user exports
|
||||
- **THEN** JSON file is generated with schemaVersion, appVersion, exportedAt, data
|
||||
- **AND** file can be saved/shared
|
||||
|
||||
### Requirement: Importar datos
|
||||
The system SHALL import data with validation and migration support.
|
||||
|
||||
#### Scenario: Importar válido
|
||||
- **GIVEN** a valid exported JSON file
|
||||
- **WHEN** user imports
|
||||
- **THEN** schemaVersion is validated
|
||||
- **AND** data is migrated if needed or imported directly
|
||||
- **AND** data is stored in local DB
|
||||
|
||||
#### Scenario: Importar incompatible
|
||||
- **GIVEN** JSON with incompatible schemaVersion
|
||||
- **WHEN** user imports
|
||||
- **THEN** clear error message is shown
|
||||
- **AND** import is rejected
|
||||
|
||||
## Capability: Offline y Empaquetado
|
||||
|
||||
### Requirement: Funcionar offline
|
||||
The system SHALL work completely offline.
|
||||
|
||||
#### Scenario: Modo avión
|
||||
- **GIVEN** app installed/running with no network
|
||||
- **WHEN** performing all operations (inventory, sales, expenses, reports)
|
||||
- **THEN** all operations work correctly
|
||||
- **AND** data persists locally
|
||||
|
||||
### Requirement: Empaquetado APK
|
||||
The system SHALL be buildable as Android APK via Capacitor.
|
||||
|
||||
#### Scenario: Generar APK
|
||||
- **GIVEN** built web assets
|
||||
- **WHEN** running cap sync android
|
||||
- **THEN** Android project is updated
|
||||
- **AND** APK can be built and installed on Android tablet
|
||||
Reference in New Issue
Block a user