updated to document the database structure.

This commit is contained in:
Quality System Admin
2025-11-03 22:37:30 +02:00
parent 59cb9bcc9f
commit f9dfc011f2
4 changed files with 807 additions and 0 deletions

View File

@@ -0,0 +1,789 @@
# Database Structure Documentation
## Overview
This document provides a comprehensive overview of the **trasabilitate** database structure, including all tables, their fields, purposes, and which application pages/modules use them.
**Database**: `trasabilitate`
**Type**: MariaDB 11.8.3
**Character Set**: utf8mb4
**Collation**: utf8mb4_uca1400_ai_ci
## Table Categories
### 1. User Management & Access Control
- [users](#users) - User accounts and authentication
- [roles](#roles) - User role definitions
- [role_hierarchy](#role_hierarchy) - Role levels and inheritance
- [permissions](#permissions) - Granular permission definitions
- [role_permissions](#role_permissions) - Permission assignments to roles
- [permission_audit_log](#permission_audit_log) - Audit trail for permission changes
### 2. Quality Management (Production Scanning)
- [scan1_orders](#scan1_orders) - Phase 1 quality scans (quilting preparation)
- [scanfg_orders](#scanfg_orders) - Final goods quality scans
### 3. Daily Mirror (Business Intelligence)
- [dm_articles](#dm_articles) - Product catalog
- [dm_customers](#dm_customers) - Customer master data
- [dm_machines](#dm_machines) - Production equipment
- [dm_orders](#dm_orders) - Sales orders
- [dm_production_orders](#dm_production_orders) - Manufacturing orders
- [dm_deliveries](#dm_deliveries) - Shipment tracking
- [dm_daily_summary](#dm_daily_summary) - Daily KPI aggregations
### 4. Labels & Warehouse
- [order_for_labels](#order_for_labels) - Label printing queue
- [warehouse_locations](#warehouse_locations) - Storage location master
---
## Detailed Table Descriptions
### users
**Purpose**: Stores user accounts, credentials, and access permissions
**Structure**:
| Field | Type | Null | Key | Description |
|----------|--------------|------|-----|-------------|
| id | int(11) | NO | PRI | Unique user ID |
| username | varchar(50) | NO | UNI | Login username |
| password | varchar(255) | NO | | Password (hashed) |
| role | varchar(50) | NO | | User role (superadmin, admin, manager, worker) |
| email | varchar(255) | YES | | Email address |
| modules | text | YES | | Accessible modules (JSON array) |
**Access Levels**:
- **superadmin** (Level 100): Full system access
- **admin** (Level 90): Administrative access
- **manager** (Level 70): Module management
- **worker** (Level 50): Basic operations
**Used By**:
- **Pages**: Login (`/`), Dashboard (`/dashboard`), Settings (`/settings`)
- **Routes**: `login()`, `dashboard()`, `get_users()`, `create_user()`, `edit_user()`, `delete_user()`
- **Access Control**: All pages via `@login_required`, role checks
**Relationships**:
- **role** references **roles.name**
- **modules** contains JSON array of accessible modules
---
### roles
**Purpose**: Defines available user roles and their access levels
**Structure**:
| Field | Type | Null | Key | Description |
|--------------|--------------|------|-----|-------------|
| id | int(11) | NO | PRI | Unique role ID |
| name | varchar(100) | NO | UNI | Role name |
| access_level | varchar(50) | NO | | Access level description |
| description | text | YES | | Role description |
| created_at | timestamp | YES | | Creation timestamp |
**Default Roles**:
1. **superadmin**: Full system access, all permissions
2. **admin**: Can manage users and settings
3. **manager**: Can oversee production and quality
4. **worker**: Can perform scans and basic operations
**Used By**:
- **Pages**: Settings (`/settings`)
- **Routes**: Role management, user creation
---
### role_hierarchy
**Purpose**: Defines hierarchical role structure with levels and inheritance
**Structure**:
| Field | Type | Null | Key | Description |
|-------------------|--------------|------|-----|-------------|
| id | int(11) | NO | PRI | Unique ID |
| role_name | varchar(100) | NO | UNI | Role identifier |
| role_display_name | varchar(255) | NO | | Display name |
| level | int(11) | NO | | Hierarchy level (100=highest) |
| parent_role | varchar(100) | YES | | Parent role in hierarchy |
| description | text | YES | | Role description |
| is_active | tinyint(1) | YES | | Active status |
| created_at | timestamp | YES | | Creation timestamp |
**Hierarchy Levels**:
- **100**: superadmin (root)
- **90**: admin
- **70**: manager
- **50**: worker
**Used By**:
- **Pages**: Settings (`/settings`), Role Management
- **Routes**: Permission management, role assignment
---
### permissions
**Purpose**: Defines granular permissions for pages, sections, and actions
**Structure**:
| Field | Type | Null | Key | Description |
|----------------|--------------|------|-----|-------------|
| id | int(11) | NO | PRI | Unique permission ID |
| permission_key | varchar(255) | NO | UNI | Unique key (page.section.action) |
| page | varchar(100) | NO | | Page identifier |
| page_name | varchar(255) | NO | | Display page name |
| section | varchar(100) | NO | | Section identifier |
| section_name | varchar(255) | NO | | Display section name |
| action | varchar(50) | NO | | Action (view, create, edit, delete) |
| action_name | varchar(255) | NO | | Display action name |
| description | text | YES | | Permission description |
| created_at | timestamp | YES | | Creation timestamp |
**Permission Structure**: `page.section.action`
- Example: `quality.scan1.view`, `daily_mirror.orders.edit`
**Used By**:
- **Pages**: Settings (`/settings`), Permission Management
- **Routes**: Permission checks via decorators
---
### role_permissions
**Purpose**: Maps permissions to roles (many-to-many relationship)
**Structure**:
| Field | Type | Null | Key | Description |
|---------------|--------------|------|-----|-------------|
| id | int(11) | NO | PRI | Unique mapping ID |
| role_name | varchar(100) | NO | MUL | Role identifier |
| permission_id | int(11) | NO | MUL | Permission ID |
| granted_at | timestamp | YES | | Grant timestamp |
| granted_by | varchar(100) | YES | | User who granted |
**Used By**:
- **Pages**: Settings (`/settings`), Permission Management
- **Routes**: `check_permission()`, permission decorators
- **Access Control**: All protected pages
---
### permission_audit_log
**Purpose**: Tracks all permission changes for security auditing
**Structure**:
| Field | Type | Null | Key | Description |
|----------------|--------------|------|-----|-------------|
| id | int(11) | NO | PRI | Unique log ID |
| action | varchar(50) | NO | | Action (grant, revoke, modify) |
| role_name | varchar(100) | YES | | Affected role |
| permission_key | varchar(255) | YES | | Affected permission |
| user_id | varchar(100) | YES | | User who performed action |
| timestamp | timestamp | YES | | Action timestamp |
| details | text | YES | | Additional details (JSON) |
| ip_address | varchar(45) | YES | | IP address of user |
**Used By**:
- **Pages**: Audit logs (future feature)
- **Routes**: Automatically logged by permission management functions
---
### scan1_orders
**Purpose**: Stores Phase 1 (T1) quality scan data for quilting preparation
**Structure**:
| Field | Type | Null | Key | Description |
|-------------------|-------------|------|-----|-------------|
| Id | int(11) | NO | PRI | Unique scan ID |
| operator_code | varchar(4) | NO | | Worker identifier |
| CP_full_code | varchar(15) | NO | | Full production order code |
| OC1_code | varchar(4) | NO | | Customer order code 1 |
| OC2_code | varchar(4) | NO | | Customer order code 2 |
| CP_base_code | varchar(10) | YES | | Base production code (generated) |
| quality_code | int(3) | NO | | Quality check result |
| date | date | NO | | Scan date |
| time | time | NO | | Scan time |
| approved_quantity | int(11) | YES | | Approved items |
| rejected_quantity | int(11) | YES | | Rejected items |
**Quality Codes**:
- **0**: Rejected
- **1**: Approved
**Used By**:
- **Pages**:
- Quality Scan 1 (`/scan1`)
- Quality Reports (`/reports_for_quality`)
- Daily Reports (`/daily_scan`)
- Production Scan 1 (`/productie_scan_1`)
- **Routes**: `scan1()`, `insert_scan1()`, `reports_for_quality()`, `daily_scan()`, `productie_scan_1()`
- **Dashboard**: Phase 1 statistics widget
**Related Tables**:
- Linked to **dm_production_orders** via **CP_full_code**
---
### scanfg_orders
**Purpose**: Stores final goods (FG) quality scan data
**Structure**:
| Field | Type | Null | Key | Description |
|-------------------|-------------|------|-----|-------------|
| Id | int(11) | NO | PRI | Unique scan ID |
| operator_code | varchar(4) | NO | | Worker identifier |
| CP_full_code | varchar(15) | NO | | Full production order code |
| OC1_code | varchar(4) | NO | | Customer order code 1 |
| OC2_code | varchar(4) | NO | | Customer order code 2 |
| CP_base_code | varchar(10) | YES | | Base production code (generated) |
| quality_code | int(3) | NO | | Quality check result |
| date | date | NO | | Scan date |
| time | time | NO | | Scan time |
| approved_quantity | int(11) | YES | | Approved items |
| rejected_quantity | int(11) | YES | | Rejected items |
**Used By**:
- **Pages**:
- Quality Scan FG (`/scanfg`)
- Quality Reports FG (`/reports_for_quality_fg`)
- Daily Scan FG (`/daily_scan_fg`)
- Production Scan FG (`/productie_scan_fg`)
- **Routes**: `scanfg()`, `insert_scanfg()`, `reports_for_quality_fg()`, `daily_scan_fg()`, `productie_scan_fg()`
- **Dashboard**: Final goods statistics widget
**Related Tables**:
- Linked to **dm_production_orders** via **CP_full_code**
---
### order_for_labels
**Purpose**: Manages label printing queue for production orders
**Structure**:
| Field | Type | Null | Key | Description |
|-------------------------|-------------|------|-----|-------------|
| id | bigint(20) | NO | PRI | Unique ID |
| comanda_productie | varchar(15) | NO | | Production order |
| cod_articol | varchar(15) | YES | | Article code |
| descr_com_prod | varchar(50) | NO | | Description |
| cantitate | int(3) | NO | | Quantity |
| com_achiz_client | varchar(25) | YES | | Customer order |
| nr_linie_com_client | int(3) | YES | | Order line number |
| customer_name | varchar(50) | YES | | Customer name |
| customer_article_number | varchar(25) | YES | | Customer article # |
| open_for_order | varchar(25) | YES | | Open order reference |
| line_number | int(3) | YES | | Line number |
| created_at | timestamp | YES | | Creation timestamp |
| updated_at | timestamp | YES | | Update timestamp |
| printed_labels | int(1) | YES | | Print status (0/1) |
| data_livrare | date | YES | | Delivery date |
| dimensiune | varchar(20) | YES | | Dimensions |
**Print Status**:
- **0**: Not printed
- **1**: Printed
**Used By**:
- **Pages**:
- Label Printing (`/print`)
- Print All Labels (`/print_all`)
- **Routes**: `print_module()`, `print_all()`, `get_available_labels()`
- **Module**: Labels Module
**Related Tables**:
- **comanda_productie** references **dm_production_orders.production_order**
---
### warehouse_locations
**Purpose**: Stores warehouse storage location definitions
**Structure**:
| Field | Type | Null | Key | Description |
|---------------|--------------|------|-----|-------------|
| id | bigint(20) | NO | PRI | Unique location ID |
| location_code | varchar(12) | NO | UNI | Location identifier |
| size | int(11) | YES | | Storage capacity |
| description | varchar(250) | YES | | Location description |
**Used By**:
- **Pages**: Warehouse Management (`/warehouse`)
- **Module**: Warehouse Module
- **Routes**: Warehouse location management
---
### dm_articles
**Purpose**: Product catalog and article master data
**Structure**:
| Field | Type | Null | Key | Description |
|---------------------|---------------|------|-----|-------------|
| id | int(11) | NO | PRI | Unique article ID |
| article_code | varchar(50) | NO | UNI | Article code |
| article_description | text | NO | | Full description |
| product_group | varchar(100) | YES | MUL | Product group |
| classification | varchar(100) | YES | MUL | Classification |
| unit_of_measure | varchar(20) | YES | | Unit (PC, KG, M) |
| standard_price | decimal(10,2) | YES | | Standard price |
| standard_time | decimal(8,2) | YES | | Production time |
| active | tinyint(1) | YES | | Active status |
| created_at | timestamp | YES | | Creation timestamp |
| updated_at | timestamp | YES | | Update timestamp |
**Used By**:
- **Pages**: Daily Mirror - Articles (`/daily_mirror/articles`)
- **Module**: Daily Mirror BI Module
- **Routes**: Article management, reporting
- **Dashboard**: Product statistics
**Related Tables**:
- Referenced by **dm_orders**, **dm_production_orders**, **dm_deliveries**
---
### dm_customers
**Purpose**: Customer master data and relationship management
**Structure**:
| Field | Type | Null | Key | Description |
|----------------|---------------|------|-----|-------------|
| id | int(11) | NO | PRI | Unique customer ID |
| customer_code | varchar(50) | NO | UNI | Customer code |
| customer_name | varchar(255) | NO | MUL | Customer name |
| customer_group | varchar(100) | YES | MUL | Customer group |
| country | varchar(50) | YES | | Country |
| currency | varchar(3) | YES | | Currency (RON, EUR) |
| payment_terms | varchar(100) | YES | | Payment terms |
| credit_limit | decimal(15,2) | YES | | Credit limit |
| active | tinyint(1) | YES | | Active status |
| created_at | timestamp | YES | | Creation timestamp |
| updated_at | timestamp | YES | | Update timestamp |
**Used By**:
- **Pages**: Daily Mirror - Customers (`/daily_mirror/customers`)
- **Module**: Daily Mirror BI Module
- **Routes**: Customer management, reporting
- **Dashboard**: Customer statistics
**Related Tables**:
- Referenced by **dm_orders**, **dm_production_orders**, **dm_deliveries**
---
### dm_machines
**Purpose**: Production equipment and machine master data
**Structure**:
| Field | Type | Null | Key | Description |
|-------------------|--------------|------|-----|-------------|
| id | int(11) | NO | PRI | Unique machine ID |
| machine_code | varchar(50) | NO | UNI | Machine code |
| machine_name | varchar(255) | YES | | Machine name |
| machine_type | varchar(50) | YES | MUL | Type (Quilting, Sewing) |
| machine_number | varchar(20) | YES | | Machine number |
| department | varchar(100) | YES | MUL | Department |
| capacity_per_hour | decimal(8,2) | YES | | Hourly capacity |
| active | tinyint(1) | YES | | Active status |
| created_at | timestamp | YES | | Creation timestamp |
| updated_at | timestamp | YES | | Update timestamp |
**Machine Types**:
- **Quilting**: Quilting machines
- **Sewing**: Sewing machines
- **Cutting**: Cutting equipment
**Used By**:
- **Pages**: Daily Mirror - Machines (`/daily_mirror/machines`)
- **Module**: Daily Mirror BI Module
- **Routes**: Machine management, production planning
**Related Tables**:
- Referenced by **dm_production_orders**
---
### dm_orders
**Purpose**: Sales orders and order line management
**Structure**:
| Field | Type | Null | Key | Description |
|---------------------|--------------|------|-----|-------------|
| id | int(11) | NO | PRI | Unique ID |
| order_id | varchar(50) | NO | MUL | Order number |
| order_line | varchar(120) | NO | UNI | Unique order line |
| line_number | varchar(20) | YES | | Line number |
| client_order_line | varchar(100) | YES | | Customer line ref |
| customer_code | varchar(50) | YES | MUL | Customer code |
| customer_name | varchar(255) | YES | | Customer name |
| article_code | varchar(50) | YES | MUL | Article code |
| article_description | text | YES | | Article description |
| quantity_requested | int(11) | YES | | Ordered quantity |
| balance | int(11) | YES | | Remaining quantity |
| unit_of_measure | varchar(20) | YES | | Unit |
| delivery_date | date | YES | MUL | Delivery date |
| order_date | date | YES | | Order date |
| order_status | varchar(50) | YES | MUL | Order status |
| article_status | varchar(50) | YES | | Article status |
| priority | varchar(20) | YES | | Priority level |
| product_group | varchar(100) | YES | | Product group |
| production_order | varchar(50) | YES | | Linked prod order |
| production_status | varchar(50) | YES | | Production status |
| model | varchar(100) | YES | | Model/design |
| closed | varchar(10) | YES | | Closed status |
| created_at | timestamp | YES | | Creation timestamp |
| updated_at | timestamp | YES | | Update timestamp |
**Order Status Values**:
- **Open**: Active order
- **In Production**: Manufacturing started
- **Completed**: Finished
- **Shipped**: Delivered
**Used By**:
- **Pages**: Daily Mirror - Orders (`/daily_mirror/orders`)
- **Module**: Daily Mirror BI Module
- **Routes**: Order management, reporting, dashboard
- **Dashboard**: Order statistics and KPIs
**Related Tables**:
- **customer_code** references **dm_customers.customer_code**
- **article_code** references **dm_articles.article_code**
- **production_order** references **dm_production_orders.production_order**
---
### dm_production_orders
**Purpose**: Manufacturing orders and production tracking
**Structure**:
| Field | Type | Null | Key | Description |
|-----------------------|---------------|------|-----|-------------|
| id | int(11) | NO | PRI | Unique ID |
| production_order | varchar(50) | NO | MUL | Production order # |
| production_order_line | varchar(120) | NO | UNI | Unique line |
| line_number | varchar(20) | YES | | Line number |
| open_for_order_line | varchar(100) | YES | | Sales order line |
| client_order_line | varchar(100) | YES | | Customer line ref |
| customer_code | varchar(50) | YES | MUL | Customer code |
| customer_name | varchar(200) | YES | | Customer name |
| article_code | varchar(50) | YES | MUL | Article code |
| article_description | varchar(255) | YES | | Description |
| quantity_requested | int(11) | YES | | Quantity to produce |
| unit_of_measure | varchar(20) | YES | | Unit |
| delivery_date | date | YES | MUL | Delivery date |
| opening_date | date | YES | | Start date |
| closing_date | date | YES | | Completion date |
| data_planificare | date | YES | | Planning date |
| production_status | varchar(50) | YES | MUL | Status |
| machine_code | varchar(50) | YES | | Assigned machine |
| machine_type | varchar(50) | YES | | Machine type |
| machine_number | varchar(50) | YES | | Machine number |
| end_of_quilting | date | YES | | Quilting end date |
| end_of_sewing | date | YES | | Sewing end date |
| phase_t1_prepared | varchar(50) | YES | | T1 phase status |
| t1_operator_name | varchar(100) | YES | | T1 operator |
| t1_registration_date | datetime | YES | | T1 scan date |
| phase_t2_cut | varchar(50) | YES | | T2 phase status |
| t2_operator_name | varchar(100) | YES | | T2 operator |
| t2_registration_date | datetime | YES | | T2 scan date |
| phase_t3_sewing | varchar(50) | YES | | T3 phase status |
| t3_operator_name | varchar(100) | YES | | T3 operator |
| t3_registration_date | datetime | YES | | T3 scan date |
| design_number | int(11) | YES | | Design reference |
| classification | varchar(50) | YES | | Classification |
| model_description | varchar(255) | YES | | Model description |
| model_lb2 | varchar(100) | YES | | LB2 model |
| needle_position | decimal(10,2) | YES | | Needle position |
| needle_row | varchar(50) | YES | | Needle row |
| priority | int(11) | YES | | Priority (0-10) |
| created_at | timestamp | YES | | Creation timestamp |
| updated_at | timestamp | YES | | Update timestamp |
**Production Status Values**:
- **Planned**: Scheduled
- **In Progress**: Manufacturing
- **T1 Complete**: Phase 1 done
- **T2 Complete**: Phase 2 done
- **T3 Complete**: Phase 3 done
- **Finished**: Completed
**Production Phases**:
- **T1**: Quilting preparation
- **T2**: Cutting
- **T3**: Sewing/Assembly
**Used By**:
- **Pages**:
- Daily Mirror - Production Orders (`/daily_mirror/production_orders`)
- Quality Scan pages (linked via production_order)
- Label printing (comanda_productie)
- **Module**: Daily Mirror BI Module
- **Routes**: Production management, quality scans, reporting
- **Dashboard**: Production statistics and phase tracking
**Related Tables**:
- **customer_code** references **dm_customers.customer_code**
- **article_code** references **dm_articles.article_code**
- **machine_code** references **dm_machines.machine_code**
- Referenced by **scan1_orders**, **scanfg_orders**, **order_for_labels**
---
### dm_deliveries
**Purpose**: Shipment and delivery tracking
**Structure**:
| Field | Type | Null | Key | Description |
|---------------------|---------------|------|-----|-------------|
| id | int(11) | NO | PRI | Unique ID |
| shipment_id | varchar(50) | NO | | Shipment number |
| order_id | varchar(50) | YES | MUL | Order reference |
| client_order_line | varchar(100) | YES | | Customer line ref |
| customer_code | varchar(50) | YES | MUL | Customer code |
| customer_name | varchar(255) | YES | | Customer name |
| article_code | varchar(50) | YES | MUL | Article code |
| article_description | text | YES | | Description |
| quantity_delivered | int(11) | YES | | Delivered quantity |
| shipment_date | date | YES | MUL | Shipment date |
| delivery_date | date | YES | MUL | Delivery date |
| delivery_status | varchar(50) | YES | MUL | Status |
| total_value | decimal(12,2) | YES | | Shipment value |
| created_at | timestamp | YES | | Creation timestamp |
| updated_at | timestamp | YES | | Update timestamp |
**Delivery Status Values**:
- **Pending**: Awaiting shipment
- **Shipped**: In transit
- **Delivered**: Completed
- **Returned**: Returned by customer
**Used By**:
- **Pages**: Daily Mirror - Deliveries (`/daily_mirror/deliveries`)
- **Module**: Daily Mirror BI Module
- **Routes**: Delivery tracking, reporting
- **Dashboard**: Delivery statistics
**Related Tables**:
- **order_id** references **dm_orders.order_id**
- **customer_code** references **dm_customers.customer_code**
- **article_code** references **dm_articles.article_code**
---
### dm_daily_summary
**Purpose**: Daily aggregated KPIs and performance metrics
**Structure**:
| Field | Type | Null | Key | Description |
|------------------------|---------------|------|-----|-------------|
| id | int(11) | NO | PRI | Unique ID |
| report_date | date | NO | UNI | Summary date |
| orders_received | int(11) | YES | | New orders |
| orders_quantity | int(11) | YES | | Total quantity |
| orders_value | decimal(15,2) | YES | | Total value |
| unique_customers | int(11) | YES | | Customer count |
| production_launched | int(11) | YES | | Started orders |
| production_finished | int(11) | YES | | Completed orders |
| production_in_progress | int(11) | YES | | Active orders |
| quilting_completed | int(11) | YES | | Quilting done |
| sewing_completed | int(11) | YES | | Sewing done |
| t1_scans_total | int(11) | YES | | T1 total scans |
| t1_scans_approved | int(11) | YES | | T1 approved |
| t1_approval_rate | decimal(5,2) | YES | | T1 rate (%) |
| t2_scans_total | int(11) | YES | | T2 total scans |
| t2_scans_approved | int(11) | YES | | T2 approved |
| t2_approval_rate | decimal(5,2) | YES | | T2 rate (%) |
| t3_scans_total | int(11) | YES | | T3 total scans |
| t3_scans_approved | int(11) | YES | | T3 approved |
| t3_approval_rate | decimal(5,2) | YES | | T3 rate (%) |
| orders_shipped | int(11) | YES | | Shipped orders |
| orders_delivered | int(11) | YES | | Delivered orders |
| orders_returned | int(11) | YES | | Returns |
| delivery_value | decimal(15,2) | YES | | Delivery value |
| on_time_deliveries | int(11) | YES | | On-time count |
| late_deliveries | int(11) | YES | | Late count |
| active_operators | int(11) | YES | | Active workers |
| created_at | timestamp | YES | | Creation timestamp |
| updated_at | timestamp | YES | | Update timestamp |
**Calculation**: Automatically updated daily via batch process
**Used By**:
- **Pages**: Daily Mirror - Dashboard (`/daily_mirror`)
- **Module**: Daily Mirror BI Module
- **Routes**: Daily reporting, KPI dashboard
- **Dashboard**: Main KPI widgets
**Data Source**: Aggregated from all other tables
---
## Table Relationships
### Entity Relationship Diagram (Text)
```
users
├── role → roles.name
└── modules (JSON array)
roles
└── Used by: users, role_hierarchy
role_hierarchy
├── role_name → roles.name
└── parent_role → role_hierarchy.role_name
permissions
└── Used by: role_permissions
role_permissions
├── role_name → role_hierarchy.role_name
└── permission_id → permissions.id
dm_articles
├── Used by: dm_orders.article_code
├── Used by: dm_production_orders.article_code
└── Used by: dm_deliveries.article_code
dm_customers
├── Used by: dm_orders.customer_code
├── Used by: dm_production_orders.customer_code
└── Used by: dm_deliveries.customer_code
dm_machines
└── Used by: dm_production_orders.machine_code
dm_orders
├── customer_code → dm_customers.customer_code
├── article_code → dm_articles.article_code
└── production_order → dm_production_orders.production_order
dm_production_orders
├── customer_code → dm_customers.customer_code
├── article_code → dm_articles.article_code
├── machine_code → dm_machines.machine_code
├── Used by: scan1_orders.CP_full_code
├── Used by: scanfg_orders.CP_full_code
└── Used by: order_for_labels.comanda_productie
dm_deliveries
├── order_id → dm_orders.order_id
├── customer_code → dm_customers.customer_code
└── article_code → dm_articles.article_code
scan1_orders
└── CP_full_code → dm_production_orders.production_order
scanfg_orders
└── CP_full_code → dm_production_orders.production_order
order_for_labels
└── comanda_productie → dm_production_orders.production_order
dm_daily_summary
└── Aggregated from: all other tables
```
---
## Pages and Table Usage Matrix
| Page/Module | Tables Used |
|-------------|-------------|
| **Login** (`/`) | users |
| **Dashboard** (`/dashboard`) | users, scan1_orders, scanfg_orders, dm_production_orders, dm_orders |
| **Settings** (`/settings`) | users, roles, role_hierarchy, permissions, role_permissions |
| **Quality Scan 1** (`/scan1`) | scan1_orders, dm_production_orders |
| **Quality Scan FG** (`/scanfg`) | scanfg_orders, dm_production_orders |
| **Quality Reports** (`/reports_for_quality`) | scan1_orders |
| **Quality Reports FG** (`/reports_for_quality_fg`) | scanfg_orders |
| **Label Printing** (`/print`) | order_for_labels, dm_production_orders |
| **Warehouse** (`/warehouse`) | warehouse_locations |
| **Daily Mirror** (`/daily_mirror`) | dm_daily_summary, dm_orders, dm_production_orders, dm_customers |
| **DM - Articles** | dm_articles |
| **DM - Customers** | dm_customers |
| **DM - Machines** | dm_machines |
| **DM - Orders** | dm_orders, dm_customers, dm_articles |
| **DM - Production** | dm_production_orders, dm_customers, dm_articles, dm_machines |
| **DM - Deliveries** | dm_deliveries, dm_customers, dm_articles |
---
## Indexes and Performance
### Primary Indexes
- All tables have **PRIMARY KEY** on `id` field
### Unique Indexes
- **users**: username
- **dm_articles**: article_code
- **dm_customers**: customer_code
- **dm_machines**: machine_code
- **dm_orders**: order_line
- **dm_production_orders**: production_order_line
- **warehouse_locations**: location_code
- **permissions**: permission_key
- **role_hierarchy**: role_name
- **dm_daily_summary**: report_date
### Foreign Key Indexes
- **dm_orders**: customer_code, article_code, delivery_date, order_status
- **dm_production_orders**: customer_code, article_code, delivery_date, production_status
- **dm_deliveries**: order_id, customer_code, article_code, shipment_date, delivery_date, delivery_status
- **dm_articles**: product_group, classification
- **dm_customers**: customer_name, customer_group
- **dm_machines**: machine_type, department
- **role_permissions**: role_name, permission_id
---
## Database Maintenance
### Backup Strategy
- **Manual Backups**: Via Settings page → Database Backup Management
- **Automatic Backups**: Scheduled daily backups (configurable)
- **Backup Location**: `/srv/quality_app/backups/`
- **Retention**: 30 days (configurable)
See: [DATABASE_BACKUP_GUIDE.md](DATABASE_BACKUP_GUIDE.md)
### Data Cleanup
- **scan1_orders, scanfg_orders**: Consider archiving data older than 2 years
- **permission_audit_log**: Archive quarterly
- **dm_daily_summary**: Keep all historical data
### Performance Optimization
1. Regularly analyze slow queries
2. Keep indexes updated: `OPTIMIZE TABLE table_name`
3. Monitor table sizes: `SELECT table_name, ROUND(((data_length + index_length) / 1024 / 1024), 2) AS "Size (MB)" FROM information_schema.TABLES WHERE table_schema = "trasabilitate"`
---
## Future Enhancements
### Planned Tables
- **production_schedule**: Production planning calendar
- **quality_issues**: Defect tracking and analysis
- **inventory_movements**: Stock movement tracking
- **operator_performance**: Worker productivity metrics
### Planned Improvements
- Add more composite indexes for frequently joined tables
- Implement table partitioning for scan tables (by date)
- Create materialized views for complex reports
- Add full-text search indexes for descriptions
---
## Related Documentation
- [PRODUCTION_STARTUP_GUIDE.md](PRODUCTION_STARTUP_GUIDE.md) - Application management
- [DATABASE_BACKUP_GUIDE.md](DATABASE_BACKUP_GUIDE.md) - Backup procedures
- [DATABASE_RESTORE_GUIDE.md](DATABASE_RESTORE_GUIDE.md) - Restore and migration
- [DOCKER_DEPLOYMENT.md](../old%20code/DOCKER_DEPLOYMENT.md) - Deployment guide
---
**Last Updated**: November 3, 2025
**Database Version**: MariaDB 11.8.3
**Application Version**: 1.0.0
**Total Tables**: 17

View File

@@ -31,6 +31,15 @@ This folder contains all development and deployment documentation for the Qualit
- Restore troubleshooting
- Safety features and confirmations
### Database Documentation
- **[DATABASE_STRUCTURE.md](./DATABASE_STRUCTURE.md)** - Complete database structure documentation
- All 17 tables with field definitions
- Table purposes and descriptions
- Page-to-table usage matrix
- Relationships and foreign keys
- Indexes and performance notes
## Quick Links
### Application Structure

View File

@@ -558,3 +558,7 @@
192.168.0.132 - - [03/Nov/2025:22:19:45 +0200] "GET /warehouse HTTP/1.1" 200 2987 "https://quality.moto-adv.com/dashboard" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/142.0.0.0 Safari/537.36" 8615 µs
192.168.0.132 - - [03/Nov/2025:22:19:50 +0200] "GET /etichete HTTP/1.1" 200 3204 "https://quality.moto-adv.com/dashboard" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/142.0.0.0 Safari/537.36" 9249 µs
192.168.0.132 - - [03/Nov/2025:22:20:06 +0200] "GET /upload_data HTTP/1.1" 200 11226 "https://quality.moto-adv.com/etichete" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/142.0.0.0 Safari/537.36" 22296 µs
192.168.0.132 - - [03/Nov/2025:22:26:24 +0200] "GET / HTTP/1.1" 200 1688 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/142.0.0.0 Safari/537.36" 8746 µs
192.168.0.132 - - [03/Nov/2025:22:26:31 +0200] "POST / HTTP/1.1" 302 207 "https://quality.moto-adv.com/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/142.0.0.0 Safari/537.36" 10914 µs
192.168.0.132 - - [03/Nov/2025:22:26:31 +0200] "GET /dashboard HTTP/1.1" 200 3827 "https://quality.moto-adv.com/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/142.0.0.0 Safari/537.36" 2747 µs
192.168.0.132 - - [03/Nov/2025:22:26:39 +0200] "GET /daily_mirror/main HTTP/1.1" 200 10549 "https://quality.moto-adv.com/dashboard" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/142.0.0.0 Safari/537.36" 19051 µs

View File

@@ -1742,3 +1742,8 @@ Backup directory ensured: /srv/quality_app/backups
Backup directory ensured: /srv/quality_app/backups
Backup directory ensured: /srv/quality_app/backups
Session user: superadmin superadmin
All form data received: {'username': 'superadmin', 'password': 'Vanessa_13/05'}
Raw form input: 'superadmin' 'Vanessa_13/05'
External DB query result (with modules): ('superadmin', 'Vanessa_13/05', 'superadmin', 'quality,warehouse,labels,daily_mirror')
Logged in as: superadmin superadmin modules: ['quality', 'warehouse', 'labels', 'daily_mirror']
Session user: superadmin superadmin