didi-website-erp-crm/erp_crm/README.md

153 lines
5.4 KiB
Markdown

# 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=<parola-root-db>
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 | `<parola-root-db>` |
| Site name (intern) | `didi-erp` |
## Suport
Pentru intrebari tehnice: office@clossers.com