# Instalare Quality Miercurea # user : adminviorica # parola admin : 7aTwBPA7Z6bZ # folder de instalare : /opt/quality-app # multiple request are blocking the socket # Database Visual Structure - Trasabilitate Quality App **Database**: `trasabilitate` (MariaDB 11.8.3) **Total Tables**: 17 **Character Set**: utf8mb4 **Date**: January 10, 2026 --- ## 1. Database Schema Overview ``` ╔═══════════════════════════════════════════════════════════════════════════╗ ║ TRASABILITATE DATABASE ║ ╠═══════════════════════════════════════════════════════════════════════════╣ ║ ║ ║ ┌─────────────────────────────────────────────────────────────────────┐ ║ ║ │ USER MANAGEMENT & ACCESS CONTROL (6 tables) │ ║ ║ │ │ ║ ║ │ • users • roles │ ║ ║ │ • role_hierarchy • permissions │ ║ ║ │ • role_permissions • permission_audit_log │ ║ ║ └─────────────────────────────────────────────────────────────────────┘ ║ ║ ║ ║ ┌─────────────────────────────────────────────────────────────────────┐ ║ ║ │ QUALITY MANAGEMENT / PRODUCTION SCANNING (2 tables) │ ║ ║ │ │ ║ ║ │ • scan1_orders (Phase 1 - Quilting) │ ║ ║ │ • scanfg_orders (Final Goods Quality) │ ║ ║ └─────────────────────────────────────────────────────────────────────┘ ║ ║ ║ ║ ┌─────────────────────────────────────────────────────────────────────┐ ║ ║ │ DAILY MIRROR / BUSINESS INTELLIGENCE (7 tables) │ ║ ║ │ │ ║ ║ │ • dm_articles • dm_machines │ ║ ║ │ • dm_customers • dm_orders │ ║ ║ │ • dm_production_orders • dm_deliveries │ ║ ║ │ • dm_daily_summary │ ║ ║ └─────────────────────────────────────────────────────────────────────┘ ║ ║ ║ ║ ┌─────────────────────────────────────────────────────────────────────┐ ║ ║ │ LABELS & WAREHOUSE (2 tables) │ ║ ║ │ │ ║ ║ │ • order_for_labels • warehouse_locations │ ║ ║ └─────────────────────────────────────────────────────────────────────┘ ║ ║ ║ ╚═══════════════════════════════════════════════════════════════════════════╝ ``` --- ## 2. Entity Relationship Diagram (ERD) ``` ┌──────────────────────────────────────────────────────────────────────────────────┐ │ USER MANAGEMENT HIERARCHY │ └──────────────────────────────────────────────────────────────────────────────────┘ ┌─────────────┐ ┌──────────────┐ ┌────────────────┐ │ users │─────────│ roles │───────│ role_hierarchy │ └─────────────┘ └──────────────┘ └────────────────┘ (id) (id) (id) username name (referenced) role_name (PK) password access_level level (100-50) role ←─────────────────────┐ parent_role email │ description modules (JSON) │ │ └─── hierarchy level (100=superadmin) (90=admin) (70=manager) (50=worker) ┌────────────────┐ ┌──────────────┐ ┌─────────────────────┐ │ permissions │ │ role_ │ │ permission_ │ └────────────────┘ │ permissions │ │ audit_log │ (id) ◄──────└──────────────┘──────►└─────────────────────┘ permission_key (M:M mapping) (audit trail) page role_name ──┐ section permission_ │ action id │ description granted_at │ granted_by │ │ Tracks permission changes for security ┌──────────────────────────────────────────────────────────────────────────────────┐ │ BUSINESS INTELLIGENCE / DAILY MIRROR (DM) │ └──────────────────────────────────────────────────────────────────────────────────┘ MASTER DATA (Reference Tables) ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │ dm_articles │ │ dm_customers │ │ dm_machines │ ├──────────────┤ ├──────────────┤ ├──────────────┤ │ article_code │ │customer_code │ │machine_code │ │ description │ │customer_name │ │machine_name │ │ product_ │ │customer_group│ │machine_type │ │ group │ │country │ │department │ │ unit_of_ │ │currency │ │capacity_per_ │ │ measure │ │credit_limit │ │ hour │ └──────────────┘ └──────────────┘ └──────────────┘ △ △ △ │ │ │ │ │ │ ┌──────┴──────────────────────┴──────────────────┬──────────┐ │ │ │ │ TRANSACTIONAL DATA │ │ │ │ │ │ ┌─────────────────────┐ ┌──────────────────┴────────┐ │ │ │ dm_orders │ │ dm_production_orders │ │ │ ├─────────────────────┤ ├───────────────────────────┤ │ │ │ order_id │ │ production_order (PK) │ │ │ │ order_line │ │ production_order_line │ │ │ │ customer_code ◄─────┼────│ customer_code ◄──────────┤ │ │ │ article_code ◄──────┼────│ article_code ◄────────────┤ │ │ │ quantity_requested │ │ machine_code ◄────────────┤ │ │ │ delivery_date │ │ quantity_requested │ │ │ │ order_status │ │ opening_date │ │ │ │ production_order │────│ closing_date │ │ │ │ (links to PO) ────┘ │ production_status │ │ │ │ production_status │ │ PHASE TRACKING: │ │ │ │ created_at │ │ • phase_t1_prepared │ │ │ └─────────────────────┘ │ • phase_t2_cut │ │ │ │ • phase_t3_sewing │ │ │ │ (with operator names & │ │ │ │ registration dates) │ │ │ │ created_at │ │ │ └───────────────────────────┘ │ │ │ │ │ │ │ │ ┌──────────────────┴────────┐ │ │ │ │ │ │ ┌──────────────────┴──┐ ┌───────────┴────────┐ │ │ │ dm_deliveries │ │ QUALITY SCANS │ │ │ ├─────────────────────┤ │ │ │ │ │ shipment_id │ │ • scan1_orders │ │ │ │ order_id ◄──────────┼───────────┤ (T1/Quilting) │ │ │ │ customer_code ◄─────┼───────────┤ │ │ │ │ article_code ◄──────┼───────────┤ • scanfg_orders │ │ │ │ quantity_delivered │ │ (Final Goods) │ │ │ │ shipment_date │ │ │ │ │ │ delivery_date │ │ COMMON FIELDS: │ │ │ │ delivery_status │ │ • operator_code │ │ │ │ total_value │ │ • CP_full_code ───┼──┐ │ │ created_at │ │ • quality_code │ │ │ └─────────────────────┘ │ • approved_qty │ │ │ │ • rejected_qty │ │ │ │ • date, time │ │ │ └───────────────────┘ │ │ │ │ AGGREGATED KPIs │ │ │ │ ┌──────────────────────────┐ │ │ │ dm_daily_summary │ │ │ ├──────────────────────────┤ │ │ │ report_date (PK) │ │ │ │ orders_received │ │ │ │ production_launched │ │ │ │ production_finished │ │ │ │ t1_scans_total │ │ │ │ t1_scans_approved │ │ │ │ t1_approval_rate │ │ │ │ t2_scans_total │ │ │ │ t2_approval_rate │ │ │ │ t3_scans_total │ │ │ │ t3_approval_rate │ │ │ │ orders_shipped │ │ │ │ orders_delivered │ │ │ │ on_time_deliveries │ │ │ │ delivery_value │ │ │ │ active_operators │ │ │ │ (aggregated daily via │ │ │ │ batch process) │ │ │ └──────────────────────────┘ │ │ │ └─────────────────────────────────────────────────────────────┘ ┌──────────────────────────────────────────────────────────────────────────────────┐ │ LABELS & WAREHOUSE MANAGEMENT │ └──────────────────────────────────────────────────────────────────────────────────┘ ┌──────────────────────┐ │ order_for_labels │ ├──────────────────────┤ │ id │ │ comanda_productie │──────────────┐ │ cod_articol │ │ │ descr_com_prod │ │ │ cantitate │ │ │ com_achiz_client │ │ Links to │ nr_linie_com_client │ │ dm_production_orders │ customer_name │ │ (production_order) │ customer_article_num │ │ │ open_for_order │ │ │ printed_labels (0/1) │ │ │ data_livrare │ │ │ dimensiune │ │ │ created_at │ │ │ updated_at │ │ └──────────────────────┘ │ │ ▼ ┌──────────────────────────┐ │ dm_production_orders │ │ (production_order field) │ └──────────────────────────┘ ┌──────────────────────┐ │warehouse_locations │ ├──────────────────────┤ │ id │ │ location_code │ │ size │ │ description │ └──────────────────────┘ (standalone) ``` --- ## 3. Table Summary by Category ### 📋 User Management & Access Control (6 tables) | Table | Records | Purpose | Key Field | |-------|---------|---------|-----------| | **users** | ~50-100 | User accounts & authentication | `id`, `username` | | **roles** | 4 | Role definitions | `id`, `name` | | **role_hierarchy** | 4 | Hierarchical role structure | `role_name` | | **permissions** | 50-100+ | Granular permission definitions | `id`, `permission_key` | | **role_permissions** | 100-200 | Role→Permission mapping | `role_name`, `permission_id` | | **permission_audit_log** | 1000+ | Permission change audit trail | `id` | **Access Levels**: - 100 = superadmin (Full access) - 90 = admin (Administrative) - 70 = manager (Module management) - 50 = worker (Basic operations) --- ### 🔍 Quality Management / Production Scanning (2 tables) | Table | Records | Purpose | Key Field | |-------|---------|---------|-----------| | **scan1_orders** | 10,000+ | Phase 1 quality scans (T1/Quilting) | `Id` (PK), `CP_full_code` (FK) | | **scanfg_orders** | 5,000+ | Final goods quality scans | `Id` (PK), `CP_full_code` (FK) | **Common Fields** (both tables): - `operator_code` - Worker identifier (4 char) - `CP_full_code` - Production order reference - `quality_code` - 0=Rejected, 1=Approved - `date`, `time` - Scan timestamp - `approved_quantity`, `rejected_quantity` - Count **Production Phases**: - T1 = Quilting preparation - T2 = Cutting - T3 = Sewing/Assembly --- ### 📊 Business Intelligence / Daily Mirror (7 tables) #### Master Data Tables (Reference/Lookup) | Table | Records | Purpose | Unique Key | |-------|---------|---------|------------| | **dm_articles** | 500-2000 | Product catalog | `article_code` | | **dm_customers** | 100-500 | Customer master data | `customer_code` | | **dm_machines** | 20-50 | Production equipment | `machine_code` | #### Transactional Data Tables | Table | Records | Purpose | Unique Key | |-------|---------|---------|------------| | **dm_orders** | 5,000+ | Sales orders & line items | `order_line` | | **dm_production_orders** | 3,000+ | Manufacturing orders | `production_order_line` | | **dm_deliveries** | 5,000+ | Shipment & delivery tracking | `shipment_id` | #### Aggregated Data Table | Table | Records | Purpose | Unique Key | |-------|---------|---------|------------| | **dm_daily_summary** | 365+ | Daily KPI aggregations | `report_date` | **Daily Metrics Tracked**: - Orders (received, quantity, value) - Production (launched, finished, in-progress) - Quality (T1/T2/T3 scans & approval rates) - Deliveries (shipped, delivered, late) - Operations (active operators) --- ### 🏷️ Labels & Warehouse (2 tables) | Table | Records | Purpose | Key Field | |-------|---------|---------|-----------| | **order_for_labels** | 2,000+ | Label printing queue | `id`, `comanda_productie` (FK) | | **warehouse_locations** | 50-200 | Storage location definitions | `location_code` | --- ## 4. Data Flow & Relationships ``` USER INTERACTION │ ▼ ┌──────────────────┐ │ QUALITY SCANS │ │ (scan1_orders, │ │ scanfg_orders) │ └────────┬─────────┘ │ │ Uses ▼ ┌────────────────────────────────┐ │ dm_production_orders (T1 data) │ │ │ │ Links to: │ │ • dm_articles │ │ • dm_customers │ │ • dm_machines │ └────────┬───────────────────────┘ │ ├─────────────────────────────────┐ │ │ ▼ ▼ ┌─────────────────┐ ┌──────────────────┐ │ dm_orders │ │ order_for_labels │ │ (sales orders) │ │ (label printing) │ └────────┬────────┘ └──────────────────┘ │ ▼ ┌─────────────────┐ │ dm_deliveries │ │ (shipments) │ └─────────────────┘ │ └─ Aggregates into ▼ ┌──────────────────┐ │ dm_daily_summary │ │ (KPI Dashboard) │ └──────────────────┘ ``` --- ## 5. Key Relationships Matrix ### Foreign Key References ``` dm_orders ├─→ dm_customers.customer_code ├─→ dm_articles.article_code └─→ dm_production_orders.production_order dm_production_orders ├─→ dm_customers.customer_code ├─→ dm_articles.article_code └─→ dm_machines.machine_code dm_deliveries ├─→ dm_orders.order_id ├─→ dm_customers.customer_code └─→ dm_articles.article_code scan1_orders & scanfg_orders └─→ dm_production_orders.production_order (via CP_full_code) order_for_labels └─→ dm_production_orders.production_order (via comanda_productie) role_permissions ├─→ role_hierarchy.role_name └─→ permissions.id users └─→ roles.name (via role field) ``` --- ## 6. Database Statistics ### Table Size Estimation | Category | Count | Est. Records | Est. Size | |----------|-------|--------------|-----------| | User Management | 6 | ~5,000 | ~50 MB | | Quality Scans | 2 | ~15,000 | ~150 MB | | Daily Mirror (Master) | 3 | ~3,000 | ~30 MB | | Daily Mirror (Transactional) | 3 | ~13,000 | ~350 MB | | Daily Mirror (Aggregated) | 1 | ~365 | ~5 MB | | Labels & Warehouse | 2 | ~2,250 | ~50 MB | | **TOTAL** | **17** | **~38,000+** | **~635 MB** | --- ## 7. Critical Indexes ### Primary Keys (All Tables) - Every table has `id` or equivalent as PRIMARY KEY ### Unique Constraints ``` 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 ``` --- ## 8. Data Types Summary ### Numeric Types - `INT(11)` - IDs, counts, priorities - `BIGINT(20)` - Large IDs (order_for_labels) - `DECIMAL(10,2)` - Prices, measurements - `DECIMAL(15,2)` - Large values, order totals - `TINYINT(1)` - Boolean flags (0/1) ### String Types - `VARCHAR(4)` - Operator codes - `VARCHAR(15)` - Production codes - `VARCHAR(50)` - Article/customer/machine codes - `VARCHAR(100)` - Names, descriptions - `VARCHAR(255)` - Long fields (email, descriptions) - `TEXT` - Large text (descriptions, JSON arrays) ### Date/Time Types - `DATE` - Calendar dates - `TIME` - Time-of-day - `TIMESTAMP` - Creation/update timestamps - `DATETIME` - Precise date+time values --- ## 9. Application Modules & Table Usage ``` LOGIN PAGE (/) └─→ users DASHBOARD (/dashboard) ├─→ users ├─→ scan1_orders (statistics) ├─→ scanfg_orders (statistics) ├─→ dm_production_orders (status) └─→ dm_orders (metrics) SETTINGS (/settings) ├─→ users ├─→ roles ├─→ role_hierarchy ├─→ permissions └─→ role_permissions QUALITY SCANNING ├─ Quality Scan 1 (/scan1) │ ├─→ scan1_orders (insert/read) │ └─→ dm_production_orders (lookup) │ ├─ Quality Scan FG (/scanfg) │ ├─→ scanfg_orders (insert/read) │ └─→ dm_production_orders (lookup) │ ├─ Quality Reports (/reports_for_quality) │ └─→ scan1_orders (analytics) │ └─ Quality Reports FG (/reports_for_quality_fg) └─→ scanfg_orders (analytics) LABEL PRINTING (/print) ├─→ order_for_labels (manage queue) └─→ dm_production_orders (lookup) WAREHOUSE (/warehouse) └─→ warehouse_locations (locations) DAILY MIRROR / BI (/daily_mirror) ├─ Dashboard │ └─→ dm_daily_summary (KPIs) │ ├─ Articles (/daily_mirror/articles) │ └─→ dm_articles │ ├─ Customers (/daily_mirror/customers) │ └─→ dm_customers │ ├─ Machines (/daily_mirror/machines) │ └─→ dm_machines │ ├─ Orders (/daily_mirror/orders) │ ├─→ dm_orders │ ├─→ dm_customers (lookup) │ └─→ dm_articles (lookup) │ ├─ Production Orders (/daily_mirror/production_orders) │ ├─→ dm_production_orders │ ├─→ dm_customers (lookup) │ ├─→ dm_articles (lookup) │ └─→ dm_machines (lookup) │ └─ Deliveries (/daily_mirror/deliveries) ├─→ dm_deliveries ├─→ dm_customers (lookup) └─→ dm_articles (lookup) ``` --- ## 10. Data Maintenance & Optimization ### Performance Optimization 1. **Regular Index Analysis**: Monitor slow queries 2. **Table Optimization**: `OPTIMIZE TABLE` for tables > 100MB 3. **Partition Strategy**: Consider date-based partitioning for scan tables 4. **Archiving**: Archive quality scans older than 2 years ### Backup Strategy - **Daily automated backups** → `/srv/quality_app/backups/` - **Retention**: 30 days (configurable) - **Backup types**: Full + data-only incremental backups ### Data Cleanup Recommendations ``` scan1_orders, scanfg_orders └─→ Archive data older than 2 years permission_audit_log └─→ Archive quarterly dm_daily_summary └─→ Keep all historical data ``` --- ## 11. Production Phases Tracking The system tracks three phases of production: ### Phase T1: Quilting Preparation - Table: `scan1_orders` - Fields in `dm_production_orders`: - `phase_t1_prepared` (status) - `t1_operator_name` (who performed) - `t1_registration_date` (when scanned) - `end_of_quilting` (completion date) ### Phase T2: Cutting - Fields in `dm_production_orders`: - `phase_t2_cut` (status) - `t2_operator_name` - `t2_registration_date` ### Phase T3: Sewing/Assembly - Fields in `dm_production_orders`: - `phase_t3_sewing` (status) - `t3_operator_name` - `t3_registration_date` - `end_of_sewing` (completion date) ### Final Goods (FG) Quality - Table: `scanfg_orders` - After all phases complete --- ## 12. Key Metrics & KPIs Tracked in `dm_daily_summary`: ``` PRODUCTION METRICS ├─ Orders Received ├─ Production Launched ├─ Production Finished ├─ Production In-Progress └─ Active Operators QUALITY METRICS (by phase) ├─ T1 (Quilting) │ ├─ Total Scans │ ├─ Approved Count │ └─ Approval Rate (%) │ ├─ T2 (Cutting) │ ├─ Total Scans │ ├─ Approved Count │ └─ Approval Rate (%) │ └─ T3 (Sewing) ├─ Total Scans ├─ Approved Count └─ Approval Rate (%) DELIVERY METRICS ├─ Orders Shipped ├─ Orders Delivered ├─ Orders Returned ├─ On-Time Deliveries ├─ Late Deliveries └─ Delivery Value ORDER METRICS ├─ Orders Quantity ├─ Orders Value ├─ Unique Customers └─ Quilting Completed ``` --- ## 13. Future Enhancements ### Planned Tables 1. **production_schedule** - Production planning calendar 2. **quality_issues** - Defect tracking & analysis 3. **inventory_movements** - Stock tracking 4. **operator_performance** - Worker productivity ### Planned Improvements - Composite indexes for frequent joins - Table partitioning by date (scan tables) - Materialized views for complex reports - Full-text search indexes --- ## Database Health Check Query ```sql -- View database size SELECT table_name, ROUND(((data_length + index_length) / 1024 / 1024), 2) AS 'Size (MB)' FROM information_schema.TABLES WHERE table_schema = 'trasabilitate' ORDER BY (data_length + index_length) DESC; -- Check row counts SELECT table_name, table_rows FROM information_schema.TABLES WHERE table_schema = 'trasabilitate' ORDER BY table_rows DESC; -- List all indexes SELECT table_name, index_name, seq_in_index, column_name FROM information_schema.STATISTICS WHERE table_schema = 'trasabilitate' ORDER BY table_name, index_name, seq_in_index; ``` --- **Last Updated**: January 10, 2026 **Database Version**: MariaDB 11.8.3 **Total Tables**: 17 **Total Estimated Records**: 38,000+ **Total Estimated Size**: ~635 MB