Add Ask Mento, customer mood, and Pipecat speech-to-text.

Ship assistant answers, contact moods, voice dictation, and the related CRM UI so these can be deployed to production.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-09-03 14:20:55 +03:30
co-authored by Cursor
parent 0dd2966f3c
commit 7757c0837d
43 changed files with 5156 additions and 1741 deletions
+6
View File
@@ -33,3 +33,9 @@ AI_BASE_URL=https://api.gapgpt.app/v1
AI_API_KEY=change-me
AI_MODEL=gpt-4o-mini
AI_TIMEOUT_MS=45000
# Speech-to-text — Pipecat sidecar on 127.0.0.1:3040 (not public)
STT_ENABLED=true
STT_URL=http://127.0.0.1:3040
STT_INTERNAL_TOKEN=change-me-stt-internal-token
STT_TIMEOUT_MS=60000
+28 -7
View File
@@ -8,7 +8,9 @@ PM2: `mento-crm-api` (cwd: `apps/api`، اسکریپت: `dist/src/main.js`)
کد از Gitea: `http://get.feep.ir/Mahdi/CRM_Montzar.git`
پورت‌های اشغال‌شده روی همین سرور (دست نزنید):
۳۰۰۰ مونتایم · ۳۰۰۱ فوری‌سند · ۳۰۱۰ سوپرادمین · ۳۰۲۰ کاتالوگ
۳۰۰۰ مونتایم · ۳۰۰۱ فوری‌سند · ۳۰۱۰ سوپرادمین · ۳۰۲۰ کاتالوگ
پورت داخلی STT (فقط localhost، عمومی نکنید): **۳۰۴۰** — PM2 `mento-stt`
---
@@ -116,7 +118,22 @@ mkdir -p uploads
# اختیاری یک‌بار: npm run db:seed
```
### ۶) PM2 — فقط پروسهٔ جدید
### ۶) تبدیل صوت به متن (Pipecat)
فقط STT. روی سرور Python 3.11+ لازم است.
```bash
cd /var/www/crm/apps/stt
python3.11 -m venv .venv
.venv/bin/pip install -r requirements.txt
cp .env.example .env
nano .env
```
`OPENAI_API_KEY` و `OPENAI_BASE_URL` را مثل `AI_*` در `apps/api/.env` بگذارید.
`STT_INTERNAL_TOKEN` باید با مقدار همین کلید در `apps/api/.env` یکی باشد.
### ۷) PM2 — فقط پروسه‌های جدید
پروسه‌های موجود را stop نکنید.
@@ -125,11 +142,12 @@ pm2 start /var/www/crm/deploy/ecosystem.config.cjs
pm2 save
pm2 list
curl -sI http://127.0.0.1:3030/api/health
curl -s http://127.0.0.1:3040/health
```
باید `200` بیاید. خطا: `pm2 logs mento-crm-api --lines 80`
باید `200` بیاید. خطا: `pm2 logs mento-crm-api --lines 80` یا `pm2 logs mento-stt --lines 80`
### ۷) Nginx
### ۸) Nginx
```bash
sudo cp /var/www/crm/deploy/nginx-crm.montzar.ir.conf /etc/nginx/sites-available/crm.montzar.ir
@@ -140,7 +158,7 @@ sudo nginx -t && sudo systemctl reload nginx
**HTTPS روی همین باکس:** مثل `ktg.montzar.ir`، فرانت‌پروکسی (`91.247.174.1`) SSL را تمام می‌کند و به این سرور **HTTP :80** می‌زند.
اگر Certbot روی این vhost `return 404` یا فقط HTTPS بگذارد، سایت از بیرون قطع می‌شود — vhost را روی الگوی HTTP نگه دارید (فایل `deploy/nginx-crm.montzar.ir.conf`).
### ۸) تست
### ۹) تست
1. `https://crm.montzar.ir` → ورود پنل
2. دمو: `owner@demo.local` / `demo1234` (اگر seed زده باشید)
@@ -165,6 +183,9 @@ cd apps/api && npx prisma migrate deploy && npx prisma generate && cd ../..
npm run build -w @mento/api
npm run build -w @mento/web
pm2 restart mento-crm-api
# اگر requirements.txt عوض شد:
# cd apps/stt && .venv/bin/pip install -r requirements.txt && cd ../..
pm2 restart mento-stt
```
پاک نکنید: `uploads/` و `apps/api/.env`
@@ -212,7 +233,7 @@ grep -c AutomationAction /var/www/crm/node_modules/@mento/shared/dist/index.d.ts
| این پروژه | بقیه — دست نزنید |
|---|---|
| دامنه `crm.montzar.ir` | `ktg` / `adm` / مونتایم |
| پورت ۳۰۳۰ | ۳۰۰۰ / ۳۰۰۱ / ۳۰۱۰ / ۳۰۲۰ |
| PM2 نام `mento-crm-api` | پروسه‌های موجود |
| پورت ۳۰۳۰ و ۳۰۴۰ (STT فقط localhost) | ۳۰۰۰ / ۳۰۰۱ / ۳۰۱۰ / ۳۰۲۰ |
| PM2 نام `mento-crm-api` و `mento-stt` | پروسه‌های موجود |
| `/var/www/crm` | `/var/www/ktg` و … |
| دیتابیس `mento_crm` روی `:15432` | Postgres مونتایم |
+11
View File
@@ -21,5 +21,16 @@ module.exports = {
max_memory_restart: "600M",
time: true,
},
{
name: "mento-stt",
cwd: "/var/www/crm/apps/stt",
script: ".venv/bin/python",
args: "-m uvicorn main:app --host 127.0.0.1 --port 3040",
interpreter: "none",
instances: 1,
exec_mode: "fork",
max_memory_restart: "500M",
time: true,
},
],
};