Add models for process execution, recipes, system configuration, user management, and error logging

- Implemented ProcessSession, ProcessLog, and TemperatureReading models for tracking tempering processes.
- Created Recipe and RecipePhase models for managing chocolate tempering recipes.
- Developed SystemConfiguration, ErrorLog, and Backup models for system settings and error tracking.
- Introduced User and UserRole models for user management and authentication.
- Added basic structure for schemas and tests.
This commit is contained in:
2025-08-06 22:04:56 +02:00
parent 83b6a25fd5
commit 9cdd074a39
29 changed files with 3201 additions and 0 deletions

105
.github/prompts/rewrite.prompt.md vendored Normal file
View File

@@ -0,0 +1,105 @@
---
mode: agent
---
The current workspace is a chocolate tempering system. The current state of the codebase is very bad. The one wrote the code is a very stupid person. I want you to rewrite the whole system based on the documentation provided.
The code should be clean, well-structured, and follow best practices and utilze design patterns and modular architecture. The system is built using c# and communicates with hardware via Modbus RTU over serial communication.
Implement the system in Python using FastAPI for the web service, asyncio for asynchronous operations, and SQLAlchemy for database interactions. The system should be modular, with clear separation of concerns between the user interface, control logic, communication, and hardware layers.
see docs for specification
the current code can not be seen as correct reference, but it can be used as a reference for the current state of the system. (which is very bad)
```
┌─────────────────────────────────────────────────────────────┐
│ PYTHON ARCHITECTURE │
│ │
│ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ │
│ │ FastAPI │ │ Hardware │ │ Recipe │ │
│ │ Web Service │ │ Service │ │ Service │ │
│ │ (REST API) │ │ (AsyncIO) │ │ (State Mgmt) │ │
│ └─────────────────┘ └─────────────────┘ └─────────────────┘ │
│ │ │ │ │
│ └───────────────────┼───────────────────┘ │
│ ▼ │
│ ┌─────────────────────────────┐ │
│ │ Message Broker │ │
│ │ (Redis/Celery/NATS) │ │
│ └─────────────────────────────┘ │
│ │ │
│ ┌───────────────────┼───────────────────┐ │
│ ▼ ▼ ▼ │
│ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ │
│ │ Safety & │ │ Data Logger │ │ Configuration │ │
│ │ Monitoring │ │ Service │ │ Service │ │
│ │ (AsyncIO) │ │ (SQLAlchemy) │ │ (Pydantic) │ │
│ └─────────────────┘ └─────────────────┘ └─────────────────┘ │
└─────────────────────────────────────────────────────────────┘
```
### 2. **Recommended Python Stack**
#### **Core Framework & Libraries**
- **Web Framework**: FastAPI (modern, fast, async, great for APIs)
- **Hardware Communication**: `pymodbus` (excellent Modbus RTU/TCP support)
- **Async Framework**: `asyncio` + `aiofiles` + `aiohttp`
- **Message Queue**: Redis + Celery or NATS.py
- **Database**: SQLAlchemy + Alembic (migrations) + SQLite/PostgreSQL
- **Configuration**: Pydantic Settings (type-safe config with validation)
- **Logging**: `structlog` (structured logging)
- **State Management**: `python-statemachine` or custom state machine
- **Data Validation**: Pydantic (runtime type checking and validation)
- **Testing**: pytest + pytest-asyncio + factory-boy
#### **Additional Industrial Libraries**
- **Serial Communication**: `pyserial` (underneath pymodbus)
- **GPIO/Hardware Interface**: `RPi.GPIO` or `gpiozero` (if on Raspberry Pi)
- **Time-series Data**: `pandas` for data analysis, `influxdb-client` for metrics
- **Process Management**: `supervisor` or `systemd` for service management
- **Monitoring**: `prometheus-client` for metrics, `grafana` for dashboards
### 3. **Project Structure**
```
tempering_machine/
├── services/
│ ├── hardware/ # Hardware communication service
│ │ ├── __init__.py
│ │ ├── modbus_client.py
│ │ ├── hardware_manager.py
│ │ └── device_mappings.py
│ ├── recipe/ # Recipe management service
│ │ ├── __init__.py
│ │ ├── state_machine.py
│ │ ├── recipe_controller.py
│ │ └── phase_manager.py
│ ├── safety/ # Safety monitoring service
│ │ ├── __init__.py
│ │ ├── safety_monitor.py
│ │ ├── error_handler.py
│ │ └── emergency_stop.py
│ ├── web/ # Web API service
│ │ ├── __init__.py
│ │ ├── main.py
│ │ ├── routers/
│ │ └── dependencies.py
│ └── data/ # Data logging service
│ ├── __init__.py
│ ├── logger.py
│ └── models.py
├── shared/
│ ├── __init__.py
│ ├── config.py # Pydantic settings
│ ├── database.py # SQLAlchemy setup
│ ├── messaging.py # Message queue client
│ ├── models/ # Database models
│ └── schemas/ # Pydantic schemas
├── frontend/ # React/Vue.js frontend
├── tests/
├── docker/
├── scripts/
├── requirements.txt
├── pyproject.toml
└── docker-compose.yml
```