fix(payment): auto-fallback apiKey parameter for Zibal refunds and add refund button to transactions table and details modal
Some checks failed
Deploy Canina / deploy (push) Has been cancelled

This commit is contained in:
parsa aghaei 2026-08-22 15:02:46 +03:30
parent ee32b4c11d
commit 62288a83e9
13 changed files with 9122 additions and 8550 deletions

View File

@ -453,7 +453,7 @@ export class ZibalService implements IPaymentGateway {
// ==========================================
// 7. پلتفرم مالی، کیف پول و استرداد وجه (Refund & Wallets)
// Base URL: https://api.zibal.ir with Bearer Token
// Base URL: https://api.zibal.ir with Bearer Token or apiKey in payload
// ==========================================
private async getAccessToken(): Promise<string> {
@ -476,13 +476,25 @@ export class ZibalService implements IPaymentGateway {
body?: Record<string, any>,
): Promise<T> {
const token = await this.getAccessToken();
const merchant = await this.getMerchant();
const apiKey = token || merchant;
const headers: Record<string, string> = {
'Content-Type': 'application/json',
};
if (token) {
headers['Authorization'] = `Bearer ${token}`;
if (apiKey) {
headers['Authorization'] = `Bearer ${apiKey}`;
}
// Automatically inject apiKey into body if it's a POST request and not provided
const finalBody =
body && method === 'POST'
? {
apiKey: body.apiKey || apiKey,
...body,
}
: body;
const url = `https://api.zibal.ir${endpoint}`;
const controller = new AbortController();
const timeoutId = setTimeout(() => controller.abort(), 15000);
@ -492,7 +504,7 @@ export class ZibalService implements IPaymentGateway {
const res = await fetch(url, {
method,
headers,
body: body ? JSON.stringify(body) : undefined,
body: finalBody ? JSON.stringify(finalBody) : undefined,
signal: controller.signal,
});

View File

@ -22,7 +22,9 @@ import {
Activity,
Globe,
Monitor,
Code
Code,
Send,
Undo2,
} from 'lucide-react';
import { toast } from 'react-hot-toast';
import api from '../services/api';
@ -111,6 +113,59 @@ export default function Transactions() {
const [liveInquiryData, setLiveInquiryData] = useState<any>(null);
const [showRawLogs, setShowRawLogs] = useState(false);
// Refund Modal State
const [refundModalOpen, setRefundModalOpen] = useState(false);
const [refundForm, setRefundForm] = useState({
trackId: '',
amount: '',
tryReverse: true,
cardNumber: '',
description: '',
});
const [isSubmittingRefund, setIsSubmittingRefund] = useState(false);
const openRefundModal = (tx: Transaction) => {
setRefundForm({
trackId: tx.trackId || '',
amount: String(tx.amount || ''),
tryReverse: true,
cardNumber: tx.cardNumber || '',
description: `استرداد وجه سفارش #${tx.order?.orderNumber || tx.orderId || tx.id}`,
});
setRefundModalOpen(true);
};
const handleRefundSubmit = async (e: React.FormEvent) => {
e.preventDefault();
if (!refundForm.trackId) {
toast.error('شناسه تراکنش (Track ID) الزامی است');
return;
}
try {
setIsSubmittingRefund(true);
const res = await api.post('/payment/admin/refund', {
trackId: refundForm.trackId,
amount: refundForm.amount ? Number(refundForm.amount) * 10 : undefined, // Convert Toman to Rial
tryReverse: refundForm.tryReverse,
cardNumber: refundForm.cardNumber || undefined,
description: refundForm.description || undefined,
});
if (res.data?.result === 1 || res.data?.status === 1 || res.data?.success) {
toast.success(res.data?.message || 'درخواست استرداد وجه با موفقیت به زیبال ارسال شد.');
setRefundModalOpen(false);
fetchTransactions();
fetchStats();
} else {
toast.error(res.data?.message || 'خطا در ثبت استرداد وجه در زیبال');
}
} catch (e: any) {
toast.error(e?.response?.data?.message || 'خطا در ارتباط با سرور استرداد زیبال');
} finally {
setIsSubmittingRefund(false);
}
};
const fetchStats = async () => {
try {
const res = await api.get('/payment/admin/stats');
@ -612,12 +667,22 @@ export default function Transactions() {
setSelectedTx(tx);
handleLiveInquiry(tx.id);
}}
className="p-2 bg-indigo-50 hover:bg-indigo-100 text-indigo-600 rounded-xl transition-all"
className="p-2 bg-indigo-50 hover:bg-indigo-100 text-indigo-600 rounded-xl transition-all cursor-pointer"
title="استعلام زنده از زیبال"
>
<RotateCcw className="w-4 h-4" />
</button>
)}
{tx.gateway === 'zibal' && tx.trackId && tx.status === 'VERIFIED' && (
<button
onClick={() => openRefundModal(tx)}
className="p-2 bg-rose-50 hover:bg-rose-100 text-rose-600 rounded-xl transition-all cursor-pointer"
title="استرداد وجه به مشتری (Refund / Reverse)"
>
<Undo2 className="w-4 h-4" />
</button>
)}
</div>
</td>
</tr>
@ -848,6 +913,20 @@ export default function Transactions() {
<span>رد فیش کارت به کارت</span>
</button>
)}
{selectedTx.gateway === 'zibal' && selectedTx.trackId && selectedTx.status === 'VERIFIED' && (
<button
type="button"
onClick={() => {
const tx = selectedTx;
setSelectedTx(null);
openRefundModal(tx);
}}
className="bg-rose-600 hover:bg-rose-700 text-white font-black px-4 py-2.5 rounded-xl text-xs flex items-center gap-1.5 shadow-md shadow-rose-600/20 transition-all cursor-pointer"
>
<Undo2 className="w-4 h-4" />
<span>استرداد وجه به مشتری (Refund / Reverse)</span>
</button>
)}
</div>
<button
type="button"
@ -864,6 +943,107 @@ export default function Transactions() {
</div>
</div>
)}
{/* Refund Submission Modal */}
{refundModalOpen && (
<div className="fixed inset-0 z-50 flex items-center justify-center p-4 bg-black/50 backdrop-blur-sm">
<div className="bg-white rounded-3xl w-full max-w-lg border border-gray-200 shadow-2xl p-6 sm:p-8 space-y-6">
<div className="flex items-center justify-between border-b border-gray-100 pb-4">
<h3 className="text-base font-black text-gray-900 flex items-center gap-2">
<Undo2 className="w-5 h-5 text-rose-600" />
استرداد وجه تراکنش زیبال (Refund / Reverse)
</h3>
<button
onClick={() => setRefundModalOpen(false)}
className="text-gray-400 hover:text-gray-700 font-bold text-lg cursor-pointer"
>
</button>
</div>
<form onSubmit={handleRefundSubmit} className="space-y-4 text-xs">
<div>
<label className="block font-bold text-gray-700 mb-1">شماره تراکنش شاپرک (Track ID) *</label>
<input
type="text"
required
placeholder="مثال: 2808993485"
value={refundForm.trackId}
onChange={(e) => setRefundForm({ ...refundForm, trackId: e.target.value })}
className="w-full border border-gray-200 rounded-xl p-3 font-mono outline-none focus:ring-2 focus:ring-rose-500 bg-gray-50 font-bold"
dir="ltr"
/>
</div>
<div>
<label className="block font-bold text-gray-700 mb-1">مبلغ استرداد به تومان (اختیاری - خالی برای کل مبلغ)</label>
<input
type="number"
placeholder="کل مبلغ تراکنش"
value={refundForm.amount}
onChange={(e) => setRefundForm({ ...refundForm, amount: e.target.value })}
className="w-full border border-gray-200 rounded-xl p-3 font-mono outline-none focus:ring-2 focus:ring-rose-500"
dir="ltr"
/>
</div>
<div>
<label className="block font-bold text-gray-700 mb-1">شماره کارت مقصد (اختیاری جهت واریز به کارت خاص)</label>
<input
type="text"
placeholder="شماره کارت ۱۶ رقمی"
value={refundForm.cardNumber}
onChange={(e) => setRefundForm({ ...refundForm, cardNumber: e.target.value })}
className="w-full border border-gray-200 rounded-xl p-3 font-mono outline-none focus:ring-2 focus:ring-rose-500"
dir="ltr"
/>
</div>
<div>
<label className="block font-bold text-gray-700 mb-1">توضیحات و علت استرداد</label>
<textarea
rows={2}
placeholder="علت لغو سفارش یا مرجوعی کالا..."
value={refundForm.description}
onChange={(e) => setRefundForm({ ...refundForm, description: e.target.value })}
className="w-full border border-gray-200 rounded-xl p-3 outline-none focus:ring-2 focus:ring-rose-500"
/>
</div>
<div className="flex items-center gap-2 pt-1">
<input
type="checkbox"
id="txModalTryReverse"
checked={refundForm.tryReverse}
onChange={(e) => setRefundForm({ ...refundForm, tryReverse: e.target.checked })}
className="rounded text-rose-600 focus:ring-rose-500 cursor-pointer"
/>
<label htmlFor="txModalTryReverse" className="font-bold text-gray-700 cursor-pointer">
اولویت با Reverse باشد (برگشت آنی به کارت مشتری قبل از تسویه شاپرک)
</label>
</div>
<div className="flex justify-end gap-3 pt-3">
<button
type="button"
onClick={() => setRefundModalOpen(false)}
className="px-5 py-2.5 rounded-xl font-bold bg-gray-100 hover:bg-gray-200 text-gray-600 cursor-pointer"
>
انصراف
</button>
<button
type="submit"
disabled={isSubmittingRefund}
className="bg-rose-600 hover:bg-rose-700 text-white font-bold px-6 py-2.5 rounded-xl transition-colors flex items-center gap-2 cursor-pointer shadow-md shadow-rose-200"
>
{isSubmittingRefund ? <Spinner size="sm" /> : <Send className="w-4 h-4" />}
<span>ارسال استرداد وجه به زیبال</span>
</button>
</div>
</form>
</div>
</div>
)}
</div>
);
}

View File

@ -15,12 +15,12 @@
"13": "PrismaService",
"14": "PetsController",
"15": "ProductsService",
"16": "useUserStore",
"16": "UserDashboard.tsx",
"17": "CreateVideoDto",
"18": "src/services/api.ts",
"19": "auth.controller.ts",
"20": "BE-001",
"21": "SettingsController",
"21": "SmsService",
"22": "FE-001",
"23": "ADM-001",
"24": "DB-001",
@ -28,7 +28,7 @@
"26": "TEST-001",
"27": "DEVOPS-001",
"28": "DOC-001",
"29": "WholesaleApplyDto",
"29": "WholesaleService",
"30": "app-audit-verification.e2e-spec.js",
"31": "JwtAuthGuard",
"32": "ZibalService",
@ -47,7 +47,7 @@
"45": "Media.tsx",
"46": "ContactService",
"47": "zibal.service.ts",
"48": "PrescriptionsController",
"48": "PrescriptionsService",
"49": "SmartAdvisorService",
"50": "TestimonialsService",
"51": "Role & Core Objective",
@ -62,7 +62,7 @@
"60": "compilerOptions",
"61": "ArchivePage.tsx",
"62": "BlogsController",
"63": "SmsService",
"63": "ApiOperation",
"64": "BannersService",
"65": "Required Review Group Closures",
"66": "Coupons.tsx",
@ -103,7 +103,7 @@
"101": "UITexts.tsx",
"102": "BlogsController",
"103": "AdminTransactionFilterDto",
"104": "prescriptions.controller.ts",
"104": "CreateOrderDto",
"105": "1. Summary of Integrity Repairs Performed",
"106": "@nestjs/cli",
"107": "Operational Rules & Boundaries",
@ -142,7 +142,7 @@
"140": "Product Requirement Document (PRD)",
"141": "WikiController",
"142": "useCartStore",
"143": "auth.service.ts",
"143": "RedisService",
"144": "Baseline Command Plan & Reconciled Command History",
"145": "catalog/page.tsx",
"146": "ErrorPages.tsx",
@ -214,12 +214,13 @@
"212": "videos/page.tsx",
"213": "@testing-library/jest-dom",
"214": "checkout/page.tsx",
"215": "eslint-config-next",
"215": "AdminController",
"216": "FormField.tsx",
"217": "Input.tsx",
"218": "Textarea.tsx",
"219": "admin-panel/tsconfig.json",
"220": "getPageMetadata",
"221": "AuthService",
"222": "next.config.ts",
"223": "Shabnam Font README",
"224": "AGENTS.md",
@ -230,12 +231,16 @@
"229": "eslint-plugin-react-refresh",
"230": "@tailwindcss/postcss",
"231": "typescript",
"232": "ProductDto",
"233": "@testing-library/react",
"234": "@types/react",
"235": "typescript",
"236": "vitest",
"237": "axios",
"238": ".createCoupon",
"239": "WholesaleApplyDto",
"240": "ts-loader",
"241": "zibal-ebank.service.ts",
"242": "@types/bcrypt",
"243": "app.e2e-spec.js",
"244": "blog.entity.ts",
@ -290,6 +295,7 @@
"293": "typescript",
"294": "app-audit-verification.e2e-spec.d.ts",
"295": "app.e2e-spec.d.ts",
"296": "@types/react-dom",
"298": "eslint-config-prettier",
"303": "eslint-plugin-prettier",
"305": "RouteErrorBoundary",

File diff suppressed because one or more lines are too long

View File

@ -3,9 +3,9 @@
"1": "productService.ts",
"2": "CmsController",
"3": "app.module.ts",
"4": "CreateReviewDto",
"4": "reviews.controller.ts",
"5": "tickets.controller.ts",
"6": "AuthService",
"6": "userStore.ts",
"7": "MediaSelector.tsx",
"8": "PetProfile.tsx",
"9": "Roles",
@ -13,14 +13,14 @@
"11": "MenuService",
"12": "adminRoutes.tsx",
"13": "PrismaService",
"14": "pets/pets.controller.ts",
"14": "PetsController",
"15": "ProductsService",
"16": "UserDashboard.tsx",
"16": "useUserStore",
"17": "CreateVideoDto",
"18": "src/services/api.ts",
"19": "auth.controller.ts",
"20": "BE-001",
"21": "SmsService",
"21": "SettingsController",
"22": "FE-001",
"23": "ADM-001",
"24": "DB-001",
@ -28,7 +28,7 @@
"26": "TEST-001",
"27": "DEVOPS-001",
"28": "DOC-001",
"29": "WholesaleService",
"29": "WholesaleApplyDto",
"30": "app-audit-verification.e2e-spec.js",
"31": "JwtAuthGuard",
"32": "ZibalService",
@ -36,7 +36,7 @@
"34": "CategoriesController",
"35": "B2BService",
"36": "What You Must Do When Invoked",
"37": "lib/services/api.ts",
"37": "useSettingsStore",
"38": "UsersService",
"39": "What You Must Do When Invoked",
"40": "SslController",
@ -47,7 +47,7 @@
"45": "Media.tsx",
"46": "ContactService",
"47": "zibal.service.ts",
"48": "PrescriptionsService",
"48": "PrescriptionsController",
"49": "SmartAdvisorService",
"50": "TestimonialsService",
"51": "Role & Core Objective",
@ -60,26 +60,26 @@
"58": "PaginationDto",
"59": "dependencies",
"60": "compilerOptions",
"61": "HomeClient.tsx",
"61": "ArchivePage.tsx",
"62": "BlogsController",
"63": "UpdateReviewDto",
"63": "SmsService",
"64": "BannersService",
"65": "Required Review Group Closures",
"66": "Coupons.tsx",
"67": "Operational Rules & Boundaries",
"68": "Operational Rules & Boundaries",
"69": "WikiController",
"70": "WikiController",
"71": ".update",
"70": "admin.service.ts",
"71": "getSeoConfig",
"72": "seo.module.ts",
"73": "BlogsService",
"73": "seo.ts",
"74": "🏢 AI Software Agency — Master Orchestration Protocol v3",
"75": "Operational Rules & Boundaries",
"76": "Operational Rules & Boundaries",
"77": "scripts",
"78": "Role & Core Objective",
"79": "HomeController",
"80": "SafeImage.tsx",
"80": "B2BPortal.tsx",
"81": "devDependencies",
"82": "api",
"83": "Orders.tsx",
@ -102,15 +102,15 @@
"100": "Operational Rules & Boundaries",
"101": "UITexts.tsx",
"102": "BlogsController",
"103": "payment.service.ts",
"104": "WikiService",
"103": "AdminTransactionFilterDto",
"104": "prescriptions.controller.ts",
"105": "1. Summary of Integrity Repairs Performed",
"106": "@nestjs/cli",
"107": "Operational Rules & Boundaries",
"108": "Operational Rules & Boundaries",
"109": "Operational Rules & Boundaries",
"110": "AppService",
"111": "PetsController",
"111": "SmsSettingsPage.tsx",
"112": "CreateEBankCheckoutDto",
"113": "Vazirmatn Changelog",
"114": "Vazirmatn Font فونت وزیرمتن",
@ -128,7 +128,7 @@
"126": "Role & Core Objective",
"127": "orchestrate.py",
"128": "backend/package.json",
"129": "CreateReminderDto",
"129": "blog/page.tsx",
"130": "graphify reference: extra exports and benchmark",
"131": "Phase 2 Final Quality Gate Summary Report",
"132": "Task Modifications Log",
@ -136,15 +136,15 @@
"134": "ErrorBoundary",
"135": "application/package.json",
"136": "generate-openapi.js",
"137": "PetsService",
"137": "contact/page.tsx",
"138": "InitiatePaymentDto",
"139": "System Discovery",
"140": "Product Requirement Document (PRD)",
"141": ".findAll",
"142": "OrderService",
"143": "admin.service.ts",
"141": "WikiController",
"142": "useCartStore",
"143": "auth.service.ts",
"144": "Baseline Command Plan & Reconciled Command History",
"145": "MetricsController",
"145": "catalog/page.tsx",
"146": "ErrorPages.tsx",
"147": "with-vpn.sh",
"148": "Architecture Specification",
@ -167,13 +167,13 @@
"165": "rebuild_honest_ledger.js",
"166": "validate_evidence_grade.js",
"167": "supertest",
"168": "zibal-ebank.service.ts",
"168": "app/page.tsx",
"169": "API Contract Specification",
"170": "⚙️ Backend Technical Review (05_dev_backend)",
"171": "🎨 Frontend & Admin Panel Technical Review (06_dev_frontend)",
"172": "🚀 SEO & Content Strategy Review (12_seo_content)",
"173": "@types/node",
"174": "@types/react-dom",
"174": "shop/page.tsx",
"175": "seed-ui-texts.ts",
"176": "seed-wiki.ts",
"177": "update-blog.dto.ts",
@ -211,14 +211,15 @@
"209": "sync_honest_manifest.js",
"210": "sync_manifest.js",
"211": "@types/multer",
"212": "WholesaleApplyDto",
"212": "videos/page.tsx",
"213": "@testing-library/jest-dom",
"214": "checkout/page.tsx",
"215": "eslint-config-next",
"216": "FormField.tsx",
"217": "Input.tsx",
"218": "Textarea.tsx",
"219": "admin-panel/tsconfig.json",
"220": "getPageMetadata",
"221": "CreateHealthLogDto",
"222": "next.config.ts",
"223": "Shabnam Font README",
"224": "AGENTS.md",
@ -284,7 +285,7 @@
"288": "Staging Docker Compose",
"289": "tailwindcss",
"290": "@types/passport-jwt",
"291": "useSettingsStore",
"291": "ClientLayout.tsx",
"292": "@types/supertest",
"293": "typescript",
"294": "app-audit-verification.e2e-spec.d.ts",

View File

@ -1,16 +1,16 @@
# Graph Report - canina (2026-08-22)
## Corpus Check
- 535 files · ~755,173 words
- 536 files · ~759,121 words
- Verdict: corpus is large enough that graph structure adds value.
## Summary
- 3882 nodes · 6817 edges · 296 communities (198 shown, 98 thin omitted)
- Extraction: 96% EXTRACTED · 4% INFERRED · 0% AMBIGUOUS · INFERRED: 259 edges (avg confidence: 0.79)
- 3887 nodes · 6840 edges · 297 communities (197 shown, 100 thin omitted)
- Extraction: 96% EXTRACTED · 4% INFERRED · 0% AMBIGUOUS · INFERRED: 261 edges (avg confidence: 0.79)
- Token cost: 0 input · 0 output
## Graph Freshness
- Built from commit: `a2b8afcc`
- Built from commit: `bf41ba03`
- Run `git rev-parse HEAD` and compare to check if the graph is stale.
- Run `graphify update .` after code changes (no API cost).
@ -19,9 +19,9 @@
- productService.ts
- CmsController
- app.module.ts
- CreateReviewDto
- reviews.controller.ts
- tickets.controller.ts
- AuthService
- userStore.ts
- MediaSelector.tsx
- PetProfile.tsx
- Roles
@ -29,14 +29,14 @@
- MenuService
- adminRoutes.tsx
- PrismaService
- pets/pets.controller.ts
- PetsController
- ProductsService
- UserDashboard.tsx
- useUserStore
- CreateVideoDto
- src/services/api.ts
- auth.controller.ts
- BE-001
- SmsService
- SettingsController
- FE-001
- ADM-001
- DB-001
@ -44,7 +44,7 @@
- TEST-001
- DEVOPS-001
- DOC-001
- WholesaleService
- WholesaleApplyDto
- app-audit-verification.e2e-spec.js
- JwtAuthGuard
- ZibalService
@ -52,7 +52,7 @@
- CategoriesController
- B2BService
- What You Must Do When Invoked
- lib/services/api.ts
- useSettingsStore
- UsersService
- What You Must Do When Invoked
- SslController
@ -63,7 +63,7 @@
- Media.tsx
- ContactService
- zibal.service.ts
- PrescriptionsService
- PrescriptionsController
- SmartAdvisorService
- TestimonialsService
- Role & Core Objective
@ -76,26 +76,26 @@
- PaginationDto
- dependencies
- compilerOptions
- HomeClient.tsx
- ArchivePage.tsx
- BlogsController
- UpdateReviewDto
- SmsService
- BannersService
- Required Review Group Closures
- Coupons.tsx
- Operational Rules & Boundaries
- Operational Rules & Boundaries
- WikiController
- WikiController
- .update
- admin.service.ts
- getSeoConfig
- seo.module.ts
- BlogsService
- seo.ts
- 🏢 AI Software Agency — Master Orchestration Protocol v3
- Operational Rules & Boundaries
- Operational Rules & Boundaries
- scripts
- Role & Core Objective
- HomeController
- SafeImage.tsx
- B2BPortal.tsx
- devDependencies
- api
- Orders.tsx
@ -118,15 +118,15 @@
- Operational Rules & Boundaries
- UITexts.tsx
- BlogsController
- payment.service.ts
- WikiService
- AdminTransactionFilterDto
- prescriptions.controller.ts
- 1. Summary of Integrity Repairs Performed
- @nestjs/cli
- Operational Rules & Boundaries
- Operational Rules & Boundaries
- Operational Rules & Boundaries
- AppService
- PetsController
- SmsSettingsPage.tsx
- CreateEBankCheckoutDto
- Vazirmatn Changelog
- Vazirmatn Font فونت وزیرمتن
@ -144,7 +144,7 @@
- Role & Core Objective
- orchestrate.py
- backend/package.json
- CreateReminderDto
- blog/page.tsx
- graphify reference: extra exports and benchmark
- Phase 2 Final Quality Gate Summary Report
- Task Modifications Log
@ -152,15 +152,15 @@
- ErrorBoundary
- application/package.json
- generate-openapi.js
- PetsService
- contact/page.tsx
- InitiatePaymentDto
- System Discovery
- Product Requirement Document (PRD)
- .findAll
- OrderService
- admin.service.ts
- WikiController
- useCartStore
- auth.service.ts
- Baseline Command Plan & Reconciled Command History
- MetricsController
- catalog/page.tsx
- ErrorPages.tsx
- with-vpn.sh
- Architecture Specification
@ -183,13 +183,13 @@
- rebuild_honest_ledger.js
- validate_evidence_grade.js
- supertest
- zibal-ebank.service.ts
- app/page.tsx
- API Contract Specification
- ⚙️ Backend Technical Review (05_dev_backend)
- 🎨 Frontend & Admin Panel Technical Review (06_dev_frontend)
- 🚀 SEO & Content Strategy Review (12_seo_content)
- @types/node
- @types/react-dom
- shop/page.tsx
- seed-ui-texts.ts
- seed-wiki.ts
- update-blog.dto.ts
@ -227,14 +227,15 @@
- sync_honest_manifest.js
- sync_manifest.js
- @types/multer
- WholesaleApplyDto
- videos/page.tsx
- @testing-library/jest-dom
- checkout/page.tsx
- eslint-config-next
- FormField.tsx
- Input.tsx
- Textarea.tsx
- admin-panel/tsconfig.json
- getPageMetadata
- CreateHealthLogDto
- next.config.ts
- Shabnam Font README
- AGENTS.md
@ -285,7 +286,7 @@
- Production Docker Compose
- Staging Docker Compose
- @types/passport-jwt
- useSettingsStore
- ClientLayout.tsx
- @types/supertest
- typescript
- eslint-config-prettier
@ -296,16 +297,16 @@
- tailwindcss
## God Nodes (most connected - your core abstractions)
1. `Roles()` - 103 edges
1. `Roles()` - 105 edges
2. `PrismaService` - 87 edges
3. `useSettingsStore` - 51 edges
4. `SmsService` - 42 edges
5. `api` - 42 edges
4. `api` - 43 edges
5. `SmsService` - 42 edges
6. `PaginationDto` - 41 edges
7. `ZibalService` - 37 edges
8. `JwtAuthGuard` - 35 edges
9. `AdminService` - 34 edges
10. `PaymentController` - 34 edges
8. `PaymentController` - 36 edges
9. `JwtAuthGuard` - 35 edges
10. `AdminService` - 34 edges
## Surprising Connections (you probably didn't know these)
- `User Profile Photo` --conceptually_related_to--> `User Roles and Capabilities` [INFERRED]
@ -328,42 +329,46 @@
- **Rastikerdar Font Ecosystem** — frontend_application_public_fonts_shabnam_font_v5_0_1_readme, frontend_application_public_fonts_vazirmatn_v33_003_readme, vazir_font [EXTRACTED 0.95]
- **Canina Deployment Stack** — scripts_compose_prod, scripts_compose_stage [EXTRACTED 1.00]
## Communities (296 total, 98 thin omitted)
## Communities (297 total, 100 thin omitted)
### Community 0 - "OrdersService"
Cohesion: 0.06
Nodes (35): CreateOrderDto, OrderItemDto, ApiProperty, ApiPropertyOptional, IsArray, IsNotEmpty, IsNumber, IsOptional (+27 more)
### Community 1 - "productService.ts"
Cohesion: 0.07
Nodes (32): Blog(), generateMetadata(), getBlogs(), CatalogClient(), generateMetadata(), BlogPage(), BlogPost, CatalogPageSpread() (+24 more)
Cohesion: 0.08
Nodes (29): BlogPost, CatalogPageSpread(), CatalogPageSpreadProps, CategoryMeta, getFormBadge(), getSpeciesBadge(), FlipbookCatalog(), FlipbookCatalogProps (+21 more)
### Community 2 - "CmsController"
Cohesion: 0.09
Nodes (24): CmsController, ApiBearerAuth, ApiOperation, ApiTags, Body, Controller, Delete, Get (+16 more)
### Community 3 - "app.module.ts"
Cohesion: 0.06
Nodes (44): AuthModule, Module, B2BModule, Module, BannersModule, Module, CmsModule, Module (+36 more)
### Community 4 - "CreateReviewDto"
Cohesion: 0.08
Nodes (24): CreateReviewDto, ApiProperty, IsInt, IsNotEmpty, IsOptional, IsString, Min, ReviewsController (+16 more)
Nodes (32): B2BModule, Module, BannersModule, Module, CmsModule, Module, SmsModule, Global (+24 more)
### Community 4 - "reviews.controller.ts"
Cohesion: 0.07
Nodes (31): CreateReviewDto, ApiProperty, IsInt, IsNotEmpty, IsOptional, IsString, Min, ApiProperty (+23 more)
### Community 5 - "tickets.controller.ts"
Cohesion: 0.09
Nodes (29): AdminUpdateTicketDto, CreateTicketDto, ReplyTicketDto, ApiProperty, ApiPropertyOptional, IsNotEmpty, IsOptional, IsString (+21 more)
### Community 6 - "userStore.ts"
Cohesion: 0.11
Nodes (10): LoginModal(), LoginModalProps, ApiErr, AuthResponse, AuthService, User, Transaction, UserProfile (+2 more)
### Community 7 - "MediaSelector.tsx"
Cohesion: 0.08
Nodes (26): ConfirmModal(), ConfirmModalProps, ImagePreviewModal(), ImagePreviewModalProps, getFileType(), Media, MediaSelector(), MediaSelectorProps (+18 more)
### Community 8 - "PetProfile.tsx"
Cohesion: 0.12
Nodes (18): ArchiveProductCard(), CATEGORY_MAP, ICON_MAP, FeaturedProducts(), ProductCard(), OrderSuccess(), OrderRowSkeleton(), PetProfileSkeleton() (+10 more)
Cohesion: 0.13
Nodes (17): CheckoutPage(), FeaturedProducts(), ProductCard(), PetProfile(), SearchResultsPage(), OrderRowSkeleton(), PetProfileSkeleton(), ProductCardSkeleton() (+9 more)
### Community 9 - "Roles"
Cohesion: 0.25
Cohesion: 0.24
Nodes (13): Roles(), PaymentController, ApiBearerAuth, ApiOperation, ApiTags, Body, Controller, Get (+5 more)
### Community 10 - "DoctorQueryDto"
@ -371,36 +376,36 @@ Cohesion: 0.09
Nodes (24): DoctorsController, ApiBearerAuth, ApiOperation, ApiTags, Body, Controller, Delete, Get (+16 more)
### Community 11 - "MenuService"
Cohesion: 0.12
Nodes (16): MenuController, ApiBearerAuth, ApiOperation, ApiQuery, ApiTags, Body, Controller, Delete (+8 more)
Cohesion: 0.10
Nodes (19): MenuController, ApiBearerAuth, ApiOperation, ApiQuery, ApiTags, Body, Controller, Delete (+11 more)
### Community 12 - "adminRoutes.tsx"
Cohesion: 0.09
Nodes (16): App(), HeroBanner, VetTestimonial, ContactInfoItem, ContactSubmission, CategoryDist, DashboardData, Ticket (+8 more)
### Community 13 - "PrismaService"
Cohesion: 0.08
Nodes (18): CategoryQuery, WikiQuery, AdminLoginInput, LoginInput, RegisterInput, MeliPayamakPattern, MeliPayamakResponse, SendPatternSmsOptions (+10 more)
Cohesion: 0.07
Nodes (20): CategoryQuery, MeliPayamakPattern, MeliPayamakResponse, SendPatternSmsOptions, SmsConfig, SmsLogQuery, CreateContactSubmissionDto, UpdateContactInfoItemDto (+12 more)
### Community 14 - "pets/pets.controller.ts"
Cohesion: 0.16
Nodes (13): CreatePetDto, ApiProperty, ApiPropertyOptional, IsArray, IsNotEmpty, IsNumber, IsOptional, IsString (+5 more)
### Community 14 - "PetsController"
Cohesion: 0.05
Nodes (47): CreateHealthLogDto, ApiProperty, ApiPropertyOptional, IsNotEmpty, IsOptional, IsString, CreatePetDto, ApiProperty (+39 more)
### Community 15 - "ProductsService"
Cohesion: 0.09
Nodes (19): GetProductsDto, ApiPropertyOptional, IsEnum, IsOptional, IsString, ProductsController, ApiOperation, ApiTags (+11 more)
### Community 16 - "UserDashboard.tsx"
Cohesion: 0.11
Nodes (21): AddressModal(), AddressModalProps, BackButton(), BackButtonProps, CheckoutPage(), DeleteConfirmModal(), DeleteConfirmModalProps, HeaderButton() (+13 more)
### Community 16 - "useUserStore"
Cohesion: 0.12
Nodes (23): VerifyContent(), AddressModal(), AddressModalProps, AuthModal(), AuthModalProps, extractOtpFromText(), BackButton(), BackButtonProps (+15 more)
### Community 17 - "CreateVideoDto"
Cohesion: 0.08
Nodes (29): CreateVideoDto, ApiProperty, ApiPropertyOptional, IsBoolean, IsNotEmpty, IsOptional, IsString, UpdateVideoDto (+21 more)
Cohesion: 0.07
Nodes (31): CreateVideoDto, ApiProperty, ApiPropertyOptional, IsBoolean, IsNotEmpty, IsOptional, IsString, UpdateVideoDto (+23 more)
### Community 18 - "src/services/api.ts"
Cohesion: 0.10
Nodes (23): ProtectedRoute(), Login(), B2BManager, SeoSettingsPage, SmartAdvisorManager, SystemSettingsPage, ApiErrorPayload, failedQueue (+15 more)
Cohesion: 0.09
Nodes (25): ProtectedRoute(), SEARCHABLE_PAGES, Topbar(), TopbarProps, Login(), B2BManager, SeoSettingsPage, SmartAdvisorManager (+17 more)
### Community 19 - "auth.controller.ts"
Cohesion: 0.06
@ -410,9 +415,9 @@ Nodes (42): AuthController, ApiBadRequestResponse, ApiBearerAuth, ApiOkResponse,
Cohesion: 0.06
Nodes (32): Acceptance Criteria, Affected Application, Affected Files, Alternative Direction, BE-001, Category, Completion Statement, Confidence (+24 more)
### Community 21 - "SmsService"
Cohesion: 0.06
Nodes (27): SmsService, Injectable, SmsLogQueryDto, ApiPropertyOptional, IsIn, IsNumber, IsOptional, IsString (+19 more)
### Community 21 - "SettingsController"
Cohesion: 0.08
Nodes (24): SmsLogQueryDto, ApiPropertyOptional, IsIn, IsNumber, IsOptional, IsString, Type, SettingsController (+16 more)
### Community 22 - "FE-001"
Cohesion: 0.06
@ -442,17 +447,17 @@ Nodes (31): Acceptance Criteria, Affected Application, Affected Files, Alternati
Cohesion: 0.06
Nodes (31): Acceptance Criteria, Affected Application, Affected Files, Alternative Direction, Category, Completion Statement, Confidence, Dependencies (+23 more)
### Community 29 - "WholesaleService"
Cohesion: 0.14
Nodes (14): ApiBearerAuth, ApiOperation, ApiTags, Body, Controller, Get, Param, Post (+6 more)
### Community 29 - "WholesaleApplyDto"
Cohesion: 0.10
Nodes (20): ApiProperty, ApiPropertyOptional, IsNotEmpty, IsOptional, IsString, WholesaleApplyDto, ApiBearerAuth, ApiOperation (+12 more)
### Community 30 - "app-audit-verification.e2e-spec.js"
Cohesion: 0.07
Nodes (22): AppModule, Module, CustomHttpExceptionFilter, Catch, PrismaExceptionFilter, Catch, DecimalInterceptor, Injectable (+14 more)
### Community 31 - "JwtAuthGuard"
Cohesion: 0.18
Nodes (7): JwtAuthGuard, Injectable, ROLES_KEY, RequestWithUser, RolesGuard, Injectable, UserReqPayload
Cohesion: 0.20
Nodes (6): JwtAuthGuard, Injectable, ROLES_KEY, RequestWithUser, RolesGuard, Injectable
### Community 32 - "ZibalService"
Cohesion: 0.09
@ -474,13 +479,13 @@ Nodes (15): B2BController, ApiBearerAuth, ApiOperation, ApiTags, Body, Controlle
Cohesion: 0.07
Nodes (26): For /graphify add and --watch, For /graphify query, For the commit hook and native CLAUDE.md integration, For --update and --cluster-only, /graphify, Honesty Rules, Interpreter guard for subcommands, Part A - Structural extraction for code files (+18 more)
### Community 37 - "lib/services/api.ts"
### Community 37 - "useSettingsStore"
Cohesion: 0.08
Nodes (40): VerifyContent(), AuthModal(), AuthModalProps, extractOtpFromText(), B2BPortal(), BlogPost, BlogPreviewSection(), CartDrawer() (+32 more)
Nodes (33): HomeClient(), BlogPost, BlogPreviewSection(), ContactInfoItem, DeleteConfirmModal(), DeleteConfirmModalProps, EnamadBadge(), FAQItem (+25 more)
### Community 38 - "UsersService"
Cohesion: 0.06
Nodes (38): DEFAULT_JWT_REFRESH_SECRET, DEFAULT_JWT_SECRET, getJwtSecret(), JwtPayload, JwtStrategy, Injectable, AddressDto, ApiProperty (+30 more)
Nodes (41): DEFAULT_JWT_REFRESH_SECRET, DEFAULT_JWT_SECRET, getJwtSecret(), AuthModule, Module, JwtPayload, JwtStrategy, Injectable (+33 more)
### Community 39 - "What You Must Do When Invoked"
Cohesion: 0.07
@ -518,9 +523,9 @@ Nodes (11): ContactController, Body, Controller, Get, Param, Post, Put, Query (+
Cohesion: 0.16
Nodes (9): GatewayHealthResult, IPaymentGateway, PaymentInquiryResult, PaymentRequestOptions, PaymentRequestResult, PaymentVerifyResult, ZibalInquiryResponse, ZibalRequestResponse (+1 more)
### Community 48 - "PrescriptionsService"
Cohesion: 0.14
Nodes (14): PrescriptionsController, ApiBearerAuth, ApiOperation, ApiTags, Body, Controller, Get, Param (+6 more)
### Community 48 - "PrescriptionsController"
Cohesion: 0.15
Nodes (12): PrescriptionsController, ApiBearerAuth, ApiOperation, ApiTags, Body, Controller, Get, Param (+4 more)
### Community 49 - "SmartAdvisorService"
Cohesion: 0.13
@ -535,7 +540,7 @@ Cohesion: 0.09
Nodes (22): CREATE MODE — Normal Operation, Expected JSON Output Schema, File Scope Boundary, Forbidden Actions, MODE 1: REVIEW (called during Review Phase), MODE 2: CONTENT CREATION (standalone task from backlog), Operating Modes, Operational Rules & Boundaries (+14 more)
### Community 52 - ".initiateOrderPayment"
Cohesion: 0.19
Cohesion: 0.18
Nodes (10): ApiPropertyOptional, IsOptional, IsString, ZibalCallbackQueryDto, ApiBadRequestResponse, ApiOkResponse, Req, Res (+2 more)
### Community 54 - "compilerOptions"
@ -555,8 +560,8 @@ Cohesion: 0.15
Nodes (11): PetsController, ApiBearerAuth, ApiOperation, ApiQuery, ApiTags, Controller, Delete, Get (+3 more)
### Community 58 - "PaginationDto"
Cohesion: 0.11
Nodes (11): BlogsService, Injectable, PaginationDto, SortOrder, ApiPropertyOptional, IsEnum, IsInt, IsOptional (+3 more)
Cohesion: 0.06
Nodes (19): BlogsService, Injectable, BlogsModule, Module, BlogsService, Injectable, PaginationDto, SortOrder (+11 more)
### Community 59 - "dependencies"
Cohesion: 0.05
@ -566,18 +571,14 @@ Nodes (41): dependencies, bcrypt, bcryptjs, class-transformer, class-validator,
Cohesion: 0.10
Nodes (20): compilerOptions, allowImportingTsExtensions, erasableSyntaxOnly, lib, module, moduleDetection, moduleResolution, noEmit (+12 more)
### Community 61 - "HomeClient.tsx"
### Community 61 - "ArchivePage.tsx"
Cohesion: 0.13
Nodes (19): HomeClient(), HomeClientProps, generateMetadata(), getHomeData(), Home(), BannerPlacement(), BannerPlacementProps, Hero() (+11 more)
Nodes (15): HomeClientProps, ArchiveProductCard(), CATEGORY_MAP, ICON_MAP, BannerPlacement(), BannerPlacementProps, B2BInquiry, Banner (+7 more)
### Community 62 - "BlogsController"
Cohesion: 0.14
Nodes (16): BlogsController, ApiBearerAuth, ApiOperation, ApiQuery, ApiTags, Body, Controller, Delete (+8 more)
### Community 63 - "UpdateReviewDto"
Cohesion: 0.33
Nodes (5): ApiProperty, IsIn, IsOptional, IsString, UpdateReviewDto
### Community 64 - "BannersService"
Cohesion: 0.13
Nodes (15): BannersController, ApiBearerAuth, ApiOperation, ApiTags, Body, Controller, Delete, Get (+7 more)
@ -587,8 +588,8 @@ Cohesion: 0.10
Nodes (19): 10. Orders Backend, 11. Settings & Administrative Backend, 12. Prisma Schema, Migrations & Seed, 13. Redis & Temporary Auth State, 14. Unit & E2E Tests, 15. Docker, NGINX, Prometheus & Deployment Config, 16. Documentation & OpenAPI Artifacts, 1. Storefront Shell & Routing (+11 more)
### Community 66 - "Coupons.tsx"
Cohesion: 0.11
Nodes (14): formatPriceWithCommas(), PriceInput(), PriceInputProps, toEnglishDigits(), Coupon, CouponFormData, CouponModalProps, CouponTarget (+6 more)
Cohesion: 0.10
Nodes (15): formatPriceWithCommas(), PriceInput(), PriceInputProps, toEnglishDigits(), Coupon, CouponFormData, CouponModalProps, CouponTarget (+7 more)
### Community 67 - "Operational Rules & Boundaries"
Cohesion: 0.11
@ -602,21 +603,21 @@ Nodes (18): 1. Framework-Aware Analysis, 2. DOM & Semantic Structure Analysis, 3
Cohesion: 0.13
Nodes (14): ApiBearerAuth, ApiOperation, ApiQuery, ApiTags, Body, Controller, Delete, Get (+6 more)
### Community 70 - "WikiController"
Cohesion: 0.20
Nodes (7): ApiTags, Controller, WikiController, Module, WikiModule, Injectable, WikiService
### Community 70 - "admin.service.ts"
Cohesion: 0.15
Nodes (14): CouponInput, CouponTargetInput, PaginationQuery, CreateUserDto, ApiProperty, ApiPropertyOptional, IsEmail, IsNotEmpty (+6 more)
### Community 71 - ".update"
### Community 71 - "getSeoConfig"
Cohesion: 0.24
Nodes (11): ApiNotFoundResponse, ApiOkResponse, ApiOperation, Body, Delete, Get, Param, Patch (+3 more)
Nodes (11): BlogPostPage(), generateMetadata(), getBlog(), revalidate, generateMetadata(), generateMetadata(), generateMetadata(), getWikiTerm() (+3 more)
### Community 72 - "seo.module.ts"
Cohesion: 0.16
Nodes (10): SeoController, ApiOperation, ApiTags, Controller, Get, Param, SeoModule, Module (+2 more)
### Community 73 - "BlogsService"
Cohesion: 0.19
Nodes (4): BlogsModule, Module, BlogsService, Injectable
### Community 73 - "seo.ts"
Cohesion: 0.20
Nodes (5): generateMetadata(), generateMetadata(), DEFAULT_SEO_CONFIG, PageMetadataOptions, SeoConfig
### Community 74 - "🏢 AI Software Agency — Master Orchestration Protocol v3"
Cohesion: 0.11
@ -642,17 +643,17 @@ Nodes (16): 1. Active Secret Scanning (All Modified Files), 2. Docker Container
Cohesion: 0.16
Nodes (10): HomeController, ApiOkResponse, ApiOperation, ApiTags, Controller, Get, HomeModule, Module (+2 more)
### Community 80 - "SafeImage.tsx"
Cohesion: 0.13
Nodes (14): ProductDetailModalProps, SafeImage(), SafeImageProps, Testimonial, TestimonialsSection(), DisplayVideoItem, FALLBACK_VIDEOS, TestimonialItem (+6 more)
### Community 80 - "B2BPortal.tsx"
Cohesion: 0.16
Nodes (11): ProductDetailModalProps, SafeImage(), SafeImageProps, DisplayVideoItem, FALLBACK_VIDEOS, TestimonialItem, PLAYBACK_RATES, VideoModalPlayer() (+3 more)
### Community 81 - "devDependencies"
Cohesion: 0.13
Nodes (15): eslint-config-next, devDependencies, eslint, eslint-config-next, jsdom, tailwindcss, @tailwindcss/postcss, @types/node (+7 more)
Nodes (15): devDependencies, eslint, jsdom, tailwindcss, @tailwindcss/postcss, @types/node, @types/react-dom, @vitejs/plugin-react (+7 more)
### Community 82 - "api"
Cohesion: 0.12
Nodes (16): Layout(), MenuGroup, Sidebar(), SidebarProps, SubMenuItem, SEARCHABLE_PAGES, Topbar(), TopbarProps (+8 more)
Cohesion: 0.15
Nodes (10): Layout(), MenuGroup, Sidebar(), SidebarProps, SubMenuItem, MENU_TABS, MenuItem, MenuType (+2 more)
### Community 83 - "Orders.tsx"
Cohesion: 0.14
@ -683,8 +684,8 @@ Cohesion: 0.10
Nodes (21): dependencies, axios, lucide-react, react, react-dom, react-hot-toast, react-router-dom, recharts (+13 more)
### Community 90 - "ProductPage.tsx"
Cohesion: 0.17
Nodes (11): PLAYBACK_RATES, PodcastInlinePlayer(), PodcastInlinePlayerProps, CalculatorState, ICON_MAP, ProductPage(), useCalculatorStore, Tooltip() (+3 more)
Cohesion: 0.12
Nodes (14): PLAYBACK_RATES, PodcastInlinePlayer(), PodcastInlinePlayerProps, CalculatorState, ICON_MAP, ProductPage(), useCalculatorStore, ProductReviews() (+6 more)
### Community 91 - "compilerOptions"
Cohesion: 0.06
@ -715,8 +716,8 @@ Cohesion: 0.15
Nodes (13): jest, collectCoverageFrom, coverageDirectory, moduleFileExtensions, rootDir, testEnvironment, testRegex, transform (+5 more)
### Community 98 - "AdminService"
Cohesion: 0.05
Nodes (38): AdminController, ApiBearerAuth, ApiOperation, ApiQuery, ApiTags, Body, Controller, Delete (+30 more)
Cohesion: 0.06
Nodes (27): AdminController, ApiBearerAuth, ApiOperation, ApiQuery, ApiTags, Body, Controller, Delete (+19 more)
### Community 99 - "Comprehensive Change Log"
Cohesion: 0.15
@ -731,12 +732,16 @@ Cohesion: 0.10
Nodes (18): ICON_REGISTRY, IconPickerModal(), IconPickerModalProps, COLORS, RichTextEditor(), RichTextEditorProps, ToggleSwitch(), ToggleSwitchProps (+10 more)
### Community 102 - "BlogsController"
Cohesion: 0.16
Cohesion: 0.17
Nodes (14): BlogsController, ApiBearerAuth, ApiNotFoundResponse, ApiOkResponse, ApiOperation, ApiTags, Body, Controller (+6 more)
### Community 103 - "payment.service.ts"
Cohesion: 0.20
Nodes (8): AdminTransactionFilterDto, ApiPropertyOptional, IsIn, IsNumber, IsOptional, IsString, Type, ClientMetadata
### Community 103 - "AdminTransactionFilterDto"
Cohesion: 0.22
Nodes (7): AdminTransactionFilterDto, ApiPropertyOptional, IsIn, IsNumber, IsOptional, IsString, Type
### Community 104 - "prescriptions.controller.ts"
Cohesion: 0.31
Nodes (5): UserReqPayload, PrescriptionsModule, Module, PrescriptionsService, Injectable
### Community 105 - "1. Summary of Integrity Repairs Performed"
Cohesion: 0.17
@ -758,9 +763,9 @@ Nodes (10): 1. Pre-Deployment Checklist, 2. Build Verification, 3. Deployment St
Cohesion: 0.29
Nodes (5): AppController, Controller, Get, AppService, Injectable
### Community 111 - "PetsController"
Cohesion: 0.18
Nodes (9): PetsController, ApiBadRequestResponse, ApiBearerAuth, ApiCreatedResponse, ApiTags, Controller, UploadedFile, UseGuards (+1 more)
### Community 111 - "SmsSettingsPage.tsx"
Cohesion: 0.29
Nodes (7): PatternItem, SmsConfigState, SmsLogItem, SmsLogStats, SmsSettingsPage(), toPersianDigits(), SmsSettingsPage
### Community 112 - "CreateEBankCheckoutDto"
Cohesion: 0.22
@ -811,8 +816,8 @@ Cohesion: 0.20
Nodes (9): Arch Linux, Contributors, Install, Known problems for variable version, License, Sahel-Font, To Do (variable), طریقه استفاده از نسخه متغیر variable (+1 more)
### Community 124 - "Spinner.tsx"
Cohesion: 0.09
Nodes (15): Spinner(), FAQ, MENU_TABS, MenuItem, MenuType, ProductReview, Reviews(), toPersianDigits() (+7 more)
Cohesion: 0.11
Nodes (12): Spinner(), FAQ, ProductReview, Reviews(), toPersianDigits(), SslStatus, FAQManager, PaymentGatewaysPage (+4 more)
### Community 125 - "Sahel-Font"
Cohesion: 0.20
@ -830,9 +835,9 @@ Nodes (8): cmd_next_task(), cmd_progress(), cmd_reset(), cmd_status(), cmd_unblo
Cohesion: 0.22
Nodes (8): author, description, license, name, prisma, seed, private, version
### Community 129 - "CreateReminderDto"
Cohesion: 0.29
Nodes (6): CreateReminderDto, ApiProperty, ApiPropertyOptional, IsNotEmpty, IsOptional, IsString
### Community 129 - "blog/page.tsx"
Cohesion: 0.50
Nodes (4): Blog(), generateMetadata(), getBlogs(), BlogPage()
### Community 130 - "graphify reference: extra exports and benchmark"
Cohesion: 0.22
@ -874,22 +879,22 @@ Nodes (7): Active Core Applications, Current Architecture, Evidence-Based Status
Cohesion: 0.29
Nodes (6): 1. Executive Vision, 2. Target Audience, 3. Functional Requirements, 4. Non-Functional Requirements (Performance, Security), 5. Epic / Feature Breakdown, Product Requirement Document (PRD)
### Community 141 - ".findAll"
Cohesion: 0.32
Nodes (6): ApiNotFoundResponse, ApiOkResponse, ApiOperation, Get, Param, Query
### Community 141 - "WikiController"
Cohesion: 0.21
Nodes (9): ApiNotFoundResponse, ApiOkResponse, ApiOperation, ApiTags, Controller, Get, Param, Query (+1 more)
### Community 143 - "admin.service.ts"
Cohesion: 0.10
Nodes (10): CouponTargetInput, PaginationQuery, AuthService, Injectable, normalizeMobile(), RedisModule, Global, Module (+2 more)
### Community 142 - "useCartStore"
Cohesion: 0.12
Nodes (11): CartDrawer(), OrderSuccess(), OrderTracking(), mockProduct, ApiErr, Order, OrderItem, OrderService (+3 more)
### Community 143 - "auth.service.ts"
Cohesion: 0.08
Nodes (12): ApiExcludeController, AdminLoginInput, AuthService, LoginInput, RegisterInput, Injectable, MetricsController, Controller (+4 more)
### Community 144 - "Baseline Command Plan & Reconciled Command History"
Cohesion: 0.29
Nodes (6): Attempted Command Execution Log, Backend `backend/package.json` Scripts, Baseline Command Plan & Reconciled Command History, Package Scripts Safety Analysis, Permitted Safe Checks for Phase 2, Root `package.json` Scripts
### Community 145 - "MetricsController"
Cohesion: 0.20
Nodes (5): ApiExcludeController, MetricsController, Controller, Get, Res
### Community 147 - "with-vpn.sh"
Cohesion: 0.62
Nodes (6): cleanup(), log(), with-vpn.sh script, start_vpn(), stop_vpn(), vpn_is_up()
@ -962,9 +967,9 @@ Nodes (4): evidenceList, ledger, mandatoryMap, mandatoryScope
Cohesion: 0.40
Nodes (4): activeFiles, errors, validationOutput, warnings
### Community 168 - "zibal-ebank.service.ts"
Cohesion: 0.40
Nodes (4): EBankCheckoutListFilter, EBankCheckoutOptions, EBankIdentifiedPaymentFilter, EBankStatementFilter
### Community 168 - "app/page.tsx"
Cohesion: 0.67
Nodes (3): generateMetadata(), getHomeData(), Home()
### Community 169 - "API Contract Specification"
Cohesion: 0.50
@ -1022,17 +1027,9 @@ Nodes (3): COMPOSE_DOCKER_CLI_BUILD, DOCKER_BUILDKIT, deploy.sh script
Cohesion: 0.67
Nodes (3): ADR-AUTH-001: Admin Panel Authentication Architecture & Token Management, Master Task Backlog (Phase 3.3), Phase 3 Master Execution Plan
### Community 212 - "WholesaleApplyDto"
Cohesion: 0.29
Nodes (6): ApiProperty, ApiPropertyOptional, IsNotEmpty, IsOptional, IsString, WholesaleApplyDto
### Community 220 - "getPageMetadata"
Cohesion: 0.05
Nodes (33): generateMetadata(), BlogPostPage(), generateMetadata(), getBlog(), revalidate, generateMetadata(), generateMetadata(), generateMetadata() (+25 more)
### Community 221 - "CreateHealthLogDto"
Cohesion: 0.29
Nodes (6): CreateHealthLogDto, ApiProperty, ApiPropertyOptional, IsNotEmpty, IsOptional, IsString
Cohesion: 0.14
Nodes (7): generateMetadata(), generateMetadata(), generateMetadata(), generateMetadata(), generateMetadata(), generateMetadata(), getPageMetadata()
### Community 223 - "Shabnam Font README"
Cohesion: 0.67
@ -1042,37 +1039,37 @@ Nodes (3): Shabnam Font README, Shabnam Font Sample, Vazir Font
Cohesion: 0.50
Nodes (3): app_module_1, supertest_1, testing_1
### Community 291 - "useSettingsStore"
Cohesion: 0.11
Nodes (23): ClientLayout(), BrandLogo(), BrandLogoProps, EnamadBadge(), FAQItem, FAQSection(), Footer(), Header() (+15 more)
### Community 291 - "ClientLayout.tsx"
Cohesion: 0.18
Nodes (11): ClientLayout(), B2BPortal(), BrandLogo(), BrandLogoProps, Footer(), MaintenancePage(), NetworkBanner(), useNetworkStatus() (+3 more)
### Community 305 - "RouteErrorBoundary"
Cohesion: 0.22
Nodes (3): Props, RouteErrorBoundary, State
### Community 310 - "admin.module.ts"
Cohesion: 0.10
Nodes (15): AdminModule, Module, PetQuery, PetsService, Injectable, ReportsController, ApiBearerAuth, ApiOperation (+7 more)
Cohesion: 0.06
Nodes (21): AdminModule, Module, PetQuery, PetsService, Injectable, ReportsController, ApiBearerAuth, ApiOperation (+13 more)
## Knowledge Gaps
- **1269 isolated node(s):** `$schema`, `collection`, `sourceRoot`, `deleteOutDir`, `name` (+1264 more)
These have ≤1 connection - possible missing edges or undocumented components.
- **98 thin communities (<3 nodes) omitted from report** — run `graphify query` to explore isolated nodes.
- **100 thin communities (<3 nodes) omitted from report** — run `graphify query` to explore isolated nodes.
## Suggested Questions
_Questions this graph is uniquely positioned to answer:_
- **Why does `ApiResponse` connect `src/services/api.ts` to `OrdersService`, `BlogsController`, `UsersService`, `WikiController`, `PetsController`, `HomeController`, `ProductsService`, `auth.controller.ts`?**
_High betweenness centrality (0.063) - this node is a cross-community bridge._
- **Why does `Roles()` connect `Roles` to `BannersService`, `CmsController`, `B2BService`, `CreateReviewDto`, `tickets.controller.ts`, `SslController`, `IngredientsService`, `FaqService`, `MenuService`, `ContactService`, `ProductsService`, `PrescriptionsService`, `SmartAdvisorService`, `TestimonialsService`, `SmsService`, `WholesaleService`, `JwtAuthGuard`?**
_High betweenness centrality (0.064) - this node is a cross-community bridge._
- **Why does `Roles()` connect `Roles` to `BannersService`, `CmsController`, `B2BService`, `reviews.controller.ts`, `tickets.controller.ts`, `SslController`, `prescriptions.controller.ts`, `IngredientsService`, `FaqService`, `MenuService`, `ContactService`, `ProductsService`, `PrescriptionsController`, `SmartAdvisorService`, `TestimonialsService`, `SettingsController`, `WholesaleApplyDto`, `JwtAuthGuard`?**
_High betweenness centrality (0.062) - this node is a cross-community bridge._
- **Why does `JwtAuthGuard` connect `JwtAuthGuard` to `OrdersService`, `AdminService`, `CmsController`, `tickets.controller.ts`, `UsersService`, `BlogsService`, `DoctorQueryDto`, `pets/pets.controller.ts`, `ProductsService`, `CreateVideoDto`, `auth.controller.ts`, `admin.module.ts`, `PaginationDto`?**
_High betweenness centrality (0.033) - this node is a cross-community bridge._
- **Why does `JwtAuthGuard` connect `JwtAuthGuard` to `OrdersService`, `CmsController`, `reviews.controller.ts`, `tickets.controller.ts`, `admin.service.ts`, `UsersService`, `prescriptions.controller.ts`, `DoctorQueryDto`, `PetsController`, `ProductsService`, `CreateVideoDto`, `auth.controller.ts`, `admin.module.ts`, `PaginationDto`?**
_High betweenness centrality (0.032) - this node is a cross-community bridge._
- **What connects `$schema`, `collection`, `sourceRoot` to the rest of the system?**
_1269 weakly-connected nodes found - possible documentation gaps or missing edges._
- **Should `OrdersService` be split into smaller, more focused modules?**
_Cohesion score 0.06168831168831169 - nodes in this community are weakly interconnected._
- **Should `productService.ts` be split into smaller, more focused modules?**
_Cohesion score 0.07039187227866474 - nodes in this community are weakly interconnected._
_Cohesion score 0.08156028368794327 - nodes in this community are weakly interconnected._
- **Should `CmsController` be split into smaller, more focused modules?**
_Cohesion score 0.0899854862119013 - nodes in this community are weakly interconnected._

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1,16 +1,16 @@
# Graph Report - canina (2026-08-22)
## Corpus Check
- 536 files · ~759,121 words
- 536 files · ~759,763 words
- Verdict: corpus is large enough that graph structure adds value.
## Summary
- 3887 nodes · 6840 edges · 297 communities (197 shown, 100 thin omitted)
- 3887 nodes · 6841 edges · 303 communities (203 shown, 100 thin omitted)
- Extraction: 96% EXTRACTED · 4% INFERRED · 0% AMBIGUOUS · INFERRED: 261 edges (avg confidence: 0.79)
- Token cost: 0 input · 0 output
## Graph Freshness
- Built from commit: `bf41ba03`
- Built from commit: `ee32b4c1`
- Run `git rev-parse HEAD` and compare to check if the graph is stale.
- Run `graphify update .` after code changes (no API cost).
@ -31,12 +31,12 @@
- PrismaService
- PetsController
- ProductsService
- useUserStore
- UserDashboard.tsx
- CreateVideoDto
- src/services/api.ts
- auth.controller.ts
- BE-001
- SettingsController
- SmsService
- FE-001
- ADM-001
- DB-001
@ -44,7 +44,7 @@
- TEST-001
- DEVOPS-001
- DOC-001
- WholesaleApplyDto
- WholesaleService
- app-audit-verification.e2e-spec.js
- JwtAuthGuard
- ZibalService
@ -63,7 +63,7 @@
- Media.tsx
- ContactService
- zibal.service.ts
- PrescriptionsController
- PrescriptionsService
- SmartAdvisorService
- TestimonialsService
- Role & Core Objective
@ -78,7 +78,7 @@
- compilerOptions
- ArchivePage.tsx
- BlogsController
- SmsService
- ApiOperation
- BannersService
- Required Review Group Closures
- Coupons.tsx
@ -119,7 +119,7 @@
- UITexts.tsx
- BlogsController
- AdminTransactionFilterDto
- prescriptions.controller.ts
- CreateOrderDto
- 1. Summary of Integrity Repairs Performed
- @nestjs/cli
- Operational Rules & Boundaries
@ -158,7 +158,7 @@
- Product Requirement Document (PRD)
- WikiController
- useCartStore
- auth.service.ts
- RedisService
- Baseline Command Plan & Reconciled Command History
- catalog/page.tsx
- ErrorPages.tsx
@ -230,12 +230,13 @@
- videos/page.tsx
- @testing-library/jest-dom
- checkout/page.tsx
- eslint-config-next
- AdminController
- FormField.tsx
- Input.tsx
- Textarea.tsx
- admin-panel/tsconfig.json
- getPageMetadata
- AuthService
- next.config.ts
- Shabnam Font README
- AGENTS.md
@ -246,11 +247,15 @@
- eslint-plugin-react-refresh
- @tailwindcss/postcss
- typescript
- ProductDto
- @testing-library/react
- @types/react
- typescript
- vitest
- .createCoupon
- WholesaleApplyDto
- ts-loader
- zibal-ebank.service.ts
- @types/bcrypt
- app.e2e-spec.js
- blog.entity.ts
@ -289,6 +294,7 @@
- ClientLayout.tsx
- @types/supertest
- typescript
- @types/react-dom
- eslint-config-prettier
- eslint-plugin-prettier
- RouteErrorBoundary
@ -329,23 +335,23 @@
- **Rastikerdar Font Ecosystem** — frontend_application_public_fonts_shabnam_font_v5_0_1_readme, frontend_application_public_fonts_vazirmatn_v33_003_readme, vazir_font [EXTRACTED 0.95]
- **Canina Deployment Stack** — scripts_compose_prod, scripts_compose_stage [EXTRACTED 1.00]
## Communities (297 total, 100 thin omitted)
## Communities (303 total, 100 thin omitted)
### Community 0 - "OrdersService"
Cohesion: 0.06
Nodes (35): CreateOrderDto, OrderItemDto, ApiProperty, ApiPropertyOptional, IsArray, IsNotEmpty, IsNumber, IsOptional (+27 more)
Cohesion: 0.10
Nodes (18): OrdersController, ApiBadRequestResponse, ApiBearerAuth, ApiCreatedResponse, ApiNotFoundResponse, ApiOkResponse, ApiOperation, ApiTags (+10 more)
### Community 1 - "productService.ts"
Cohesion: 0.08
Nodes (29): BlogPost, CatalogPageSpread(), CatalogPageSpreadProps, CategoryMeta, getFormBadge(), getSpeciesBadge(), FlipbookCatalog(), FlipbookCatalogProps (+21 more)
Cohesion: 0.09
Nodes (26): BlogPost, CatalogPageSpread(), CatalogPageSpreadProps, CategoryMeta, getFormBadge(), getSpeciesBadge(), FlipbookCatalog(), FlipbookCatalogProps (+18 more)
### Community 2 - "CmsController"
Cohesion: 0.09
Nodes (24): CmsController, ApiBearerAuth, ApiOperation, ApiTags, Body, Controller, Delete, Get (+16 more)
### Community 3 - "app.module.ts"
Cohesion: 0.08
Nodes (32): B2BModule, Module, BannersModule, Module, CmsModule, Module, SmsModule, Global (+24 more)
Cohesion: 0.07
Nodes (34): B2BModule, Module, BannersModule, Module, CmsModule, Module, SmsModule, Global (+26 more)
### Community 4 - "reviews.controller.ts"
Cohesion: 0.07
@ -364,8 +370,8 @@ Cohesion: 0.08
Nodes (26): ConfirmModal(), ConfirmModalProps, ImagePreviewModal(), ImagePreviewModalProps, getFileType(), Media, MediaSelector(), MediaSelectorProps (+18 more)
### Community 8 - "PetProfile.tsx"
Cohesion: 0.13
Nodes (17): CheckoutPage(), FeaturedProducts(), ProductCard(), PetProfile(), SearchResultsPage(), OrderRowSkeleton(), PetProfileSkeleton(), ProductCardSkeleton() (+9 more)
Cohesion: 0.12
Nodes (19): CheckoutPage(), FeaturedProducts(), ProductCard(), PetProfile(), PrescriptionUploadModal(), PrescriptionUploadModalProps, SearchResultsPage(), OrderRowSkeleton() (+11 more)
### Community 9 - "Roles"
Cohesion: 0.24
@ -384,8 +390,8 @@ Cohesion: 0.09
Nodes (16): App(), HeroBanner, VetTestimonial, ContactInfoItem, ContactSubmission, CategoryDist, DashboardData, Ticket (+8 more)
### Community 13 - "PrismaService"
Cohesion: 0.07
Nodes (20): CategoryQuery, MeliPayamakPattern, MeliPayamakResponse, SendPatternSmsOptions, SmsConfig, SmsLogQuery, CreateContactSubmissionDto, UpdateContactInfoItemDto (+12 more)
Cohesion: 0.08
Nodes (18): CategoryQuery, AdminLoginInput, LoginInput, RegisterInput, MeliPayamakPattern, MeliPayamakResponse, SendPatternSmsOptions, SmsConfig (+10 more)
### Community 14 - "PetsController"
Cohesion: 0.05
@ -395,9 +401,9 @@ Nodes (47): CreateHealthLogDto, ApiProperty, ApiPropertyOptional, IsNotEmpty, Is
Cohesion: 0.09
Nodes (19): GetProductsDto, ApiPropertyOptional, IsEnum, IsOptional, IsString, ProductsController, ApiOperation, ApiTags (+11 more)
### Community 16 - "useUserStore"
Cohesion: 0.12
Nodes (23): VerifyContent(), AddressModal(), AddressModalProps, AuthModal(), AuthModalProps, extractOtpFromText(), BackButton(), BackButtonProps (+15 more)
### Community 16 - "UserDashboard.tsx"
Cohesion: 0.10
Nodes (30): VerifyContent(), AddressModal(), AddressModalProps, AuthModal(), AuthModalProps, extractOtpFromText(), BackButton(), BackButtonProps (+22 more)
### Community 17 - "CreateVideoDto"
Cohesion: 0.07
@ -415,9 +421,9 @@ Nodes (42): AuthController, ApiBadRequestResponse, ApiBearerAuth, ApiOkResponse,
Cohesion: 0.06
Nodes (32): Acceptance Criteria, Affected Application, Affected Files, Alternative Direction, BE-001, Category, Completion Statement, Confidence (+24 more)
### Community 21 - "SettingsController"
Cohesion: 0.08
Nodes (24): SmsLogQueryDto, ApiPropertyOptional, IsIn, IsNumber, IsOptional, IsString, Type, SettingsController (+16 more)
### Community 21 - "SmsService"
Cohesion: 0.06
Nodes (27): SmsLogQuery, SmsService, Injectable, SmsLogQueryDto, ApiPropertyOptional, IsIn, IsNumber, IsOptional (+19 more)
### Community 22 - "FE-001"
Cohesion: 0.06
@ -447,17 +453,17 @@ Nodes (31): Acceptance Criteria, Affected Application, Affected Files, Alternati
Cohesion: 0.06
Nodes (31): Acceptance Criteria, Affected Application, Affected Files, Alternative Direction, Category, Completion Statement, Confidence, Dependencies (+23 more)
### Community 29 - "WholesaleApplyDto"
Cohesion: 0.10
Nodes (20): ApiProperty, ApiPropertyOptional, IsNotEmpty, IsOptional, IsString, WholesaleApplyDto, ApiBearerAuth, ApiOperation (+12 more)
### Community 29 - "WholesaleService"
Cohesion: 0.14
Nodes (14): ApiBearerAuth, ApiOperation, ApiTags, Body, Controller, Get, Param, Post (+6 more)
### Community 30 - "app-audit-verification.e2e-spec.js"
Cohesion: 0.07
Nodes (22): AppModule, Module, CustomHttpExceptionFilter, Catch, PrismaExceptionFilter, Catch, DecimalInterceptor, Injectable (+14 more)
Cohesion: 0.08
Nodes (20): CustomHttpExceptionFilter, Catch, PrismaExceptionFilter, Catch, DecimalInterceptor, Injectable, ApiErrorResponse, ErrorDetailField (+12 more)
### Community 31 - "JwtAuthGuard"
Cohesion: 0.20
Nodes (6): JwtAuthGuard, Injectable, ROLES_KEY, RequestWithUser, RolesGuard, Injectable
Nodes (7): JwtAuthGuard, Injectable, ROLES_KEY, RequestWithUser, RolesGuard, Injectable, UserReqPayload
### Community 32 - "ZibalService"
Cohesion: 0.09
@ -480,8 +486,8 @@ Cohesion: 0.07
Nodes (26): For /graphify add and --watch, For /graphify query, For the commit hook and native CLAUDE.md integration, For --update and --cluster-only, /graphify, Honesty Rules, Interpreter guard for subcommands, Part A - Structural extraction for code files (+18 more)
### Community 37 - "useSettingsStore"
Cohesion: 0.08
Nodes (33): HomeClient(), BlogPost, BlogPreviewSection(), ContactInfoItem, DeleteConfirmModal(), DeleteConfirmModalProps, EnamadBadge(), FAQItem (+25 more)
Cohesion: 0.09
Nodes (29): HomeClient(), HomeClientProps, BlogPost, BlogPreviewSection(), ContactInfoItem, EnamadBadge(), FAQItem, FAQSection() (+21 more)
### Community 38 - "UsersService"
Cohesion: 0.06
@ -523,9 +529,9 @@ Nodes (11): ContactController, Body, Controller, Get, Param, Post, Put, Query (+
Cohesion: 0.16
Nodes (9): GatewayHealthResult, IPaymentGateway, PaymentInquiryResult, PaymentRequestOptions, PaymentRequestResult, PaymentVerifyResult, ZibalInquiryResponse, ZibalRequestResponse (+1 more)
### Community 48 - "PrescriptionsController"
Cohesion: 0.15
Nodes (12): PrescriptionsController, ApiBearerAuth, ApiOperation, ApiTags, Body, Controller, Get, Param (+4 more)
### Community 48 - "PrescriptionsService"
Cohesion: 0.14
Nodes (14): PrescriptionsController, ApiBearerAuth, ApiOperation, ApiTags, Body, Controller, Get, Param (+6 more)
### Community 49 - "SmartAdvisorService"
Cohesion: 0.13
@ -540,7 +546,7 @@ Cohesion: 0.09
Nodes (22): CREATE MODE — Normal Operation, Expected JSON Output Schema, File Scope Boundary, Forbidden Actions, MODE 1: REVIEW (called during Review Phase), MODE 2: CONTENT CREATION (standalone task from backlog), Operating Modes, Operational Rules & Boundaries (+14 more)
### Community 52 - ".initiateOrderPayment"
Cohesion: 0.18
Cohesion: 0.19
Nodes (10): ApiPropertyOptional, IsOptional, IsString, ZibalCallbackQueryDto, ApiBadRequestResponse, ApiOkResponse, Req, Res (+2 more)
### Community 54 - "compilerOptions"
@ -556,12 +562,12 @@ Cohesion: 0.08
Nodes (23): compilerOptions, allowImportingTsExtensions, erasableSyntaxOnly, jsx, lib, module, moduleDetection, moduleResolution (+15 more)
### Community 57 - "PetsController"
Cohesion: 0.15
Nodes (11): PetsController, ApiBearerAuth, ApiOperation, ApiQuery, ApiTags, Controller, Delete, Get (+3 more)
Cohesion: 0.10
Nodes (14): PetsController, ApiBearerAuth, ApiOperation, ApiQuery, ApiTags, Controller, Delete, Get (+6 more)
### Community 58 - "PaginationDto"
Cohesion: 0.06
Nodes (19): BlogsService, Injectable, BlogsModule, Module, BlogsService, Injectable, PaginationDto, SortOrder (+11 more)
Cohesion: 0.07
Nodes (15): BlogsService, Injectable, BlogsModule, Module, BlogsService, Injectable, PaginationDto, SortOrder (+7 more)
### Community 59 - "dependencies"
Cohesion: 0.05
@ -572,13 +578,17 @@ Cohesion: 0.10
Nodes (20): compilerOptions, allowImportingTsExtensions, erasableSyntaxOnly, lib, module, moduleDetection, moduleResolution, noEmit (+12 more)
### Community 61 - "ArchivePage.tsx"
Cohesion: 0.13
Nodes (15): HomeClientProps, ArchiveProductCard(), CATEGORY_MAP, ICON_MAP, BannerPlacement(), BannerPlacementProps, B2BInquiry, Banner (+7 more)
Cohesion: 0.15
Nodes (13): ArchiveProductCard(), CATEGORY_MAP, ICON_MAP, BannerPlacement(), BannerPlacementProps, B2BInquiry, Banner, DosageConfig (+5 more)
### Community 62 - "BlogsController"
Cohesion: 0.14
Nodes (16): BlogsController, ApiBearerAuth, ApiOperation, ApiQuery, ApiTags, Body, Controller, Delete (+8 more)
### Community 63 - "ApiOperation"
Cohesion: 0.14
Nodes (8): ApiOperation, ApiQuery, Get, Query, AdminQueryDto, ApiPropertyOptional, IsOptional, IsString
### Community 64 - "BannersService"
Cohesion: 0.13
Nodes (15): BannersController, ApiBearerAuth, ApiOperation, ApiTags, Body, Controller, Delete, Get (+7 more)
@ -604,8 +614,8 @@ Cohesion: 0.13
Nodes (14): ApiBearerAuth, ApiOperation, ApiQuery, ApiTags, Body, Controller, Delete, Get (+6 more)
### Community 70 - "admin.service.ts"
Cohesion: 0.15
Nodes (14): CouponInput, CouponTargetInput, PaginationQuery, CreateUserDto, ApiProperty, ApiPropertyOptional, IsEmail, IsNotEmpty (+6 more)
Cohesion: 0.20
Nodes (13): CouponInput, CouponTargetInput, PaginationQuery, CreateUserDto, ApiProperty, ApiPropertyOptional, IsEmail, IsNotEmpty (+5 more)
### Community 71 - "getSeoConfig"
Cohesion: 0.24
@ -649,7 +659,7 @@ Nodes (11): ProductDetailModalProps, SafeImage(), SafeImageProps, DisplayVideoIt
### Community 81 - "devDependencies"
Cohesion: 0.13
Nodes (15): devDependencies, eslint, jsdom, tailwindcss, @tailwindcss/postcss, @types/node, @types/react-dom, @vitejs/plugin-react (+7 more)
Nodes (15): eslint-config-next, devDependencies, eslint, eslint-config-next, jsdom, tailwindcss, @tailwindcss/postcss, @types/node (+7 more)
### Community 82 - "api"
Cohesion: 0.15
@ -716,8 +726,8 @@ Cohesion: 0.15
Nodes (13): jest, collectCoverageFrom, coverageDirectory, moduleFileExtensions, rootDir, testEnvironment, testRegex, transform (+5 more)
### Community 98 - "AdminService"
Cohesion: 0.06
Nodes (27): AdminController, ApiBearerAuth, ApiOperation, ApiQuery, ApiTags, Body, Controller, Delete (+19 more)
Cohesion: 0.15
Nodes (5): Body, Param, Put, AdminService, Injectable
### Community 99 - "Comprehensive Change Log"
Cohesion: 0.15
@ -739,9 +749,9 @@ Nodes (14): BlogsController, ApiBearerAuth, ApiNotFoundResponse, ApiOkResponse,
Cohesion: 0.22
Nodes (7): AdminTransactionFilterDto, ApiPropertyOptional, IsIn, IsNumber, IsOptional, IsString, Type
### Community 104 - "prescriptions.controller.ts"
Cohesion: 0.31
Nodes (5): UserReqPayload, PrescriptionsModule, Module, PrescriptionsService, Injectable
### Community 104 - "CreateOrderDto"
Cohesion: 0.13
Nodes (17): CreateOrderDto, OrderItemDto, ApiProperty, ApiPropertyOptional, IsArray, IsNotEmpty, IsNumber, IsOptional (+9 more)
### Community 105 - "1. Summary of Integrity Repairs Performed"
Cohesion: 0.17
@ -880,16 +890,16 @@ Cohesion: 0.29
Nodes (6): 1. Executive Vision, 2. Target Audience, 3. Functional Requirements, 4. Non-Functional Requirements (Performance, Security), 5. Epic / Feature Breakdown, Product Requirement Document (PRD)
### Community 141 - "WikiController"
Cohesion: 0.21
Nodes (9): ApiNotFoundResponse, ApiOkResponse, ApiOperation, ApiTags, Controller, Get, Param, Query (+1 more)
Cohesion: 0.13
Nodes (13): ApiNotFoundResponse, ApiOkResponse, ApiOperation, ApiTags, Controller, Get, Param, Query (+5 more)
### Community 142 - "useCartStore"
Cohesion: 0.12
Nodes (11): CartDrawer(), OrderSuccess(), OrderTracking(), mockProduct, ApiErr, Order, OrderItem, OrderService (+3 more)
### Community 143 - "auth.service.ts"
### Community 143 - "RedisService"
Cohesion: 0.08
Nodes (12): ApiExcludeController, AdminLoginInput, AuthService, LoginInput, RegisterInput, Injectable, MetricsController, Controller (+4 more)
Nodes (12): ApiExcludeController, AppModule, Module, MetricsController, Controller, Get, Res, RedisModule (+4 more)
### Community 144 - "Baseline Command Plan & Reconciled Command History"
Cohesion: 0.29
@ -1027,14 +1037,34 @@ Nodes (3): COMPOSE_DOCKER_CLI_BUILD, DOCKER_BUILDKIT, deploy.sh script
Cohesion: 0.67
Nodes (3): ADR-AUTH-001: Admin Panel Authentication Architecture & Token Management, Master Task Backlog (Phase 3.3), Phase 3 Master Execution Plan
### Community 215 - "AdminController"
Cohesion: 0.18
Nodes (6): AdminController, ApiBearerAuth, ApiTags, Controller, Delete, UseGuards
### Community 220 - "getPageMetadata"
Cohesion: 0.14
Nodes (7): generateMetadata(), generateMetadata(), generateMetadata(), generateMetadata(), generateMetadata(), generateMetadata(), getPageMetadata()
### Community 221 - "AuthService"
Cohesion: 0.22
Nodes (3): AuthService, Injectable, normalizeMobile()
### Community 223 - "Shabnam Font README"
Cohesion: 0.67
Nodes (3): Shabnam Font README, Shabnam Font Sample, Vazir Font
### Community 232 - "ProductDto"
Cohesion: 0.22
Nodes (7): ProductDto, ApiPropertyOptional, IsArray, IsBoolean, IsNumber, IsOptional, IsString
### Community 239 - "WholesaleApplyDto"
Cohesion: 0.29
Nodes (6): ApiProperty, ApiPropertyOptional, IsNotEmpty, IsOptional, IsString, WholesaleApplyDto
### Community 241 - "zibal-ebank.service.ts"
Cohesion: 0.40
Nodes (4): EBankCheckoutListFilter, EBankCheckoutOptions, EBankIdentifiedPaymentFilter, EBankStatementFilter
### Community 243 - "app.e2e-spec.js"
Cohesion: 0.50
Nodes (3): app_module_1, supertest_1, testing_1
@ -1048,8 +1078,8 @@ Cohesion: 0.22
Nodes (3): Props, RouteErrorBoundary, State
### Community 310 - "admin.module.ts"
Cohesion: 0.06
Nodes (21): AdminModule, Module, PetQuery, PetsService, Injectable, ReportsController, ApiBearerAuth, ApiOperation (+13 more)
Cohesion: 0.08
Nodes (15): AdminModule, Module, ReportsController, ApiBearerAuth, ApiOperation, ApiTags, Controller, Get (+7 more)
## Knowledge Gaps
- **1269 isolated node(s):** `$schema`, `collection`, `sourceRoot`, `deleteOutDir`, `name` (+1264 more)
@ -1061,15 +1091,15 @@ _Questions this graph is uniquely positioned to answer:_
- **Why does `ApiResponse` connect `src/services/api.ts` to `OrdersService`, `BlogsController`, `UsersService`, `WikiController`, `PetsController`, `HomeController`, `ProductsService`, `auth.controller.ts`?**
_High betweenness centrality (0.064) - this node is a cross-community bridge._
- **Why does `Roles()` connect `Roles` to `BannersService`, `CmsController`, `B2BService`, `reviews.controller.ts`, `tickets.controller.ts`, `SslController`, `prescriptions.controller.ts`, `IngredientsService`, `FaqService`, `MenuService`, `ContactService`, `ProductsService`, `PrescriptionsController`, `SmartAdvisorService`, `TestimonialsService`, `SettingsController`, `WholesaleApplyDto`, `JwtAuthGuard`?**
- **Why does `Roles()` connect `Roles` to `BannersService`, `CmsController`, `B2BService`, `reviews.controller.ts`, `tickets.controller.ts`, `SslController`, `IngredientsService`, `FaqService`, `MenuService`, `ContactService`, `ProductsService`, `PrescriptionsService`, `SmartAdvisorService`, `TestimonialsService`, `SmsService`, `WholesaleService`, `JwtAuthGuard`?**
_High betweenness centrality (0.062) - this node is a cross-community bridge._
- **Why does `JwtAuthGuard` connect `JwtAuthGuard` to `OrdersService`, `CmsController`, `reviews.controller.ts`, `tickets.controller.ts`, `admin.service.ts`, `UsersService`, `prescriptions.controller.ts`, `DoctorQueryDto`, `PetsController`, `ProductsService`, `CreateVideoDto`, `auth.controller.ts`, `admin.module.ts`, `PaginationDto`?**
- **Why does `JwtAuthGuard` connect `JwtAuthGuard` to `CmsController`, `reviews.controller.ts`, `tickets.controller.ts`, `admin.service.ts`, `UsersService`, `CreateOrderDto`, `DoctorQueryDto`, `PetsController`, `ProductsService`, `CreateVideoDto`, `auth.controller.ts`, `admin.module.ts`, `PetsController`, `PaginationDto`?**
_High betweenness centrality (0.032) - this node is a cross-community bridge._
- **What connects `$schema`, `collection`, `sourceRoot` to the rest of the system?**
_1269 weakly-connected nodes found - possible documentation gaps or missing edges._
- **Should `OrdersService` be split into smaller, more focused modules?**
_Cohesion score 0.06168831168831169 - nodes in this community are weakly interconnected._
_Cohesion score 0.10160427807486631 - nodes in this community are weakly interconnected._
- **Should `productService.ts` be split into smaller, more focused modules?**
_Cohesion score 0.08156028368794327 - nodes in this community are weakly interconnected._
_Cohesion score 0.08985200845665962 - nodes in this community are weakly interconnected._
- **Should `CmsController` be split into smaller, more focused modules?**
_Cohesion score 0.0899854862119013 - nodes in this community are weakly interconnected._

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff