diff --git a/BACKEND_INTEGRATION.md b/BACKEND_INTEGRATION.md index cab5ed0..49c8168 100644 --- a/BACKEND_INTEGRATION.md +++ b/BACKEND_INTEGRATION.md @@ -1,6 +1,6 @@ # نقشه جامع اتصال به بک‌بند (Comprehensive Backend Integration Map) 🏗️ -این سند حاوی معماری دقیق، فهرست کامل نقاط اتصال (API Endpoints)، کامنت‌های مکان‌نما در کد (TODO Markers)، و تعاریف رسمی تمامی تایپ‌های ورودی (Inputs) و خروجی (Outputs) پلتفرم درمانی و فروشگاهی کانی‌نا ایران است. +این سند حاوی معماری دقیق، فهرست کامل نقاط اتصال (API Endpoints)، کامنت‌های مکان‌نما در کد (TODO Markers)، و تعاریف رسمی تمامی تایپ‌های ورودی (Inputs) و خروجی (Outputs) پلتفرم درمانی و فروشگاهی کانی‌نو ایران است. --- diff --git a/DATABASE_SCHEMA.md b/DATABASE_SCHEMA.md index 1b62ad3..5e33420 100644 --- a/DATABASE_SCHEMA.md +++ b/DATABASE_SCHEMA.md @@ -1,6 +1,6 @@ -# طرح‌واره پایگاه داده کانی‌نا ایران (Canina Iran Database Schema) 🗄️ +# طرح‌واره پایگاه داده کانی‌نو ایران (Canino Iran Database Schema) 🗄️ -این سند ساختار دقیق جداول، فیلدها، نوع داده‌ها (Datatypes)، روابط بین موجودیت‌ها (ERD Relations) و ایندکس‌های پیشنهادی را برای راه‌اندازی پایگاه داده نهایی سیستم کانی‌نا طراحی و ارائه می‌کند. جهت انعطاف‌پذیری توسعه، پیاده‌سازی هم بر اساس **پایگاه داده رابطه‌ای (PostgreSQL / MySQL)** و هم **پایگاه داده مستندمحور/سندمراقبتی (NoSQL - MongoDB / Firestore)** مدلسازی شده است. +این سند ساختار دقیق جداول، فیلدها، نوع داده‌ها (Datatypes)، روابط بین موجودیت‌ها (ERD Relations) و ایندکس‌های پیشنهادی را برای راه‌اندازی پایگاه داده نهایی سیستم کانی‌نو طراحی و ارائه می‌کند. جهت انعطاف‌پذیری توسعه، پیاده‌سازی هم بر اساس **پایگاه داده رابطه‌ای (PostgreSQL / MySQL)** و هم **پایگاه داده مستندمحور/سندمراقبتی (NoSQL - MongoDB / Firestore)** مدلسازی شده است. --- @@ -63,7 +63,7 @@ CREATE TABLE wallet_transactions ( created_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP ); --- ۴. جدول کاتالوگ محصولات کانی‌نا (products) +-- ۴. جدول کاتالوگ محصولات کانی‌نو (products) CREATE TABLE products ( id UUID PRIMARY KEY DEFAULT uuid_generate_v4(), art_no VARCHAR(20) UNIQUE NOT NULL, @@ -250,7 +250,7 @@ CREATE INDEX idx_reminder_completions_ref ON reminder_completions(reminder_id, c "reminders": [ { "id": "REM-001", - "productId": "6472f8d38bfcb8234eccb611", // مکمل آرتروفیت کانینا فیزیکی جهت کسر انبار پت + "productId": "6472f8d38bfcb8234eccb611", // مکمل آرتروفیت کانینو فیزیکی جهت کسر انبار پت "title": "مصرف قرص مفصل‌ساز Canhydrox", "time": "08:30", "frequency": "روزانه", @@ -297,7 +297,7 @@ CREATE INDEX idx_reminder_completions_ref ON reminder_completions(reminder_id, c "dosageLogic": "به ازای هر ۵ کیلوگرم وزن، ۲ قرص روزانه تجویز بالا گردد.", "symptoms": ["درد مفاصل", "سختی در بلند شدن", "لنگیدن"], "suitableFor": "هر دو", - "image": "https://www.canina.de/media/89/34/9a/1715077271/Petvital-Canhydrox-111421-V1-Canina-100g_600x600.webp" + "image": "https://www.canina.de/media/89/34/9a/1715077271/Petvital-Canhydrox-111421-V1-Canino-100g_600x600.webp" } ``` diff --git a/README.md b/README.md index d816bbe..66d5985 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ -# پلتفرم کانی‌نا ایران (Canina Iran Platform) 🐾 +# پلتفرم کانی‌نو ایران (Canino Iran Platform) 🐾 ### لندینگ، فروشگاه تخصصی و پرونده سلامت الکترونیک پت (نمایندگی رسمی دارویی Canina Pharma) -پلتفرم **کانی‌نا ایران** یک برنامه جامع تحت وب (SPA/PWA) مجهز به بردهای تعاملی و ابزارهای بهداشتی-دامپزشکی است که با هدف ارتقای سلامت حیوانات خانگی و دسترسی آسان‌تر به مکمل‌های دارویی گرید فوق‌ارگانیک و دارویی کمپانی والای **Canina pharma GmbH آلمان** توسعه یافته است. +پلتفرم **کانی‌نو ایران** یک برنامه جامع تحت وب (SPA/PWA) مجهز به بردهای تعاملی و ابزارهای بهداشتی-دامپزشکی است که با هدف ارتقای سلامت حیوانات خانگی و دسترسی آسان‌تر به مکمل‌های دارویی گرید فوق‌ارگانیک و دارویی کمپانی والای **Canina pharma GmbH آلمان** توسعه یافته است. --- diff --git a/backend/prisma/seed-home.ts b/backend/prisma/seed-home.ts index 127204b..7763729 100644 --- a/backend/prisma/seed-home.ts +++ b/backend/prisma/seed-home.ts @@ -39,7 +39,7 @@ async function main() { vetName: 'دکتر علیرضا رضایی', clinicName: 'کلینیک دامپزشکی پایتخت', imageUrl: '/images/vets/vet1.webp', - quote: 'مکمل‌های مفصلی کانینا از نظر سرعت جذب و اثربخشی در سگ‌های نژاد بزرگ بی‌نظیر هستند. ما نتایج فوق‌العاده‌ای روی دیسپلازی هیپ مشاهده کردیم.', + quote: 'مکمل‌های مفصلی کانینو از نظر سرعت جذب و اثربخشی در سگ‌های نژاد بزرگ بی‌نظیر هستند. ما نتایج فوق‌العاده‌ای روی دیسپلازی هیپ مشاهده کردیم.', rating: 5, order: 1, isActive: true, @@ -48,7 +48,7 @@ async function main() { vetName: 'دکتر سارا شمس', clinicName: 'بیمارستان دامپزشکی تهران', imageUrl: '/images/vets/vet2.webp', - quote: 'من همیشه برای ریزش مو و مشکلات پوستی گربه‌ها، قرص‌های مخمر و بیوتین کانینا را تجویز می‌کنم. نتایج معمولاً در کمتر از ۳ هفته قابل مشاهده است.', + quote: 'من همیشه برای ریزش مو و مشکلات پوستی گربه‌ها، قرص‌های مخمر و بیوتین کانینو را تجویز می‌کنم. نتایج معمولاً در کمتر از ۳ هفته قابل مشاهده است.', rating: 5, order: 2, isActive: true, diff --git a/backend/prisma/seed-products.ts b/backend/prisma/seed-products.ts index e9040f1..c1d839a 100644 --- a/backend/prisma/seed-products.ts +++ b/backend/prisma/seed-products.ts @@ -14,9 +14,9 @@ async function main() { create: { name: 'مکمل‌های غذایی و درمانی', slug: 'supplements', - description: 'انواع مکمل‌های اورجینال کانینا آلمان', - metaTitle: 'خرید مکمل کانینا', - metaDescription: 'بهترین مکمل‌های کانینا' + description: 'انواع مکمل‌های اورجینال کانینو آلمان', + metaTitle: 'خرید مکمل کانینو', + metaDescription: 'بهترین مکمل‌های کانینو' } }); @@ -77,7 +77,7 @@ async function main() { create: { id: adminId, mobile: '09120000000', - email: 'admin@canina-iran.com', + email: 'admin@canino-iran.com', firstName: 'Admin', lastName: 'User', role: 'admin' @@ -94,9 +94,9 @@ async function main() { isPublished: true, }, { - title: 'چرا مکمل‌های کانینا؟', - slug: 'why-canina-supplements', - content: 'محتوای کامل مقاله در مورد محصولات کانینا...', + title: 'چرا مکمل‌های کانینو؟', + slug: 'why-canino-supplements', + content: 'محتوای کامل مقاله در مورد محصولات کانینو...', authorId: '12345678-1234-1234-1234-123456789012', isPublished: true, } diff --git a/backend/prisma/seed.ts b/backend/prisma/seed.ts index 9b206b0..d18725b 100644 --- a/backend/prisma/seed.ts +++ b/backend/prisma/seed.ts @@ -36,7 +36,7 @@ async function main() { id: '12345678-1234-1234-1234-123456789012', firstName: 'Admin', lastName: 'System', - email: 'admin@canina.ir', + email: 'admin@canino.ir', role: 'ADMIN', mobile: '09000000000' } @@ -57,11 +57,11 @@ async function main() { hero_image_title: "مکمل‌های تایید شده دامپزشکی", hero_quality_standard: "استاندارد کیفی آلمان", cta_title: "می‌خواهید بدانید کدام محصول برای پت شما مناسب‌تر است؟", - cta_subtitle: "تیم متخصص دامپزشکی کانینا ایران آماده پاسخگویی به سوالات شماست.", + cta_subtitle: "تیم متخصص دامپزشکی کانینو ایران آماده پاسخگویی به سوالات شماست.", cta_btn_free: "دریافت رژیم مکمل رایگان", cta_btn_products: "ورود به محصولات تخصصی", about_teaser_badge: "میراث ما از آلمان", - about_teaser_title: "چرا برند آلمانی Canina مرجع دامپزشکان است؟", + about_teaser_title: "چرا برند آلمانی Canino مرجع دامپزشکان است؟", about_teaser_feat1_title: "مواد اولیه نایاب", about_teaser_feat1_desc: "استفاده از پودر صدف لب‌سبز اصل نیوزیلند و مواد ارگانیک با گرید دارویی.", about_teaser_feat2_title: "فاقد مواد نگهدارنده", diff --git a/backend/src/auth/auth.service.ts b/backend/src/auth/auth.service.ts index d4f4519..3fd2a2b 100644 --- a/backend/src/auth/auth.service.ts +++ b/backend/src/auth/auth.service.ts @@ -134,7 +134,7 @@ export class AuthService { } async adminLogin(body: any) { - if (body.email === 'admin@canina-iran.com' && body.password === 'admin123') { + if (body.email === 'admin@canino-iran.com' && body.password === 'admin123') { const payload = { sub: '12345678-1234-1234-1234-123456789012', email: body.email, role: 'Admin' }; return { success: true, diff --git a/backend/src/common/metrics.controller.ts b/backend/src/common/metrics.controller.ts index 9f0f576..e987ee0 100644 --- a/backend/src/common/metrics.controller.ts +++ b/backend/src/common/metrics.controller.ts @@ -52,13 +52,13 @@ node_cpu_system_time_microseconds ${cpu.system} # TYPE node_app_uptime_seconds gauge node_app_uptime_seconds ${uptime} -# HELP canina_db_connected Database connection status (1 = connected, 0 = disconnected). -# TYPE canina_db_connected gauge -canina_db_connected ${dbStatus} +# HELP canino_db_connected Database connection status (1 = connected, 0 = disconnected). +# TYPE canino_db_connected gauge +canino_db_connected ${dbStatus} -# HELP canina_http_requests_total Total HTTP requests processed. -# TYPE canina_http_requests_total counter -canina_http_requests_total ${MetricsController.requestCount} +# HELP canino_http_requests_total Total HTTP requests processed. +# TYPE canino_http_requests_total counter +canino_http_requests_total ${MetricsController.requestCount} `; res.set('Content-Type', 'text/plain; version=0.0.4; charset=utf-8'); diff --git a/backend/src/main.ts b/backend/src/main.ts index d81a139..fa1a04f 100644 --- a/backend/src/main.ts +++ b/backend/src/main.ts @@ -34,8 +34,8 @@ async function bootstrap() { app.useGlobalFilters(new HttpExceptionFilter()); const config = new DocumentBuilder() - .setTitle('Canina Iran API') - .setDescription('API Documentation for Canina Iran Pet Health & Supplement Platform') + .setTitle('Canino Iran API') + .setDescription('API Documentation for Canino Iran Pet Health & Supplement Platform') .setVersion('1.0.0') .addBearerAuth() .build(); diff --git a/docker-compose.yml b/docker-compose.yml index 4002aa9..0367c35 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -3,12 +3,12 @@ version: '3.8' services: db: image: docker.arvancloud.ir/library/postgres:16-alpine - container_name: canina_db + container_name: canino_db restart: always environment: - POSTGRES_USER: canina - POSTGRES_PASSWORD: caninapassword - POSTGRES_DB: caninadb + POSTGRES_USER: canino + POSTGRES_PASSWORD: caninopassword + POSTGRES_DB: caninodb ports: - "5432:5432" volumes: @@ -16,7 +16,7 @@ services: redis: image: docker.arvancloud.ir/library/redis:7-alpine - container_name: canina_redis + container_name: canino_redis restart: always ports: - "16379:6379" @@ -25,10 +25,10 @@ services: build: context: ./backend dockerfile: Dockerfile - container_name: canina_backend + container_name: canino_backend restart: always environment: - - DATABASE_URL=postgresql://canina:caninapassword@db:5432/caninadb?schema=public + - DATABASE_URL=postgresql://canino:caninopassword@db:5432/caninodb?schema=public - REDIS_HOST=redis - REDIS_PORT=6379 - PORT=3000 @@ -42,7 +42,7 @@ services: build: context: . dockerfile: Dockerfile - container_name: canina_frontend + container_name: canino_frontend restart: always ports: - "3001:8080" @@ -51,7 +51,7 @@ services: prometheus: image: docker.arvancloud.ir/prom/prometheus:v2.51.0 - container_name: canina_prometheus + container_name: canino_prometheus restart: always volumes: - ./prometheus.yml:/etc/prometheus/prometheus.yml @@ -62,7 +62,7 @@ services: grafana: image: docker.arvancloud.ir/grafana/grafana:10.4.1 - container_name: canina_grafana + container_name: canino_grafana restart: always ports: - "3002:3000" diff --git a/docs/01-introduction.md b/docs/01-introduction.md index aec0a25..6efbf63 100644 --- a/docs/01-introduction.md +++ b/docs/01-introduction.md @@ -1,7 +1,7 @@ -# معرفی پروژه کانینا ایران (Canina Iran) +# معرفی پروژه کانینو ایران (Canino Iran) ## این پروژه چیست؟ -سامانه «کانینا ایران» پلتفرم تخصصی معرفی، فروش و مدیریت مکمل‌های درمانی حیوانات خانگی با گرید دارویی است. این سامانه به عنوان درگاه آنلاین نماینده انحصاری کانینا آلمان در ایران فعالیت می‌کند. هدف اصلی پروژه، ارائه یک تجربه کاربری (UX) بسیار غنی، سریع و در کلاس جهانی برای خریداران، کلینیک‌های دامپزشکی (مشتریان B2B) و همچنین فراهم‌کردن ابزارهای هوشمند (مانند مشاوره هوشمند و دانشنامه ترکیبات دارویی) است. +سامانه «کانینو ایران» پلتفرم تخصصی معرفی، فروش و مدیریت مکمل‌های درمانی حیوانات خانگی با گرید دارویی است. این سامانه به عنوان درگاه آنلاین نماینده انحصاری کانینو آلمان در ایران فعالیت می‌کند. هدف اصلی پروژه، ارائه یک تجربه کاربری (UX) بسیار غنی، سریع و در کلاس جهانی برای خریداران، کلینیک‌های دامپزشکی (مشتریان B2B) و همچنین فراهم‌کردن ابزارهای هوشمند (مانند مشاوره هوشمند و دانشنامه ترکیبات دارویی) است. ## قابلیت‌های کلیدی سامانه سامانه به گونه‌ای طراحی شده تا تمام نیازهای یک کسب‌وکار مدرن e-commerce را در کنار قابلیت‌های تخصصی حوزه سلامت حیوانات برآورده کند: diff --git a/docs/02-user-guide.md b/docs/02-user-guide.md index 8d785ab..833ab94 100644 --- a/docs/02-user-guide.md +++ b/docs/02-user-guide.md @@ -1,6 +1,6 @@ # راهنمای کاربری سیستم (User Guide) -سیستم کانینا از نظر نوع مخاطب به دو دسته کلی B2C (مشتریان عادی) و B2B (کلینیک‌ها و فروشگاه‌ها) تقسیم می‌شود. علاوه بر این، نقش «ادمین» برای مدیریت سیستم وجود دارد. +سیستم کانینو از نظر نوع مخاطب به دو دسته کلی B2C (مشتریان عادی) و B2B (کلینیک‌ها و فروشگاه‌ها) تقسیم می‌شود. علاوه بر این، نقش «ادمین» برای مدیریت سیستم وجود دارد. ## ۱. مشتریان عادی (B2C Users) مشتری عادی کسی است که وارد سایت می‌شود تا برای حیوان خانگی خود مکمل خریداری کند یا اطلاعات کسب کند. diff --git a/docs/03-developer-guide.md b/docs/03-developer-guide.md index 8f72d3d..1993cc9 100644 --- a/docs/03-developer-guide.md +++ b/docs/03-developer-guide.md @@ -51,7 +51,7 @@ backend/ ### سبک استایل‌دهی (TailwindCSS) - استایل‌دهی باید فقط و فقط از طریق کلاس‌های Tailwind انجام شود. - از کلاس کمکی `cn` (موجود در `lib/utils`) برای ترکیب کلاس‌های شرطی (Conditional Classes) استفاده کنید. -- رنگ‌های اختصاصی پروژه (مثل `canina-blue`, `medical-gray`) در فایل `tailwind.config.ts` تعریف شده‌اند و باید استفاده شوند، نه مقادیر هگزادسیمال خام. +- رنگ‌های اختصاصی پروژه (مثل `canino-blue`, `medical-gray`) در فایل `tailwind.config.ts` تعریف شده‌اند و باید استفاده شوند، نه مقادیر هگزادسیمال خام. ## ۳. استانداردهای توسعه در Backend (NestJS) diff --git a/docs/04-setup-and-deployment.md b/docs/04-setup-and-deployment.md index a8558aa..52a0bbc 100644 --- a/docs/04-setup-and-deployment.md +++ b/docs/04-setup-and-deployment.md @@ -14,7 +14,7 @@ 1. وارد پوشه بک‌اند شوید: `cd backend` 2. پکیج‌ها را نصب کنید: `npm install` 3. فایل `.env` را ایجاد کنید و متغیر دیتابیس را به شکل زیر تنظیم کنید: - `DATABASE_URL="postgresql://user:password@localhost:5432/caninadb?schema=public"` + `DATABASE_URL="postgresql://user:password@localhost:5432/caninodb?schema=public"` 4. جداول را ایجاد کنید: `npx prisma db push` و سپس `npx prisma generate` 5. پروژه را در حالت توسعه اجرا کنید: `npm run start:dev` 6. بک‌اند شما اکنون روی پورت پیش‌فرض (معمولاً `3001` یا `3005`) در حال اجراست. @@ -52,13 +52,13 @@ npm run build #### برای راه‌اندازی بک‌اند: ```bash cd backend -pm2 start dist/main.js --name "canina-api" +pm2 start dist/main.js --name "canino-api" ``` #### برای راه‌اندازی فرانت‌اند Next.js: ```bash cd frontend/application -pm2 start npm --name "canina-web" -- start +pm2 start npm --name "canino-web" -- start ``` ### ذخیره پروسه‌ها تا پس از ری‌استارت سرور قطع نشوند: @@ -72,14 +72,14 @@ pm2 startup ## ۳. تنظیمات Nginx (Reverse Proxy) سرور Nginx مسئول دریافت ترافیک عمومی و هدایت آن‌ها به پورت‌های صحیح لوکال است. -- ترافیک‌های دامنه `canina-iran.com` به پورت فرانت‌اند (`3000`) هدایت می‌شوند. +- ترافیک‌های دامنه `canino-iran.com` به پورت فرانت‌اند (`3000`) هدایت می‌شوند. - ترافیک‌هایی که دارای آدرس `/api/` در مسیر خود هستند مستقیماً به پورت بک‌اند (`3001`) هدایت می‌شوند. ### نمونه فایل کانفیگ Nginx ```nginx server { listen 80; - server_name canina-iran.com www.canina-iran.com; + server_name canino-iran.com www.canino-iran.com; # ارسال ترافیک /api به Backend location /api/ { diff --git a/docs/05-devops-and-monitoring.md b/docs/05-devops-and-monitoring.md index 898f9f5..015b283 100644 --- a/docs/05-devops-and-monitoring.md +++ b/docs/05-devops-and-monitoring.md @@ -33,7 +33,7 @@ ``` - برای فیلتر کردن لاگ‌های مشخص، مثلاً فقط بک‌اند: ```bash - pm2 logs canina-api --lines 100 + pm2 logs canino-api --lines 100 ``` ## ۴. مانیتورینگ دیتابیس (PostgreSQL) diff --git a/docs/README.md b/docs/README.md index 9091e59..72d6f56 100644 --- a/docs/README.md +++ b/docs/README.md @@ -1,6 +1,6 @@ # مستندات توسعه‌دهندگان (Developer Documentation) -به مستندات رسمی سامانه «کانینا ایران» خوش آمدید. این مستندات به منظور راهنمایی توسعه‌دهندگان، مهندسین دواپس و تیم فنی شرکت نوشته شده است و نباید در دسترس کاربران عمومی قرار گیرد. +به مستندات رسمی سامانه «کانینو ایران» خوش آمدید. این مستندات به منظور راهنمایی توسعه‌دهندگان، مهندسین دواپس و تیم فنی شرکت نوشته شده است و نباید در دسترس کاربران عمومی قرار گیرد. در این دایرکتوری تمامی ساختارها، معماری‌ها، قوانین کدنویسی و مراحل انتشار (Deployment) به دقت تدوین شده‌اند تا سرعت 온‌بوردینگ (Onboarding) توسعه‌دهندگان جدید افزایش یافته و نگهداری کدهای قدیمی با کمترین ریسک انجام شود. diff --git a/frontend/admin-panel/src/components/Sidebar.tsx b/frontend/admin-panel/src/components/Sidebar.tsx index 109f609..9728816 100644 --- a/frontend/admin-panel/src/components/Sidebar.tsx +++ b/frontend/admin-panel/src/components/Sidebar.tsx @@ -68,7 +68,7 @@ export default function Sidebar({ isOpen, setIsOpen }: SidebarProps) { isOpen ? 'translate-x-0' : 'translate-x-full lg:translate-x-0' }`}>
-

کانی‌نا | ادمین‌پنل

+

کانی‌نو | ادمین‌پنل