# 🗺️ Service Finder Adatbázis Térkép

> Generálva: 2026-03-23 12:09:44

## Séma: `audit`

### Tábla: `audit_logs`
| Oszlop | Típus | Nullable | Alapértelmezett | Extrák |
| :--- | :--- | :--- | :--- | :--- |
| **id** | `INTEGER` | False | `nextval('audit.audit_logs_id_seq'::regclass)` | 🔑 PK |
| **user_id** | `INTEGER` | True |  | 🔗 FK |
| **severity** | `VARCHAR(8)` | False |  |  |
| **action** | `VARCHAR(100)` | False |  |  |
| **target_type** | `VARCHAR(50)` | True |  |  |
| **target_id** | `VARCHAR(50)` | True |  |  |
| **old_data** | `JSON` | True |  |  |
| **new_data** | `JSON` | True |  |  |
| **ip_address** | `VARCHAR(45)` | True |  |  |
| **user_agent** | `TEXT` | True |  |  |
| **timestamp** | `TIMESTAMP` | False | `now()` |  |

### Tábla: `financial_ledger`
| Oszlop | Típus | Nullable | Alapértelmezett | Extrák |
| :--- | :--- | :--- | :--- | :--- |
| **id** | `INTEGER` | False | `nextval('audit.financial_ledger_id_seq'::regclass)` | 🔑 PK |
| **user_id** | `INTEGER` | True |  | 🔗 FK |
| **person_id** | `BIGINT` | True |  | 🔗 FK |
| **amount** | `NUMERIC(18, 4)` | False |  |  |
| **currency** | `VARCHAR(10)` | True |  |  |
| **transaction_type** | `VARCHAR(50)` | True |  |  |
| **related_agent_id** | `INTEGER` | True |  | 🔗 FK |
| **details** | `JSON` | False | `'{}'::jsonb` |  |
| **created_at** | `TIMESTAMP` | False | `now()` |  |
| **entry_type** | `VARCHAR(6)` | False |  |  |
| **balance_after** | `NUMERIC(18, 4)` | True |  |  |
| **wallet_type** | `VARCHAR(12)` | True |  |  |
| **issuer_id** | `INTEGER` | True |  | 🔗 FK |
| **invoice_status** | `VARCHAR(50)` | True |  |  |
| **tax_amount** | `NUMERIC(18, 4)` | True |  |  |
| **gross_amount** | `NUMERIC(18, 4)` | True |  |  |
| **net_amount** | `NUMERIC(18, 4)` | True |  |  |
| **transaction_id** | `UUID` | False |  |  |
| **status** | `VARCHAR(9)` | False |  |  |

### Tábla: `operational_logs`
| Oszlop | Típus | Nullable | Alapértelmezett | Extrák |
| :--- | :--- | :--- | :--- | :--- |
| **id** | `INTEGER` | False | `nextval('audit.operational_logs_id_seq'::regclass)` | 🔑 PK |
| **user_id** | `INTEGER` | True |  | 🔗 FK |
| **action** | `VARCHAR(100)` | False |  |  |
| **resource_type** | `VARCHAR(50)` | True |  |  |
| **resource_id** | `VARCHAR(100)` | True |  |  |
| **details** | `JSON` | False | `'{}'::jsonb` |  |
| **ip_address** | `VARCHAR(45)` | True |  |  |
| **created_at** | `TIMESTAMP` | False | `now()` |  |

### Tábla: `process_logs`
| Oszlop | Típus | Nullable | Alapértelmezett | Extrák |
| :--- | :--- | :--- | :--- | :--- |
| **id** | `INTEGER` | False | `nextval('audit.process_logs_id_seq'::regclass)` | 🔑 PK |
| **process_name** | `VARCHAR(100)` | False |  |  |
| **start_time** | `TIMESTAMP` | False | `now()` |  |
| **end_time** | `TIMESTAMP` | True |  |  |
| **items_processed** | `INTEGER` | False |  |  |
| **items_failed** | `INTEGER` | False |  |  |
| **details** | `JSON` | False | `'{}'::jsonb` |  |
| **created_at** | `TIMESTAMP` | False | `now()` |  |

### Tábla: `security_audit_logs`
| Oszlop | Típus | Nullable | Alapértelmezett | Extrák |
| :--- | :--- | :--- | :--- | :--- |
| **id** | `INTEGER` | False | `nextval('audit.security_audit_logs_id_seq'::regclass)` | 🔑 PK |
| **action** | `VARCHAR(50)` | True |  |  |
| **actor_id** | `INTEGER` | True |  | 🔗 FK |
| **target_id** | `INTEGER` | True |  | 🔗 FK |
| **confirmed_by_id** | `INTEGER` | True |  | 🔗 FK |
| **is_critical** | `BOOLEAN` | False |  |  |
| **payload_before** | `JSON` | False |  |  |
| **payload_after** | `JSON` | False |  |  |
| **created_at** | `TIMESTAMP` | False | `now()` |  |

## Séma: `finance`

### Tábla: `credit_logs`
| Oszlop | Típus | Nullable | Alapértelmezett | Extrák |
| :--- | :--- | :--- | :--- | :--- |
| **id** | `INTEGER` | False | `nextval('finance.credit_logs_id_seq'::regclass)` | 🔑 PK |
| **org_id** | `INTEGER` | False |  | 🔗 FK |
| **amount** | `NUMERIC(10, 2)` | False |  |  |
| **description** | `VARCHAR` | True |  |  |
| **created_at** | `TIMESTAMP` | False | `now()` |  |

### Tábla: `exchange_rates`
| Oszlop | Típus | Nullable | Alapértelmezett | Extrák |
| :--- | :--- | :--- | :--- | :--- |
| **id** | `INTEGER` | False | `nextval('finance.exchange_rates_id_seq'::regclass)` | 🔑 PK |
| **rate** | `NUMERIC(18, 6)` | False |  |  |

### Tábla: `issuers`
| Oszlop | Típus | Nullable | Alapértelmezett | Extrák |
| :--- | :--- | :--- | :--- | :--- |
| **id** | `INTEGER` | False | `nextval('finance.issuers_id_seq'::regclass)` | 🔑 PK |
| **name** | `VARCHAR(255)` | False |  |  |
| **tax_id** | `VARCHAR(50)` | True |  |  |
| **type** | `VARCHAR(5)` | False | `'OTHER'::finance.issuer_type` |  |
| **revenue_limit** | `NUMERIC(18, 4)` | False | `19500000.0` |  |
| **current_revenue** | `NUMERIC(18, 4)` | False | `0.0` |  |
| **is_active** | `BOOLEAN` | False | `true` |  |
| **api_config** | `JSON` | False |  |  |
| **created_at** | `TIMESTAMP` | False |  |  |
| **updated_at** | `TIMESTAMP` | False |  |  |

### Tábla: `org_subscriptions`
| Oszlop | Típus | Nullable | Alapértelmezett | Extrák |
| :--- | :--- | :--- | :--- | :--- |
| **id** | `INTEGER` | False | `nextval('finance.org_subscriptions_id_seq'::regclass)` | 🔑 PK |
| **org_id** | `INTEGER` | False |  | 🔗 FK |
| **tier_id** | `INTEGER` | False |  | 🔗 FK |
| **valid_from** | `TIMESTAMP` | False | `now()` |  |
| **valid_until** | `TIMESTAMP` | True |  |  |
| **is_active** | `BOOLEAN` | False |  |  |

### Tábla: `payment_intents`
| Oszlop | Típus | Nullable | Alapértelmezett | Extrák |
| :--- | :--- | :--- | :--- | :--- |
| **id** | `INTEGER` | False | `nextval('finance.payment_intents_id_seq'::regclass)` | 🔑 PK |
| **intent_token** | `UUID` | False |  |  |
| **payer_id** | `INTEGER` | False |  | 🔗 FK |
| **beneficiary_id** | `INTEGER` | True |  | 🔗 FK |
| **target_wallet_type** | `VARCHAR(12)` | False |  |  |
| **net_amount** | `NUMERIC(18, 4)` | False |  |  |
| **handling_fee** | `NUMERIC(18, 4)` | False |  |  |
| **gross_amount** | `NUMERIC(18, 4)` | False |  |  |
| **currency** | `VARCHAR(10)` | False |  |  |
| **status** | `VARCHAR(10)` | False |  |  |
| **stripe_session_id** | `VARCHAR(255)` | True |  |  |
| **stripe_payment_intent_id** | `VARCHAR(255)` | True |  |  |
| **stripe_customer_id** | `VARCHAR(255)` | True |  |  |
| **metadata** | `JSON` | False | `'{}'::jsonb` |  |
| **created_at** | `TIMESTAMP` | False | `now()` |  |
| **updated_at** | `TIMESTAMP` | False | `now()` |  |
| **completed_at** | `TIMESTAMP` | True |  |  |
| **expires_at** | `TIMESTAMP` | True |  |  |
| **transaction_id** | `UUID` | True |  |  |
| **is_deleted** | `BOOLEAN` | False |  |  |
| **deleted_at** | `TIMESTAMP` | True |  |  |

### Tábla: `withdrawal_requests`
| Oszlop | Típus | Nullable | Alapértelmezett | Extrák |
| :--- | :--- | :--- | :--- | :--- |
| **id** | `INTEGER` | False | `nextval('finance.withdrawal_requests_id_seq'::regclass)` | 🔑 PK |
| **user_id** | `INTEGER` | False |  | 🔗 FK |
| **amount** | `NUMERIC(18, 4)` | False |  |  |
| **currency** | `VARCHAR(10)` | False |  |  |
| **payout_method** | `VARCHAR(13)` | False |  |  |
| **status** | `VARCHAR(9)` | False |  |  |
| **reason** | `VARCHAR(500)` | True |  |  |
| **approved_by_id** | `INTEGER` | True |  | 🔗 FK |
| **approved_at** | `TIMESTAMP` | True |  |  |
| **refund_transaction_id** | `UUID` | True |  |  |
| **created_at** | `TIMESTAMP` | False | `now()` |  |
| **updated_at** | `TIMESTAMP` | False | `now()` |  |
| **is_deleted** | `BOOLEAN` | False |  |  |
| **deleted_at** | `TIMESTAMP` | True |  |  |

## Séma: `fleet`

### Tábla: `asset_assignments`
| Oszlop | Típus | Nullable | Alapértelmezett | Extrák |
| :--- | :--- | :--- | :--- | :--- |
| **id** | `UUID` | False |  | 🔑 PK |
| **asset_id** | `UUID` | False |  | 🔗 FK |
| **organization_id** | `INTEGER` | False |  | 🔗 FK |
| **status** | `VARCHAR(30)` | False |  |  |

### Tábla: `branches`
| Oszlop | Típus | Nullable | Alapértelmezett | Extrák |
| :--- | :--- | :--- | :--- | :--- |
| **id** | `UUID` | False |  | 🔑 PK |
| **organization_id** | `INTEGER` | False |  | 🔗 FK |
| **address_id** | `UUID` | True |  | 🔗 FK |
| **name** | `VARCHAR(100)` | False |  |  |
| **is_main** | `BOOLEAN` | False |  |  |
| **postal_code** | `VARCHAR(10)` | True |  |  |
| **city** | `VARCHAR(100)` | True |  |  |
| **street_name** | `VARCHAR(150)` | True |  |  |
| **street_type** | `VARCHAR(50)` | True |  |  |
| **house_number** | `VARCHAR(20)` | True |  |  |
| **stairwell** | `VARCHAR(20)` | True |  |  |
| **floor** | `VARCHAR(20)` | True |  |  |
| **door** | `VARCHAR(20)` | True |  |  |
| **hrsz** | `VARCHAR(50)` | True |  |  |
| **opening_hours** | `JSONB` | False | `'{}'::jsonb` |  |
| **branch_rating** | `DOUBLE PRECISION` | False |  |  |
| **status** | `VARCHAR(30)` | False |  |  |
| **is_deleted** | `BOOLEAN` | False |  |  |
| **created_at** | `TIMESTAMP` | False | `now()` |  |
| **location** | `geometry(POINT,4326)` | True |  |  |

### Tábla: `org_sales_assignments`
| Oszlop | Típus | Nullable | Alapértelmezett | Extrák |
| :--- | :--- | :--- | :--- | :--- |
| **id** | `INTEGER` | False | `nextval('fleet.org_sales_assignments_id_seq'::regclass)` | 🔑 PK |
| **organization_id** | `INTEGER` | True |  | 🔗 FK |
| **agent_user_id** | `INTEGER` | True |  | 🔗 FK |
| **assigned_at** | `TIMESTAMP` | False | `now()` |  |
| **is_active** | `BOOLEAN` | False |  |  |

### Tábla: `organization_financials`
| Oszlop | Típus | Nullable | Alapértelmezett | Extrák |
| :--- | :--- | :--- | :--- | :--- |
| **id** | `INTEGER` | False | `nextval('fleet.organization_financials_id_seq'::regclass)` | 🔑 PK |
| **organization_id** | `INTEGER` | False |  | 🔗 FK |
| **year** | `INTEGER` | False |  |  |
| **turnover** | `NUMERIC(18, 2)` | True |  |  |
| **profit** | `NUMERIC(18, 2)` | True |  |  |
| **employee_count** | `INTEGER` | True |  |  |
| **source** | `VARCHAR(50)` | True |  |  |
| **updated_at** | `TIMESTAMP` | False | `now()` |  |

### Tábla: `organization_members`
| Oszlop | Típus | Nullable | Alapértelmezett | Extrák |
| :--- | :--- | :--- | :--- | :--- |
| **id** | `INTEGER` | False | `nextval('fleet.organization_members_id_seq'::regclass)` | 🔑 PK |
| **organization_id** | `INTEGER` | False |  | 🔗 FK |
| **user_id** | `INTEGER` | True |  | 🔗 FK |
| **person_id** | `BIGINT` | True |  | 🔗 FK |
| **role** | `VARCHAR(7)` | False |  |  |
| **permissions** | `JSON` | False | `'{}'::jsonb` |  |
| **is_permanent** | `BOOLEAN` | False |  |  |
| **is_verified** | `BOOLEAN` | False |  |  |

### Tábla: `organizations`
| Oszlop | Típus | Nullable | Alapértelmezett | Extrák |
| :--- | :--- | :--- | :--- | :--- |
| **id** | `INTEGER` | False | `nextval('fleet.organizations_id_seq'::regclass)` | 🔑 PK |
| **name** | `VARCHAR(255)` | False |  |  |
| **legal_owner_id** | `BIGINT` | True |  | 🔗 FK |
| **first_registered_at** | `TIMESTAMP` | False |  |  |
| **current_lifecycle_started_at** | `TIMESTAMP` | False |  |  |
| **last_deactivated_at** | `TIMESTAMP` | True |  |  |
| **lifecycle_index** | `INTEGER` | False | `1` |  |
| **address_id** | `UUID` | True |  | 🔗 FK |
| **is_anonymized** | `BOOLEAN` | False | `false` |  |
| **anonymized_at** | `TIMESTAMP` | True |  |  |
| **full_name** | `VARCHAR` | False |  |  |
| **display_name** | `VARCHAR(50)` | True |  |  |
| **folder_slug** | `VARCHAR(12)` | False |  |  |
| **default_currency** | `VARCHAR(3)` | False | `'HUF'::character varying` |  |
| **country_code** | `VARCHAR(2)` | False | `'HU'::character varying` |  |
| **language** | `VARCHAR(5)` | False | `'hu'::character varying` |  |
| **address_zip** | `VARCHAR(10)` | True |  |  |
| **address_city** | `VARCHAR(100)` | True |  |  |
| **address_street_name** | `VARCHAR(150)` | True |  |  |
| **address_street_type** | `VARCHAR(50)` | True |  |  |
| **address_house_number** | `VARCHAR(20)` | True |  |  |
| **address_hrsz** | `VARCHAR(50)` | True |  |  |
| **tax_number** | `VARCHAR(20)` | True |  |  |
| **reg_number** | `VARCHAR(50)` | True |  |  |
| **org_type** | `VARCHAR(16)` | False | `'individual'::fleet.orgtype` |  |
| **status** | `VARCHAR(30)` | False | `'pending_verification'::character varying` |  |
| **is_deleted** | `BOOLEAN` | False | `false` |  |
| **is_active** | `BOOLEAN` | False | `true` |  |
| **subscription_plan** | `VARCHAR(30)` | False |  |  |
| **base_asset_limit** | `INTEGER` | False |  |  |
| **purchased_extra_slots** | `INTEGER` | False |  |  |
| **notification_settings** | `JSON` | False |  |  |
| **external_integration_config** | `JSON` | False |  |  |
| **owner_id** | `INTEGER` | True |  | 🔗 FK |
| **is_verified** | `BOOLEAN` | False | `false` |  |
| **created_at** | `TIMESTAMP` | False |  |  |
| **updated_at** | `TIMESTAMP` | True |  |  |
| **is_ownership_transferable** | `BOOLEAN` | False |  |  |

## Séma: `gamification`

### Tábla: `badges`
| Oszlop | Típus | Nullable | Alapértelmezett | Extrák |
| :--- | :--- | :--- | :--- | :--- |
| **id** | `INTEGER` | False | `nextval('gamification.badges_id_seq'::regclass)` | 🔑 PK |
| **name** | `VARCHAR` | False |  |  |
| **description** | `VARCHAR` | False |  |  |
| **icon_url** | `VARCHAR` | True |  |  |

### Tábla: `competitions`
| Oszlop | Típus | Nullable | Alapértelmezett | Extrák |
| :--- | :--- | :--- | :--- | :--- |
| **id** | `INTEGER` | False | `nextval('gamification.competitions_id_seq'::regclass)` | 🔑 PK |
| **name** | `VARCHAR` | False |  |  |
| **description** | `TEXT` | True |  |  |
| **start_date** | `TIMESTAMP` | False |  |  |
| **end_date** | `TIMESTAMP` | False |  |  |
| **is_active** | `BOOLEAN` | False |  |  |

### Tábla: `level_configs`
| Oszlop | Típus | Nullable | Alapértelmezett | Extrák |
| :--- | :--- | :--- | :--- | :--- |
| **id** | `INTEGER` | False | `nextval('gamification.level_configs_id_seq'::regclass)` | 🔑 PK |
| **level_number** | `INTEGER` | False |  |  |
| **min_points** | `INTEGER` | False |  |  |
| **rank_name** | `VARCHAR` | False |  |  |
| **is_penalty** | `BOOLEAN` | False |  |  |

### Tábla: `point_rules`
| Oszlop | Típus | Nullable | Alapértelmezett | Extrák |
| :--- | :--- | :--- | :--- | :--- |
| **id** | `INTEGER` | False | `nextval('gamification.point_rules_id_seq'::regclass)` | 🔑 PK |
| **action_key** | `VARCHAR` | False |  |  |
| **points** | `INTEGER` | False |  |  |
| **description** | `VARCHAR` | True |  |  |
| **is_active** | `BOOLEAN` | False |  |  |

### Tábla: `points_ledger`
| Oszlop | Típus | Nullable | Alapértelmezett | Extrák |
| :--- | :--- | :--- | :--- | :--- |
| **id** | `INTEGER` | False | `nextval('gamification.points_ledger_id_seq'::regclass)` | 🔑 PK |
| **user_id** | `INTEGER` | False |  | 🔗 FK |
| **points** | `INTEGER` | False |  |  |
| **penalty_change** | `INTEGER` | False | `0` |  |
| **reason** | `VARCHAR` | False |  |  |
| **created_at** | `TIMESTAMP` | False | `now()` |  |

### Tábla: `seasonal_competitions`
| Oszlop | Típus | Nullable | Alapértelmezett | Extrák |
| :--- | :--- | :--- | :--- | :--- |
| **id** | `INTEGER` | False | `nextval('gamification.seasonal_competitions_id_seq'::regclass)` | 🔑 PK |
| **name** | `VARCHAR(200)` | False |  |  |
| **description** | `TEXT` | True |  |  |
| **season_id** | `INTEGER` | False |  | 🔗 FK |
| **start_date** | `DATE` | False |  |  |
| **end_date** | `DATE` | False |  |  |
| **rules** | `JSONB` | True |  |  |
| **status** | `VARCHAR(20)` | False |  |  |
| **created_at** | `TIMESTAMP` | False | `now()` |  |
| **updated_at** | `TIMESTAMP` | False | `now()` |  |

### Tábla: `seasons`
| Oszlop | Típus | Nullable | Alapértelmezett | Extrák |
| :--- | :--- | :--- | :--- | :--- |
| **id** | `INTEGER` | False |  | 🔑 PK |
| **name** | `VARCHAR(100)` | False |  |  |
| **start_date** | `DATE` | False |  |  |
| **end_date** | `DATE` | False |  |  |
| **is_active** | `BOOLEAN` | True | `false` |  |
| **created_at** | `TIMESTAMP` | True | `now()` |  |

### Tábla: `user_badges`
| Oszlop | Típus | Nullable | Alapértelmezett | Extrák |
| :--- | :--- | :--- | :--- | :--- |
| **id** | `INTEGER` | False | `nextval('gamification.user_badges_id_seq'::regclass)` | 🔑 PK |
| **user_id** | `INTEGER` | False |  | 🔗 FK |
| **badge_id** | `INTEGER` | False |  | 🔗 FK |
| **earned_at** | `TIMESTAMP` | False | `now()` |  |

### Tábla: `user_contributions`
| Oszlop | Típus | Nullable | Alapértelmezett | Extrák |
| :--- | :--- | :--- | :--- | :--- |
| **id** | `INTEGER` | False |  | 🔑 PK |
| **user_id** | `INTEGER` | False |  | 🔗 FK |
| **service_fingerprint** | `VARCHAR(255)` | False |  |  |
| **action_type** | `VARCHAR(30)` | False |  |  |
| **provided_fields** | `JSONB` | True |  |  |
| **earned_xp** | `INTEGER` | False | `0` |  |
| **cooldown_end** | `TIMESTAMP` | False |  |  |
| **created_at** | `TIMESTAMP` | True | `now()` |  |
| **season_id** | `INTEGER` | True |  |  |
| **contribution_type** | `VARCHAR(50)` | False |  |  |
| **entity_type** | `VARCHAR(50)` | True |  |  |
| **entity_id** | `INTEGER` | True |  |  |
| **points_awarded** | `INTEGER` | False | `0` |  |
| **xp_awarded** | `INTEGER` | False | `0` |  |
| **status** | `VARCHAR(20)` | False | `'pending'::character varying` |  |
| **reviewed_by** | `INTEGER` | True |  |  |
| **reviewed_at** | `TIMESTAMP` | True |  |  |

### Tábla: `user_scores`
| Oszlop | Típus | Nullable | Alapértelmezett | Extrák |
| :--- | :--- | :--- | :--- | :--- |
| **id** | `INTEGER` | False | `nextval('gamification.user_scores_id_seq'::regclass)` | 🔑 PK |
| **user_id** | `INTEGER` | False |  | 🔗 FK |
| **competition_id** | `INTEGER` | False |  | 🔗 FK |
| **points** | `INTEGER` | False |  |  |
| **last_updated** | `TIMESTAMP` | False | `now()` |  |

### Tábla: `user_stats`
| Oszlop | Típus | Nullable | Alapértelmezett | Extrák |
| :--- | :--- | :--- | :--- | :--- |
| **user_id** | `INTEGER` | False |  | 🔑 PK 🔗 FK |
| **total_xp** | `INTEGER` | False |  |  |
| **social_points** | `INTEGER` | False |  |  |
| **current_level** | `INTEGER` | False |  |  |
| **penalty_points** | `INTEGER` | False | `0` |  |
| **restriction_level** | `INTEGER` | False | `0` |  |
| **updated_at** | `TIMESTAMP` | False | `now()` |  |
| **penalty_quota_remaining** | `INTEGER` | False | `3` |  |
| **banned_until** | `TIMESTAMP` | True |  |  |
| **places_discovered** | `INTEGER` | False | `0` |  |
| **places_validated** | `INTEGER` | False | `0` |  |

## Séma: `identity`

### Tábla: `active_vouchers`
| Oszlop | Típus | Nullable | Alapértelmezett | Extrák |
| :--- | :--- | :--- | :--- | :--- |
| **id** | `INTEGER` | False | `nextval('identity.active_vouchers_id_seq'::regclass)` | 🔑 PK |
| **wallet_id** | `INTEGER` | False |  | 🔗 FK |
| **amount** | `NUMERIC(18, 4)` | False |  |  |
| **original_amount** | `NUMERIC(18, 4)` | False |  |  |
| **expires_at** | `TIMESTAMP` | False |  |  |
| **created_at** | `TIMESTAMP` | False | `now()` |  |

### Tábla: `persons`
| Oszlop | Típus | Nullable | Alapértelmezett | Extrák |
| :--- | :--- | :--- | :--- | :--- |
| **id** | `BIGINT` | False | `nextval('identity.persons_id_seq'::regclass)` | 🔑 PK |
| **user_id** | `INTEGER` | True |  | 🔗 FK |
| **id_uuid** | `UUID` | False | `gen_random_uuid()` |  |
| **address_id** | `UUID` | True |  | 🔗 FK |
| **identity_hash** | `VARCHAR(64)` | True |  |  |
| **last_name** | `VARCHAR` | False |  |  |
| **first_name** | `VARCHAR` | False |  |  |
| **phone** | `VARCHAR` | True |  |  |
| **mothers_last_name** | `VARCHAR` | True |  |  |
| **mothers_first_name** | `VARCHAR` | True |  |  |
| **birth_place** | `VARCHAR` | True |  |  |
| **birth_date** | `TIMESTAMP` | True |  |  |
| **identity_docs** | `JSON` | False |  |  |
| **ice_contact** | `JSON` | False |  |  |
| **lifetime_xp** | `BIGINT` | False |  |  |
| **penalty_points** | `INTEGER` | False |  |  |
| **social_reputation** | `NUMERIC(3, 2)` | False |  |  |
| **is_sales_agent** | `BOOLEAN` | False |  |  |
| **is_active** | `BOOLEAN` | False | `true` |  |
| **is_ghost** | `BOOLEAN` | False | `false` |  |
| **created_at** | `TIMESTAMP` | False |  |  |
| **updated_at** | `TIMESTAMP` | True |  |  |

### Tábla: `social_accounts`
| Oszlop | Típus | Nullable | Alapértelmezett | Extrák |
| :--- | :--- | :--- | :--- | :--- |
| **id** | `INTEGER` | False | `nextval('identity.social_accounts_id_seq'::regclass)` | 🔑 PK |
| **user_id** | `INTEGER` | False |  | 🔗 FK |
| **provider** | `VARCHAR(50)` | False |  |  |
| **social_id** | `VARCHAR(255)` | False |  |  |
| **email** | `VARCHAR(255)` | False |  |  |
| **extra_data** | `JSON` | False | `'{}'::jsonb` |  |
| **created_at** | `TIMESTAMP` | False | `now()` |  |

### Tábla: `user_trust_profiles`
| Oszlop | Típus | Nullable | Alapértelmezett | Extrák |
| :--- | :--- | :--- | :--- | :--- |
| **user_id** | `INTEGER` | False |  | 🔑 PK 🔗 FK |
| **trust_score** | `INTEGER` | False |  |  |
| **maintenance_score** | `NUMERIC(5, 2)` | False |  |  |
| **quality_score** | `NUMERIC(5, 2)` | False |  |  |
| **preventive_score** | `NUMERIC(5, 2)` | False |  |  |
| **last_calculated** | `TIMESTAMP` | False | `now()` |  |

### Tábla: `users`
| Oszlop | Típus | Nullable | Alapértelmezett | Extrák |
| :--- | :--- | :--- | :--- | :--- |
| **id** | `INTEGER` | False | `nextval('identity.users_id_seq'::regclass)` | 🔑 PK |
| **email** | `VARCHAR(255)` | False |  |  |
| **hashed_password** | `VARCHAR` | True |  |  |
| **role** | `VARCHAR(13)` | False | `'user'::identity.userrole` |  |
| **person_id** | `BIGINT` | True |  | 🔗 FK |
| **subscription_plan** | `VARCHAR(30)` | False |  |  |
| **subscription_expires_at** | `TIMESTAMP` | True |  |  |
| **is_vip** | `BOOLEAN` | False |  |  |
| **referral_code** | `VARCHAR(20)` | True |  |  |
| **referred_by_id** | `INTEGER` | True |  | 🔗 FK |
| **current_sales_agent_id** | `INTEGER` | True |  | 🔗 FK |
| **is_active** | `BOOLEAN` | False | `false` |  |
| **is_deleted** | `BOOLEAN` | False | `false` |  |
| **folder_slug** | `VARCHAR(12)` | True |  |  |
| **preferred_language** | `VARCHAR(5)` | False |  |  |
| **region_code** | `VARCHAR(5)` | False |  |  |
| **preferred_currency** | `VARCHAR(3)` | False |  |  |
| **scope_level** | `VARCHAR(30)` | False |  |  |
| **scope_id** | `VARCHAR(50)` | True |  |  |
| **custom_permissions** | `JSON` | False |  |  |
| **created_at** | `TIMESTAMP` | False |  |  |

### Tábla: `verification_tokens`
| Oszlop | Típus | Nullable | Alapértelmezett | Extrák |
| :--- | :--- | :--- | :--- | :--- |
| **id** | `INTEGER` | False | `nextval('identity.verification_tokens_id_seq'::regclass)` | 🔑 PK |
| **token** | `UUID` | False |  |  |
| **user_id** | `INTEGER` | False |  | 🔗 FK |
| **token_type** | `VARCHAR(20)` | False |  |  |
| **created_at** | `TIMESTAMP` | False | `now()` |  |
| **expires_at** | `TIMESTAMP` | False |  |  |
| **is_used** | `BOOLEAN` | False |  |  |

### Tábla: `wallets`
| Oszlop | Típus | Nullable | Alapértelmezett | Extrák |
| :--- | :--- | :--- | :--- | :--- |
| **id** | `INTEGER` | False | `nextval('identity.wallets_id_seq'::regclass)` | 🔑 PK |
| **user_id** | `INTEGER` | False |  | 🔗 FK |
| **earned_credits** | `NUMERIC(18, 4)` | False | `0` |  |
| **purchased_credits** | `NUMERIC(18, 4)` | False | `0` |  |
| **service_coins** | `NUMERIC(18, 4)` | False | `0` |  |
| **currency** | `VARCHAR(3)` | False |  |  |

## Séma: `marketplace`

### Tábla: `discovery_parameters`
| Oszlop | Típus | Nullable | Alapértelmezett | Extrák |
| :--- | :--- | :--- | :--- | :--- |
| **id** | `INTEGER` | False | `nextval('marketplace.discovery_parameters_id_seq'::regclass)` | 🔑 PK |
| **city** | `VARCHAR(100)` | False |  |  |
| **keyword** | `VARCHAR(100)` | False |  |  |
| **is_active** | `BOOLEAN` | False |  |  |
| **last_run_at** | `TIMESTAMP` | True |  |  |
| **country_code** | `VARCHAR(2)` | True | `'HU'::character varying` |  |

### Tábla: `expertise_tags`
| Oszlop | Típus | Nullable | Alapértelmezett | Extrák |
| :--- | :--- | :--- | :--- | :--- |
| **id** | `INTEGER` | False | `nextval('marketplace.expertise_tags_id_seq'::regclass)` | 🔑 PK |
| **key** | `VARCHAR(50)` | False |  |  |
| **name_hu** | `VARCHAR(100)` | True |  |  |
| **name_en** | `VARCHAR(100)` | True |  |  |
| **category** | `VARCHAR(30)` | True |  |  |
| **is_official** | `BOOLEAN` | False | `true` |  |
| **suggested_by_id** | `BIGINT` | True |  | 🔗 FK |
| **discovery_points** | `INTEGER` | False | `10` |  |
| **search_keywords** | `JSONB` | False | `'[]'::jsonb` |  |
| **usage_count** | `INTEGER` | False | `0` |  |
| **icon** | `VARCHAR(50)` | True |  |  |
| **description** | `TEXT` | True |  |  |
| **created_at** | `TIMESTAMP` | False | `now()` |  |
| **updated_at** | `TIMESTAMP` | True |  |  |

### Tábla: `ratings`
| Oszlop | Típus | Nullable | Alapértelmezett | Extrák |
| :--- | :--- | :--- | :--- | :--- |
| **id** | `INTEGER` | False | `nextval('marketplace.ratings_id_seq'::regclass)` | 🔑 PK |
| **author_id** | `INTEGER` | False |  | 🔗 FK |
| **target_organization_id** | `INTEGER` | True |  | 🔗 FK |
| **target_user_id** | `INTEGER` | True |  | 🔗 FK |
| **target_branch_id** | `UUID` | True |  | 🔗 FK |
| **score** | `NUMERIC(3, 2)` | False |  |  |
| **comment** | `TEXT` | True |  |  |
| **images** | `JSONB` | False | `'[]'::jsonb` |  |
| **is_verified** | `BOOLEAN` | False |  |  |
| **created_at** | `TIMESTAMP` | False | `now()` |  |

### Tábla: `service_expertises`
| Oszlop | Típus | Nullable | Alapértelmezett | Extrák |
| :--- | :--- | :--- | :--- | :--- |
| **id** | `INTEGER` | False | `nextval('marketplace.service_expertises_id_seq'::regclass)` | 🔑 PK |
| **service_id** | `INTEGER` | False |  | 🔗 FK |
| **expertise_id** | `INTEGER` | False |  | 🔗 FK |
| **confidence_level** | `INTEGER` | False | `0` |  |
| **created_at** | `TIMESTAMP` | False | `now()` |  |

### Tábla: `service_profiles`
| Oszlop | Típus | Nullable | Alapértelmezett | Extrák |
| :--- | :--- | :--- | :--- | :--- |
| **id** | `INTEGER` | False | `nextval('marketplace.service_profiles_id_seq'::regclass)` | 🔑 PK |
| **organization_id** | `INTEGER` | True |  | 🔗 FK |
| **parent_id** | `INTEGER` | True |  | 🔗 FK |
| **fingerprint** | `VARCHAR(255)` | False |  |  |
| **location** | `geometry(POINT,4326)` | False |  |  |
| **status** | `VARCHAR(9)` | False | `'ghost'::marketplace.service_status` |  |
| **last_audit_at** | `TIMESTAMP` | False | `now()` |  |
| **google_place_id** | `VARCHAR(100)` | True |  |  |
| **rating** | `DOUBLE PRECISION` | True |  |  |
| **user_ratings_total** | `INTEGER` | True |  |  |
| **rating_verified_count** | `INTEGER` | True | `0` |  |
| **rating_price_avg** | `DOUBLE PRECISION` | True |  |  |
| **rating_quality_avg** | `DOUBLE PRECISION` | True |  |  |
| **rating_time_avg** | `DOUBLE PRECISION` | True |  |  |
| **rating_communication_avg** | `DOUBLE PRECISION` | True |  |  |
| **rating_overall** | `DOUBLE PRECISION` | True |  |  |
| **last_review_at** | `TIMESTAMP` | True |  |  |
| **vibe_analysis** | `JSONB` | False | `'{}'::jsonb` |  |
| **social_links** | `JSONB` | False | `'{}'::jsonb` |  |
| **specialization_tags** | `JSONB` | False | `'{}'::jsonb` |  |
| **trust_score** | `INTEGER` | False |  |  |
| **is_verified** | `BOOLEAN` | False |  |  |
| **verification_log** | `JSONB` | False | `'{}'::jsonb` |  |
| **opening_hours** | `JSONB` | False | `'{}'::jsonb` |  |
| **contact_phone** | `VARCHAR` | True |  |  |
| **contact_email** | `VARCHAR` | True |  |  |
| **website** | `VARCHAR` | True |  |  |
| **bio** | `TEXT` | True |  |  |
| **created_at** | `TIMESTAMP` | False | `now()` |  |
| **updated_at** | `TIMESTAMP` | True |  |  |

### Tábla: `service_providers`
| Oszlop | Típus | Nullable | Alapértelmezett | Extrák |
| :--- | :--- | :--- | :--- | :--- |
| **id** | `INTEGER` | False | `nextval('marketplace.service_providers_id_seq'::regclass)` | 🔑 PK |
| **name** | `VARCHAR` | False |  |  |
| **address** | `VARCHAR` | False |  |  |
| **category** | `VARCHAR` | True |  |  |
| **status** | `VARCHAR(8)` | False |  |  |
| **source** | `VARCHAR(15)` | False |  |  |
| **validation_score** | `INTEGER` | False |  |  |
| **evidence_image_path** | `VARCHAR` | True |  |  |
| **added_by_user_id** | `INTEGER` | True |  | 🔗 FK |
| **created_at** | `TIMESTAMP` | False | `now()` |  |

### Tábla: `service_requests`
| Oszlop | Típus | Nullable | Alapértelmezett | Extrák |
| :--- | :--- | :--- | :--- | :--- |
| **id** | `INTEGER` | False | `nextval('marketplace.service_requests_id_seq'::regclass)` | 🔑 PK |
| **user_id** | `INTEGER` | False |  | 🔗 FK |
| **asset_id** | `UUID` | True |  | 🔗 FK |
| **branch_id** | `UUID` | True |  | 🔗 FK |
| **status** | `VARCHAR(50)` | False | `'pending'::character varying` |  |
| **description** | `TEXT` | True |  |  |
| **price_estimate** | `NUMERIC(10, 2)` | True |  |  |
| **requested_date** | `TIMESTAMP` | True |  |  |
| **created_at** | `TIMESTAMP` | False | `now()` |  |
| **updated_at** | `TIMESTAMP` | False | `now()` |  |

### Tábla: `service_reviews`
| Oszlop | Típus | Nullable | Alapértelmezett | Extrák |
| :--- | :--- | :--- | :--- | :--- |
| **id** | `INTEGER` | False | `nextval('marketplace.service_reviews_id_seq'::regclass)` | 🔑 PK |
| **service_id** | `INTEGER` | False |  | 🔗 FK |
| **user_id** | `INTEGER` | False |  | 🔗 FK |
| **transaction_id** | `UUID` | False |  |  |
| **price_rating** | `INTEGER` | False |  |  |
| **quality_rating** | `INTEGER` | False |  |  |
| **time_rating** | `INTEGER` | False |  |  |
| **communication_rating** | `INTEGER` | False |  |  |
| **comment** | `TEXT` | True |  |  |
| **is_verified** | `BOOLEAN` | False | `true` |  |
| **created_at** | `TIMESTAMP` | False | `now()` |  |
| **updated_at** | `TIMESTAMP` | True |  |  |

### Tábla: `service_specialties`
| Oszlop | Típus | Nullable | Alapértelmezett | Extrák |
| :--- | :--- | :--- | :--- | :--- |
| **id** | `INTEGER` | False | `nextval('marketplace.service_specialties_id_seq'::regclass)` | 🔑 PK |
| **parent_id** | `INTEGER` | True |  | 🔗 FK |
| **name** | `VARCHAR` | False |  |  |
| **slug** | `VARCHAR` | False |  |  |

### Tábla: `service_staging`
| Oszlop | Típus | Nullable | Alapértelmezett | Extrák |
| :--- | :--- | :--- | :--- | :--- |
| **id** | `INTEGER` | False | `nextval('marketplace.service_staging_id_seq'::regclass)` | 🔑 PK |
| **name** | `VARCHAR` | False |  |  |
| **postal_code** | `VARCHAR(10)` | True |  |  |
| **city** | `VARCHAR(100)` | True |  |  |
| **full_address** | `VARCHAR` | True |  |  |
| **fingerprint** | `VARCHAR(255)` | False |  |  |
| **raw_data** | `JSONB` | False | `'{}'::jsonb` |  |
| **status** | `VARCHAR(20)` | False | `'pending'::character varying` |  |
| **created_at** | `TIMESTAMP` | False | `now()` |  |
| **contact_phone** | `VARCHAR` | True |  |  |
| **website** | `VARCHAR` | True |  |  |
| **external_id** | `VARCHAR` | True |  |  |
| **contact_email** | `VARCHAR` | True |  |  |
| **trust_score** | `INTEGER` | True | `0` |  |
| **audit_trail** | `JSONB` | True |  |  |
| **rejection_reason** | `VARCHAR(500)` | True |  |  |
| **organization_id** | `INTEGER` | True |  |  |
| **service_profile_id** | `INTEGER` | True |  |  |
| **published_at** | `TIMESTAMP` | True |  |  |
| **source** | `VARCHAR(50)` | True |  |  |
| **description** | `TEXT` | True |  |  |
| **submitted_by** | `INTEGER` | True |  |  |
| **updated_at** | `TIMESTAMP` | True |  |  |
| **validation_level** | `INTEGER` | False | `40` |  |

### Tábla: `votes`
| Oszlop | Típus | Nullable | Alapértelmezett | Extrák |
| :--- | :--- | :--- | :--- | :--- |
| **id** | `INTEGER` | False | `nextval('marketplace.votes_id_seq'::regclass)` | 🔑 PK |
| **user_id** | `INTEGER` | False |  | 🔗 FK |
| **provider_id** | `INTEGER` | False |  | 🔗 FK |
| **vote_value** | `INTEGER` | False |  |  |

## Séma: `system`

### Tábla: `addresses`
| Oszlop | Típus | Nullable | Alapértelmezett | Extrák |
| :--- | :--- | :--- | :--- | :--- |
| **id** | `UUID` | False | `gen_random_uuid()` | 🔑 PK |
| **postal_code_id** | `INTEGER` | True |  | 🔗 FK |
| **street_name** | `VARCHAR(200)` | False |  |  |
| **street_type** | `VARCHAR(50)` | False |  |  |
| **house_number** | `VARCHAR(50)` | False |  |  |
| **stairwell** | `VARCHAR(20)` | True |  |  |
| **floor** | `VARCHAR(20)` | True |  |  |
| **door** | `VARCHAR(20)` | True |  |  |
| **parcel_id** | `VARCHAR(50)` | True |  |  |
| **full_address_text** | `TEXT` | True |  |  |
| **latitude** | `DOUBLE PRECISION` | True |  |  |
| **longitude** | `DOUBLE PRECISION` | True |  |  |
| **created_at** | `TIMESTAMP` | False |  |  |

### Tábla: `competitions_deprecated`
| Oszlop | Típus | Nullable | Alapértelmezett | Extrák |
| :--- | :--- | :--- | :--- | :--- |
| **id** | `INTEGER` | False | `nextval('system.competitions_id_seq'::regclass)` | 🔑 PK |
| **name** | `VARCHAR` | False |  |  |
| **description** | `TEXT` | True |  |  |
| **start_date** | `TIMESTAMP` | False |  |  |
| **end_date** | `TIMESTAMP` | False |  |  |
| **is_active** | `BOOLEAN` | False |  |  |

### Tábla: `documents`
| Oszlop | Típus | Nullable | Alapértelmezett | Extrák |
| :--- | :--- | :--- | :--- | :--- |
| **id** | `UUID` | False | `gen_random_uuid()` | 🔑 PK |
| **parent_type** | `VARCHAR(20)` | True |  |  |
| **parent_id** | `VARCHAR(50)` | True |  |  |
| **doc_type** | `VARCHAR(50)` | True |  |  |
| **original_name** | `VARCHAR(255)` | True |  |  |
| **file_hash** | `VARCHAR(64)` | True |  |  |
| **file_ext** | `VARCHAR(10)` | True | `'webp'::character varying` |  |
| **mime_type** | `VARCHAR(100)` | True | `'image/webp'::character varying` |  |
| **file_size** | `INTEGER` | True |  |  |
| **has_thumbnail** | `BOOLEAN` | True | `false` |  |
| **thumbnail_path** | `VARCHAR(255)` | True |  |  |
| **uploaded_by** | `INTEGER` | True |  | 🔗 FK |
| **status** | `VARCHAR(50)` | True | `'uploaded'::character varying` |  |
| **ocr_data** | `TEXT` | True |  |  |
| **error_log** | `TEXT` | True |  |  |
| **created_at** | `TIMESTAMP` | True | `CURRENT_TIMESTAMP` |  |

### Tábla: `geo_postal_codes`
| Oszlop | Típus | Nullable | Alapértelmezett | Extrák |
| :--- | :--- | :--- | :--- | :--- |
| **id** | `INTEGER` | False | `nextval('system.geo_postal_codes_id_seq'::regclass)` | 🔑 PK |
| **country_code** | `VARCHAR(5)` | False |  |  |
| **zip_code** | `VARCHAR(10)` | False |  |  |
| **city** | `VARCHAR(100)` | False |  |  |

### Tábla: `geo_street_types`
| Oszlop | Típus | Nullable | Alapértelmezett | Extrák |
| :--- | :--- | :--- | :--- | :--- |
| **id** | `INTEGER` | False | `nextval('system.geo_street_types_id_seq'::regclass)` | 🔑 PK |
| **name** | `VARCHAR(50)` | False |  |  |

### Tábla: `geo_streets`
| Oszlop | Típus | Nullable | Alapértelmezett | Extrák |
| :--- | :--- | :--- | :--- | :--- |
| **id** | `INTEGER` | False | `nextval('system.geo_streets_id_seq'::regclass)` | 🔑 PK |
| **postal_code_id** | `INTEGER` | True |  | 🔗 FK |
| **name** | `VARCHAR(200)` | False |  |  |

### Tábla: `internal_notifications`
| Oszlop | Típus | Nullable | Alapértelmezett | Extrák |
| :--- | :--- | :--- | :--- | :--- |
| **id** | `UUID` | False |  | 🔑 PK |
| **user_id** | `INTEGER` | False |  | 🔗 FK |
| **title** | `VARCHAR(255)` | False |  |  |
| **message** | `TEXT` | False |  |  |
| **category** | `VARCHAR(50)` | False | `'info'::character varying` |  |
| **priority** | `VARCHAR(20)` | False | `'medium'::character varying` |  |
| **is_read** | `BOOLEAN` | False |  |  |
| **created_at** | `TIMESTAMP` | False | `now()` |  |
| **read_at** | `TIMESTAMP` | True |  |  |
| **data** | `JSONB` | True |  |  |

### Tábla: `pending_actions`
| Oszlop | Típus | Nullable | Alapértelmezett | Extrák |
| :--- | :--- | :--- | :--- | :--- |
| **id** | `INTEGER` | False | `nextval('system.pending_actions_id_seq'::regclass)` | 🔑 PK |
| **requester_id** | `INTEGER` | False |  | 🔗 FK |
| **approver_id** | `INTEGER` | True |  | 🔗 FK |
| **status** | `VARCHAR(8)` | False |  |  |
| **action_type** | `VARCHAR(50)` | False |  |  |
| **payload** | `JSONB` | False |  |  |
| **reason** | `VARCHAR(255)` | True |  |  |
| **created_at** | `TIMESTAMP` | False | `now()` |  |
| **expires_at** | `TIMESTAMP` | False | `(now() + '24:00:00'::interval)` |  |
| **processed_at** | `TIMESTAMP` | True |  |  |

### Tábla: `service_staging`
| Oszlop | Típus | Nullable | Alapértelmezett | Extrák |
| :--- | :--- | :--- | :--- | :--- |
| **id** | `INTEGER` | False | `nextval('system.service_staging_id_seq1'::regclass)` | 🔑 PK |
| **name** | `VARCHAR(255)` | False |  |  |
| **source** | `VARCHAR(50)` | False |  |  |
| **external_id** | `VARCHAR(100)` | True |  |  |
| **fingerprint** | `VARCHAR(64)` | False |  |  |
| **postal_code** | `VARCHAR(20)` | True |  |  |
| **city** | `VARCHAR(100)` | False |  |  |
| **full_address** | `VARCHAR(500)` | True |  |  |
| **contact_phone** | `VARCHAR(50)` | True |  |  |
| **website** | `VARCHAR(255)` | True |  |  |
| **contact_email** | `VARCHAR(255)` | True |  |  |
| **raw_data** | `JSONB` | False | `'{}'::jsonb` |  |
| **status** | `VARCHAR(20)` | False |  |  |
| **trust_score** | `INTEGER` | False |  |  |
| **created_at** | `TIMESTAMP` | False | `now()` |  |
| **updated_at** | `TIMESTAMP` | True |  |  |
| **read_at** | `TIMESTAMP` | True |  |  |
| **data** | `JSONB` | True |  |  |

### Tábla: `service_staging_deprecated`
| Oszlop | Típus | Nullable | Alapértelmezett | Extrák |
| :--- | :--- | :--- | :--- | :--- |
| **id** | `INTEGER` | False | `nextval('system.service_staging_id_seq'::regclass)` | 🔑 PK |
| **name** | `VARCHAR` | False |  |  |
| **postal_code** | `VARCHAR(10)` | True |  |  |
| **city** | `VARCHAR(100)` | True |  |  |
| **full_address** | `VARCHAR` | True |  |  |
| **fingerprint** | `VARCHAR(255)` | False |  |  |
| **raw_data** | `JSONB` | False | `'{}'::jsonb` |  |
| **status** | `VARCHAR(20)` | False | `'pending'::character varying` |  |
| **created_at** | `TIMESTAMP` | False | `now()` |  |
| **source** | `VARCHAR(255)` | True |  |  |
| **external_id** | `VARCHAR(255)` | True |  |  |
| **contact_phone** | `VARCHAR(50)` | True |  |  |
| **website** | `VARCHAR(255)` | True |  |  |
| **contact_email** | `VARCHAR(255)` | True |  |  |
| **trust_score** | `INTEGER` | False |  |  |
| **updated_at** | `TIMESTAMP` | True |  |  |
| **read_at** | `TIMESTAMP` | True |  |  |
| **data** | `JSONB` | True |  |  |

### Tábla: `staged_vehicle_data`
| Oszlop | Típus | Nullable | Alapértelmezett | Extrák |
| :--- | :--- | :--- | :--- | :--- |
| **id** | `INTEGER` | False | `nextval('system.staged_vehicle_data_id_seq'::regclass)` | 🔑 PK |
| **source_url** | `VARCHAR` | True |  |  |
| **raw_data** | `JSONB` | False | `'{}'::jsonb` |  |
| **status** | `VARCHAR(20)` | False |  |  |
| **error_log** | `VARCHAR` | True |  |  |
| **created_at** | `TIMESTAMP` | False | `now()` |  |

### Tábla: `subscription_tiers`
| Oszlop | Típus | Nullable | Alapértelmezett | Extrák |
| :--- | :--- | :--- | :--- | :--- |
| **id** | `INTEGER` | False | `nextval('system.subscription_tiers_id_seq'::regclass)` | 🔑 PK |
| **name** | `VARCHAR(100)` | False |  |  |
| **rules** | `JSONB` | False |  |  |
| **is_custom** | `BOOLEAN` | False | `false` |  |

### Tábla: `system_parameters`
| Oszlop | Típus | Nullable | Alapértelmezett | Extrák |
| :--- | :--- | :--- | :--- | :--- |
| **id** | `INTEGER` | False | `nextval('system.system_parameters_id_seq'::regclass)` | 🔑 PK |
| **key** | `VARCHAR` | False |  |  |
| **category** | `VARCHAR` | False | `'general'::character varying` |  |
| **value** | `JSONB` | False |  |  |
| **scope_level** | `VARCHAR(7)` | False | `'global'::system.parameter_scope` |  |
| **scope_id** | `VARCHAR(50)` | True |  |  |
| **is_active** | `BOOLEAN` | False |  |  |
| **description** | `VARCHAR` | True |  |  |
| **last_modified_by** | `INTEGER` | True |  |  |
| **updated_at** | `TIMESTAMP` | False | `now()` |  |

### Tábla: `translations`
| Oszlop | Típus | Nullable | Alapértelmezett | Extrák |
| :--- | :--- | :--- | :--- | :--- |
| **id** | `INTEGER` | False | `nextval('system.translations_id_seq'::regclass)` | 🔑 PK |
| **key** | `VARCHAR(255)` | False |  |  |
| **lang** | `VARCHAR(5)` | False |  |  |
| **value** | `TEXT` | False |  |  |
| **is_published** | `BOOLEAN` | False | `true` |  |

### Tábla: `user_scores_deprecated`
| Oszlop | Típus | Nullable | Alapértelmezett | Extrák |
| :--- | :--- | :--- | :--- | :--- |
| **id** | `INTEGER` | False | `nextval('system.user_scores_id_seq'::regclass)` | 🔑 PK |
| **user_id** | `INTEGER` | False |  | 🔗 FK |
| **competition_id** | `INTEGER` | False |  | 🔗 FK |
| **points** | `INTEGER` | False |  |  |
| **last_updated** | `TIMESTAMP` | False | `now()` |  |

## Séma: `vehicle`

### Tábla: `asset_costs`
| Oszlop | Típus | Nullable | Alapértelmezett | Extrák |
| :--- | :--- | :--- | :--- | :--- |
| **id** | `UUID` | False |  | 🔑 PK |
| **asset_id** | `UUID` | False |  | 🔗 FK |
| **organization_id** | `INTEGER` | False |  | 🔗 FK |
| **cost_category** | `VARCHAR(50)` | False |  |  |
| **amount_net** | `NUMERIC(18, 2)` | False |  |  |
| **currency** | `VARCHAR(3)` | False |  |  |
| **date** | `TIMESTAMP` | False | `now()` |  |
| **invoice_number** | `VARCHAR(100)` | True |  |  |
| **data** | `JSONB` | False | `'{}'::jsonb` |  |

### Tábla: `asset_events`
| Oszlop | Típus | Nullable | Alapértelmezett | Extrák |
| :--- | :--- | :--- | :--- | :--- |
| **id** | `UUID` | False |  | 🔑 PK |
| **asset_id** | `UUID` | False |  | 🔗 FK |
| **event_type** | `VARCHAR(50)` | False |  |  |

### Tábla: `asset_financials`
| Oszlop | Típus | Nullable | Alapértelmezett | Extrák |
| :--- | :--- | :--- | :--- | :--- |
| **id** | `INTEGER` | False | `nextval('vehicle.asset_financials_id_seq'::regclass)` | 🔑 PK |
| **asset_id** | `UUID` | False |  | 🔗 FK |
| **purchase_price_net** | `NUMERIC(18, 2)` | False |  |  |
| **purchase_price_gross** | `NUMERIC(18, 2)` | False |  |  |
| **vat_rate** | `NUMERIC(5, 2)` | False |  |  |
| **activation_date** | `TIMESTAMP` | True |  |  |
| **financing_type** | `VARCHAR(50)` | False |  |  |
| **accounting_details** | `JSONB` | False | `'{}'::jsonb` |  |

### Tábla: `asset_inspections`
| Oszlop | Típus | Nullable | Alapértelmezett | Extrák |
| :--- | :--- | :--- | :--- | :--- |
| **id** | `INTEGER` | False | `nextval('vehicle.asset_inspections_id_seq'::regclass)` | 🔑 PK |
| **asset_id** | `UUID` | False |  | 🔗 FK |
| **inspector_id** | `INTEGER` | False |  | 🔗 FK |
| **timestamp** | `TIMESTAMP` | False | `now()` |  |
| **checklist_results** | `JSONB` | False |  |  |
| **is_safe** | `BOOLEAN` | False |  |  |

### Tábla: `asset_reviews`
| Oszlop | Típus | Nullable | Alapértelmezett | Extrák |
| :--- | :--- | :--- | :--- | :--- |
| **id** | `INTEGER` | False | `nextval('vehicle.asset_reviews_id_seq'::regclass)` | 🔑 PK |
| **asset_id** | `UUID` | False |  | 🔗 FK |
| **user_id** | `INTEGER` | False |  | 🔗 FK |
| **overall_rating** | `INTEGER` | True |  |  |
| **comment** | `TEXT` | True |  |  |
| **created_at** | `TIMESTAMP` | False | `now()` |  |

### Tábla: `asset_telemetry`
| Oszlop | Típus | Nullable | Alapértelmezett | Extrák |
| :--- | :--- | :--- | :--- | :--- |
| **id** | `INTEGER` | False | `nextval('vehicle.asset_telemetry_id_seq'::regclass)` | 🔑 PK |
| **asset_id** | `UUID` | False |  | 🔗 FK |
| **current_mileage** | `INTEGER` | False |  |  |

### Tábla: `assets`
| Oszlop | Típus | Nullable | Alapértelmezett | Extrák |
| :--- | :--- | :--- | :--- | :--- |
| **id** | `UUID` | False | `gen_random_uuid()` | 🔑 PK |
| **catalog_id** | `INTEGER` | True |  | 🔗 FK |
| **vin** | `VARCHAR(17)` | False |  |  |
| **license_plate** | `VARCHAR(20)` | True |  |  |
| **name** | `VARCHAR` | True |  |  |
| **year_of_manufacture** | `INTEGER` | True |  |  |
| **first_registration_date** | `TIMESTAMP` | True |  |  |
| **current_mileage** | `INTEGER` | False | `0` |  |
| **condition_score** | `INTEGER` | False | `100` |  |
| **is_for_sale** | `BOOLEAN` | False | `false` |  |
| **price** | `NUMERIC(15, 2)` | True |  |  |
| **currency** | `VARCHAR(3)` | False | `'EUR'::character varying` |  |
| **current_organization_id** | `INTEGER` | True |  | 🔗 FK |
| **owner_person_id** | `BIGINT` | True |  | 🔗 FK |
| **owner_org_id** | `INTEGER` | True |  | 🔗 FK |
| **operator_person_id** | `BIGINT` | True |  | 🔗 FK |
| **operator_org_id** | `INTEGER` | True |  | 🔗 FK |
| **status** | `VARCHAR(20)` | False | `'active'::character varying` |  |
| **individual_equipment** | `JSONB` | False |  |  |
| **created_at** | `TIMESTAMP` | False |  |  |
| **updated_at** | `TIMESTAMP` | True |  |  |

### Tábla: `auto_data_crawler_queue`
| Oszlop | Típus | Nullable | Alapértelmezett | Extrák |
| :--- | :--- | :--- | :--- | :--- |
| **id** | `INTEGER` | False | `nextval('vehicle.auto_data_crawler_queue_id_seq'::regclass)` | 🔑 PK |
| **url** | `TEXT` | False |  |  |
| **level** | `VARCHAR(20)` | False |  |  |
| **parent_id** | `INTEGER` | True |  |  |
| **name** | `VARCHAR(255)` | True |  |  |
| **status** | `VARCHAR(20)` | True | `'pending'::character varying` |  |
| **created_at** | `TIMESTAMP` | True | `now()` |  |
| **updated_at** | `TIMESTAMP` | True | `now()` |  |
| **error_msg** | `VARCHAR(1000)` | True |  |  |
| **retry_count** | `INTEGER` | True | `0` |  |
| **category** | `VARCHAR(20)` | True | `'car'::character varying` |  |

### Tábla: `catalog_discovery`
| Oszlop | Típus | Nullable | Alapértelmezett | Extrák |
| :--- | :--- | :--- | :--- | :--- |
| **id** | `INTEGER` | False | `nextval('vehicle.catalog_discovery_id_seq'::regclass)` | 🔑 PK |
| **make** | `VARCHAR(100)` | False |  |  |
| **model** | `VARCHAR(100)` | False |  |  |
| **vehicle_class** | `VARCHAR(50)` | False | `'car'::character varying` |  |
| **market** | `VARCHAR(20)` | False | `'GLOBAL'::character varying` |  |
| **model_year** | `INTEGER` | True |  |  |
| **status** | `VARCHAR(20)` | False | `'pending'::character varying` |  |
| **source** | `VARCHAR(100)` | True |  |  |
| **priority_score** | `INTEGER` | False | `0` |  |
| **attempts** | `INTEGER` | False | `0` |  |
| **created_at** | `TIMESTAMP` | False | `now()` |  |
| **updated_at** | `TIMESTAMP` | False | `now()` |  |

### Tábla: `cost_categories`
| Oszlop | Típus | Nullable | Alapértelmezett | Extrák |
| :--- | :--- | :--- | :--- | :--- |
| **id** | `INTEGER` | False | `nextval('vehicle.cost_categories_id_seq'::regclass)` | 🔑 PK |
| **code** | `VARCHAR(50)` | True |  |  |
| **parent_id** | `INTEGER` | True |  | 🔗 FK |
| **name** | `VARCHAR(100)` | False |  |  |
| **description** | `TEXT` | True |  |  |
| **is_system** | `BOOLEAN` | False | `false` |  |
| **created_at** | `TIMESTAMP` | False |  |  |
| **updated_at** | `TIMESTAMP` | False |  |  |

### Tábla: `costs`
| Oszlop | Típus | Nullable | Alapértelmezett | Extrák |
| :--- | :--- | :--- | :--- | :--- |
| **id** | `INTEGER` | False | `nextval('vehicle.costs_id_seq'::regclass)` | 🔑 PK |
| **vehicle_id** | `INTEGER` | False |  | 🔗 FK |
| **organization_id** | `INTEGER` | True |  | 🔗 FK |
| **category_id** | `INTEGER` | False |  | 🔗 FK |
| **amount** | `NUMERIC(12, 2)` | False |  |  |
| **currency** | `VARCHAR(3)` | False | `'''HUF'''::character varying` |  |
| **odometer** | `INTEGER` | False |  |  |
| **date** | `TIMESTAMP` | False |  |  |
| **notes** | `TEXT` | True |  |  |
| **created_at** | `TIMESTAMP` | False | `now()` |  |
| **updated_at** | `TIMESTAMP` | False | `now()` |  |

### Tábla: `external_reference_library`
| Oszlop | Típus | Nullable | Alapértelmezett | Extrák |
| :--- | :--- | :--- | :--- | :--- |
| **id** | `INTEGER` | False | `nextval('vehicle.external_reference_library_id_seq'::regclass)` | 🔑 PK |
| **source_name** | `VARCHAR(50)` | True |  |  |
| **make** | `VARCHAR(100)` | True |  |  |
| **model** | `VARCHAR(100)` | True |  |  |
| **generation** | `VARCHAR(255)` | True |  |  |
| **modification** | `VARCHAR(255)` | True |  |  |
| **year_from** | `INTEGER` | True |  |  |
| **year_to** | `INTEGER` | True |  |  |
| **power_kw** | `INTEGER` | True |  |  |
| **engine_cc** | `INTEGER` | True |  |  |
| **specifications** | `JSON` | True |  |  |
| **source_url** | `VARCHAR(500)` | True |  |  |
| **last_scraped_at** | `TIMESTAMP` | True | `now()` |  |
| **created_at** | `TIMESTAMP` | True | `now()` |  |
| **category** | `VARCHAR(20)` | True | `'car'::character varying` |  |
| **pipeline_status** | `VARCHAR(30)` | True | `'pending_enrich'::character varying` |  |
| **matched_vmd_id** | `INTEGER` | True |  | 🔗 FK |

### Tábla: `feature_definitions`
| Oszlop | Típus | Nullable | Alapértelmezett | Extrák |
| :--- | :--- | :--- | :--- | :--- |
| **id** | `INTEGER` | False | `nextval('vehicle.feature_definitions_id_seq'::regclass)` | 🔑 PK |
| **vehicle_type_id** | `INTEGER` | False |  | 🔗 FK |
| **code** | `VARCHAR(50)` | False |  |  |
| **name** | `VARCHAR(100)` | False |  |  |
| **category** | `VARCHAR(50)` | False |  |  |

### Tábla: `gb_catalog_discovery`
| Oszlop | Típus | Nullable | Alapértelmezett | Extrák |
| :--- | :--- | :--- | :--- | :--- |
| **id** | `INTEGER` | False | `nextval('vehicle.gb_catalog_discovery_id_seq'::regclass)` | 🔑 PK |
| **vrm** | `VARCHAR(20)` | True |  |  |
| **make** | `VARCHAR(100)` | True |  |  |
| **model** | `VARCHAR(100)` | True |  |  |
| **status** | `VARCHAR(20)` | True | `'pending'::character varying` |  |
| **created_at** | `TIMESTAMP` | True | `now()` |  |

### Tábla: `model_feature_maps`
| Oszlop | Típus | Nullable | Alapértelmezett | Extrák |
| :--- | :--- | :--- | :--- | :--- |
| **id** | `INTEGER` | False | `nextval('vehicle.model_feature_maps_id_seq'::regclass)` | 🔑 PK |
| **model_definition_id** | `INTEGER` | False |  | 🔗 FK |
| **feature_id** | `INTEGER` | False |  | 🔗 FK |
| **is_standard** | `BOOLEAN` | False |  |  |

### Tábla: `motorcycle_specs`
| Oszlop | Típus | Nullable | Alapértelmezett | Extrák |
| :--- | :--- | :--- | :--- | :--- |
| **id** | `INTEGER` | False | `nextval('vehicle.motorcycle_specs_id_seq'::regclass)` | 🔑 PK |
| **crawler_id** | `INTEGER` | True |  | 🔗 FK |
| **full_name** | `TEXT` | True |  |  |
| **raw_data** | `JSONB` | True |  |  |
| **url** | `TEXT` | True |  |  |
| **created_at** | `TIMESTAMP` | True | `now()` |  |
| **updated_at** | `TIMESTAMP` | True |  |  |

### Tábla: `reference_lookup`
| Oszlop | Típus | Nullable | Alapértelmezett | Extrák |
| :--- | :--- | :--- | :--- | :--- |
| **id** | `INTEGER` | False | `nextval('vehicle.reference_lookup_id_seq'::regclass)` | 🔑 PK |
| **make** | `VARCHAR` | False |  |  |
| **model** | `VARCHAR` | False |  |  |
| **year** | `INTEGER` | True |  |  |
| **specs** | `JSONB` | False |  |  |
| **source** | `VARCHAR` | False |  |  |
| **source_id** | `VARCHAR` | True |  |  |
| **updated_at** | `TIMESTAMP` | True | `now()` |  |

### Tábla: `vehicle_catalog`
| Oszlop | Típus | Nullable | Alapértelmezett | Extrák |
| :--- | :--- | :--- | :--- | :--- |
| **id** | `INTEGER` | False | `nextval('vehicle.vehicle_catalog_id_seq'::regclass)` | 🔑 PK |
| **make** | `VARCHAR(100)` | True |  |  |
| **model** | `VARCHAR(100)` | True |  |  |
| **master_definition_id** | `INTEGER` | True |  | 🔗 FK |
| **generation** | `VARCHAR` | True |  |  |
| **year_from** | `INTEGER` | True |  |  |
| **year_to** | `INTEGER` | True |  |  |
| **fuel_type** | `VARCHAR` | True |  |  |
| **power_kw** | `INTEGER` | True |  |  |
| **engine_capacity** | `INTEGER` | True |  |  |
| **factory_data** | `JSONB` | False |  |  |

### Tábla: `vehicle_logbook`
| Oszlop | Típus | Nullable | Alapértelmezett | Extrák |
| :--- | :--- | :--- | :--- | :--- |
| **id** | `INTEGER` | False | `nextval('vehicle.vehicle_logbook_id_seq'::regclass)` | 🔑 PK |
| **asset_id** | `UUID` | False |  | 🔗 FK |
| **driver_id** | `INTEGER` | False |  | 🔗 FK |
| **trip_type** | `VARCHAR(30)` | False |  |  |
| **is_reimbursable** | `BOOLEAN` | False |  |  |
| **start_mileage** | `INTEGER` | False |  |  |
| **end_mileage** | `INTEGER` | True |  |  |
| **distance_km** | `NUMERIC(10, 2)` | True |  |  |
| **start_lat** | `NUMERIC(10, 6)` | True |  |  |
| **start_lng** | `NUMERIC(10, 6)` | True |  |  |
| **end_lat** | `NUMERIC(10, 6)` | True |  |  |
| **end_lng** | `NUMERIC(10, 6)` | True |  |  |
| **gps_calculated_distance** | `NUMERIC(10, 2)` | True |  |  |
| **obd_verified** | `BOOLEAN` | False |  |  |
| **max_acceleration** | `DOUBLE PRECISION` | True |  |  |
| **average_speed** | `DOUBLE PRECISION` | True |  |  |

### Tábla: `vehicle_model_definitions`
| Oszlop | Típus | Nullable | Alapértelmezett | Extrák |
| :--- | :--- | :--- | :--- | :--- |
| **id** | `INTEGER` | False | `nextval('vehicle.vehicle_model_definitions_id_seq'::regclass)` | 🔑 PK |
| **make** | `VARCHAR(100)` | True |  |  |
| **marketing_name** | `VARCHAR(100)` | True |  |  |
| **market** | `VARCHAR(20)` | False | `'EU'::character varying` |  |
| **official_marketing_name** | `VARCHAR(255)` | True |  |  |
| **attempts** | `INTEGER` | False | `0` |  |
| **last_error** | `TEXT` | True |  |  |
| **updated_at** | `TIMESTAMP` | False | `now()` |  |
| **priority_score** | `INTEGER` | False | `0` |  |
| **normalized_name** | `VARCHAR(255)` | True |  |  |
| **marketing_name_aliases** | `JSONB` | False | `'[]'::jsonb` |  |
| **engine_code** | `VARCHAR(50)` | True |  |  |
| **technical_code** | `VARCHAR(100)` | False |  |  |
| **variant_code** | `VARCHAR(100)` | True |  |  |
| **version_code** | `VARCHAR(100)` | True |  |  |
| **type_approval_number** | `VARCHAR(100)` | True |  |  |
| **seats** | `INTEGER` | True |  |  |
| **width** | `INTEGER` | True |  |  |
| **wheelbase** | `INTEGER` | True |  |  |
| **list_price** | `INTEGER` | True |  |  |
| **max_speed** | `INTEGER` | True |  |  |
| **towing_weight_unbraked** | `INTEGER` | True |  |  |
| **towing_weight_braked** | `INTEGER` | True |  |  |
| **fuel_consumption_combined** | `NUMERIC(10, 2)` | True |  |  |
| **co2_emissions_combined** | `INTEGER` | True |  |  |
| **vehicle_type_id** | `INTEGER` | True |  | 🔗 FK |
| **vehicle_class** | `VARCHAR(50)` | True |  |  |
| **body_type** | `VARCHAR(100)` | True |  |  |
| **fuel_type** | `VARCHAR(50)` | True |  |  |
| **engine_capacity** | `INTEGER` | False | `0` |  |
| **power_kw** | `INTEGER` | False | `0` |  |
| **torque_nm** | `INTEGER` | True |  |  |
| **cylinders** | `INTEGER` | True |  |  |
| **cylinder_layout** | `VARCHAR(50)` | True |  |  |
| **curb_weight** | `INTEGER` | True |  |  |
| **max_weight** | `INTEGER` | True |  |  |
| **euro_classification** | `VARCHAR(20)` | True |  |  |
| **doors** | `INTEGER` | True |  |  |
| **transmission_type** | `VARCHAR(50)` | True |  |  |
| **drive_type** | `VARCHAR(50)` | True |  |  |
| **year_from** | `INTEGER` | True |  |  |
| **year_to** | `INTEGER` | True |  |  |
| **production_status** | `VARCHAR(50)` | True |  |  |
| **status** | `VARCHAR(50)` | False |  |  |
| **is_manual** | `BOOLEAN` | False | `false` |  |
| **source** | `VARCHAR(100)` | True |  |  |
| **raw_search_context** | `TEXT` | False | `''::text` |  |
| **research_metadata** | `JSONB` | False | `'{}'::jsonb` |  |
| **specifications** | `JSONB` | False |  |  |
| **created_at** | `TIMESTAMP` | False | `now()` |  |
| **last_research_at** | `TIMESTAMP` | True |  |  |
| **trim_level** | `VARCHAR(100)` | True | `''::character varying` |  |
| **raw_api_data** | `JSONB` | True | `'{}'::jsonb` |  |

### Tábla: `vehicle_odometer_states`
| Oszlop | Típus | Nullable | Alapértelmezett | Extrák |
| :--- | :--- | :--- | :--- | :--- |
| **vehicle_id** | `INTEGER` | False |  | 🔑 PK 🔗 FK |
| **last_recorded_odometer** | `INTEGER` | False |  |  |
| **last_recorded_date** | `TIMESTAMP` | False |  |  |
| **daily_avg_distance** | `NUMERIC(10, 2)` | False |  |  |
| **estimated_current_odometer** | `NUMERIC(12, 2)` | False |  |  |
| **confidence_score** | `DOUBLE PRECISION` | False |  |  |
| **manual_override_avg** | `NUMERIC(10, 2)` | True |  |  |
| **created_at** | `TIMESTAMP` | False | `now()` |  |
| **updated_at** | `TIMESTAMP` | False | `now()` |  |

### Tábla: `vehicle_ownership_history`
| Oszlop | Típus | Nullable | Alapértelmezett | Extrák |
| :--- | :--- | :--- | :--- | :--- |
| **id** | `INTEGER` | False | `nextval('vehicle.vehicle_ownership_history_id_seq'::regclass)` | 🔑 PK |
| **asset_id** | `UUID` | False |  | 🔗 FK |
| **user_id** | `INTEGER` | False |  | 🔗 FK |
| **acquired_at** | `TIMESTAMP` | False | `now()` |  |
| **disposed_at** | `TIMESTAMP` | True |  |  |

### Tábla: `vehicle_types`
| Oszlop | Típus | Nullable | Alapértelmezett | Extrák |
| :--- | :--- | :--- | :--- | :--- |
| **id** | `INTEGER` | False | `nextval('vehicle.vehicle_types_id_seq'::regclass)` | 🔑 PK |
| **code** | `VARCHAR(30)` | False |  |  |
| **name** | `VARCHAR(50)` | False |  |  |
| **icon** | `VARCHAR(50)` | True |  |  |
| **units** | `JSONB` | False | `'{"power": "kW", "weight": "kg"}'::jsonb` |  |

### Tábla: `vehicle_user_ratings`
| Oszlop | Típus | Nullable | Alapértelmezett | Extrák |
| :--- | :--- | :--- | :--- | :--- |
| **id** | `UUID` | False | `gen_random_uuid()` | 🔑 PK |
| **vehicle_id** | `INTEGER` | False |  | 🔗 FK |
| **user_id** | `INTEGER` | False |  | 🔗 FK |
| **driving_experience** | `INTEGER` | False |  |  |
| **reliability** | `INTEGER` | False |  |  |
| **comfort** | `INTEGER` | False |  |  |
| **consumption_satisfaction** | `INTEGER` | False |  |  |
| **comment** | `TEXT` | True |  |  |
| **created_at** | `TIMESTAMP` | False | `now()` |  |
| **updated_at** | `TIMESTAMP` | False | `now()` |  |

