Files
customerTicket/README.md
T
2026-09-10 11:34:19 +03:30

46 lines
2.8 KiB
Markdown

# سامانه تیکتینگ فروش
پیاده‌سازی Django Modular Monolith بر اساس سند نیازمندی همین مخزن. رابط فارسی و RTL است و جریان‌های مشتری، کارشناس، دسترسی خصوصی، پیام، فایل، OTP، Magic Link و Notification Outbox را پوشش می‌دهد.
## اجرای محلی
```powershell
python -m venv .venv
.\.venv\Scripts\python -m pip install -r requirements.txt
.\.venv\Scripts\python manage.py migrate
.\.venv\Scripts\python manage.py bootstrap
.\.venv\Scripts\python manage.py createsuperuser
.\.venv\Scripts\python manage.py runserver
```
در محیط توسعه SQLite فعال است. OTP در ترمینال با پیشوند `[DEV OTP]` چاپ می‌شود. برای تست سریع، شماره `09202202129` با کد ثابت `12345` فقط در تنظیمات Development قابل ورود است؛ تنظیمات Production این میان‌بر را غیرفعال نگه می‌دارند. برای ایجاد کارشناس، User با `account_type=STAFF` و StaffProfile بسازید و او را عضو گروه `Sales Expert` یا `Sales Manager` کنید.
## اجرای Production با Docker
```powershell
Copy-Item .env.example .env
docker volume create customer_ticket_static
docker volume create customer_ticket_media
docker compose up --build
docker compose exec web python manage.py createsuperuser
```
قبل از استقرار مقادیر secret و host در `.env` را تغییر دهید. TLS و proxy اپلیکیشن توسط Traefik خود Coolify مدیریت می‌شود. migration، bootstrap و collectstatic هنگام شروع web به شکل خودکار اجرا می‌شوند. Nginx فقط static را سرو می‌کند و فایل‌های آپلودی خصوصی پس از کنترل مجوز مستقیماً توسط Django تحویل داده می‌شوند.
راهنمای کامل تنظیم Coolify، volumeها، PostgreSQL خارجی و worker در [docs/DEPLOYMENT_COOLIFY.md](docs/DEPLOYMENT_COOLIFY.md) است.
## تست
```powershell
.\.venv\Scripts\python -m pytest -q
```
قواعد کلیدی در `apps/tickets/policies.py` متمرکز شده‌اند و عملیات حساس در `apps/tickets/services.py` تراکنشی هستند.
## Environment files
- Direct development with `config.settings.dev` automatically loads `.env.local`.
- Production with `config.settings.prod` can load `.env`; Docker Compose also injects that file into its services.
- Set `DJANGO_ENV_FILE` in the process environment to select another file, such as `/etc/customer-ticket/server.env`.
- Existing process variables always take precedence over values in dotenv files.
- Copy `.env.local.example` to `.env.local` for a safe local starting point; real dotenv files are excluded from Git and Docker images.