fix(application): render rich HTML product descriptions with responsive typography styling
This commit is contained in:
parent
bfb7f42065
commit
05e26cab9f
@ -131,7 +131,7 @@ function ProductCard({ product }: { product: Product }) {
|
|||||||
|
|
||||||
{/* Short description */}
|
{/* Short description */}
|
||||||
<p className="text-xs-plus sm:text-xs text-medical-gray-500 leading-relaxed line-clamp-1 sm:line-clamp-2 flex-1">
|
<p className="text-xs-plus sm:text-xs text-medical-gray-500 leading-relaxed line-clamp-1 sm:line-clamp-2 flex-1">
|
||||||
{product.shortDescription || product.description || ''}
|
{product.shortDescription || (product.description ? product.description.replace(/<[^>]*>/g, '') : '')}
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
{/* Footer: Price + CTA */}
|
{/* Footer: Price + CTA */}
|
||||||
|
|||||||
@ -495,29 +495,37 @@ export default function ProductPage({ productSlug }: { productSlug: string }) {
|
|||||||
{/* Comprehensive Product Description Section (Below the fold) */}
|
{/* Comprehensive Product Description Section (Below the fold) */}
|
||||||
{fullProduct.description && (
|
{fullProduct.description && (
|
||||||
<section className="bg-white border border-medical-gray-200 rounded-[1.5rem] sm:rounded-[2.5rem] p-4 sm:p-8 md:p-10 shadow-md space-y-3 sm:space-y-6">
|
<section className="bg-white border border-medical-gray-200 rounded-[1.5rem] sm:rounded-[2.5rem] p-4 sm:p-8 md:p-10 shadow-md space-y-3 sm:space-y-6">
|
||||||
<div className="flex items-center gap-3 sm:gap-4">
|
<div className="flex items-center gap-3 sm:gap-4 border-b border-medical-gray-100 pb-3 sm:pb-4">
|
||||||
<div className="w-9 h-9 sm:w-12 sm:h-12 bg-canina-blue text-white rounded-xl sm:rounded-2xl flex items-center justify-center shadow-lg shrink-0">
|
<div className="w-9 h-9 sm:w-12 sm:h-12 bg-canina-blue text-white rounded-xl sm:rounded-2xl flex items-center justify-center shadow-lg shrink-0">
|
||||||
<Info className="w-5 h-5 sm:w-6 sm:h-6" />
|
<Info className="w-5 h-5 sm:w-6 sm:h-6" />
|
||||||
</div>
|
</div>
|
||||||
<h3 className="text-lg sm:text-2xl font-black text-medical-gray-900 italic font-vazir">توضیحات و معرفی محصول</h3>
|
<h3 className="text-lg sm:text-2xl font-black text-medical-gray-900 italic font-vazir">توضیحات و معرفی محصول</h3>
|
||||||
</div>
|
</div>
|
||||||
<div className="text-xs sm:text-base text-medical-gray-600 font-medium leading-relaxed sm:leading-loose font-vazir space-y-2 sm:space-y-3 pt-2 sm:pt-3 border-t border-medical-gray-100 relative">
|
<div className="text-xs sm:text-base text-medical-gray-700 font-medium leading-relaxed sm:leading-loose font-vazir space-y-3 pt-2 relative">
|
||||||
{(() => {
|
{(() => {
|
||||||
const descText = fullProduct.description.trim();
|
const descText = fullProduct.description.trim();
|
||||||
const paragraphs = descText.split('\n').filter(Boolean);
|
const isHtml = /<[a-z][\s\S]*>/i.test(descText);
|
||||||
const isLongText = descText.length > 180 || paragraphs.length > 1;
|
const formattedHtml = isHtml
|
||||||
|
? descText
|
||||||
|
: descText.split('\n').filter(Boolean).map(p => `<p>${p.trim()}</p>`).join('');
|
||||||
|
|
||||||
|
const isLongText = descText.length > 400;
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<div className="space-y-2 text-justify">
|
<div
|
||||||
{isLongText && !isFullDescriptionOpen ? (
|
className={`relative overflow-hidden transition-all duration-300 ${
|
||||||
<p>
|
isLongText && !isFullDescriptionOpen ? 'max-h-64' : 'max-h-none'
|
||||||
{descText.slice(0, 180)}...
|
}`}
|
||||||
</p>
|
>
|
||||||
) : (
|
<div
|
||||||
paragraphs.map((para, pIdx) => (
|
dangerouslySetInnerHTML={{ __html: formattedHtml }}
|
||||||
<p key={pIdx}>{para.trim()}</p>
|
className="rich-product-description space-y-3 font-vazir text-justify leading-relaxed sm:leading-loose [&>h1]:text-lg [&>h1]:sm:text-xl [&>h1]:font-black [&>h1]:text-medical-gray-900 [&>h1]:mt-4 [&>h1]:mb-2 [&>h2]:text-base [&>h2]:sm:text-lg [&>h2]:font-black [&>h2]:text-medical-gray-900 [&>h2]:mt-3 [&>h2]:mb-1.5 [&>h3]:text-sm [&>h3]:sm:text-base [&>h3]:font-black [&>h3]:text-medical-gray-900 [&>h3]:mt-3 [&>h3]:mb-1 [&>h4]:text-xs [&>h4]:sm:text-sm [&>h4]:font-bold [&>h4]:text-medical-gray-800 [&>p]:leading-relaxed [&>p]:sm:leading-loose [&>ul]:list-disc [&>ul]:pr-5 [&>ul]:space-y-1 [&>ol]:list-decimal [&>ol]:pr-5 [&>ol]:space-y-1 [&>table]:w-full [&>table]:border-collapse [&>table]:my-3 [&>table_th]:border [&>table_th]:border-medical-gray-200 [&>table_th]:p-2 [&>table_th]:bg-medical-gray-100 [&>table_td]:border [&>table_td]:border-medical-gray-200 [&>table_td]:p-2 [&>hr]:my-4 [&>hr]:border-medical-gray-200 [&>blockquote]:border-r-4 [&>blockquote]:border-canina-blue [&>blockquote]:pr-3 [&>blockquote]:italic [&>blockquote]:bg-canina-blue/5 [&>blockquote]:p-2 [&>blockquote]:rounded-l-lg [&>img]:rounded-xl [&>img]:my-3 [&>img]:max-w-full [&>img]:shadow-sm"
|
||||||
))
|
/>
|
||||||
|
|
||||||
|
{/* Gradient fade overlay when collapsed */}
|
||||||
|
{isLongText && !isFullDescriptionOpen && (
|
||||||
|
<div className="absolute inset-x-0 bottom-0 h-24 bg-gradient-to-t from-white via-white/90 to-transparent pointer-events-none" />
|
||||||
)}
|
)}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -526,7 +534,7 @@ export default function ProductPage({ productSlug }: { productSlug: string }) {
|
|||||||
<button
|
<button
|
||||||
type="button"
|
type="button"
|
||||||
onClick={() => setIsFullDescriptionOpen(prev => !prev)}
|
onClick={() => setIsFullDescriptionOpen(prev => !prev)}
|
||||||
className="inline-flex items-center gap-1.5 px-4 py-2 bg-medical-gray-50 hover:bg-canina-blue/10 text-canina-blue rounded-xl text-xs font-black transition-all border border-medical-gray-200 hover:border-canina-blue/30 cursor-pointer"
|
className="inline-flex items-center gap-1.5 px-5 py-2.5 bg-medical-gray-50 hover:bg-canina-blue/10 text-canina-blue rounded-xl text-xs font-black transition-all border border-medical-gray-200 hover:border-canina-blue/30 cursor-pointer"
|
||||||
>
|
>
|
||||||
<span>{isFullDescriptionOpen ? 'بستن توضیحات' : 'مشاهده توضیحات کامل و بیشتر'}</span>
|
<span>{isFullDescriptionOpen ? 'بستن توضیحات' : 'مشاهده توضیحات کامل و بیشتر'}</span>
|
||||||
{isFullDescriptionOpen ? <ChevronUp className="w-4 h-4" /> : <ChevronDown className="w-4 h-4" />}
|
{isFullDescriptionOpen ? <ChevronUp className="w-4 h-4" /> : <ChevronDown className="w-4 h-4" />}
|
||||||
@ -1091,7 +1099,7 @@ export default function ProductPage({ productSlug }: { productSlug: string }) {
|
|||||||
</div>
|
</div>
|
||||||
<div className="flex-1 text-center md:text-right">
|
<div className="flex-1 text-center md:text-right">
|
||||||
<h4 className="text-xl font-black text-medical-gray-900 mb-2">{relProduct.name}</h4>
|
<h4 className="text-xl font-black text-medical-gray-900 mb-2">{relProduct.name}</h4>
|
||||||
<p className="text-sm text-medical-gray-500 mb-6">{relProduct.description}</p>
|
<p className="text-sm text-medical-gray-500 mb-6">{relProduct.shortDescription || (relProduct.description ? relProduct.description.replace(/<[^>]*>/g, '') : '')}</p>
|
||||||
<div className="flex items-center justify-center md:justify-start gap-4">
|
<div className="flex items-center justify-center md:justify-start gap-4">
|
||||||
<span className="text-lg font-black text-canina-blue">{relProduct.price}</span>
|
<span className="text-lg font-black text-canina-blue">{relProduct.price}</span>
|
||||||
<ArrowRight className="w-4 h-4 text-medical-gray-300" />
|
<ArrowRight className="w-4 h-4 text-medical-gray-300" />
|
||||||
|
|||||||
@ -437,7 +437,7 @@ export default function CatalogPageSpread({
|
|||||||
</p>
|
</p>
|
||||||
)}
|
)}
|
||||||
<p className="text-[9px] text-slate-500 font-medium line-clamp-2 leading-relaxed text-justify">
|
<p className="text-[9px] text-slate-500 font-medium line-clamp-2 leading-relaxed text-justify">
|
||||||
{product.shortDescription || product.description}
|
{product.shortDescription || (product.description ? product.description.replace(/<[^>]*>/g, '') : '')}
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@ -75,9 +75,16 @@ export default function ProductDetailModal({ product, categoryColor = "#0284C7",
|
|||||||
<span className="text-xs font-black text-slate-400 uppercase tracking-widest block">
|
<span className="text-xs font-black text-slate-400 uppercase tracking-widest block">
|
||||||
شرح بالینی و عملکرد:
|
شرح بالینی و عملکرد:
|
||||||
</span>
|
</span>
|
||||||
<p className="text-sm text-slate-600 leading-relaxed font-medium">
|
{/<[a-z][\s\S]*>/i.test(product.description || '') ? (
|
||||||
{product.description}
|
<div
|
||||||
</p>
|
dangerouslySetInnerHTML={{ __html: product.description || '' }}
|
||||||
|
className="text-sm text-slate-600 leading-relaxed font-medium space-y-2 [&>h1]:font-black [&>h2]:font-black [&>h3]:font-black [&>p]:leading-relaxed [&>ul]:list-disc [&>ul]:pr-4 [&>ol]:list-decimal [&>ol]:pr-4 text-justify"
|
||||||
|
/>
|
||||||
|
) : (
|
||||||
|
<p className="text-sm text-slate-600 leading-relaxed font-medium text-justify">
|
||||||
|
{product.description}
|
||||||
|
</p>
|
||||||
|
)}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{/* Species & Dosage badges */}
|
{/* Species & Dosage badges */}
|
||||||
|
|||||||
@ -147,7 +147,7 @@
|
|||||||
"145": "admin.service.ts",
|
"145": "admin.service.ts",
|
||||||
"146": "System Discovery",
|
"146": "System Discovery",
|
||||||
"147": "ArchivePage.tsx",
|
"147": "ArchivePage.tsx",
|
||||||
"148": "bcrypt",
|
"148": "CreateUserDto",
|
||||||
"149": "SmsSettingsPage.tsx",
|
"149": "SmsSettingsPage.tsx",
|
||||||
"150": "Product Requirement Document (PRD)",
|
"150": "Product Requirement Document (PRD)",
|
||||||
"151": "class-transformer",
|
"151": "class-transformer",
|
||||||
@ -235,7 +235,7 @@
|
|||||||
"233": "tailwindcss",
|
"233": "tailwindcss",
|
||||||
"234": "@nestjs/schematics",
|
"234": "@nestjs/schematics",
|
||||||
"235": "@nestjs/testing",
|
"235": "@nestjs/testing",
|
||||||
"236": "prisma",
|
"236": "@nestjs/swagger",
|
||||||
"237": "source-map-support",
|
"237": "source-map-support",
|
||||||
"238": "ts-jest",
|
"238": "ts-jest",
|
||||||
"239": "ts-loader",
|
"239": "ts-loader",
|
||||||
@ -322,7 +322,7 @@
|
|||||||
"320": "@testing-library/react",
|
"320": "@testing-library/react",
|
||||||
"321": "orders/page.tsx",
|
"321": "orders/page.tsx",
|
||||||
"322": "pets/page.tsx",
|
"322": "pets/page.tsx",
|
||||||
"323": ".getDashboardStats",
|
"323": "eslint-config-prettier",
|
||||||
"324": "eslint",
|
"324": "eslint",
|
||||||
"325": "@types/react-dom",
|
"325": "@types/react-dom",
|
||||||
"327": "eslint-plugin-react-refresh"
|
"327": "eslint-plugin-react-refresh"
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
@ -7,18 +7,18 @@
|
|||||||
"5": "CmsController",
|
"5": "CmsController",
|
||||||
"6": "tickets.controller.ts",
|
"6": "tickets.controller.ts",
|
||||||
"7": "Button.tsx",
|
"7": "Button.tsx",
|
||||||
"8": "users.controller.ts",
|
"8": "ProductsService",
|
||||||
"9": "devDependencies",
|
"9": "devDependencies",
|
||||||
"10": "CreateReviewDto",
|
"10": "ReviewsService",
|
||||||
"11": "MediaSelector.tsx",
|
"11": "MediaSelector.tsx",
|
||||||
"12": "index.ts",
|
"12": "index.ts",
|
||||||
"13": "app-audit-verification.e2e-spec.js",
|
"13": "app-audit-verification.e2e-spec.js",
|
||||||
"14": "PetProfile.tsx",
|
"14": "userStore.ts",
|
||||||
"15": "src/services/api.ts",
|
"15": "src/services/api.ts",
|
||||||
"16": "DoctorQueryDto",
|
"16": "DoctorQueryDto",
|
||||||
"17": "schema.ts",
|
"17": "schema.ts",
|
||||||
"18": "JwtAuthGuard",
|
"18": "JwtAuthGuard",
|
||||||
"19": "ProductsService",
|
"19": "ProductsController",
|
||||||
"20": "CreateVideoDto",
|
"20": "CreateVideoDto",
|
||||||
"21": "admin.module.ts",
|
"21": "admin.module.ts",
|
||||||
"22": "FeaturedProducts.tsx",
|
"22": "FeaturedProducts.tsx",
|
||||||
@ -32,12 +32,12 @@
|
|||||||
"30": "DEVOPS-001",
|
"30": "DEVOPS-001",
|
||||||
"31": "DOC-001",
|
"31": "DOC-001",
|
||||||
"32": "adminRoutes.tsx",
|
"32": "adminRoutes.tsx",
|
||||||
"33": "WholesaleService",
|
"33": "WholesaleApplyDto",
|
||||||
"34": "B2BService",
|
"34": "B2BService",
|
||||||
"35": "AuthController",
|
"35": "AuthController",
|
||||||
"36": "FaqService",
|
"36": "FaqService",
|
||||||
"37": "راهنمای تست سیستم (Software Testing)",
|
"37": "راهنمای تست سیستم (Software Testing)",
|
||||||
"38": "Transactions.tsx",
|
"38": "Button",
|
||||||
"39": "CategoriesController",
|
"39": "CategoriesController",
|
||||||
"40": "MediaController",
|
"40": "MediaController",
|
||||||
"41": "What You Must Do When Invoked",
|
"41": "What You Must Do When Invoked",
|
||||||
@ -45,15 +45,15 @@
|
|||||||
"43": "BannersService",
|
"43": "BannersService",
|
||||||
"44": "TestimonialsService",
|
"44": "TestimonialsService",
|
||||||
"45": "What You Must Do When Invoked",
|
"45": "What You Must Do When Invoked",
|
||||||
"46": "HomeController",
|
"46": "20260526145407_init/migration.sql",
|
||||||
"47": "IngredientsService",
|
"47": "IngredientsService",
|
||||||
"48": "UsersController",
|
"48": "UsersService",
|
||||||
"49": "devDependencies",
|
"49": "devDependencies",
|
||||||
"50": "devDependencies",
|
"50": "devDependencies",
|
||||||
"51": "BlogsController",
|
"51": "BlogsController",
|
||||||
"52": "PrescriptionsService",
|
"52": "PrescriptionsService",
|
||||||
"53": "SmartAdvisorService",
|
"53": "SmartAdvisorService",
|
||||||
"54": "auth.module.ts",
|
"54": "Reports.tsx",
|
||||||
"55": "UITexts.tsx",
|
"55": "UITexts.tsx",
|
||||||
"56": "Orders.tsx",
|
"56": "Orders.tsx",
|
||||||
"57": "Role & Core Objective",
|
"57": "Role & Core Objective",
|
||||||
@ -61,11 +61,11 @@
|
|||||||
"59": "compilerOptions",
|
"59": "compilerOptions",
|
||||||
"60": "PaymentService",
|
"60": "PaymentService",
|
||||||
"61": "AdminTransactionFilterDto",
|
"61": "AdminTransactionFilterDto",
|
||||||
"62": "ProductDto",
|
"62": "RouteErrorBoundary",
|
||||||
"63": "dependencies",
|
"63": "dependencies",
|
||||||
"64": "compilerOptions",
|
"64": "compilerOptions",
|
||||||
"65": "BlogsService",
|
"65": "BlogsService",
|
||||||
"66": "ApiOperation",
|
"66": "AdminQueryDto",
|
||||||
"67": "PetsController",
|
"67": "PetsController",
|
||||||
"68": "UserDashboard.tsx",
|
"68": "UserDashboard.tsx",
|
||||||
"69": "Required Review Group Closures",
|
"69": "Required Review Group Closures",
|
||||||
@ -89,7 +89,7 @@
|
|||||||
"87": "dependencies",
|
"87": "dependencies",
|
||||||
"88": "CreateEBankCheckoutDto",
|
"88": "CreateEBankCheckoutDto",
|
||||||
"89": "seed-products.ts",
|
"89": "seed-products.ts",
|
||||||
"90": "api",
|
"90": "CreateReviewDto",
|
||||||
"91": "Reconciled Audit Roles & Assignments",
|
"91": "Reconciled Audit Roles & Assignments",
|
||||||
"92": "OrdersService",
|
"92": "OrdersService",
|
||||||
"93": "lib/services/api.ts",
|
"93": "lib/services/api.ts",
|
||||||
@ -105,7 +105,7 @@
|
|||||||
"103": "Comprehensive Change Log",
|
"103": "Comprehensive Change Log",
|
||||||
"104": "Coupons.tsx",
|
"104": "Coupons.tsx",
|
||||||
"105": "Operational Rules & Boundaries",
|
"105": "Operational Rules & Boundaries",
|
||||||
"106": "UsersService",
|
"106": "MetricsController",
|
||||||
"107": "PaginationDto",
|
"107": "PaginationDto",
|
||||||
"108": "PrismaService",
|
"108": "PrismaService",
|
||||||
"109": "1. Summary of Integrity Repairs Performed",
|
"109": "1. Summary of Integrity Repairs Performed",
|
||||||
@ -114,21 +114,21 @@
|
|||||||
"112": "Operational Rules & Boundaries",
|
"112": "Operational Rules & Boundaries",
|
||||||
"113": "RegisterDto",
|
"113": "RegisterDto",
|
||||||
"114": "AppService",
|
"114": "AppService",
|
||||||
"115": "VetGallery.tsx",
|
"115": "VerifyOtpDto",
|
||||||
"116": "Vazirmatn Changelog",
|
"116": "Vazirmatn Changelog",
|
||||||
"117": "Vazirmatn Font فونت وزیرمتن",
|
"117": "Vazirmatn Font فونت وزیرمتن",
|
||||||
"118": "Operational Rules & Boundaries",
|
"118": "Operational Rules & Boundaries",
|
||||||
"119": "compilerOptions",
|
"119": "compilerOptions",
|
||||||
"120": "compilerOptions",
|
"120": "compilerOptions",
|
||||||
"121": "backend/README.md",
|
"121": "backend/README.md",
|
||||||
"122": "AdminController",
|
"122": "ApiOperation",
|
||||||
"123": "AuthService",
|
"123": "auth.service.ts",
|
||||||
"124": "Repository Map",
|
"124": "Repository Map",
|
||||||
"125": "validate_integrity.js",
|
"125": "validate_integrity.js",
|
||||||
"126": "admin-panel/package.json",
|
"126": "admin-panel/package.json",
|
||||||
"127": "Sahel-Font",
|
"127": "Sahel-Font",
|
||||||
"128": "Body",
|
"128": "AdminController",
|
||||||
"129": "auth.service.ts",
|
"129": "auth.controller.ts",
|
||||||
"130": "Sahel-Font",
|
"130": "Sahel-Font",
|
||||||
"131": "Role & Core Objective",
|
"131": "Role & Core Objective",
|
||||||
"132": "orchestrate.py",
|
"132": "orchestrate.py",
|
||||||
@ -143,10 +143,10 @@
|
|||||||
"141": "application/package.json",
|
"141": "application/package.json",
|
||||||
"142": "start-dev.js",
|
"142": "start-dev.js",
|
||||||
"143": "generate-openapi.js",
|
"143": "generate-openapi.js",
|
||||||
"144": "WholesaleApplyDto",
|
"144": "reviews.controller.ts",
|
||||||
"145": "admin.service.ts",
|
"145": "admin.service.ts",
|
||||||
"146": "System Discovery",
|
"146": "System Discovery",
|
||||||
"147": "HomeClient.tsx",
|
"147": "ArchivePage.tsx",
|
||||||
"148": "bcrypt",
|
"148": "bcrypt",
|
||||||
"149": "SmsSettingsPage.tsx",
|
"149": "SmsSettingsPage.tsx",
|
||||||
"150": "Product Requirement Document (PRD)",
|
"150": "Product Requirement Document (PRD)",
|
||||||
@ -176,14 +176,14 @@
|
|||||||
"174": "rebuild_honest_ledger.js",
|
"174": "rebuild_honest_ledger.js",
|
||||||
"175": "validate_evidence_grade.js",
|
"175": "validate_evidence_grade.js",
|
||||||
"176": "@nestjs/core",
|
"176": "@nestjs/core",
|
||||||
"177": "trust-seals/page.tsx",
|
"177": "SendOtpDto",
|
||||||
"178": "نقشه جامع پوشش تستهای سرتاسری (E2E Test Coverage Map) — پروژه Canina",
|
"178": "نقشه جامع پوشش تستهای سرتاسری (E2E Test Coverage Map) — پروژه Canina",
|
||||||
"179": "@nestjs/jwt",
|
"179": "@nestjs/jwt",
|
||||||
"180": "API Contract Specification",
|
"180": "API Contract Specification",
|
||||||
"181": "⚙️ Backend Technical Review (05_dev_backend)",
|
"181": "⚙️ Backend Technical Review (05_dev_backend)",
|
||||||
"182": "🎨 Frontend & Admin Panel Technical Review (06_dev_frontend)",
|
"182": "🎨 Frontend & Admin Panel Technical Review (06_dev_frontend)",
|
||||||
"183": "🚀 SEO & Content Strategy Review (12_seo_content)",
|
"183": "🚀 SEO & Content Strategy Review (12_seo_content)",
|
||||||
"184": "track/page.tsx",
|
"184": "UpdateReviewDto",
|
||||||
"185": "@eslint/eslintrc",
|
"185": "@eslint/eslintrc",
|
||||||
"186": "seed-ui-texts.ts",
|
"186": "seed-ui-texts.ts",
|
||||||
"187": "seed-wiki.ts",
|
"187": "seed-wiki.ts",
|
||||||
@ -196,7 +196,7 @@
|
|||||||
"194": "Raw Finding Verification & Disposition Report",
|
"194": "Raw Finding Verification & Disposition Report",
|
||||||
"195": "React + TypeScript + Vite",
|
"195": "React + TypeScript + Vite",
|
||||||
"196": "Select.tsx",
|
"196": "Select.tsx",
|
||||||
"197": "app/page.tsx",
|
"197": "catalog/page.tsx",
|
||||||
"198": "@nestjs/throttler",
|
"198": "@nestjs/throttler",
|
||||||
"199": "passport",
|
"199": "passport",
|
||||||
"200": "application/README.md",
|
"200": "application/README.md",
|
||||||
@ -230,7 +230,7 @@
|
|||||||
"228": "rules/graphify.md",
|
"228": "rules/graphify.md",
|
||||||
"229": ".agents/workflows/graphify.md",
|
"229": ".agents/workflows/graphify.md",
|
||||||
"230": "instructions.md",
|
"230": "instructions.md",
|
||||||
"231": "RedisService",
|
"231": "RevalidationService",
|
||||||
"232": "helmet",
|
"232": "helmet",
|
||||||
"233": "tailwindcss",
|
"233": "tailwindcss",
|
||||||
"234": "@nestjs/schematics",
|
"234": "@nestjs/schematics",
|
||||||
@ -312,7 +312,7 @@
|
|||||||
"310": "tailwindcss",
|
"310": "tailwindcss",
|
||||||
"311": "@types/supertest",
|
"311": "@types/supertest",
|
||||||
"312": "@types/passport-jwt",
|
"312": "@types/passport-jwt",
|
||||||
"313": "Modal.tsx",
|
"313": "20260526160916_add_ui_texts_and_scientific_terms/migration.sql",
|
||||||
"314": "typescript-eslint",
|
"314": "typescript-eslint",
|
||||||
"315": "typescript",
|
"315": "typescript",
|
||||||
"316": "prettier",
|
"316": "prettier",
|
||||||
@ -322,7 +322,8 @@
|
|||||||
"320": "@testing-library/react",
|
"320": "@testing-library/react",
|
||||||
"321": "orders/page.tsx",
|
"321": "orders/page.tsx",
|
||||||
"322": "pets/page.tsx",
|
"322": "pets/page.tsx",
|
||||||
"323": "eslint-config-prettier",
|
"323": ".getDashboardStats",
|
||||||
"324": "eslint-config-next",
|
"324": "eslint",
|
||||||
|
"325": "@types/react-dom",
|
||||||
"327": "eslint-plugin-react-refresh"
|
"327": "eslint-plugin-react-refresh"
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,16 +1,16 @@
|
|||||||
# Graph Report - canina (2026-08-26)
|
# Graph Report - canina (2026-08-29)
|
||||||
|
|
||||||
## Corpus Check
|
## Corpus Check
|
||||||
- 590 files · ~1,334,899 words
|
- 590 files · ~1,335,009 words
|
||||||
- Verdict: corpus is large enough that graph structure adds value.
|
- Verdict: corpus is large enough that graph structure adds value.
|
||||||
|
|
||||||
## Summary
|
## Summary
|
||||||
- 4118 nodes · 7419 edges · 326 communities (208 shown, 118 thin omitted)
|
- 4136 nodes · 7451 edges · 327 communities (209 shown, 118 thin omitted)
|
||||||
- Extraction: 96% EXTRACTED · 4% INFERRED · 0% AMBIGUOUS · INFERRED: 281 edges (avg confidence: 0.79)
|
- Extraction: 96% EXTRACTED · 4% INFERRED · 0% AMBIGUOUS · INFERRED: 281 edges (avg confidence: 0.79)
|
||||||
- Token cost: 0 input · 0 output
|
- Token cost: 0 input · 0 output
|
||||||
|
|
||||||
## Graph Freshness
|
## Graph Freshness
|
||||||
- Built from commit: `5db23443`
|
- Built from commit: `1651a593`
|
||||||
- Run `git rev-parse HEAD` and compare to check if the graph is stale.
|
- Run `git rev-parse HEAD` and compare to check if the graph is stale.
|
||||||
- Run `graphify update .` after code changes (no API cost).
|
- Run `graphify update .` after code changes (no API cost).
|
||||||
|
|
||||||
@ -23,18 +23,18 @@
|
|||||||
- CmsController
|
- CmsController
|
||||||
- tickets.controller.ts
|
- tickets.controller.ts
|
||||||
- Button.tsx
|
- Button.tsx
|
||||||
- users.controller.ts
|
- ProductsService
|
||||||
- devDependencies
|
- devDependencies
|
||||||
- CreateReviewDto
|
- ReviewsService
|
||||||
- MediaSelector.tsx
|
- MediaSelector.tsx
|
||||||
- index.ts
|
- index.ts
|
||||||
- app-audit-verification.e2e-spec.js
|
- app-audit-verification.e2e-spec.js
|
||||||
- PetProfile.tsx
|
- userStore.ts
|
||||||
- src/services/api.ts
|
- src/services/api.ts
|
||||||
- DoctorQueryDto
|
- DoctorQueryDto
|
||||||
- schema.ts
|
- schema.ts
|
||||||
- JwtAuthGuard
|
- JwtAuthGuard
|
||||||
- ProductsService
|
- ProductsController
|
||||||
- CreateVideoDto
|
- CreateVideoDto
|
||||||
- admin.module.ts
|
- admin.module.ts
|
||||||
- FeaturedProducts.tsx
|
- FeaturedProducts.tsx
|
||||||
@ -48,12 +48,12 @@
|
|||||||
- DEVOPS-001
|
- DEVOPS-001
|
||||||
- DOC-001
|
- DOC-001
|
||||||
- adminRoutes.tsx
|
- adminRoutes.tsx
|
||||||
- WholesaleService
|
- WholesaleApplyDto
|
||||||
- B2BService
|
- B2BService
|
||||||
- AuthController
|
- AuthController
|
||||||
- FaqService
|
- FaqService
|
||||||
- راهنمای تست سیستم (Software Testing)
|
- راهنمای تست سیستم (Software Testing)
|
||||||
- Transactions.tsx
|
- Button
|
||||||
- CategoriesController
|
- CategoriesController
|
||||||
- MediaController
|
- MediaController
|
||||||
- What You Must Do When Invoked
|
- What You Must Do When Invoked
|
||||||
@ -61,15 +61,15 @@
|
|||||||
- BannersService
|
- BannersService
|
||||||
- TestimonialsService
|
- TestimonialsService
|
||||||
- What You Must Do When Invoked
|
- What You Must Do When Invoked
|
||||||
- HomeController
|
- 20260526145407_init/migration.sql
|
||||||
- IngredientsService
|
- IngredientsService
|
||||||
- UsersController
|
- UsersService
|
||||||
- devDependencies
|
- devDependencies
|
||||||
- devDependencies
|
- devDependencies
|
||||||
- BlogsController
|
- BlogsController
|
||||||
- PrescriptionsService
|
- PrescriptionsService
|
||||||
- SmartAdvisorService
|
- SmartAdvisorService
|
||||||
- auth.module.ts
|
- Reports.tsx
|
||||||
- UITexts.tsx
|
- UITexts.tsx
|
||||||
- Orders.tsx
|
- Orders.tsx
|
||||||
- Role & Core Objective
|
- Role & Core Objective
|
||||||
@ -77,11 +77,11 @@
|
|||||||
- compilerOptions
|
- compilerOptions
|
||||||
- PaymentService
|
- PaymentService
|
||||||
- AdminTransactionFilterDto
|
- AdminTransactionFilterDto
|
||||||
- ProductDto
|
- RouteErrorBoundary
|
||||||
- dependencies
|
- dependencies
|
||||||
- compilerOptions
|
- compilerOptions
|
||||||
- BlogsService
|
- BlogsService
|
||||||
- ApiOperation
|
- AdminQueryDto
|
||||||
- PetsController
|
- PetsController
|
||||||
- UserDashboard.tsx
|
- UserDashboard.tsx
|
||||||
- Required Review Group Closures
|
- Required Review Group Closures
|
||||||
@ -105,7 +105,7 @@
|
|||||||
- dependencies
|
- dependencies
|
||||||
- CreateEBankCheckoutDto
|
- CreateEBankCheckoutDto
|
||||||
- seed-products.ts
|
- seed-products.ts
|
||||||
- api
|
- CreateReviewDto
|
||||||
- Reconciled Audit Roles & Assignments
|
- Reconciled Audit Roles & Assignments
|
||||||
- OrdersService
|
- OrdersService
|
||||||
- lib/services/api.ts
|
- lib/services/api.ts
|
||||||
@ -121,7 +121,7 @@
|
|||||||
- Comprehensive Change Log
|
- Comprehensive Change Log
|
||||||
- Coupons.tsx
|
- Coupons.tsx
|
||||||
- Operational Rules & Boundaries
|
- Operational Rules & Boundaries
|
||||||
- UsersService
|
- MetricsController
|
||||||
- PaginationDto
|
- PaginationDto
|
||||||
- PrismaService
|
- PrismaService
|
||||||
- 1. Summary of Integrity Repairs Performed
|
- 1. Summary of Integrity Repairs Performed
|
||||||
@ -130,21 +130,21 @@
|
|||||||
- Operational Rules & Boundaries
|
- Operational Rules & Boundaries
|
||||||
- RegisterDto
|
- RegisterDto
|
||||||
- AppService
|
- AppService
|
||||||
- VetGallery.tsx
|
- VerifyOtpDto
|
||||||
- Vazirmatn Changelog
|
- Vazirmatn Changelog
|
||||||
- Vazirmatn Font فونت وزیرمتن
|
- Vazirmatn Font فونت وزیرمتن
|
||||||
- Operational Rules & Boundaries
|
- Operational Rules & Boundaries
|
||||||
- compilerOptions
|
- compilerOptions
|
||||||
- compilerOptions
|
- compilerOptions
|
||||||
- backend/README.md
|
- backend/README.md
|
||||||
- AdminController
|
- ApiOperation
|
||||||
- AuthService
|
- auth.service.ts
|
||||||
- Repository Map
|
- Repository Map
|
||||||
- validate_integrity.js
|
- validate_integrity.js
|
||||||
- admin-panel/package.json
|
- admin-panel/package.json
|
||||||
- Sahel-Font
|
- Sahel-Font
|
||||||
- Body
|
- AdminController
|
||||||
- auth.service.ts
|
- auth.controller.ts
|
||||||
- Sahel-Font
|
- Sahel-Font
|
||||||
- Role & Core Objective
|
- Role & Core Objective
|
||||||
- orchestrate.py
|
- orchestrate.py
|
||||||
@ -159,10 +159,10 @@
|
|||||||
- application/package.json
|
- application/package.json
|
||||||
- start-dev.js
|
- start-dev.js
|
||||||
- generate-openapi.js
|
- generate-openapi.js
|
||||||
- WholesaleApplyDto
|
- reviews.controller.ts
|
||||||
- admin.service.ts
|
- admin.service.ts
|
||||||
- System Discovery
|
- System Discovery
|
||||||
- HomeClient.tsx
|
- ArchivePage.tsx
|
||||||
- bcrypt
|
- bcrypt
|
||||||
- SmsSettingsPage.tsx
|
- SmsSettingsPage.tsx
|
||||||
- Product Requirement Document (PRD)
|
- Product Requirement Document (PRD)
|
||||||
@ -191,14 +191,14 @@
|
|||||||
- rebuild_honest_ledger.js
|
- rebuild_honest_ledger.js
|
||||||
- validate_evidence_grade.js
|
- validate_evidence_grade.js
|
||||||
- @nestjs/core
|
- @nestjs/core
|
||||||
- trust-seals/page.tsx
|
- SendOtpDto
|
||||||
- نقشه جامع پوشش تستهای سرتاسری (E2E Test Coverage Map) — پروژه Canina
|
- نقشه جامع پوشش تستهای سرتاسری (E2E Test Coverage Map) — پروژه Canina
|
||||||
- @nestjs/jwt
|
- @nestjs/jwt
|
||||||
- API Contract Specification
|
- API Contract Specification
|
||||||
- ⚙️ Backend Technical Review (05_dev_backend)
|
- ⚙️ Backend Technical Review (05_dev_backend)
|
||||||
- 🎨 Frontend & Admin Panel Technical Review (06_dev_frontend)
|
- 🎨 Frontend & Admin Panel Technical Review (06_dev_frontend)
|
||||||
- 🚀 SEO & Content Strategy Review (12_seo_content)
|
- 🚀 SEO & Content Strategy Review (12_seo_content)
|
||||||
- track/page.tsx
|
- UpdateReviewDto
|
||||||
- @eslint/eslintrc
|
- @eslint/eslintrc
|
||||||
- seed-ui-texts.ts
|
- seed-ui-texts.ts
|
||||||
- seed-wiki.ts
|
- seed-wiki.ts
|
||||||
@ -211,7 +211,7 @@
|
|||||||
- Raw Finding Verification & Disposition Report
|
- Raw Finding Verification & Disposition Report
|
||||||
- React + TypeScript + Vite
|
- React + TypeScript + Vite
|
||||||
- Select.tsx
|
- Select.tsx
|
||||||
- app/page.tsx
|
- catalog/page.tsx
|
||||||
- @nestjs/throttler
|
- @nestjs/throttler
|
||||||
- passport
|
- passport
|
||||||
- application/README.md
|
- application/README.md
|
||||||
@ -245,7 +245,7 @@
|
|||||||
- rules/graphify.md
|
- rules/graphify.md
|
||||||
- .agents/workflows/graphify.md
|
- .agents/workflows/graphify.md
|
||||||
- instructions.md
|
- instructions.md
|
||||||
- RedisService
|
- RevalidationService
|
||||||
- helmet
|
- helmet
|
||||||
- tailwindcss
|
- tailwindcss
|
||||||
- @nestjs/schematics
|
- @nestjs/schematics
|
||||||
@ -310,7 +310,7 @@
|
|||||||
- vitest
|
- vitest
|
||||||
- @types/supertest
|
- @types/supertest
|
||||||
- @types/passport-jwt
|
- @types/passport-jwt
|
||||||
- Modal.tsx
|
- 20260526160916_add_ui_texts_and_scientific_terms/migration.sql
|
||||||
- typescript-eslint
|
- typescript-eslint
|
||||||
- typescript
|
- typescript
|
||||||
- prettier
|
- prettier
|
||||||
@ -318,8 +318,8 @@
|
|||||||
- MaskableField.tsx
|
- MaskableField.tsx
|
||||||
- @eslint/js
|
- @eslint/js
|
||||||
- @testing-library/react
|
- @testing-library/react
|
||||||
- eslint-config-prettier
|
- eslint
|
||||||
- eslint-config-next
|
- @types/react-dom
|
||||||
- eslint-plugin-react-refresh
|
- eslint-plugin-react-refresh
|
||||||
|
|
||||||
## God Nodes (most connected - your core abstractions)
|
## God Nodes (most connected - your core abstractions)
|
||||||
@ -339,39 +339,39 @@
|
|||||||
docs/02-user-guide.md → backend/uploads/1781288429353-508765350.jpg
|
docs/02-user-guide.md → backend/uploads/1781288429353-508765350.jpg
|
||||||
- `AuthController` --references--> `ApiResponse` [EXTRACTED]
|
- `AuthController` --references--> `ApiResponse` [EXTRACTED]
|
||||||
backend/src/auth/auth.controller.ts → frontend/admin-panel/src/types/admin.ts
|
backend/src/auth/auth.controller.ts → frontend/admin-panel/src/types/admin.ts
|
||||||
- `BlogsController` --references--> `ApiResponse` [EXTRACTED]
|
|
||||||
backend/src/blogs/blogs.controller.ts → frontend/admin-panel/src/types/admin.ts
|
|
||||||
- `HomeController` --references--> `ApiResponse` [EXTRACTED]
|
|
||||||
backend/src/home/home.controller.ts → frontend/admin-panel/src/types/admin.ts
|
|
||||||
- `OrdersController` --references--> `ApiResponse` [EXTRACTED]
|
- `OrdersController` --references--> `ApiResponse` [EXTRACTED]
|
||||||
backend/src/orders/orders.controller.ts → frontend/admin-panel/src/types/admin.ts
|
backend/src/orders/orders.controller.ts → frontend/admin-panel/src/types/admin.ts
|
||||||
|
- `PetsController` --references--> `ApiResponse` [EXTRACTED]
|
||||||
|
backend/src/pets/pets.controller.ts → frontend/admin-panel/src/types/admin.ts
|
||||||
|
- `ProductsController` --references--> `ApiResponse` [EXTRACTED]
|
||||||
|
backend/src/products/products.controller.ts → frontend/admin-panel/src/types/admin.ts
|
||||||
|
|
||||||
## Import Cycles
|
## Import Cycles
|
||||||
- 3-file cycle: `frontend/application/lib/services/api.ts -> frontend/application/lib/store/userStore.ts -> frontend/application/lib/services/authService.ts -> frontend/application/lib/services/api.ts`
|
- 3-file cycle: `frontend/application/lib/services/api.ts -> frontend/application/lib/store/userStore.ts -> frontend/application/lib/services/authService.ts -> frontend/application/lib/services/api.ts`
|
||||||
- 3-file cycle: `frontend/application/lib/services/api.ts -> frontend/application/lib/store/userStore.ts -> frontend/application/lib/store/cartStore.ts -> frontend/application/lib/services/api.ts`
|
- 3-file cycle: `frontend/application/lib/services/api.ts -> frontend/application/lib/store/userStore.ts -> frontend/application/lib/store/cartStore.ts -> frontend/application/lib/services/api.ts`
|
||||||
- 4-file cycle: `frontend/application/lib/services/api.ts -> frontend/application/lib/store/userStore.ts -> frontend/application/lib/store/cartStore.ts -> frontend/application/lib/services/orderService.ts -> frontend/application/lib/services/api.ts`
|
- 4-file cycle: `frontend/application/lib/services/api.ts -> frontend/application/lib/store/userStore.ts -> frontend/application/lib/store/cartStore.ts -> frontend/application/lib/services/orderService.ts -> frontend/application/lib/services/api.ts`
|
||||||
|
|
||||||
## Communities (326 total, 118 thin omitted)
|
## Communities (327 total, 118 thin omitted)
|
||||||
|
|
||||||
### Community 0 - "Roles"
|
### Community 0 - "Roles"
|
||||||
Cohesion: 0.24
|
Cohesion: 0.24
|
||||||
Nodes (13): Roles(), PaymentController, ApiBearerAuth, ApiOperation, ApiTags, Body, Controller, Get (+5 more)
|
Nodes (13): Roles(), PaymentController, ApiBearerAuth, ApiOperation, ApiTags, Body, Controller, Get (+5 more)
|
||||||
|
|
||||||
### Community 1 - "app.module.ts"
|
### Community 1 - "app.module.ts"
|
||||||
Cohesion: 0.05
|
Cohesion: 0.06
|
||||||
Nodes (39): B2BModule, Module, BannersModule, Module, CmsModule, Module, SmsModule, Global (+31 more)
|
Nodes (39): B2BModule, Module, BannersModule, Module, CmsModule, Module, SmsModule, Global (+31 more)
|
||||||
|
|
||||||
### Community 2 - "SmsService"
|
### Community 2 - "SmsService"
|
||||||
Cohesion: 0.06
|
Cohesion: 0.05
|
||||||
Nodes (27): SmsService, Injectable, SmsLogQueryDto, ApiPropertyOptional, IsIn, IsNumber, IsOptional, IsString (+19 more)
|
Nodes (26): SmsService, Injectable, SmsLogQueryDto, ApiPropertyOptional, IsIn, IsNumber, IsOptional, IsString (+18 more)
|
||||||
|
|
||||||
### Community 3 - "ProductService"
|
### Community 3 - "ProductService"
|
||||||
Cohesion: 0.06
|
Cohesion: 0.06
|
||||||
Nodes (33): dynamic, revalidate, DEFAULT_CATEGORIES, dynamic, revalidate, dynamic, revalidate, BlogCategory (+25 more)
|
Nodes (34): dynamic, revalidate, DEFAULT_CATEGORIES, dynamic, revalidate, dynamic, revalidate, BlogCategory (+26 more)
|
||||||
|
|
||||||
### Community 4 - "ProductPage.tsx"
|
### Community 4 - "ProductPage.tsx"
|
||||||
Cohesion: 0.13
|
Cohesion: 0.06
|
||||||
Nodes (13): PLAYBACK_RATES, PodcastInlinePlayer(), PodcastInlinePlayerProps, ProductImageZoomModalProps, CalculatorState, ICON_MAP, ProductImageZoomModal, ProductPage() (+5 more)
|
Nodes (34): BlogPostClientProps, OrderDetailsModalProps, PLAYBACK_RATES, PodcastInlinePlayer(), PodcastInlinePlayerProps, PLAYBACK_RATES, PodcastPlayerModal(), PodcastPlayerModalProps (+26 more)
|
||||||
|
|
||||||
### Community 5 - "CmsController"
|
### Community 5 - "CmsController"
|
||||||
Cohesion: 0.09
|
Cohesion: 0.09
|
||||||
@ -382,40 +382,40 @@ Cohesion: 0.09
|
|||||||
Nodes (29): AdminUpdateTicketDto, CreateTicketDto, ReplyTicketDto, ApiProperty, ApiPropertyOptional, IsNotEmpty, IsOptional, IsString (+21 more)
|
Nodes (29): AdminUpdateTicketDto, CreateTicketDto, ReplyTicketDto, ApiProperty, ApiPropertyOptional, IsNotEmpty, IsOptional, IsString (+21 more)
|
||||||
|
|
||||||
### Community 7 - "Button.tsx"
|
### Community 7 - "Button.tsx"
|
||||||
Cohesion: 0.12
|
Cohesion: 0.08
|
||||||
Nodes (14): Button(), ButtonProps, ButtonSize, ButtonVariant, Spinner(), FAQ, BlogCommentItem, ProductReview (+6 more)
|
Nodes (20): ButtonProps, ButtonSize, ButtonVariant, Spinner(), FAQ, MENU_TABS, MenuItem, MenuType (+12 more)
|
||||||
|
|
||||||
### Community 8 - "users.controller.ts"
|
### Community 8 - "ProductsService"
|
||||||
Cohesion: 0.13
|
Cohesion: 0.19
|
||||||
Nodes (13): AddressDto, ApiProperty, ApiPropertyOptional, IsBoolean, IsNotEmpty, IsOptional, IsString, ApiPropertyOptional (+5 more)
|
Nodes (10): GetProductsDto, ApiPropertyOptional, IsEnum, IsOptional, IsString, Query, ProductsModule, Module (+2 more)
|
||||||
|
|
||||||
### Community 9 - "devDependencies"
|
### Community 9 - "devDependencies"
|
||||||
Cohesion: 0.22
|
Cohesion: 0.22
|
||||||
Nodes (9): devDependencies, eslint, @types/bcryptjs, @types/node, typescript, eslint, @types/node, typescript (+1 more)
|
Nodes (9): devDependencies, eslint-config-prettier, @types/bcryptjs, @types/node, typescript, @types/node, typescript, eslint-config-prettier (+1 more)
|
||||||
|
|
||||||
### Community 10 - "CreateReviewDto"
|
### Community 10 - "ReviewsService"
|
||||||
Cohesion: 0.08
|
Cohesion: 0.12
|
||||||
Nodes (25): CreateReviewDto, ApiProperty, IsInt, IsNotEmpty, IsOptional, IsString, Min, ReviewsController (+17 more)
|
Nodes (17): ReviewsController, ApiBearerAuth, ApiOperation, ApiTags, Body, Controller, Delete, Get (+9 more)
|
||||||
|
|
||||||
### Community 11 - "MediaSelector.tsx"
|
### Community 11 - "MediaSelector.tsx"
|
||||||
Cohesion: 0.06
|
Cohesion: 0.07
|
||||||
Nodes (38): ConfirmModal(), ConfirmModalProps, ImagePreviewModal(), ImagePreviewModalProps, getFileType(), Media, MediaSelector(), MediaSelectorProps (+30 more)
|
Nodes (36): ConfirmModal(), ConfirmModalProps, getFileType(), Media, MediaSelector(), MediaSelectorProps, maxWidthClasses, Modal() (+28 more)
|
||||||
|
|
||||||
### Community 12 - "index.ts"
|
### Community 12 - "index.ts"
|
||||||
Cohesion: 0.06
|
Cohesion: 0.06
|
||||||
Nodes (24): backend, frontend, playwright.config.ts, @playwright/test, tests/**/*.ts, authFile, test, compilerOptions (+16 more)
|
Nodes (24): backend, frontend, playwright.config.ts, @playwright/test, tests/**/*.ts, authFile, test, compilerOptions (+16 more)
|
||||||
|
|
||||||
### Community 13 - "app-audit-verification.e2e-spec.js"
|
### Community 13 - "app-audit-verification.e2e-spec.js"
|
||||||
Cohesion: 0.07
|
Cohesion: 0.06
|
||||||
Nodes (26): EnvironmentVariables, IsNotEmpty, IsOptional, IsString, validateEnv(), CustomHttpExceptionFilter, Catch, PrismaExceptionFilter (+18 more)
|
Nodes (28): AppModule, Module, EnvironmentVariables, IsNotEmpty, IsOptional, IsString, validateEnv(), CustomHttpExceptionFilter (+20 more)
|
||||||
|
|
||||||
### Community 14 - "PetProfile.tsx"
|
### Community 14 - "userStore.ts"
|
||||||
Cohesion: 0.13
|
Cohesion: 0.07
|
||||||
Nodes (20): ClientLayout(), metadata, Header(), PetProfile(), PrescriptionUploadModal(), PrescriptionUploadModalProps, CURRENT_SYMPTOMS, MEDICAL_HISTORIES (+12 more)
|
Nodes (33): AuthModal, LoginModal, metadata, AuthModal(), AuthModalProps, extractOtpFromText(), Header(), MENU_ICONS (+25 more)
|
||||||
|
|
||||||
### Community 15 - "src/services/api.ts"
|
### Community 15 - "src/services/api.ts"
|
||||||
Cohesion: 0.08
|
Cohesion: 0.07
|
||||||
Nodes (31): Layout(), ProtectedRoute(), MenuGroup, Sidebar(), SidebarProps, SubMenuItem, LiveMonitoringSummary, SEARCHABLE_PAGES (+23 more)
|
Nodes (35): Layout(), ProtectedRoute(), MenuGroup, Sidebar(), SidebarProps, SubMenuItem, LiveMonitoringSummary, SEARCHABLE_PAGES (+27 more)
|
||||||
|
|
||||||
### Community 16 - "DoctorQueryDto"
|
### Community 16 - "DoctorQueryDto"
|
||||||
Cohesion: 0.09
|
Cohesion: 0.09
|
||||||
@ -426,20 +426,20 @@ Cohesion: 0.14
|
|||||||
Nodes (18): B2BPage(), generateMetadata(), ContactPage(), generateMetadata(), generateMetadata(), getInitialVideos(), Videos(), ContactFormClient() (+10 more)
|
Nodes (18): B2BPage(), generateMetadata(), ContactPage(), generateMetadata(), generateMetadata(), getInitialVideos(), Videos(), ContactFormClient() (+10 more)
|
||||||
|
|
||||||
### Community 18 - "JwtAuthGuard"
|
### Community 18 - "JwtAuthGuard"
|
||||||
Cohesion: 0.19
|
Cohesion: 0.16
|
||||||
Nodes (7): JwtAuthGuard, Injectable, ROLES_KEY, RequestWithUser, RolesGuard, Injectable, UserReqPayload
|
Nodes (8): JwtAuthGuard, Injectable, B2BWholesaleOrderItem, ROLES_KEY, RequestWithUser, RolesGuard, Injectable, UserReqPayload
|
||||||
|
|
||||||
### Community 19 - "ProductsService"
|
### Community 19 - "ProductsController"
|
||||||
Cohesion: 0.09
|
Cohesion: 0.16
|
||||||
Nodes (19): GetProductsDto, ApiPropertyOptional, IsEnum, IsOptional, IsString, ProductsController, ApiOperation, ApiTags (+11 more)
|
Nodes (9): ProductsController, ApiOperation, ApiTags, Body, Controller, Get, Param, Patch (+1 more)
|
||||||
|
|
||||||
### Community 20 - "CreateVideoDto"
|
### Community 20 - "CreateVideoDto"
|
||||||
Cohesion: 0.08
|
Cohesion: 0.09
|
||||||
Nodes (29): CreateVideoDto, ApiProperty, ApiPropertyOptional, IsBoolean, IsNotEmpty, IsOptional, IsString, UpdateVideoDto (+21 more)
|
Nodes (24): CreateVideoDto, ApiProperty, ApiPropertyOptional, IsBoolean, IsNotEmpty, IsOptional, IsString, UpdateVideoDto (+16 more)
|
||||||
|
|
||||||
### Community 21 - "admin.module.ts"
|
### Community 21 - "admin.module.ts"
|
||||||
Cohesion: 0.07
|
Cohesion: 0.06
|
||||||
Nodes (20): AdminModule, Module, PetQuery, PetsService, Injectable, ReportsController, ApiBearerAuth, ApiOperation (+12 more)
|
Nodes (22): AdminModule, Module, MediaService, Injectable, ReportsController, ApiBearerAuth, ApiOperation, ApiQuery (+14 more)
|
||||||
|
|
||||||
### Community 22 - "FeaturedProducts.tsx"
|
### Community 22 - "FeaturedProducts.tsx"
|
||||||
Cohesion: 0.14
|
Cohesion: 0.14
|
||||||
@ -483,18 +483,18 @@ Nodes (31): Acceptance Criteria, Affected Application, Affected Files, Alternati
|
|||||||
|
|
||||||
### Community 32 - "adminRoutes.tsx"
|
### Community 32 - "adminRoutes.tsx"
|
||||||
Cohesion: 0.06
|
Cohesion: 0.06
|
||||||
Nodes (24): App(), Props, RouteErrorBoundary, State, HeroBanner, VetTestimonial, BestSellerItem, CategoryDistItem (+16 more)
|
Nodes (26): App(), ContactInfoItem, ContactSubmission, CategoryDist, DashboardData, Ticket, TicketMessage, WholesaleRequest (+18 more)
|
||||||
|
|
||||||
### Community 33 - "WholesaleService"
|
### Community 33 - "WholesaleApplyDto"
|
||||||
Cohesion: 0.14
|
Cohesion: 0.10
|
||||||
Nodes (14): ApiBearerAuth, ApiOperation, ApiTags, Body, Controller, Get, Param, Post (+6 more)
|
Nodes (20): ApiProperty, ApiPropertyOptional, IsNotEmpty, IsOptional, IsString, WholesaleApplyDto, ApiBearerAuth, ApiOperation (+12 more)
|
||||||
|
|
||||||
### Community 34 - "B2BService"
|
### Community 34 - "B2BService"
|
||||||
Cohesion: 0.12
|
Cohesion: 0.13
|
||||||
Nodes (16): B2BController, ApiBearerAuth, ApiOperation, ApiTags, Body, Controller, Get, Param (+8 more)
|
Nodes (15): B2BController, ApiBearerAuth, ApiOperation, ApiTags, Body, Controller, Get, Param (+7 more)
|
||||||
|
|
||||||
### Community 35 - "AuthController"
|
### Community 35 - "AuthController"
|
||||||
Cohesion: 0.25
|
Cohesion: 0.23
|
||||||
Nodes (13): AuthController, ApiBadRequestResponse, ApiBearerAuth, ApiOkResponse, ApiOperation, ApiTags, Body, Controller (+5 more)
|
Nodes (13): AuthController, ApiBadRequestResponse, ApiBearerAuth, ApiOkResponse, ApiOperation, ApiTags, Body, Controller (+5 more)
|
||||||
|
|
||||||
### Community 36 - "FaqService"
|
### Community 36 - "FaqService"
|
||||||
@ -505,17 +505,17 @@ Nodes (14): FaqController, ApiBearerAuth, ApiOperation, ApiTags, Body, Controlle
|
|||||||
Cohesion: 0.07
|
Cohesion: 0.07
|
||||||
Nodes (25): اجرای بکاند, اجرای فرانتاند, اجرای پروژه در سرور با PM2, برای راهاندازی بکاند:, برای راهاندازی فرانتاند Next.js:, بیلد کردن پروژه (Building), ذخیره پروسهها تا پس از ریاستارت سرور قطع نشوند:, راهاندازی و انتشار سیستم (Setup & Deployment) (+17 more)
|
Nodes (25): اجرای بکاند, اجرای فرانتاند, اجرای پروژه در سرور با PM2, برای راهاندازی بکاند:, برای راهاندازی فرانتاند Next.js:, بیلد کردن پروژه (Building), ذخیره پروسهها تا پس از ریاستارت سرور قطع نشوند:, راهاندازی و انتشار سیستم (Setup & Deployment) (+17 more)
|
||||||
|
|
||||||
### Community 38 - "Transactions.tsx"
|
### Community 38 - "Button"
|
||||||
Cohesion: 0.10
|
Cohesion: 0.16
|
||||||
Nodes (19): TransactionReceiptData, TransactionReceiptModal(), TransactionReceiptModalProps, Badge(), BadgeProps, BadgeVariant, variantStyles, ThSort() (+11 more)
|
Nodes (13): TransactionReceiptData, TransactionReceiptModal(), TransactionReceiptModalProps, Button(), ThSort(), ThSortProps, GatewayHealth, Stats (+5 more)
|
||||||
|
|
||||||
### Community 39 - "CategoriesController"
|
### Community 39 - "CategoriesController"
|
||||||
Cohesion: 0.10
|
Cohesion: 0.09
|
||||||
Nodes (16): CategoriesController, ApiBearerAuth, ApiOperation, ApiQuery, ApiTags, Body, Controller, Delete (+8 more)
|
Nodes (17): CategoriesController, ApiBearerAuth, ApiOperation, ApiQuery, ApiTags, Body, Controller, Delete (+9 more)
|
||||||
|
|
||||||
### Community 40 - "MediaController"
|
### Community 40 - "MediaController"
|
||||||
Cohesion: 0.11
|
Cohesion: 0.11
|
||||||
Nodes (16): MediaController, ApiBearerAuth, ApiOperation, ApiTags, Body, Controller, Delete, Get (+8 more)
|
Nodes (14): MediaController, ApiBearerAuth, ApiOperation, ApiTags, Body, Controller, Delete, Get (+6 more)
|
||||||
|
|
||||||
### Community 41 - "What You Must Do When Invoked"
|
### Community 41 - "What You Must Do When Invoked"
|
||||||
Cohesion: 0.07
|
Cohesion: 0.07
|
||||||
@ -537,17 +537,17 @@ Nodes (14): TestimonialsController, ApiBearerAuth, ApiOperation, ApiTags, Body,
|
|||||||
Cohesion: 0.07
|
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)
|
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 46 - "HomeController"
|
### Community 46 - "20260526145407_init/migration.sql"
|
||||||
Cohesion: 0.16
|
Cohesion: 0.27
|
||||||
Nodes (10): HomeController, ApiOkResponse, ApiOperation, ApiTags, Controller, Get, HomeModule, Module (+2 more)
|
Nodes (14): "coupons", "health_logs", "order_items", "orders", "pet_medical_conditions", "pets", "product_ingredients", "product_symptoms" (+6 more)
|
||||||
|
|
||||||
### Community 47 - "IngredientsService"
|
### Community 47 - "IngredientsService"
|
||||||
Cohesion: 0.13
|
Cohesion: 0.13
|
||||||
Nodes (14): IngredientsController, ApiBearerAuth, ApiOperation, ApiTags, Body, Controller, Delete, Get (+6 more)
|
Nodes (14): IngredientsController, ApiBearerAuth, ApiOperation, ApiTags, Body, Controller, Delete, Get (+6 more)
|
||||||
|
|
||||||
### Community 48 - "UsersController"
|
### Community 48 - "UsersService"
|
||||||
Cohesion: 0.20
|
Cohesion: 0.06
|
||||||
Nodes (16): ApiBadRequestResponse, ApiBearerAuth, ApiCreatedResponse, ApiOkResponse, ApiOperation, ApiTags, Body, Controller (+8 more)
|
Nodes (41): DEFAULT_JWT_REFRESH_SECRET, DEFAULT_JWT_SECRET, getJwtSecret(), AuthModule, Module, JwtPayload, JwtStrategy, Injectable (+33 more)
|
||||||
|
|
||||||
### Community 49 - "devDependencies"
|
### Community 49 - "devDependencies"
|
||||||
Cohesion: 0.11
|
Cohesion: 0.11
|
||||||
@ -555,7 +555,7 @@ Nodes (19): autoprefixer, devDependencies, autoprefixer, eslint, @eslint/js, glo
|
|||||||
|
|
||||||
### Community 50 - "devDependencies"
|
### Community 50 - "devDependencies"
|
||||||
Cohesion: 0.13
|
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 51 - "BlogsController"
|
### Community 51 - "BlogsController"
|
||||||
Cohesion: 0.14
|
Cohesion: 0.14
|
||||||
@ -569,13 +569,13 @@ Nodes (14): PrescriptionsController, ApiBearerAuth, ApiOperation, ApiTags, Body,
|
|||||||
Cohesion: 0.13
|
Cohesion: 0.13
|
||||||
Nodes (14): SmartAdvisorController, ApiBearerAuth, ApiOperation, ApiTags, Body, Controller, Delete, Get (+6 more)
|
Nodes (14): SmartAdvisorController, ApiBearerAuth, ApiOperation, ApiTags, Body, Controller, Delete, Get (+6 more)
|
||||||
|
|
||||||
### Community 54 - "auth.module.ts"
|
### Community 54 - "Reports.tsx"
|
||||||
Cohesion: 0.17
|
Cohesion: 0.20
|
||||||
Nodes (10): DEFAULT_JWT_REFRESH_SECRET, DEFAULT_JWT_SECRET, getJwtSecret(), AuthModule, Module, JwtPayload, JwtStrategy, Injectable (+2 more)
|
Nodes (7): BestSellerItem, CategoryDistItem, COLORS, CustomTooltipProps, ReportData, TopCouponItem, Reports
|
||||||
|
|
||||||
### Community 55 - "UITexts.tsx"
|
### Community 55 - "UITexts.tsx"
|
||||||
Cohesion: 0.07
|
Cohesion: 0.07
|
||||||
Nodes (26): ICON_REGISTRY, IconPickerModal(), IconPickerModalProps, ActiveStates, PRESET_BG_COLORS, PRESET_COLORS, RichTextEditor(), RichTextEditorProps (+18 more)
|
Nodes (24): Badge(), BadgeProps, BadgeVariant, variantStyles, ICON_REGISTRY, IconPickerModal(), IconPickerModalProps, ImagePreviewModal() (+16 more)
|
||||||
|
|
||||||
### Community 56 - "Orders.tsx"
|
### Community 56 - "Orders.tsx"
|
||||||
Cohesion: 0.11
|
Cohesion: 0.11
|
||||||
@ -594,12 +594,12 @@ Cohesion: 0.06
|
|||||||
Nodes (30): compilerOptions, allowSyntheticDefaultImports, baseUrl, declaration, emitDecoratorMetadata, esModuleInterop, experimentalDecorators, forceConsistentCasingInFileNames (+22 more)
|
Nodes (30): compilerOptions, allowSyntheticDefaultImports, baseUrl, declaration, emitDecoratorMetadata, esModuleInterop, experimentalDecorators, forceConsistentCasingInFileNames (+22 more)
|
||||||
|
|
||||||
### Community 61 - "AdminTransactionFilterDto"
|
### Community 61 - "AdminTransactionFilterDto"
|
||||||
Cohesion: 0.22
|
Cohesion: 0.25
|
||||||
Nodes (7): AdminTransactionFilterDto, ApiPropertyOptional, IsIn, IsNumber, IsOptional, IsString, Type
|
Nodes (7): AdminTransactionFilterDto, ApiPropertyOptional, IsIn, IsNumber, IsOptional, IsString, Type
|
||||||
|
|
||||||
### Community 62 - "ProductDto"
|
### Community 62 - "RouteErrorBoundary"
|
||||||
Cohesion: 0.22
|
Cohesion: 0.22
|
||||||
Nodes (7): ProductDto, ApiPropertyOptional, IsArray, IsBoolean, IsNumber, IsOptional, IsString
|
Nodes (3): Props, RouteErrorBoundary, State
|
||||||
|
|
||||||
### Community 63 - "dependencies"
|
### Community 63 - "dependencies"
|
||||||
Cohesion: 0.09
|
Cohesion: 0.09
|
||||||
@ -609,21 +609,17 @@ Nodes (23): dependencies, bcryptjs, class-validator, compression, ioredis, @nest
|
|||||||
Cohesion: 0.10
|
Cohesion: 0.10
|
||||||
Nodes (20): compilerOptions, allowImportingTsExtensions, erasableSyntaxOnly, lib, module, moduleDetection, moduleResolution, noEmit (+12 more)
|
Nodes (20): compilerOptions, allowImportingTsExtensions, erasableSyntaxOnly, lib, module, moduleDetection, moduleResolution, noEmit (+12 more)
|
||||||
|
|
||||||
### Community 65 - "BlogsService"
|
### Community 66 - "AdminQueryDto"
|
||||||
Cohesion: 0.06
|
Cohesion: 0.18
|
||||||
Nodes (12): BlogsService, Injectable, RevalidationModule, Global, Module, RevalidationService, Injectable, ApiProperty (+4 more)
|
Nodes (7): ApiQuery, Get, Query, AdminQueryDto, ApiPropertyOptional, IsOptional, IsString
|
||||||
|
|
||||||
### Community 66 - "ApiOperation"
|
|
||||||
Cohesion: 0.12
|
|
||||||
Nodes (8): ApiOperation, ApiQuery, Get, Query, AdminQueryDto, ApiPropertyOptional, IsOptional, IsString
|
|
||||||
|
|
||||||
### Community 67 - "PetsController"
|
### Community 67 - "PetsController"
|
||||||
Cohesion: 0.15
|
Cohesion: 0.10
|
||||||
Nodes (11): PetsController, ApiBearerAuth, ApiOperation, ApiQuery, ApiTags, Controller, Delete, Get (+3 more)
|
Nodes (14): PetsController, ApiBearerAuth, ApiOperation, ApiQuery, ApiTags, Controller, Delete, Get (+6 more)
|
||||||
|
|
||||||
### Community 68 - "UserDashboard.tsx"
|
### Community 68 - "UserDashboard.tsx"
|
||||||
Cohesion: 0.14
|
Cohesion: 0.11
|
||||||
Nodes (23): AddressFormData, AddressModal(), AddressModalProps, normalizeDigits(), validateAddressForm(), BackButton(), BackButtonProps, CheckoutPage() (+15 more)
|
Nodes (28): VerifyContent(), AddressFormData, AddressModal(), AddressModalProps, normalizeDigits(), validateAddressForm(), B2BPortal(), BackButton() (+20 more)
|
||||||
|
|
||||||
### Community 69 - "Required Review Group Closures"
|
### Community 69 - "Required Review Group Closures"
|
||||||
Cohesion: 0.10
|
Cohesion: 0.10
|
||||||
@ -635,7 +631,7 @@ Nodes (23): compilerOptions, allowImportingTsExtensions, erasableSyntaxOnly, jsx
|
|||||||
|
|
||||||
### Community 71 - "getPageMetadata"
|
### Community 71 - "getPageMetadata"
|
||||||
Cohesion: 0.09
|
Cohesion: 0.09
|
||||||
Nodes (15): generateMetadata(), CatalogClient(), generateMetadata(), generateMetadata(), generateMetadata(), generateMetadata(), generateMetadata(), generateMetadata() (+7 more)
|
Nodes (15): generateMetadata(), generateMetadata(), generateMetadata(), generateMetadata(), generateMetadata(), generateMetadata(), generateMetadata(), generateMetadata() (+7 more)
|
||||||
|
|
||||||
### Community 72 - "Operational Rules & Boundaries"
|
### Community 72 - "Operational Rules & Boundaries"
|
||||||
Cohesion: 0.11
|
Cohesion: 0.11
|
||||||
@ -654,7 +650,7 @@ Cohesion: 0.05
|
|||||||
Nodes (47): CreateHealthLogDto, ApiProperty, ApiPropertyOptional, IsNotEmpty, IsOptional, IsString, CreatePetDto, ApiProperty (+39 more)
|
Nodes (47): CreateHealthLogDto, ApiProperty, ApiPropertyOptional, IsNotEmpty, IsOptional, IsString, CreatePetDto, ApiProperty (+39 more)
|
||||||
|
|
||||||
### Community 76 - "AdminService"
|
### Community 76 - "AdminService"
|
||||||
Cohesion: 0.20
|
Cohesion: 0.16
|
||||||
Nodes (4): Delete, Param, AdminService, Injectable
|
Nodes (4): Delete, Param, AdminService, Injectable
|
||||||
|
|
||||||
### Community 77 - "seo.module.ts"
|
### Community 77 - "seo.module.ts"
|
||||||
@ -690,8 +686,8 @@ Cohesion: 0.12
|
|||||||
Nodes (16): 1. Active Secret Scanning (All Modified Files), 2. Docker Container Verification (if Dockerfile exists), 3. CI/CD Basic Check (if `.github/workflows/` exists), 4. Failure Routing Protocol, 5. Forbidden Actions, ENFORCE MODE — Normal Operation, Expected JSON Output Schema, Operational Rules & Boundaries (+8 more)
|
Nodes (16): 1. Active Secret Scanning (All Modified Files), 2. Docker Container Verification (if Dockerfile exists), 3. CI/CD Basic Check (if `.github/workflows/` exists), 4. Failure Routing Protocol, 5. Forbidden Actions, ENFORCE MODE — Normal Operation, Expected JSON Output Schema, Operational Rules & Boundaries (+8 more)
|
||||||
|
|
||||||
### Community 85 - "useSettingsStore"
|
### Community 85 - "useSettingsStore"
|
||||||
Cohesion: 0.13
|
Cohesion: 0.14
|
||||||
Nodes (20): AuthModal, AuthModal(), AuthModalProps, extractOtpFromText(), B2BLandingClient(), BrandLogo(), BrandLogoProps, FAQItem (+12 more)
|
Nodes (16): B2BPortal, CartDrawer, ClientLayout(), B2BLandingClient(), BrandLogo(), BrandLogoProps, EnamadBadge(), Footer() (+8 more)
|
||||||
|
|
||||||
### Community 86 - "zibal.service.ts"
|
### Community 86 - "zibal.service.ts"
|
||||||
Cohesion: 0.16
|
Cohesion: 0.16
|
||||||
@ -709,21 +705,21 @@ Nodes (8): CreateEBankCheckoutDto, ApiProperty, ApiPropertyOptional, IsNotEmpty,
|
|||||||
Cohesion: 0.17
|
Cohesion: 0.17
|
||||||
Nodes (12): prisma, main(), prisma, determineSuitableFor(), findOrCreateCategory(), getProductImageUrl(), main(), parseSize() (+4 more)
|
Nodes (12): prisma, main(), prisma, determineSuitableFor(), findOrCreateCategory(), getProductImageUrl(), main(), parseSize() (+4 more)
|
||||||
|
|
||||||
### Community 90 - "api"
|
### Community 90 - "CreateReviewDto"
|
||||||
Cohesion: 0.10
|
Cohesion: 0.25
|
||||||
Nodes (13): LoginModal, ContactInfoItem, LoginModal(), LoginModalProps, api, ApiErr, AuthResponse, AuthService (+5 more)
|
Nodes (8): CreateReviewDto, ApiProperty, IsInt, IsNotEmpty, IsOptional, IsString, Min, Max
|
||||||
|
|
||||||
### Community 91 - "Reconciled Audit Roles & Assignments"
|
### Community 91 - "Reconciled Audit Roles & Assignments"
|
||||||
Cohesion: 0.12
|
Cohesion: 0.12
|
||||||
Nodes (15): 10. Documentation Engineer, 1. Lead Architect / Orchestrator, 2. React / Vite Storefront Auditor, 3. NestJS Backend Auditor, 4. Admin Features Auditor, 5. Database & Data Integrity Auditor, 6. Security Auditor, 7. TypeScript & Code Quality Auditor (+7 more)
|
Nodes (15): 10. Documentation Engineer, 1. Lead Architect / Orchestrator, 2. React / Vite Storefront Auditor, 3. NestJS Backend Auditor, 4. Admin Features Auditor, 5. Database & Data Integrity Auditor, 6. Security Auditor, 7. TypeScript & Code Quality Auditor (+7 more)
|
||||||
|
|
||||||
### Community 92 - "OrdersService"
|
### Community 92 - "OrdersService"
|
||||||
Cohesion: 0.06
|
Cohesion: 0.07
|
||||||
Nodes (35): CreateOrderDto, OrderItemDto, ApiProperty, ApiPropertyOptional, IsArray, IsNotEmpty, IsNumber, IsOptional (+27 more)
|
Nodes (35): CreateOrderDto, OrderItemDto, ApiProperty, ApiPropertyOptional, IsArray, IsNotEmpty, IsNumber, IsOptional (+27 more)
|
||||||
|
|
||||||
### Community 93 - "lib/services/api.ts"
|
### Community 93 - "lib/services/api.ts"
|
||||||
Cohesion: 0.09
|
Cohesion: 0.07
|
||||||
Nodes (21): B2BPortal, B2BPortal(), BlogPostClientProps, BlogPost, BlogPreviewSection(), OrderDetailsModal(), OrderDetailsModalProps, PLAYBACK_RATES (+13 more)
|
Nodes (25): HomeClient(), HomeClientProps, getHomeData(), Home(), BlogPost, BlogPreviewSection(), ContactInfoItem, FAQItem (+17 more)
|
||||||
|
|
||||||
### Community 94 - "Phase 3.1 — Human Review Preparation and Master Backlog Critique"
|
### Community 94 - "Phase 3.1 — Human Review Preparation and Master Backlog Critique"
|
||||||
Cohesion: 0.13
|
Cohesion: 0.13
|
||||||
@ -746,8 +742,8 @@ Cohesion: 0.13
|
|||||||
Nodes (15): scripts, build, build:nest, docs:generate, lint, seo:backfill, start, start:debug (+7 more)
|
Nodes (15): scripts, build, build:nest, docs:generate, lint, seo:backfill, start, start:debug (+7 more)
|
||||||
|
|
||||||
### Community 99 - "BlogsController"
|
### Community 99 - "BlogsController"
|
||||||
Cohesion: 0.18
|
Cohesion: 0.06
|
||||||
Nodes (12): BlogsController, ApiNotFoundResponse, ApiOkResponse, ApiOperation, ApiTags, Body, Controller, Get (+4 more)
|
Nodes (32): BlogsController, ApiNotFoundResponse, ApiOkResponse, ApiOperation, ApiTags, Body, Controller, Get (+24 more)
|
||||||
|
|
||||||
### Community 100 - "Deep Audit Summary Report"
|
### Community 100 - "Deep Audit Summary Report"
|
||||||
Cohesion: 0.14
|
Cohesion: 0.14
|
||||||
@ -766,20 +762,24 @@ Cohesion: 0.15
|
|||||||
Nodes (12): 10. `TASK-VERIFY-001`, 1. `TASK-SEC-001`, 2. `TASK-SEC-002`, 3. `TASK-SEC-003`, 4. `TASK-FIN-001`, 5. `TASK-BUILD-001`, 6. `TASK-AUTH-001`, 7. `TASK-FE-001` (+4 more)
|
Nodes (12): 10. `TASK-VERIFY-001`, 1. `TASK-SEC-001`, 2. `TASK-SEC-002`, 3. `TASK-SEC-003`, 4. `TASK-FIN-001`, 5. `TASK-BUILD-001`, 6. `TASK-AUTH-001`, 7. `TASK-FE-001` (+4 more)
|
||||||
|
|
||||||
### Community 104 - "Coupons.tsx"
|
### Community 104 - "Coupons.tsx"
|
||||||
Cohesion: 0.15
|
Cohesion: 0.13
|
||||||
Nodes (11): formatPriceWithCommas(), PriceInput(), PriceInputProps, toEnglishDigits(), Coupon, CouponFormData, CouponModalProps, CouponTarget (+3 more)
|
Nodes (12): formatPriceWithCommas(), PriceInput(), PriceInputProps, toEnglishDigits(), Coupon, CouponFormData, CouponModalProps, CouponTarget (+4 more)
|
||||||
|
|
||||||
### Community 105 - "Operational Rules & Boundaries"
|
### Community 105 - "Operational Rules & Boundaries"
|
||||||
Cohesion: 0.17
|
Cohesion: 0.17
|
||||||
Nodes (11): 1. Detect Test Runner from Tech Stack, 2. Execution Output Capture (Mandatory), 3. Acceptance Criteria Verification, 4. Failure Routing Protocol, 5. Success Routing Protocol, 6. Forbidden Actions, Expected JSON Output Schema, Operational Rules & Boundaries (+3 more)
|
Nodes (11): 1. Detect Test Runner from Tech Stack, 2. Execution Output Capture (Mandatory), 3. Acceptance Criteria Verification, 4. Failure Routing Protocol, 5. Success Routing Protocol, 6. Forbidden Actions, Expected JSON Output Schema, Operational Rules & Boundaries (+3 more)
|
||||||
|
|
||||||
|
### Community 106 - "MetricsController"
|
||||||
|
Cohesion: 0.29
|
||||||
|
Nodes (5): ApiExcludeController, MetricsController, Controller, Get, Res
|
||||||
|
|
||||||
### Community 107 - "PaginationDto"
|
### Community 107 - "PaginationDto"
|
||||||
Cohesion: 0.06
|
Cohesion: 0.06
|
||||||
Nodes (27): BlogsModule, Module, BlogFilterDto, BlogsService, Injectable, PaginationDto, SortOrder, ApiPropertyOptional (+19 more)
|
Nodes (23): BlogsModule, Module, BlogFilterDto, BlogsService, Injectable, PaginationDto, SortOrder, ApiPropertyOptional (+15 more)
|
||||||
|
|
||||||
### Community 108 - "PrismaService"
|
### Community 108 - "PrismaService"
|
||||||
Cohesion: 0.06
|
Cohesion: 0.07
|
||||||
Nodes (27): ApiExcludeController, CategoryQuery, MetricsController, Controller, Get, Res, MeliPayamakPattern, MeliPayamakResponse (+19 more)
|
Nodes (21): MeliPayamakPattern, MeliPayamakResponse, SendPatternSmsOptions, SmsConfig, SmsLogQuery, CreateContactSubmissionDto, UpdateContactInfoItemDto, MenuType (+13 more)
|
||||||
|
|
||||||
### Community 109 - "1. Summary of Integrity Repairs Performed"
|
### Community 109 - "1. Summary of Integrity Repairs Performed"
|
||||||
Cohesion: 0.17
|
Cohesion: 0.17
|
||||||
@ -805,9 +805,9 @@ Nodes (8): RegisterDto, ApiProperty, ApiPropertyOptional, IsEmail, IsNotEmpty, I
|
|||||||
Cohesion: 0.29
|
Cohesion: 0.29
|
||||||
Nodes (5): AppController, Controller, Get, AppService, Injectable
|
Nodes (5): AppController, Controller, Get, AppService, Injectable
|
||||||
|
|
||||||
### Community 115 - "VetGallery.tsx"
|
### Community 115 - "VerifyOtpDto"
|
||||||
Cohesion: 0.20
|
Cohesion: 0.29
|
||||||
Nodes (10): VideoModalPlayer, DisplayVideoItem, FALLBACK_VIDEOS, TestimonialItem, VetGallery(), PLAYBACK_RATES, VideoModalPlayer(), VideoModalPlayerProps (+2 more)
|
Nodes (6): ApiProperty, IsNotEmpty, IsString, Matches, VerifyOtpDto, Length
|
||||||
|
|
||||||
### Community 116 - "Vazirmatn Changelog"
|
### Community 116 - "Vazirmatn Changelog"
|
||||||
Cohesion: 0.18
|
Cohesion: 0.18
|
||||||
@ -833,13 +833,13 @@ Nodes (9): compilerOptions, esModuleInterop, module, moduleResolution, skipLibCh
|
|||||||
Cohesion: 0.20
|
Cohesion: 0.20
|
||||||
Nodes (9): Compile and run the project, Deployment, Description, License, Project setup, Resources, Run tests, Stay in touch (+1 more)
|
Nodes (9): Compile and run the project, Deployment, Description, License, Project setup, Resources, Run tests, Stay in touch (+1 more)
|
||||||
|
|
||||||
### Community 122 - "AdminController"
|
### Community 122 - "ApiOperation"
|
||||||
Cohesion: 0.14
|
Cohesion: 0.15
|
||||||
Nodes (6): AdminController, ApiBearerAuth, ApiTags, Controller, Put, UseGuards
|
Nodes (3): ApiOperation, Body, Put
|
||||||
|
|
||||||
### Community 123 - "AuthService"
|
### Community 123 - "auth.service.ts"
|
||||||
Cohesion: 0.18
|
Cohesion: 0.11
|
||||||
Nodes (4): AuthService, Injectable, normalizeMobile(), UserAddressInput
|
Nodes (8): AdminLoginInput, AuthService, LoginInput, RegisterInput, Injectable, normalizeMobile(), RedisService, Injectable
|
||||||
|
|
||||||
### Community 124 - "Repository Map"
|
### Community 124 - "Repository Map"
|
||||||
Cohesion: 0.20
|
Cohesion: 0.20
|
||||||
@ -857,9 +857,13 @@ Nodes (9): name, private, scripts, build, dev, lint, preview, type (+1 more)
|
|||||||
Cohesion: 0.20
|
Cohesion: 0.20
|
||||||
Nodes (9): Arch Linux, Contributors, Install, Known problems for variable version, License, Sahel-Font, To Do (variable), طریقه استفاده از نسخه متغیر variable (+1 more)
|
Nodes (9): Arch Linux, Contributors, Install, Known problems for variable version, License, Sahel-Font, To Do (variable), طریقه استفاده از نسخه متغیر variable (+1 more)
|
||||||
|
|
||||||
### Community 129 - "auth.service.ts"
|
### Community 128 - "AdminController"
|
||||||
Cohesion: 0.08
|
Cohesion: 0.16
|
||||||
Nodes (25): AdminLoginInput, LoginInput, RegisterInput, AdminLoginDto, ApiProperty, IsEmail, IsNotEmpty, IsString (+17 more)
|
Nodes (6): AdminController, ApiBearerAuth, ApiTags, Controller, Post, UseGuards
|
||||||
|
|
||||||
|
### Community 129 - "auth.controller.ts"
|
||||||
|
Cohesion: 0.16
|
||||||
|
Nodes (11): AdminLoginDto, ApiProperty, IsEmail, IsNotEmpty, IsString, MinLength, LoginDto, ApiProperty (+3 more)
|
||||||
|
|
||||||
### Community 130 - "Sahel-Font"
|
### Community 130 - "Sahel-Font"
|
||||||
Cohesion: 0.20
|
Cohesion: 0.20
|
||||||
@ -917,21 +921,17 @@ Nodes (7): backend, distMainPath, fs, http, path, { spawn, execSync }, waitForBa
|
|||||||
Cohesion: 0.25
|
Cohesion: 0.25
|
||||||
Nodes (6): app_module_1, core_1, fs, path, swagger_1, yaml
|
Nodes (6): app_module_1, core_1, fs, path, swagger_1, yaml
|
||||||
|
|
||||||
### Community 144 - "WholesaleApplyDto"
|
|
||||||
Cohesion: 0.29
|
|
||||||
Nodes (6): ApiProperty, ApiPropertyOptional, IsNotEmpty, IsOptional, IsString, WholesaleApplyDto
|
|
||||||
|
|
||||||
### Community 145 - "admin.service.ts"
|
### Community 145 - "admin.service.ts"
|
||||||
Cohesion: 0.17
|
Cohesion: 0.13
|
||||||
Nodes (14): CouponInput, CouponTargetInput, PaginationQuery, CreateUserDto, ApiProperty, ApiPropertyOptional, IsEmail, IsNotEmpty (+6 more)
|
Nodes (21): CouponInput, CouponTargetInput, PaginationQuery, ProductDto, ApiPropertyOptional, IsArray, IsBoolean, IsNumber (+13 more)
|
||||||
|
|
||||||
### Community 146 - "System Discovery"
|
### Community 146 - "System Discovery"
|
||||||
Cohesion: 0.25
|
Cohesion: 0.25
|
||||||
Nodes (7): Active Core Applications, Current Architecture, Evidence-Based Status Matrix, Excluded / Non-Auditable Artifacts, Major Business Domains Discovered, System Discovery, Technical Architecture Summary
|
Nodes (7): Active Core Applications, Current Architecture, Evidence-Based Status Matrix, Excluded / Non-Auditable Artifacts, Major Business Domains Discovered, System Discovery, Technical Architecture Summary
|
||||||
|
|
||||||
### Community 147 - "HomeClient.tsx"
|
### Community 147 - "ArchivePage.tsx"
|
||||||
Cohesion: 0.11
|
Cohesion: 0.14
|
||||||
Nodes (20): HomeClient(), HomeClientProps, ArchivePage(), ArchiveProductCard(), CATEGORY_MAP, ICON_MAP, BannerPlacement(), BannerPlacementProps (+12 more)
|
Nodes (14): ArchivePage(), ArchiveProductCard(), CATEGORY_MAP, ICON_MAP, BannerPlacement(), BannerPlacementProps, B2BInquiry, Banner (+6 more)
|
||||||
|
|
||||||
### Community 149 - "SmsSettingsPage.tsx"
|
### Community 149 - "SmsSettingsPage.tsx"
|
||||||
Cohesion: 0.29
|
Cohesion: 0.29
|
||||||
@ -942,8 +942,8 @@ 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)
|
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 152 - "useCartStore"
|
### Community 152 - "useCartStore"
|
||||||
Cohesion: 0.09
|
Cohesion: 0.18
|
||||||
Nodes (16): CartDrawer, VerifyContent(), CartDrawer(), DeleteConfirmModal(), DeleteConfirmModalProps, OrderSuccess(), mockProduct, ApiErr (+8 more)
|
Nodes (10): CartDrawer(), DeleteConfirmModal(), DeleteConfirmModalProps, OrderSuccess(), OrderTracking(), mockProduct, CartItem, CartStore (+2 more)
|
||||||
|
|
||||||
### Community 153 - "exclude"
|
### Community 153 - "exclude"
|
||||||
Cohesion: 0.22
|
Cohesion: 0.22
|
||||||
@ -1025,6 +1025,10 @@ Nodes (4): evidenceList, ledger, mandatoryMap, mandatoryScope
|
|||||||
Cohesion: 0.40
|
Cohesion: 0.40
|
||||||
Nodes (4): activeFiles, errors, validationOutput, warnings
|
Nodes (4): activeFiles, errors, validationOutput, warnings
|
||||||
|
|
||||||
|
### Community 177 - "SendOtpDto"
|
||||||
|
Cohesion: 0.33
|
||||||
|
Nodes (5): SendOtpDto, ApiProperty, IsNotEmpty, IsString, Matches
|
||||||
|
|
||||||
### Community 178 - "نقشه جامع پوشش تستهای سرتاسری (E2E Test Coverage Map) — پروژه Canina"
|
### Community 178 - "نقشه جامع پوشش تستهای سرتاسری (E2E Test Coverage Map) — پروژه Canina"
|
||||||
Cohesion: 0.33
|
Cohesion: 0.33
|
||||||
Nodes (5): نقشه جامع پوشش تستهای سرتاسری (E2E Test Coverage Map) — پروژه Canina, ۱. معماری و نقشهای کاربری (User Roles), ۲. ماتریس جریانها و قابلیتهای کاربرمحور (Feature & Flow Matrix), ۳. وضعیت پوشش نهایی سوئیت ۱۱گانه (Final 11 Test Suites Status), ۴. راهنمای نگهداری و افزودن فیچرهای جدید بدون شکستن تستها (Developer Maintenance Guide)
|
Nodes (5): نقشه جامع پوشش تستهای سرتاسری (E2E Test Coverage Map) — پروژه Canina, ۱. معماری و نقشهای کاربری (User Roles), ۲. ماتریس جریانها و قابلیتهای کاربرمحور (Feature & Flow Matrix), ۳. وضعیت پوشش نهایی سوئیت ۱۱گانه (Final 11 Test Suites Status), ۴. راهنمای نگهداری و افزودن فیچرهای جدید بدون شکستن تستها (Developer Maintenance Guide)
|
||||||
@ -1045,6 +1049,10 @@ Nodes (3): Architectural Overview, Critical Review Findings & Required Enhanceme
|
|||||||
Cohesion: 0.50
|
Cohesion: 0.50
|
||||||
Nodes (3): Overview & Content Foundation, SEO & Content Requirements, 🚀 SEO & Content Strategy Review (12_seo_content)
|
Nodes (3): Overview & Content Foundation, SEO & Content Requirements, 🚀 SEO & Content Strategy Review (12_seo_content)
|
||||||
|
|
||||||
|
### Community 184 - "UpdateReviewDto"
|
||||||
|
Cohesion: 0.33
|
||||||
|
Nodes (5): ApiProperty, IsIn, IsOptional, IsString, UpdateReviewDto
|
||||||
|
|
||||||
### Community 191 - "graphify reference: add a URL and watch a folder"
|
### Community 191 - "graphify reference: add a URL and watch a folder"
|
||||||
Cohesion: 0.50
|
Cohesion: 0.50
|
||||||
Nodes (3): For /graphify add, For --watch, graphify reference: add a URL and watch a folder
|
Nodes (3): For /graphify add, For --watch, graphify reference: add a URL and watch a folder
|
||||||
@ -1069,10 +1077,6 @@ Nodes (3): Expanding the ESLint configuration, React Compiler, React + TypeScrip
|
|||||||
Cohesion: 0.50
|
Cohesion: 0.50
|
||||||
Nodes (3): Select, SelectOption, SelectProps
|
Nodes (3): Select, SelectOption, SelectProps
|
||||||
|
|
||||||
### Community 197 - "app/page.tsx"
|
|
||||||
Cohesion: 0.67
|
|
||||||
Nodes (3): generateMetadata(), getHomeData(), Home()
|
|
||||||
|
|
||||||
### Community 200 - "application/README.md"
|
### Community 200 - "application/README.md"
|
||||||
Cohesion: 0.50
|
Cohesion: 0.50
|
||||||
Nodes (3): Deploy on Vercel, Getting Started, Learn More
|
Nodes (3): Deploy on Vercel, Getting Started, Learn More
|
||||||
@ -1089,41 +1093,37 @@ Nodes (3): ADR-AUTH-001: Admin Panel Authentication Architecture & Token Managem
|
|||||||
Cohesion: 0.67
|
Cohesion: 0.67
|
||||||
Nodes (3): Shabnam Font README, Shabnam Font Sample, Vazir Font
|
Nodes (3): Shabnam Font README, Shabnam Font Sample, Vazir Font
|
||||||
|
|
||||||
### Community 231 - "RedisService"
|
### Community 231 - "RevalidationService"
|
||||||
Cohesion: 0.11
|
Cohesion: 0.16
|
||||||
Nodes (7): AppModule, Module, RedisModule, Global, Module, RedisService, Injectable
|
Nodes (5): RevalidationModule, Global, Module, RevalidationService, Injectable
|
||||||
|
|
||||||
### Community 298 - ".initiateOrderPayment"
|
### Community 298 - ".initiateOrderPayment"
|
||||||
Cohesion: 0.20
|
Cohesion: 0.20
|
||||||
Nodes (10): ApiPropertyOptional, IsOptional, IsString, ZibalCallbackQueryDto, ApiBadRequestResponse, ApiOkResponse, Req, Res (+2 more)
|
Nodes (10): ApiPropertyOptional, IsOptional, IsString, ZibalCallbackQueryDto, ApiBadRequestResponse, ApiOkResponse, Req, Res (+2 more)
|
||||||
|
|
||||||
### Community 313 - "Modal.tsx"
|
|
||||||
Cohesion: 0.10
|
|
||||||
Nodes (14): maxWidthClasses, Modal(), ModalProps, ContactInfoItem, ContactSubmission, MENU_TABS, MenuItem, MenuType (+6 more)
|
|
||||||
|
|
||||||
### Community 317 - "revalidate/route.ts"
|
### Community 317 - "revalidate/route.ts"
|
||||||
Cohesion: 0.83
|
Cohesion: 0.83
|
||||||
Nodes (3): GET(), handleRevalidate(), POST()
|
Nodes (3): GET(), handleRevalidate(), POST()
|
||||||
|
|
||||||
## Knowledge Gaps
|
## Knowledge Gaps
|
||||||
- **1338 isolated node(s):** `$schema`, `collection`, `sourceRoot`, `deleteOutDir`, `name` (+1333 more)
|
- **1340 isolated node(s):** `$schema`, `collection`, `sourceRoot`, `deleteOutDir`, `name` (+1335 more)
|
||||||
These have ≤1 connection - possible missing edges or undocumented components.
|
These have ≤1 connection - possible missing edges or undocumented components.
|
||||||
- **118 thin communities (<3 nodes) omitted from report** — run `graphify query` to explore isolated nodes.
|
- **118 thin communities (<3 nodes) omitted from report** — run `graphify query` to explore isolated nodes.
|
||||||
|
|
||||||
## Suggested Questions
|
## Suggested Questions
|
||||||
_Questions this graph is uniquely positioned to answer:_
|
_Questions this graph is uniquely positioned to answer:_
|
||||||
|
|
||||||
- **Why does `ApiResponse` connect `src/services/api.ts` to `BlogsController`, `AuthController`, `PetsController`, `PaginationDto`, `HomeController`, `UsersController`, `ProductsService`, `OrdersService`?**
|
- **Why does `ApiResponse` connect `BlogsController` to `AuthController`, `PetsController`, `src/services/api.ts`, `UsersService`, `ProductsController`, `OrdersService`?**
|
||||||
_High betweenness centrality (0.085) - this node is a cross-community bridge._
|
_High betweenness centrality (0.080) - this node is a cross-community bridge._
|
||||||
- **Why does `Roles()` connect `Roles` to `WholesaleService`, `B2BService`, `SmsService`, `FaqService`, `CmsController`, `tickets.controller.ts`, `SslController`, `BannersService`, `CreateReviewDto`, `TestimonialsService`, `IngredientsService`, `JwtAuthGuard`, `ProductsService`, `PrescriptionsService`, `SmartAdvisorService`, `MenuService`, `ContactService`?**
|
- **Why does `Roles()` connect `Roles` to `SmsService`, `CmsController`, `tickets.controller.ts`, `ProductsService`, `ReviewsService`, `reviews.controller.ts`, `JwtAuthGuard`, `ProductsController`, `MenuService`, `WholesaleApplyDto`, `B2BService`, `FaqService`, `SslController`, `BannersService`, `TestimonialsService`, `IngredientsService`, `PrescriptionsService`, `SmartAdvisorService`, `ContactService`?**
|
||||||
_High betweenness centrality (0.066) - this node is a cross-community bridge._
|
_High betweenness centrality (0.063) - this node is a cross-community bridge._
|
||||||
- **Why does `JwtAuthGuard` connect `JwtAuthGuard` to `auth.service.ts`, `CmsController`, `tickets.controller.ts`, `users.controller.ts`, `PaginationDto`, `PetsController`, `DoctorQueryDto`, `admin.service.ts`, `ProductsService`, `CreateVideoDto`, `admin.module.ts`, `OrdersService`?**
|
- **Why does `JwtAuthGuard` connect `JwtAuthGuard` to `auth.controller.ts`, `PetsController`, `CmsController`, `tickets.controller.ts`, `CategoriesController`, `ProductsService`, `PaginationDto`, `PetsController`, `PrismaService`, `DoctorQueryDto`, `admin.service.ts`, `reviews.controller.ts`, `admin.module.ts`, `OrdersService`?**
|
||||||
_High betweenness centrality (0.033) - this node is a cross-community bridge._
|
_High betweenness centrality (0.036) - this node is a cross-community bridge._
|
||||||
- **What connects `$schema`, `collection`, `sourceRoot` to the rest of the system?**
|
- **What connects `$schema`, `collection`, `sourceRoot` to the rest of the system?**
|
||||||
_1338 weakly-connected nodes found - possible documentation gaps or missing edges._
|
_1340 weakly-connected nodes found - possible documentation gaps or missing edges._
|
||||||
- **Should `app.module.ts` be split into smaller, more focused modules?**
|
- **Should `app.module.ts` be split into smaller, more focused modules?**
|
||||||
_Cohesion score 0.05478750640040963 - nodes in this community are weakly interconnected._
|
_Cohesion score 0.05974025974025974 - nodes in this community are weakly interconnected._
|
||||||
- **Should `SmsService` be split into smaller, more focused modules?**
|
- **Should `SmsService` be split into smaller, more focused modules?**
|
||||||
_Cohesion score 0.055040197897340756 - nodes in this community are weakly interconnected._
|
_Cohesion score 0.052028732284993204 - nodes in this community are weakly interconnected._
|
||||||
- **Should `ProductService` be split into smaller, more focused modules?**
|
- **Should `ProductService` be split into smaller, more focused modules?**
|
||||||
_Cohesion score 0.06393442622950819 - nodes in this community are weakly interconnected._
|
_Cohesion score 0.06240084611316764 - 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
@ -1,16 +1,16 @@
|
|||||||
# Graph Report - canina (2026-08-29)
|
# Graph Report - canina (2026-08-29)
|
||||||
|
|
||||||
## Corpus Check
|
## Corpus Check
|
||||||
- 590 files · ~1,335,009 words
|
- 590 files · ~1,335,143 words
|
||||||
- Verdict: corpus is large enough that graph structure adds value.
|
- Verdict: corpus is large enough that graph structure adds value.
|
||||||
|
|
||||||
## Summary
|
## Summary
|
||||||
- 4136 nodes · 7451 edges · 327 communities (209 shown, 118 thin omitted)
|
- 4136 nodes · 7451 edges · 327 communities (208 shown, 119 thin omitted)
|
||||||
- Extraction: 96% EXTRACTED · 4% INFERRED · 0% AMBIGUOUS · INFERRED: 281 edges (avg confidence: 0.79)
|
- Extraction: 96% EXTRACTED · 4% INFERRED · 0% AMBIGUOUS · INFERRED: 281 edges (avg confidence: 0.79)
|
||||||
- Token cost: 0 input · 0 output
|
- Token cost: 0 input · 0 output
|
||||||
|
|
||||||
## Graph Freshness
|
## Graph Freshness
|
||||||
- Built from commit: `1651a593`
|
- Built from commit: `bfb7f420`
|
||||||
- Run `git rev-parse HEAD` and compare to check if the graph is stale.
|
- Run `git rev-parse HEAD` and compare to check if the graph is stale.
|
||||||
- Run `graphify update .` after code changes (no API cost).
|
- Run `graphify update .` after code changes (no API cost).
|
||||||
|
|
||||||
@ -163,7 +163,7 @@
|
|||||||
- admin.service.ts
|
- admin.service.ts
|
||||||
- System Discovery
|
- System Discovery
|
||||||
- ArchivePage.tsx
|
- ArchivePage.tsx
|
||||||
- bcrypt
|
- CreateUserDto
|
||||||
- SmsSettingsPage.tsx
|
- SmsSettingsPage.tsx
|
||||||
- Product Requirement Document (PRD)
|
- Product Requirement Document (PRD)
|
||||||
- class-transformer
|
- class-transformer
|
||||||
@ -250,7 +250,7 @@
|
|||||||
- tailwindcss
|
- tailwindcss
|
||||||
- @nestjs/schematics
|
- @nestjs/schematics
|
||||||
- @nestjs/testing
|
- @nestjs/testing
|
||||||
- prisma
|
- @nestjs/swagger
|
||||||
- source-map-support
|
- source-map-support
|
||||||
- ts-jest
|
- ts-jest
|
||||||
- ts-loader
|
- ts-loader
|
||||||
@ -318,6 +318,7 @@
|
|||||||
- MaskableField.tsx
|
- MaskableField.tsx
|
||||||
- @eslint/js
|
- @eslint/js
|
||||||
- @testing-library/react
|
- @testing-library/react
|
||||||
|
- eslint-config-prettier
|
||||||
- eslint
|
- eslint
|
||||||
- @types/react-dom
|
- @types/react-dom
|
||||||
- eslint-plugin-react-refresh
|
- eslint-plugin-react-refresh
|
||||||
@ -351,15 +352,15 @@
|
|||||||
- 3-file cycle: `frontend/application/lib/services/api.ts -> frontend/application/lib/store/userStore.ts -> frontend/application/lib/store/cartStore.ts -> frontend/application/lib/services/api.ts`
|
- 3-file cycle: `frontend/application/lib/services/api.ts -> frontend/application/lib/store/userStore.ts -> frontend/application/lib/store/cartStore.ts -> frontend/application/lib/services/api.ts`
|
||||||
- 4-file cycle: `frontend/application/lib/services/api.ts -> frontend/application/lib/store/userStore.ts -> frontend/application/lib/store/cartStore.ts -> frontend/application/lib/services/orderService.ts -> frontend/application/lib/services/api.ts`
|
- 4-file cycle: `frontend/application/lib/services/api.ts -> frontend/application/lib/store/userStore.ts -> frontend/application/lib/store/cartStore.ts -> frontend/application/lib/services/orderService.ts -> frontend/application/lib/services/api.ts`
|
||||||
|
|
||||||
## Communities (327 total, 118 thin omitted)
|
## Communities (327 total, 119 thin omitted)
|
||||||
|
|
||||||
### Community 0 - "Roles"
|
### Community 0 - "Roles"
|
||||||
Cohesion: 0.24
|
Cohesion: 0.24
|
||||||
Nodes (13): Roles(), PaymentController, ApiBearerAuth, ApiOperation, ApiTags, Body, Controller, Get (+5 more)
|
Nodes (13): Roles(), PaymentController, ApiBearerAuth, ApiOperation, ApiTags, Body, Controller, Get (+5 more)
|
||||||
|
|
||||||
### Community 1 - "app.module.ts"
|
### Community 1 - "app.module.ts"
|
||||||
Cohesion: 0.06
|
Cohesion: 0.05
|
||||||
Nodes (39): B2BModule, Module, BannersModule, Module, CmsModule, Module, SmsModule, Global (+31 more)
|
Nodes (42): B2BModule, Module, BannersModule, Module, CmsModule, Module, SmsModule, Global (+34 more)
|
||||||
|
|
||||||
### Community 2 - "SmsService"
|
### Community 2 - "SmsService"
|
||||||
Cohesion: 0.05
|
Cohesion: 0.05
|
||||||
@ -391,7 +392,7 @@ Nodes (10): GetProductsDto, ApiPropertyOptional, IsEnum, IsOptional, IsString, Q
|
|||||||
|
|
||||||
### Community 9 - "devDependencies"
|
### Community 9 - "devDependencies"
|
||||||
Cohesion: 0.22
|
Cohesion: 0.22
|
||||||
Nodes (9): devDependencies, eslint-config-prettier, @types/bcryptjs, @types/node, typescript, @types/node, typescript, eslint-config-prettier (+1 more)
|
Nodes (9): devDependencies, prisma, @types/bcryptjs, @types/node, typescript, @types/node, typescript, prisma (+1 more)
|
||||||
|
|
||||||
### Community 10 - "ReviewsService"
|
### Community 10 - "ReviewsService"
|
||||||
Cohesion: 0.12
|
Cohesion: 0.12
|
||||||
@ -438,8 +439,8 @@ Cohesion: 0.09
|
|||||||
Nodes (24): CreateVideoDto, ApiProperty, ApiPropertyOptional, IsBoolean, IsNotEmpty, IsOptional, IsString, UpdateVideoDto (+16 more)
|
Nodes (24): CreateVideoDto, ApiProperty, ApiPropertyOptional, IsBoolean, IsNotEmpty, IsOptional, IsString, UpdateVideoDto (+16 more)
|
||||||
|
|
||||||
### Community 21 - "admin.module.ts"
|
### Community 21 - "admin.module.ts"
|
||||||
Cohesion: 0.06
|
Cohesion: 0.07
|
||||||
Nodes (22): AdminModule, Module, MediaService, Injectable, ReportsController, ApiBearerAuth, ApiOperation, ApiQuery (+14 more)
|
Nodes (19): AdminModule, Module, MediaService, Injectable, ReportsController, ApiBearerAuth, ApiOperation, ApiQuery (+11 more)
|
||||||
|
|
||||||
### Community 22 - "FeaturedProducts.tsx"
|
### Community 22 - "FeaturedProducts.tsx"
|
||||||
Cohesion: 0.14
|
Cohesion: 0.14
|
||||||
@ -603,15 +604,15 @@ Nodes (3): Props, RouteErrorBoundary, State
|
|||||||
|
|
||||||
### Community 63 - "dependencies"
|
### Community 63 - "dependencies"
|
||||||
Cohesion: 0.09
|
Cohesion: 0.09
|
||||||
Nodes (23): dependencies, bcryptjs, class-validator, compression, ioredis, @nestjs/common, @nestjs/passport, @nestjs/platform-express (+15 more)
|
Nodes (23): dependencies, bcrypt, bcryptjs, class-validator, compression, ioredis, @nestjs/common, @nestjs/passport (+15 more)
|
||||||
|
|
||||||
### Community 64 - "compilerOptions"
|
### Community 64 - "compilerOptions"
|
||||||
Cohesion: 0.10
|
Cohesion: 0.10
|
||||||
Nodes (20): compilerOptions, allowImportingTsExtensions, erasableSyntaxOnly, lib, module, moduleDetection, moduleResolution, noEmit (+12 more)
|
Nodes (20): compilerOptions, allowImportingTsExtensions, erasableSyntaxOnly, lib, module, moduleDetection, moduleResolution, noEmit (+12 more)
|
||||||
|
|
||||||
### Community 66 - "AdminQueryDto"
|
### Community 66 - "AdminQueryDto"
|
||||||
Cohesion: 0.18
|
Cohesion: 0.21
|
||||||
Nodes (7): ApiQuery, Get, Query, AdminQueryDto, ApiPropertyOptional, IsOptional, IsString
|
Nodes (6): ApiQuery, Query, AdminQueryDto, ApiPropertyOptional, IsOptional, IsString
|
||||||
|
|
||||||
### Community 67 - "PetsController"
|
### Community 67 - "PetsController"
|
||||||
Cohesion: 0.10
|
Cohesion: 0.10
|
||||||
@ -650,8 +651,8 @@ Cohesion: 0.05
|
|||||||
Nodes (47): CreateHealthLogDto, ApiProperty, ApiPropertyOptional, IsNotEmpty, IsOptional, IsString, CreatePetDto, ApiProperty (+39 more)
|
Nodes (47): CreateHealthLogDto, ApiProperty, ApiPropertyOptional, IsNotEmpty, IsOptional, IsString, CreatePetDto, ApiProperty (+39 more)
|
||||||
|
|
||||||
### Community 76 - "AdminService"
|
### Community 76 - "AdminService"
|
||||||
Cohesion: 0.16
|
Cohesion: 0.13
|
||||||
Nodes (4): Delete, Param, AdminService, Injectable
|
Nodes (5): Delete, Param, Put, AdminService, Injectable
|
||||||
|
|
||||||
### Community 77 - "seo.module.ts"
|
### Community 77 - "seo.module.ts"
|
||||||
Cohesion: 0.16
|
Cohesion: 0.16
|
||||||
@ -833,10 +834,6 @@ Nodes (9): compilerOptions, esModuleInterop, module, moduleResolution, skipLibCh
|
|||||||
Cohesion: 0.20
|
Cohesion: 0.20
|
||||||
Nodes (9): Compile and run the project, Deployment, Description, License, Project setup, Resources, Run tests, Stay in touch (+1 more)
|
Nodes (9): Compile and run the project, Deployment, Description, License, Project setup, Resources, Run tests, Stay in touch (+1 more)
|
||||||
|
|
||||||
### Community 122 - "ApiOperation"
|
|
||||||
Cohesion: 0.15
|
|
||||||
Nodes (3): ApiOperation, Body, Put
|
|
||||||
|
|
||||||
### Community 123 - "auth.service.ts"
|
### Community 123 - "auth.service.ts"
|
||||||
Cohesion: 0.11
|
Cohesion: 0.11
|
||||||
Nodes (8): AdminLoginInput, AuthService, LoginInput, RegisterInput, Injectable, normalizeMobile(), RedisService, Injectable
|
Nodes (8): AdminLoginInput, AuthService, LoginInput, RegisterInput, Injectable, normalizeMobile(), RedisService, Injectable
|
||||||
@ -859,7 +856,7 @@ Nodes (9): Arch Linux, Contributors, Install, Known problems for variable versio
|
|||||||
|
|
||||||
### Community 128 - "AdminController"
|
### Community 128 - "AdminController"
|
||||||
Cohesion: 0.16
|
Cohesion: 0.16
|
||||||
Nodes (6): AdminController, ApiBearerAuth, ApiTags, Controller, Post, UseGuards
|
Nodes (7): AdminController, ApiBearerAuth, ApiTags, Body, Controller, Post, UseGuards
|
||||||
|
|
||||||
### Community 129 - "auth.controller.ts"
|
### Community 129 - "auth.controller.ts"
|
||||||
Cohesion: 0.16
|
Cohesion: 0.16
|
||||||
@ -922,8 +919,8 @@ Cohesion: 0.25
|
|||||||
Nodes (6): app_module_1, core_1, fs, path, swagger_1, yaml
|
Nodes (6): app_module_1, core_1, fs, path, swagger_1, yaml
|
||||||
|
|
||||||
### Community 145 - "admin.service.ts"
|
### Community 145 - "admin.service.ts"
|
||||||
Cohesion: 0.13
|
Cohesion: 0.16
|
||||||
Nodes (21): CouponInput, CouponTargetInput, PaginationQuery, ProductDto, ApiPropertyOptional, IsArray, IsBoolean, IsNumber (+13 more)
|
Nodes (11): CouponInput, CouponTargetInput, PaginationQuery, ProductDto, ApiPropertyOptional, IsArray, IsBoolean, IsNumber (+3 more)
|
||||||
|
|
||||||
### Community 146 - "System Discovery"
|
### Community 146 - "System Discovery"
|
||||||
Cohesion: 0.25
|
Cohesion: 0.25
|
||||||
@ -933,6 +930,10 @@ Nodes (7): Active Core Applications, Current Architecture, Evidence-Based Status
|
|||||||
Cohesion: 0.14
|
Cohesion: 0.14
|
||||||
Nodes (14): ArchivePage(), ArchiveProductCard(), CATEGORY_MAP, ICON_MAP, BannerPlacement(), BannerPlacementProps, B2BInquiry, Banner (+6 more)
|
Nodes (14): ArchivePage(), ArchiveProductCard(), CATEGORY_MAP, ICON_MAP, BannerPlacement(), BannerPlacementProps, B2BInquiry, Banner (+6 more)
|
||||||
|
|
||||||
|
### Community 148 - "CreateUserDto"
|
||||||
|
Cohesion: 0.24
|
||||||
|
Nodes (10): CreateUserDto, ApiProperty, ApiPropertyOptional, IsEmail, IsNotEmpty, IsNumber, IsOptional, IsString (+2 more)
|
||||||
|
|
||||||
### Community 149 - "SmsSettingsPage.tsx"
|
### Community 149 - "SmsSettingsPage.tsx"
|
||||||
Cohesion: 0.29
|
Cohesion: 0.29
|
||||||
Nodes (7): PatternItem, SmsConfigState, SmsLogItem, SmsLogStats, SmsSettingsPage(), toPersianDigits(), SmsSettingsPage
|
Nodes (7): PatternItem, SmsConfigState, SmsLogItem, SmsLogStats, SmsSettingsPage(), toPersianDigits(), SmsSettingsPage
|
||||||
@ -1108,7 +1109,7 @@ Nodes (3): GET(), handleRevalidate(), POST()
|
|||||||
## Knowledge Gaps
|
## Knowledge Gaps
|
||||||
- **1340 isolated node(s):** `$schema`, `collection`, `sourceRoot`, `deleteOutDir`, `name` (+1335 more)
|
- **1340 isolated node(s):** `$schema`, `collection`, `sourceRoot`, `deleteOutDir`, `name` (+1335 more)
|
||||||
These have ≤1 connection - possible missing edges or undocumented components.
|
These have ≤1 connection - possible missing edges or undocumented components.
|
||||||
- **118 thin communities (<3 nodes) omitted from report** — run `graphify query` to explore isolated nodes.
|
- **119 thin communities (<3 nodes) omitted from report** — run `graphify query` to explore isolated nodes.
|
||||||
|
|
||||||
## Suggested Questions
|
## Suggested Questions
|
||||||
_Questions this graph is uniquely positioned to answer:_
|
_Questions this graph is uniquely positioned to answer:_
|
||||||
@ -1122,7 +1123,7 @@ _Questions this graph is uniquely positioned to answer:_
|
|||||||
- **What connects `$schema`, `collection`, `sourceRoot` to the rest of the system?**
|
- **What connects `$schema`, `collection`, `sourceRoot` to the rest of the system?**
|
||||||
_1340 weakly-connected nodes found - possible documentation gaps or missing edges._
|
_1340 weakly-connected nodes found - possible documentation gaps or missing edges._
|
||||||
- **Should `app.module.ts` be split into smaller, more focused modules?**
|
- **Should `app.module.ts` be split into smaller, more focused modules?**
|
||||||
_Cohesion score 0.05974025974025974 - nodes in this community are weakly interconnected._
|
_Cohesion score 0.05288207297726071 - nodes in this community are weakly interconnected._
|
||||||
- **Should `SmsService` be split into smaller, more focused modules?**
|
- **Should `SmsService` be split into smaller, more focused modules?**
|
||||||
_Cohesion score 0.052028732284993204 - nodes in this community are weakly interconnected._
|
_Cohesion score 0.052028732284993204 - nodes in this community are weakly interconnected._
|
||||||
- **Should `ProductService` be split into smaller, more focused modules?**
|
- **Should `ProductService` be split into smaller, more focused modules?**
|
||||||
|
|||||||
2
graphify-out/cache/stat-index.json
vendored
2
graphify-out/cache/stat-index.json
vendored
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
Loading…
Reference in New Issue
Block a user