# DiDi ERP/CRM Componenta ERP si CRM a platformei DiDi, construita pe ERPNext v15 (Frappe Framework). Gestioneaza facturarea, contabilitatea, clientii, lead-urile si continutul CMS al website-ului public. ## Cuprins - [Arhitectura](#arhitectura) - [Stack tehnic](#stack-tehnic) - [Structura folder](#structura-folder) - [Quickstart](#quickstart) - [Configurare](#configurare) - [Documentatie detaliata](#documentatie-detaliata) --- ## Arhitectura ``` +--------------------+ +-----------+ +----------+ | Website Next.js | <--> | ERPNext | ---> | MariaDB | | (clienti, plati) | API | (gunicorn)| | (date) | +--------------------+ +-----+-----+ +----------+ | +-------+--------+ | Redis cache | | Redis queue | +----------------+ | +-------+--------+ | 3 workeri | | (short/long/ | | default) | | + scheduler | +----------------+ ``` 7 containere: - `didi-erpnext` (web API + nginx) - `didi-mariadb` (baza de date) - `didi-redis-cache`, `didi-redis-queue` - `didi-queue-short`, `didi-queue-long`, `didi-queue-default` (background jobs) - `didi-scheduler` (cron jobs) ## Stack tehnic | Componenta | Versiune | |------------|----------| | ERPNext | v15 | | Frappe Framework | v15 | | MariaDB | 10.11 | | Redis | 7-alpine | | Python | 3.11 (in container) | | Domeniu | Services | | Limba | Romana | | Plan conturi | Romania - Chart of Accounts (OMFP 1802/2014) | | TVA | 21% (cota standard RO de la 01.08.2025) | | Moneda | RON | ## Structura folder ``` erp_crm/ ├── README.md # Acest fisier ├── INSTALL.md # Ghid de instalare de la 0 ├── OPERATIONS.md # Ghid operare (backup, restart, troubleshooting) ├── CONFIGURATION.md # Variabile mediu, credentiale, integrari ├── docker-compose.yml # Stack Docker complet ├── .env # Configurare credentiale (NU se commiteaza) ├── nginx.conf # Reverse proxy intern container ├── bin/ │ ├── entrypoint.sh # ERPNext startup │ ├── start-bench-service.sh # Worker startup │ └── setup-site.sh # Initial site setup (one-time) ├── didi_custom/ # App custom DiDi (Frappe) │ ├── didi_custom/ │ │ ├── hooks.py # Frappe hooks │ │ ├── doctype/ # 4 DocType-uri custom: │ │ │ ├── analysis_report/ # - rezultate analize cu PDF │ │ │ ├── payment_log/ # - log evenimente Stripe │ │ │ ├── service_agreement/# - acorduri servicii │ │ │ └── website_content/ # - CMS pagini website │ │ └── ... │ └── pyproject.toml ├── mariadb-init/ # Init scripts MariaDB │ └── init.sql ├── scripts/ │ ├── setup/ # Scripturi setup (numerotate, idempotente) │ │ ├── 01-config.py # Company, taxe, naming series │ │ ├── 02-doctypes.py # Custom fields pe Customer/Lead/Sales Invoice │ │ ├── 03-cleanup.py # Ascunde module standard ERPNext │ │ ├── 04-populate-content.py# Continut CMS implicit (RO + EN) │ │ ├── 05-translations.py # Traduceri suplimentare │ │ ├── 06-sidebar.py # Workspaces custom (Facturi, Clienti, etc.) │ │ ├── 07-reports.py # Rapoarte DiDi (Dashboard Financiar, CRM) │ │ ├── 08-email.py # Email Account SendGrid + notificari │ │ └── 09-phase2-final.py # Finalizari (suppliers, hidden fields) │ └── archive/ # Scripturi vechi/one-off (referinta) └── docs/ └── oferta/ # Caietul de sarcini + propunerea tehnica ``` ## Quickstart Cere docker si docker compose v2 instalate. Si o retea Docker numita `didi-network`: ```bash docker network create didi-network 2>/dev/null || true ``` Build complet de la 0 (~5 minute): ```bash cd ~/erp_crm bash build-from-zero.sh ``` Dupa ce termina, deschide http://localhost:8080 si te loghezi cu `Administrator` / `admin`. Pentru detalii, vezi [INSTALL.md](./INSTALL.md). ## Configurare Editezi `.env` pentru a schimba credentiale, parole, porturi: ```env MYSQL_ROOT_PASSWORD= ADMIN_PASSWORD=admin ERPNEXT_PORT=8080 SITE_NAME=didi-erp ``` Detalii complete in [CONFIGURATION.md](./CONFIGURATION.md). ## Documentatie detaliata | Document | Scop | |----------|------| | [INSTALL.md](./INSTALL.md) | Build de la 0, dependinte, prima rulare | | [OPERATIONS.md](./OPERATIONS.md) | Backup, restart, log-uri, troubleshooting | | [CONFIGURATION.md](./CONFIGURATION.md) | Env vars, credentiale, integrari externe | | [docs/oferta/](./docs/oferta/) | Caietul de sarcini si propunerea tehnica | ## Credentiale implicite (DE SCHIMBAT la productie) | Cui | Valoare | |-----|---------| | ERPNext Administrator | `Administrator` / `admin` | | MariaDB root | `` | | Site name (intern) | `didi-erp` | ## Suport Pentru intrebari tehnice: office@clossers.com