3.5 KiB
EAMCO Playground
EAMCO Playground is a non-production, sandboxed microservice used for development, testing, and experimentation. It provides a safe and isolated environment for prototyping new features and refining complex algorithms before they are integrated into the core production services.
Think of this as the R&D department's workshop. It often contains experimental or alternative versions of logic found in other services like eamco_auto_api.
Purpose
The primary purpose of the Playground is to facilitate development and testing without affecting live data. Key use cases include:
- Algorithm Refinement: Testing new versions of the "K-Factor" (house consumption factor) calculation, as seen in
app/script/update_auto.py. - New Integrations: Evaluating new third-party services, such as testing the
pyowmlibrary as an alternative for weather data. - API Simulation: Mimicking the endpoints of other microservices to test interactions and data flow in a controlled environment.
- Debugging: Providing a space to replicate and diagnose complex issues found in the production system without the risk of data corruption.
This service should NOT be deployed to a production environment.
Key Components
- Experimental Scripts: The
app/script/directory contains experimental logic. For example,update_auto.pyholds a specific implementation of the K-Factor refinement algorithm. - Weather API Integration: Uses the
pyowmlibrary to connect to the OpenWeatherMap API, likely for testing purposes. - Simulated API Routers: Includes routers for
/main,/delivery,/confirm, and/infothat mirror the structure of other services, allowing developers to test frontend interactions or service-to-service communication.
Getting Started
Prerequisites
- Python 3.10+
- A PostgreSQL database (preferably a dedicated development or test instance).
Installation
-
Clone the repository and navigate into it.
-
Create a virtual environment and install dependencies:
python -m venv venv source venv/bin/activate pip install -r requirements.txt -
Configure your environment: The application's configuration is managed by environment variables set in
settings_local.py,settings_dev.py, orsettings_prod.py. Ensure your database connection URI and any API keys (like for OpenWeatherMap) are set correctly in your chosen settings file.
Running the Service
This service is intended for development use.
export MODE=DEVELOPMENT
uvicorn main:app --reload --host 0.0.0.0 --port <your_port>
Project Structure
eamco_playground/
├── app/
│ ├── models/ # SQLAlchemy ORM models
│ ├── routers/ # API endpoint definitions for simulating other services
│ ├── schema/ # Pydantic models
│ └── script/ # Experimental scripts and algorithms
├── config.py # Logic for loading environment-specific settings
├── database.py # SQLAlchemy engine and session setup
├── main.py # FastAPI application entry point
├── requirements.txt # Python dependencies
└── README.md # This file