326 lines
8.9 KiB
Markdown
326 lines
8.9 KiB
Markdown
|
|
# AI Insights Service
|
||
|
|
|
||
|
|
## Overview
|
||
|
|
|
||
|
|
The **AI Insights Service** provides intelligent, actionable recommendations to bakery operators by analyzing patterns across inventory, production, procurement, and sales data. It acts as a virtual operations consultant, proactively identifying opportunities for cost savings, waste reduction, and operational improvements. This service transforms raw data into business intelligence that drives profitability.
|
||
|
|
|
||
|
|
## Key Features
|
||
|
|
|
||
|
|
### Intelligent Recommendations
|
||
|
|
- **Inventory Optimization** - Smart reorder point suggestions and stock level adjustments
|
||
|
|
- **Production Planning** - Optimal batch size and scheduling recommendations
|
||
|
|
- **Procurement Suggestions** - Best supplier selection and order timing advice
|
||
|
|
- **Sales Opportunities** - Identify trending products and underperforming items
|
||
|
|
- **Cost Reduction** - Find areas to reduce waste and lower operational costs
|
||
|
|
- **Quality Improvements** - Detect patterns affecting product quality
|
||
|
|
|
||
|
|
### Unified Insight Management
|
||
|
|
- **Centralized Storage** - All AI-generated insights in one place
|
||
|
|
- **Confidence Scoring** - Standardized 0-100% confidence calculation across insight types
|
||
|
|
- **Impact Estimation** - Business value quantification for recommendations
|
||
|
|
- **Feedback Loop** - Closed-loop learning from applied insights
|
||
|
|
- **Cross-Service Intelligence** - Correlation detection between insights from different services
|
||
|
|
|
||
|
|
## Features
|
||
|
|
|
||
|
|
### Core Capabilities
|
||
|
|
|
||
|
|
1. **Insight Aggregation**
|
||
|
|
- Collect insights from Forecasting, Procurement, Production, and Sales services
|
||
|
|
- Categorize and prioritize recommendations
|
||
|
|
- Filter by confidence, category, priority, and actionability
|
||
|
|
|
||
|
|
2. **Confidence Calculation**
|
||
|
|
- Multi-factor scoring: data quality, model performance, sample size, recency, historical accuracy
|
||
|
|
- Insight-type specific adjustments
|
||
|
|
- Specialized calculations for forecasting and optimization insights
|
||
|
|
|
||
|
|
3. **Impact Estimation**
|
||
|
|
- Cost savings quantification
|
||
|
|
- Revenue increase projections
|
||
|
|
- Waste reduction calculations
|
||
|
|
- Efficiency gain measurements
|
||
|
|
- Quality improvement tracking
|
||
|
|
|
||
|
|
4. **Feedback & Learning**
|
||
|
|
- Track application outcomes
|
||
|
|
- Compare expected vs. actual impact
|
||
|
|
- Calculate success rates
|
||
|
|
- Enable model improvement
|
||
|
|
|
||
|
|
5. **Orchestration Integration**
|
||
|
|
- Pre-orchestration insight gathering
|
||
|
|
- Actionable insight filtering
|
||
|
|
- Categorized recommendations for workflow phases
|
||
|
|
|
||
|
|
## Architecture
|
||
|
|
|
||
|
|
### Database Models
|
||
|
|
|
||
|
|
- **AIInsight**: Core insights table with classification, confidence, impact metrics
|
||
|
|
- **InsightFeedback**: Feedback tracking for closed-loop learning
|
||
|
|
- **InsightCorrelation**: Cross-service insight relationships
|
||
|
|
|
||
|
|
### API Endpoints
|
||
|
|
|
||
|
|
```
|
||
|
|
POST /api/v1/ai-insights/tenants/{tenant_id}/insights
|
||
|
|
GET /api/v1/ai-insights/tenants/{tenant_id}/insights
|
||
|
|
GET /api/v1/ai-insights/tenants/{tenant_id}/insights/{insight_id}
|
||
|
|
PATCH /api/v1/ai-insights/tenants/{tenant_id}/insights/{insight_id}
|
||
|
|
DELETE /api/v1/ai-insights/tenants/{tenant_id}/insights/{insight_id}
|
||
|
|
|
||
|
|
GET /api/v1/ai-insights/tenants/{tenant_id}/insights/orchestration-ready
|
||
|
|
GET /api/v1/ai-insights/tenants/{tenant_id}/insights/metrics/summary
|
||
|
|
POST /api/v1/ai-insights/tenants/{tenant_id}/insights/{insight_id}/apply
|
||
|
|
POST /api/v1/ai-insights/tenants/{tenant_id}/insights/{insight_id}/feedback
|
||
|
|
POST /api/v1/ai-insights/tenants/{tenant_id}/insights/refresh
|
||
|
|
GET /api/v1/ai-insights/tenants/{tenant_id}/insights/export
|
||
|
|
```
|
||
|
|
|
||
|
|
## Installation
|
||
|
|
|
||
|
|
### Prerequisites
|
||
|
|
|
||
|
|
- Python 3.11+
|
||
|
|
- PostgreSQL 14+
|
||
|
|
- Redis 6+
|
||
|
|
|
||
|
|
### Setup
|
||
|
|
|
||
|
|
1. **Clone and navigate**:
|
||
|
|
```bash
|
||
|
|
cd services/ai_insights
|
||
|
|
```
|
||
|
|
|
||
|
|
2. **Create virtual environment**:
|
||
|
|
```bash
|
||
|
|
python -m venv venv
|
||
|
|
source venv/bin/activate # On Windows: venv\Scripts\activate
|
||
|
|
```
|
||
|
|
|
||
|
|
3. **Install dependencies**:
|
||
|
|
```bash
|
||
|
|
pip install -r requirements.txt
|
||
|
|
```
|
||
|
|
|
||
|
|
4. **Configure environment**:
|
||
|
|
```bash
|
||
|
|
cp .env.example .env
|
||
|
|
# Edit .env with your configuration
|
||
|
|
```
|
||
|
|
|
||
|
|
5. **Run migrations**:
|
||
|
|
```bash
|
||
|
|
alembic upgrade head
|
||
|
|
```
|
||
|
|
|
||
|
|
6. **Start the service**:
|
||
|
|
```bash
|
||
|
|
uvicorn app.main:app --reload
|
||
|
|
```
|
||
|
|
|
||
|
|
The service will be available at `http://localhost:8000`.
|
||
|
|
|
||
|
|
## Configuration
|
||
|
|
|
||
|
|
### Environment Variables
|
||
|
|
|
||
|
|
| Variable | Description | Default |
|
||
|
|
|----------|-------------|---------|
|
||
|
|
| `DATABASE_URL` | PostgreSQL connection string | Required |
|
||
|
|
| `REDIS_URL` | Redis connection string | Required |
|
||
|
|
| `FORECASTING_SERVICE_URL` | Forecasting service URL | `http://forecasting-service:8000` |
|
||
|
|
| `PROCUREMENT_SERVICE_URL` | Procurement service URL | `http://procurement-service:8000` |
|
||
|
|
| `PRODUCTION_SERVICE_URL` | Production service URL | `http://production-service:8000` |
|
||
|
|
| `MIN_CONFIDENCE_THRESHOLD` | Minimum confidence for insights | `60` |
|
||
|
|
| `DEFAULT_INSIGHT_TTL_DAYS` | Days before insights expire | `7` |
|
||
|
|
|
||
|
|
## Usage Examples
|
||
|
|
|
||
|
|
### Creating an Insight
|
||
|
|
|
||
|
|
```python
|
||
|
|
import httpx
|
||
|
|
|
||
|
|
insight_data = {
|
||
|
|
"tenant_id": "550e8400-e29b-41d4-a716-446655440000",
|
||
|
|
"type": "recommendation",
|
||
|
|
"priority": "high",
|
||
|
|
"category": "procurement",
|
||
|
|
"title": "Flour Price Increase Expected",
|
||
|
|
"description": "Price predicted to rise 8% in next week. Consider ordering now.",
|
||
|
|
"impact_type": "cost_savings",
|
||
|
|
"impact_value": 120.50,
|
||
|
|
"impact_unit": "euros",
|
||
|
|
"confidence": 85,
|
||
|
|
"metrics_json": {
|
||
|
|
"current_price": 1.20,
|
||
|
|
"predicted_price": 1.30,
|
||
|
|
"order_quantity": 1000
|
||
|
|
},
|
||
|
|
"actionable": True,
|
||
|
|
"recommendation_actions": [
|
||
|
|
{"label": "Order Now", "action": "create_purchase_order"},
|
||
|
|
{"label": "Review", "action": "review_forecast"}
|
||
|
|
],
|
||
|
|
"source_service": "procurement",
|
||
|
|
"source_data_id": "price_forecast_123"
|
||
|
|
}
|
||
|
|
|
||
|
|
response = httpx.post(
|
||
|
|
"http://localhost:8000/api/v1/ai-insights/tenants/550e8400-e29b-41d4-a716-446655440000/insights",
|
||
|
|
json=insight_data
|
||
|
|
)
|
||
|
|
print(response.json())
|
||
|
|
```
|
||
|
|
|
||
|
|
### Querying Insights
|
||
|
|
|
||
|
|
```python
|
||
|
|
# Get high-confidence actionable insights
|
||
|
|
response = httpx.get(
|
||
|
|
"http://localhost:8000/api/v1/ai-insights/tenants/550e8400-e29b-41d4-a716-446655440000/insights",
|
||
|
|
params={
|
||
|
|
"actionable_only": True,
|
||
|
|
"min_confidence": 80,
|
||
|
|
"priority": "high",
|
||
|
|
"page": 1,
|
||
|
|
"page_size": 20
|
||
|
|
}
|
||
|
|
)
|
||
|
|
insights = response.json()
|
||
|
|
```
|
||
|
|
|
||
|
|
### Recording Feedback
|
||
|
|
|
||
|
|
```python
|
||
|
|
feedback_data = {
|
||
|
|
"insight_id": "insight-uuid",
|
||
|
|
"action_taken": "create_purchase_order",
|
||
|
|
"success": True,
|
||
|
|
"expected_impact_value": 120.50,
|
||
|
|
"actual_impact_value": 115.30,
|
||
|
|
"result_data": {
|
||
|
|
"order_id": "PO-12345",
|
||
|
|
"actual_savings": 115.30
|
||
|
|
},
|
||
|
|
"applied_by": "user@example.com"
|
||
|
|
}
|
||
|
|
|
||
|
|
response = httpx.post(
|
||
|
|
f"http://localhost:8000/api/v1/ai-insights/tenants/{tenant_id}/insights/{insight_id}/feedback",
|
||
|
|
json=feedback_data
|
||
|
|
)
|
||
|
|
```
|
||
|
|
|
||
|
|
## Development
|
||
|
|
|
||
|
|
### Running Tests
|
||
|
|
|
||
|
|
```bash
|
||
|
|
pytest
|
||
|
|
```
|
||
|
|
|
||
|
|
### Code Quality
|
||
|
|
|
||
|
|
```bash
|
||
|
|
# Format code
|
||
|
|
black app/
|
||
|
|
|
||
|
|
# Lint
|
||
|
|
flake8 app/
|
||
|
|
|
||
|
|
# Type checking
|
||
|
|
mypy app/
|
||
|
|
```
|
||
|
|
|
||
|
|
### Creating a Migration
|
||
|
|
|
||
|
|
```bash
|
||
|
|
alembic revision --autogenerate -m "Description of changes"
|
||
|
|
alembic upgrade head
|
||
|
|
```
|
||
|
|
|
||
|
|
## Insight Types
|
||
|
|
|
||
|
|
- **optimization**: Process improvements with measurable gains
|
||
|
|
- **alert**: Warnings requiring attention
|
||
|
|
- **prediction**: Future forecasts with confidence intervals
|
||
|
|
- **recommendation**: Suggested actions with estimated impact
|
||
|
|
- **insight**: General data-driven observations
|
||
|
|
- **anomaly**: Unusual patterns detected in data
|
||
|
|
|
||
|
|
## Priority Levels
|
||
|
|
|
||
|
|
- **critical**: Immediate action required (e.g., stockout risk)
|
||
|
|
- **high**: Action recommended soon (e.g., price opportunity)
|
||
|
|
- **medium**: Consider acting (e.g., efficiency improvement)
|
||
|
|
- **low**: Informational (e.g., pattern observation)
|
||
|
|
|
||
|
|
## Categories
|
||
|
|
|
||
|
|
- **forecasting**: Demand predictions and patterns
|
||
|
|
- **inventory**: Stock management and optimization
|
||
|
|
- **production**: Manufacturing efficiency and scheduling
|
||
|
|
- **procurement**: Purchasing and supplier management
|
||
|
|
- **customer**: Customer behavior and satisfaction
|
||
|
|
- **cost**: Cost optimization opportunities
|
||
|
|
- **quality**: Quality improvements
|
||
|
|
- **efficiency**: Process efficiency gains
|
||
|
|
|
||
|
|
## Integration with Other Services
|
||
|
|
|
||
|
|
### Forecasting Service
|
||
|
|
|
||
|
|
- Receives forecast accuracy insights
|
||
|
|
- Pattern detection alerts
|
||
|
|
- Demand anomaly notifications
|
||
|
|
|
||
|
|
### Procurement Service
|
||
|
|
|
||
|
|
- Price forecast recommendations
|
||
|
|
- Supplier performance alerts
|
||
|
|
- Safety stock optimization
|
||
|
|
|
||
|
|
### Production Service
|
||
|
|
|
||
|
|
- Yield prediction insights
|
||
|
|
- Schedule optimization recommendations
|
||
|
|
- Equipment maintenance alerts
|
||
|
|
|
||
|
|
### Orchestrator Service
|
||
|
|
|
||
|
|
- Pre-orchestration insight gathering
|
||
|
|
- Actionable recommendation filtering
|
||
|
|
- Feedback recording for applied insights
|
||
|
|
|
||
|
|
## API Documentation
|
||
|
|
|
||
|
|
Once the service is running, interactive API documentation is available at:
|
||
|
|
|
||
|
|
- Swagger UI: `http://localhost:8000/docs`
|
||
|
|
- ReDoc: `http://localhost:8000/redoc`
|
||
|
|
|
||
|
|
## Monitoring
|
||
|
|
|
||
|
|
### Health Check
|
||
|
|
|
||
|
|
```bash
|
||
|
|
curl http://localhost:8000/health
|
||
|
|
```
|
||
|
|
|
||
|
|
### Metrics Endpoint
|
||
|
|
|
||
|
|
```bash
|
||
|
|
curl http://localhost:8000/api/v1/ai-insights/tenants/{tenant_id}/insights/metrics/summary
|
||
|
|
```
|
||
|
|
|
||
|
|
## License
|
||
|
|
|
||
|
|
Copyright © 2025 Bakery IA. All rights reserved.
|
||
|
|
|
||
|
|
## Support
|
||
|
|
|
||
|
|
For issues and questions, please contact the development team or create an issue in the project repository.
|