mirror of
https://github.com/R0m1k3/LogiFlow.git
synced 2026-10-11 17:27:31 +02:00
Update storage logic to use database when available
Modify server/storage.ts to prioritize DatabaseStorage when DATABASE_URL is set, falling back to MemStorage otherwise. Includes updated logging to reflect this logic. Also adds attached reports detailing PostgreSQL production database schema and contents. Replit-Commit-Author: Agent Replit-Commit-Session-Id: 1e4433b5-47ab-464c-b663-fea2e53367dd Replit-Commit-Checkpoint-Type: full_checkpoint Replit-Commit-Screenshot-Url: https://storage.googleapis.com/screenshot-production-us-central1/1957c339-2757-4d1f-8e92-e9f71a1ce58e/1e4433b5-47ab-464c-b663-fea2e53367dd/AVGwNHS
This commit is contained in:
1 parent
c975871110
commit
c675429634
4 files changed
+1293
-6
No files matched your search
@@ -23,6 +23,10 @@ externalPort = 3002
|
||||
localPort = 41343
|
||||
externalPort = 3001
|
||||
|
||||
[[ports]]
|
||||
localPort = 44301
|
||||
externalPort = 3000
|
||||
|
||||
[workflows]
|
||||
runButton = "Project"
|
||||
|
||||
|
||||
+641
@@ -0,0 +1,641 @@
|
||||
LOGIFLOW - RAPPORT SCHÉMA BASE DE DONNÉES PRODUCTION
|
||||
===============================================
|
||||
|
||||
GÉNÉRÉ LE : 2025-09-15T08:08:00.355Z
|
||||
SERVEUR : Production privé LogiFlow
|
||||
ENVIRONNEMENT : PostgreSQL Docker
|
||||
UTILISATEUR : admin
|
||||
|
||||
===============================================
|
||||
RÉSUMÉ DU SCAN
|
||||
===============================================
|
||||
|
||||
TOTAL DES TABLES TROUVÉES: 37
|
||||
==========================================
|
||||
|
||||
TABLE: AVOIRS
|
||||
============
|
||||
|
||||
01. id : integer NOT NULL DEFAULT nextval('avoirs_id_seq'::regclass)
|
||||
02. supplier_id : integer NOT NULL
|
||||
03. group_id : integer NOT NULL
|
||||
04. invoice_reference : character varying(255) NULL
|
||||
05. amount : numeric NULL
|
||||
06. comment : text NULL
|
||||
07. commercial_processed : boolean NULL DEFAULT false
|
||||
08. status : character varying(50) NULL DEFAULT 'En attente de demande'::character varying
|
||||
09. webhook_sent : boolean NULL DEFAULT false
|
||||
10. nocodb_verified : boolean NULL DEFAULT false
|
||||
11. nocodb_verified_at : timestamp without time zone NULL
|
||||
12. processed_at : timestamp without time zone NULL
|
||||
13. created_by : character varying(255) NOT NULL
|
||||
14. created_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP
|
||||
15. updated_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP
|
||||
📈 Nombre d'enregistrements: 5
|
||||
|
||||
TABLE: CALENDAR_EVENTS
|
||||
=====================
|
||||
|
||||
01. id : integer NOT NULL DEFAULT nextval('calendar_events_id_seq'::regclass)
|
||||
02. title : character varying(255) NOT NULL
|
||||
03. description : text NULL
|
||||
04. start_date : timestamp without time zone NOT NULL
|
||||
05. end_date : timestamp without time zone NOT NULL
|
||||
06. event_type : character varying(50) NULL DEFAULT 'custom'::character varying
|
||||
07. group_id : integer NULL
|
||||
08. created_by : character varying(255) NULL
|
||||
09. created_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP
|
||||
10. updated_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP
|
||||
📈 Nombre d'enregistrements: 0
|
||||
|
||||
TABLE: CLIENT_ORDERS
|
||||
===================
|
||||
|
||||
01. id : integer NOT NULL DEFAULT nextval('client_orders_id_seq'::regclass)
|
||||
02. order_number : character varying(255) NOT NULL
|
||||
03. client_name : character varying(255) NOT NULL
|
||||
04. client_contact : character varying(255) NULL
|
||||
05. product_description : text NOT NULL
|
||||
06. quantity : integer NOT NULL DEFAULT 1
|
||||
07. unit_price : numeric NULL
|
||||
08. total_amount : numeric NULL
|
||||
09. status : character varying(50) NULL DEFAULT 'pending'::character varying
|
||||
10. delivery_date : date NULL
|
||||
11. notes : text NULL
|
||||
12. group_id : integer NULL
|
||||
13. created_by : character varying(255) NULL
|
||||
14. created_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP
|
||||
15. updated_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP
|
||||
📈 Nombre d'enregistrements: 0
|
||||
|
||||
TABLE: COMMAND_ITEMS
|
||||
===================
|
||||
|
||||
01. id : integer NOT NULL DEFAULT nextval('command_items_id_seq'::regclass)
|
||||
02. command_id : integer NULL
|
||||
03. product_name : character varying(255) NOT NULL
|
||||
04. product_reference : character varying(255) NULL
|
||||
05. quantity : integer NOT NULL
|
||||
06. unit_price : numeric NULL
|
||||
07. total_price : numeric NULL
|
||||
08. created_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP
|
||||
📈 Nombre d'enregistrements: 0
|
||||
|
||||
TABLE: COMMANDS
|
||||
==============
|
||||
|
||||
01. id : integer NOT NULL DEFAULT nextval('commands_id_seq'::regclass)
|
||||
02. command_number : character varying(255) NOT NULL
|
||||
03. supplier_id : integer NULL
|
||||
04. group_id : integer NULL
|
||||
05. command_date : date NOT NULL
|
||||
06. expected_delivery_date : date NULL
|
||||
07. status : character varying(50) NULL DEFAULT 'pending'::character varying
|
||||
08. total_amount : numeric NULL
|
||||
09. notes : text NULL
|
||||
10. created_by : character varying(255) NULL
|
||||
11. created_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP
|
||||
12. updated_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP
|
||||
📈 Nombre d'enregistrements: 0
|
||||
|
||||
TABLE: CUSTOMER_ORDERS
|
||||
=====================
|
||||
|
||||
01. id : integer NOT NULL DEFAULT nextval('customer_orders_id_seq'::regclass)
|
||||
02. order_taker : character varying(255) NOT NULL
|
||||
03. customer_name : character varying(255) NOT NULL
|
||||
04. customer_phone : character varying(255) NULL
|
||||
05. customer_email : character varying(255) NULL
|
||||
06. product_designation : text NOT NULL
|
||||
07. product_reference : character varying(255) NULL
|
||||
08. gencode : character varying(255) NULL
|
||||
09. quantity : integer NULL DEFAULT 1
|
||||
10. supplier_id : integer NULL
|
||||
11. status : character varying(100) NULL DEFAULT 'En attente de Commande'::character varying
|
||||
12. deposit : numeric NULL DEFAULT 0.00
|
||||
13. is_promotional_price : boolean NULL DEFAULT false
|
||||
14. customer_notified : boolean NULL DEFAULT false
|
||||
15. notes : text NULL
|
||||
16. group_id : integer NULL
|
||||
17. created_by : character varying(255) NULL
|
||||
18. created_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP
|
||||
19. updated_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP
|
||||
📈 Nombre d'enregistrements: 80
|
||||
|
||||
TABLE: CUSTOMERS
|
||||
===============
|
||||
|
||||
01. id : integer NOT NULL DEFAULT nextval('customers_id_seq'::regclass)
|
||||
02. name : character varying(255) NOT NULL
|
||||
03. contact_person : character varying(255) NULL
|
||||
04. phone : character varying(255) NULL
|
||||
05. email : character varying(255) NULL
|
||||
06. address : text NULL
|
||||
07. city : character varying(255) NULL
|
||||
08. postal_code : character varying(20) NULL
|
||||
09. notes : text NULL
|
||||
10. group_id : integer NULL
|
||||
11. created_by : character varying(255) NULL
|
||||
12. created_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP
|
||||
13. updated_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP
|
||||
📈 Nombre d'enregistrements: 0
|
||||
|
||||
TABLE: DASHBOARD_MESSAGES
|
||||
========================
|
||||
|
||||
01. id : integer NOT NULL DEFAULT nextval('dashboard_messages_id_seq'::regclass)
|
||||
02. title : character varying(255) NOT NULL
|
||||
03. content : text NOT NULL
|
||||
04. type : character varying(50) NOT NULL DEFAULT 'info'::character varying
|
||||
05. store_id : integer NULL
|
||||
06. created_by : character varying(255) NOT NULL
|
||||
07. created_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP
|
||||
📈 Nombre d'enregistrements: 3
|
||||
|
||||
TABLE: DATABASE_BACKUPS
|
||||
======================
|
||||
|
||||
01. id : character varying(255) NOT NULL
|
||||
02. filename : character varying(255) NOT NULL
|
||||
03. description : text NULL
|
||||
04. size : bigint NULL DEFAULT 0
|
||||
05. created_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP
|
||||
06. created_by : character varying(255) NOT NULL
|
||||
07. tables_count : integer NULL DEFAULT 0
|
||||
08. status : character varying(50) NULL DEFAULT 'creating'::character varying
|
||||
09. backup_type : character varying(10) NULL DEFAULT 'manual'::character varying
|
||||
📈 Nombre d'enregistrements: 10
|
||||
|
||||
TABLE: DELIVERIES
|
||||
================
|
||||
|
||||
01. id : integer NOT NULL DEFAULT nextval('deliveries_id_seq'::regclass)
|
||||
02. order_id : integer NULL
|
||||
03. supplier_id : integer NULL
|
||||
04. group_id : integer NULL
|
||||
05. scheduled_date : date NOT NULL
|
||||
06. delivered_date : timestamp without time zone NULL
|
||||
07. quantity : integer NOT NULL
|
||||
08. unit : character varying(50) NOT NULL
|
||||
09. status : character varying(50) NULL DEFAULT 'pending'::character varying
|
||||
10. notes : text NULL
|
||||
11. bl_number : character varying(255) NULL
|
||||
12. bl_amount : numeric NULL
|
||||
13. invoice_reference : character varying(255) NULL
|
||||
14. invoice_amount : numeric NULL
|
||||
15. reconciled : boolean NULL DEFAULT false
|
||||
16. validated_at : timestamp without time zone NULL
|
||||
17. created_by : character varying(255) NULL
|
||||
18. created_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP
|
||||
19. updated_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP
|
||||
📈 Nombre d'enregistrements: 173
|
||||
|
||||
TABLE: DELIVERY_ITEMS
|
||||
====================
|
||||
|
||||
01. id : integer NOT NULL DEFAULT nextval('delivery_items_id_seq'::regclass)
|
||||
02. delivery_id : integer NULL
|
||||
03. product_name : character varying(255) NOT NULL
|
||||
04. product_reference : character varying(255) NULL
|
||||
05. quantity : integer NOT NULL
|
||||
06. unit : character varying(50) NULL
|
||||
07. notes : text NULL
|
||||
08. created_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP
|
||||
📈 Nombre d'enregistrements: 0
|
||||
|
||||
TABLE: DLC_PRODUCTS
|
||||
==================
|
||||
|
||||
01. id : integer NOT NULL DEFAULT nextval('dlc_products_id_seq'::regclass)
|
||||
02. product_name : character varying(255) NOT NULL
|
||||
03. expiry_date : date NOT NULL
|
||||
04. date_type : character varying(50) NOT NULL DEFAULT 'DLC'::character varying
|
||||
05. quantity : integer NOT NULL DEFAULT 1
|
||||
06. unit : character varying(50) NOT NULL DEFAULT 'unité'::character varying
|
||||
07. supplier_id : integer NOT NULL
|
||||
08. location : character varying(255) NOT NULL DEFAULT 'Magasin'::character varying
|
||||
09. status : character varying(50) NOT NULL DEFAULT 'active'::character varying
|
||||
10. notes : text NULL
|
||||
11. alert_threshold : integer NOT NULL DEFAULT 15
|
||||
12. validated_at : timestamp without time zone NULL
|
||||
13. validated_by : character varying(255) NULL
|
||||
14. group_id : integer NOT NULL
|
||||
15. created_by : character varying(255) NOT NULL
|
||||
16. created_at : timestamp without time zone NOT NULL DEFAULT CURRENT_TIMESTAMP
|
||||
17. updated_at : timestamp without time zone NOT NULL DEFAULT CURRENT_TIMESTAMP
|
||||
18. gencode : character varying(255) NULL
|
||||
19. name : character varying(255) NULL
|
||||
20. dlc_date : date NULL
|
||||
21. product_code : character varying(255) NULL
|
||||
22. description : text NULL
|
||||
23. stock_epuise : boolean NOT NULL DEFAULT false
|
||||
24. stock_epuise_by : character varying(255) NULL
|
||||
25. stock_epuise_at : timestamp without time zone NULL
|
||||
📈 Nombre d'enregistrements: 592
|
||||
|
||||
TABLE: GROUPS
|
||||
============
|
||||
|
||||
01. id : integer NOT NULL DEFAULT nextval('groups_id_seq'::regclass)
|
||||
02. name : character varying(255) NOT NULL
|
||||
03. color : character varying(20) NULL DEFAULT '#1976D2'::character varying
|
||||
04. nocodb_config_id : integer NULL
|
||||
05. nocodb_table_id : character varying(255) NULL
|
||||
06. nocodb_table_name : character varying(255) NULL
|
||||
07. invoice_column_name : character varying(255) NULL
|
||||
08. created_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP
|
||||
09. updated_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP
|
||||
10. nocodb_bl_column_name : character varying(255) NULL
|
||||
11. nocodb_amount_column_name : character varying(255) NULL
|
||||
12. nocodb_supplier_column_name : character varying(255) NULL
|
||||
13. webhook_url : character varying(500) NULL
|
||||
📈 Nombre d'enregistrements: 2
|
||||
|
||||
TABLE: INVOICE_VERIFICATION_CACHE
|
||||
================================
|
||||
|
||||
01. id : integer NOT NULL DEFAULT nextval('invoice_verification_cache_id_seq'::regclass)
|
||||
02. cache_key : character varying(255) NOT NULL
|
||||
03. group_id : integer NOT NULL
|
||||
04. invoice_reference : character varying(255) NOT NULL
|
||||
05. supplier_name : character varying(255) NULL
|
||||
06. exists : boolean NOT NULL
|
||||
07. match_type : character varying(50) NOT NULL
|
||||
08. error_message : text NULL
|
||||
09. cache_hit : boolean NULL DEFAULT false
|
||||
10. api_call_time : integer NULL
|
||||
11. expires_at : timestamp without time zone NOT NULL
|
||||
12. created_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP
|
||||
13. updated_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP
|
||||
14. is_reconciled : boolean NULL DEFAULT false
|
||||
📈 Nombre d'enregistrements: 220
|
||||
|
||||
TABLE: INVOICE_VERIFICATIONS
|
||||
===========================
|
||||
|
||||
01. id : integer NOT NULL DEFAULT nextval('invoice_verifications_id_seq'::regclass)
|
||||
02. delivery_id : integer NOT NULL
|
||||
03. group_id : integer NOT NULL
|
||||
04. invoice_reference : character varying(255) NOT NULL
|
||||
05. supplier_name : character varying(255) NULL
|
||||
06. exists : boolean NOT NULL
|
||||
07. match_type : character varying(50) NULL
|
||||
08. verified_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP
|
||||
09. is_valid : boolean NULL DEFAULT true
|
||||
10. last_checked_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP
|
||||
📈 Nombre d'enregistrements: 15
|
||||
|
||||
TABLE: INVOICES
|
||||
==============
|
||||
|
||||
01. id : integer NOT NULL DEFAULT nextval('invoices_id_seq'::regclass)
|
||||
02. invoice_number : character varying(255) NOT NULL
|
||||
03. supplier_id : integer NULL
|
||||
04. group_id : integer NULL
|
||||
05. invoice_date : date NOT NULL
|
||||
06. due_date : date NULL
|
||||
07. amount : numeric NOT NULL
|
||||
08. status : character varying(50) NULL DEFAULT 'pending'::character varying
|
||||
09. payment_date : date NULL
|
||||
10. notes : text NULL
|
||||
11. created_by : character varying(255) NULL
|
||||
12. created_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP
|
||||
13. updated_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP
|
||||
📈 Nombre d'enregistrements: 0
|
||||
|
||||
TABLE: NOCODB_CONFIG
|
||||
===================
|
||||
|
||||
01. id : integer NOT NULL DEFAULT nextval('nocodb_config_id_seq'::regclass)
|
||||
02. name : character varying(255) NOT NULL
|
||||
03. base_url : character varying(255) NOT NULL
|
||||
04. project_id : character varying(255) NOT NULL
|
||||
05. api_token : character varying(255) NOT NULL
|
||||
06. description : text NULL
|
||||
07. is_active : boolean NULL DEFAULT true
|
||||
08. created_by : character varying(255) NULL
|
||||
09. created_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP
|
||||
10. updated_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP
|
||||
📈 Nombre d'enregistrements: 1
|
||||
|
||||
TABLE: ORDERS
|
||||
============
|
||||
|
||||
01. id : integer NOT NULL DEFAULT nextval('orders_id_seq'::regclass)
|
||||
02. supplier_id : integer NULL
|
||||
03. group_id : integer NULL
|
||||
04. planned_date : date NOT NULL
|
||||
05. quantity : integer NULL
|
||||
06. unit : character varying(50) NULL
|
||||
07. status : character varying(50) NULL DEFAULT 'pending'::character varying
|
||||
08. notes : text NULL
|
||||
09. created_by : character varying(255) NULL
|
||||
10. created_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP
|
||||
11. updated_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP
|
||||
📈 Nombre d'enregistrements: 114
|
||||
|
||||
TABLE: PERMISSIONS
|
||||
=================
|
||||
|
||||
01. id : integer NOT NULL DEFAULT nextval('permissions_id_seq'::regclass)
|
||||
02. name : character varying(255) NOT NULL
|
||||
03. display_name : character varying(255) NOT NULL
|
||||
04. description : text NULL
|
||||
05. category : character varying(255) NOT NULL
|
||||
06. action : character varying(255) NOT NULL
|
||||
07. resource : character varying(255) NOT NULL
|
||||
08. is_system : boolean NULL DEFAULT true
|
||||
09. created_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP
|
||||
📈 Nombre d'enregistrements: 7
|
||||
|
||||
TABLE: PUBLICITIES
|
||||
=================
|
||||
|
||||
01. id : integer NOT NULL DEFAULT nextval('publicities_id_seq'::regclass)
|
||||
02. pub_number : character varying(255) NOT NULL
|
||||
03. designation : text NOT NULL
|
||||
04. start_date : date NOT NULL
|
||||
05. end_date : date NOT NULL
|
||||
06. year : integer NOT NULL
|
||||
07. created_by : character varying(255) NULL
|
||||
08. created_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP
|
||||
09. updated_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP
|
||||
📈 Nombre d'enregistrements: 50
|
||||
|
||||
TABLE: PUBLICITY_PARTICIPATIONS
|
||||
==============================
|
||||
|
||||
01. publicity_id : integer NOT NULL
|
||||
02. group_id : integer NOT NULL
|
||||
📈 Nombre d'enregistrements: 46
|
||||
|
||||
TABLE: RECONCILIATION_COMMENTS
|
||||
=============================
|
||||
|
||||
01. id : integer NOT NULL DEFAULT nextval('reconciliation_comments_id_seq'::regclass)
|
||||
02. content : text NOT NULL
|
||||
03. type : character varying(255) NOT NULL
|
||||
04. delivery_id : integer NOT NULL
|
||||
05. author_id : character varying(255) NOT NULL
|
||||
06. group_id : integer NOT NULL
|
||||
07. created_at : timestamp without time zone NULL DEFAULT now()
|
||||
08. updated_at : timestamp without time zone NULL DEFAULT now()
|
||||
📈 Nombre d'enregistrements: 0
|
||||
|
||||
TABLE: ROLE_PERMISSIONS
|
||||
======================
|
||||
|
||||
01. role_id : integer NOT NULL
|
||||
02. permission_id : integer NOT NULL
|
||||
📈 Nombre d'enregistrements: 21
|
||||
|
||||
TABLE: ROLES
|
||||
===========
|
||||
|
||||
01. id : integer NOT NULL DEFAULT nextval('roles_id_seq'::regclass)
|
||||
02. name : character varying(255) NOT NULL
|
||||
03. display_name : character varying(255) NOT NULL
|
||||
04. description : text NULL
|
||||
05. color : character varying(7) NULL DEFAULT '#6b7280'::character varying
|
||||
06. is_system : boolean NULL DEFAULT false
|
||||
07. is_active : boolean NULL DEFAULT true
|
||||
08. created_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP
|
||||
09. updated_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP
|
||||
📈 Nombre d'enregistrements: 4
|
||||
|
||||
TABLE: SAV_TICKET_HISTORY
|
||||
========================
|
||||
|
||||
01. id : integer NOT NULL DEFAULT nextval('sav_ticket_history_id_seq'::regclass)
|
||||
02. ticket_id : integer NOT NULL
|
||||
03. action : character varying(100) NOT NULL
|
||||
04. description : text NULL
|
||||
05. created_by : character varying(255) NOT NULL
|
||||
06. created_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP
|
||||
📈 Nombre d'enregistrements: 2
|
||||
|
||||
TABLE: SAV_TICKETS
|
||||
=================
|
||||
|
||||
01. id : integer NOT NULL DEFAULT nextval('sav_tickets_id_seq'::regclass)
|
||||
02. ticket_number : character varying(50) NOT NULL
|
||||
03. supplier_id : integer NOT NULL
|
||||
04. group_id : integer NOT NULL
|
||||
05. product_gencode : character varying(255) NOT NULL
|
||||
06. product_reference : character varying(255) NULL
|
||||
07. product_designation : character varying(500) NOT NULL
|
||||
08. problem_type : character varying(100) NOT NULL
|
||||
09. problem_description : text NOT NULL
|
||||
10. resolution_description : text NULL
|
||||
11. status : character varying(50) NOT NULL DEFAULT 'nouveau'::character varying
|
||||
12. created_by : character varying(255) NOT NULL
|
||||
13. created_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP
|
||||
14. updated_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP
|
||||
15. resolved_at : timestamp without time zone NULL
|
||||
16. closed_at : timestamp without time zone NULL
|
||||
17. client_name : character varying(255) NULL
|
||||
18. client_phone : character varying(255) NULL
|
||||
19. priority : character varying(50) NOT NULL DEFAULT 'normale'::character varying
|
||||
📈 Nombre d'enregistrements: 1
|
||||
|
||||
TABLE: SESSION
|
||||
=============
|
||||
|
||||
01. sid : character varying NOT NULL
|
||||
02. sess : json NOT NULL
|
||||
03. expire : timestamp without time zone NOT NULL
|
||||
📈 Nombre d'enregistrements: 13
|
||||
|
||||
TABLE: SESSIONS
|
||||
==============
|
||||
|
||||
01. id : integer NOT NULL DEFAULT nextval('sessions_id_seq'::regclass)
|
||||
02. user_id : character varying(255) NULL
|
||||
03. session_token : character varying(255) NOT NULL
|
||||
04. expires_at : timestamp without time zone NOT NULL
|
||||
05. created_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP
|
||||
📈 Nombre d'enregistrements: 0
|
||||
|
||||
TABLE: STORES
|
||||
============
|
||||
|
||||
01. id : integer NOT NULL DEFAULT nextval('stores_id_seq'::regclass)
|
||||
02. name : character varying(255) NOT NULL
|
||||
03. address : text NULL
|
||||
04. city : character varying(255) NULL
|
||||
05. postal_code : character varying(20) NULL
|
||||
06. phone : character varying(255) NULL
|
||||
07. manager_id : character varying(255) NULL
|
||||
08. is_active : boolean NULL DEFAULT true
|
||||
09. created_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP
|
||||
10. updated_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP
|
||||
📈 Nombre d'enregistrements: 0
|
||||
|
||||
TABLE: SUPPLIERS
|
||||
===============
|
||||
|
||||
01. id : integer NOT NULL DEFAULT nextval('suppliers_id_seq'::regclass)
|
||||
02. name : character varying(255) NOT NULL
|
||||
03. contact : character varying(255) NULL
|
||||
04. phone : character varying(255) NULL
|
||||
05. has_dlc : boolean NULL DEFAULT false
|
||||
06. created_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP
|
||||
07. updated_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP
|
||||
08. automatic_reconciliation : boolean NULL DEFAULT false
|
||||
📈 Nombre d'enregistrements: 45
|
||||
|
||||
TABLE: TASKS
|
||||
===========
|
||||
|
||||
01. id : integer NOT NULL DEFAULT nextval('tasks_id_seq'::regclass)
|
||||
02. title : character varying(255) NOT NULL
|
||||
03. description : text NULL
|
||||
04. status : character varying(50) NOT NULL DEFAULT 'pending'::character varying
|
||||
05. priority : character varying(50) NOT NULL DEFAULT 'medium'::character varying
|
||||
06. assigned_to : character varying(255) NULL
|
||||
07. due_date : date NULL
|
||||
08. group_id : integer NOT NULL
|
||||
09. created_by : character varying(255) NOT NULL
|
||||
10. created_at : timestamp without time zone NOT NULL DEFAULT CURRENT_TIMESTAMP
|
||||
11. updated_at : timestamp without time zone NOT NULL DEFAULT CURRENT_TIMESTAMP
|
||||
12. start_date : timestamp without time zone NULL
|
||||
13. completed_at : timestamp without time zone NULL
|
||||
14. completed_by : character varying(255) NULL
|
||||
📈 Nombre d'enregistrements: 76
|
||||
|
||||
TABLE: USER_GROUPS
|
||||
=================
|
||||
|
||||
01. user_id : character varying(255) NOT NULL
|
||||
02. group_id : integer NOT NULL
|
||||
📈 Nombre d'enregistrements: 7
|
||||
|
||||
TABLE: USER_ROLES
|
||||
================
|
||||
|
||||
01. user_id : character varying(255) NOT NULL
|
||||
02. role_id : integer NOT NULL
|
||||
03. assigned_by : character varying(255) NULL
|
||||
04. assigned_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP
|
||||
📈 Nombre d'enregistrements: 1
|
||||
|
||||
TABLE: USERS
|
||||
===========
|
||||
|
||||
01. id : character varying(255) NOT NULL
|
||||
02. username : character varying(255) NOT NULL
|
||||
03. email : character varying(255) NULL
|
||||
04. name : character varying(255) NULL
|
||||
05. first_name : character varying(255) NULL
|
||||
06. last_name : character varying(255) NULL
|
||||
07. profile_image_url : text NULL
|
||||
08. password : character varying(255) NULL
|
||||
09. role : character varying(50) NULL DEFAULT 'employee'::character varying
|
||||
10. password_changed : boolean NULL DEFAULT false
|
||||
11. created_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP
|
||||
12. updated_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP
|
||||
📈 Nombre d'enregistrements: 8
|
||||
|
||||
TABLE: WEATHER_DATA
|
||||
==================
|
||||
|
||||
01. id : integer NOT NULL DEFAULT nextval('weather_data_id_seq'::regclass)
|
||||
02. date : date NOT NULL
|
||||
03. location : text NOT NULL
|
||||
04. temp_max : text NOT NULL
|
||||
05. temp_min : text NOT NULL
|
||||
06. icon : text NOT NULL
|
||||
07. conditions : text NOT NULL
|
||||
08. is_current_year : boolean NOT NULL DEFAULT true
|
||||
09. created_at : timestamp with time zone NULL DEFAULT CURRENT_TIMESTAMP
|
||||
10. updated_at : timestamp with time zone NULL DEFAULT CURRENT_TIMESTAMP
|
||||
📈 Nombre d'enregistrements: 63
|
||||
|
||||
TABLE: WEATHER_SETTINGS
|
||||
======================
|
||||
|
||||
01. id : integer NOT NULL DEFAULT nextval('weather_settings_id_seq'::regclass)
|
||||
02. api_key : text NOT NULL
|
||||
03. location : text NOT NULL DEFAULT 'Paris, France'::text
|
||||
04. is_active : boolean NOT NULL DEFAULT true
|
||||
05. created_at : timestamp with time zone NULL DEFAULT CURRENT_TIMESTAMP
|
||||
06. updated_at : timestamp with time zone NULL DEFAULT CURRENT_TIMESTAMP
|
||||
📈 Nombre d'enregistrements: 1
|
||||
|
||||
TABLE: WEBHOOK_BAP_CONFIG
|
||||
========================
|
||||
|
||||
01. id : integer NOT NULL DEFAULT nextval('webhook_bap_config_id_seq'::regclass)
|
||||
02. name : character varying(100) NOT NULL DEFAULT 'Configuration BAP'::character varying
|
||||
03. webhook_url : text NOT NULL
|
||||
04. description : text NULL
|
||||
05. is_active : boolean NOT NULL DEFAULT true
|
||||
06. created_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP
|
||||
07. updated_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP
|
||||
📈 Nombre d'enregistrements: 1
|
||||
|
||||
CONTRAINTES DE CLÉS ÉTRANGÈRES:
|
||||
===================================
|
||||
|
||||
avoirs.created_by → users.id
|
||||
avoirs.group_id → groups.id
|
||||
avoirs.supplier_id → suppliers.id
|
||||
calendar_events.created_by → users.id
|
||||
calendar_events.group_id → groups.id
|
||||
client_orders.created_by → users.id
|
||||
client_orders.group_id → groups.id
|
||||
command_items.command_id → commands.id
|
||||
commands.created_by → users.id
|
||||
commands.group_id → groups.id
|
||||
commands.supplier_id → suppliers.id
|
||||
customer_orders.created_by → users.id
|
||||
customer_orders.group_id → groups.id
|
||||
customer_orders.supplier_id → suppliers.id
|
||||
customers.created_by → users.id
|
||||
customers.group_id → groups.id
|
||||
dashboard_messages.store_id → groups.id
|
||||
database_backups.created_by → users.id
|
||||
deliveries.created_by → users.id
|
||||
deliveries.group_id → groups.id
|
||||
deliveries.order_id → orders.id
|
||||
deliveries.supplier_id → suppliers.id
|
||||
delivery_items.delivery_id → deliveries.id
|
||||
dlc_products.created_by → users.id
|
||||
dlc_products.group_id → groups.id
|
||||
dlc_products.supplier_id → suppliers.id
|
||||
dlc_products.validated_by → users.id
|
||||
invoice_verification_cache.group_id → groups.id
|
||||
invoice_verifications.delivery_id → deliveries.id
|
||||
invoice_verifications.group_id → groups.id
|
||||
invoices.created_by → users.id
|
||||
invoices.group_id → groups.id
|
||||
invoices.supplier_id → suppliers.id
|
||||
nocodb_config.created_by → users.id
|
||||
orders.created_by → users.id
|
||||
orders.group_id → groups.id
|
||||
orders.supplier_id → suppliers.id
|
||||
publicities.created_by → users.id
|
||||
publicity_participations.group_id → groups.id
|
||||
publicity_participations.publicity_id → publicities.id
|
||||
reconciliation_comments.author_id → users.id
|
||||
reconciliation_comments.delivery_id → deliveries.id
|
||||
reconciliation_comments.group_id → groups.id
|
||||
role_permissions.permission_id → permissions.id
|
||||
role_permissions.role_id → roles.id
|
||||
sav_ticket_history.ticket_id → sav_tickets.id
|
||||
sav_tickets.group_id → groups.id
|
||||
sav_tickets.supplier_id → suppliers.id
|
||||
sessions.user_id → users.id
|
||||
stores.manager_id → users.id
|
||||
tasks.completed_by → users.id
|
||||
tasks.created_by → users.id
|
||||
tasks.group_id → groups.id
|
||||
user_groups.group_id → groups.id
|
||||
user_groups.user_id → users.id
|
||||
user_roles.assigned_by → users.id
|
||||
user_roles.role_id → roles.id
|
||||
user_roles.user_id → users.id
|
||||
|
||||
===============================================
|
||||
FIN DU RAPPORT - 2025-09-15T08:08:00.355Z
|
||||
===============================================
|
||||
+641
@@ -0,0 +1,641 @@
|
||||
LOGIFLOW - RAPPORT SCHÉMA BASE DE DONNÉES PRODUCTION
|
||||
===============================================
|
||||
|
||||
GÉNÉRÉ LE : 2025-09-15T08:08:00.355Z
|
||||
SERVEUR : Production privé LogiFlow
|
||||
ENVIRONNEMENT : PostgreSQL Docker
|
||||
UTILISATEUR : admin
|
||||
|
||||
===============================================
|
||||
RÉSUMÉ DU SCAN
|
||||
===============================================
|
||||
|
||||
TOTAL DES TABLES TROUVÉES: 37
|
||||
==========================================
|
||||
|
||||
TABLE: AVOIRS
|
||||
============
|
||||
|
||||
01. id : integer NOT NULL DEFAULT nextval('avoirs_id_seq'::regclass)
|
||||
02. supplier_id : integer NOT NULL
|
||||
03. group_id : integer NOT NULL
|
||||
04. invoice_reference : character varying(255) NULL
|
||||
05. amount : numeric NULL
|
||||
06. comment : text NULL
|
||||
07. commercial_processed : boolean NULL DEFAULT false
|
||||
08. status : character varying(50) NULL DEFAULT 'En attente de demande'::character varying
|
||||
09. webhook_sent : boolean NULL DEFAULT false
|
||||
10. nocodb_verified : boolean NULL DEFAULT false
|
||||
11. nocodb_verified_at : timestamp without time zone NULL
|
||||
12. processed_at : timestamp without time zone NULL
|
||||
13. created_by : character varying(255) NOT NULL
|
||||
14. created_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP
|
||||
15. updated_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP
|
||||
📈 Nombre d'enregistrements: 5
|
||||
|
||||
TABLE: CALENDAR_EVENTS
|
||||
=====================
|
||||
|
||||
01. id : integer NOT NULL DEFAULT nextval('calendar_events_id_seq'::regclass)
|
||||
02. title : character varying(255) NOT NULL
|
||||
03. description : text NULL
|
||||
04. start_date : timestamp without time zone NOT NULL
|
||||
05. end_date : timestamp without time zone NOT NULL
|
||||
06. event_type : character varying(50) NULL DEFAULT 'custom'::character varying
|
||||
07. group_id : integer NULL
|
||||
08. created_by : character varying(255) NULL
|
||||
09. created_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP
|
||||
10. updated_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP
|
||||
📈 Nombre d'enregistrements: 0
|
||||
|
||||
TABLE: CLIENT_ORDERS
|
||||
===================
|
||||
|
||||
01. id : integer NOT NULL DEFAULT nextval('client_orders_id_seq'::regclass)
|
||||
02. order_number : character varying(255) NOT NULL
|
||||
03. client_name : character varying(255) NOT NULL
|
||||
04. client_contact : character varying(255) NULL
|
||||
05. product_description : text NOT NULL
|
||||
06. quantity : integer NOT NULL DEFAULT 1
|
||||
07. unit_price : numeric NULL
|
||||
08. total_amount : numeric NULL
|
||||
09. status : character varying(50) NULL DEFAULT 'pending'::character varying
|
||||
10. delivery_date : date NULL
|
||||
11. notes : text NULL
|
||||
12. group_id : integer NULL
|
||||
13. created_by : character varying(255) NULL
|
||||
14. created_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP
|
||||
15. updated_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP
|
||||
📈 Nombre d'enregistrements: 0
|
||||
|
||||
TABLE: COMMAND_ITEMS
|
||||
===================
|
||||
|
||||
01. id : integer NOT NULL DEFAULT nextval('command_items_id_seq'::regclass)
|
||||
02. command_id : integer NULL
|
||||
03. product_name : character varying(255) NOT NULL
|
||||
04. product_reference : character varying(255) NULL
|
||||
05. quantity : integer NOT NULL
|
||||
06. unit_price : numeric NULL
|
||||
07. total_price : numeric NULL
|
||||
08. created_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP
|
||||
📈 Nombre d'enregistrements: 0
|
||||
|
||||
TABLE: COMMANDS
|
||||
==============
|
||||
|
||||
01. id : integer NOT NULL DEFAULT nextval('commands_id_seq'::regclass)
|
||||
02. command_number : character varying(255) NOT NULL
|
||||
03. supplier_id : integer NULL
|
||||
04. group_id : integer NULL
|
||||
05. command_date : date NOT NULL
|
||||
06. expected_delivery_date : date NULL
|
||||
07. status : character varying(50) NULL DEFAULT 'pending'::character varying
|
||||
08. total_amount : numeric NULL
|
||||
09. notes : text NULL
|
||||
10. created_by : character varying(255) NULL
|
||||
11. created_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP
|
||||
12. updated_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP
|
||||
📈 Nombre d'enregistrements: 0
|
||||
|
||||
TABLE: CUSTOMER_ORDERS
|
||||
=====================
|
||||
|
||||
01. id : integer NOT NULL DEFAULT nextval('customer_orders_id_seq'::regclass)
|
||||
02. order_taker : character varying(255) NOT NULL
|
||||
03. customer_name : character varying(255) NOT NULL
|
||||
04. customer_phone : character varying(255) NULL
|
||||
05. customer_email : character varying(255) NULL
|
||||
06. product_designation : text NOT NULL
|
||||
07. product_reference : character varying(255) NULL
|
||||
08. gencode : character varying(255) NULL
|
||||
09. quantity : integer NULL DEFAULT 1
|
||||
10. supplier_id : integer NULL
|
||||
11. status : character varying(100) NULL DEFAULT 'En attente de Commande'::character varying
|
||||
12. deposit : numeric NULL DEFAULT 0.00
|
||||
13. is_promotional_price : boolean NULL DEFAULT false
|
||||
14. customer_notified : boolean NULL DEFAULT false
|
||||
15. notes : text NULL
|
||||
16. group_id : integer NULL
|
||||
17. created_by : character varying(255) NULL
|
||||
18. created_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP
|
||||
19. updated_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP
|
||||
📈 Nombre d'enregistrements: 80
|
||||
|
||||
TABLE: CUSTOMERS
|
||||
===============
|
||||
|
||||
01. id : integer NOT NULL DEFAULT nextval('customers_id_seq'::regclass)
|
||||
02. name : character varying(255) NOT NULL
|
||||
03. contact_person : character varying(255) NULL
|
||||
04. phone : character varying(255) NULL
|
||||
05. email : character varying(255) NULL
|
||||
06. address : text NULL
|
||||
07. city : character varying(255) NULL
|
||||
08. postal_code : character varying(20) NULL
|
||||
09. notes : text NULL
|
||||
10. group_id : integer NULL
|
||||
11. created_by : character varying(255) NULL
|
||||
12. created_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP
|
||||
13. updated_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP
|
||||
📈 Nombre d'enregistrements: 0
|
||||
|
||||
TABLE: DASHBOARD_MESSAGES
|
||||
========================
|
||||
|
||||
01. id : integer NOT NULL DEFAULT nextval('dashboard_messages_id_seq'::regclass)
|
||||
02. title : character varying(255) NOT NULL
|
||||
03. content : text NOT NULL
|
||||
04. type : character varying(50) NOT NULL DEFAULT 'info'::character varying
|
||||
05. store_id : integer NULL
|
||||
06. created_by : character varying(255) NOT NULL
|
||||
07. created_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP
|
||||
📈 Nombre d'enregistrements: 3
|
||||
|
||||
TABLE: DATABASE_BACKUPS
|
||||
======================
|
||||
|
||||
01. id : character varying(255) NOT NULL
|
||||
02. filename : character varying(255) NOT NULL
|
||||
03. description : text NULL
|
||||
04. size : bigint NULL DEFAULT 0
|
||||
05. created_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP
|
||||
06. created_by : character varying(255) NOT NULL
|
||||
07. tables_count : integer NULL DEFAULT 0
|
||||
08. status : character varying(50) NULL DEFAULT 'creating'::character varying
|
||||
09. backup_type : character varying(10) NULL DEFAULT 'manual'::character varying
|
||||
📈 Nombre d'enregistrements: 10
|
||||
|
||||
TABLE: DELIVERIES
|
||||
================
|
||||
|
||||
01. id : integer NOT NULL DEFAULT nextval('deliveries_id_seq'::regclass)
|
||||
02. order_id : integer NULL
|
||||
03. supplier_id : integer NULL
|
||||
04. group_id : integer NULL
|
||||
05. scheduled_date : date NOT NULL
|
||||
06. delivered_date : timestamp without time zone NULL
|
||||
07. quantity : integer NOT NULL
|
||||
08. unit : character varying(50) NOT NULL
|
||||
09. status : character varying(50) NULL DEFAULT 'pending'::character varying
|
||||
10. notes : text NULL
|
||||
11. bl_number : character varying(255) NULL
|
||||
12. bl_amount : numeric NULL
|
||||
13. invoice_reference : character varying(255) NULL
|
||||
14. invoice_amount : numeric NULL
|
||||
15. reconciled : boolean NULL DEFAULT false
|
||||
16. validated_at : timestamp without time zone NULL
|
||||
17. created_by : character varying(255) NULL
|
||||
18. created_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP
|
||||
19. updated_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP
|
||||
📈 Nombre d'enregistrements: 173
|
||||
|
||||
TABLE: DELIVERY_ITEMS
|
||||
====================
|
||||
|
||||
01. id : integer NOT NULL DEFAULT nextval('delivery_items_id_seq'::regclass)
|
||||
02. delivery_id : integer NULL
|
||||
03. product_name : character varying(255) NOT NULL
|
||||
04. product_reference : character varying(255) NULL
|
||||
05. quantity : integer NOT NULL
|
||||
06. unit : character varying(50) NULL
|
||||
07. notes : text NULL
|
||||
08. created_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP
|
||||
📈 Nombre d'enregistrements: 0
|
||||
|
||||
TABLE: DLC_PRODUCTS
|
||||
==================
|
||||
|
||||
01. id : integer NOT NULL DEFAULT nextval('dlc_products_id_seq'::regclass)
|
||||
02. product_name : character varying(255) NOT NULL
|
||||
03. expiry_date : date NOT NULL
|
||||
04. date_type : character varying(50) NOT NULL DEFAULT 'DLC'::character varying
|
||||
05. quantity : integer NOT NULL DEFAULT 1
|
||||
06. unit : character varying(50) NOT NULL DEFAULT 'unité'::character varying
|
||||
07. supplier_id : integer NOT NULL
|
||||
08. location : character varying(255) NOT NULL DEFAULT 'Magasin'::character varying
|
||||
09. status : character varying(50) NOT NULL DEFAULT 'active'::character varying
|
||||
10. notes : text NULL
|
||||
11. alert_threshold : integer NOT NULL DEFAULT 15
|
||||
12. validated_at : timestamp without time zone NULL
|
||||
13. validated_by : character varying(255) NULL
|
||||
14. group_id : integer NOT NULL
|
||||
15. created_by : character varying(255) NOT NULL
|
||||
16. created_at : timestamp without time zone NOT NULL DEFAULT CURRENT_TIMESTAMP
|
||||
17. updated_at : timestamp without time zone NOT NULL DEFAULT CURRENT_TIMESTAMP
|
||||
18. gencode : character varying(255) NULL
|
||||
19. name : character varying(255) NULL
|
||||
20. dlc_date : date NULL
|
||||
21. product_code : character varying(255) NULL
|
||||
22. description : text NULL
|
||||
23. stock_epuise : boolean NOT NULL DEFAULT false
|
||||
24. stock_epuise_by : character varying(255) NULL
|
||||
25. stock_epuise_at : timestamp without time zone NULL
|
||||
📈 Nombre d'enregistrements: 592
|
||||
|
||||
TABLE: GROUPS
|
||||
============
|
||||
|
||||
01. id : integer NOT NULL DEFAULT nextval('groups_id_seq'::regclass)
|
||||
02. name : character varying(255) NOT NULL
|
||||
03. color : character varying(20) NULL DEFAULT '#1976D2'::character varying
|
||||
04. nocodb_config_id : integer NULL
|
||||
05. nocodb_table_id : character varying(255) NULL
|
||||
06. nocodb_table_name : character varying(255) NULL
|
||||
07. invoice_column_name : character varying(255) NULL
|
||||
08. created_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP
|
||||
09. updated_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP
|
||||
10. nocodb_bl_column_name : character varying(255) NULL
|
||||
11. nocodb_amount_column_name : character varying(255) NULL
|
||||
12. nocodb_supplier_column_name : character varying(255) NULL
|
||||
13. webhook_url : character varying(500) NULL
|
||||
📈 Nombre d'enregistrements: 2
|
||||
|
||||
TABLE: INVOICE_VERIFICATION_CACHE
|
||||
================================
|
||||
|
||||
01. id : integer NOT NULL DEFAULT nextval('invoice_verification_cache_id_seq'::regclass)
|
||||
02. cache_key : character varying(255) NOT NULL
|
||||
03. group_id : integer NOT NULL
|
||||
04. invoice_reference : character varying(255) NOT NULL
|
||||
05. supplier_name : character varying(255) NULL
|
||||
06. exists : boolean NOT NULL
|
||||
07. match_type : character varying(50) NOT NULL
|
||||
08. error_message : text NULL
|
||||
09. cache_hit : boolean NULL DEFAULT false
|
||||
10. api_call_time : integer NULL
|
||||
11. expires_at : timestamp without time zone NOT NULL
|
||||
12. created_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP
|
||||
13. updated_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP
|
||||
14. is_reconciled : boolean NULL DEFAULT false
|
||||
📈 Nombre d'enregistrements: 220
|
||||
|
||||
TABLE: INVOICE_VERIFICATIONS
|
||||
===========================
|
||||
|
||||
01. id : integer NOT NULL DEFAULT nextval('invoice_verifications_id_seq'::regclass)
|
||||
02. delivery_id : integer NOT NULL
|
||||
03. group_id : integer NOT NULL
|
||||
04. invoice_reference : character varying(255) NOT NULL
|
||||
05. supplier_name : character varying(255) NULL
|
||||
06. exists : boolean NOT NULL
|
||||
07. match_type : character varying(50) NULL
|
||||
08. verified_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP
|
||||
09. is_valid : boolean NULL DEFAULT true
|
||||
10. last_checked_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP
|
||||
📈 Nombre d'enregistrements: 15
|
||||
|
||||
TABLE: INVOICES
|
||||
==============
|
||||
|
||||
01. id : integer NOT NULL DEFAULT nextval('invoices_id_seq'::regclass)
|
||||
02. invoice_number : character varying(255) NOT NULL
|
||||
03. supplier_id : integer NULL
|
||||
04. group_id : integer NULL
|
||||
05. invoice_date : date NOT NULL
|
||||
06. due_date : date NULL
|
||||
07. amount : numeric NOT NULL
|
||||
08. status : character varying(50) NULL DEFAULT 'pending'::character varying
|
||||
09. payment_date : date NULL
|
||||
10. notes : text NULL
|
||||
11. created_by : character varying(255) NULL
|
||||
12. created_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP
|
||||
13. updated_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP
|
||||
📈 Nombre d'enregistrements: 0
|
||||
|
||||
TABLE: NOCODB_CONFIG
|
||||
===================
|
||||
|
||||
01. id : integer NOT NULL DEFAULT nextval('nocodb_config_id_seq'::regclass)
|
||||
02. name : character varying(255) NOT NULL
|
||||
03. base_url : character varying(255) NOT NULL
|
||||
04. project_id : character varying(255) NOT NULL
|
||||
05. api_token : character varying(255) NOT NULL
|
||||
06. description : text NULL
|
||||
07. is_active : boolean NULL DEFAULT true
|
||||
08. created_by : character varying(255) NULL
|
||||
09. created_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP
|
||||
10. updated_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP
|
||||
📈 Nombre d'enregistrements: 1
|
||||
|
||||
TABLE: ORDERS
|
||||
============
|
||||
|
||||
01. id : integer NOT NULL DEFAULT nextval('orders_id_seq'::regclass)
|
||||
02. supplier_id : integer NULL
|
||||
03. group_id : integer NULL
|
||||
04. planned_date : date NOT NULL
|
||||
05. quantity : integer NULL
|
||||
06. unit : character varying(50) NULL
|
||||
07. status : character varying(50) NULL DEFAULT 'pending'::character varying
|
||||
08. notes : text NULL
|
||||
09. created_by : character varying(255) NULL
|
||||
10. created_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP
|
||||
11. updated_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP
|
||||
📈 Nombre d'enregistrements: 114
|
||||
|
||||
TABLE: PERMISSIONS
|
||||
=================
|
||||
|
||||
01. id : integer NOT NULL DEFAULT nextval('permissions_id_seq'::regclass)
|
||||
02. name : character varying(255) NOT NULL
|
||||
03. display_name : character varying(255) NOT NULL
|
||||
04. description : text NULL
|
||||
05. category : character varying(255) NOT NULL
|
||||
06. action : character varying(255) NOT NULL
|
||||
07. resource : character varying(255) NOT NULL
|
||||
08. is_system : boolean NULL DEFAULT true
|
||||
09. created_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP
|
||||
📈 Nombre d'enregistrements: 7
|
||||
|
||||
TABLE: PUBLICITIES
|
||||
=================
|
||||
|
||||
01. id : integer NOT NULL DEFAULT nextval('publicities_id_seq'::regclass)
|
||||
02. pub_number : character varying(255) NOT NULL
|
||||
03. designation : text NOT NULL
|
||||
04. start_date : date NOT NULL
|
||||
05. end_date : date NOT NULL
|
||||
06. year : integer NOT NULL
|
||||
07. created_by : character varying(255) NULL
|
||||
08. created_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP
|
||||
09. updated_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP
|
||||
📈 Nombre d'enregistrements: 50
|
||||
|
||||
TABLE: PUBLICITY_PARTICIPATIONS
|
||||
==============================
|
||||
|
||||
01. publicity_id : integer NOT NULL
|
||||
02. group_id : integer NOT NULL
|
||||
📈 Nombre d'enregistrements: 46
|
||||
|
||||
TABLE: RECONCILIATION_COMMENTS
|
||||
=============================
|
||||
|
||||
01. id : integer NOT NULL DEFAULT nextval('reconciliation_comments_id_seq'::regclass)
|
||||
02. content : text NOT NULL
|
||||
03. type : character varying(255) NOT NULL
|
||||
04. delivery_id : integer NOT NULL
|
||||
05. author_id : character varying(255) NOT NULL
|
||||
06. group_id : integer NOT NULL
|
||||
07. created_at : timestamp without time zone NULL DEFAULT now()
|
||||
08. updated_at : timestamp without time zone NULL DEFAULT now()
|
||||
📈 Nombre d'enregistrements: 0
|
||||
|
||||
TABLE: ROLE_PERMISSIONS
|
||||
======================
|
||||
|
||||
01. role_id : integer NOT NULL
|
||||
02. permission_id : integer NOT NULL
|
||||
📈 Nombre d'enregistrements: 21
|
||||
|
||||
TABLE: ROLES
|
||||
===========
|
||||
|
||||
01. id : integer NOT NULL DEFAULT nextval('roles_id_seq'::regclass)
|
||||
02. name : character varying(255) NOT NULL
|
||||
03. display_name : character varying(255) NOT NULL
|
||||
04. description : text NULL
|
||||
05. color : character varying(7) NULL DEFAULT '#6b7280'::character varying
|
||||
06. is_system : boolean NULL DEFAULT false
|
||||
07. is_active : boolean NULL DEFAULT true
|
||||
08. created_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP
|
||||
09. updated_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP
|
||||
📈 Nombre d'enregistrements: 4
|
||||
|
||||
TABLE: SAV_TICKET_HISTORY
|
||||
========================
|
||||
|
||||
01. id : integer NOT NULL DEFAULT nextval('sav_ticket_history_id_seq'::regclass)
|
||||
02. ticket_id : integer NOT NULL
|
||||
03. action : character varying(100) NOT NULL
|
||||
04. description : text NULL
|
||||
05. created_by : character varying(255) NOT NULL
|
||||
06. created_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP
|
||||
📈 Nombre d'enregistrements: 2
|
||||
|
||||
TABLE: SAV_TICKETS
|
||||
=================
|
||||
|
||||
01. id : integer NOT NULL DEFAULT nextval('sav_tickets_id_seq'::regclass)
|
||||
02. ticket_number : character varying(50) NOT NULL
|
||||
03. supplier_id : integer NOT NULL
|
||||
04. group_id : integer NOT NULL
|
||||
05. product_gencode : character varying(255) NOT NULL
|
||||
06. product_reference : character varying(255) NULL
|
||||
07. product_designation : character varying(500) NOT NULL
|
||||
08. problem_type : character varying(100) NOT NULL
|
||||
09. problem_description : text NOT NULL
|
||||
10. resolution_description : text NULL
|
||||
11. status : character varying(50) NOT NULL DEFAULT 'nouveau'::character varying
|
||||
12. created_by : character varying(255) NOT NULL
|
||||
13. created_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP
|
||||
14. updated_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP
|
||||
15. resolved_at : timestamp without time zone NULL
|
||||
16. closed_at : timestamp without time zone NULL
|
||||
17. client_name : character varying(255) NULL
|
||||
18. client_phone : character varying(255) NULL
|
||||
19. priority : character varying(50) NOT NULL DEFAULT 'normale'::character varying
|
||||
📈 Nombre d'enregistrements: 1
|
||||
|
||||
TABLE: SESSION
|
||||
=============
|
||||
|
||||
01. sid : character varying NOT NULL
|
||||
02. sess : json NOT NULL
|
||||
03. expire : timestamp without time zone NOT NULL
|
||||
📈 Nombre d'enregistrements: 13
|
||||
|
||||
TABLE: SESSIONS
|
||||
==============
|
||||
|
||||
01. id : integer NOT NULL DEFAULT nextval('sessions_id_seq'::regclass)
|
||||
02. user_id : character varying(255) NULL
|
||||
03. session_token : character varying(255) NOT NULL
|
||||
04. expires_at : timestamp without time zone NOT NULL
|
||||
05. created_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP
|
||||
📈 Nombre d'enregistrements: 0
|
||||
|
||||
TABLE: STORES
|
||||
============
|
||||
|
||||
01. id : integer NOT NULL DEFAULT nextval('stores_id_seq'::regclass)
|
||||
02. name : character varying(255) NOT NULL
|
||||
03. address : text NULL
|
||||
04. city : character varying(255) NULL
|
||||
05. postal_code : character varying(20) NULL
|
||||
06. phone : character varying(255) NULL
|
||||
07. manager_id : character varying(255) NULL
|
||||
08. is_active : boolean NULL DEFAULT true
|
||||
09. created_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP
|
||||
10. updated_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP
|
||||
📈 Nombre d'enregistrements: 0
|
||||
|
||||
TABLE: SUPPLIERS
|
||||
===============
|
||||
|
||||
01. id : integer NOT NULL DEFAULT nextval('suppliers_id_seq'::regclass)
|
||||
02. name : character varying(255) NOT NULL
|
||||
03. contact : character varying(255) NULL
|
||||
04. phone : character varying(255) NULL
|
||||
05. has_dlc : boolean NULL DEFAULT false
|
||||
06. created_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP
|
||||
07. updated_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP
|
||||
08. automatic_reconciliation : boolean NULL DEFAULT false
|
||||
📈 Nombre d'enregistrements: 45
|
||||
|
||||
TABLE: TASKS
|
||||
===========
|
||||
|
||||
01. id : integer NOT NULL DEFAULT nextval('tasks_id_seq'::regclass)
|
||||
02. title : character varying(255) NOT NULL
|
||||
03. description : text NULL
|
||||
04. status : character varying(50) NOT NULL DEFAULT 'pending'::character varying
|
||||
05. priority : character varying(50) NOT NULL DEFAULT 'medium'::character varying
|
||||
06. assigned_to : character varying(255) NULL
|
||||
07. due_date : date NULL
|
||||
08. group_id : integer NOT NULL
|
||||
09. created_by : character varying(255) NOT NULL
|
||||
10. created_at : timestamp without time zone NOT NULL DEFAULT CURRENT_TIMESTAMP
|
||||
11. updated_at : timestamp without time zone NOT NULL DEFAULT CURRENT_TIMESTAMP
|
||||
12. start_date : timestamp without time zone NULL
|
||||
13. completed_at : timestamp without time zone NULL
|
||||
14. completed_by : character varying(255) NULL
|
||||
📈 Nombre d'enregistrements: 76
|
||||
|
||||
TABLE: USER_GROUPS
|
||||
=================
|
||||
|
||||
01. user_id : character varying(255) NOT NULL
|
||||
02. group_id : integer NOT NULL
|
||||
📈 Nombre d'enregistrements: 7
|
||||
|
||||
TABLE: USER_ROLES
|
||||
================
|
||||
|
||||
01. user_id : character varying(255) NOT NULL
|
||||
02. role_id : integer NOT NULL
|
||||
03. assigned_by : character varying(255) NULL
|
||||
04. assigned_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP
|
||||
📈 Nombre d'enregistrements: 1
|
||||
|
||||
TABLE: USERS
|
||||
===========
|
||||
|
||||
01. id : character varying(255) NOT NULL
|
||||
02. username : character varying(255) NOT NULL
|
||||
03. email : character varying(255) NULL
|
||||
04. name : character varying(255) NULL
|
||||
05. first_name : character varying(255) NULL
|
||||
06. last_name : character varying(255) NULL
|
||||
07. profile_image_url : text NULL
|
||||
08. password : character varying(255) NULL
|
||||
09. role : character varying(50) NULL DEFAULT 'employee'::character varying
|
||||
10. password_changed : boolean NULL DEFAULT false
|
||||
11. created_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP
|
||||
12. updated_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP
|
||||
📈 Nombre d'enregistrements: 8
|
||||
|
||||
TABLE: WEATHER_DATA
|
||||
==================
|
||||
|
||||
01. id : integer NOT NULL DEFAULT nextval('weather_data_id_seq'::regclass)
|
||||
02. date : date NOT NULL
|
||||
03. location : text NOT NULL
|
||||
04. temp_max : text NOT NULL
|
||||
05. temp_min : text NOT NULL
|
||||
06. icon : text NOT NULL
|
||||
07. conditions : text NOT NULL
|
||||
08. is_current_year : boolean NOT NULL DEFAULT true
|
||||
09. created_at : timestamp with time zone NULL DEFAULT CURRENT_TIMESTAMP
|
||||
10. updated_at : timestamp with time zone NULL DEFAULT CURRENT_TIMESTAMP
|
||||
📈 Nombre d'enregistrements: 63
|
||||
|
||||
TABLE: WEATHER_SETTINGS
|
||||
======================
|
||||
|
||||
01. id : integer NOT NULL DEFAULT nextval('weather_settings_id_seq'::regclass)
|
||||
02. api_key : text NOT NULL
|
||||
03. location : text NOT NULL DEFAULT 'Paris, France'::text
|
||||
04. is_active : boolean NOT NULL DEFAULT true
|
||||
05. created_at : timestamp with time zone NULL DEFAULT CURRENT_TIMESTAMP
|
||||
06. updated_at : timestamp with time zone NULL DEFAULT CURRENT_TIMESTAMP
|
||||
📈 Nombre d'enregistrements: 1
|
||||
|
||||
TABLE: WEBHOOK_BAP_CONFIG
|
||||
========================
|
||||
|
||||
01. id : integer NOT NULL DEFAULT nextval('webhook_bap_config_id_seq'::regclass)
|
||||
02. name : character varying(100) NOT NULL DEFAULT 'Configuration BAP'::character varying
|
||||
03. webhook_url : text NOT NULL
|
||||
04. description : text NULL
|
||||
05. is_active : boolean NOT NULL DEFAULT true
|
||||
06. created_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP
|
||||
07. updated_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP
|
||||
📈 Nombre d'enregistrements: 1
|
||||
|
||||
CONTRAINTES DE CLÉS ÉTRANGÈRES:
|
||||
===================================
|
||||
|
||||
avoirs.created_by → users.id
|
||||
avoirs.group_id → groups.id
|
||||
avoirs.supplier_id → suppliers.id
|
||||
calendar_events.created_by → users.id
|
||||
calendar_events.group_id → groups.id
|
||||
client_orders.created_by → users.id
|
||||
client_orders.group_id → groups.id
|
||||
command_items.command_id → commands.id
|
||||
commands.created_by → users.id
|
||||
commands.group_id → groups.id
|
||||
commands.supplier_id → suppliers.id
|
||||
customer_orders.created_by → users.id
|
||||
customer_orders.group_id → groups.id
|
||||
customer_orders.supplier_id → suppliers.id
|
||||
customers.created_by → users.id
|
||||
customers.group_id → groups.id
|
||||
dashboard_messages.store_id → groups.id
|
||||
database_backups.created_by → users.id
|
||||
deliveries.created_by → users.id
|
||||
deliveries.group_id → groups.id
|
||||
deliveries.order_id → orders.id
|
||||
deliveries.supplier_id → suppliers.id
|
||||
delivery_items.delivery_id → deliveries.id
|
||||
dlc_products.created_by → users.id
|
||||
dlc_products.group_id → groups.id
|
||||
dlc_products.supplier_id → suppliers.id
|
||||
dlc_products.validated_by → users.id
|
||||
invoice_verification_cache.group_id → groups.id
|
||||
invoice_verifications.delivery_id → deliveries.id
|
||||
invoice_verifications.group_id → groups.id
|
||||
invoices.created_by → users.id
|
||||
invoices.group_id → groups.id
|
||||
invoices.supplier_id → suppliers.id
|
||||
nocodb_config.created_by → users.id
|
||||
orders.created_by → users.id
|
||||
orders.group_id → groups.id
|
||||
orders.supplier_id → suppliers.id
|
||||
publicities.created_by → users.id
|
||||
publicity_participations.group_id → groups.id
|
||||
publicity_participations.publicity_id → publicities.id
|
||||
reconciliation_comments.author_id → users.id
|
||||
reconciliation_comments.delivery_id → deliveries.id
|
||||
reconciliation_comments.group_id → groups.id
|
||||
role_permissions.permission_id → permissions.id
|
||||
role_permissions.role_id → roles.id
|
||||
sav_ticket_history.ticket_id → sav_tickets.id
|
||||
sav_tickets.group_id → groups.id
|
||||
sav_tickets.supplier_id → suppliers.id
|
||||
sessions.user_id → users.id
|
||||
stores.manager_id → users.id
|
||||
tasks.completed_by → users.id
|
||||
tasks.created_by → users.id
|
||||
tasks.group_id → groups.id
|
||||
user_groups.group_id → groups.id
|
||||
user_groups.user_id → users.id
|
||||
user_roles.assigned_by → users.id
|
||||
user_roles.role_id → roles.id
|
||||
user_roles.user_id → users.id
|
||||
|
||||
===============================================
|
||||
FIN DU RAPPORT - 2025-09-15T08:08:00.355Z
|
||||
===============================================
|
||||
+7
-6
@@ -4633,18 +4633,19 @@ export class MemStorage implements IStorage {
|
||||
}
|
||||
}
|
||||
|
||||
// Use MemStorage in development, DatabaseStorage in production
|
||||
// Use DatabaseStorage when DATABASE_URL is available, MemStorage as fallback
|
||||
const isProduction = process.env.NODE_ENV === 'production';
|
||||
const hasDatabase = !!process.env.DATABASE_URL;
|
||||
console.log('🔗 Database initialization:', {
|
||||
NODE_ENV: process.env.NODE_ENV,
|
||||
isProduction: isProduction,
|
||||
hasDbUrl: !!process.env.DATABASE_URL,
|
||||
hasDbUrl: hasDatabase,
|
||||
dbHost: process.env.DATABASE_URL?.split('@')[1]?.split('/')[0] || 'unknown'
|
||||
});
|
||||
|
||||
export const storage: IStorage = isProduction ? new DatabaseStorage() : new MemStorage();
|
||||
if (isProduction) {
|
||||
console.log('✅ Using DatabaseStorage (production PostgreSQL)');
|
||||
export const storage: IStorage = hasDatabase ? new DatabaseStorage() : new MemStorage();
|
||||
if (hasDatabase) {
|
||||
console.log('✅ Using DatabaseStorage (PostgreSQL database detected)');
|
||||
} else {
|
||||
console.log('🔧 DEV: Using MemStorage (development fallback)');
|
||||
console.log('🔧 DEV: Using MemStorage (no database URL found)');
|
||||
}
|
||||
Reference in new issue
Block a user