fix(catalog): luxury brochure redesign, dynamic admin logo, whitespace-nowrap badges, fixed spread dimensions
This commit is contained in:
parent
c825268b34
commit
229e50f973
@ -3,6 +3,7 @@ import React from "react";
|
||||
import Image from "next/image";
|
||||
import { Sparkles } from "lucide-react";
|
||||
import { cn } from "../lib/utils";
|
||||
import { useSettingsStore } from "../lib/store/settingsStore";
|
||||
|
||||
interface SafeImageProps extends Omit<React.ImgHTMLAttributes<HTMLImageElement>, 'src'> {
|
||||
src?: string;
|
||||
@ -31,6 +32,7 @@ export default function SafeImage({
|
||||
}: SafeImageProps) {
|
||||
const [error, setError] = React.useState(false);
|
||||
const [loading, setLoading] = React.useState(!priority);
|
||||
const logoUrl = useSettingsStore(state => state.getText('site_logo', ''));
|
||||
|
||||
// Check if external domain is in allowed remote patterns or relative path
|
||||
const isExternal = typeof src === 'string' && (src.startsWith('http://') || src.startsWith('https://'));
|
||||
@ -53,16 +55,27 @@ export default function SafeImage({
|
||||
if (!src || error) {
|
||||
return (
|
||||
<div className={cn(
|
||||
"flex flex-col items-center justify-center bg-medical-gray-50 border border-medical-gray-200/80 p-3 text-center w-full h-full rounded-2xl relative overflow-hidden select-none aspect-square",
|
||||
"flex flex-col items-center justify-center bg-medical-gray-50 border border-medical-gray-200/80 p-2 text-center w-full h-full rounded-2xl relative overflow-hidden select-none aspect-square",
|
||||
className
|
||||
)}>
|
||||
<div className="w-12 h-12 sm:w-14 sm:h-14 rounded-2xl bg-canina-blue/10 border border-canina-blue/20 text-canina-blue flex items-center justify-center font-black text-lg font-mono shadow-xs mb-2">
|
||||
CP
|
||||
</div>
|
||||
<span className="text-[11px] font-black text-medical-gray-800 font-vazir leading-tight">
|
||||
{logoUrl ? (
|
||||
<Image
|
||||
src={logoUrl}
|
||||
alt={alt || "Canina"}
|
||||
width={80}
|
||||
height={80}
|
||||
className="w-12 h-12 object-contain opacity-70 mb-1"
|
||||
unoptimized={typeof logoUrl === 'string' && (logoUrl.startsWith('blob:') || logoUrl.startsWith('data:'))}
|
||||
/>
|
||||
) : (
|
||||
<div className="w-10 h-10 rounded-2xl bg-canina-blue/10 border border-canina-blue/20 text-canina-blue flex items-center justify-center font-black text-sm font-mono shadow-xs mb-1">
|
||||
CANINA
|
||||
</div>
|
||||
)}
|
||||
<span className="text-[10px] font-black text-medical-gray-800 font-vazir leading-tight">
|
||||
Canina Pharma
|
||||
</span>
|
||||
<span className="text-[8px] font-bold text-canina-blue font-vazir leading-tight mt-1 bg-white border border-medical-gray-200 px-2 py-0.5 rounded-full shadow-2xs">
|
||||
<span className="text-[8px] font-bold text-canina-blue font-vazir leading-tight mt-0.5 bg-white border border-medical-gray-200 px-2 py-0.5 rounded-full shadow-2xs">
|
||||
{fallbackText}
|
||||
</span>
|
||||
</div>
|
||||
|
||||
@ -1,8 +1,9 @@
|
||||
"use client";
|
||||
|
||||
import React from "react";
|
||||
import Image from "next/image";
|
||||
import SafeImage from "../SafeImage";
|
||||
import { Product } from "../../lib/data/products";
|
||||
import { useSettingsStore } from "../../lib/store/settingsStore";
|
||||
import {
|
||||
Sparkles,
|
||||
ChevronLeft,
|
||||
@ -73,6 +74,7 @@ export default function CatalogPageSpread({
|
||||
onJumpToPage,
|
||||
categoriesList = [],
|
||||
}: CatalogPageSpreadProps) {
|
||||
const logoUrl = useSettingsStore(state => state.getText('site_logo', ''));
|
||||
|
||||
// ==========================================
|
||||
// 1. LUXURY FRONT COVER (طراحی لوکس جلد)
|
||||
@ -90,57 +92,79 @@ export default function CatalogPageSpread({
|
||||
<div className="absolute inset-4 border border-white/5 rounded-xl pointer-events-none" />
|
||||
|
||||
{/* Top Header */}
|
||||
<div className="relative z-10 flex items-center justify-between border-b border-white/10 pb-4">
|
||||
<div className="relative z-10 flex items-center justify-between border-b border-white/10 pb-3">
|
||||
<div className="flex items-center gap-3">
|
||||
<div className="w-10 h-10 rounded-xl bg-gradient-to-br from-amber-400 to-amber-500 text-slate-950 flex items-center justify-center font-black text-lg shadow-lg font-mono">
|
||||
CP
|
||||
</div>
|
||||
{logoUrl ? (
|
||||
<Image
|
||||
src={logoUrl}
|
||||
alt="Canina Pharma"
|
||||
width={120}
|
||||
height={40}
|
||||
className="h-9 w-auto object-contain shrink-0"
|
||||
unoptimized={typeof logoUrl === 'string' && (logoUrl.startsWith('blob:') || logoUrl.startsWith('data:'))}
|
||||
/>
|
||||
) : (
|
||||
<div className="w-9 h-9 rounded-xl bg-gradient-to-br from-amber-400 to-amber-500 text-slate-950 flex items-center justify-center font-black text-base shadow-lg font-mono">
|
||||
CANINA
|
||||
</div>
|
||||
)}
|
||||
<div>
|
||||
<span className="text-lg font-black font-lalezar tracking-wide text-white block">
|
||||
<span className="text-base sm:text-lg font-black font-lalezar tracking-wide text-white block">
|
||||
Canina Pharma Germany
|
||||
</span>
|
||||
<span className="text-[9px] text-amber-300 font-bold uppercase tracking-widest block font-mono">
|
||||
<span className="text-[8px] sm:text-[9px] text-amber-300 font-bold uppercase tracking-widest block font-mono">
|
||||
🇩🇪 100% Made in Germany • Est. 1984
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div className="px-3 py-1 bg-white/10 rounded-full text-[10px] font-bold text-amber-300 border border-amber-400/30 flex items-center gap-1.5">
|
||||
<Award className="w-3 h-3 text-amber-400" />
|
||||
<div className="px-2.5 py-1 bg-white/10 rounded-full text-[9px] sm:text-[10px] font-bold text-amber-300 border border-amber-400/30 flex items-center gap-1.5 whitespace-nowrap">
|
||||
<Award className="w-3 h-3 text-amber-400 shrink-0" />
|
||||
<span>نسخه رسمی ۲۰۲۶</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{/* Center Hero Title & Visual */}
|
||||
<div className="relative z-10 my-auto text-center space-y-4 py-2">
|
||||
<div className="relative z-10 my-auto text-center space-y-3 py-1">
|
||||
|
||||
<div className="inline-flex items-center gap-2 px-3 py-1 rounded-full bg-amber-400/10 border border-amber-400/30 text-amber-300 text-[10px] font-black">
|
||||
<div className="inline-flex items-center gap-2 px-3 py-1 rounded-full bg-amber-400/10 border border-amber-400/30 text-amber-300 text-[9px] sm:text-[10px] font-black whitespace-nowrap">
|
||||
<Sparkles className="w-3.5 h-3.5" />
|
||||
<span>OFFICIAL VETERINARY & CLINICAL CATALOG</span>
|
||||
</div>
|
||||
|
||||
<div className="space-y-2">
|
||||
<h1 className="text-2xl sm:text-3xl md:text-4xl font-black font-lalezar leading-tight text-transparent bg-clip-text bg-gradient-to-r from-amber-100 via-white to-amber-300">
|
||||
<div className="space-y-1.5">
|
||||
<h1 className="text-xl sm:text-2xl md:text-3xl font-black font-lalezar leading-tight text-transparent bg-clip-text bg-gradient-to-r from-amber-100 via-white to-amber-300">
|
||||
کاتالوگ تخصصی و راهنمای بالینی مکملهای دارویی کنینا
|
||||
</h1>
|
||||
<p className="text-[11px] md:text-xs text-slate-300 font-medium max-w-md mx-auto leading-relaxed">
|
||||
<p className="text-[10px] sm:text-[11px] text-slate-300 font-medium max-w-md mx-auto leading-relaxed">
|
||||
مرجع رسمی مکملهای درمانی حیوانات خانگی با استانداردهای داروسازی آلمان (GMP) و تاییدیههای ارتوپدی و پوست
|
||||
</p>
|
||||
</div>
|
||||
|
||||
{/* Hero Render Frame: Brand Identity */}
|
||||
<div className="pt-2 flex justify-center">
|
||||
<div className="w-40 h-40 md:w-48 md:h-48 rounded-2xl bg-gradient-to-b from-white/10 to-white/5 border border-white/15 backdrop-blur-md p-4 flex flex-col items-center justify-center shadow-2xl relative">
|
||||
<div className="w-16 h-16 rounded-2xl bg-gradient-to-br from-amber-400 to-amber-500 text-slate-950 flex items-center justify-center font-black text-3xl font-mono shadow-xl mb-2">
|
||||
CP
|
||||
</div>
|
||||
<span className="text-xl font-black font-lalezar text-white tracking-wide">
|
||||
{/* Hero Render Frame: Brand Identity with dynamic logo */}
|
||||
<div className="pt-1 flex justify-center">
|
||||
<div className="w-36 h-36 md:w-44 md:h-44 rounded-2xl bg-gradient-to-b from-white/10 to-white/5 border border-white/15 backdrop-blur-md p-4 flex flex-col items-center justify-center shadow-2xl relative">
|
||||
{logoUrl ? (
|
||||
<Image
|
||||
src={logoUrl}
|
||||
alt="Canina Pharma"
|
||||
width={140}
|
||||
height={140}
|
||||
className="max-h-16 w-auto object-contain mb-2 drop-shadow-xl"
|
||||
unoptimized={typeof logoUrl === 'string' && (logoUrl.startsWith('blob:') || logoUrl.startsWith('data:'))}
|
||||
/>
|
||||
) : (
|
||||
<div className="w-14 h-14 rounded-2xl bg-gradient-to-br from-amber-400 to-amber-500 text-slate-950 flex items-center justify-center font-black text-2xl font-mono shadow-xl mb-2">
|
||||
CANINA
|
||||
</div>
|
||||
)}
|
||||
<span className="text-base sm:text-lg font-black font-lalezar text-white tracking-wide">
|
||||
Canina Pharma
|
||||
</span>
|
||||
<span className="text-[9px] text-amber-300 font-bold uppercase tracking-widest font-mono mt-0.5">
|
||||
<span className="text-[8px] sm:text-[9px] text-amber-300 font-bold uppercase tracking-widest font-mono mt-0.5">
|
||||
Germany • Est. 1984
|
||||
</span>
|
||||
<div className="absolute -bottom-2.5 bg-gradient-to-r from-amber-400 to-amber-500 text-slate-950 font-black text-[9px] px-3 py-0.5 rounded-full shadow-md">
|
||||
<div className="absolute -bottom-2.5 bg-gradient-to-r from-amber-400 to-amber-500 text-slate-950 font-black text-[8px] sm:text-[9px] px-3 py-0.5 rounded-full shadow-md whitespace-nowrap">
|
||||
Pharma Grade Certified
|
||||
</div>
|
||||
</div>
|
||||
@ -332,64 +356,73 @@ export default function CatalogPageSpread({
|
||||
const themeColor = categoryMeta?.color || "#0284C7";
|
||||
|
||||
return (
|
||||
<div className="w-full h-full bg-white text-slate-800 p-4 sm:p-5 md:p-6 flex flex-col justify-between select-none box-border overflow-hidden" dir="rtl">
|
||||
<div className="w-full h-full bg-gradient-to-b from-slate-50 via-white to-slate-50 text-slate-800 p-4 sm:p-5 md:p-6 flex flex-col justify-between select-none box-border overflow-hidden relative" dir="rtl">
|
||||
{/* Decorative luxury gradient tint border on top edge */}
|
||||
<div
|
||||
className="absolute top-0 right-0 left-0 h-1.5 opacity-80"
|
||||
style={{ backgroundColor: themeColor }}
|
||||
/>
|
||||
|
||||
{/* 1. Header Bar: Category, Species, Form, ArtNo */}
|
||||
<div className="border-b border-slate-100 pb-2.5 flex items-center justify-between gap-2 shrink-0">
|
||||
<div className="border-b border-slate-200/80 pb-2 flex items-center justify-between gap-2 shrink-0 pt-0.5">
|
||||
|
||||
{/* Category Pill */}
|
||||
<div className="flex items-center gap-1.5">
|
||||
<div className="flex items-center gap-1.5 min-w-0">
|
||||
<span
|
||||
className="w-2.5 h-2.5 rounded-full shrink-0"
|
||||
className="w-2.5 h-2.5 rounded-full shrink-0 shadow-2xs"
|
||||
style={{ backgroundColor: themeColor }}
|
||||
/>
|
||||
<span className="text-[10px] font-black uppercase tracking-wider text-slate-700 font-vazir">
|
||||
<span className="text-[10px] sm:text-[11px] font-black uppercase tracking-wider text-slate-800 font-vazir truncate whitespace-nowrap">
|
||||
{product.category}
|
||||
</span>
|
||||
</div>
|
||||
|
||||
{/* Product Badges */}
|
||||
<div className="flex items-center gap-1.5 text-[9px] font-bold">
|
||||
<span className="bg-slate-100 text-slate-700 px-2 py-0.5 rounded-md flex items-center gap-1 border border-slate-200/60">
|
||||
<SpeciesIcon className="w-3 h-3 text-slate-500" />
|
||||
<span>{speciesBadge.label}</span>
|
||||
{/* Product Badges (Strictly whitespace-nowrap) */}
|
||||
<div className="flex items-center gap-1 sm:gap-1.5 text-[9px] font-bold shrink-0">
|
||||
<span className="bg-white text-slate-700 px-2 py-0.5 rounded-md flex items-center gap-1 border border-slate-200 shadow-3xs whitespace-nowrap">
|
||||
<SpeciesIcon className="w-3 h-3 text-slate-500 shrink-0" />
|
||||
<span className="whitespace-nowrap">{speciesBadge.label}</span>
|
||||
</span>
|
||||
<span className="bg-slate-100 text-slate-700 px-2 py-0.5 rounded-md flex items-center gap-1 border border-slate-200/60">
|
||||
<FormIcon className="w-3 h-3 text-slate-500" />
|
||||
<span>{formBadge.label}</span>
|
||||
<span className="bg-white text-slate-700 px-2 py-0.5 rounded-md flex items-center gap-1 border border-slate-200 shadow-3xs whitespace-nowrap">
|
||||
<FormIcon className="w-3 h-3 text-slate-500 shrink-0" />
|
||||
<span className="whitespace-nowrap">{formBadge.label}</span>
|
||||
</span>
|
||||
<span className="bg-blue-50 text-canina-blue font-mono px-2 py-0.5 rounded-md border border-blue-100">
|
||||
<span className="bg-blue-50/90 text-canina-blue font-mono px-2 py-0.5 rounded-md border border-blue-100/90 whitespace-nowrap font-bold">
|
||||
Art-Nr: {product.artNo}
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{/* 2. Main Body Content (Strictly fitted with flex-1 & min-h-0) */}
|
||||
<div className="flex-1 min-h-0 flex flex-col justify-between py-2 space-y-2">
|
||||
{/* 2. Main Body Content (Luxury grid fitted strictly without overflow) */}
|
||||
<div className="flex-1 min-h-0 flex flex-col justify-between py-1.5 space-y-1.5">
|
||||
|
||||
{/* Top Product Hero Showcase (Image + Titles + Special Badge) */}
|
||||
<div className="flex items-center gap-3 bg-gradient-to-l from-slate-50 via-white to-slate-50 border border-slate-200/80 rounded-2xl p-2.5 shrink-0">
|
||||
<div className="flex items-center gap-3 bg-white border border-slate-200/90 rounded-2xl p-2.5 shrink-0 shadow-2xs relative overflow-hidden">
|
||||
<div
|
||||
className="absolute -top-8 -right-8 w-24 h-24 rounded-full opacity-10 blur-xl pointer-events-none"
|
||||
style={{ backgroundColor: themeColor }}
|
||||
/>
|
||||
|
||||
{/* Studio Image Box */}
|
||||
<div className="w-24 h-24 sm:w-28 sm:h-28 bg-white rounded-xl border border-slate-100 p-2 flex items-center justify-center shrink-0 relative shadow-2xs">
|
||||
<div className="w-20 h-20 sm:w-24 sm:h-24 bg-slate-50/80 rounded-xl border border-slate-200/70 p-1.5 flex items-center justify-center shrink-0 relative shadow-inner">
|
||||
<SafeImage
|
||||
src={product.image}
|
||||
alt={product.name}
|
||||
className="w-full h-full"
|
||||
imgClassName="object-contain max-h-20 sm:max-h-24 filter drop-shadow-md"
|
||||
imgClassName="object-contain max-h-16 sm:max-h-20 filter drop-shadow-md"
|
||||
/>
|
||||
{product.unit && (
|
||||
<span className="absolute bottom-1 right-1 bg-slate-900/90 text-white font-mono text-[8px] font-bold px-1.5 py-0.5 rounded">
|
||||
<span className="absolute bottom-1 right-1 bg-slate-900/90 text-white font-mono text-[7px] sm:text-[8px] font-bold px-1.5 py-0.2 rounded shadow-2xs whitespace-nowrap">
|
||||
{product.unit}
|
||||
</span>
|
||||
)}
|
||||
</div>
|
||||
|
||||
{/* Title & Scientific Tagline */}
|
||||
<div className="min-w-0 space-y-1">
|
||||
<div className="min-w-0 flex-1 space-y-0.5">
|
||||
{product.specialBadge && (
|
||||
<span
|
||||
className="text-[9px] font-black px-2 py-0.5 rounded-full text-white inline-block shadow-2xs"
|
||||
className="text-[8px] font-black px-2 py-0.5 rounded-full text-white inline-block shadow-2xs whitespace-nowrap mb-0.5"
|
||||
style={{ backgroundColor: themeColor }}
|
||||
>
|
||||
★ {product.specialBadge}
|
||||
@ -399,11 +432,11 @@ export default function CatalogPageSpread({
|
||||
{product.name}
|
||||
</h2>
|
||||
{product.scientificTagline && (
|
||||
<p className="text-[10px] text-slate-600 font-bold italic line-clamp-1">
|
||||
<p className="text-[9px] sm:text-[10px] text-slate-600 font-bold italic truncate">
|
||||
{product.scientificTagline}
|
||||
</p>
|
||||
)}
|
||||
<p className="text-[10px] text-slate-500 font-medium line-clamp-2 leading-relaxed">
|
||||
<p className="text-[9px] text-slate-500 font-medium line-clamp-2 leading-relaxed text-justify">
|
||||
{product.shortDescription || product.description}
|
||||
</p>
|
||||
</div>
|
||||
@ -412,14 +445,14 @@ export default function CatalogPageSpread({
|
||||
{/* Clinical Indications & Symptoms */}
|
||||
{product.symptoms && product.symptoms.length > 0 && (
|
||||
<div className="space-y-1 shrink-0">
|
||||
<span className="text-[9px] font-black text-slate-400 uppercase tracking-widest block">
|
||||
<span className="text-[8px] font-black text-slate-400 uppercase tracking-widest block whitespace-nowrap">
|
||||
موارد مصرف و نشانههای بالینی:
|
||||
</span>
|
||||
<div className="flex flex-wrap gap-1">
|
||||
{product.symptoms.slice(0, 4).map((symptom, i) => (
|
||||
<span
|
||||
key={i}
|
||||
className="bg-red-50/70 text-red-800 border border-red-200/60 rounded-md px-2 py-0.5 text-[9px] font-bold"
|
||||
className="bg-red-50 text-red-900 border border-red-200/80 rounded-md px-1.5 py-0.5 text-[8.5px] font-bold whitespace-nowrap shadow-3xs"
|
||||
>
|
||||
• {symptom}
|
||||
</span>
|
||||
@ -430,16 +463,16 @@ export default function CatalogPageSpread({
|
||||
|
||||
{/* Active Ingredients & Composition Table */}
|
||||
{product.main_ingredients && product.main_ingredients.length > 0 && (
|
||||
<div className="bg-slate-50 border border-slate-200/80 rounded-xl p-2 space-y-1 shrink-0">
|
||||
<div className="flex items-center gap-1 text-[9px] font-black text-canina-blue uppercase">
|
||||
<Layers className="w-3 h-3" />
|
||||
<div className="bg-slate-50/90 border border-slate-200/80 rounded-xl p-2 space-y-1 shrink-0">
|
||||
<div className="flex items-center gap-1 text-[8.5px] font-black text-canina-blue uppercase whitespace-nowrap">
|
||||
<Layers className="w-3 h-3 shrink-0" />
|
||||
<span>ترکیبات موثره و فرمولاسیون دارویی:</span>
|
||||
</div>
|
||||
<div className="flex flex-wrap gap-1">
|
||||
{product.main_ingredients.slice(0, 5).map((ing, idx) => (
|
||||
{product.main_ingredients.slice(0, 4).map((ing, idx) => (
|
||||
<span
|
||||
key={idx}
|
||||
className="bg-white text-slate-800 border border-slate-200 rounded px-1.5 py-0.5 text-[9px] font-bold shadow-3xs"
|
||||
className="bg-white text-slate-800 border border-slate-200 rounded px-1.5 py-0.5 text-[8.5px] font-bold shadow-3xs whitespace-nowrap"
|
||||
>
|
||||
{ing}
|
||||
</span>
|
||||
@ -450,12 +483,12 @@ export default function CatalogPageSpread({
|
||||
|
||||
{/* Clinical Dosage Protocol */}
|
||||
{product.dosage_logic && (
|
||||
<div className="bg-amber-50/70 border border-amber-200/70 rounded-xl p-2 space-y-0.5 shrink-0">
|
||||
<div className="flex items-center gap-1 text-amber-900 font-black text-[9px]">
|
||||
<ShieldCheck className="w-3 h-3 text-amber-600" />
|
||||
<div className="bg-amber-50/80 border border-amber-200/80 rounded-xl p-2 space-y-0.5 shrink-0">
|
||||
<div className="flex items-center gap-1 text-amber-900 font-black text-[8.5px] whitespace-nowrap">
|
||||
<ShieldCheck className="w-3 h-3 text-amber-600 shrink-0" />
|
||||
<span>پروتکل بالینی تجویز و دوز مصرف:</span>
|
||||
</div>
|
||||
<p className="text-[9px] text-amber-950 font-bold leading-relaxed line-clamp-2">
|
||||
<p className="text-[8.5px] text-amber-950 font-bold leading-relaxed line-clamp-2">
|
||||
{product.dosage_logic}
|
||||
</p>
|
||||
</div>
|
||||
@ -463,20 +496,16 @@ export default function CatalogPageSpread({
|
||||
|
||||
{/* Specialist Endorsement */}
|
||||
{product.specialist && (
|
||||
<div className="bg-slate-50/80 border border-slate-200/60 rounded-xl p-2 flex items-center gap-2.5 shrink-0">
|
||||
<SafeImage
|
||||
src={product.specialist.image}
|
||||
alt={product.specialist.name}
|
||||
className="w-8 h-8 rounded-full border border-white shadow-xs shrink-0"
|
||||
imgClassName="object-cover"
|
||||
/>
|
||||
<div className="min-w-0">
|
||||
<div className="flex items-center gap-1">
|
||||
<Stethoscope className="w-3 h-3 text-canina-blue" />
|
||||
<span className="text-[9px] font-black text-slate-900 truncate">{product.specialist.name}</span>
|
||||
<span className="text-[8px] text-slate-500 truncate font-medium">({product.specialist.title})</span>
|
||||
<div className="bg-white border border-slate-200/80 rounded-xl p-2 flex items-center gap-2 shrink-0 shadow-3xs">
|
||||
<div className="w-7 h-7 rounded-full bg-canina-blue/10 border border-canina-blue/20 text-canina-blue flex items-center justify-center font-black text-xs font-mono shadow-3xs shrink-0">
|
||||
<Stethoscope className="w-3.5 h-3.5" />
|
||||
</div>
|
||||
<div className="min-w-0 flex-1">
|
||||
<div className="flex items-center gap-1 truncate">
|
||||
<span className="text-[8.5px] font-black text-slate-900 truncate">{product.specialist.name}</span>
|
||||
<span className="text-[7.5px] text-slate-500 truncate font-medium">({product.specialist.title})</span>
|
||||
</div>
|
||||
<p className="text-[8px] text-slate-600 italic truncate mt-0.5">
|
||||
<p className="text-[8px] text-slate-600 italic truncate mt-0.2">
|
||||
«{product.specialist.message}»
|
||||
</p>
|
||||
</div>
|
||||
@ -486,12 +515,12 @@ export default function CatalogPageSpread({
|
||||
</div>
|
||||
|
||||
{/* 3. Page Footer */}
|
||||
<div className="border-t border-slate-100 pt-2 flex items-center justify-between text-[9px] text-slate-400 font-bold shrink-0">
|
||||
<div className="flex items-center gap-1.5">
|
||||
<CheckCircle2 className="w-3 h-3 text-emerald-600" />
|
||||
<span>گرید دارویی GMP آلمان</span>
|
||||
<div className="border-t border-slate-200/80 pt-1.5 flex items-center justify-between text-[8.5px] text-slate-400 font-bold shrink-0">
|
||||
<div className="flex items-center gap-1.5 whitespace-nowrap">
|
||||
<Award className="w-3 h-3 text-amber-500 shrink-0" />
|
||||
<span>Canina Pharma Germany • استانداردهای بالینی GMP</span>
|
||||
</div>
|
||||
<span className="font-mono">
|
||||
<span className="font-mono text-slate-600 bg-slate-100 px-2 py-0.2 rounded-md whitespace-nowrap font-bold">
|
||||
صفحه {pageNumber < 10 ? `۰${pageNumber}` : pageNumber} از {totalPages}
|
||||
</span>
|
||||
</div>
|
||||
|
||||
@ -1,8 +1,10 @@
|
||||
"use client";
|
||||
|
||||
import React, { useState, useEffect, useRef, useMemo } from "react";
|
||||
import Image from "next/image";
|
||||
import CatalogPageSpread, { CategoryMeta } from "./CatalogPageSpread";
|
||||
import { Product } from "../../lib/data/products";
|
||||
import { useSettingsStore } from "../../lib/store/settingsStore";
|
||||
import {
|
||||
ChevronRight,
|
||||
ChevronLeft,
|
||||
@ -518,9 +520,20 @@ export default function FlipbookCatalog({ products }: FlipbookCatalogProps) {
|
||||
<span>EST. 1984</span>
|
||||
</div>
|
||||
<div className="text-center space-y-3 max-w-xs mx-auto">
|
||||
<div className="w-12 h-12 mx-auto rounded-2xl bg-amber-400/10 border border-amber-400/30 text-amber-400 flex items-center justify-center font-black text-lg font-mono shadow-inner">
|
||||
CP
|
||||
</div>
|
||||
{useSettingsStore.getState().getText('site_logo', '') ? (
|
||||
<Image
|
||||
src={useSettingsStore.getState().getText('site_logo', '')}
|
||||
alt="Canina Logo"
|
||||
width={80}
|
||||
height={80}
|
||||
className="w-14 h-14 mx-auto object-contain drop-shadow-md"
|
||||
unoptimized={useSettingsStore.getState().getText('site_logo', '').startsWith('blob:') || useSettingsStore.getState().getText('site_logo', '').startsWith('data:')}
|
||||
/>
|
||||
) : (
|
||||
<div className="w-12 h-12 mx-auto rounded-2xl bg-amber-400/10 border border-amber-400/30 text-amber-400 flex items-center justify-center font-black text-sm font-mono shadow-inner">
|
||||
CANINA
|
||||
</div>
|
||||
)}
|
||||
<h3 className="text-base font-black font-lalezar text-white">
|
||||
کاتالوگ تخصصی کنینا آلمان
|
||||
</h3>
|
||||
|
||||
@ -1,9 +1,9 @@
|
||||
{
|
||||
"0": "Roles",
|
||||
"1": "app.module.ts",
|
||||
"2": "SettingsController",
|
||||
"2": "SmsService",
|
||||
"3": "ProductService",
|
||||
"4": "SafeImage.tsx",
|
||||
"4": "ProductPage.tsx",
|
||||
"5": "CmsController",
|
||||
"6": "tickets.controller.ts",
|
||||
"7": "Button.tsx",
|
||||
@ -13,15 +13,15 @@
|
||||
"11": "MediaSelector.tsx",
|
||||
"12": "index.ts",
|
||||
"13": "app-audit-verification.e2e-spec.js",
|
||||
"14": "UserDashboard.tsx",
|
||||
"14": "toPersian",
|
||||
"15": "src/services/api.ts",
|
||||
"16": "DoctorQueryDto",
|
||||
"17": "schema.ts",
|
||||
"18": "JwtAuthGuard",
|
||||
"19": "ProductsService",
|
||||
"19": "RevalidationService",
|
||||
"20": "CreateVideoDto",
|
||||
"21": "ProductPage.tsx",
|
||||
"22": "PetProfile.tsx",
|
||||
"21": "userStore.ts",
|
||||
"22": "useCartStore",
|
||||
"23": "MenuService",
|
||||
"24": "BE-001",
|
||||
"25": "FE-001",
|
||||
@ -34,7 +34,7 @@
|
||||
"32": "adminRoutes.tsx",
|
||||
"33": "WholesaleService",
|
||||
"34": "B2BService",
|
||||
"35": "AuthController",
|
||||
"35": "auth.service.ts",
|
||||
"36": "FaqService",
|
||||
"37": "راهنمای تست سیستم (Software Testing)",
|
||||
"38": "Button",
|
||||
@ -59,15 +59,15 @@
|
||||
"57": "Role & Core Objective",
|
||||
"58": "ContactService",
|
||||
"59": "compilerOptions",
|
||||
"60": "AuthService",
|
||||
"61": "payment.controller.ts",
|
||||
"60": "PaymentService",
|
||||
"61": "payment.service.ts",
|
||||
"62": "ProductDto",
|
||||
"63": "dependencies",
|
||||
"64": "compilerOptions",
|
||||
"65": "app.e2e-spec.js",
|
||||
"66": "AdminQueryDto",
|
||||
"67": "admin.module.ts",
|
||||
"68": "OrdersService",
|
||||
"68": "CheckoutPage.tsx",
|
||||
"69": "Required Review Group Closures",
|
||||
"70": "compilerOptions",
|
||||
"71": "getPageMetadata",
|
||||
@ -87,16 +87,16 @@
|
||||
"85": "HomeClient.tsx",
|
||||
"86": "zibal.service.ts",
|
||||
"87": "dependencies",
|
||||
"88": "MetricsController",
|
||||
"88": "CreateEBankCheckoutDto",
|
||||
"89": "seed-products.ts",
|
||||
"90": "useSettingsStore",
|
||||
"91": "Reconciled Audit Roles & Assignments",
|
||||
"92": "OrdersController",
|
||||
"92": "OrdersService",
|
||||
"93": "@nestjs/schematics",
|
||||
"94": "Phase 3.1 — Human Review Preparation and Master Backlog Critique",
|
||||
"95": "wiki/[slug]/page.tsx",
|
||||
"95": "blog/[slug]/page.tsx",
|
||||
"96": "compilerOptions",
|
||||
"97": "AdminLoginDto",
|
||||
"97": "InitiatePaymentDto",
|
||||
"98": "scripts",
|
||||
"99": "BlogsController",
|
||||
"100": "Deep Audit Summary Report",
|
||||
@ -112,9 +112,9 @@
|
||||
"110": "Operational Rules & Boundaries",
|
||||
"111": "Operational Rules & Boundaries",
|
||||
"112": "Operational Rules & Boundaries",
|
||||
"113": "SmsService",
|
||||
"113": "videos/page.tsx",
|
||||
"114": "AppService",
|
||||
"115": "LoginDto",
|
||||
"115": "@nestjs/swagger",
|
||||
"116": "Vazirmatn Changelog",
|
||||
"117": "Vazirmatn Font فونت وزیرمتن",
|
||||
"118": "Operational Rules & Boundaries",
|
||||
@ -128,7 +128,7 @@
|
||||
"126": "admin-panel/package.json",
|
||||
"127": "Sahel-Font",
|
||||
"128": "AdminController",
|
||||
"129": "bcrypt",
|
||||
"129": "globals",
|
||||
"130": "Sahel-Font",
|
||||
"131": "Role & Core Objective",
|
||||
"132": "orchestrate.py",
|
||||
@ -150,7 +150,7 @@
|
||||
"148": "class-transformer",
|
||||
"149": "SmsSettingsPage.tsx",
|
||||
"150": "Product Requirement Document (PRD)",
|
||||
"151": "auth.service.ts",
|
||||
"151": "@types/react-dom",
|
||||
"152": "lib/services/api.ts",
|
||||
"153": "exclude",
|
||||
"154": "Baseline Command Plan & Reconciled Command History",
|
||||
@ -175,8 +175,6 @@
|
||||
"173": "Phase 3 Audit Traceability Matrix",
|
||||
"174": "rebuild_honest_ledger.js",
|
||||
"175": "validate_evidence_grade.js",
|
||||
"176": "CreateOrderDto",
|
||||
"177": "SmsLogQueryDto",
|
||||
"178": "نقشه جامع پوشش تستهای سرتاسری (E2E Test Coverage Map) — پروژه Canina",
|
||||
"179": "PaginationDto",
|
||||
"180": "API Contract Specification",
|
||||
@ -198,7 +196,6 @@
|
||||
"196": "Select.tsx",
|
||||
"197": "wiki/page.tsx",
|
||||
"198": "@nestjs/core",
|
||||
"199": "RegisterDto",
|
||||
"200": "application/README.md",
|
||||
"201": "deploy.sh",
|
||||
"202": "🔒 Security & Performance Review (09_devops_security)",
|
||||
@ -294,7 +291,6 @@
|
||||
"292": "Production Docker Compose",
|
||||
"293": "Staging Docker Compose",
|
||||
"294": "ZibalService",
|
||||
"295": "eslint-plugin-react-refresh",
|
||||
"296": "eslint-plugin-prettier",
|
||||
"297": "ZibalEBankService",
|
||||
"298": ".initiateOrderPayment",
|
||||
@ -321,6 +317,5 @@
|
||||
"319": "ts-jest",
|
||||
"320": "@types/js-yaml",
|
||||
"321": "@types/supertest",
|
||||
"322": "typescript-eslint",
|
||||
"323": "eslint-config-next"
|
||||
"322": "typescript-eslint"
|
||||
}
|
||||
|
||||
File diff suppressed because one or more lines are too long
@ -7,21 +7,21 @@
|
||||
"5": "CmsController",
|
||||
"6": "tickets.controller.ts",
|
||||
"7": "Button.tsx",
|
||||
"8": "admin.module.ts",
|
||||
"8": "ReportsController",
|
||||
"9": "devDependencies",
|
||||
"10": "CreateReviewDto",
|
||||
"10": "ReviewsService",
|
||||
"11": "MediaSelector.tsx",
|
||||
"12": "index.ts",
|
||||
"13": "app-audit-verification.e2e-spec.js",
|
||||
"14": "CheckoutPage.tsx",
|
||||
"14": "UserDashboard.tsx",
|
||||
"15": "src/services/api.ts",
|
||||
"16": "DoctorQueryDto",
|
||||
"17": "schema.ts",
|
||||
"18": "JwtAuthGuard",
|
||||
"19": "RevalidationService",
|
||||
"19": "ProductsService",
|
||||
"20": "CreateVideoDto",
|
||||
"21": "ProductPage.tsx",
|
||||
"22": "toPersian",
|
||||
"22": "PetProfile.tsx",
|
||||
"23": "MenuService",
|
||||
"24": "BE-001",
|
||||
"25": "FE-001",
|
||||
@ -32,7 +32,7 @@
|
||||
"30": "DEVOPS-001",
|
||||
"31": "DOC-001",
|
||||
"32": "adminRoutes.tsx",
|
||||
"33": "WholesaleApplyDto",
|
||||
"33": "WholesaleService",
|
||||
"34": "B2BService",
|
||||
"35": "AuthController",
|
||||
"36": "FaqService",
|
||||
@ -53,21 +53,21 @@
|
||||
"51": "BlogsController",
|
||||
"52": "PrescriptionsService",
|
||||
"53": "SmartAdvisorService",
|
||||
"54": "UsersController",
|
||||
"54": "CreateReviewDto",
|
||||
"55": "UITexts.tsx",
|
||||
"56": "Orders.tsx",
|
||||
"57": "Role & Core Objective",
|
||||
"58": "ContactService",
|
||||
"59": "compilerOptions",
|
||||
"60": "users.controller.ts",
|
||||
"61": "payment.service.ts",
|
||||
"60": "AuthService",
|
||||
"61": "payment.controller.ts",
|
||||
"62": "ProductDto",
|
||||
"63": "dependencies",
|
||||
"64": "compilerOptions",
|
||||
"65": "app.e2e-spec.js",
|
||||
"66": "AdminQueryDto",
|
||||
"67": "PetsController",
|
||||
"68": "PaymentService",
|
||||
"67": "admin.module.ts",
|
||||
"68": "OrdersService",
|
||||
"69": "Required Review Group Closures",
|
||||
"70": "compilerOptions",
|
||||
"71": "getPageMetadata",
|
||||
@ -84,19 +84,19 @@
|
||||
"82": "scripts",
|
||||
"83": "dependencies",
|
||||
"84": "Role & Core Objective",
|
||||
"85": "ArchivePage.tsx",
|
||||
"85": "HomeClient.tsx",
|
||||
"86": "zibal.service.ts",
|
||||
"87": "dependencies",
|
||||
"88": "NetworkBanner.tsx",
|
||||
"88": "MetricsController",
|
||||
"89": "seed-products.ts",
|
||||
"90": "useSettingsStore",
|
||||
"91": "Reconciled Audit Roles & Assignments",
|
||||
"92": "OrdersService",
|
||||
"92": "OrdersController",
|
||||
"93": "@nestjs/schematics",
|
||||
"94": "Phase 3.1 — Human Review Preparation and Master Backlog Critique",
|
||||
"95": "blog/[slug]/page.tsx",
|
||||
"95": "wiki/[slug]/page.tsx",
|
||||
"96": "compilerOptions",
|
||||
"97": "SettingsService",
|
||||
"97": "AdminLoginDto",
|
||||
"98": "scripts",
|
||||
"99": "BlogsController",
|
||||
"100": "Deep Audit Summary Report",
|
||||
@ -106,7 +106,7 @@
|
||||
"104": "Coupons.tsx",
|
||||
"105": "Operational Rules & Boundaries",
|
||||
"106": "Media.tsx",
|
||||
"107": "WikiController",
|
||||
"107": "WholesaleApplyDto",
|
||||
"108": "PrismaService",
|
||||
"109": "1. Summary of Integrity Repairs Performed",
|
||||
"110": "Operational Rules & Boundaries",
|
||||
@ -114,7 +114,7 @@
|
||||
"112": "Operational Rules & Boundaries",
|
||||
"113": "SmsService",
|
||||
"114": "AppService",
|
||||
"115": "AuthService",
|
||||
"115": "LoginDto",
|
||||
"116": "Vazirmatn Changelog",
|
||||
"117": "Vazirmatn Font فونت وزیرمتن",
|
||||
"118": "Operational Rules & Boundaries",
|
||||
@ -122,13 +122,13 @@
|
||||
"120": "compilerOptions",
|
||||
"121": "backend/README.md",
|
||||
"122": "AdminService",
|
||||
"123": "CreateEBankCheckoutDto",
|
||||
"123": "app/page.tsx",
|
||||
"124": "Repository Map",
|
||||
"125": "validate_integrity.js",
|
||||
"126": "admin-panel/package.json",
|
||||
"127": "Sahel-Font",
|
||||
"128": "AdminController",
|
||||
"129": "InitiatePaymentDto",
|
||||
"129": "bcrypt",
|
||||
"130": "Sahel-Font",
|
||||
"131": "Role & Core Objective",
|
||||
"132": "orchestrate.py",
|
||||
@ -146,18 +146,18 @@
|
||||
"144": "@testing-library/react",
|
||||
"145": "admin.service.ts",
|
||||
"146": "System Discovery",
|
||||
"147": "UserDashboard.tsx",
|
||||
"148": "wiki/[slug]/page.tsx",
|
||||
"147": "components/Skeleton.tsx",
|
||||
"148": "class-transformer",
|
||||
"149": "SmsSettingsPage.tsx",
|
||||
"150": "Product Requirement Document (PRD)",
|
||||
"151": "auth.service.ts",
|
||||
"152": "cartStore.ts",
|
||||
"152": "lib/services/api.ts",
|
||||
"153": "exclude",
|
||||
"154": "Baseline Command Plan & Reconciled Command History",
|
||||
"155": "seo-backfill.ts",
|
||||
"156": "manual-test-scenarios.md",
|
||||
"157": "ErrorPages.tsx",
|
||||
"158": "@types/react-dom",
|
||||
"158": "helmet",
|
||||
"159": "with-vpn.sh",
|
||||
"160": "Architecture Specification",
|
||||
"161": "Project Health Audit Report",
|
||||
@ -184,7 +184,7 @@
|
||||
"182": "🎨 Frontend & Admin Panel Technical Review (06_dev_frontend)",
|
||||
"183": "🚀 SEO & Content Strategy Review (12_seo_content)",
|
||||
"184": "RedisService",
|
||||
"185": "trust-seals/page.tsx",
|
||||
"185": "js-yaml",
|
||||
"186": "seed-ui-texts.ts",
|
||||
"187": "seed-wiki.ts",
|
||||
"188": "update-blog.dto.ts",
|
||||
@ -197,8 +197,8 @@
|
||||
"195": "React + TypeScript + Vite",
|
||||
"196": "Select.tsx",
|
||||
"197": "wiki/page.tsx",
|
||||
"198": "catalog/page.tsx",
|
||||
"199": "auth.controller.ts",
|
||||
"198": "@nestjs/core",
|
||||
"199": "RegisterDto",
|
||||
"200": "application/README.md",
|
||||
"201": "deploy.sh",
|
||||
"202": "🔒 Security & Performance Review (09_devops_security)",
|
||||
@ -222,7 +222,7 @@
|
||||
"220": "Input.tsx",
|
||||
"221": "Textarea.tsx",
|
||||
"222": "admin-panel/tsconfig.json",
|
||||
"223": "@types/node",
|
||||
"223": "@nestjs/jwt",
|
||||
"224": "jest",
|
||||
"225": "next.config.ts",
|
||||
"226": "Shabnam Font README",
|
||||
@ -230,9 +230,13 @@
|
||||
"228": "rules/graphify.md",
|
||||
"229": ".agents/workflows/graphify.md",
|
||||
"230": "instructions.md",
|
||||
"231": "typescript",
|
||||
"231": "@nestjs/throttler",
|
||||
"232": "@eslint/js",
|
||||
"233": "tailwindcss",
|
||||
"234": "passport",
|
||||
"235": "reflect-metadata",
|
||||
"236": "swagger-ui-express",
|
||||
"237": "@eslint/eslintrc",
|
||||
"238": "prisma",
|
||||
"239": "source-map-support",
|
||||
"240": "supertest",
|
||||
@ -291,6 +295,7 @@
|
||||
"293": "Staging Docker Compose",
|
||||
"294": "ZibalService",
|
||||
"295": "eslint-plugin-react-refresh",
|
||||
"296": "eslint-plugin-prettier",
|
||||
"297": "ZibalEBankService",
|
||||
"298": ".initiateOrderPayment",
|
||||
"299": "@tailwindcss/postcss",
|
||||
@ -300,13 +305,22 @@
|
||||
"303": "@types/express",
|
||||
"304": "@types/jest",
|
||||
"305": "@types/react",
|
||||
"306": "globals",
|
||||
"307": "@nestjs/cli",
|
||||
"308": "vitest",
|
||||
"309": "axios",
|
||||
"310": "tailwindcss",
|
||||
"311": "@types/multer",
|
||||
"312": "@types/passport-jwt",
|
||||
"313": "Modal.tsx",
|
||||
"314": "@nestjs/testing",
|
||||
"315": "typescript",
|
||||
"316": "prettier",
|
||||
"317": "revalidate/route.ts",
|
||||
"318": "MaskableField.tsx"
|
||||
"318": "MaskableField.tsx",
|
||||
"319": "ts-jest",
|
||||
"320": "@types/js-yaml",
|
||||
"321": "@types/supertest",
|
||||
"322": "typescript-eslint",
|
||||
"323": "eslint-config-next"
|
||||
}
|
||||
|
||||
@ -1,16 +1,16 @@
|
||||
# Graph Report - canina (2026-08-26)
|
||||
|
||||
## Corpus Check
|
||||
- 586 files · ~1,330,915 words
|
||||
- 586 files · ~1,330,935 words
|
||||
- Verdict: corpus is large enough that graph structure adds value.
|
||||
|
||||
## Summary
|
||||
- 4104 nodes · 7379 edges · 310 communities (210 shown, 100 thin omitted)
|
||||
- 4104 nodes · 7380 edges · 324 communities (210 shown, 114 thin omitted)
|
||||
- Extraction: 96% EXTRACTED · 4% INFERRED · 0% AMBIGUOUS · INFERRED: 281 edges (avg confidence: 0.79)
|
||||
- Token cost: 0 input · 0 output
|
||||
|
||||
## Graph Freshness
|
||||
- Built from commit: `0b52f9e9`
|
||||
- Built from commit: `9daaa226`
|
||||
- Run `git rev-parse HEAD` and compare to check if the graph is stale.
|
||||
- Run `graphify update .` after code changes (no API cost).
|
||||
|
||||
@ -23,21 +23,21 @@
|
||||
- CmsController
|
||||
- tickets.controller.ts
|
||||
- Button.tsx
|
||||
- admin.module.ts
|
||||
- ReportsController
|
||||
- devDependencies
|
||||
- CreateReviewDto
|
||||
- ReviewsService
|
||||
- MediaSelector.tsx
|
||||
- index.ts
|
||||
- app-audit-verification.e2e-spec.js
|
||||
- CheckoutPage.tsx
|
||||
- UserDashboard.tsx
|
||||
- src/services/api.ts
|
||||
- DoctorQueryDto
|
||||
- schema.ts
|
||||
- JwtAuthGuard
|
||||
- RevalidationService
|
||||
- ProductsService
|
||||
- CreateVideoDto
|
||||
- ProductPage.tsx
|
||||
- toPersian
|
||||
- PetProfile.tsx
|
||||
- MenuService
|
||||
- BE-001
|
||||
- FE-001
|
||||
@ -48,7 +48,7 @@
|
||||
- DEVOPS-001
|
||||
- DOC-001
|
||||
- adminRoutes.tsx
|
||||
- WholesaleApplyDto
|
||||
- WholesaleService
|
||||
- B2BService
|
||||
- AuthController
|
||||
- FaqService
|
||||
@ -69,21 +69,21 @@
|
||||
- BlogsController
|
||||
- PrescriptionsService
|
||||
- SmartAdvisorService
|
||||
- UsersController
|
||||
- CreateReviewDto
|
||||
- UITexts.tsx
|
||||
- Orders.tsx
|
||||
- Role & Core Objective
|
||||
- ContactService
|
||||
- compilerOptions
|
||||
- users.controller.ts
|
||||
- payment.service.ts
|
||||
- AuthService
|
||||
- payment.controller.ts
|
||||
- ProductDto
|
||||
- dependencies
|
||||
- compilerOptions
|
||||
- app.e2e-spec.js
|
||||
- AdminQueryDto
|
||||
- PetsController
|
||||
- PaymentService
|
||||
- admin.module.ts
|
||||
- OrdersService
|
||||
- Required Review Group Closures
|
||||
- compilerOptions
|
||||
- getPageMetadata
|
||||
@ -99,19 +99,19 @@
|
||||
- scripts
|
||||
- dependencies
|
||||
- Role & Core Objective
|
||||
- ArchivePage.tsx
|
||||
- HomeClient.tsx
|
||||
- zibal.service.ts
|
||||
- dependencies
|
||||
- NetworkBanner.tsx
|
||||
- MetricsController
|
||||
- seed-products.ts
|
||||
- useSettingsStore
|
||||
- Reconciled Audit Roles & Assignments
|
||||
- OrdersService
|
||||
- OrdersController
|
||||
- @nestjs/schematics
|
||||
- Phase 3.1 — Human Review Preparation and Master Backlog Critique
|
||||
- blog/[slug]/page.tsx
|
||||
- wiki/[slug]/page.tsx
|
||||
- compilerOptions
|
||||
- SettingsService
|
||||
- AdminLoginDto
|
||||
- scripts
|
||||
- BlogsController
|
||||
- Deep Audit Summary Report
|
||||
@ -121,7 +121,7 @@
|
||||
- Coupons.tsx
|
||||
- Operational Rules & Boundaries
|
||||
- Media.tsx
|
||||
- WikiController
|
||||
- WholesaleApplyDto
|
||||
- PrismaService
|
||||
- 1. Summary of Integrity Repairs Performed
|
||||
- Operational Rules & Boundaries
|
||||
@ -129,7 +129,7 @@
|
||||
- Operational Rules & Boundaries
|
||||
- SmsService
|
||||
- AppService
|
||||
- AuthService
|
||||
- LoginDto
|
||||
- Vazirmatn Changelog
|
||||
- Vazirmatn Font فونت وزیرمتن
|
||||
- Operational Rules & Boundaries
|
||||
@ -137,13 +137,13 @@
|
||||
- compilerOptions
|
||||
- backend/README.md
|
||||
- AdminService
|
||||
- CreateEBankCheckoutDto
|
||||
- app/page.tsx
|
||||
- Repository Map
|
||||
- validate_integrity.js
|
||||
- admin-panel/package.json
|
||||
- Sahel-Font
|
||||
- AdminController
|
||||
- InitiatePaymentDto
|
||||
- bcrypt
|
||||
- Sahel-Font
|
||||
- Role & Core Objective
|
||||
- orchestrate.py
|
||||
@ -161,17 +161,17 @@
|
||||
- @testing-library/react
|
||||
- admin.service.ts
|
||||
- System Discovery
|
||||
- UserDashboard.tsx
|
||||
- wiki/[slug]/page.tsx
|
||||
- components/Skeleton.tsx
|
||||
- class-transformer
|
||||
- SmsSettingsPage.tsx
|
||||
- Product Requirement Document (PRD)
|
||||
- auth.service.ts
|
||||
- cartStore.ts
|
||||
- lib/services/api.ts
|
||||
- exclude
|
||||
- Baseline Command Plan & Reconciled Command History
|
||||
- seo-backfill.ts
|
||||
- ErrorPages.tsx
|
||||
- @types/react-dom
|
||||
- helmet
|
||||
- with-vpn.sh
|
||||
- Architecture Specification
|
||||
- Project Health Audit Report
|
||||
@ -198,7 +198,7 @@
|
||||
- 🎨 Frontend & Admin Panel Technical Review (06_dev_frontend)
|
||||
- 🚀 SEO & Content Strategy Review (12_seo_content)
|
||||
- RedisService
|
||||
- trust-seals/page.tsx
|
||||
- js-yaml
|
||||
- seed-ui-texts.ts
|
||||
- seed-wiki.ts
|
||||
- update-blog.dto.ts
|
||||
@ -211,8 +211,8 @@
|
||||
- React + TypeScript + Vite
|
||||
- Select.tsx
|
||||
- wiki/page.tsx
|
||||
- catalog/page.tsx
|
||||
- auth.controller.ts
|
||||
- @nestjs/core
|
||||
- RegisterDto
|
||||
- application/README.md
|
||||
- deploy.sh
|
||||
- 🔒 Security & Performance Review (09_devops_security)
|
||||
@ -236,7 +236,7 @@
|
||||
- Input.tsx
|
||||
- Textarea.tsx
|
||||
- admin-panel/tsconfig.json
|
||||
- @types/node
|
||||
- @nestjs/jwt
|
||||
- jest
|
||||
- next.config.ts
|
||||
- Shabnam Font README
|
||||
@ -244,9 +244,13 @@
|
||||
- rules/graphify.md
|
||||
- .agents/workflows/graphify.md
|
||||
- instructions.md
|
||||
- typescript
|
||||
- @nestjs/throttler
|
||||
- @eslint/js
|
||||
- tailwindcss
|
||||
- passport
|
||||
- reflect-metadata
|
||||
- swagger-ui-express
|
||||
- @eslint/eslintrc
|
||||
- prisma
|
||||
- source-map-support
|
||||
- supertest
|
||||
@ -290,6 +294,7 @@
|
||||
- Staging Docker Compose
|
||||
- ZibalService
|
||||
- eslint-plugin-react-refresh
|
||||
- eslint-plugin-prettier
|
||||
- ZibalEBankService
|
||||
- .initiateOrderPayment
|
||||
- @tailwindcss/postcss
|
||||
@ -299,18 +304,27 @@
|
||||
- @types/express
|
||||
- @types/jest
|
||||
- @types/react
|
||||
- globals
|
||||
- @nestjs/cli
|
||||
- vitest
|
||||
- @types/multer
|
||||
- @types/passport-jwt
|
||||
- Modal.tsx
|
||||
- @nestjs/testing
|
||||
- typescript
|
||||
- prettier
|
||||
- revalidate/route.ts
|
||||
- MaskableField.tsx
|
||||
- ts-jest
|
||||
- @types/js-yaml
|
||||
- @types/supertest
|
||||
- typescript-eslint
|
||||
- eslint-config-next
|
||||
|
||||
## God Nodes (most connected - your core abstractions)
|
||||
1. `Roles()` - 106 edges
|
||||
2. `PrismaService` - 87 edges
|
||||
3. `useSettingsStore` - 55 edges
|
||||
3. `useSettingsStore` - 56 edges
|
||||
4. `api` - 44 edges
|
||||
5. `SmsService` - 43 edges
|
||||
6. `PaginationDto` - 41 edges
|
||||
@ -336,7 +350,7 @@
|
||||
- 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`
|
||||
|
||||
## Communities (310 total, 100 thin omitted)
|
||||
## Communities (324 total, 114 thin omitted)
|
||||
|
||||
### Community 0 - "Roles"
|
||||
Cohesion: 0.24
|
||||
@ -344,19 +358,19 @@ Nodes (13): Roles(), PaymentController, ApiBearerAuth, ApiOperation, ApiTags, Bo
|
||||
|
||||
### Community 1 - "app.module.ts"
|
||||
Cohesion: 0.07
|
||||
Nodes (36): B2BModule, Module, BannersModule, Module, CmsModule, Module, SmsModule, Global (+28 more)
|
||||
Nodes (37): B2BModule, Module, BannersModule, Module, CmsModule, Module, RevalidationModule, Global (+29 more)
|
||||
|
||||
### Community 2 - "SettingsController"
|
||||
Cohesion: 0.17
|
||||
Nodes (15): SettingsController, ApiBearerAuth, ApiOkResponse, ApiOperation, ApiTags, Body, Controller, Delete (+7 more)
|
||||
Cohesion: 0.10
|
||||
Nodes (18): SmsLogQuery, SettingsController, ApiBearerAuth, ApiOkResponse, ApiOperation, ApiTags, Body, Controller (+10 more)
|
||||
|
||||
### Community 3 - "ProductService"
|
||||
Cohesion: 0.06
|
||||
Nodes (35): dynamic, revalidate, DEFAULT_CATEGORIES, dynamic, revalidate, dynamic, revalidate, BlogCategory (+27 more)
|
||||
Cohesion: 0.07
|
||||
Nodes (30): dynamic, revalidate, DEFAULT_CATEGORIES, dynamic, revalidate, dynamic, revalidate, BlogCategory (+22 more)
|
||||
|
||||
### Community 4 - "SafeImage.tsx"
|
||||
Cohesion: 0.09
|
||||
Nodes (18): OrderDetailsModalProps, PLAYBACK_RATES, PodcastInlinePlayer(), PodcastInlinePlayerProps, PLAYBACK_RATES, PodcastPlayerModal(), PodcastPlayerModalProps, VideoModalPlayer (+10 more)
|
||||
Cohesion: 0.08
|
||||
Nodes (21): BackButton(), BackButtonProps, ProductDetailModalProps, PLAYBACK_RATES, PodcastInlinePlayer(), PodcastInlinePlayerProps, PLAYBACK_RATES, PodcastPlayerModal() (+13 more)
|
||||
|
||||
### Community 5 - "CmsController"
|
||||
Cohesion: 0.09
|
||||
@ -370,17 +384,17 @@ Nodes (29): AdminUpdateTicketDto, CreateTicketDto, ReplyTicketDto, ApiProperty,
|
||||
Cohesion: 0.11
|
||||
Nodes (14): ButtonProps, ButtonSize, ButtonVariant, Spinner(), Doctor, FAQ, ProductReview, Reviews() (+6 more)
|
||||
|
||||
### Community 8 - "admin.module.ts"
|
||||
Cohesion: 0.08
|
||||
Nodes (17): AdminModule, Module, ReportsController, ApiBearerAuth, ApiOperation, ApiQuery, ApiTags, Controller (+9 more)
|
||||
### Community 8 - "ReportsController"
|
||||
Cohesion: 0.14
|
||||
Nodes (11): ReportsController, ApiBearerAuth, ApiOperation, ApiQuery, ApiTags, Controller, Get, Query (+3 more)
|
||||
|
||||
### Community 9 - "devDependencies"
|
||||
Cohesion: 0.08
|
||||
Nodes (25): devDependencies, eslint, @eslint/eslintrc, eslint-plugin-prettier, globals, @nestjs/cli, @nestjs/testing, prettier (+17 more)
|
||||
Cohesion: 0.22
|
||||
Nodes (9): devDependencies, eslint, @types/bcryptjs, @types/node, typescript, eslint, @types/node, typescript (+1 more)
|
||||
|
||||
### Community 10 - "CreateReviewDto"
|
||||
Cohesion: 0.08
|
||||
Nodes (25): CreateReviewDto, ApiProperty, IsInt, IsNotEmpty, IsOptional, IsString, Min, ReviewsController (+17 more)
|
||||
### Community 10 - "ReviewsService"
|
||||
Cohesion: 0.12
|
||||
Nodes (17): ReviewsController, ApiBearerAuth, ApiOperation, ApiTags, Body, Controller, Delete, Get (+9 more)
|
||||
|
||||
### Community 11 - "MediaSelector.tsx"
|
||||
Cohesion: 0.07
|
||||
@ -391,12 +405,12 @@ Cohesion: 0.06
|
||||
Nodes (24): backend, frontend, playwright.config.ts, @playwright/test, tests/**/*.ts, authFile, test, compilerOptions (+16 more)
|
||||
|
||||
### Community 13 - "app-audit-verification.e2e-spec.js"
|
||||
Cohesion: 0.07
|
||||
Nodes (26): EnvironmentVariables, IsNotEmpty, IsOptional, IsString, validateEnv(), CustomHttpExceptionFilter, Catch, PrismaExceptionFilter (+18 more)
|
||||
Cohesion: 0.06
|
||||
Nodes (28): AppModule, Module, EnvironmentVariables, IsNotEmpty, IsOptional, IsString, validateEnv(), CustomHttpExceptionFilter (+20 more)
|
||||
|
||||
### Community 14 - "CheckoutPage.tsx"
|
||||
Cohesion: 0.19
|
||||
Nodes (15): AddressModal(), AddressModalProps, BackButton(), BackButtonProps, HeaderButton(), HeaderButtonProps, SearchableSelect(), SearchableSelectProps (+7 more)
|
||||
### Community 14 - "UserDashboard.tsx"
|
||||
Cohesion: 0.08
|
||||
Nodes (38): B2BPortal, VerifyContent(), AddressModal(), AddressModalProps, AuthModal(), AuthModalProps, extractOtpFromText(), B2BPortal() (+30 more)
|
||||
|
||||
### Community 15 - "src/services/api.ts"
|
||||
Cohesion: 0.08
|
||||
@ -411,28 +425,28 @@ Cohesion: 0.14
|
||||
Nodes (18): B2BPage(), generateMetadata(), ContactPage(), generateMetadata(), generateMetadata(), getInitialVideos(), Videos(), ContactFormClient() (+10 more)
|
||||
|
||||
### Community 18 - "JwtAuthGuard"
|
||||
Cohesion: 0.20
|
||||
Cohesion: 0.19
|
||||
Nodes (7): JwtAuthGuard, Injectable, ROLES_KEY, RequestWithUser, RolesGuard, Injectable, UserReqPayload
|
||||
|
||||
### Community 19 - "RevalidationService"
|
||||
Cohesion: 0.06
|
||||
Nodes (29): RevalidationModule, Global, Module, RevalidationService, Injectable, GetProductsDto, ApiPropertyOptional, IsEnum (+21 more)
|
||||
### Community 19 - "ProductsService"
|
||||
Cohesion: 0.09
|
||||
Nodes (19): GetProductsDto, ApiPropertyOptional, IsEnum, IsOptional, IsString, ProductsController, ApiOperation, ApiTags (+11 more)
|
||||
|
||||
### Community 20 - "CreateVideoDto"
|
||||
Cohesion: 0.07
|
||||
Nodes (31): CreateVideoDto, ApiProperty, ApiPropertyOptional, IsBoolean, IsNotEmpty, IsOptional, IsString, UpdateVideoDto (+23 more)
|
||||
|
||||
### Community 21 - "ProductPage.tsx"
|
||||
Cohesion: 0.17
|
||||
Nodes (12): CalculatorState, ICON_MAP, ProductPage(), ProductReviews, useCalculatorStore, ProductReviews(), ProductReviewsProps, ReviewItem (+4 more)
|
||||
Cohesion: 0.14
|
||||
Nodes (13): revalidate, CalculatorState, ICON_MAP, ProductPage(), ProductReviews, useCalculatorStore, ProductReviews(), ProductReviewsProps (+5 more)
|
||||
|
||||
### Community 22 - "toPersian"
|
||||
Cohesion: 0.10
|
||||
Nodes (37): AuthModal, B2BPortal, CartDrawer, ClientLayout(), LoginModal, VerifyContent(), ArchiveProductCard(), AuthModal() (+29 more)
|
||||
### Community 22 - "PetProfile.tsx"
|
||||
Cohesion: 0.11
|
||||
Nodes (23): ClientLayout(), FeaturedProducts(), ProductCard(), Header(), OrderSuccess(), PrescriptionUploadModal(), PrescriptionUploadModalProps, SearchResultsPage() (+15 more)
|
||||
|
||||
### Community 23 - "MenuService"
|
||||
Cohesion: 0.12
|
||||
Nodes (16): MenuController, ApiBearerAuth, ApiOperation, ApiQuery, ApiTags, Body, Controller, Delete (+8 more)
|
||||
Cohesion: 0.11
|
||||
Nodes (18): MenuController, ApiBearerAuth, ApiOperation, ApiQuery, ApiTags, Body, Controller, Delete (+10 more)
|
||||
|
||||
### Community 24 - "BE-001"
|
||||
Cohesion: 0.06
|
||||
@ -470,9 +484,9 @@ Nodes (31): Acceptance Criteria, Affected Application, Affected Files, Alternati
|
||||
Cohesion: 0.06
|
||||
Nodes (23): App(), Props, RouteErrorBoundary, State, HeroBanner, VetTestimonial, CategoryDist, DashboardData (+15 more)
|
||||
|
||||
### Community 33 - "WholesaleApplyDto"
|
||||
Cohesion: 0.10
|
||||
Nodes (20): ApiProperty, ApiPropertyOptional, IsNotEmpty, IsOptional, IsString, WholesaleApplyDto, ApiBearerAuth, ApiOperation (+12 more)
|
||||
### Community 33 - "WholesaleService"
|
||||
Cohesion: 0.14
|
||||
Nodes (14): ApiBearerAuth, ApiOperation, ApiTags, Body, Controller, Get, Param, Post (+6 more)
|
||||
|
||||
### Community 34 - "B2BService"
|
||||
Cohesion: 0.12
|
||||
@ -531,8 +545,8 @@ Cohesion: 0.13
|
||||
Nodes (14): IngredientsController, ApiBearerAuth, ApiOperation, ApiTags, Body, Controller, Delete, Get (+6 more)
|
||||
|
||||
### Community 48 - "UsersService"
|
||||
Cohesion: 0.10
|
||||
Nodes (12): DEFAULT_JWT_REFRESH_SECRET, DEFAULT_JWT_SECRET, getJwtSecret(), AuthModule, Module, JwtPayload, JwtStrategy, Injectable (+4 more)
|
||||
Cohesion: 0.06
|
||||
Nodes (41): DEFAULT_JWT_REFRESH_SECRET, DEFAULT_JWT_SECRET, getJwtSecret(), AuthModule, Module, JwtPayload, JwtStrategy, Injectable (+33 more)
|
||||
|
||||
### Community 49 - "devDependencies"
|
||||
Cohesion: 0.11
|
||||
@ -540,7 +554,7 @@ Nodes (19): autoprefixer, devDependencies, autoprefixer, eslint, @eslint/js, glo
|
||||
|
||||
### Community 50 - "devDependencies"
|
||||
Cohesion: 0.13
|
||||
Nodes (15): eslint-config-next, devDependencies, eslint, eslint-config-next, jsdom, tailwindcss, @tailwindcss/postcss, @types/node (+7 more)
|
||||
Nodes (15): devDependencies, eslint, jsdom, tailwindcss, @tailwindcss/postcss, @types/node, @types/react-dom, @vitejs/plugin-react (+7 more)
|
||||
|
||||
### Community 51 - "BlogsController"
|
||||
Cohesion: 0.07
|
||||
@ -554,9 +568,9 @@ Nodes (14): PrescriptionsController, ApiBearerAuth, ApiOperation, ApiTags, Body,
|
||||
Cohesion: 0.13
|
||||
Nodes (14): SmartAdvisorController, ApiBearerAuth, ApiOperation, ApiTags, Body, Controller, Delete, Get (+6 more)
|
||||
|
||||
### Community 54 - "UsersController"
|
||||
Cohesion: 0.19
|
||||
Nodes (16): ApiBadRequestResponse, ApiBearerAuth, ApiCreatedResponse, ApiOkResponse, ApiOperation, ApiTags, Body, Controller (+8 more)
|
||||
### Community 54 - "CreateReviewDto"
|
||||
Cohesion: 0.14
|
||||
Nodes (13): CreateReviewDto, ApiProperty, IsInt, IsNotEmpty, IsOptional, IsString, Min, ApiProperty (+5 more)
|
||||
|
||||
### Community 55 - "UITexts.tsx"
|
||||
Cohesion: 0.09
|
||||
@ -578,21 +592,21 @@ Nodes (12): ContactController, Body, Controller, Get, Param, Post, Put, Query (+
|
||||
Cohesion: 0.06
|
||||
Nodes (30): compilerOptions, allowSyntheticDefaultImports, baseUrl, declaration, emitDecoratorMetadata, esModuleInterop, experimentalDecorators, forceConsistentCasingInFileNames (+22 more)
|
||||
|
||||
### Community 60 - "users.controller.ts"
|
||||
Cohesion: 0.14
|
||||
Nodes (13): AddressDto, ApiProperty, ApiPropertyOptional, IsBoolean, IsNotEmpty, IsOptional, IsString, ApiPropertyOptional (+5 more)
|
||||
### Community 60 - "AuthService"
|
||||
Cohesion: 0.21
|
||||
Nodes (3): AuthService, Injectable, normalizeMobile()
|
||||
|
||||
### Community 61 - "payment.service.ts"
|
||||
Cohesion: 0.20
|
||||
Nodes (8): AdminTransactionFilterDto, ApiPropertyOptional, IsIn, IsNumber, IsOptional, IsString, Type, ClientMetadata
|
||||
### Community 61 - "payment.controller.ts"
|
||||
Cohesion: 0.07
|
||||
Nodes (31): AdminTransactionFilterDto, ApiPropertyOptional, IsIn, IsNumber, IsOptional, IsString, Type, CreateEBankCheckoutDto (+23 more)
|
||||
|
||||
### Community 62 - "ProductDto"
|
||||
Cohesion: 0.18
|
||||
Nodes (7): ProductDto, ApiPropertyOptional, IsArray, IsBoolean, IsNumber, IsOptional, IsString
|
||||
|
||||
### Community 63 - "dependencies"
|
||||
Cohesion: 0.05
|
||||
Nodes (43): dependencies, bcrypt, bcryptjs, class-transformer, class-validator, compression, helmet, ioredis (+35 more)
|
||||
Cohesion: 0.09
|
||||
Nodes (23): dependencies, bcryptjs, class-validator, compression, ioredis, @nestjs/common, @nestjs/passport, @nestjs/platform-express (+15 more)
|
||||
|
||||
### Community 64 - "compilerOptions"
|
||||
Cohesion: 0.10
|
||||
@ -606,9 +620,9 @@ Nodes (3): app_module_1, supertest_1, testing_1
|
||||
Cohesion: 0.17
|
||||
Nodes (7): ApiQuery, Get, Query, AdminQueryDto, ApiPropertyOptional, IsOptional, IsString
|
||||
|
||||
### Community 67 - "PetsController"
|
||||
Cohesion: 0.10
|
||||
Nodes (14): PetsController, ApiBearerAuth, ApiOperation, ApiQuery, ApiTags, Controller, Delete, Get (+6 more)
|
||||
### Community 67 - "admin.module.ts"
|
||||
Cohesion: 0.06
|
||||
Nodes (20): AdminModule, Module, PetsController, ApiBearerAuth, ApiOperation, ApiQuery, ApiTags, Controller (+12 more)
|
||||
|
||||
### Community 69 - "Required Review Group Closures"
|
||||
Cohesion: 0.10
|
||||
@ -620,7 +634,7 @@ Nodes (23): compilerOptions, allowImportingTsExtensions, erasableSyntaxOnly, jsx
|
||||
|
||||
### Community 71 - "getPageMetadata"
|
||||
Cohesion: 0.09
|
||||
Nodes (16): generateMetadata(), generateMetadata(), generateMetadata(), generateMetadata(), getHomeData(), Home(), generateMetadata(), generateMetadata() (+8 more)
|
||||
Nodes (15): generateMetadata(), CatalogClient(), generateMetadata(), generateMetadata(), generateMetadata(), generateMetadata(), generateMetadata(), generateMetadata() (+7 more)
|
||||
|
||||
### Community 72 - "Operational Rules & Boundaries"
|
||||
Cohesion: 0.11
|
||||
@ -670,9 +684,9 @@ Nodes (21): dependencies, axios, lucide-react, react, react-dom, react-hot-toast
|
||||
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)
|
||||
|
||||
### Community 85 - "ArchivePage.tsx"
|
||||
Cohesion: 0.15
|
||||
Nodes (13): CATEGORY_MAP, ICON_MAP, BannerPlacement(), BannerPlacementProps, PetType, B2BInquiry, Banner, DosageConfig (+5 more)
|
||||
### Community 85 - "HomeClient.tsx"
|
||||
Cohesion: 0.11
|
||||
Nodes (20): HomeClient(), HomeClientProps, ArchivePage(), ArchiveProductCard(), CATEGORY_MAP, ICON_MAP, BannerPlacement(), BannerPlacementProps (+12 more)
|
||||
|
||||
### Community 86 - "zibal.service.ts"
|
||||
Cohesion: 0.16
|
||||
@ -682,45 +696,49 @@ Nodes (9): GatewayHealthResult, IPaymentGateway, PaymentInquiryResult, PaymentRe
|
||||
Cohesion: 0.12
|
||||
Nodes (17): dependencies, axios, lucide-react, motion, next, react, react-dom, sonner (+9 more)
|
||||
|
||||
### Community 88 - "MetricsController"
|
||||
Cohesion: 0.29
|
||||
Nodes (5): ApiExcludeController, MetricsController, Controller, Get, Res
|
||||
|
||||
### Community 89 - "seed-products.ts"
|
||||
Cohesion: 0.17
|
||||
Nodes (12): prisma, main(), prisma, determineSuitableFor(), findOrCreateCategory(), getProductImageUrl(), main(), parseSize() (+4 more)
|
||||
|
||||
### Community 90 - "useSettingsStore"
|
||||
Cohesion: 0.09
|
||||
Nodes (29): HomeClient(), HomeClientProps, B2BLandingClient(), BlogPost, BlogPreviewSection(), BrandLogo(), BrandLogoProps, ContactInfoItem (+21 more)
|
||||
Cohesion: 0.14
|
||||
Nodes (18): AuthModal, CartDrawer, B2BLandingClient(), BrandLogo(), BrandLogoProps, EnamadBadge(), Footer(), MENU_ICONS (+10 more)
|
||||
|
||||
### Community 91 - "Reconciled Audit Roles & Assignments"
|
||||
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)
|
||||
|
||||
### Community 92 - "OrdersService"
|
||||
Cohesion: 0.10
|
||||
Nodes (18): OrdersController, ApiBadRequestResponse, ApiBearerAuth, ApiCreatedResponse, ApiNotFoundResponse, ApiOkResponse, ApiOperation, ApiTags (+10 more)
|
||||
### Community 92 - "OrdersController"
|
||||
Cohesion: 0.14
|
||||
Nodes (16): OrdersController, ApiBadRequestResponse, ApiBearerAuth, ApiCreatedResponse, ApiNotFoundResponse, ApiOkResponse, ApiOperation, ApiTags (+8 more)
|
||||
|
||||
### Community 94 - "Phase 3.1 — Human Review Preparation and Master Backlog Critique"
|
||||
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)
|
||||
|
||||
### Community 95 - "blog/[slug]/page.tsx"
|
||||
Cohesion: 0.23
|
||||
Nodes (12): BlogPostPage(), generateMetadata(), getBlog(), revalidate, safeIso(), safeLocalDate(), generateMetadata(), revalidate (+4 more)
|
||||
### Community 95 - "wiki/[slug]/page.tsx"
|
||||
Cohesion: 0.20
|
||||
Nodes (16): BlogPostPage(), generateMetadata(), getBlog(), revalidate, safeIso(), safeLocalDate(), generateMetadata(), generateMetadata() (+8 more)
|
||||
|
||||
### Community 96 - "compilerOptions"
|
||||
Cohesion: 0.06
|
||||
Nodes (32): compilerOptions, allowJs, esModuleInterop, incremental, isolatedModules, jsx, lib, module (+24 more)
|
||||
|
||||
### Community 97 - "SettingsService"
|
||||
Cohesion: 0.09
|
||||
Nodes (3): SmsLogQuery, SettingsService, Injectable
|
||||
### Community 97 - "AdminLoginDto"
|
||||
Cohesion: 0.29
|
||||
Nodes (6): AdminLoginDto, ApiProperty, IsEmail, IsNotEmpty, IsString, MinLength
|
||||
|
||||
### Community 98 - "scripts"
|
||||
Cohesion: 0.13
|
||||
Nodes (15): scripts, build, build:nest, docs:generate, lint, seo:backfill, start, start:debug (+7 more)
|
||||
|
||||
### Community 99 - "BlogsController"
|
||||
Cohesion: 0.15
|
||||
Nodes (15): BlogsController, ApiBearerAuth, ApiNotFoundResponse, ApiOkResponse, ApiOperation, ApiTags, Body, Controller (+7 more)
|
||||
Cohesion: 0.08
|
||||
Nodes (19): BlogsController, ApiBearerAuth, ApiNotFoundResponse, ApiOkResponse, ApiOperation, ApiTags, Body, Controller (+11 more)
|
||||
|
||||
### Community 100 - "Deep Audit Summary Report"
|
||||
Cohesion: 0.14
|
||||
@ -750,13 +768,13 @@ Nodes (11): 1. Detect Test Runner from Tech Stack, 2. Execution Output Capture (
|
||||
Cohesion: 0.19
|
||||
Nodes (9): ImagePreviewModal(), ImagePreviewModalProps, getFileType(), Media, MediaManager(), ProductItem, Media, PrescriptionsManager (+1 more)
|
||||
|
||||
### Community 107 - "WikiController"
|
||||
Cohesion: 0.13
|
||||
Nodes (13): ApiNotFoundResponse, ApiOkResponse, ApiOperation, ApiTags, Controller, Get, Param, Query (+5 more)
|
||||
### Community 107 - "WholesaleApplyDto"
|
||||
Cohesion: 0.29
|
||||
Nodes (6): ApiProperty, ApiPropertyOptional, IsNotEmpty, IsOptional, IsString, WholesaleApplyDto
|
||||
|
||||
### Community 108 - "PrismaService"
|
||||
Cohesion: 0.08
|
||||
Nodes (19): CategoryQuery, MeliPayamakPattern, MeliPayamakResponse, SendPatternSmsOptions, SmsConfig, CreateContactSubmissionDto, UpdateContactInfoItemDto, MenuType (+11 more)
|
||||
Cohesion: 0.07
|
||||
Nodes (17): CategoryQuery, RevalidationService, Injectable, MeliPayamakPattern, MeliPayamakResponse, SendPatternSmsOptions, SmsConfig, CreateContactSubmissionDto (+9 more)
|
||||
|
||||
### Community 109 - "1. Summary of Integrity Repairs Performed"
|
||||
Cohesion: 0.17
|
||||
@ -778,9 +796,9 @@ Nodes (10): 1. Pre-Deployment Checklist, 2. Build Verification, 3. Deployment St
|
||||
Cohesion: 0.29
|
||||
Nodes (5): AppController, Controller, Get, AppService, Injectable
|
||||
|
||||
### Community 115 - "AuthService"
|
||||
Cohesion: 0.14
|
||||
Nodes (4): ApiErr, AuthResponse, AuthService, User
|
||||
### Community 115 - "LoginDto"
|
||||
Cohesion: 0.33
|
||||
Nodes (5): LoginDto, ApiProperty, IsNotEmpty, IsString, MinLength
|
||||
|
||||
### Community 116 - "Vazirmatn Changelog"
|
||||
Cohesion: 0.18
|
||||
@ -810,9 +828,9 @@ Nodes (9): Compile and run the project, Deployment, Description, License, Projec
|
||||
Cohesion: 0.16
|
||||
Nodes (4): Delete, Param, AdminService, Injectable
|
||||
|
||||
### Community 123 - "CreateEBankCheckoutDto"
|
||||
Cohesion: 0.22
|
||||
Nodes (8): CreateEBankCheckoutDto, ApiProperty, ApiPropertyOptional, IsNotEmpty, IsNumber, IsOptional, IsString, Min
|
||||
### Community 123 - "app/page.tsx"
|
||||
Cohesion: 0.67
|
||||
Nodes (3): generateMetadata(), getHomeData(), Home()
|
||||
|
||||
### Community 124 - "Repository Map"
|
||||
Cohesion: 0.20
|
||||
@ -834,10 +852,6 @@ Nodes (9): Arch Linux, Contributors, Install, Known problems for variable versio
|
||||
Cohesion: 0.11
|
||||
Nodes (9): AdminController, ApiBearerAuth, ApiOperation, ApiTags, Body, Controller, Post, Put (+1 more)
|
||||
|
||||
### Community 129 - "InitiatePaymentDto"
|
||||
Cohesion: 0.43
|
||||
Nodes (7): InitiatePaymentDto, InitiateWalletTopupDto, ApiProperty, ApiPropertyOptional, IsNotEmpty, IsOptional, IsString
|
||||
|
||||
### Community 130 - "Sahel-Font"
|
||||
Cohesion: 0.20
|
||||
Nodes (9): Arch Linux, Contributors, Install, Known problems for variable version, License, Sahel-Font, To Do (variable), طریقه استفاده از نسخه متغیر variable (+1 more)
|
||||
@ -902,13 +916,9 @@ Nodes (13): CouponInput, CouponTargetInput, PaginationQuery, CreateUserDto, ApiP
|
||||
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
|
||||
|
||||
### Community 147 - "UserDashboard.tsx"
|
||||
Cohesion: 0.10
|
||||
Nodes (17): DeleteConfirmModal(), DeleteConfirmModalProps, OrderDetailsModal(), OrderRowSkeleton(), PetProfileSkeleton(), ProductCardSkeleton(), Skeleton(), SkeletonProps (+9 more)
|
||||
|
||||
### Community 148 - "wiki/[slug]/page.tsx"
|
||||
Cohesion: 0.60
|
||||
Nodes (5): generateMetadata(), getRelatedProducts(), getWikiTerm(), WikiTermPage(), generateMedicalWebPageSchema()
|
||||
### Community 147 - "components/Skeleton.tsx"
|
||||
Cohesion: 0.21
|
||||
Nodes (5): OrderRowSkeleton(), PetProfileSkeleton(), ProductCardSkeleton(), Skeleton(), SkeletonProps
|
||||
|
||||
### Community 149 - "SmsSettingsPage.tsx"
|
||||
Cohesion: 0.29
|
||||
@ -919,12 +929,12 @@ Cohesion: 0.29
|
||||
Nodes (6): 1. Executive Vision, 2. Target Audience, 3. Functional Requirements, 4. Non-Functional Requirements (Performance, Security), 5. Epic / Feature Breakdown, Product Requirement Document (PRD)
|
||||
|
||||
### Community 151 - "auth.service.ts"
|
||||
Cohesion: 0.09
|
||||
Nodes (17): AdminLoginInput, AuthService, LoginInput, RegisterInput, Injectable, SendOtpDto, ApiProperty, IsNotEmpty (+9 more)
|
||||
|
||||
### Community 152 - "cartStore.ts"
|
||||
Cohesion: 0.15
|
||||
Nodes (8): ApiErr, Order, OrderItem, OrderService, CartItem, CartStore, Order, mockProduct
|
||||
Nodes (14): AdminLoginInput, LoginInput, RegisterInput, SendOtpDto, ApiProperty, IsNotEmpty, IsString, Matches (+6 more)
|
||||
|
||||
### Community 152 - "lib/services/api.ts"
|
||||
Cohesion: 0.06
|
||||
Nodes (25): LoginModal, ContactInfoItem, LoginModal(), LoginModalProps, Testimonial, api, ApiErrorPayload, BASE_DOMAIN (+17 more)
|
||||
|
||||
### Community 153 - "exclude"
|
||||
Cohesion: 0.22
|
||||
@ -1020,7 +1030,7 @@ Nodes (5): نقشه جامع پوشش تستهای سرتاسری (E2E Test C
|
||||
|
||||
### Community 179 - "PaginationDto"
|
||||
Cohesion: 0.07
|
||||
Nodes (20): BlogsModule, Module, BlogFilterDto, BlogsService, Injectable, PaginationDto, SortOrder, ApiPropertyOptional (+12 more)
|
||||
Nodes (29): BlogFilterDto, PaginationDto, SortOrder, ApiPropertyOptional, IsEnum, IsInt, IsOptional, IsString (+21 more)
|
||||
|
||||
### Community 180 - "API Contract Specification"
|
||||
Cohesion: 0.50
|
||||
@ -1039,8 +1049,8 @@ Cohesion: 0.50
|
||||
Nodes (3): Overview & Content Foundation, SEO & Content Requirements, 🚀 SEO & Content Strategy Review (12_seo_content)
|
||||
|
||||
### Community 184 - "RedisService"
|
||||
Cohesion: 0.08
|
||||
Nodes (12): ApiExcludeController, AppModule, Module, MetricsController, Controller, Get, Res, RedisModule (+4 more)
|
||||
Cohesion: 0.16
|
||||
Nodes (5): RedisModule, Global, Module, RedisService, Injectable
|
||||
|
||||
### Community 191 - "graphify reference: add a URL and watch a folder"
|
||||
Cohesion: 0.50
|
||||
@ -1070,9 +1080,9 @@ Nodes (3): Select, SelectOption, SelectProps
|
||||
Cohesion: 0.40
|
||||
Nodes (3): generateMetadata(), formatIngredientDisplayName(), IngredientWiki()
|
||||
|
||||
### Community 199 - "auth.controller.ts"
|
||||
Cohesion: 0.10
|
||||
Nodes (19): AdminLoginDto, ApiProperty, IsEmail, IsNotEmpty, IsString, MinLength, LoginDto, ApiProperty (+11 more)
|
||||
### Community 199 - "RegisterDto"
|
||||
Cohesion: 0.22
|
||||
Nodes (8): RegisterDto, ApiProperty, ApiPropertyOptional, IsEmail, IsNotEmpty, IsOptional, IsString, MinLength
|
||||
|
||||
### Community 200 - "application/README.md"
|
||||
Cohesion: 0.50
|
||||
@ -1090,9 +1100,13 @@ Nodes (3): ADR-AUTH-001: Admin Panel Authentication Architecture & Token Managem
|
||||
Cohesion: 0.67
|
||||
Nodes (3): Shabnam Font README, Shabnam Font Sample, Vazir Font
|
||||
|
||||
### Community 294 - "ZibalService"
|
||||
Cohesion: 0.09
|
||||
Nodes (4): PaymentService, Injectable, Injectable, ZibalService
|
||||
|
||||
### Community 298 - ".initiateOrderPayment"
|
||||
Cohesion: 0.20
|
||||
Nodes (10): ApiPropertyOptional, IsOptional, IsString, ZibalCallbackQueryDto, ApiBadRequestResponse, ApiOkResponse, Req, Res (+2 more)
|
||||
Cohesion: 0.32
|
||||
Nodes (6): ApiBadRequestResponse, ApiOkResponse, Req, Res, Headers, Ip
|
||||
|
||||
### Community 313 - "Modal.tsx"
|
||||
Cohesion: 0.08
|
||||
@ -1105,22 +1119,22 @@ Nodes (3): GET(), handleRevalidate(), POST()
|
||||
## Knowledge Gaps
|
||||
- **1335 isolated node(s):** `$schema`, `collection`, `sourceRoot`, `deleteOutDir`, `name` (+1330 more)
|
||||
These have ≤1 connection - possible missing edges or undocumented components.
|
||||
- **100 thin communities (<3 nodes) omitted from report** — run `graphify query` to explore isolated nodes.
|
||||
- **114 thin communities (<3 nodes) omitted from report** — run `graphify query` to explore isolated nodes.
|
||||
|
||||
## Suggested Questions
|
||||
_Questions this graph is uniquely positioned to answer:_
|
||||
|
||||
- **Why does `ApiResponse` connect `src/services/api.ts` to `BlogsController`, `AuthController`, `PetsController`, `WikiController`, `HomeController`, `RevalidationService`, `UsersController`, `OrdersService`?**
|
||||
- **Why does `ApiResponse` connect `src/services/api.ts` to `BlogsController`, `AuthController`, `PetsController`, `HomeController`, `UsersService`, `ProductsService`, `PaginationDto`, `OrdersController`?**
|
||||
_High betweenness centrality (0.086) - this node is a cross-community bridge._
|
||||
- **Why does `Roles()` connect `Roles` to `WholesaleApplyDto`, `B2BService`, `SettingsController`, `FaqService`, `CmsController`, `tickets.controller.ts`, `SslController`, `BannersService`, `CreateReviewDto`, `TestimonialsService`, `IngredientsService`, `JwtAuthGuard`, `RevalidationService`, `PrescriptionsService`, `SmartAdvisorService`, `MenuService`, `ContactService`?**
|
||||
- **Why does `Roles()` connect `Roles` to `WholesaleService`, `B2BService`, `SettingsController`, `FaqService`, `CmsController`, `tickets.controller.ts`, `SslController`, `BannersService`, `ReviewsService`, `TestimonialsService`, `IngredientsService`, `JwtAuthGuard`, `ProductsService`, `PrescriptionsService`, `SmartAdvisorService`, `MenuService`, `ContactService`, `payment.controller.ts`?**
|
||||
_High betweenness centrality (0.067) - this node is a cross-community bridge._
|
||||
- **Why does `JwtAuthGuard` connect `JwtAuthGuard` to `PetsController`, `CmsController`, `tickets.controller.ts`, `auth.controller.ts`, `admin.module.ts`, `PetsController`, `DoctorQueryDto`, `admin.service.ts`, `PaginationDto`, `RevalidationService`, `CreateVideoDto`, `users.controller.ts`?**
|
||||
- **Why does `JwtAuthGuard` connect `JwtAuthGuard` to `admin.module.ts`, `CmsController`, `tickets.controller.ts`, `ReportsController`, `PetsController`, `DoctorQueryDto`, `admin.service.ts`, `UsersService`, `PaginationDto`, `CreateVideoDto`, `auth.service.ts`, `payment.controller.ts`?**
|
||||
_High betweenness centrality (0.034) - this node is a cross-community bridge._
|
||||
- **What connects `$schema`, `collection`, `sourceRoot` to the rest of the system?**
|
||||
_1335 weakly-connected nodes found - possible documentation gaps or missing edges._
|
||||
- **Should `app.module.ts` be split into smaller, more focused modules?**
|
||||
_Cohesion score 0.06988120195667366 - nodes in this community are weakly interconnected._
|
||||
_Cohesion score 0.06801346801346801 - nodes in this community are weakly interconnected._
|
||||
- **Should `SettingsController` be split into smaller, more focused modules?**
|
||||
_Cohesion score 0.09523809523809523 - nodes in this community are weakly interconnected._
|
||||
- **Should `ProductService` be split into smaller, more focused modules?**
|
||||
_Cohesion score 0.060515873015873016 - nodes in this community are weakly interconnected._
|
||||
- **Should `SafeImage.tsx` be split into smaller, more focused modules?**
|
||||
_Cohesion score 0.09462365591397849 - nodes in this community are weakly interconnected._
|
||||
_Cohesion score 0.0707070707070707 - nodes in this community are weakly interconnected._
|
||||
File diff suppressed because it is too large
Load Diff
@ -1,25 +1,25 @@
|
||||
# Graph Report - canina (2026-08-26)
|
||||
|
||||
## Corpus Check
|
||||
- 586 files · ~1,330,935 words
|
||||
- 586 files · ~1,331,190 words
|
||||
- Verdict: corpus is large enough that graph structure adds value.
|
||||
|
||||
## Summary
|
||||
- 4104 nodes · 7380 edges · 324 communities (210 shown, 114 thin omitted)
|
||||
- 4104 nodes · 7388 edges · 319 communities (205 shown, 114 thin omitted)
|
||||
- Extraction: 96% EXTRACTED · 4% INFERRED · 0% AMBIGUOUS · INFERRED: 281 edges (avg confidence: 0.79)
|
||||
- Token cost: 0 input · 0 output
|
||||
|
||||
## Graph Freshness
|
||||
- Built from commit: `9daaa226`
|
||||
- Built from commit: `c825268b`
|
||||
- Run `git rev-parse HEAD` and compare to check if the graph is stale.
|
||||
- Run `graphify update .` after code changes (no API cost).
|
||||
|
||||
## Community Hubs (Navigation)
|
||||
- Roles
|
||||
- app.module.ts
|
||||
- SettingsController
|
||||
- SmsService
|
||||
- ProductService
|
||||
- SafeImage.tsx
|
||||
- ProductPage.tsx
|
||||
- CmsController
|
||||
- tickets.controller.ts
|
||||
- Button.tsx
|
||||
@ -29,15 +29,15 @@
|
||||
- MediaSelector.tsx
|
||||
- index.ts
|
||||
- app-audit-verification.e2e-spec.js
|
||||
- UserDashboard.tsx
|
||||
- toPersian
|
||||
- src/services/api.ts
|
||||
- DoctorQueryDto
|
||||
- schema.ts
|
||||
- JwtAuthGuard
|
||||
- ProductsService
|
||||
- RevalidationService
|
||||
- CreateVideoDto
|
||||
- ProductPage.tsx
|
||||
- PetProfile.tsx
|
||||
- userStore.ts
|
||||
- useCartStore
|
||||
- MenuService
|
||||
- BE-001
|
||||
- FE-001
|
||||
@ -50,7 +50,7 @@
|
||||
- adminRoutes.tsx
|
||||
- WholesaleService
|
||||
- B2BService
|
||||
- AuthController
|
||||
- auth.service.ts
|
||||
- FaqService
|
||||
- راهنمای تست سیستم (Software Testing)
|
||||
- Button
|
||||
@ -75,15 +75,15 @@
|
||||
- Role & Core Objective
|
||||
- ContactService
|
||||
- compilerOptions
|
||||
- AuthService
|
||||
- payment.controller.ts
|
||||
- PaymentService
|
||||
- payment.service.ts
|
||||
- ProductDto
|
||||
- dependencies
|
||||
- compilerOptions
|
||||
- app.e2e-spec.js
|
||||
- AdminQueryDto
|
||||
- admin.module.ts
|
||||
- OrdersService
|
||||
- CheckoutPage.tsx
|
||||
- Required Review Group Closures
|
||||
- compilerOptions
|
||||
- getPageMetadata
|
||||
@ -102,16 +102,16 @@
|
||||
- HomeClient.tsx
|
||||
- zibal.service.ts
|
||||
- dependencies
|
||||
- MetricsController
|
||||
- CreateEBankCheckoutDto
|
||||
- seed-products.ts
|
||||
- useSettingsStore
|
||||
- Reconciled Audit Roles & Assignments
|
||||
- OrdersController
|
||||
- OrdersService
|
||||
- @nestjs/schematics
|
||||
- Phase 3.1 — Human Review Preparation and Master Backlog Critique
|
||||
- wiki/[slug]/page.tsx
|
||||
- blog/[slug]/page.tsx
|
||||
- compilerOptions
|
||||
- AdminLoginDto
|
||||
- InitiatePaymentDto
|
||||
- scripts
|
||||
- BlogsController
|
||||
- Deep Audit Summary Report
|
||||
@ -127,9 +127,9 @@
|
||||
- Operational Rules & Boundaries
|
||||
- Operational Rules & Boundaries
|
||||
- Operational Rules & Boundaries
|
||||
- SmsService
|
||||
- videos/page.tsx
|
||||
- AppService
|
||||
- LoginDto
|
||||
- @nestjs/swagger
|
||||
- Vazirmatn Changelog
|
||||
- Vazirmatn Font فونت وزیرمتن
|
||||
- Operational Rules & Boundaries
|
||||
@ -143,7 +143,7 @@
|
||||
- admin-panel/package.json
|
||||
- Sahel-Font
|
||||
- AdminController
|
||||
- bcrypt
|
||||
- globals
|
||||
- Sahel-Font
|
||||
- Role & Core Objective
|
||||
- orchestrate.py
|
||||
@ -165,7 +165,7 @@
|
||||
- class-transformer
|
||||
- SmsSettingsPage.tsx
|
||||
- Product Requirement Document (PRD)
|
||||
- auth.service.ts
|
||||
- @types/react-dom
|
||||
- lib/services/api.ts
|
||||
- exclude
|
||||
- Baseline Command Plan & Reconciled Command History
|
||||
@ -189,8 +189,6 @@
|
||||
- Phase 3 Audit Traceability Matrix
|
||||
- rebuild_honest_ledger.js
|
||||
- validate_evidence_grade.js
|
||||
- CreateOrderDto
|
||||
- SmsLogQueryDto
|
||||
- نقشه جامع پوشش تستهای سرتاسری (E2E Test Coverage Map) — پروژه Canina
|
||||
- PaginationDto
|
||||
- API Contract Specification
|
||||
@ -212,7 +210,6 @@
|
||||
- Select.tsx
|
||||
- wiki/page.tsx
|
||||
- @nestjs/core
|
||||
- RegisterDto
|
||||
- application/README.md
|
||||
- deploy.sh
|
||||
- 🔒 Security & Performance Review (09_devops_security)
|
||||
@ -293,7 +290,6 @@
|
||||
- Production Docker Compose
|
||||
- Staging Docker Compose
|
||||
- ZibalService
|
||||
- eslint-plugin-react-refresh
|
||||
- eslint-plugin-prettier
|
||||
- ZibalEBankService
|
||||
- .initiateOrderPayment
|
||||
@ -319,12 +315,11 @@
|
||||
- @types/js-yaml
|
||||
- @types/supertest
|
||||
- typescript-eslint
|
||||
- eslint-config-next
|
||||
|
||||
## God Nodes (most connected - your core abstractions)
|
||||
1. `Roles()` - 106 edges
|
||||
2. `PrismaService` - 87 edges
|
||||
3. `useSettingsStore` - 56 edges
|
||||
3. `useSettingsStore` - 61 edges
|
||||
4. `api` - 44 edges
|
||||
5. `SmsService` - 43 edges
|
||||
6. `PaginationDto` - 41 edges
|
||||
@ -346,31 +341,31 @@
|
||||
backend/src/orders/orders.controller.ts → frontend/admin-panel/src/types/admin.ts
|
||||
|
||||
## 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/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/services/authService.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 (324 total, 114 thin omitted)
|
||||
## Communities (319 total, 114 thin omitted)
|
||||
|
||||
### Community 0 - "Roles"
|
||||
Cohesion: 0.24
|
||||
Cohesion: 0.23
|
||||
Nodes (13): Roles(), PaymentController, ApiBearerAuth, ApiOperation, ApiTags, Body, Controller, Get (+5 more)
|
||||
|
||||
### Community 1 - "app.module.ts"
|
||||
Cohesion: 0.07
|
||||
Nodes (37): B2BModule, Module, BannersModule, Module, CmsModule, Module, RevalidationModule, Global (+29 more)
|
||||
Cohesion: 0.08
|
||||
Nodes (34): B2BModule, Module, BannersModule, Module, CmsModule, Module, SmsModule, Global (+26 more)
|
||||
|
||||
### Community 2 - "SettingsController"
|
||||
Cohesion: 0.10
|
||||
Nodes (18): SmsLogQuery, SettingsController, ApiBearerAuth, ApiOkResponse, ApiOperation, ApiTags, Body, Controller (+10 more)
|
||||
### Community 2 - "SmsService"
|
||||
Cohesion: 0.05
|
||||
Nodes (27): SmsLogQuery, SmsService, Injectable, SmsLogQueryDto, ApiPropertyOptional, IsIn, IsNumber, IsOptional (+19 more)
|
||||
|
||||
### Community 3 - "ProductService"
|
||||
Cohesion: 0.07
|
||||
Nodes (30): dynamic, revalidate, DEFAULT_CATEGORIES, dynamic, revalidate, dynamic, revalidate, BlogCategory (+22 more)
|
||||
Nodes (31): dynamic, revalidate, DEFAULT_CATEGORIES, dynamic, revalidate, dynamic, revalidate, BlogCategory (+23 more)
|
||||
|
||||
### Community 4 - "SafeImage.tsx"
|
||||
Cohesion: 0.08
|
||||
Nodes (21): BackButton(), BackButtonProps, ProductDetailModalProps, PLAYBACK_RATES, PodcastInlinePlayer(), PodcastInlinePlayerProps, PLAYBACK_RATES, PodcastPlayerModal() (+13 more)
|
||||
### Community 4 - "ProductPage.tsx"
|
||||
Cohesion: 0.07
|
||||
Nodes (29): revalidate, BackButton(), BackButtonProps, PLAYBACK_RATES, PodcastInlinePlayer(), PodcastInlinePlayerProps, PLAYBACK_RATES, PodcastPlayerModal() (+21 more)
|
||||
|
||||
### Community 5 - "CmsController"
|
||||
Cohesion: 0.09
|
||||
@ -408,9 +403,9 @@ Nodes (24): backend, frontend, playwright.config.ts, @playwright/test, tests/**/
|
||||
Cohesion: 0.06
|
||||
Nodes (28): AppModule, Module, EnvironmentVariables, IsNotEmpty, IsOptional, IsString, validateEnv(), CustomHttpExceptionFilter (+20 more)
|
||||
|
||||
### Community 14 - "UserDashboard.tsx"
|
||||
Cohesion: 0.08
|
||||
Nodes (38): B2BPortal, VerifyContent(), AddressModal(), AddressModalProps, AuthModal(), AuthModalProps, extractOtpFromText(), B2BPortal() (+30 more)
|
||||
### Community 14 - "toPersian"
|
||||
Cohesion: 0.11
|
||||
Nodes (19): CartDrawer, AuthModal(), AuthModalProps, extractOtpFromText(), BlogPost, BlogPreviewSection(), CartDrawer(), HeaderButton() (+11 more)
|
||||
|
||||
### Community 15 - "src/services/api.ts"
|
||||
Cohesion: 0.08
|
||||
@ -421,28 +416,28 @@ Cohesion: 0.09
|
||||
Nodes (24): DoctorsController, ApiBearerAuth, ApiOperation, ApiTags, Body, Controller, Delete, Get (+16 more)
|
||||
|
||||
### Community 17 - "schema.ts"
|
||||
Cohesion: 0.14
|
||||
Nodes (18): B2BPage(), generateMetadata(), ContactPage(), generateMetadata(), generateMetadata(), getInitialVideos(), Videos(), ContactFormClient() (+10 more)
|
||||
Cohesion: 0.15
|
||||
Nodes (18): B2BPage(), generateMetadata(), ContactPage(), generateMetadata(), generateMetadata(), getRelatedProducts(), getWikiTerm(), WikiTermPage() (+10 more)
|
||||
|
||||
### Community 18 - "JwtAuthGuard"
|
||||
Cohesion: 0.19
|
||||
Nodes (7): JwtAuthGuard, Injectable, ROLES_KEY, RequestWithUser, RolesGuard, Injectable, UserReqPayload
|
||||
|
||||
### Community 19 - "ProductsService"
|
||||
Cohesion: 0.09
|
||||
Nodes (19): GetProductsDto, ApiPropertyOptional, IsEnum, IsOptional, IsString, ProductsController, ApiOperation, ApiTags (+11 more)
|
||||
### Community 19 - "RevalidationService"
|
||||
Cohesion: 0.07
|
||||
Nodes (24): RevalidationModule, Global, Module, RevalidationService, Injectable, GetProductsDto, ApiPropertyOptional, IsEnum (+16 more)
|
||||
|
||||
### Community 20 - "CreateVideoDto"
|
||||
Cohesion: 0.07
|
||||
Nodes (31): CreateVideoDto, ApiProperty, ApiPropertyOptional, IsBoolean, IsNotEmpty, IsOptional, IsString, UpdateVideoDto (+23 more)
|
||||
|
||||
### Community 21 - "ProductPage.tsx"
|
||||
Cohesion: 0.14
|
||||
Nodes (13): revalidate, CalculatorState, ICON_MAP, ProductPage(), ProductReviews, useCalculatorStore, ProductReviews(), ProductReviewsProps (+5 more)
|
||||
|
||||
### Community 22 - "PetProfile.tsx"
|
||||
### Community 21 - "userStore.ts"
|
||||
Cohesion: 0.11
|
||||
Nodes (23): ClientLayout(), FeaturedProducts(), ProductCard(), Header(), OrderSuccess(), PrescriptionUploadModal(), PrescriptionUploadModalProps, SearchResultsPage() (+15 more)
|
||||
Nodes (11): LoginModal, LoginModal(), LoginModalProps, ApiErr, AuthResponse, AuthService, User, Transaction (+3 more)
|
||||
|
||||
### Community 22 - "useCartStore"
|
||||
Cohesion: 0.10
|
||||
Nodes (27): ClientLayout(), VerifyContent(), FeaturedProducts(), ProductCard(), Header(), OrderSuccess(), OrderTracking(), PetProfile() (+19 more)
|
||||
|
||||
### Community 23 - "MenuService"
|
||||
Cohesion: 0.11
|
||||
@ -492,9 +487,9 @@ Nodes (14): ApiBearerAuth, ApiOperation, ApiTags, Body, Controller, Get, Param,
|
||||
Cohesion: 0.12
|
||||
Nodes (16): B2BController, ApiBearerAuth, ApiOperation, ApiTags, Body, Controller, Get, Param (+8 more)
|
||||
|
||||
### Community 35 - "AuthController"
|
||||
Cohesion: 0.25
|
||||
Nodes (13): AuthController, ApiBadRequestResponse, ApiBearerAuth, ApiOkResponse, ApiOperation, ApiTags, Body, Controller (+5 more)
|
||||
### Community 35 - "auth.service.ts"
|
||||
Cohesion: 0.06
|
||||
Nodes (46): AuthController, ApiBadRequestResponse, ApiBearerAuth, ApiOkResponse, ApiOperation, ApiTags, Body, Controller (+38 more)
|
||||
|
||||
### Community 36 - "FaqService"
|
||||
Cohesion: 0.12
|
||||
@ -550,11 +545,11 @@ Nodes (41): DEFAULT_JWT_REFRESH_SECRET, DEFAULT_JWT_SECRET, getJwtSecret(), Auth
|
||||
|
||||
### Community 49 - "devDependencies"
|
||||
Cohesion: 0.11
|
||||
Nodes (19): autoprefixer, devDependencies, autoprefixer, eslint, @eslint/js, globals, postcss, @types/node (+11 more)
|
||||
Nodes (19): autoprefixer, eslint-plugin-react-refresh, devDependencies, autoprefixer, eslint, @eslint/js, eslint-plugin-react-refresh, postcss (+11 more)
|
||||
|
||||
### Community 50 - "devDependencies"
|
||||
Cohesion: 0.13
|
||||
Nodes (15): devDependencies, eslint, jsdom, tailwindcss, @tailwindcss/postcss, @types/node, @types/react-dom, @vitejs/plugin-react (+7 more)
|
||||
Nodes (15): eslint-config-next, devDependencies, eslint, eslint-config-next, jsdom, tailwindcss, @tailwindcss/postcss, @types/node (+7 more)
|
||||
|
||||
### Community 51 - "BlogsController"
|
||||
Cohesion: 0.07
|
||||
@ -592,13 +587,9 @@ Nodes (12): ContactController, Body, Controller, Get, Param, Post, Put, Query (+
|
||||
Cohesion: 0.06
|
||||
Nodes (30): compilerOptions, allowSyntheticDefaultImports, baseUrl, declaration, emitDecoratorMetadata, esModuleInterop, experimentalDecorators, forceConsistentCasingInFileNames (+22 more)
|
||||
|
||||
### Community 60 - "AuthService"
|
||||
Cohesion: 0.21
|
||||
Nodes (3): AuthService, Injectable, normalizeMobile()
|
||||
|
||||
### Community 61 - "payment.controller.ts"
|
||||
Cohesion: 0.07
|
||||
Nodes (31): AdminTransactionFilterDto, ApiPropertyOptional, IsIn, IsNumber, IsOptional, IsString, Type, CreateEBankCheckoutDto (+23 more)
|
||||
### Community 61 - "payment.service.ts"
|
||||
Cohesion: 0.20
|
||||
Nodes (8): AdminTransactionFilterDto, ApiPropertyOptional, IsIn, IsNumber, IsOptional, IsString, Type, ClientMetadata
|
||||
|
||||
### Community 62 - "ProductDto"
|
||||
Cohesion: 0.18
|
||||
@ -606,7 +597,7 @@ Nodes (7): ProductDto, ApiPropertyOptional, IsArray, IsBoolean, IsNumber, IsOpti
|
||||
|
||||
### Community 63 - "dependencies"
|
||||
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"
|
||||
Cohesion: 0.10
|
||||
@ -621,8 +612,12 @@ Cohesion: 0.17
|
||||
Nodes (7): ApiQuery, Get, Query, AdminQueryDto, ApiPropertyOptional, IsOptional, IsString
|
||||
|
||||
### Community 67 - "admin.module.ts"
|
||||
Cohesion: 0.06
|
||||
Nodes (20): AdminModule, Module, PetsController, ApiBearerAuth, ApiOperation, ApiQuery, ApiTags, Controller (+12 more)
|
||||
Cohesion: 0.07
|
||||
Nodes (19): AdminModule, Module, PetsController, ApiBearerAuth, ApiOperation, ApiQuery, ApiTags, Controller (+11 more)
|
||||
|
||||
### Community 68 - "CheckoutPage.tsx"
|
||||
Cohesion: 0.25
|
||||
Nodes (12): AddressModal(), AddressModalProps, CheckoutPage(), SearchableSelect(), SearchableSelectProps, PRESET_AMOUNTS, TopUpModal(), TopUpModalProps (+4 more)
|
||||
|
||||
### Community 69 - "Required Review Group Closures"
|
||||
Cohesion: 0.10
|
||||
@ -686,7 +681,7 @@ Nodes (16): 1. Active Secret Scanning (All Modified Files), 2. Docker Container
|
||||
|
||||
### Community 85 - "HomeClient.tsx"
|
||||
Cohesion: 0.11
|
||||
Nodes (20): HomeClient(), HomeClientProps, ArchivePage(), ArchiveProductCard(), CATEGORY_MAP, ICON_MAP, BannerPlacement(), BannerPlacementProps (+12 more)
|
||||
Nodes (21): HomeClient(), HomeClientProps, ArchivePage(), ArchiveProductCard(), CATEGORY_MAP, ICON_MAP, BannerPlacement(), BannerPlacementProps (+13 more)
|
||||
|
||||
### Community 86 - "zibal.service.ts"
|
||||
Cohesion: 0.16
|
||||
@ -696,49 +691,49 @@ Nodes (9): GatewayHealthResult, IPaymentGateway, PaymentInquiryResult, PaymentRe
|
||||
Cohesion: 0.12
|
||||
Nodes (17): dependencies, axios, lucide-react, motion, next, react, react-dom, sonner (+9 more)
|
||||
|
||||
### Community 88 - "MetricsController"
|
||||
Cohesion: 0.29
|
||||
Nodes (5): ApiExcludeController, MetricsController, Controller, Get, Res
|
||||
### Community 88 - "CreateEBankCheckoutDto"
|
||||
Cohesion: 0.22
|
||||
Nodes (8): CreateEBankCheckoutDto, ApiProperty, ApiPropertyOptional, IsNotEmpty, IsNumber, IsOptional, IsString, Min
|
||||
|
||||
### Community 89 - "seed-products.ts"
|
||||
Cohesion: 0.17
|
||||
Nodes (12): prisma, main(), prisma, determineSuitableFor(), findOrCreateCategory(), getProductImageUrl(), main(), parseSize() (+4 more)
|
||||
|
||||
### Community 90 - "useSettingsStore"
|
||||
Cohesion: 0.14
|
||||
Nodes (18): AuthModal, CartDrawer, B2BLandingClient(), BrandLogo(), BrandLogoProps, EnamadBadge(), Footer(), MENU_ICONS (+10 more)
|
||||
Cohesion: 0.15
|
||||
Nodes (17): AuthModal, B2BPortal, B2BLandingClient(), B2BPortal(), BrandLogo(), BrandLogoProps, EnamadBadge(), Footer() (+9 more)
|
||||
|
||||
### Community 91 - "Reconciled Audit Roles & Assignments"
|
||||
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)
|
||||
|
||||
### Community 92 - "OrdersController"
|
||||
Cohesion: 0.14
|
||||
Nodes (16): OrdersController, ApiBadRequestResponse, ApiBearerAuth, ApiCreatedResponse, ApiNotFoundResponse, ApiOkResponse, ApiOperation, ApiTags (+8 more)
|
||||
### Community 92 - "OrdersService"
|
||||
Cohesion: 0.06
|
||||
Nodes (35): CreateOrderDto, OrderItemDto, ApiProperty, ApiPropertyOptional, IsArray, IsNotEmpty, IsNumber, IsOptional (+27 more)
|
||||
|
||||
### Community 94 - "Phase 3.1 — Human Review Preparation and Master Backlog Critique"
|
||||
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)
|
||||
|
||||
### Community 95 - "wiki/[slug]/page.tsx"
|
||||
Cohesion: 0.20
|
||||
Nodes (16): BlogPostPage(), generateMetadata(), getBlog(), revalidate, safeIso(), safeLocalDate(), generateMetadata(), generateMetadata() (+8 more)
|
||||
### Community 95 - "blog/[slug]/page.tsx"
|
||||
Cohesion: 0.28
|
||||
Nodes (11): BlogPostPage(), generateMetadata(), getBlog(), revalidate, safeIso(), safeLocalDate(), generateMetadata(), BlogPostClient() (+3 more)
|
||||
|
||||
### Community 96 - "compilerOptions"
|
||||
Cohesion: 0.06
|
||||
Nodes (32): compilerOptions, allowJs, esModuleInterop, incremental, isolatedModules, jsx, lib, module (+24 more)
|
||||
|
||||
### Community 97 - "AdminLoginDto"
|
||||
Cohesion: 0.29
|
||||
Nodes (6): AdminLoginDto, ApiProperty, IsEmail, IsNotEmpty, IsString, MinLength
|
||||
### Community 97 - "InitiatePaymentDto"
|
||||
Cohesion: 0.43
|
||||
Nodes (7): InitiatePaymentDto, InitiateWalletTopupDto, ApiProperty, ApiPropertyOptional, IsNotEmpty, IsOptional, IsString
|
||||
|
||||
### Community 98 - "scripts"
|
||||
Cohesion: 0.13
|
||||
Nodes (15): scripts, build, build:nest, docs:generate, lint, seo:backfill, start, start:debug (+7 more)
|
||||
|
||||
### Community 99 - "BlogsController"
|
||||
Cohesion: 0.08
|
||||
Nodes (19): BlogsController, ApiBearerAuth, ApiNotFoundResponse, ApiOkResponse, ApiOperation, ApiTags, Body, Controller (+11 more)
|
||||
Cohesion: 0.15
|
||||
Nodes (15): BlogsController, ApiBearerAuth, ApiNotFoundResponse, ApiOkResponse, ApiOperation, ApiTags, Body, Controller (+7 more)
|
||||
|
||||
### Community 100 - "Deep Audit Summary Report"
|
||||
Cohesion: 0.14
|
||||
@ -774,7 +769,7 @@ Nodes (6): ApiProperty, ApiPropertyOptional, IsNotEmpty, IsOptional, IsString, W
|
||||
|
||||
### Community 108 - "PrismaService"
|
||||
Cohesion: 0.07
|
||||
Nodes (17): CategoryQuery, RevalidationService, Injectable, MeliPayamakPattern, MeliPayamakResponse, SendPatternSmsOptions, SmsConfig, CreateContactSubmissionDto (+9 more)
|
||||
Nodes (20): CategoryQuery, WikiQuery, MeliPayamakPattern, MeliPayamakResponse, SendPatternSmsOptions, SmsConfig, CreateContactSubmissionDto, UpdateContactInfoItemDto (+12 more)
|
||||
|
||||
### Community 109 - "1. Summary of Integrity Repairs Performed"
|
||||
Cohesion: 0.17
|
||||
@ -792,14 +787,14 @@ Nodes (10): 1. Mark Active Task as Complete, 2. Documentation Updates, 3. Dynami
|
||||
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)
|
||||
|
||||
### Community 113 - "videos/page.tsx"
|
||||
Cohesion: 0.47
|
||||
Nodes (5): generateMetadata(), getInitialVideos(), Videos(), VideosPage(), generateVideoObjectSchema()
|
||||
|
||||
### Community 114 - "AppService"
|
||||
Cohesion: 0.29
|
||||
Nodes (5): AppController, Controller, Get, AppService, Injectable
|
||||
|
||||
### Community 115 - "LoginDto"
|
||||
Cohesion: 0.33
|
||||
Nodes (5): LoginDto, ApiProperty, IsNotEmpty, IsString, MinLength
|
||||
|
||||
### Community 116 - "Vazirmatn Changelog"
|
||||
Cohesion: 0.18
|
||||
Nodes (10): 32.0.0, 32.1, 32.101, 32.102, 33.000, 33.001, 33.002, 33.003 (+2 more)
|
||||
@ -928,13 +923,9 @@ Nodes (7): PatternItem, SmsConfigState, SmsLogItem, SmsLogStats, SmsSettingsPage
|
||||
Cohesion: 0.29
|
||||
Nodes (6): 1. Executive Vision, 2. Target Audience, 3. Functional Requirements, 4. Non-Functional Requirements (Performance, Security), 5. Epic / Feature Breakdown, Product Requirement Document (PRD)
|
||||
|
||||
### Community 151 - "auth.service.ts"
|
||||
Cohesion: 0.15
|
||||
Nodes (14): AdminLoginInput, LoginInput, RegisterInput, SendOtpDto, ApiProperty, IsNotEmpty, IsString, Matches (+6 more)
|
||||
|
||||
### Community 152 - "lib/services/api.ts"
|
||||
Cohesion: 0.06
|
||||
Nodes (25): LoginModal, ContactInfoItem, LoginModal(), LoginModalProps, Testimonial, api, ApiErrorPayload, BASE_DOMAIN (+17 more)
|
||||
Cohesion: 0.08
|
||||
Nodes (21): ContactInfoItem, DeleteConfirmModal(), DeleteConfirmModalProps, Testimonial, TestimonialsSection(), api, ApiErrorPayload, BASE_DOMAIN (+13 more)
|
||||
|
||||
### Community 153 - "exclude"
|
||||
Cohesion: 0.22
|
||||
@ -1016,21 +1007,13 @@ Nodes (4): evidenceList, ledger, mandatoryMap, mandatoryScope
|
||||
Cohesion: 0.40
|
||||
Nodes (4): activeFiles, errors, validationOutput, warnings
|
||||
|
||||
### Community 176 - "CreateOrderDto"
|
||||
Cohesion: 0.22
|
||||
Nodes (11): CreateOrderDto, OrderItemDto, ApiProperty, ApiPropertyOptional, IsArray, IsNotEmpty, IsNumber, IsOptional (+3 more)
|
||||
|
||||
### Community 177 - "SmsLogQueryDto"
|
||||
Cohesion: 0.25
|
||||
Nodes (7): SmsLogQueryDto, ApiPropertyOptional, IsIn, IsNumber, IsOptional, IsString, Type
|
||||
|
||||
### Community 178 - "نقشه جامع پوشش تستهای سرتاسری (E2E Test Coverage Map) — پروژه Canina"
|
||||
Cohesion: 0.33
|
||||
Nodes (5): نقشه جامع پوشش تستهای سرتاسری (E2E Test Coverage Map) — پروژه Canina, ۱. معماری و نقشهای کاربری (User Roles), ۲. ماتریس جریانها و قابلیتهای کاربرمحور (Feature & Flow Matrix), ۳. وضعیت پوشش نهایی سوئیت ۱۱گانه (Final 11 Test Suites Status), ۴. راهنمای نگهداری و افزودن فیچرهای جدید بدون شکستن تستها (Developer Maintenance Guide)
|
||||
|
||||
### Community 179 - "PaginationDto"
|
||||
Cohesion: 0.07
|
||||
Nodes (29): BlogFilterDto, PaginationDto, SortOrder, ApiPropertyOptional, IsEnum, IsInt, IsOptional, IsString (+21 more)
|
||||
Cohesion: 0.06
|
||||
Nodes (27): BlogsModule, Module, BlogFilterDto, BlogsService, Injectable, PaginationDto, SortOrder, ApiPropertyOptional (+19 more)
|
||||
|
||||
### Community 180 - "API Contract Specification"
|
||||
Cohesion: 0.50
|
||||
@ -1049,8 +1032,8 @@ Cohesion: 0.50
|
||||
Nodes (3): Overview & Content Foundation, SEO & Content Requirements, 🚀 SEO & Content Strategy Review (12_seo_content)
|
||||
|
||||
### Community 184 - "RedisService"
|
||||
Cohesion: 0.16
|
||||
Nodes (5): RedisModule, Global, Module, RedisService, Injectable
|
||||
Cohesion: 0.07
|
||||
Nodes (13): ApiExcludeController, AuthService, Injectable, MetricsController, Controller, Get, Res, normalizeMobile() (+5 more)
|
||||
|
||||
### Community 191 - "graphify reference: add a URL and watch a folder"
|
||||
Cohesion: 0.50
|
||||
@ -1080,10 +1063,6 @@ Nodes (3): Select, SelectOption, SelectProps
|
||||
Cohesion: 0.40
|
||||
Nodes (3): generateMetadata(), formatIngredientDisplayName(), IngredientWiki()
|
||||
|
||||
### Community 199 - "RegisterDto"
|
||||
Cohesion: 0.22
|
||||
Nodes (8): RegisterDto, ApiProperty, ApiPropertyOptional, IsEmail, IsNotEmpty, IsOptional, IsString, MinLength
|
||||
|
||||
### Community 200 - "application/README.md"
|
||||
Cohesion: 0.50
|
||||
Nodes (3): Deploy on Vercel, Getting Started, Learn More
|
||||
@ -1100,13 +1079,9 @@ Nodes (3): ADR-AUTH-001: Admin Panel Authentication Architecture & Token Managem
|
||||
Cohesion: 0.67
|
||||
Nodes (3): Shabnam Font README, Shabnam Font Sample, Vazir Font
|
||||
|
||||
### Community 294 - "ZibalService"
|
||||
Cohesion: 0.09
|
||||
Nodes (4): PaymentService, Injectable, Injectable, ZibalService
|
||||
|
||||
### Community 298 - ".initiateOrderPayment"
|
||||
Cohesion: 0.32
|
||||
Nodes (6): ApiBadRequestResponse, ApiOkResponse, Req, Res, Headers, Ip
|
||||
Cohesion: 0.18
|
||||
Nodes (10): ApiPropertyOptional, IsOptional, IsString, ZibalCallbackQueryDto, ApiBadRequestResponse, ApiOkResponse, Req, Res (+2 more)
|
||||
|
||||
### Community 313 - "Modal.tsx"
|
||||
Cohesion: 0.08
|
||||
@ -1124,17 +1099,17 @@ Nodes (3): GET(), handleRevalidate(), POST()
|
||||
## Suggested Questions
|
||||
_Questions this graph is uniquely positioned to answer:_
|
||||
|
||||
- **Why does `ApiResponse` connect `src/services/api.ts` to `BlogsController`, `AuthController`, `PetsController`, `HomeController`, `UsersService`, `ProductsService`, `PaginationDto`, `OrdersController`?**
|
||||
- **Why does `ApiResponse` connect `src/services/api.ts` to `BlogsController`, `auth.service.ts`, `PetsController`, `HomeController`, `UsersService`, `RevalidationService`, `PaginationDto`, `OrdersService`?**
|
||||
_High betweenness centrality (0.086) - this node is a cross-community bridge._
|
||||
- **Why does `Roles()` connect `Roles` to `WholesaleService`, `B2BService`, `SettingsController`, `FaqService`, `CmsController`, `tickets.controller.ts`, `SslController`, `BannersService`, `ReviewsService`, `TestimonialsService`, `IngredientsService`, `JwtAuthGuard`, `ProductsService`, `PrescriptionsService`, `SmartAdvisorService`, `MenuService`, `ContactService`, `payment.controller.ts`?**
|
||||
- **Why does `Roles()` connect `Roles` to `WholesaleService`, `B2BService`, `SmsService`, `FaqService`, `CmsController`, `tickets.controller.ts`, `SslController`, `BannersService`, `ReviewsService`, `TestimonialsService`, `IngredientsService`, `JwtAuthGuard`, `RevalidationService`, `PrescriptionsService`, `SmartAdvisorService`, `MenuService`, `ContactService`, `PaymentService`?**
|
||||
_High betweenness centrality (0.067) - this node is a cross-community bridge._
|
||||
- **Why does `JwtAuthGuard` connect `JwtAuthGuard` to `admin.module.ts`, `CmsController`, `tickets.controller.ts`, `ReportsController`, `PetsController`, `DoctorQueryDto`, `admin.service.ts`, `UsersService`, `PaginationDto`, `CreateVideoDto`, `auth.service.ts`, `payment.controller.ts`?**
|
||||
- **Why does `JwtAuthGuard` connect `JwtAuthGuard` to `admin.module.ts`, `auth.service.ts`, `CmsController`, `tickets.controller.ts`, `PetsController`, `DoctorQueryDto`, `admin.service.ts`, `UsersService`, `PaginationDto`, `RevalidationService`, `CreateVideoDto`, `OrdersService`?**
|
||||
_High betweenness centrality (0.034) - this node is a cross-community bridge._
|
||||
- **What connects `$schema`, `collection`, `sourceRoot` to the rest of the system?**
|
||||
_1335 weakly-connected nodes found - possible documentation gaps or missing edges._
|
||||
- **Should `app.module.ts` be split into smaller, more focused modules?**
|
||||
_Cohesion score 0.06801346801346801 - nodes in this community are weakly interconnected._
|
||||
- **Should `SettingsController` be split into smaller, more focused modules?**
|
||||
_Cohesion score 0.09523809523809523 - nodes in this community are weakly interconnected._
|
||||
_Cohesion score 0.07529411764705882 - nodes in this community are weakly interconnected._
|
||||
- **Should `SmsService` be split into smaller, more focused modules?**
|
||||
_Cohesion score 0.05287128712871287 - nodes in this community are weakly interconnected._
|
||||
- **Should `ProductService` be split into smaller, more focused modules?**
|
||||
_Cohesion score 0.0707070707070707 - nodes in this community are weakly interconnected._
|
||||
_Cohesion score 0.06654567453115548 - nodes in this community are weakly interconnected._
|
||||
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