npm package: @likewatt/models
Description: Package privé contenant les modèles TypeScript partagés pour les applications Likewatt.
Latest version: 1.49.0

# @likewatt/models

Package privé contenant les modèles TypeScript partagés pour les applications Likewatt.

## Installation

```bash
npm install @likewatt/models
```

## Description

Ce package exporte les modèles de données TypeScript utilisés dans l'écosystème Likewatt, incluant :

- **Entités principales** : `Site`, `Scenario`, `User`, `License`, `CollectiveSite`, `Invitation`, `ScenarioDefaultValue`
- **Entités TypeORM** : `Analysis`, `Optimization`, `WebhookOutput`, historiques (Co2, Enedis, FCR, Okwind, Pvgis, Spot, Tempo)
- **Modèles internes** : Paramètres énergétiques (batteries, PV, éolien, hydrogène, stockage thermique, etc.)
- **Types frontend** : Types TypeScript pour l'interface utilisateur
- **Énumérations** : Types énumérés partagés

## Structure

- `src/core/` : Entités principales et modèles internes
- `src/frontend/` : Types TypeScript pour le frontend
- `dist/` : Build compilé (CommonJS)

## Technologies

- TypeScript 5.x
- TypeORM 0.3.x
- Mongoose 8.x
- NestJS decorators (Swagger, Mongoose)
- Class Validator

## Scripts disponibles

```bash
npm run build        # Compile le projet TypeScript
npm run format       # Formate le code avec Prettier
npm run lint         # Lint et fixe le code avec ESLint
npm run lint:quick   # Lint sans auto-fix
npm run release      # Crée une release automatique (conventional commits)
npm run release:minor # Crée une release minor
npm run release:major # Crée une release major
```

## Convention de commit

Le projet utilise **Husky** et **Commitlint** pour enforcer les conventions de commit.

### Format requis

```
<type>(<scope>): <subject>

<body>

<footer>
```

### Types autorisés

- `feat`: Nouvelle fonctionnalité
- `fix`: Correction de bug
- `docs`: Documentation
- `style`: Formatage, point-virgules manquants, etc.
- `refactor`: Refactoring du code
- `perf`: Amélioration des performances
- `test`: Ajout de tests
- `build`: Changements du système de build
- `ci`: Changements CI/CD
- `chore`: Tâches de maintenance
- `revert`: Revert d'un commit précédent

### Exemples

```bash
feat(user): add authentication endpoint
fix(scenario): correct energy calculation
docs(readme): update installation instructions
refactor(battery): simplify params validation
ci(pipeline): add automatic versioning
```

### Impact sur le versioning

- `feat`: incrémente la version **minor** (1.0.0 → 1.1.0)
- `fix`: incrémente la version **patch** (1.0.0 → 1.0.1)
- `BREAKING CHANGE` dans le footer : incrémente la version **major** (1.0.0 → 2.0.0)

## Release et versioning

Le package utilise `standard-version` pour le versioning sémantique basé sur les commits conventionnels.

### Release automatique

Chaque push sur la branche `main` déclenche automatiquement :
1. Installation des dépendances
2. Build du projet
3. Analyse des commits pour déterminer le type de version (patch/minor/major)
4. Génération du CHANGELOG
5. Publication sur le registry NPM privé

### Release manuelle

Via Bitbucket Pipelines, possibilité de forcer un type de release :
- `patch` : Correctifs (1.0.0 → 1.0.1)
- `minor` : Nouvelles fonctionnalités (1.0.0 → 1.1.0)
- `major` : Breaking changes (1.0.0 → 2.0.0)
- `prepatch`, `preminor`, `premajor`, `prerelease` : Versions de pré-release

## Configuration

- **Compilation** : ES2019, CommonJS, avec decorators experimentaux
- **Output** : `dist/index.js` (main), `dist/index.d.ts` (types)
- **Registry** : NPM privé Likewatt

## Confidentialité

Ce package est privé et ne doit pas être partagé en dehors de Likewatt.