From aa9236fb92b4dadb73a83ffc7579181a1f556764 Mon Sep 17 00:00:00 2001 From: ahmadrezabd Date: Mon, 5 Jan 2026 14:59:18 +0330 Subject: [PATCH] added all new chanes --- n8n-workflow-example.md | 112 ++++++++ package-lock.json | 346 ++++++++++++++++++++++++- package.json | 1 + public/fonts/shabnam/Shabnam-Bold.ttf | Bin 0 -> 89488 bytes public/fonts/shabnam/Shabnam-Light.ttf | Bin 0 -> 98932 bytes public/fonts/shabnam/Shabnam.ttf | Bin 0 -> 83732 bytes src/hooks/useAuth.ts | 38 ++- src/hooks/useChat.ts | 113 +++++++- src/hooks/useTypewriter.ts | 77 ++++++ src/pages/Auth/Login/LoginPage.tsx | 55 +++- src/pages/Chat/ChatPage.tsx | 204 +++++++++++---- src/services/n8n.ts | 297 +++++++++++++++++++++ src/services/openai.ts | 70 +++++ src/styles/globals.css | 27 +- tailwind.config.js | 5 + vite.config.ts | 23 ++ 16 files changed, 1289 insertions(+), 79 deletions(-) create mode 100644 n8n-workflow-example.md create mode 100644 public/fonts/shabnam/Shabnam-Bold.ttf create mode 100644 public/fonts/shabnam/Shabnam-Light.ttf create mode 100644 public/fonts/shabnam/Shabnam.ttf create mode 100644 src/hooks/useTypewriter.ts create mode 100644 src/services/n8n.ts create mode 100644 src/services/openai.ts diff --git a/n8n-workflow-example.md b/n8n-workflow-example.md new file mode 100644 index 0000000..c91e864 --- /dev/null +++ b/n8n-workflow-example.md @@ -0,0 +1,112 @@ +# راهنمای تنظیم n8n Workflow برای چت + +## گزینه 1: پاسخ ساده بدون GPT + +### Node 1: Webhook +- **HTTP Method**: POST +- **Path**: `/chat` (یا هر مسیری که می‌خواهی) +- **Response Mode**: Using 'Respond to Webhook' Node + +### Node 2: Code (JavaScript) +```javascript +const inputData = $input.item.json; +const userMessage = inputData.message || ''; + +// یک پاسخ ساده برمی‌گردانیم +return { + json: { + response: `شما گفتید: "${userMessage}". این یک پاسخ تست از n8n است!` + } +}; +``` + +### Node 3: Respond to Webhook +- **Response Body**: `{{ $json.response }}` + +--- + +## گزینه 2: با استفاده از GPT (Message a model) + +### Node 1: Webhook +- **HTTP Method**: POST +- **Path**: `/chat` +- **Response Mode**: Using 'Respond to Webhook' Node + +### Node 2: Code (JavaScript) +```javascript +const inputData = $input.item.json; +const userMessage = inputData.message || ''; +const conversationHistory = inputData.conversationHistory || []; + +// ساخت messages array برای GPT +const messages = [ + { + role: 'system', + content: 'شما یک دستیار هوشمند فارسی‌زبان هستید. پاسخ‌های کوتاه و مفید بدهید.' + } +]; + +// اضافه کردن تاریخچه +conversationHistory.forEach(msg => { + messages.push({ + role: msg.role, + content: msg.content + }); +}); + +// اضافه کردن پیام فعلی +messages.push({ + role: 'user', + content: userMessage +}); + +return { + json: { + messages: messages, + model: 'gpt-4o-mini', + temperature: 0.7 + } +}; +``` + +### Node 3: Message a model +- **Model**: `gpt-4o-mini` +- **Messages**: `{{ $json.messages }}` +- **Temperature**: `{{ $json.temperature }}` +- **Credentials**: باید OpenAI API Key را تنظیم کنی + +### Node 4: Code (برای فرمت کردن پاسخ) +```javascript +const gptResponse = $input.item.json; +const responseText = gptResponse.choices?.[0]?.message?.content || + gptResponse.response || + 'پاسخی دریافت نشد'; + +return { + json: { + response: responseText + } +}; +``` + +### Node 5: Respond to Webhook +- **Response Body**: `{{ $json.response }}` + +--- + +## نکات مهم: + +1. **URL Webhook**: بعد از فعال کردن Webhook، URL را کپی کن و در `.env` بذار: + ``` + VITE_N8N_WEBHOOK_URL=https://your-n8n.com/webhook/chat + ``` + +2. **فعال کردن Workflow**: حتماً Workflow را فعال (Activate) کن + +3. **تست**: می‌توانی با Postman یا curl تست کنی: + ```bash + curl -X POST https://your-n8n.com/webhook/chat \ + -H "Content-Type: application/json" \ + -d '{"message":"سلام","userId":"test-user"}' + ``` + diff --git a/package-lock.json b/package-lock.json index be77543..c2b2d8d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8,6 +8,7 @@ "name": "pwa-react-app", "version": "1.0.0", "dependencies": { + "@n8n/chat": "^1.2.1", "@radix-ui/react-avatar": "^1.0.4", "@radix-ui/react-dialog": "^1.0.5", "@radix-ui/react-dropdown-menu": "^2.0.6", @@ -390,7 +391,6 @@ "version": "7.27.1", "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz", "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==", - "devOptional": true, "license": "MIT", "engines": { "node": ">=6.9.0" @@ -400,7 +400,6 @@ "version": "7.28.5", "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz", "integrity": "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==", - "devOptional": true, "license": "MIT", "engines": { "node": ">=6.9.0" @@ -449,7 +448,6 @@ "version": "7.28.5", "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.28.5.tgz", "integrity": "sha512-KKBU1VGYR7ORr3At5HAtUQ+TV3SzRCXmA/8OdDZiLDBIZxVyzXuztPjfLd3BV1PRAQGCMWWSHYhL0F8d5uHBDQ==", - "devOptional": true, "license": "MIT", "dependencies": { "@babel/types": "^7.28.5" @@ -1653,7 +1651,6 @@ "version": "7.28.5", "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.28.5.tgz", "integrity": "sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA==", - "devOptional": true, "license": "MIT", "dependencies": { "@babel/helper-string-parser": "^7.27.1", @@ -2342,6 +2339,27 @@ "@jridgewell/sourcemap-codec": "^1.4.14" } }, + "node_modules/@n8n/chat": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@n8n/chat/-/chat-1.2.1.tgz", + "integrity": "sha512-zoYGr1T91fIJAmrf5d7YkhB9AIN5pXCFtB016s2PPRJvfA1QdYnJK3T8TktJ0KeGa9A+jeraxC9du3/YVfvXxg==", + "license": "SEE LICENSE IN LICENSE.md", + "dependencies": { + "@n8n/design-system": "2.2.1", + "@vueuse/core": "^10.11.0", + "highlight.js": "11.8.0", + "markdown-it-link-attributes": "^4.0.1", + "uuid": "10.0.0", + "vue": "^3.5.13", + "vue-markdown-render": "^2.2.1" + } + }, + "node_modules/@n8n/design-system": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@n8n/design-system/-/design-system-2.2.1.tgz", + "integrity": "sha512-ej8xIYC4pUGgb83Bqu/uE4WYLb0NlYIztC9SRxeHcseekIddeLaEQ70uJcGOo1qMxSm6vOJh/m4m3gDgCO557w==", + "license": "SEE LICENSE IN LICENSE.md" + }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", @@ -3768,6 +3786,12 @@ "dev": true, "license": "MIT" }, + "node_modules/@types/web-bluetooth": { + "version": "0.0.20", + "resolved": "https://registry.npmjs.org/@types/web-bluetooth/-/web-bluetooth-0.0.20.tgz", + "integrity": "sha512-g9gZnnXVq7gM7v3tJCWV/qw7w+KeOlSHAhgF9RytFyifW6AF61hdT2ucrYhPq9hLs5JIryeupHV3qGk95dH9ow==", + "license": "MIT" + }, "node_modules/@types/ws": { "version": "8.18.1", "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.18.1.tgz", @@ -4003,6 +4027,151 @@ "vite": "^4.2.0 || ^5.0.0 || ^6.0.0 || ^7.0.0" } }, + "node_modules/@vue/compiler-core": { + "version": "3.5.26", + "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.5.26.tgz", + "integrity": "sha512-vXyI5GMfuoBCnv5ucIT7jhHKl55Y477yxP6fc4eUswjP8FG3FFVFd41eNDArR+Uk3QKn2Z85NavjaxLxOC19/w==", + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.28.5", + "@vue/shared": "3.5.26", + "entities": "^7.0.0", + "estree-walker": "^2.0.2", + "source-map-js": "^1.2.1" + } + }, + "node_modules/@vue/compiler-dom": { + "version": "3.5.26", + "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.5.26.tgz", + "integrity": "sha512-y1Tcd3eXs834QjswshSilCBnKGeQjQXB6PqFn/1nxcQw4pmG42G8lwz+FZPAZAby6gZeHSt/8LMPfZ4Rb+Bd/A==", + "license": "MIT", + "dependencies": { + "@vue/compiler-core": "3.5.26", + "@vue/shared": "3.5.26" + } + }, + "node_modules/@vue/compiler-sfc": { + "version": "3.5.26", + "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.5.26.tgz", + "integrity": "sha512-egp69qDTSEZcf4bGOSsprUr4xI73wfrY5oRs6GSgXFTiHrWj4Y3X5Ydtip9QMqiCMCPVwLglB9GBxXtTadJ3mA==", + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.28.5", + "@vue/compiler-core": "3.5.26", + "@vue/compiler-dom": "3.5.26", + "@vue/compiler-ssr": "3.5.26", + "@vue/shared": "3.5.26", + "estree-walker": "^2.0.2", + "magic-string": "^0.30.21", + "postcss": "^8.5.6", + "source-map-js": "^1.2.1" + } + }, + "node_modules/@vue/compiler-sfc/node_modules/magic-string": { + "version": "0.30.21", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.21.tgz", + "integrity": "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==", + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.5" + } + }, + "node_modules/@vue/compiler-ssr": { + "version": "3.5.26", + "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.5.26.tgz", + "integrity": "sha512-lZT9/Y0nSIRUPVvapFJEVDbEXruZh2IYHMk2zTtEgJSlP5gVOqeWXH54xDKAaFS4rTnDeDBQUYDtxKyoW9FwDw==", + "license": "MIT", + "dependencies": { + "@vue/compiler-dom": "3.5.26", + "@vue/shared": "3.5.26" + } + }, + "node_modules/@vue/reactivity": { + "version": "3.5.26", + "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.5.26.tgz", + "integrity": "sha512-9EnYB1/DIiUYYnzlnUBgwU32NNvLp/nhxLXeWRhHUEeWNTn1ECxX8aGO7RTXeX6PPcxe3LLuNBFoJbV4QZ+CFQ==", + "license": "MIT", + "dependencies": { + "@vue/shared": "3.5.26" + } + }, + "node_modules/@vue/runtime-core": { + "version": "3.5.26", + "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.5.26.tgz", + "integrity": "sha512-xJWM9KH1kd201w5DvMDOwDHYhrdPTrAatn56oB/LRG4plEQeZRQLw0Bpwih9KYoqmzaxF0OKSn6swzYi84e1/Q==", + "license": "MIT", + "dependencies": { + "@vue/reactivity": "3.5.26", + "@vue/shared": "3.5.26" + } + }, + "node_modules/@vue/runtime-dom": { + "version": "3.5.26", + "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.5.26.tgz", + "integrity": "sha512-XLLd/+4sPC2ZkN/6+V4O4gjJu6kSDbHAChvsyWgm1oGbdSO3efvGYnm25yCjtFm/K7rrSDvSfPDgN1pHgS4VNQ==", + "license": "MIT", + "dependencies": { + "@vue/reactivity": "3.5.26", + "@vue/runtime-core": "3.5.26", + "@vue/shared": "3.5.26", + "csstype": "^3.2.3" + } + }, + "node_modules/@vue/server-renderer": { + "version": "3.5.26", + "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.5.26.tgz", + "integrity": "sha512-TYKLXmrwWKSodyVuO1WAubucd+1XlLg4set0YoV+Hu8Lo79mp/YMwWV5mC5FgtsDxX3qo1ONrxFaTP1OQgy1uA==", + "license": "MIT", + "dependencies": { + "@vue/compiler-ssr": "3.5.26", + "@vue/shared": "3.5.26" + }, + "peerDependencies": { + "vue": "3.5.26" + } + }, + "node_modules/@vue/shared": { + "version": "3.5.26", + "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.5.26.tgz", + "integrity": "sha512-7Z6/y3uFI5PRoKeorTOSXKcDj0MSasfNNltcslbFrPpcw6aXRUALq4IfJlaTRspiWIUOEZbrpM+iQGmCOiWe4A==", + "license": "MIT" + }, + "node_modules/@vueuse/core": { + "version": "10.11.1", + "resolved": "https://registry.npmjs.org/@vueuse/core/-/core-10.11.1.tgz", + "integrity": "sha512-guoy26JQktXPcz+0n3GukWIy/JDNKti9v6VEMu6kV2sYBsWuGiTU8OWdg+ADfUbHg3/3DlqySDe7JmdHrktiww==", + "license": "MIT", + "dependencies": { + "@types/web-bluetooth": "^0.0.20", + "@vueuse/metadata": "10.11.1", + "@vueuse/shared": "10.11.1", + "vue-demi": ">=0.14.8" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@vueuse/metadata": { + "version": "10.11.1", + "resolved": "https://registry.npmjs.org/@vueuse/metadata/-/metadata-10.11.1.tgz", + "integrity": "sha512-IGa5FXd003Ug1qAZmyE8wF3sJ81xGLSqTqtQ6jaVfkeZ4i5kS2mwQF61yhVqojRnenVew5PldLyRgvdl4YYuSw==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@vueuse/shared": { + "version": "10.11.1", + "resolved": "https://registry.npmjs.org/@vueuse/shared/-/shared-10.11.1.tgz", + "integrity": "sha512-LHpC8711VFZlDaYUXEBbFBCQ7GS3dVU9mjOhhMhXP6txTV4EhYQg/KGnQuvt/sPAtoUKq7VVUnL6mVtFoL42sA==", + "license": "MIT", + "dependencies": { + "vue-demi": ">=0.14.8" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, "node_modules/acorn": { "version": "8.15.0", "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", @@ -4096,7 +4265,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true, "license": "Python-2.0" }, "node_modules/aria-hidden": { @@ -4649,10 +4817,9 @@ } }, "node_modules/csstype": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", - "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", - "devOptional": true, + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.2.3.tgz", + "integrity": "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==", "license": "MIT" }, "node_modules/data-view-buffer": { @@ -4874,6 +5041,18 @@ "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", "license": "MIT" }, + "node_modules/entities": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-7.0.0.tgz", + "integrity": "sha512-FDWG5cmEYf2Z00IkYRhbFrwIwvdFKH07uV8dvNy0omp/Qb1xcyCWp2UDtcwJF4QZZvk0sLudP6/hAu42TaqVhQ==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, "node_modules/es-abstract": { "version": "1.24.0", "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.24.0.tgz", @@ -5264,7 +5443,6 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", - "dev": true, "license": "MIT" }, "node_modules/esutils": { @@ -5887,6 +6065,15 @@ "node": ">= 0.4" } }, + "node_modules/highlight.js": { + "version": "11.8.0", + "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-11.8.0.tgz", + "integrity": "sha512-MedQhoqVdr0U6SSnWPzfiadUcDHfN/Wzq25AkXiQv9oiOO/sG0S7XkvpFIqWBl9Yq1UYyYOOVORs5UW2XlPyzg==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=12.0.0" + } + }, "node_modules/idb": { "version": "7.1.1", "resolved": "https://registry.npmjs.org/idb/-/idb-7.1.1.tgz", @@ -6656,6 +6843,15 @@ "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", "license": "MIT" }, + "node_modules/linkify-it": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-5.0.0.tgz", + "integrity": "sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==", + "license": "MIT", + "dependencies": { + "uc.micro": "^2.0.0" + } + }, "node_modules/locate-path": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", @@ -6741,6 +6937,41 @@ "sourcemap-codec": "^1.4.8" } }, + "node_modules/markdown-it": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-14.1.0.tgz", + "integrity": "sha512-a54IwgWPaeBCAAsv13YgmALOF1elABB08FxO9i+r4VFk5Vl4pKokRPeX8u5TCgSsPi6ec1otfLjdOpVcgbpshg==", + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1", + "entities": "^4.4.0", + "linkify-it": "^5.0.0", + "mdurl": "^2.0.0", + "punycode.js": "^2.3.1", + "uc.micro": "^2.1.0" + }, + "bin": { + "markdown-it": "bin/markdown-it.mjs" + } + }, + "node_modules/markdown-it-link-attributes": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/markdown-it-link-attributes/-/markdown-it-link-attributes-4.0.1.tgz", + "integrity": "sha512-pg5OK0jPLg62H4k7M9mRJLT61gUp9nvG0XveKYHMOOluASo9OEF13WlXrpAp2aj35LbedAy3QOCgQCw0tkLKAQ==", + "license": "MIT" + }, + "node_modules/markdown-it/node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, "node_modules/math-intrinsics": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", @@ -6751,6 +6982,12 @@ "node": ">= 0.4" } }, + "node_modules/mdurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-2.0.0.tgz", + "integrity": "sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==", + "license": "MIT" + }, "node_modules/merge2": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", @@ -7344,6 +7581,15 @@ "node": ">=6" } }, + "node_modules/punycode.js": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode.js/-/punycode.js-2.3.1.tgz", + "integrity": "sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, "node_modules/queue-microtask": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", @@ -8743,7 +8989,7 @@ "version": "5.9.3", "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", - "dev": true, + "devOptional": true, "license": "Apache-2.0", "bin": { "tsc": "bin/tsc", @@ -8753,6 +8999,12 @@ "node": ">=14.17" } }, + "node_modules/uc.micro": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-2.1.0.tgz", + "integrity": "sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==", + "license": "MIT" + }, "node_modules/unbox-primitive": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.1.0.tgz", @@ -8955,6 +9207,19 @@ "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", "license": "MIT" }, + "node_modules/uuid": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-10.0.0.tgz", + "integrity": "sha512-8XkAphELsDnEGrDxUOHB3RGvXz6TeuYSGEZBOjtTtPm2lwhGBjLgOzLHB63IUWfBpNucQjND6d3AOudO+H3RWQ==", + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], + "license": "MIT", + "bin": { + "uuid": "dist/bin/uuid" + } + }, "node_modules/vite": { "version": "5.4.21", "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.21.tgz", @@ -9040,6 +9305,65 @@ "workbox-window": "^7.0.0" } }, + "node_modules/vue": { + "version": "3.5.26", + "resolved": "https://registry.npmjs.org/vue/-/vue-3.5.26.tgz", + "integrity": "sha512-SJ/NTccVyAoNUJmkM9KUqPcYlY+u8OVL1X5EW9RIs3ch5H2uERxyyIUI4MRxVCSOiEcupX9xNGde1tL9ZKpimA==", + "license": "MIT", + "dependencies": { + "@vue/compiler-dom": "3.5.26", + "@vue/compiler-sfc": "3.5.26", + "@vue/runtime-dom": "3.5.26", + "@vue/server-renderer": "3.5.26", + "@vue/shared": "3.5.26" + }, + "peerDependencies": { + "typescript": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/vue-demi": { + "version": "0.14.10", + "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.10.tgz", + "integrity": "sha512-nMZBOwuzabUO0nLgIcc6rycZEebF6eeUfaiQx9+WSk8e29IbLvPU9feI6tqW4kTo3hvoYAJkMh8n8D0fuISphg==", + "hasInstallScript": true, + "license": "MIT", + "bin": { + "vue-demi-fix": "bin/vue-demi-fix.js", + "vue-demi-switch": "bin/vue-demi-switch.js" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "@vue/composition-api": "^1.0.0-rc.1", + "vue": "^3.0.0-0 || ^2.6.0" + }, + "peerDependenciesMeta": { + "@vue/composition-api": { + "optional": true + } + } + }, + "node_modules/vue-markdown-render": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/vue-markdown-render/-/vue-markdown-render-2.3.0.tgz", + "integrity": "sha512-ZWVVKba8t0tKBlaUGaWmNynIk38gE7Bt3psC/iN2NsqpdGY15VGfBeBvF0A8cEmwHnjNVJo2IzUUqkhhfldhtg==", + "license": "MIT", + "dependencies": { + "markdown-it": "^14.1.0" + }, + "peerDependencies": { + "vue": "^3.3.4" + } + }, "node_modules/webidl-conversions": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", diff --git a/package.json b/package.json index 5af7d25..8083b87 100644 --- a/package.json +++ b/package.json @@ -11,6 +11,7 @@ "format": "prettier --write \"src/**/*.{ts,tsx,json,css}\"" }, "dependencies": { + "@n8n/chat": "^1.2.1", "@radix-ui/react-avatar": "^1.0.4", "@radix-ui/react-dialog": "^1.0.5", "@radix-ui/react-dropdown-menu": "^2.0.6", diff --git a/public/fonts/shabnam/Shabnam-Bold.ttf b/public/fonts/shabnam/Shabnam-Bold.ttf new file mode 100644 index 0000000000000000000000000000000000000000..12259fc34f76f87ef4cb0e0ea0b72f6a110ea8cc GIT binary patch literal 89488 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

n3Ik~jBY=e~rag{PNU8@sZ;jW1%K! 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 N9C+9^h;x$z{{^;9>Z1Sv literal 0 HcmV?d00001 diff --git a/public/fonts/shabnam/Shabnam-Light.ttf b/public/fonts/shabnam/Shabnam-Light.ttf new file mode 100644 index 0000000000000000000000000000000000000000..2b18f232525d4e79df7127d9dd8ac3382f4544ec GIT binary patch literal 98932 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 X{xj_4#XkL2sDqoHFbo52yy^b{Rx3D9 literal 0 HcmV?d00001 diff --git a/public/fonts/shabnam/Shabnam.ttf b/public/fonts/shabnam/Shabnam.ttf new file mode 100644 index 0000000000000000000000000000000000000000..a56e7d3ba049ddbdbd1e1d99812cd25dc4fa7e93 GIT binary patch literal 83732 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 literal 0 HcmV?d00001 diff --git a/src/hooks/useAuth.ts b/src/hooks/useAuth.ts index 8318006..6ca2e76 100644 --- a/src/hooks/useAuth.ts +++ b/src/hooks/useAuth.ts @@ -36,32 +36,51 @@ export function useAuth() { }, [setSession]); const signInWithGoogle = async () => { + if (!isSupabaseConfigured) { + throw new Error('Supabase not configured'); + } const { error } = await supabase.auth.signInWithOAuth({ provider: 'google', options: { redirectTo: `${window.location.origin}/account` } }); - if (error) throw error; + if (error) { + console.error('Google sign in error:', error); + throw error; + } }; const signInWithPhone = async (phone: string) => { + if (!isSupabaseConfigured) { + throw new Error('Supabase not configured'); + } const { error } = await supabase.auth.signInWithOtp({ phone, options: { channel: 'sms' } }); - if (error) throw error; + if (error) { + console.error('Phone OTP error:', error); + throw error; + } }; const verifyOTP = async (phone: string, token: string) => { - const { error } = await supabase.auth.verifyOtp({ + if (!isSupabaseConfigured) { + throw new Error('Supabase not configured'); + } + const { data, error } = await supabase.auth.verifyOtp({ phone, token, type: 'sms' }); - if (error) throw error; + if (error) { + console.error('OTP verification error:', error); + throw error; + } + return data; }; const signUp = async (email: string, password: string) => { @@ -76,11 +95,18 @@ export function useAuth() { }; const signIn = async (email: string, password: string) => { - const { error } = await supabase.auth.signInWithPassword({ + if (!isSupabaseConfigured) { + throw new Error('Supabase not configured'); + } + const { data, error } = await supabase.auth.signInWithPassword({ email, password }); - if (error) throw error; + if (error) { + console.error('Sign in error:', error); + throw error; + } + return data; }; const signOut = async () => { diff --git a/src/hooks/useChat.ts b/src/hooks/useChat.ts index 92c5270..4a93e13 100644 --- a/src/hooks/useChat.ts +++ b/src/hooks/useChat.ts @@ -1,11 +1,40 @@ -import { useState, useEffect } from 'react'; +import { useState, useEffect, useRef } from 'react'; import { supabase, isSupabaseConfigured, type Message } from '@/services/supabase'; +import { + generateAIResponse, + isOpenAIConfigured, + systemMessage, + type ChatCompletionMessage +} from '@/services/openai'; +import { sendMessageToN8n, isN8nConfigured, type ChatMessage as N8nChatMessage } from '@/services/n8n'; + +export type ChatMessage = Message & { + role?: 'user' | 'assistant'; + status?: 'pending' | 'sent' | 'error'; +}; + +const createLocalId = () => { + if (typeof crypto !== 'undefined' && 'randomUUID' in crypto) { + return crypto.randomUUID(); + } + return `${Date.now()}-${Math.random().toString(16).slice(2, 10)}`; +}; export function useChat() { - const [messages, setMessages] = useState([]); + const [messages, setMessages] = useState([]); const [loading, setLoading] = useState(true); + const conversationRef = useRef([systemMessage]); + const n8nHistoryRef = useRef([]); + const isAIEnabled = isOpenAIConfigured || isN8nConfigured; useEffect(() => { + if (isAIEnabled) { + // بدون پیام خوش‌آمدگویی - کاربر باید دکمه استارت را بزند + setMessages([]); + setLoading(false); + return; + } + loadMessages(); if (!isSupabaseConfigured) { @@ -34,6 +63,10 @@ export function useChat() { }, []); const loadMessages = async () => { + if (isAIEnabled) { + return; + } + if (!isSupabaseConfigured) { setMessages([]); setLoading(false); @@ -51,7 +84,7 @@ export function useChat() { // For now, user data will be fetched separately in the component // You can create a profiles table and join it here if needed - setMessages((data || []) as Message[]); + setMessages((data || []) as ChatMessage[]); } catch (error) { console.error('Error loading messages:', error); setMessages([]); @@ -60,7 +93,77 @@ export function useChat() { } }; - const sendMessage = async (content: string, userId: string) => { + const sendMessage = async (content: string, userId: string, skipUserMessage = false) => { + if (isAIEnabled) { + const createdAt = new Date().toISOString(); + const userMessage: ChatMessage = { + id: createLocalId(), + user_id: userId, + content, + created_at: createdAt, + role: 'user', + status: 'pending' + }; + + // فقط اگر skipUserMessage false باشد، پیام کاربر را نمایش بده + if (!skipUserMessage) { + setMessages((prev) => [userMessage, ...prev]); + } + + try { + let aiContent: string; + + // اولویت با n8n است اگر تنظیم شده باشد + if (isN8nConfigured) { + // اضافه کردن پیام کاربر به تاریخچه n8n + n8nHistoryRef.current.push({ role: 'user', content, timestamp: createdAt }); + + // ارسال به n8n + aiContent = await sendMessageToN8n(content, userId, n8nHistoryRef.current); + + // اضافه کردن پاسخ به تاریخچه n8n + n8nHistoryRef.current.push({ + role: 'assistant', + content: aiContent, + timestamp: new Date().toISOString() + }); + } else if (isOpenAIConfigured) { + // استفاده از OpenAI + conversationRef.current.push({ role: 'user', content }); + aiContent = await generateAIResponse(conversationRef.current); + conversationRef.current.push({ role: 'assistant', content: aiContent }); + } else { + throw new Error('هیچ سرویس هوش مصنوعی تنظیم نشده است.'); + } + + const aiMessage: ChatMessage = { + id: createLocalId(), + user_id: 'ai-assistant', + content: aiContent, + created_at: new Date().toISOString(), + role: 'assistant', + status: 'sent' + }; + + // فقط اگر پیام کاربر نمایش داده شده، status را update کن + if (!skipUserMessage) { + setMessages((prev) => + prev.map((msg) => (msg.id === userMessage.id ? { ...msg, status: 'sent' } : msg)) + ); + } + setMessages((prev) => [aiMessage, ...prev]); + return aiMessage; + } catch (error) { + // فقط اگر پیام کاربر نمایش داده شده، status را update کن + if (!skipUserMessage) { + setMessages((prev) => + prev.map((msg) => (msg.id === userMessage.id ? { ...msg, status: 'error' } : msg)) + ); + } + throw error; + } + } + if (!isSupabaseConfigured) { throw new Error('Supabase is not configured. Cannot send messages in offline mode.'); } @@ -78,7 +181,7 @@ export function useChat() { .single(); if (error) throw error; - return data; + return data as ChatMessage; } catch (error) { console.error('Error sending message:', error); throw error; diff --git a/src/hooks/useTypewriter.ts b/src/hooks/useTypewriter.ts new file mode 100644 index 0000000..eca3375 --- /dev/null +++ b/src/hooks/useTypewriter.ts @@ -0,0 +1,77 @@ +import { useState, useEffect, useRef } from 'react'; + +interface UseTypewriterOptions { + text: string; + speed?: number; // میلی‌ثانیه بین هر کاراکتر + onComplete?: () => void; +} + +export function useTypewriter({ text, speed = 30, onComplete }: UseTypewriterOptions) { + const [displayedText, setDisplayedText] = useState(''); + const [isTyping, setIsTyping] = useState(false); + const indexRef = useRef(0); + const timeoutRef = useRef(null); + const textRef = useRef(text); + const hasCompletedRef = useRef(false); + + useEffect(() => { + // Cleanup previous timeout + if (timeoutRef.current) { + clearTimeout(timeoutRef.current); + timeoutRef.current = null; + } + + // If text is empty, reset everything + if (!text || text.trim() === '') { + setDisplayedText(''); + setIsTyping(false); + indexRef.current = 0; + hasCompletedRef.current = false; + textRef.current = ''; + return; + } + + // Only restart if text actually changed + const textChanged = textRef.current !== text; + + if (textChanged) { + // Reset when text changes + setDisplayedText(''); + indexRef.current = 0; + setIsTyping(true); + hasCompletedRef.current = false; + textRef.current = text; + + const typeNextChar = () => { + if (indexRef.current < text.length) { + setDisplayedText(text.substring(0, indexRef.current + 1)); + indexRef.current += 1; + timeoutRef.current = setTimeout(typeNextChar, speed); + } else { + setIsTyping(false); + hasCompletedRef.current = true; + if (onComplete) { + onComplete(); + } + } + }; + + // Start typing immediately + timeoutRef.current = setTimeout(typeNextChar, speed); + } else if (hasCompletedRef.current) { + // Text hasn't changed and already completed, show full text + setDisplayedText(text); + setIsTyping(false); + } + + return () => { + if (timeoutRef.current) { + clearTimeout(timeoutRef.current); + timeoutRef.current = null; + } + }; + }, [text, speed, onComplete]); + + return { displayedText, isTyping }; +} + diff --git a/src/pages/Auth/Login/LoginPage.tsx b/src/pages/Auth/Login/LoginPage.tsx index f5c6ead..cbaa1c3 100644 --- a/src/pages/Auth/Login/LoginPage.tsx +++ b/src/pages/Auth/Login/LoginPage.tsx @@ -42,15 +42,22 @@ export default function LoginPage() { }); navigate('/account'); } catch (error: any) { + console.error('Login error:', error); let errorMessage = 'خطا در ورود'; - if (error.message) { - if (error.message.includes('Invalid login credentials')) { + if (error) { + const errorMsg = error.message || error.error?.message || String(error); + + if (errorMsg.includes('Invalid login credentials') || errorMsg.includes('invalid_credentials')) { errorMessage = 'ایمیل یا رمز عبور اشتباه است. لطفا دوباره تلاش کنید یا ثبت نام کنید.'; - } else if (error.message.includes('Email not confirmed')) { + } else if (errorMsg.includes('Email not confirmed') || errorMsg.includes('email_not_confirmed')) { errorMessage = 'لطفا ابتدا ایمیل خود را تأیید کنید.'; + } else if (errorMsg.includes('Supabase not configured')) { + errorMessage = 'Supabase تنظیم نشده است. لطفا فایل .env را بررسی کنید.'; + } else if (errorMsg.includes('Network') || errorMsg.includes('fetch')) { + errorMessage = 'خطا در اتصال به سرور. لطفا اتصال اینترنت خود را بررسی کنید.'; } else { - errorMessage = error.message; + errorMessage = errorMsg || 'خطا در ورود. لطفا دوباره تلاش کنید.'; } } @@ -70,9 +77,13 @@ export default function LoginPage() { await signInWithGoogle(); // Redirect happens automatically } catch (error: any) { + console.error('Google login error:', error); + const errorMsg = error?.message || error?.error?.message || String(error) || 'خطا در ورود با گوگل'; toast({ title: 'خطا', - description: error.message || 'خطا در ورود با گوگل', + description: errorMsg.includes('Supabase not configured') + ? 'Supabase تنظیم نشده است. لطفا فایل .env را بررسی کنید.' + : errorMsg, variant: 'destructive' }); setIsLoading(false); @@ -99,9 +110,23 @@ export default function LoginPage() { description: 'کد تأیید ارسال شد' }); } catch (error: any) { + console.error('Phone OTP error:', error); + const errorMsg = error?.message || error?.error?.message || String(error) || 'خطا در ارسال کد'; + let errorMessage = 'خطا در ارسال کد'; + + if (errorMsg.includes('Supabase not configured')) { + errorMessage = 'Supabase تنظیم نشده است. لطفا فایل .env را بررسی کنید.'; + } else if (errorMsg.includes('Invalid phone number') || errorMsg.includes('invalid_phone')) { + errorMessage = 'شماره تلفن نامعتبر است. لطفا شماره را با فرمت صحیح وارد کنید.'; + } else if (errorMsg.includes('Network') || errorMsg.includes('fetch')) { + errorMessage = 'خطا در اتصال به سرور. لطفا اتصال اینترنت خود را بررسی کنید.'; + } else { + errorMessage = errorMsg; + } + toast({ title: 'خطا', - description: error.message || 'خطا در ارسال کد', + description: errorMessage, variant: 'destructive' }); } finally { @@ -129,9 +154,25 @@ export default function LoginPage() { }); navigate('/account'); } catch (error: any) { + console.error('OTP verification error:', error); + const errorMsg = error?.message || error?.error?.message || String(error) || 'کد تأیید نامعتبر است'; + let errorMessage = 'کد تأیید نامعتبر است'; + + if (errorMsg.includes('Supabase not configured')) { + errorMessage = 'Supabase تنظیم نشده است. لطفا فایل .env را بررسی کنید.'; + } else if (errorMsg.includes('Invalid OTP') || errorMsg.includes('invalid_token')) { + errorMessage = 'کد تأیید نامعتبر است. لطفا دوباره تلاش کنید.'; + } else if (errorMsg.includes('expired')) { + errorMessage = 'کد تأیید منقضی شده است. لطفا کد جدید درخواست کنید.'; + } else if (errorMsg.includes('Network') || errorMsg.includes('fetch')) { + errorMessage = 'خطا در اتصال به سرور. لطفا اتصال اینترنت خود را بررسی کنید.'; + } else { + errorMessage = errorMsg; + } + toast({ title: 'خطا', - description: error.message || 'کد تأیید نامعتبر است', + description: errorMessage, variant: 'destructive' }); } finally { diff --git a/src/pages/Chat/ChatPage.tsx b/src/pages/Chat/ChatPage.tsx index fcae513..b8b9ed7 100644 --- a/src/pages/Chat/ChatPage.tsx +++ b/src/pages/Chat/ChatPage.tsx @@ -5,8 +5,9 @@ import { Input } from '@/components/ui/input'; import { Avatar, AvatarFallback, AvatarImage } from '@/components/ui/avatar'; import { useAuth } from '@/hooks/useAuth'; import { useChat } from '@/hooks/useChat'; +import { useTypewriter } from '@/hooks/useTypewriter'; import { useToast } from '@/components/ui/use-toast'; -import { Send, MessageSquare, Loader2 } from 'lucide-react'; +import { Send, MessageSquare, Loader2, Play } from 'lucide-react'; export default function ChatPage() { const { user } = useAuth(); @@ -15,13 +16,14 @@ export default function ChatPage() { const [message, setMessage] = useState(''); const [isSending, setIsSending] = useState(false); const messagesEndRef = useRef(null); + const typedMessagesRef = useRef>(new Set()); // Track which messages have been typed useEffect(() => { messagesEndRef.current?.scrollIntoView({ behavior: 'smooth' }); }, [messages]); - const handleSend = async (e: React.FormEvent) => { - e.preventDefault(); + const handleSend = async (e?: React.FormEvent, initialMessage?: string, skipUserMessage = false) => { + e?.preventDefault(); if (!user) { toast({ title: 'خطا', @@ -31,18 +33,26 @@ export default function ChatPage() { return; } - if (!message.trim()) { + const messageToSend = initialMessage || message; + if (!messageToSend.trim()) { return; } setIsSending(true); try { - await sendMessage(message, user.id); - setMessage(''); + // @ts-ignore - skipUserMessage parameter exists + await sendMessage(messageToSend, user.id, skipUserMessage); + if (!initialMessage) { + setMessage(''); + } } catch (error) { + const description = + error instanceof Error + ? error.message + : 'خطا در ارسال پیام'; toast({ title: 'خطا', - description: 'خطا در ارسال پیام', + description, variant: 'destructive' }); } finally { @@ -50,7 +60,13 @@ export default function ChatPage() { } }; + const handleStartChat = () => { + // skipUserMessage = true یعنی پیام کاربر نمایش داده نمی‌شود + handleSend(undefined, 'سلام', true); + }; + const getUserDisplayName = (msg: typeof messages[0]) => { + if (msg?.role === 'assistant') return 'دستیار هوشمند'; if (msg.user_id === user?.id) return 'شما'; // For other users, show a simplified identifier // In production, you'd fetch from a profiles table @@ -61,12 +77,113 @@ export default function ChatPage() { }; const getUserInitials = (msg: typeof messages[0]) => { + if (msg?.role === 'assistant') return 'هو'; const name = getUserDisplayName(msg); if (name === 'شما') return 'ش'; if (name.length >= 2) return name.substring(0, 2); return 'ک'; }; + // Component for message bubble with typewriter effect for AI messages + const MessageBubble = ({ + message, + isOwnMessage, + isAssistant, + getUserDisplayName, + getUserInitials + }: { + message: typeof messages[0]; + isOwnMessage: boolean; + isAssistant: boolean; + getUserDisplayName: (msg: typeof messages[0]) => string; + getUserInitials: (msg: typeof messages[0]) => string; + }) => { + // Check if this message has already been typed + const hasBeenTyped = typedMessagesRef.current.has(message.id); + + // If it's an assistant message and hasn't been typed yet, use typewriter + const shouldAnimate = isAssistant && !hasBeenTyped && !!message.content; + + // Only use typewriter for assistant messages that haven't been typed yet + const typewriterResult = useTypewriter({ + text: shouldAnimate ? message.content : '', + speed: 10, // سرعت تایپ سریع‌تر (میلی‌ثانیه) + onComplete: () => { + // Mark this message as typed when animation completes + if (isAssistant && message.id) { + typedMessagesRef.current.add(message.id); + } + } + }); + + // Determine final text to display + // Priority: animated text (if available) > message.content + let finalText: string; + if (isAssistant && shouldAnimate) { + // For assistant messages with animation, use displayedText if it exists, otherwise fallback to content + finalText = typewriterResult.displayedText.length > 0 + ? typewriterResult.displayedText + : message.content || ''; + } else { + // For user messages or already-typed assistant messages, show full content + finalText = message.content || ''; + } + + const showCursor = isAssistant && shouldAnimate && typewriterResult.isTyping; + + return ( +

+ + + + {getUserInitials(message)} + + +
+
+ + {getUserDisplayName(message)} + + + {new Date(message.created_at).toLocaleTimeString('fa-IR', { + hour: '2-digit', + minute: '2-digit' + })} + +
+
+

+ {finalText} + {showCursor && ( + | + )} +

+ {message.status === 'error' && ( + + ارسال ناموفق بود. دوباره تلاش کنید. + + )} +
+
+
+ ); + }; + return (
@@ -94,49 +211,46 @@ export default function ChatPage() { <>
{messages.length === 0 ? ( -
- هیچ پیامی وجود ندارد. اولین پیام را ارسال کنید! +
+
+ +

به چت هوشمند خوش آمدید

+

+ برای شروع گفتگو، دکمه زیر را بزنید +

+
+
) : ( messages.map((msg) => { - const isOwnMessage = msg.user_id === user?.id; + const isOwnMessage = msg.user_id === user?.id && msg.role !== 'assistant'; + const isAssistant = msg.role === 'assistant'; return ( -
- - - - {getUserInitials(msg)} - - -
-
- - {getUserDisplayName(msg)} - - - {new Date(msg.created_at).toLocaleTimeString('fa-IR', { - hour: '2-digit', - minute: '2-digit' - })} - -
-
-

{msg.content}

-
-
-
+ message={msg} + isOwnMessage={isOwnMessage} + isAssistant={isAssistant} + getUserDisplayName={getUserDisplayName} + getUserInitials={getUserInitials} + /> ); }) )} diff --git a/src/services/n8n.ts b/src/services/n8n.ts new file mode 100644 index 0000000..1a81b94 --- /dev/null +++ b/src/services/n8n.ts @@ -0,0 +1,297 @@ +// URL پیش‌فرض n8n chat flow +const DEFAULT_N8N_CHAT_URL = 'https://nn.feep.ir/webhook/ad03737e-f857-4b5c-87d0-601327b2081c/chat'; +const n8nWebhookUrl = import.meta.env.VITE_N8N_WEBHOOK_URL || DEFAULT_N8N_CHAT_URL; +const n8nApiKey = import.meta.env.VITE_N8N_API_KEY || ''; + +export type ChatMessage = { + role: 'user' | 'assistant'; + content: string; + timestamp?: string; +}; + +export const isN8nConfigured = Boolean(n8nWebhookUrl); + +// ذخیره sessionId برای هر کاربر (برای حفظ context در Simple Memory) +const sessionIdMap = new Map(); + +// تولید یا دریافت sessionId برای یک کاربر +const getOrCreateSessionId = (userId: string): string => { + if (!sessionIdMap.has(userId)) { + // تولید sessionId جدید (UUID-like) + const sessionId = `${userId}-${Date.now()}-${Math.random().toString(36).substring(2, 15)}`; + sessionIdMap.set(userId, sessionId); + console.log('🔑 ایجاد sessionId جدید:', sessionId, 'برای کاربر:', userId); + } + return sessionIdMap.get(userId)!; +}; + +// در development از proxy استفاده می‌کنیم، در production از URL مستقیم +const getN8nUrl = () => { + // اگر در development هستیم و URL شامل nn.feep.ir است، از proxy استفاده کن + const useProxy = import.meta.env.DEV && n8nWebhookUrl.includes('nn.feep.ir'); + + if (useProxy) { + console.log('🔀 استفاده از proxy برای دور زدن CORS'); + // استخراج مسیر webhook از URL کامل + try { + const url = new URL(n8nWebhookUrl); + const urlPath = url.pathname; + const proxyUrl = `/api/n8n${urlPath}`; + console.log('📍 مسیر proxy:', proxyUrl, 'از URL اصلی:', n8nWebhookUrl); + return proxyUrl; + } catch (error) { + console.error('❌ خطا در parse کردن URL:', error); + // اگر URL معتبر نیست، از URL مستقیم استفاده کن + return n8nWebhookUrl; + } + } + + console.log('🌐 استفاده از URL مستقیم:', n8nWebhookUrl); + return n8nWebhookUrl; +}; + +/** + * ارسال پیام به n8n و دریافت پاسخ + * @param message - پیام کاربر + * @param userId - شناسه کاربر + * @param conversationHistory - تاریخچه مکالمه (اختیاری) + * @returns پاسخ از n8n + */ +export async function sendMessageToN8n( + message: string, + userId: string, + _conversationHistory?: ChatMessage[] // n8n Chat با Simple Memory خودش session را مدیریت می‌کند، این پارامتر برای backward compatibility است +): Promise { + if (!isN8nConfigured) { + throw new Error( + 'n8n تنظیم نشده است. مقدار VITE_N8N_WEBHOOK_URL را در فایل .env تنظیم کنید.' + ); + } + + // فرمت n8n Chat Trigger - این workflow از "When chat message received" استفاده می‌کند + // فرمت مورد نیاز: { sessionId, action: "sendMessage", chatInput } + const sessionId = getOrCreateSessionId(userId); + + const payload = { + sessionId: sessionId, + action: 'sendMessage', + chatInput: message + }; + + const headers: Record = { + 'Content-Type': 'application/json' + }; + + // اگر API Key تنظیم شده باشد، اضافه می‌کنیم + if (n8nApiKey) { + headers['Authorization'] = `Bearer ${n8nApiKey}`; + // یا می‌توانید از header دیگری استفاده کنید + // headers['X-API-Key'] = n8nApiKey; + } + + try { + const actualUrl = getN8nUrl(); + console.log('📤 ارسال به n8n:', { url: actualUrl, originalUrl: n8nWebhookUrl, payload }); + + const response = await fetch(actualUrl, { + method: 'POST', + headers, + body: JSON.stringify(payload), + // اضافه کردن mode برای جلوگیری از CORS issues + mode: 'cors', + credentials: 'omit' + }); + + console.log('📥 پاسخ از n8n:', { status: response.status, ok: response.ok }); + + if (!response.ok) { + let errorText = ''; + try { + errorText = await response.text(); + // اگر پاسخ HTML است (مثل خطای 500)، پیام بهتری نمایش بده + if (errorText.trim().startsWith(' 0) { + const content = data.choices[0]?.message?.content; + if (content && content.trim()) { + console.log('✅ پاسخ از GPT (choices):', content); + return content.trim(); + } + } + + // 2. اگر Simplify Output فعال است - پاسخ مستقیم از GPT + if (data.response && typeof data.response === 'string' && data.response.trim()) { + console.log('✅ پاسخ از n8n (response):', data.response); + return data.response.trim(); + } + + // 3. اگر response خالی است، ببین آیا در جای دیگری هست + if (data.response === '' || data.response === null) { + // شاید پاسخ در جای دیگری باشد + if (data.choices?.[0]?.message?.content) { + const content = data.choices[0].message.content; + if (content && content.trim()) { + console.log('✅ پاسخ از GPT (در choices):', content); + return content.trim(); + } + } + } + + // 4. فرمت‌های دیگر + if (typeof data === 'string' && data.trim()) { + return data.trim(); + } + + if (data.message && typeof data.message === 'string' && data.message.trim()) { + return data.message.trim(); + } + + if (data.text && typeof data.text === 'string' && data.text.trim()) { + return data.text.trim(); + } + + if (data.data?.response && typeof data.data.response === 'string' && data.data.response.trim()) { + return data.data.response.trim(); + } + + if (data.data?.message && typeof data.data.message === 'string' && data.data.message.trim()) { + return data.data.message.trim(); + } + + // 5. اگر پاسخ یک object است و هیچ فیلد متنی نداره، خطا بده + if (typeof data === 'object') { + // بررسی عمیق‌تر برای پیدا کردن متن + const findTextInObject = (obj: any): string | null => { + if (typeof obj === 'string' && obj.trim()) { + return obj.trim(); + } + if (Array.isArray(obj)) { + for (const item of obj) { + const text = findTextInObject(item); + if (text) return text; + } + } + if (obj && typeof obj === 'object') { + for (const key in obj) { + if (key === 'content' || key === 'text' || key === 'message' || key === 'response') { + const text = findTextInObject(obj[key]); + if (text) return text; + } + } + } + return null; + }; + + const foundText = findTextInObject(data); + if (foundText) { + console.log('✅ متن پیدا شد در object:', foundText); + return foundText; + } + + // اگر هیچ متنی پیدا نشد، خطا بده + console.error('❌ هیچ متن معتبری در پاسخ پیدا نشد:', JSON.stringify(data, null, 2)); + throw new Error('پاسخ از n8n خالی است یا فرمت نامعتبر دارد. لطفا Respond to Webhook را بررسی کنید.'); + } + + throw new Error('فرمت پاسخ n8n نامعتبر است. ساختار: ' + JSON.stringify(data)); + } catch (error) { + console.error('❌ خطا در sendMessageToN8n:', error); + if (error instanceof TypeError && error.message.includes('fetch')) { + throw new Error('خطا در اتصال به n8n. لطفا بررسی کنید:\n1. URL صحیح است؟\n2. n8n در دسترس است؟\n3. مشکل CORS وجود دارد؟'); + } + if (error instanceof Error) { + throw error; + } + throw new Error('خطا در ارتباط با n8n: ' + String(error)); + } +} + diff --git a/src/services/openai.ts b/src/services/openai.ts new file mode 100644 index 0000000..5f50397 --- /dev/null +++ b/src/services/openai.ts @@ -0,0 +1,70 @@ +const openAiApiKey = import.meta.env.VITE_OPENAI_API_KEY || ''; +const openAiBaseUrl = import.meta.env.VITE_OPENAI_BASE_URL || 'https://api.openai.com/v1'; +const openAiModel = import.meta.env.VITE_OPENAI_MODEL || 'gpt-4o-mini'; +const openAiOrg = import.meta.env.VITE_OPENAI_ORG_ID || ''; +const openAiProject = import.meta.env.VITE_OPENAI_PROJECT_ID || ''; + +export type ChatCompletionRole = 'system' | 'user' | 'assistant'; + +export type ChatCompletionMessage = { + role: ChatCompletionRole; + content: string; +}; + +export const isOpenAIConfigured = Boolean(openAiApiKey); + +const defaultSystemPrompt = + import.meta.env.VITE_OPENAI_SYSTEM_PROMPT || + 'You are an AI assistant that responds in Persian (Farsi) with concise, helpful answers for users of a progressive web app.'; + +export const systemMessage: ChatCompletionMessage = { + role: 'system', + content: defaultSystemPrompt, +}; + +export async function generateAIResponse(messages: ChatCompletionMessage[]): Promise { + if (!isOpenAIConfigured) { + throw new Error('کلید OpenAI تعریف نشده است. مقدار VITE_OPENAI_API_KEY را تنظیم کنید.'); + } + + const payload = { + model: openAiModel, + messages: messages.length ? messages : [systemMessage], + temperature: 0.3, + max_tokens: 800, + }; + + const headers: Record = { + 'Content-Type': 'application/json', + Authorization: `Bearer ${openAiApiKey}`, + }; + + if (openAiOrg) { + headers['OpenAI-Organization'] = openAiOrg; + } + + if (openAiProject) { + headers['OpenAI-Project'] = openAiProject; + } + + const response = await fetch(`${openAiBaseUrl}/chat/completions`, { + method: 'POST', + headers, + body: JSON.stringify(payload), + }); + + if (!response.ok) { + const errorBody = await response.text(); + throw new Error(`خطا در دریافت پاسخ از GPT: ${errorBody}`); + } + + const data = await response.json(); + const text: string | undefined = data?.choices?.[0]?.message?.content?.trim(); + + if (!text) { + throw new Error('پاسخی از هوش مصنوعی دریافت نشد.'); + } + + return text; +} + diff --git a/src/styles/globals.css b/src/styles/globals.css index a6459b7..a6ed852 100644 --- a/src/styles/globals.css +++ b/src/styles/globals.css @@ -49,12 +49,29 @@ } } -/* Custom Font - فونت سفارشی */ +/* Custom Font - فونت سفارشی شبنم */ @font-face { - font-family: 'IRAN Rounded'; - src: url('/fonts/IRAN Rounded.ttf') format('truetype'); - font-weight: normal; + font-family: 'Shabnam'; + src: url('/fonts/shabnam/Shabnam-Light.ttf') format('truetype'); + font-weight: 300; font-style: normal; + font-display: swap; +} + +@font-face { + font-family: 'Shabnam'; + src: url('/fonts/shabnam/Shabnam.ttf') format('truetype'); + font-weight: 400; + font-style: normal; + font-display: swap; +} + +@font-face { + font-family: 'Shabnam'; + src: url('/fonts/shabnam/Shabnam-Bold.ttf') format('truetype'); + font-weight: 700; + font-style: normal; + font-display: swap; } @layer base { @@ -64,7 +81,7 @@ body { @apply bg-background text-foreground; - font-family: 'IRAN Rounded', 'Tahoma', 'Arial', system-ui, -apple-system, sans-serif; + font-family: 'Shabnam', 'Tahoma', 'Arial', system-ui, -apple-system, sans-serif; } } diff --git a/tailwind.config.js b/tailwind.config.js index 88e99ce..2365c48 100644 --- a/tailwind.config.js +++ b/tailwind.config.js @@ -1,3 +1,5 @@ +import defaultTheme from 'tailwindcss/defaultTheme'; + /** @type {import('tailwindcss').Config} */ export default { darkMode: ['class'], @@ -7,6 +9,9 @@ export default { ], theme: { extend: { + fontFamily: { + sans: ['Shabnam', 'Tahoma', 'Arial', ...defaultTheme.fontFamily.sans], + }, colors: { border: 'hsl(var(--border))', input: 'hsl(var(--input))', diff --git a/vite.config.ts b/vite.config.ts index 1e1cf54..eb3dbe6 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -48,6 +48,29 @@ export default defineConfig({ alias: { '@': path.resolve(__dirname, './src') } + }, + server: { + proxy: { + '/api/n8n': { + target: 'https://nn.feep.ir', + changeOrigin: true, + rewrite: (path) => { + // تبدیل /api/n8n/webhook/... به /webhook/... + const rewritten = path.replace(/^\/api\/n8n/, ''); + console.log(`[Proxy] Rewriting: ${path} -> ${rewritten}`); + return rewritten; + }, + secure: true, + configure: (proxy, _options) => { + proxy.on('error', (err, _req, res) => { + console.log('[Proxy] Error:', err); + }); + proxy.on('proxyReq', (proxyReq, req, _res) => { + console.log('[Proxy] Request:', req.method, req.url, '->', proxyReq.path); + }); + } + } + } } });