fix(blog): update fallback image handling, use SafeImage, and enhance related products display
All checks were successful
Deploy Canina / deploy (push) Successful in 1m37s

This commit is contained in:
parsa aghaei 2026-08-24 17:49:40 +03:30
parent fe6a900665
commit 1ddfb0a823
14 changed files with 11087 additions and 9377 deletions

View File

@ -512,13 +512,13 @@ export default async function BlogPostPage({ params }: { params: Promise<{ slug:
/> />
</div> </div>
<div className="flex-1 min-w-0"> <div className="flex-1 min-w-0">
<span className="text-[10px] font-bold text-white/60 block truncate">{p.category?.name}</span> <span className="text-[10px] font-bold text-white/60 block truncate">{p.category?.name || p.categorySlug}</span>
<h5 className="text-xs font-black text-white truncate group-hover:text-canina-gold transition-colors"> <h5 className="text-xs font-black text-white truncate group-hover:text-canina-gold transition-colors">
{p.nameFa} {p.nameFa}
</h5> </h5>
{p.prices?.[0]?.price && ( {(p.priceDisplay || p.priceValue || p.prices?.[0]?.price) && (
<span className="text-[11px] font-bold text-canina-gold font-mono mt-0.5 block"> <span className="text-[11px] font-bold text-canina-gold font-mono mt-0.5 block">
{Number(p.prices[0].price).toLocaleString('fa-IR')} تومان {p.priceDisplay || (p.priceValue ? `${Number(p.priceValue).toLocaleString('fa-IR')} تومان` : `${Number(p.prices[0].price).toLocaleString('fa-IR')} تومان`)}
</span> </span>
)} )}
</div> </div>

View File

@ -58,7 +58,7 @@ async function getBlogs() {
? new Date(String(b.createdAt)).toLocaleDateString('fa-IR') ? new Date(String(b.createdAt)).toLocaleDateString('fa-IR')
: '', : '',
readingTime: b.readingTime || 3, readingTime: b.readingTime || 3,
image: String(b.imageUrl || b.coverImage || 'https://images.unsplash.com/photo-1548767797-d8c844163c4c?auto=format&fit=crop&q=80&w=800'), image: String(b.imageUrl || b.coverImage || '/assets/images/blog-placeholder.png'),
imageAlt: b.imageAlt || b.title, imageAlt: b.imageAlt || b.title,
author: authorName || 'نویسنده کنینا', author: authorName || 'نویسنده کنینا',
content: String(b.content || ''), content: String(b.content || ''),

View File

@ -23,6 +23,7 @@ import { Product } from "../lib/data/products";
import { productService } from "../lib/services/productService"; import { productService } from "../lib/services/productService";
import { useRouter } from 'next/navigation'; import { useRouter } from 'next/navigation';
import Image from 'next/image'; import Image from 'next/image';
import SafeImage from './SafeImage';
export interface BlogCategory { export interface BlogCategory {
id: string; id: string;
@ -240,15 +241,14 @@ export default function BlogPage({
className="bg-white rounded-[3.5rem] overflow-hidden border border-medical-gray-200 shadow-2xl flex flex-col lg:flex-row cursor-pointer group hover:border-canina-blue/30 transition-all" className="bg-white rounded-[3.5rem] overflow-hidden border border-medical-gray-200 shadow-2xl flex flex-col lg:flex-row cursor-pointer group hover:border-canina-blue/30 transition-all"
onClick={() => router.push(`/blog/${featuredPost.slug}`)} onClick={() => router.push(`/blog/${featuredPost.slug}`)}
> >
<div className="lg:w-1/2 aspect-video lg:aspect-auto relative overflow-hidden"> <div className="lg:w-1/2 aspect-video lg:aspect-auto relative overflow-hidden bg-medical-gray-100">
<Image <SafeImage
src={featuredPost.image} src={featuredPost.image}
alt={featuredPost.imageAlt || featuredPost.title} alt={featuredPost.imageAlt || featuredPost.title}
fill
priority priority
sizes="(max-width: 1024px) 100vw, 50vw" sizes="(max-width: 1024px) 100vw, 50vw"
className="w-full h-full object-cover group-hover:scale-105 transition-transform duration-700" className="w-full h-full"
unoptimized imgClassName="w-full h-full object-cover group-hover:scale-105 transition-transform duration-700"
/> />
{featuredPost.featured && ( {featuredPost.featured && (
<div className="absolute top-6 right-6 px-3.5 py-1.5 bg-amber-500 text-white rounded-full text-xs font-black flex items-center gap-1.5 shadow-lg backdrop-blur-md"> <div className="absolute top-6 right-6 px-3.5 py-1.5 bg-amber-500 text-white rounded-full text-xs font-black flex items-center gap-1.5 shadow-lg backdrop-blur-md">
@ -311,17 +311,16 @@ export default function BlogPage({
onClick={() => router.push(`/blog/${post.slug}`)} onClick={() => router.push(`/blog/${post.slug}`)}
> >
<div> <div>
<div className="aspect-[16/10] overflow-hidden relative"> <div className="aspect-[16/10] overflow-hidden relative bg-medical-gray-100">
<Image <SafeImage
src={post.image} src={post.image}
alt={post.imageAlt || post.title} alt={post.imageAlt || post.title}
fill
sizes="(max-width: 768px) 100vw, (max-width: 1200px) 50vw, 33vw" sizes="(max-width: 768px) 100vw, (max-width: 1200px) 50vw, 33vw"
className="w-full h-full object-cover group-hover:scale-108 transition-transform duration-700" className="w-full h-full"
unoptimized imgClassName="w-full h-full object-cover group-hover:scale-108 transition-transform duration-700"
/> />
{post.category && ( {post.category && (
<span className="absolute bottom-3 right-3 px-3 py-1 bg-black/60 backdrop-blur-md text-white rounded-xl text-[10px] font-bold"> <span className="absolute bottom-3 right-3 px-3 py-1 bg-black/60 backdrop-blur-md text-white rounded-xl text-[10px] font-bold z-10">
{post.category} {post.category}
</span> </span>
)} )}

View File

@ -7,7 +7,7 @@
"5": "CmsController", "5": "CmsController",
"6": "tickets.controller.ts", "6": "tickets.controller.ts",
"7": "PaginationDto", "7": "PaginationDto",
"8": "admin.module.ts", "8": "ReportsController",
"9": "devDependencies", "9": "devDependencies",
"10": "ReviewsController", "10": "ReviewsController",
"11": "Spinner.tsx", "11": "Spinner.tsx",
@ -66,7 +66,7 @@
"64": "compilerOptions", "64": "compilerOptions",
"65": "AdminTransactionFilterDto", "65": "AdminTransactionFilterDto",
"66": "AdminQueryDto", "66": "AdminQueryDto",
"67": "PetsController", "67": "admin.module.ts",
"68": "BlogsController", "68": "BlogsController",
"69": "Required Review Group Closures", "69": "Required Review Group Closures",
"70": "compilerOptions", "70": "compilerOptions",
@ -114,7 +114,7 @@
"112": "Operational Rules & Boundaries", "112": "Operational Rules & Boundaries",
"113": "reviews.controller.ts", "113": "reviews.controller.ts",
"114": "AppService", "114": "AppService",
"115": "catalog/page.tsx", "115": "seo.ts",
"116": "Vazirmatn Changelog", "116": "Vazirmatn Changelog",
"117": "Vazirmatn Font فونت وزیرمتن", "117": "Vazirmatn Font فونت وزیرمتن",
"118": "Operational Rules & Boundaries", "118": "Operational Rules & Boundaries",
@ -128,12 +128,12 @@
"126": "admin-panel/package.json", "126": "admin-panel/package.json",
"127": "Sahel-Font", "127": "Sahel-Font",
"128": "AdminService", "128": "AdminService",
"129": "seo.ts", "129": "videos.controller.ts",
"130": "Sahel-Font", "130": "Sahel-Font",
"131": "Role & Core Objective", "131": "Role & Core Objective",
"132": "orchestrate.py", "132": "orchestrate.py",
"133": "backend/package.json", "133": "backend/package.json",
"134": "@nestjs/core", "134": "Get",
"135": "graphify reference: extra exports and benchmark", "135": "graphify reference: extra exports and benchmark",
"136": "Phase 2 Final Quality Gate Summary Report", "136": "Phase 2 Final Quality Gate Summary Report",
"137": "Task Modifications Log", "137": "Task Modifications Log",
@ -144,7 +144,7 @@
"142": "start-dev.js", "142": "start-dev.js",
"143": "generate-openapi.js", "143": "generate-openapi.js",
"144": "@testing-library/react", "144": "@testing-library/react",
"145": "eslint-config-prettier", "145": "app/page.tsx",
"146": "System Discovery", "146": "System Discovery",
"147": "RevalidationService", "147": "RevalidationService",
"148": "AdminController", "148": "AdminController",
@ -157,7 +157,7 @@
"155": "Blogs.tsx", "155": "Blogs.tsx",
"156": "contact/page.tsx", "156": "contact/page.tsx",
"157": "ErrorPages.tsx", "157": "ErrorPages.tsx",
"158": "@nestjs/throttler", "158": "@types/bcryptjs",
"159": "with-vpn.sh", "159": "with-vpn.sh",
"160": "Architecture Specification", "160": "Architecture Specification",
"161": "Project Health Audit Report", "161": "Project Health Audit Report",
@ -175,15 +175,15 @@
"173": "Phase 3 Audit Traceability Matrix", "173": "Phase 3 Audit Traceability Matrix",
"174": "rebuild_honest_ledger.js", "174": "rebuild_honest_ledger.js",
"175": "validate_evidence_grade.js", "175": "validate_evidence_grade.js",
"176": "passport-jwt", "176": "@types/node",
"177": "blog/page.tsx", "177": "blog/page.tsx",
"178": "prettier", "178": "typescript",
"179": "BlogsService", "179": "BlogsService",
"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": "swagger-ui-express", "184": "eslint-config-next",
"185": "ApiResponse", "185": "ApiResponse",
"186": "seed-ui-texts.ts", "186": "seed-ui-texts.ts",
"187": "seed-wiki.ts", "187": "seed-wiki.ts",
@ -196,8 +196,6 @@
"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": "@eslint/eslintrc",
"198": "videos/page.tsx",
"199": "auth.service.ts", "199": "auth.service.ts",
"200": "application/README.md", "200": "application/README.md",
"201": "deploy.sh", "201": "deploy.sh",
@ -230,16 +228,13 @@
"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": "@nestjs/schematics",
"232": "ts-loader", "232": "ts-loader",
"233": "ts-node", "233": "ts-node",
"234": "@nestjs/testing",
"235": "source-map-support", "235": "source-map-support",
"236": "@types/bcrypt", "236": "@types/bcrypt",
"237": "ts-jest", "237": "ts-jest",
"238": "tsconfig-paths", "238": "tsconfig-paths",
"239": "RegisterDto", "239": "RegisterDto",
"240": "typescript-eslint",
"241": "blog.entity.ts", "241": "blog.entity.ts",
"242": "home.entity.ts", "242": "home.entity.ts",
"243": "wiki.entity.ts", "243": "wiki.entity.ts",
@ -264,8 +259,6 @@
"262": "User Logout API", "262": "User Logout API",
"263": "generate-openapi.d.ts", "263": "generate-openapi.d.ts",
"264": "InitiatePaymentDto", "264": "InitiatePaymentDto",
"265": "@types/express",
"266": "@types/jest",
"267": "@types/js-yaml", "267": "@types/js-yaml",
"268": "@types/multer", "268": "@types/multer",
"269": "eslint-plugin-react-hooks", "269": "eslint-plugin-react-hooks",
@ -297,12 +290,11 @@
"295": "eslint-plugin-react-refresh", "295": "eslint-plugin-react-refresh",
"296": "tailwindcss", "296": "tailwindcss",
"297": "ZibalEBankService", "297": "ZibalEBankService",
"298": "ZibalCallbackQueryDto", "298": ".initiateOrderPayment",
"299": "@tailwindcss/postcss", "299": "@tailwindcss/postcss",
"300": "typescript", "300": "typescript",
"301": "app.e2e-spec.js", "301": "app.e2e-spec.js",
"302": "typescript-eslint", "302": "typescript-eslint",
"303": "@testing-library/jest-dom",
"304": "SmsLogQueryDto", "304": "SmsLogQueryDto",
"305": "@types/react", "305": "@types/react",
"306": "globals", "306": "globals",
@ -319,16 +311,6 @@
"317": "revalidate/route.ts", "317": "revalidate/route.ts",
"318": "MaskableField.tsx", "318": "MaskableField.tsx",
"319": ".getDashboardStats", "319": ".getDashboardStats",
"320": ".addPattern",
"321": "class-validator",
"322": "ioredis",
"323": "@nestjs/common",
"324": "@nestjs/passport",
"325": "@nestjs/platform-express",
"326": "passport",
"327": "reflect-metadata",
"328": "eslint-plugin-prettier",
"329": "@types/compression",
"330": "@types/passport-jwt", "330": "@types/passport-jwt",
"331": "@types/supertest" "331": "@types/supertest"
} }

File diff suppressed because one or more lines are too long

View File

@ -1,22 +1,22 @@
{ {
"0": "Roles", "0": "Roles",
"1": "app.module.ts", "1": "app.module.ts",
"2": "SmsService", "2": "SettingsController",
"3": "productService.ts", "3": "ProductService",
"4": "ProductPage.tsx", "4": "SafeImage.tsx",
"5": "CmsController", "5": "CmsController",
"6": "tickets.controller.ts", "6": "tickets.controller.ts",
"7": "PaginationDto", "7": "PaginationDto",
"8": "ReportsController", "8": "admin.module.ts",
"9": "devDependencies", "9": "devDependencies",
"10": "reviews.controller.ts", "10": "ReviewsController",
"11": "Spinner.tsx", "11": "Spinner.tsx",
"12": "PetProfile.tsx", "12": "useCartStore",
"13": "app-audit-verification.e2e-spec.js", "13": "app-audit-verification.e2e-spec.js",
"14": "lib/services/api.ts", "14": "lib/services/api.ts",
"15": "src/services/api.ts", "15": "src/services/api.ts",
"16": "DoctorQueryDto", "16": "DoctorQueryDto",
"17": "auth.service.ts", "17": "RedisService",
"18": "JwtAuthGuard", "18": "JwtAuthGuard",
"19": "ProductsService", "19": "ProductsService",
"20": "CreateVideoDto", "20": "CreateVideoDto",
@ -32,7 +32,7 @@
"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",
@ -45,13 +45,13 @@
"43": "BannersService", "43": "BannersService",
"44": "TestimonialsService", "44": "TestimonialsService",
"45": "What You Must Do When Invoked", "45": "What You Must Do When Invoked",
"46": "AdminService", "46": "ApiOperation",
"47": "IngredientsService", "47": "IngredientsService",
"48": "Reports.tsx", "48": "Reports.tsx",
"49": "devDependencies", "49": "devDependencies",
"50": "devDependencies", "50": "devDependencies",
"51": "BlogsController", "51": "BlogsController",
"52": "PrescriptionsController", "52": "PrescriptionsService",
"53": "SmartAdvisorService", "53": "SmartAdvisorService",
"54": "UsersService", "54": "UsersService",
"55": "UITexts.tsx", "55": "UITexts.tsx",
@ -60,13 +60,13 @@
"58": "ContactService", "58": "ContactService",
"59": "compilerOptions", "59": "compilerOptions",
"60": "admin.service.ts", "60": "admin.service.ts",
"61": "payment.controller.ts", "61": "CreateEBankCheckoutDto",
"62": "api", "62": "api",
"63": "dependencies", "63": "dependencies",
"64": "compilerOptions", "64": "compilerOptions",
"65": "AdminTransactionFilterDto", "65": "AdminTransactionFilterDto",
"66": "AdminQueryDto", "66": "AdminQueryDto",
"67": "admin.module.ts", "67": "PetsController",
"68": "BlogsController", "68": "BlogsController",
"69": "Required Review Group Closures", "69": "Required Review Group Closures",
"70": "compilerOptions", "70": "compilerOptions",
@ -84,15 +84,15 @@
"82": "scripts", "82": "scripts",
"83": "dependencies", "83": "dependencies",
"84": "Role & Core Objective", "84": "Role & Core Objective",
"85": "WholesaleApplyDto", "85": "SettingsService",
"86": "zibal.service.ts", "86": "zibal.service.ts",
"87": "dependencies", "87": "dependencies",
"88": "useSettingsStore", "88": "useSettingsStore",
"89": "seed-products.ts", "89": "seed-products.ts",
"90": "MetricsController", "90": "HomeClient.tsx",
"91": "Reconciled Audit Roles & Assignments", "91": "Reconciled Audit Roles & Assignments",
"92": "OrdersService", "92": "OrdersService",
"93": "useCartStore", "93": "ProductPage.tsx",
"94": "Phase 3.1 — Human Review Preparation and Master Backlog Critique", "94": "Phase 3.1 — Human Review Preparation and Master Backlog Critique",
"95": "getSeoConfig", "95": "getSeoConfig",
"96": "compilerOptions", "96": "compilerOptions",
@ -112,7 +112,7 @@
"110": "Operational Rules & Boundaries", "110": "Operational Rules & Boundaries",
"111": "Operational Rules & Boundaries", "111": "Operational Rules & Boundaries",
"112": "Operational Rules & Boundaries", "112": "Operational Rules & Boundaries",
"113": "Reviews.tsx", "113": "reviews.controller.ts",
"114": "AppService", "114": "AppService",
"115": "catalog/page.tsx", "115": "catalog/page.tsx",
"116": "Vazirmatn Changelog", "116": "Vazirmatn Changelog",
@ -121,13 +121,13 @@
"119": "compilerOptions", "119": "compilerOptions",
"120": "compilerOptions", "120": "compilerOptions",
"121": "backend/README.md", "121": "backend/README.md",
"122": "bcryptjs", "122": "SmsService",
"123": "helmet", "123": "BlogsService",
"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": "js-yaml", "128": "AdminService",
"129": "seo.ts", "129": "seo.ts",
"130": "Sahel-Font", "130": "Sahel-Font",
"131": "Role & Core Objective", "131": "Role & Core Objective",
@ -146,15 +146,15 @@
"144": "@testing-library/react", "144": "@testing-library/react",
"145": "eslint-config-prettier", "145": "eslint-config-prettier",
"146": "System Discovery", "146": "System Discovery",
"147": "PrescriptionsManager.tsx", "147": "RevalidationService",
"148": "eslint", "148": "AdminController",
"149": "SmsSettingsPage.tsx", "149": "SmsSettingsPage.tsx",
"150": "Product Requirement Document (PRD)", "150": "Product Requirement Document (PRD)",
"151": "@nestjs/jwt", "151": "AuthService",
"152": "@nestjs/cli", "152": "@nestjs/cli",
"153": "exclude", "153": "exclude",
"154": "Baseline Command Plan & Reconciled Command History", "154": "Baseline Command Plan & Reconciled Command History",
"155": "@nestjs/swagger", "155": "Blogs.tsx",
"156": "contact/page.tsx", "156": "contact/page.tsx",
"157": "ErrorPages.tsx", "157": "ErrorPages.tsx",
"158": "@nestjs/throttler", "158": "@nestjs/throttler",
@ -178,13 +178,13 @@
"176": "passport-jwt", "176": "passport-jwt",
"177": "blog/page.tsx", "177": "blog/page.tsx",
"178": "prettier", "178": "prettier",
"179": "@prisma/client", "179": "BlogsService",
"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": "swagger-ui-express", "184": "swagger-ui-express",
"185": "@types/node", "185": "ApiResponse",
"186": "seed-ui-texts.ts", "186": "seed-ui-texts.ts",
"187": "seed-wiki.ts", "187": "seed-wiki.ts",
"188": "update-blog.dto.ts", "188": "update-blog.dto.ts",
@ -198,7 +198,7 @@
"196": "Select.tsx", "196": "Select.tsx",
"197": "@eslint/eslintrc", "197": "@eslint/eslintrc",
"198": "videos/page.tsx", "198": "videos/page.tsx",
"199": "useUserStore", "199": "auth.service.ts",
"200": "application/README.md", "200": "application/README.md",
"201": "deploy.sh", "201": "deploy.sh",
"202": "🔒 Security & Performance Review (09_devops_security)", "202": "🔒 Security & Performance Review (09_devops_security)",
@ -238,7 +238,7 @@
"236": "@types/bcrypt", "236": "@types/bcrypt",
"237": "ts-jest", "237": "ts-jest",
"238": "tsconfig-paths", "238": "tsconfig-paths",
"239": "@types/bcryptjs", "239": "RegisterDto",
"240": "typescript-eslint", "240": "typescript-eslint",
"241": "blog.entity.ts", "241": "blog.entity.ts",
"242": "home.entity.ts", "242": "home.entity.ts",
@ -263,6 +263,7 @@
"261": "User Login API", "261": "User Login API",
"262": "User Logout API", "262": "User Logout API",
"263": "generate-openapi.d.ts", "263": "generate-openapi.d.ts",
"264": "InitiatePaymentDto",
"265": "@types/express", "265": "@types/express",
"266": "@types/jest", "266": "@types/jest",
"267": "@types/js-yaml", "267": "@types/js-yaml",
@ -302,12 +303,32 @@
"301": "app.e2e-spec.js", "301": "app.e2e-spec.js",
"302": "typescript-eslint", "302": "typescript-eslint",
"303": "@testing-library/jest-dom", "303": "@testing-library/jest-dom",
"304": "SmsLogQueryDto",
"305": "@types/react", "305": "@types/react",
"306": "globals", "306": "globals",
"307": "SendOtpDto",
"308": "vitest", "308": "vitest",
"309": "axios", "309": "axios",
"310": "tailwindcss", "310": "tailwindcss",
"311": "track/page.tsx", "311": "track/page.tsx",
"312": ".addComment",
"313": "MenuManager.tsx",
"314": "layout.tsx",
"315": "typescript", "315": "typescript",
"318": "MaskableField.tsx" "316": "trust-seals/page.tsx",
"317": "revalidate/route.ts",
"318": "MaskableField.tsx",
"319": ".getDashboardStats",
"320": ".addPattern",
"321": "class-validator",
"322": "ioredis",
"323": "@nestjs/common",
"324": "@nestjs/passport",
"325": "@nestjs/platform-express",
"326": "passport",
"327": "reflect-metadata",
"328": "eslint-plugin-prettier",
"329": "@types/compression",
"330": "@types/passport-jwt",
"331": "@types/supertest"
} }

View File

@ -1,38 +1,38 @@
# Graph Report - canina (2026-08-24) # Graph Report - canina (2026-08-24)
## Corpus Check ## Corpus Check
- 545 files · ~1,310,484 words - 552 files · ~1,314,001 words
- Verdict: corpus is large enough that graph structure adds value. - Verdict: corpus is large enough that graph structure adds value.
## Summary ## Summary
- 3940 nodes · 7098 edges · 311 communities (193 shown, 118 thin omitted) - 3987 nodes · 7189 edges · 332 communities (207 shown, 125 thin omitted)
- Extraction: 96% EXTRACTED · 4% INFERRED · 0% AMBIGUOUS · INFERRED: 270 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: `eb63d22a` - Built from commit: `2a31a9f8`
- 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).
## Community Hubs (Navigation) ## Community Hubs (Navigation)
- Roles - Roles
- app.module.ts - app.module.ts
- SmsService - SettingsController
- productService.ts - ProductService
- ProductPage.tsx - SafeImage.tsx
- CmsController - CmsController
- tickets.controller.ts - tickets.controller.ts
- PaginationDto - PaginationDto
- ReportsController - admin.module.ts
- devDependencies - devDependencies
- reviews.controller.ts - ReviewsController
- Spinner.tsx - Spinner.tsx
- PetProfile.tsx - useCartStore
- app-audit-verification.e2e-spec.js - app-audit-verification.e2e-spec.js
- lib/services/api.ts - lib/services/api.ts
- src/services/api.ts - src/services/api.ts
- DoctorQueryDto - DoctorQueryDto
- auth.service.ts - RedisService
- JwtAuthGuard - JwtAuthGuard
- ProductsService - ProductsService
- CreateVideoDto - CreateVideoDto
@ -48,7 +48,7 @@
- DEVOPS-001 - DEVOPS-001
- DOC-001 - DOC-001
- adminRoutes.tsx - adminRoutes.tsx
- WholesaleService - WholesaleApplyDto
- B2BService - B2BService
- AuthController - AuthController
- FaqService - FaqService
@ -61,13 +61,13 @@
- BannersService - BannersService
- TestimonialsService - TestimonialsService
- What You Must Do When Invoked - What You Must Do When Invoked
- AdminService - ApiOperation
- IngredientsService - IngredientsService
- Reports.tsx - Reports.tsx
- devDependencies - devDependencies
- devDependencies - devDependencies
- BlogsController - BlogsController
- PrescriptionsController - PrescriptionsService
- SmartAdvisorService - SmartAdvisorService
- UsersService - UsersService
- UITexts.tsx - UITexts.tsx
@ -76,13 +76,13 @@
- ContactService - ContactService
- compilerOptions - compilerOptions
- admin.service.ts - admin.service.ts
- payment.controller.ts - CreateEBankCheckoutDto
- api - api
- dependencies - dependencies
- compilerOptions - compilerOptions
- AdminTransactionFilterDto - AdminTransactionFilterDto
- AdminQueryDto - AdminQueryDto
- admin.module.ts - PetsController
- BlogsController - BlogsController
- Required Review Group Closures - Required Review Group Closures
- compilerOptions - compilerOptions
@ -100,15 +100,15 @@
- scripts - scripts
- dependencies - dependencies
- Role & Core Objective - Role & Core Objective
- WholesaleApplyDto - SettingsService
- zibal.service.ts - zibal.service.ts
- dependencies - dependencies
- useSettingsStore - useSettingsStore
- seed-products.ts - seed-products.ts
- MetricsController - HomeClient.tsx
- Reconciled Audit Roles & Assignments - Reconciled Audit Roles & Assignments
- OrdersService - OrdersService
- useCartStore - ProductPage.tsx
- Phase 3.1 — Human Review Preparation and Master Backlog Critique - Phase 3.1 — Human Review Preparation and Master Backlog Critique
- getSeoConfig - getSeoConfig
- compilerOptions - compilerOptions
@ -128,7 +128,7 @@
- Operational Rules & Boundaries - Operational Rules & Boundaries
- Operational Rules & Boundaries - Operational Rules & Boundaries
- Operational Rules & Boundaries - Operational Rules & Boundaries
- Reviews.tsx - reviews.controller.ts
- AppService - AppService
- catalog/page.tsx - catalog/page.tsx
- Vazirmatn Changelog - Vazirmatn Changelog
@ -137,13 +137,13 @@
- compilerOptions - compilerOptions
- compilerOptions - compilerOptions
- backend/README.md - backend/README.md
- bcryptjs - SmsService
- helmet - BlogsService
- Repository Map - Repository Map
- validate_integrity.js - validate_integrity.js
- admin-panel/package.json - admin-panel/package.json
- Sahel-Font - Sahel-Font
- js-yaml - AdminService
- seo.ts - seo.ts
- Sahel-Font - Sahel-Font
- Role & Core Objective - Role & Core Objective
@ -162,15 +162,15 @@
- @testing-library/react - @testing-library/react
- eslint-config-prettier - eslint-config-prettier
- System Discovery - System Discovery
- PrescriptionsManager.tsx - RevalidationService
- eslint - AdminController
- SmsSettingsPage.tsx - SmsSettingsPage.tsx
- Product Requirement Document (PRD) - Product Requirement Document (PRD)
- @nestjs/jwt - AuthService
- @nestjs/cli - @nestjs/cli
- exclude - exclude
- Baseline Command Plan & Reconciled Command History - Baseline Command Plan & Reconciled Command History
- @nestjs/swagger - Blogs.tsx
- contact/page.tsx - contact/page.tsx
- ErrorPages.tsx - ErrorPages.tsx
- @nestjs/throttler - @nestjs/throttler
@ -194,13 +194,13 @@
- passport-jwt - passport-jwt
- blog/page.tsx - blog/page.tsx
- prettier - prettier
- @prisma/client - BlogsService
- 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)
- swagger-ui-express - swagger-ui-express
- @types/node - ApiResponse
- seed-ui-texts.ts - seed-ui-texts.ts
- seed-wiki.ts - seed-wiki.ts
- update-blog.dto.ts - update-blog.dto.ts
@ -214,7 +214,7 @@
- Select.tsx - Select.tsx
- @eslint/eslintrc - @eslint/eslintrc
- videos/page.tsx - videos/page.tsx
- useUserStore - auth.service.ts
- application/README.md - application/README.md
- deploy.sh - deploy.sh
- 🔒 Security & Performance Review (09_devops_security) - 🔒 Security & Performance Review (09_devops_security)
@ -254,7 +254,7 @@
- @types/bcrypt - @types/bcrypt
- ts-jest - ts-jest
- tsconfig-paths - tsconfig-paths
- @types/bcryptjs - RegisterDto
- typescript-eslint - typescript-eslint
- blog.entity.ts - blog.entity.ts
- home.entity.ts - home.entity.ts
@ -275,6 +275,7 @@
- start.sh - start.sh
- User Login API - User Login API
- User Logout API - User Logout API
- InitiatePaymentDto
- @types/express - @types/express
- @types/jest - @types/jest
- @types/js-yaml - @types/js-yaml
@ -303,12 +304,31 @@
- app.e2e-spec.js - app.e2e-spec.js
- typescript-eslint - typescript-eslint
- @testing-library/jest-dom - @testing-library/jest-dom
- SmsLogQueryDto
- @types/react - @types/react
- globals - globals
- SendOtpDto
- vitest - vitest
- track/page.tsx - track/page.tsx
- .addComment
- MenuManager.tsx
- layout.tsx
- typescript - typescript
- trust-seals/page.tsx
- revalidate/route.ts
- MaskableField.tsx - MaskableField.tsx
- .addPattern
- class-validator
- ioredis
- @nestjs/common
- @nestjs/passport
- @nestjs/platform-express
- passport
- reflect-metadata
- eslint-plugin-prettier
- @types/compression
- @types/passport-jwt
- @types/supertest
## God Nodes (most connected - your core abstractions) ## God Nodes (most connected - your core abstractions)
1. `Roles()` - 106 edges 1. `Roles()` - 106 edges
@ -339,27 +359,27 @@
- 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 (311 total, 118 thin omitted) ## Communities (332 total, 125 thin omitted)
### Community 0 - "Roles" ### Community 0 - "Roles"
Cohesion: 0.18 Cohesion: 0.18
Nodes (19): Roles(), PaymentController, ApiBadRequestResponse, ApiBearerAuth, ApiOkResponse, ApiOperation, ApiTags, Body (+11 more) Nodes (19): Roles(), PaymentController, ApiBadRequestResponse, ApiBearerAuth, ApiOkResponse, ApiOperation, ApiTags, Body (+11 more)
### Community 1 - "app.module.ts" ### Community 1 - "app.module.ts"
Cohesion: 0.06
Nodes (38): B2BModule, Module, BannersModule, Module, CmsModule, Module, SmsModule, Global (+30 more)
### Community 2 - "SmsService"
Cohesion: 0.06
Nodes (27): SmsLogQuery, SmsService, Injectable, SmsLogQueryDto, ApiPropertyOptional, IsIn, IsNumber, IsOptional (+19 more)
### Community 3 - "productService.ts"
Cohesion: 0.08
Nodes (29): BlogCategory, BlogPostItem, CatalogPageSpread(), CatalogPageSpreadProps, CategoryMeta, getFormBadge(), getSpeciesBadge(), FlipbookCatalog() (+21 more)
### Community 4 - "ProductPage.tsx"
Cohesion: 0.07 Cohesion: 0.07
Nodes (27): OrderDetailsModal(), OrderDetailsModalProps, PLAYBACK_RATES, PodcastInlinePlayer(), PodcastInlinePlayerProps, PLAYBACK_RATES, PodcastPlayerModal(), PodcastPlayerModalProps (+19 more) Nodes (36): B2BModule, Module, BannersModule, Module, CmsModule, Module, SmsModule, Global (+28 more)
### Community 2 - "SettingsController"
Cohesion: 0.17
Nodes (14): SettingsController, ApiBearerAuth, ApiOkResponse, ApiOperation, ApiTags, Body, Controller, Delete (+6 more)
### Community 3 - "ProductService"
Cohesion: 0.06
Nodes (33): dynamic, revalidate, DEFAULT_CATEGORIES, dynamic, revalidate, dynamic, revalidate, BlogCategory (+25 more)
### Community 4 - "SafeImage.tsx"
Cohesion: 0.12
Nodes (16): OrderDetailsModalProps, PLAYBACK_RATES, PodcastPlayerModal(), PodcastPlayerModalProps, VideoModalPlayer, SafeImage(), SafeImageProps, DisplayVideoItem (+8 more)
### Community 5 - "CmsController" ### Community 5 - "CmsController"
Cohesion: 0.09 Cohesion: 0.09
@ -367,67 +387,67 @@ Nodes (24): CmsController, ApiBearerAuth, ApiOperation, ApiTags, Body, Controlle
### Community 6 - "tickets.controller.ts" ### Community 6 - "tickets.controller.ts"
Cohesion: 0.09 Cohesion: 0.09
Nodes (29): AdminUpdateTicketDto, CreateTicketDto, ReplyTicketDto, ApiProperty, ApiPropertyOptional, IsNotEmpty, IsOptional, IsString (+21 more) Nodes (31): AdminUpdateTicketDto, CreateTicketDto, ReplyTicketDto, ApiProperty, ApiPropertyOptional, IsNotEmpty, IsOptional, IsString (+23 more)
### Community 7 - "PaginationDto" ### Community 7 - "PaginationDto"
Cohesion: 0.06 Cohesion: 0.07
Nodes (27): BlogsModule, Module, BlogFilterDto, BlogsService, Injectable, PaginationDto, SortOrder, ApiPropertyOptional (+19 more) Nodes (25): BlogFilterDto, PaginationDto, SortOrder, ApiPropertyOptional, IsEnum, IsInt, IsOptional, IsString (+17 more)
### Community 8 - "ReportsController" ### Community 8 - "admin.module.ts"
Cohesion: 0.17 Cohesion: 0.08
Nodes (9): ReportsController, ApiBearerAuth, ApiOperation, ApiTags, Controller, Get, UseGuards, ReportsService (+1 more) Nodes (17): AdminModule, Module, MediaService, Injectable, ReportsController, ApiBearerAuth, ApiOperation, ApiTags (+9 more)
### Community 9 - "devDependencies" ### Community 9 - "devDependencies"
Cohesion: 0.22 Cohesion: 0.22
Nodes (9): devDependencies, eslint-plugin-prettier, @types/passport-jwt, @types/supertest, typescript, typescript, eslint-plugin-prettier, @types/passport-jwt (+1 more) Nodes (9): devDependencies, eslint, @types/bcryptjs, @types/node, typescript, eslint, @types/node, typescript (+1 more)
### Community 10 - "reviews.controller.ts" ### Community 10 - "ReviewsController"
Cohesion: 0.07 Cohesion: 0.14
Nodes (31): CreateReviewDto, ApiProperty, IsInt, IsNotEmpty, IsOptional, IsString, Min, ApiProperty (+23 more) Nodes (14): ReviewsController, ApiBearerAuth, ApiOperation, ApiTags, Body, Controller, Delete, Get (+6 more)
### Community 11 - "Spinner.tsx" ### Community 11 - "Spinner.tsx"
Cohesion: 0.07 Cohesion: 0.09
Nodes (38): ConfirmModal(), ConfirmModalProps, getFileType(), Media, MediaSelector(), MediaSelectorProps, maxWidthClasses, Modal() (+30 more) Nodes (30): ConfirmModal(), ConfirmModalProps, getFileType(), Media, MediaSelector(), MediaSelectorProps, maxWidthClasses, Modal() (+22 more)
### Community 12 - "PetProfile.tsx" ### Community 12 - "useCartStore"
Cohesion: 0.14 Cohesion: 0.11
Nodes (17): ArchiveProductCard(), CATEGORY_MAP, ICON_MAP, FeaturedProducts(), ProductCard(), OrderRowSkeleton(), PetProfileSkeleton(), ProductCardSkeleton() (+9 more) Nodes (26): ArchiveProductCard(), B2BPortal(), CheckoutPage(), FeaturedProducts(), ProductCard(), Header(), MENU_ICONS, OrderSuccess() (+18 more)
### Community 13 - "app-audit-verification.e2e-spec.js" ### Community 13 - "app-audit-verification.e2e-spec.js"
Cohesion: 0.07 Cohesion: 0.07
Nodes (22): AppModule, Module, CustomHttpExceptionFilter, Catch, PrismaExceptionFilter, Catch, DecimalInterceptor, Injectable (+14 more) Nodes (22): AppModule, Module, CustomHttpExceptionFilter, Catch, PrismaExceptionFilter, Catch, DecimalInterceptor, Injectable (+14 more)
### Community 14 - "lib/services/api.ts" ### Community 14 - "lib/services/api.ts"
Cohesion: 0.09 Cohesion: 0.06
Nodes (16): ContactInfoItem, PrescriptionUploadModal(), PrescriptionUploadModalProps, Testimonial, api, ApiErrorPayload, BASE_DOMAIN, baseURL (+8 more) Nodes (26): LoginModal, ContactInfoItem, LoginModal(), LoginModalProps, Testimonial, TestimonialsSection(), api, ApiErrorPayload (+18 more)
### Community 15 - "src/services/api.ts" ### Community 15 - "src/services/api.ts"
Cohesion: 0.09 Cohesion: 0.09
Nodes (24): ProtectedRoute(), Login(), B2BManager, SeoSettingsPage, SystemSettingsPage, ApiErrorPayload, failedQueue, useAdminAuthStore (+16 more) Nodes (25): ProtectedRoute(), Login(), B2BManager, SeoSettingsPage, SmartAdvisorManager, SystemSettingsPage, ApiErrorPayload, failedQueue (+17 more)
### Community 16 - "DoctorQueryDto" ### Community 16 - "DoctorQueryDto"
Cohesion: 0.09 Cohesion: 0.09
Nodes (24): DoctorsController, ApiBearerAuth, ApiOperation, ApiTags, Body, Controller, Delete, Get (+16 more) Nodes (24): DoctorsController, ApiBearerAuth, ApiOperation, ApiTags, Body, Controller, Delete, Get (+16 more)
### Community 17 - "auth.service.ts" ### Community 17 - "RedisService"
Cohesion: 0.08 Cohesion: 0.10
Nodes (13): AdminLoginInput, AuthService, LoginInput, RegisterInput, Injectable, SendOtpDto, ApiProperty, IsNotEmpty (+5 more) Nodes (10): ApiExcludeController, MetricsController, Controller, Get, Res, RedisModule, Global, Module (+2 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 - "ProductsService"
Cohesion: 0.09 Cohesion: 0.10
Nodes (19): GetProductsDto, ApiPropertyOptional, IsEnum, IsOptional, IsString, ProductsController, ApiOperation, ApiTags (+11 more) Nodes (19): GetProductsDto, ApiPropertyOptional, IsEnum, IsOptional, IsString, ProductsController, ApiOperation, ApiTags (+11 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 22 - "UserDashboard.tsx" ### Community 22 - "UserDashboard.tsx"
Cohesion: 0.09 Cohesion: 0.10
Nodes (31): VerifyContent(), AddressModal(), AddressModalProps, BackButton(), BackButtonProps, BlogPost, BlogPreviewSection(), CheckoutPage() (+23 more) Nodes (26): VerifyContent(), AddressModal(), AddressModalProps, BackButton(), BackButtonProps, BlogPost, BlogPreviewSection(), DeleteConfirmModal() (+18 more)
### Community 23 - "MenuService" ### Community 23 - "MenuService"
Cohesion: 0.12 Cohesion: 0.12
@ -466,19 +486,19 @@ Cohesion: 0.06
Nodes (31): Acceptance Criteria, Affected Application, Affected Files, Alternative Direction, Category, Completion Statement, Confidence, Dependencies (+23 more) Nodes (31): Acceptance Criteria, Affected Application, Affected Files, Alternative Direction, Category, Completion Statement, Confidence, Dependencies (+23 more)
### Community 32 - "adminRoutes.tsx" ### Community 32 - "adminRoutes.tsx"
Cohesion: 0.06 Cohesion: 0.07
Nodes (24): App(), CategoryDist, DashboardData, SslStatus, WholesaleRequest, AdminRouteConfig, BannersManager, Categories (+16 more) Nodes (21): App(), CategoryDist, DashboardData, WholesaleRequest, AdminRouteConfig, BannersManager, Categories, Dashboard (+13 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.13 Cohesion: 0.14
Nodes (15): B2BController, ApiBearerAuth, ApiOperation, ApiTags, Body, Controller, Get, Param (+7 more) Nodes (14): B2BController, ApiBearerAuth, ApiOperation, ApiTags, Body, Controller, Get, Param (+6 more)
### Community 35 - "AuthController" ### Community 35 - "AuthController"
Cohesion: 0.25 Cohesion: 0.27
Nodes (12): AuthController, ApiBadRequestResponse, ApiBearerAuth, ApiOkResponse, ApiOperation, ApiTags, Body, Controller (+4 more) Nodes (12): AuthController, ApiBadRequestResponse, ApiBearerAuth, ApiOkResponse, ApiOperation, ApiTags, Body, Controller (+4 more)
### Community 36 - "FaqService" ### Community 36 - "FaqService"
@ -490,8 +510,8 @@ 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 - "Button.tsx" ### Community 38 - "Button.tsx"
Cohesion: 0.09 Cohesion: 0.07
Nodes (22): TransactionReceiptData, TransactionReceiptModal(), TransactionReceiptModalProps, Button(), ButtonProps, ButtonSize, ButtonVariant, ThSort() (+14 more) Nodes (26): TransactionReceiptData, TransactionReceiptModal(), TransactionReceiptModalProps, Button(), ButtonProps, ButtonSize, ButtonVariant, ThSort() (+18 more)
### Community 39 - "CategoriesController" ### Community 39 - "CategoriesController"
Cohesion: 0.10 Cohesion: 0.10
@ -499,7 +519,7 @@ Nodes (16): CategoriesController, ApiBearerAuth, ApiOperation, ApiQuery, ApiTags
### 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
@ -521,9 +541,9 @@ 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 - "AdminService" ### Community 46 - "ApiOperation"
Cohesion: 0.09 Cohesion: 0.15
Nodes (13): AdminController, ApiBearerAuth, ApiOperation, ApiTags, Body, Controller, Delete, Param (+5 more) Nodes (3): ApiOperation, Body, Put
### Community 47 - "IngredientsService" ### Community 47 - "IngredientsService"
Cohesion: 0.13 Cohesion: 0.13
@ -542,12 +562,12 @@ Cohesion: 0.13
Nodes (15): eslint-config-next, devDependencies, eslint, eslint-config-next, jsdom, tailwindcss, @tailwindcss/postcss, @types/node (+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.07 Cohesion: 0.14
Nodes (18): BlogsController, ApiBearerAuth, ApiOperation, ApiQuery, ApiTags, Body, Controller, Delete (+10 more) Nodes (16): BlogsController, ApiBearerAuth, ApiOperation, ApiQuery, ApiTags, Body, Controller, Delete (+8 more)
### Community 52 - "PrescriptionsController" ### Community 52 - "PrescriptionsService"
Cohesion: 0.15 Cohesion: 0.14
Nodes (12): PrescriptionsController, ApiBearerAuth, ApiOperation, ApiTags, Body, Controller, Get, Param (+4 more) Nodes (14): PrescriptionsController, ApiBearerAuth, ApiOperation, ApiTags, Body, Controller, Get, Param (+6 more)
### Community 53 - "SmartAdvisorService" ### Community 53 - "SmartAdvisorService"
Cohesion: 0.13 Cohesion: 0.13
@ -555,15 +575,15 @@ Nodes (14): SmartAdvisorController, ApiBearerAuth, ApiOperation, ApiTags, Body,
### Community 54 - "UsersService" ### Community 54 - "UsersService"
Cohesion: 0.06 Cohesion: 0.06
Nodes (42): DEFAULT_JWT_REFRESH_SECRET, DEFAULT_JWT_SECRET, getJwtSecret(), AuthModule, Module, JwtPayload, JwtStrategy, Injectable (+34 more) Nodes (41): DEFAULT_JWT_REFRESH_SECRET, DEFAULT_JWT_SECRET, getJwtSecret(), AuthModule, Module, JwtPayload, JwtStrategy, Injectable (+33 more)
### Community 55 - "UITexts.tsx" ### Community 55 - "UITexts.tsx"
Cohesion: 0.09 Cohesion: 0.09
Nodes (20): ICON_REGISTRY, IconPickerModal(), IconPickerModalProps, ActiveStates, PRESET_BG_COLORS, PRESET_COLORS, RichTextEditor(), RichTextEditorProps (+12 more) Nodes (19): ICON_REGISTRY, IconPickerModal(), IconPickerModalProps, ImagePreviewModal(), ImagePreviewModalProps, ToggleSwitch(), ToggleSwitchProps, ProductItem (+11 more)
### Community 56 - "Orders.tsx" ### Community 56 - "Orders.tsx"
Cohesion: 0.11 Cohesion: 0.09
Nodes (15): Skeleton(), MonitoringStats, getPaymentMethodLabel(), Order, ORDER_STATUS_MAP, OrderItem, Orders(), PaymentTx (+7 more) Nodes (19): Badge(), BadgeProps, BadgeVariant, variantStyles, Skeleton(), MonitoringStats, getPaymentMethodLabel(), Order (+11 more)
### Community 57 - "Role & Core Objective" ### Community 57 - "Role & Core Objective"
Cohesion: 0.09 Cohesion: 0.09
@ -578,12 +598,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 60 - "admin.service.ts" ### Community 60 - "admin.service.ts"
Cohesion: 0.12 Cohesion: 0.13
Nodes (20): CouponInput, CouponTargetInput, PaginationQuery, ProductDto, ApiPropertyOptional, IsArray, IsBoolean, IsNumber (+12 more) Nodes (21): CouponInput, CouponTargetInput, PaginationQuery, ProductDto, ApiPropertyOptional, IsArray, IsBoolean, IsNumber (+13 more)
### Community 61 - "payment.controller.ts" ### Community 61 - "CreateEBankCheckoutDto"
Cohesion: 0.11 Cohesion: 0.22
Nodes (19): CreateEBankCheckoutDto, ApiProperty, ApiPropertyOptional, IsNotEmpty, IsNumber, IsOptional, IsString, Min (+11 more) Nodes (8): CreateEBankCheckoutDto, ApiProperty, ApiPropertyOptional, IsNotEmpty, IsNumber, IsOptional, IsString, Min
### Community 62 - "api" ### Community 62 - "api"
Cohesion: 0.13 Cohesion: 0.13
@ -591,7 +611,7 @@ Nodes (13): Layout(), MenuGroup, Sidebar(), SidebarProps, SubMenuItem, LiveMonit
### Community 63 - "dependencies" ### Community 63 - "dependencies"
Cohesion: 0.10 Cohesion: 0.10
Nodes (21): dependencies, bcrypt, class-transformer, class-validator, ioredis, @nestjs/common, @nestjs/passport, @nestjs/platform-express (+13 more) Nodes (21): dependencies, bcrypt, bcryptjs, class-transformer, compression, helmet, js-yaml, @nestjs/jwt (+13 more)
### Community 64 - "compilerOptions" ### Community 64 - "compilerOptions"
Cohesion: 0.10 Cohesion: 0.10
@ -602,16 +622,16 @@ Cohesion: 0.25
Nodes (7): AdminTransactionFilterDto, ApiPropertyOptional, IsIn, IsNumber, IsOptional, IsString, Type Nodes (7): AdminTransactionFilterDto, ApiPropertyOptional, IsIn, IsNumber, IsOptional, IsString, Type
### Community 66 - "AdminQueryDto" ### Community 66 - "AdminQueryDto"
Cohesion: 0.17 Cohesion: 0.18
Nodes (7): ApiQuery, Get, Query, AdminQueryDto, ApiPropertyOptional, IsOptional, IsString Nodes (7): ApiQuery, Get, Query, AdminQueryDto, ApiPropertyOptional, IsOptional, IsString
### Community 67 - "admin.module.ts" ### Community 67 - "PetsController"
Cohesion: 0.06 Cohesion: 0.10
Nodes (23): AdminModule, Module, PetsController, ApiBearerAuth, ApiOperation, ApiQuery, ApiTags, Controller (+15 more) Nodes (14): PetsController, ApiBearerAuth, ApiOperation, ApiQuery, ApiTags, Controller, Delete, Get (+6 more)
### Community 68 - "BlogsController" ### Community 68 - "BlogsController"
Cohesion: 0.16 Cohesion: 0.23
Nodes (14): BlogsController, ApiBearerAuth, ApiNotFoundResponse, ApiOkResponse, ApiOperation, ApiTags, Body, Controller (+6 more) Nodes (9): BlogsController, ApiNotFoundResponse, ApiOkResponse, ApiOperation, ApiTags, Controller, Get, Param (+1 more)
### Community 69 - "Required Review Group Closures" ### Community 69 - "Required Review Group Closures"
Cohesion: 0.10 Cohesion: 0.10
@ -622,8 +642,8 @@ Cohesion: 0.08
Nodes (23): compilerOptions, allowImportingTsExtensions, erasableSyntaxOnly, jsx, lib, module, moduleDetection, moduleResolution (+15 more) Nodes (23): compilerOptions, allowImportingTsExtensions, erasableSyntaxOnly, jsx, lib, module, moduleDetection, moduleResolution (+15 more)
### Community 71 - "getPageMetadata" ### Community 71 - "getPageMetadata"
Cohesion: 0.13 Cohesion: 0.14
Nodes (8): generateMetadata(), generateMetadata(), generateMetadata(), generateMetadata(), generateMetadata(), generateMetadata(), generateMetadata(), getPageMetadata() Nodes (9): generateMetadata(), generateMetadata(), generateMetadata(), generateMetadata(), getHomeData(), Home(), generateMetadata(), generateMetadata() (+1 more)
### Community 72 - "Operational Rules & Boundaries" ### Community 72 - "Operational Rules & Boundaries"
Cohesion: 0.11 Cohesion: 0.11
@ -673,10 +693,6 @@ Nodes (21): dependencies, axios, lucide-react, react, react-dom, react-hot-toast
Cohesion: 0.12 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 - "WholesaleApplyDto"
Cohesion: 0.29
Nodes (6): ApiProperty, ApiPropertyOptional, IsNotEmpty, IsOptional, IsString, WholesaleApplyDto
### Community 86 - "zibal.service.ts" ### Community 86 - "zibal.service.ts"
Cohesion: 0.16 Cohesion: 0.16
Nodes (9): GatewayHealthResult, IPaymentGateway, PaymentInquiryResult, PaymentRequestOptions, PaymentRequestResult, PaymentVerifyResult, ZibalInquiryResponse, ZibalRequestResponse (+1 more) Nodes (9): GatewayHealthResult, IPaymentGateway, PaymentInquiryResult, PaymentRequestOptions, PaymentRequestResult, PaymentVerifyResult, ZibalInquiryResponse, ZibalRequestResponse (+1 more)
@ -686,36 +702,36 @@ Cohesion: 0.12
Nodes (17): dependencies, axios, lucide-react, motion, next, react, react-dom, sonner (+9 more) Nodes (17): dependencies, axios, lucide-react, motion, next, react, react-dom, sonner (+9 more)
### Community 88 - "useSettingsStore" ### Community 88 - "useSettingsStore"
Cohesion: 0.08 Cohesion: 0.09
Nodes (32): HomeClient(), HomeClientProps, generateMetadata(), getHomeData(), Home(), BannerPlacement(), BannerPlacementProps, BrandLogo() (+24 more) Nodes (29): AuthModal, B2BPortal, CartDrawer, ClientLayout(), AuthModal(), AuthModalProps, extractOtpFromText(), BrandLogo() (+21 more)
### Community 89 - "seed-products.ts" ### Community 89 - "seed-products.ts"
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 - "MetricsController" ### Community 90 - "HomeClient.tsx"
Cohesion: 0.29 Cohesion: 0.15
Nodes (5): ApiExcludeController, MetricsController, Controller, Get, Res Nodes (16): HomeClient(), HomeClientProps, CATEGORY_MAP, ICON_MAP, BannerPlacement(), BannerPlacementProps, Hero(), StatCounter() (+8 more)
### 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 (29): CreateOrderDto, OrderItemDto, ApiProperty, ApiPropertyOptional, IsArray, IsNotEmpty, IsNumber, IsOptional (+21 more)
### Community 93 - "useCartStore" ### Community 93 - "ProductPage.tsx"
Cohesion: 0.12 Cohesion: 0.12
Nodes (11): CartDrawer(), Header(), OrderSuccess(), mockProduct, ApiErr, Order, OrderItem, OrderService (+3 more) Nodes (16): PLAYBACK_RATES, PodcastInlinePlayer(), PodcastInlinePlayerProps, CalculatorState, ICON_MAP, ProductPage(), ProductReviews, useCalculatorStore (+8 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
Nodes (14): 10. Dependency & Wave Adjustments, 11. Acceptance Criteria Refinements, 12. Business and Product Decision Classification, 13. Final Recommended Backlog Summary, 1. Executive Assessment, 2. Findings That Require No Change, 3. Findings Requiring Task Refinements, 4. Tasks Requiring Splitting (+6 more) Nodes (14): 10. Dependency & Wave Adjustments, 11. Acceptance Criteria Refinements, 12. Business and Product Decision Classification, 13. Final Recommended Backlog Summary, 1. Executive Assessment, 2. Findings That Require No Change, 3. Findings Requiring Task Refinements, 4. Tasks Requiring Splitting (+6 more)
### Community 95 - "getSeoConfig" ### Community 95 - "getSeoConfig"
Cohesion: 0.22 Cohesion: 0.26
Nodes (11): BlogPostPage(), generateMetadata(), getBlog(), revalidate, generateMetadata(), generateMetadata(), generateMetadata(), getWikiTerm() (+3 more) Nodes (11): BlogPostPage(), generateMetadata(), getBlog(), revalidate, generateMetadata(), revalidate, generateMetadata(), getWikiTerm() (+3 more)
### Community 96 - "compilerOptions" ### Community 96 - "compilerOptions"
Cohesion: 0.06 Cohesion: 0.06
@ -754,12 +770,12 @@ 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 - "auth.controller.ts" ### Community 106 - "auth.controller.ts"
Cohesion: 0.08 Cohesion: 0.16
Nodes (25): AdminLoginDto, ApiProperty, IsEmail, IsNotEmpty, IsString, MinLength, LoginDto, ApiProperty (+17 more) Nodes (11): AdminLoginDto, ApiProperty, IsEmail, IsNotEmpty, IsString, MinLength, LoginDto, ApiProperty (+3 more)
### Community 108 - "PrismaService" ### Community 108 - "PrismaService"
Cohesion: 0.08 Cohesion: 0.07
Nodes (17): CategoryQuery, MeliPayamakPattern, MeliPayamakResponse, SendPatternSmsOptions, SmsConfig, CreateContactSubmissionDto, UpdateContactInfoItemDto, MenuType (+9 more) Nodes (20): CategoryQuery, MeliPayamakPattern, MeliPayamakResponse, SendPatternSmsOptions, SmsConfig, SmsLogQuery, CreateContactSubmissionDto, UpdateContactInfoItemDto (+12 more)
### Community 109 - "1. Summary of Integrity Repairs Performed" ### Community 109 - "1. Summary of Integrity Repairs Performed"
Cohesion: 0.17 Cohesion: 0.17
@ -777,9 +793,9 @@ Nodes (10): 1. Mark Active Task as Complete, 2. Documentation Updates, 3. Dynami
Cohesion: 0.18 Cohesion: 0.18
Nodes (10): 1. Pre-Deployment Checklist, 2. Build Verification, 3. Deployment Strategy (Based on Target), 4. Post-Deployment Health Check, 5. Forbidden Actions, Expected JSON Output Schema, Operational Rules & Boundaries, Required Output Artifacts (What files to write/update) (+2 more) Nodes (10): 1. Pre-Deployment Checklist, 2. Build Verification, 3. Deployment Strategy (Based on Target), 4. Post-Deployment Health Check, 5. Forbidden Actions, Expected JSON Output Schema, Operational Rules & Boundaries, Required Output Artifacts (What files to write/update) (+2 more)
### Community 113 - "Reviews.tsx" ### Community 113 - "reviews.controller.ts"
Cohesion: 0.50 Cohesion: 0.13
Nodes (4): ProductReview, Reviews(), toPersianDigits(), Reviews Nodes (17): CreateReviewDto, ApiProperty, IsInt, IsNotEmpty, IsOptional, IsString, Min, ApiProperty (+9 more)
### Community 114 - "AppService" ### Community 114 - "AppService"
Cohesion: 0.29 Cohesion: 0.29
@ -825,9 +841,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 128 - "AdminService"
Cohesion: 0.16
Nodes (4): Delete, Param, AdminService, Injectable
### Community 129 - "seo.ts" ### Community 129 - "seo.ts"
Cohesion: 0.29 Cohesion: 0.18
Nodes (4): generateMetadata(), DEFAULT_SEO_CONFIG, PageMetadataOptions, SeoConfig Nodes (6): generateMetadata(), generateMetadata(), SearchResultsPage(), DEFAULT_SEO_CONFIG, PageMetadataOptions, SeoConfig
### Community 130 - "Sahel-Font" ### Community 130 - "Sahel-Font"
Cohesion: 0.20 Cohesion: 0.20
@ -885,9 +905,13 @@ Nodes (6): app_module_1, core_1, fs, path, swagger_1, yaml
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 - "PrescriptionsManager.tsx" ### Community 147 - "RevalidationService"
Cohesion: 0.18 Cohesion: 0.14
Nodes (9): Badge(), BadgeProps, BadgeVariant, variantStyles, ImagePreviewModal(), ImagePreviewModalProps, ProductItem, PrescriptionsManager (+1 more) Nodes (5): RevalidationModule, Global, Module, RevalidationService, Injectable
### Community 148 - "AdminController"
Cohesion: 0.16
Nodes (6): AdminController, ApiBearerAuth, ApiTags, Controller, Post, UseGuards
### Community 149 - "SmsSettingsPage.tsx" ### Community 149 - "SmsSettingsPage.tsx"
Cohesion: 0.29 Cohesion: 0.29
@ -897,6 +921,10 @@ Nodes (7): PatternItem, SmsConfigState, SmsLogItem, SmsLogStats, SmsSettingsPage
Cohesion: 0.29 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 151 - "AuthService"
Cohesion: 0.19
Nodes (3): AuthService, Injectable, normalizeMobile()
### Community 153 - "exclude" ### Community 153 - "exclude"
Cohesion: 0.22 Cohesion: 0.22
Nodes (8): exclude, extends, dist, node_modules, prisma, **/*spec.ts, test, ./tsconfig.json Nodes (8): exclude, extends, dist, node_modules, prisma, **/*spec.ts, test, ./tsconfig.json
@ -905,6 +933,10 @@ Nodes (8): exclude, extends, dist, node_modules, prisma, **/*spec.ts, test, ./ts
Cohesion: 0.29 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 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 155 - "Blogs.tsx"
Cohesion: 0.15
Nodes (11): ActiveStates, PRESET_BG_COLORS, PRESET_COLORS, RichTextEditor(), RichTextEditorProps, AuthorUser, BlogCategory, BlogPost (+3 more)
### Community 159 - "with-vpn.sh" ### Community 159 - "with-vpn.sh"
Cohesion: 0.62 Cohesion: 0.62
Nodes (6): cleanup(), log(), with-vpn.sh script, start_vpn(), stop_vpn(), vpn_is_up() Nodes (6): cleanup(), log(), with-vpn.sh script, start_vpn(), stop_vpn(), vpn_is_up()
@ -974,8 +1006,12 @@ Cohesion: 0.40
Nodes (4): activeFiles, errors, validationOutput, warnings Nodes (4): activeFiles, errors, validationOutput, warnings
### Community 177 - "blog/page.tsx" ### Community 177 - "blog/page.tsx"
Cohesion: 0.47 Cohesion: 0.38
Nodes (5): Blog(), generateMetadata(), getBlogs(), getCategories(), BlogPage() Nodes (6): Blog(), generateMetadata(), getBlogs(), getCategories(), revalidate, BlogPage()
### Community 179 - "BlogsService"
Cohesion: 0.15
Nodes (4): BlogsModule, Module, BlogsService, Injectable
### Community 180 - "API Contract Specification" ### Community 180 - "API Contract Specification"
Cohesion: 0.50 Cohesion: 0.50
@ -993,6 +1029,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 185 - "ApiResponse"
Cohesion: 0.19
Nodes (10): ApiNotFoundResponse, ApiOkResponse, ApiOperation, ApiTags, Controller, Get, Param, Query (+2 more)
### 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
@ -1017,9 +1057,9 @@ 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 199 - "useUserStore" ### Community 199 - "auth.service.ts"
Cohesion: 0.15 Cohesion: 0.20
Nodes (17): ClientLayout(), AuthModal(), AuthModalProps, extractOtpFromText(), B2BPortal(), LoginModal(), LoginModalProps, NetworkBanner() (+9 more) Nodes (9): AdminLoginInput, LoginInput, RegisterInput, ApiProperty, IsNotEmpty, IsString, Matches, VerifyOtpDto (+1 more)
### Community 200 - "application/README.md" ### Community 200 - "application/README.md"
Cohesion: 0.50 Cohesion: 0.50
@ -1037,6 +1077,14 @@ 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 239 - "RegisterDto"
Cohesion: 0.22
Nodes (8): RegisterDto, ApiProperty, ApiPropertyOptional, IsEmail, IsNotEmpty, IsOptional, IsString, MinLength
### Community 264 - "InitiatePaymentDto"
Cohesion: 0.43
Nodes (7): InitiatePaymentDto, InitiateWalletTopupDto, ApiProperty, ApiPropertyOptional, IsNotEmpty, IsOptional, IsString
### Community 298 - "ZibalCallbackQueryDto" ### Community 298 - "ZibalCallbackQueryDto"
Cohesion: 0.40 Cohesion: 0.40
Nodes (4): ApiPropertyOptional, IsOptional, IsString, ZibalCallbackQueryDto Nodes (4): ApiPropertyOptional, IsOptional, IsString, ZibalCallbackQueryDto
@ -1045,25 +1093,49 @@ Nodes (4): ApiPropertyOptional, IsOptional, IsString, ZibalCallbackQueryDto
Cohesion: 0.50 Cohesion: 0.50
Nodes (3): app_module_1, supertest_1, testing_1 Nodes (3): app_module_1, supertest_1, testing_1
### Community 304 - "SmsLogQueryDto"
Cohesion: 0.25
Nodes (7): SmsLogQueryDto, ApiPropertyOptional, IsIn, IsNumber, IsOptional, IsString, Type
### Community 307 - "SendOtpDto"
Cohesion: 0.33
Nodes (5): SendOtpDto, ApiProperty, IsNotEmpty, IsString, Matches
### Community 312 - ".addComment"
Cohesion: 0.33
Nodes (5): ApiBearerAuth, Body, Post, Request, UseGuards
### Community 313 - "MenuManager.tsx"
Cohesion: 0.33
Nodes (4): MENU_TABS, MenuItem, MenuType, MenuManager
### Community 314 - "layout.tsx"
Cohesion: 0.47
Nodes (3): generateMetadata(), lalezar, vazirmatn
### Community 317 - "revalidate/route.ts"
Cohesion: 0.83
Nodes (3): GET(), handleRevalidate(), POST()
## Knowledge Gaps ## Knowledge Gaps
- **1286 isolated node(s):** `$schema`, `collection`, `sourceRoot`, `deleteOutDir`, `name` (+1281 more) - **1297 isolated node(s):** `$schema`, `collection`, `sourceRoot`, `deleteOutDir`, `name` (+1292 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. - **125 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 `HomeController`, `AuthController`, `BlogsController`, `PaginationDto`, `PetsController`, `ProductsService`, `UsersService`, `OrdersService`?** - **Why does `ApiResponse` connect `ApiResponse` to `HomeController`, `AuthController`, `BlogsController`, `PetsController`, `src/services/api.ts`, `ProductsService`, `UsersService`, `OrdersService`?**
_High betweenness centrality (0.077) - this node is a cross-community bridge._ _High betweenness centrality (0.075) - this node is a cross-community bridge._
- **Why does `Roles()` connect `Roles` to `SmsService`, `CmsController`, `tickets.controller.ts`, `reviews.controller.ts`, `JwtAuthGuard`, `ProductsService`, `MenuService`, `WholesaleService`, `B2BService`, `FaqService`, `SslController`, `BannersService`, `TestimonialsService`, `IngredientsService`, `PrescriptionsController`, `SmartAdvisorService`, `ContactService`, `payment.controller.ts`, `AdminTransactionFilterDto`?** - **Why does `Roles()` connect `Roles` to `SettingsController`, `CmsController`, `tickets.controller.ts`, `ReviewsController`, `JwtAuthGuard`, `ProductsService`, `MenuService`, `WholesaleApplyDto`, `B2BService`, `FaqService`, `SslController`, `BannersService`, `TestimonialsService`, `IngredientsService`, `PrescriptionsService`, `SmartAdvisorService`, `ContactService`, `.addPattern`, `AdminTransactionFilterDto`, `reviews.controller.ts`?**
_High betweenness centrality (0.055) - 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 `admin.module.ts`, `CmsController`, `tickets.controller.ts`, `PaginationDto`, `auth.controller.ts`, `PetsController`, `reviews.controller.ts`, `OrdersService`, `DoctorQueryDto`, `ProductsService`, `CreateVideoDto`, `UsersService`, `admin.service.ts`, `payment.controller.ts`?** - **Why does `JwtAuthGuard` connect `JwtAuthGuard` to `PetsController`, `CmsController`, `tickets.controller.ts`, `PaginationDto`, `admin.module.ts`, `auth.controller.ts`, `PetsController`, `PrismaService`, `DoctorQueryDto`, `reviews.controller.ts`, `ProductsService`, `admin.service.ts`?**
_High betweenness centrality (0.038) - 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?**
_1286 weakly-connected nodes found - possible documentation gaps or missing edges._ _1297 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.06390977443609022 - nodes in this community are weakly interconnected._ _Cohesion score 0.06708595387840671 - nodes in this community are weakly interconnected._
- **Should `SmsService` be split into smaller, more focused modules?** - **Should `ProductService` be split into smaller, more focused modules?**
_Cohesion score 0.055040197897340756 - nodes in this community are weakly interconnected._ _Cohesion score 0.06393442622950819 - nodes in this community are weakly interconnected._
- **Should `productService.ts` be split into smaller, more focused modules?** - **Should `SafeImage.tsx` be split into smaller, more focused modules?**
_Cohesion score 0.07607843137254902 - nodes in this community are weakly interconnected._ _Cohesion score 0.11692307692307692 - 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-24) # Graph Report - canina (2026-08-24)
## Corpus Check ## Corpus Check
- 552 files · ~1,314,001 words - 552 files · ~1,314,021 words
- Verdict: corpus is large enough that graph structure adds value. - Verdict: corpus is large enough that graph structure adds value.
## Summary ## Summary
- 3987 nodes · 7189 edges · 332 communities (207 shown, 125 thin omitted) - 3987 nodes · 7191 edges · 314 communities (209 shown, 105 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: `2a31a9f8` - Built from commit: `fe6a9006`
- 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,7 +23,7 @@
- CmsController - CmsController
- tickets.controller.ts - tickets.controller.ts
- PaginationDto - PaginationDto
- admin.module.ts - ReportsController
- devDependencies - devDependencies
- ReviewsController - ReviewsController
- Spinner.tsx - Spinner.tsx
@ -82,7 +82,7 @@
- compilerOptions - compilerOptions
- AdminTransactionFilterDto - AdminTransactionFilterDto
- AdminQueryDto - AdminQueryDto
- PetsController - admin.module.ts
- BlogsController - BlogsController
- Required Review Group Closures - Required Review Group Closures
- compilerOptions - compilerOptions
@ -130,7 +130,7 @@
- Operational Rules & Boundaries - Operational Rules & Boundaries
- reviews.controller.ts - reviews.controller.ts
- AppService - AppService
- catalog/page.tsx - seo.ts
- Vazirmatn Changelog - Vazirmatn Changelog
- Vazirmatn Font فونت وزیرمتن - Vazirmatn Font فونت وزیرمتن
- Operational Rules & Boundaries - Operational Rules & Boundaries
@ -144,12 +144,12 @@
- admin-panel/package.json - admin-panel/package.json
- Sahel-Font - Sahel-Font
- AdminService - AdminService
- seo.ts - videos.controller.ts
- Sahel-Font - Sahel-Font
- Role & Core Objective - Role & Core Objective
- orchestrate.py - orchestrate.py
- backend/package.json - backend/package.json
- @nestjs/core - Get
- graphify reference: extra exports and benchmark - graphify reference: extra exports and benchmark
- Phase 2 Final Quality Gate Summary Report - Phase 2 Final Quality Gate Summary Report
- Task Modifications Log - Task Modifications Log
@ -160,7 +160,7 @@
- start-dev.js - start-dev.js
- generate-openapi.js - generate-openapi.js
- @testing-library/react - @testing-library/react
- eslint-config-prettier - app/page.tsx
- System Discovery - System Discovery
- RevalidationService - RevalidationService
- AdminController - AdminController
@ -173,7 +173,7 @@
- Blogs.tsx - Blogs.tsx
- contact/page.tsx - contact/page.tsx
- ErrorPages.tsx - ErrorPages.tsx
- @nestjs/throttler - @types/bcryptjs
- with-vpn.sh - with-vpn.sh
- Architecture Specification - Architecture Specification
- Project Health Audit Report - Project Health Audit Report
@ -191,15 +191,15 @@
- Phase 3 Audit Traceability Matrix - Phase 3 Audit Traceability Matrix
- rebuild_honest_ledger.js - rebuild_honest_ledger.js
- validate_evidence_grade.js - validate_evidence_grade.js
- passport-jwt - @types/node
- blog/page.tsx - blog/page.tsx
- prettier - typescript
- BlogsService - BlogsService
- 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)
- swagger-ui-express - eslint-config-next
- ApiResponse - ApiResponse
- seed-ui-texts.ts - seed-ui-texts.ts
- seed-wiki.ts - seed-wiki.ts
@ -212,8 +212,6 @@
- Raw Finding Verification & Disposition Report - Raw Finding Verification & Disposition Report
- React + TypeScript + Vite - React + TypeScript + Vite
- Select.tsx - Select.tsx
- @eslint/eslintrc
- videos/page.tsx
- auth.service.ts - auth.service.ts
- application/README.md - application/README.md
- deploy.sh - deploy.sh
@ -246,16 +244,13 @@
- rules/graphify.md - rules/graphify.md
- .agents/workflows/graphify.md - .agents/workflows/graphify.md
- instructions.md - instructions.md
- @nestjs/schematics
- ts-loader - ts-loader
- ts-node - ts-node
- @nestjs/testing
- source-map-support - source-map-support
- @types/bcrypt - @types/bcrypt
- ts-jest - ts-jest
- tsconfig-paths - tsconfig-paths
- RegisterDto - RegisterDto
- typescript-eslint
- blog.entity.ts - blog.entity.ts
- home.entity.ts - home.entity.ts
- wiki.entity.ts - wiki.entity.ts
@ -276,8 +271,6 @@
- User Login API - User Login API
- User Logout API - User Logout API
- InitiatePaymentDto - InitiatePaymentDto
- @types/express
- @types/jest
- @types/js-yaml - @types/js-yaml
- @types/multer - @types/multer
- eslint-plugin-react-hooks - eslint-plugin-react-hooks
@ -298,12 +291,11 @@
- eslint-plugin-react-refresh - eslint-plugin-react-refresh
- tailwindcss - tailwindcss
- ZibalEBankService - ZibalEBankService
- ZibalCallbackQueryDto - .initiateOrderPayment
- @tailwindcss/postcss - @tailwindcss/postcss
- typescript - typescript
- app.e2e-spec.js - app.e2e-spec.js
- typescript-eslint - typescript-eslint
- @testing-library/jest-dom
- SmsLogQueryDto - SmsLogQueryDto
- @types/react - @types/react
- globals - globals
@ -317,16 +309,6 @@
- trust-seals/page.tsx - trust-seals/page.tsx
- revalidate/route.ts - revalidate/route.ts
- MaskableField.tsx - MaskableField.tsx
- .addPattern
- class-validator
- ioredis
- @nestjs/common
- @nestjs/passport
- @nestjs/platform-express
- passport
- reflect-metadata
- eslint-plugin-prettier
- @types/compression
- @types/passport-jwt - @types/passport-jwt
- @types/supertest - @types/supertest
@ -359,19 +341,19 @@
- 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 (332 total, 125 thin omitted) ## Communities (314 total, 105 thin omitted)
### Community 0 - "Roles" ### Community 0 - "Roles"
Cohesion: 0.18 Cohesion: 0.24
Nodes (19): Roles(), PaymentController, ApiBadRequestResponse, ApiBearerAuth, ApiOkResponse, ApiOperation, ApiTags, Body (+11 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.07 Cohesion: 0.07
Nodes (36): B2BModule, Module, BannersModule, Module, CmsModule, Module, SmsModule, Global (+28 more) Nodes (34): B2BModule, Module, BannersModule, Module, CmsModule, Module, SmsModule, Global (+26 more)
### Community 2 - "SettingsController" ### Community 2 - "SettingsController"
Cohesion: 0.17 Cohesion: 0.23
Nodes (14): SettingsController, ApiBearerAuth, ApiOkResponse, ApiOperation, ApiTags, Body, Controller, Delete (+6 more) Nodes (12): SettingsController, ApiBearerAuth, ApiOperation, ApiTags, Body, Controller, Delete, Param (+4 more)
### Community 3 - "ProductService" ### Community 3 - "ProductService"
Cohesion: 0.06 Cohesion: 0.06
@ -390,16 +372,16 @@ Cohesion: 0.09
Nodes (31): AdminUpdateTicketDto, CreateTicketDto, ReplyTicketDto, ApiProperty, ApiPropertyOptional, IsNotEmpty, IsOptional, IsString (+23 more) Nodes (31): AdminUpdateTicketDto, CreateTicketDto, ReplyTicketDto, ApiProperty, ApiPropertyOptional, IsNotEmpty, IsOptional, IsString (+23 more)
### Community 7 - "PaginationDto" ### Community 7 - "PaginationDto"
Cohesion: 0.07 Cohesion: 0.09
Nodes (25): BlogFilterDto, PaginationDto, SortOrder, ApiPropertyOptional, IsEnum, IsInt, IsOptional, IsString (+17 more) Nodes (20): BlogFilterDto, PaginationDto, SortOrder, ApiPropertyOptional, IsEnum, IsInt, IsOptional, IsString (+12 more)
### Community 8 - "admin.module.ts" ### Community 8 - "ReportsController"
Cohesion: 0.08 Cohesion: 0.17
Nodes (17): AdminModule, Module, MediaService, Injectable, ReportsController, ApiBearerAuth, ApiOperation, ApiTags (+9 more) Nodes (9): ReportsController, ApiBearerAuth, ApiOperation, ApiTags, Controller, Get, UseGuards, ReportsService (+1 more)
### Community 9 - "devDependencies" ### Community 9 - "devDependencies"
Cohesion: 0.22 Cohesion: 0.09
Nodes (9): devDependencies, eslint, @types/bcryptjs, @types/node, typescript, eslint, @types/node, typescript (+1 more) Nodes (23): devDependencies, eslint, eslint-config-prettier, @eslint/eslintrc, eslint-plugin-prettier, @nestjs/schematics, @nestjs/testing, prettier (+15 more)
### Community 10 - "ReviewsController" ### Community 10 - "ReviewsController"
Cohesion: 0.14 Cohesion: 0.14
@ -559,7 +541,7 @@ Nodes (19): autoprefixer, devDependencies, autoprefixer, eslint, @eslint/js, glo
### Community 50 - "devDependencies" ### Community 50 - "devDependencies"
Cohesion: 0.13 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, @testing-library/jest-dom, @types/node, @vitejs/plugin-react (+7 more)
### Community 51 - "BlogsController" ### Community 51 - "BlogsController"
Cohesion: 0.14 Cohesion: 0.14
@ -610,8 +592,8 @@ Cohesion: 0.13
Nodes (13): Layout(), MenuGroup, Sidebar(), SidebarProps, SubMenuItem, LiveMonitoringSummary, SEARCHABLE_PAGES, Topbar() (+5 more) Nodes (13): Layout(), MenuGroup, Sidebar(), SidebarProps, SubMenuItem, LiveMonitoringSummary, SEARCHABLE_PAGES, Topbar() (+5 more)
### Community 63 - "dependencies" ### Community 63 - "dependencies"
Cohesion: 0.10 Cohesion: 0.05
Nodes (21): dependencies, bcrypt, bcryptjs, class-transformer, compression, helmet, js-yaml, @nestjs/jwt (+13 more) Nodes (43): dependencies, bcrypt, bcryptjs, class-transformer, class-validator, compression, helmet, ioredis (+35 more)
### Community 64 - "compilerOptions" ### Community 64 - "compilerOptions"
Cohesion: 0.10 Cohesion: 0.10
@ -625,9 +607,9 @@ Nodes (7): AdminTransactionFilterDto, ApiPropertyOptional, IsIn, IsNumber, IsOpt
Cohesion: 0.18 Cohesion: 0.18
Nodes (7): ApiQuery, Get, Query, AdminQueryDto, ApiPropertyOptional, IsOptional, IsString Nodes (7): ApiQuery, Get, Query, AdminQueryDto, ApiPropertyOptional, IsOptional, IsString
### Community 67 - "PetsController" ### Community 67 - "admin.module.ts"
Cohesion: 0.10 Cohesion: 0.06
Nodes (14): PetsController, ApiBearerAuth, ApiOperation, ApiQuery, ApiTags, Controller, Delete, Get (+6 more) Nodes (21): AdminModule, Module, MediaService, Injectable, PetsController, ApiBearerAuth, ApiOperation, ApiQuery (+13 more)
### Community 68 - "BlogsController" ### Community 68 - "BlogsController"
Cohesion: 0.23 Cohesion: 0.23
@ -642,8 +624,8 @@ Cohesion: 0.08
Nodes (23): compilerOptions, allowImportingTsExtensions, erasableSyntaxOnly, jsx, lib, module, moduleDetection, moduleResolution (+15 more) Nodes (23): compilerOptions, allowImportingTsExtensions, erasableSyntaxOnly, jsx, lib, module, moduleDetection, moduleResolution (+15 more)
### Community 71 - "getPageMetadata" ### Community 71 - "getPageMetadata"
Cohesion: 0.14 Cohesion: 0.11
Nodes (9): generateMetadata(), generateMetadata(), generateMetadata(), generateMetadata(), getHomeData(), Home(), generateMetadata(), generateMetadata() (+1 more) Nodes (9): generateMetadata(), generateMetadata(), generateMetadata(), generateMetadata(), generateMetadata(), generateMetadata(), generateMetadata(), SearchResultsPage() (+1 more)
### Community 72 - "Operational Rules & Boundaries" ### Community 72 - "Operational Rules & Boundaries"
Cohesion: 0.11 Cohesion: 0.11
@ -774,8 +756,8 @@ Cohesion: 0.16
Nodes (11): AdminLoginDto, ApiProperty, IsEmail, IsNotEmpty, IsString, MinLength, LoginDto, ApiProperty (+3 more) Nodes (11): AdminLoginDto, ApiProperty, IsEmail, IsNotEmpty, IsString, MinLength, LoginDto, ApiProperty (+3 more)
### Community 108 - "PrismaService" ### Community 108 - "PrismaService"
Cohesion: 0.07 Cohesion: 0.06
Nodes (20): CategoryQuery, MeliPayamakPattern, MeliPayamakResponse, SendPatternSmsOptions, SmsConfig, SmsLogQuery, CreateContactSubmissionDto, UpdateContactInfoItemDto (+12 more) Nodes (21): CategoryQuery, WikiQuery, MeliPayamakPattern, MeliPayamakResponse, SendPatternSmsOptions, SmsConfig, SmsLogQuery, CreateContactSubmissionDto (+13 more)
### Community 109 - "1. Summary of Integrity Repairs Performed" ### Community 109 - "1. Summary of Integrity Repairs Performed"
Cohesion: 0.17 Cohesion: 0.17
@ -801,6 +783,10 @@ Nodes (17): CreateReviewDto, ApiProperty, IsInt, IsNotEmpty, IsOptional, IsStrin
Cohesion: 0.29 Cohesion: 0.29
Nodes (5): AppController, Controller, Get, AppService, Injectable Nodes (5): AppController, Controller, Get, AppService, Injectable
### Community 115 - "seo.ts"
Cohesion: 0.17
Nodes (7): CatalogClient(), generateMetadata(), generateMetadata(), VideosPage(), DEFAULT_SEO_CONFIG, PageMetadataOptions, SeoConfig
### Community 116 - "Vazirmatn Changelog" ### Community 116 - "Vazirmatn Changelog"
Cohesion: 0.18 Cohesion: 0.18
Nodes (10): 32.0.0, 32.1, 32.101, 32.102, 33.000, 33.001, 33.002, 33.003 (+2 more) Nodes (10): 32.0.0, 32.1, 32.101, 32.102, 33.000, 33.001, 33.002, 33.003 (+2 more)
@ -845,9 +831,9 @@ Nodes (9): Arch Linux, Contributors, Install, Known problems for variable versio
Cohesion: 0.16 Cohesion: 0.16
Nodes (4): Delete, Param, AdminService, Injectable Nodes (4): Delete, Param, AdminService, Injectable
### Community 129 - "seo.ts" ### Community 129 - "videos.controller.ts"
Cohesion: 0.18 Cohesion: 0.22
Nodes (6): generateMetadata(), generateMetadata(), SearchResultsPage(), DEFAULT_SEO_CONFIG, PageMetadataOptions, SeoConfig Nodes (7): GetVideosQueryDto, ApiPropertyOptional, IsBoolean, IsOptional, Transform, Module, VideosModule
### Community 130 - "Sahel-Font" ### Community 130 - "Sahel-Font"
Cohesion: 0.20 Cohesion: 0.20
@ -901,6 +887,10 @@ 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 145 - "app/page.tsx"
Cohesion: 0.67
Nodes (3): generateMetadata(), getHomeData(), Home()
### 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
@ -1085,17 +1075,17 @@ Nodes (8): RegisterDto, ApiProperty, ApiPropertyOptional, IsEmail, IsNotEmpty, I
Cohesion: 0.43 Cohesion: 0.43
Nodes (7): InitiatePaymentDto, InitiateWalletTopupDto, ApiProperty, ApiPropertyOptional, IsNotEmpty, IsOptional, IsString Nodes (7): InitiatePaymentDto, InitiateWalletTopupDto, ApiProperty, ApiPropertyOptional, IsNotEmpty, IsOptional, IsString
### Community 298 - "ZibalCallbackQueryDto" ### Community 298 - ".initiateOrderPayment"
Cohesion: 0.40 Cohesion: 0.20
Nodes (4): ApiPropertyOptional, IsOptional, IsString, ZibalCallbackQueryDto Nodes (10): ApiPropertyOptional, IsOptional, IsString, ZibalCallbackQueryDto, ApiBadRequestResponse, ApiOkResponse, Req, Res (+2 more)
### Community 301 - "app.e2e-spec.js" ### Community 301 - "app.e2e-spec.js"
Cohesion: 0.50 Cohesion: 0.50
Nodes (3): app_module_1, supertest_1, testing_1 Nodes (3): app_module_1, supertest_1, testing_1
### Community 304 - "SmsLogQueryDto" ### Community 304 - "SmsLogQueryDto"
Cohesion: 0.25 Cohesion: 0.17
Nodes (7): SmsLogQueryDto, ApiPropertyOptional, IsIn, IsNumber, IsOptional, IsString, Type Nodes (8): SmsLogQueryDto, ApiPropertyOptional, IsIn, IsNumber, IsOptional, IsString, Type, Query
### Community 307 - "SendOtpDto" ### Community 307 - "SendOtpDto"
Cohesion: 0.33 Cohesion: 0.33
@ -1120,21 +1110,21 @@ Nodes (3): GET(), handleRevalidate(), POST()
## Knowledge Gaps ## Knowledge Gaps
- **1297 isolated node(s):** `$schema`, `collection`, `sourceRoot`, `deleteOutDir`, `name` (+1292 more) - **1297 isolated node(s):** `$schema`, `collection`, `sourceRoot`, `deleteOutDir`, `name` (+1292 more)
These have ≤1 connection - possible missing edges or undocumented components. These have ≤1 connection - possible missing edges or undocumented components.
- **125 thin communities (<3 nodes) omitted from report** — run `graphify query` to explore isolated nodes. - **105 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 `ApiResponse` to `HomeController`, `AuthController`, `BlogsController`, `PetsController`, `src/services/api.ts`, `ProductsService`, `UsersService`, `OrdersService`?** - **Why does `ApiResponse` connect `ApiResponse` to `HomeController`, `AuthController`, `BlogsController`, `PetsController`, `src/services/api.ts`, `ProductsService`, `UsersService`, `OrdersService`?**
_High betweenness centrality (0.075) - this node is a cross-community bridge._ _High betweenness centrality (0.075) - this node is a cross-community bridge._
- **Why does `Roles()` connect `Roles` to `SettingsController`, `CmsController`, `tickets.controller.ts`, `ReviewsController`, `JwtAuthGuard`, `ProductsService`, `MenuService`, `WholesaleApplyDto`, `B2BService`, `FaqService`, `SslController`, `BannersService`, `TestimonialsService`, `IngredientsService`, `PrescriptionsService`, `SmartAdvisorService`, `ContactService`, `.addPattern`, `AdminTransactionFilterDto`, `reviews.controller.ts`?** - **Why does `Roles()` connect `Roles` to `SettingsController`, `CmsController`, `tickets.controller.ts`, `ReviewsController`, `JwtAuthGuard`, `ProductsService`, `MenuService`, `WholesaleApplyDto`, `B2BService`, `FaqService`, `SslController`, `BannersService`, `TestimonialsService`, `IngredientsService`, `SmsLogQueryDto`, `PrescriptionsService`, `SmartAdvisorService`, `ContactService`, `reviews.controller.ts`?**
_High betweenness centrality (0.063) - 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 `PetsController`, `CmsController`, `tickets.controller.ts`, `PaginationDto`, `admin.module.ts`, `auth.controller.ts`, `PetsController`, `PrismaService`, `DoctorQueryDto`, `reviews.controller.ts`, `ProductsService`, `admin.service.ts`?** - **Why does `JwtAuthGuard` connect `JwtAuthGuard` to `videos.controller.ts`, `admin.module.ts`, `CmsController`, `tickets.controller.ts`, `PaginationDto`, `auth.controller.ts`, `PetsController`, `PrismaService`, `DoctorQueryDto`, `reviews.controller.ts`, `ProductsService`, `admin.service.ts`?**
_High betweenness centrality (0.036) - 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?**
_1297 weakly-connected nodes found - possible documentation gaps or missing edges._ _1297 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.06708595387840671 - nodes in this community are weakly interconnected._ _Cohesion score 0.07215686274509804 - 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.06393442622950819 - nodes in this community are weakly interconnected._
- **Should `SafeImage.tsx` be split into smaller, more focused modules?** - **Should `SafeImage.tsx` be split into smaller, more focused modules?**

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