fix(frontend): enhance species badges, smart symptom matching, and sync charity total
This commit is contained in:
parent
330d960502
commit
30fb8f3e83
@ -4,6 +4,7 @@ import { toPersian } from "../lib/utils";
|
||||
import { Product, PetType } from "../lib/data/products";
|
||||
import { usePetStore } from "../lib/store/usePetStore";
|
||||
import { productService } from "../lib/services/productService";
|
||||
import { isSuitableForDog, isSuitableForCat, isSuitableForBoth, isSpeciesCompatible, matchesMedicalSymptom } from "../lib/petCompatibility";
|
||||
import Link from "next/link";
|
||||
import { motion, AnimatePresence } from "motion/react";
|
||||
import { ProductCardSkeleton } from "./Skeleton";
|
||||
@ -87,13 +88,15 @@ const ArchiveProductCard: React.FC<{ product: Product }> = ({ product }) => {
|
||||
setTimeout(() => setIsAdding(false), 400);
|
||||
};
|
||||
|
||||
const forDog = isSuitableForDog(product.suitableFor);
|
||||
const forCat = isSuitableForCat(product.suitableFor);
|
||||
const forBoth = isSuitableForBoth(product.suitableFor) || (forDog && forCat);
|
||||
|
||||
const compatibility = useMemo(() => {
|
||||
if (!activePet) return null;
|
||||
|
||||
const sameSpecies = product.suitableFor === activePet.type || product.suitableFor === "هر دو";
|
||||
const matchedSymptom = (activePet.medicalConditions || []).find(mc =>
|
||||
(product.symptoms || []).some(s => mc.includes(s) || s.includes(mc))
|
||||
);
|
||||
const sameSpecies = isSpeciesCompatible(product.suitableFor, activePet.type);
|
||||
const matchedSymptom = matchesMedicalSymptom(activePet.medicalConditions, product.symptoms, product.benefits);
|
||||
|
||||
if (!sameSpecies) return { type: 'alert', text: `مخصوص ${product.suitableFor}` };
|
||||
if (matchedSymptom) return { type: 'success', text: `توصیه شده برای ${matchedSymptom} ${activePet.name}` };
|
||||
@ -124,7 +127,24 @@ const ArchiveProductCard: React.FC<{ product: Product }> = ({ product }) => {
|
||||
<div className={`absolute top-14 right-4 z-10 text-3xs font-black uppercase tracking-widest px-3 py-1 rounded-full shadow-md flex items-center gap-1 ${compatibility.type === 'alert' ? 'bg-amber-100 text-amber-700' :
|
||||
compatibility.type === 'success' ? 'bg-green-100 text-green-700' : 'bg-medical-gray-100 text-medical-gray-600'
|
||||
}`}>
|
||||
{compatibility.type === 'alert' ? <AlertCircle className="w-2.5 h-2.5" /> : compatibility.type === 'success' ? <Heart className="w-2.5 h-2.5" /> : <Sparkles className="w-2.5 h-2.5" />}
|
||||
{compatibility.type === 'alert' ? (
|
||||
forBoth ? (
|
||||
<span className="flex items-center gap-0.5">
|
||||
<Dog className="w-2.5 h-2.5" />
|
||||
<Cat className="w-2.5 h-2.5" />
|
||||
</span>
|
||||
) : forCat ? (
|
||||
<Cat className="w-2.5 h-2.5" />
|
||||
) : forDog ? (
|
||||
<Dog className="w-2.5 h-2.5" />
|
||||
) : (
|
||||
<AlertCircle className="w-2.5 h-2.5" />
|
||||
)
|
||||
) : compatibility.type === 'success' ? (
|
||||
<Heart className="w-2.5 h-2.5" />
|
||||
) : (
|
||||
<Sparkles className="w-2.5 h-2.5" />
|
||||
)}
|
||||
{compatibility.text}
|
||||
</div>
|
||||
)}
|
||||
@ -138,13 +158,13 @@ const ArchiveProductCard: React.FC<{ product: Product }> = ({ product }) => {
|
||||
imgClassName="w-full h-full object-contain"
|
||||
/>
|
||||
<div className="absolute bottom-4 left-4 flex gap-2">
|
||||
{(product.suitableFor === "سگ" || product.suitableFor === "هر دو") && (
|
||||
<div className="w-7 h-7 bg-white rounded-lg flex items-center justify-center text-medical-gray-400 border border-medical-gray-100 shadow-sm">
|
||||
{forDog && (
|
||||
<div className="w-7 h-7 bg-white rounded-lg flex items-center justify-center text-medical-gray-400 border border-medical-gray-100 shadow-sm" title="مناسب برای سگ">
|
||||
<Dog className="w-4 h-4" />
|
||||
</div>
|
||||
)}
|
||||
{(product.suitableFor === "گربه" || product.suitableFor === "هر دو") && (
|
||||
<div className="w-7 h-7 bg-white rounded-lg flex items-center justify-center text-medical-gray-400 border border-medical-gray-100 shadow-sm">
|
||||
{forCat && (
|
||||
<div className="w-7 h-7 bg-white rounded-lg flex items-center justify-center text-medical-gray-400 border border-medical-gray-100 shadow-sm" title="مناسب برای گربه">
|
||||
<Cat className="w-4 h-4" />
|
||||
</div>
|
||||
)}
|
||||
|
||||
@ -13,6 +13,8 @@ import { useSettingsStore } from "../lib/store/settingsStore";
|
||||
import { useCartStore } from "../lib/store/cartStore";
|
||||
import { toast } from "sonner";
|
||||
|
||||
import { isSuitableForDog, isSuitableForCat, isSuitableForBoth, isSpeciesCompatible, matchesMedicalSymptom } from "../lib/petCompatibility";
|
||||
|
||||
function ProductCard({ product, priority = false }: { product: Product; priority?: boolean }) {
|
||||
const router = useRouter();
|
||||
const { getText, isInitialized } = useSettingsStore();
|
||||
@ -23,16 +25,18 @@ function ProductCard({ product, priority = false }: { product: Product; priority
|
||||
const nameFa = product.nameFa || product.name;
|
||||
const nameEn = product.nameEn || "";
|
||||
|
||||
const forDog = isSuitableForDog(product.suitableFor);
|
||||
const forCat = isSuitableForCat(product.suitableFor);
|
||||
const forBoth = isSuitableForBoth(product.suitableFor) || (forDog && forCat);
|
||||
|
||||
const compatibility = useMemo(() => {
|
||||
if (!activePet) return null;
|
||||
const petType = activePet.type || 'سگ';
|
||||
const sameSpecies = product.suitableFor === petType || product.suitableFor === "هر دو";
|
||||
const productSymptoms = Array.isArray(product.symptoms) ? product.symptoms : [];
|
||||
const petConditions = Array.isArray(activePet.medicalConditions) ? activePet.medicalConditions : [];
|
||||
const helpsSymptom = petConditions.some((s) => productSymptoms.includes(s));
|
||||
const sameSpecies = isSpeciesCompatible(product.suitableFor, petType);
|
||||
const matchedSymptom = matchesMedicalSymptom(activePet.medicalConditions, product.symptoms, product.benefits);
|
||||
|
||||
if (!sameSpecies) return { type: "alert", text: `مخصوص ${product.suitableFor || 'پت'}` };
|
||||
if (helpsSymptom) return { type: "success", text: `توصیه شده برای ${activePet.name || 'پت شما'}` };
|
||||
if (matchedSymptom) return { type: "success", text: `توصیه شده برای ${matchedSymptom} ${activePet.name || 'پت شما'}` };
|
||||
return { type: "neutral", text: `مناسب برای ${activePet.name || 'پت شما'}` };
|
||||
}, [product, activePet]);
|
||||
|
||||
@ -61,7 +65,24 @@ function ProductCard({ product, priority = false }: { product: Product; priority
|
||||
compatibility.type === "alert" ? "bg-amber-100 text-amber-700" :
|
||||
compatibility.type === "success" ? "bg-green-100 text-green-700" : "bg-medical-gray-100 text-medical-gray-600"
|
||||
}`}>
|
||||
{compatibility.type === "alert" ? <AlertCircle className="w-2.5 h-2.5" /> : compatibility.type === "success" ? <Heart className="w-2.5 h-2.5" /> : <Sparkles className="w-2.5 h-2.5" />}
|
||||
{compatibility.type === "alert" ? (
|
||||
forBoth ? (
|
||||
<span className="flex items-center gap-0.5">
|
||||
<Dog className="w-2.5 h-2.5" />
|
||||
<Cat className="w-2.5 h-2.5" />
|
||||
</span>
|
||||
) : forCat ? (
|
||||
<Cat className="w-2.5 h-2.5" />
|
||||
) : forDog ? (
|
||||
<Dog className="w-2.5 h-2.5" />
|
||||
) : (
|
||||
<AlertCircle className="w-2.5 h-2.5" />
|
||||
)
|
||||
) : compatibility.type === "success" ? (
|
||||
<Heart className="w-2.5 h-2.5" />
|
||||
) : (
|
||||
<Sparkles className="w-2.5 h-2.5" />
|
||||
)}
|
||||
{compatibility.text}
|
||||
</div>
|
||||
)}
|
||||
@ -79,12 +100,12 @@ function ProductCard({ product, priority = false }: { product: Product; priority
|
||||
|
||||
{/* Species Badges (Dog / Cat) */}
|
||||
<div className="absolute bottom-2 left-2 flex gap-1 z-10">
|
||||
{(product.suitableFor === "سگ" || product.suitableFor === "هر دو") && (
|
||||
{forDog && (
|
||||
<div className="w-6 h-6 bg-white/90 backdrop-blur-xs rounded-md flex items-center justify-center text-medical-gray-500 border border-medical-gray-200 shadow-2xs" title="مناسب برای سگ">
|
||||
<Dog className="w-3.5 h-3.5 text-canina-blue" />
|
||||
</div>
|
||||
)}
|
||||
{(product.suitableFor === "گربه" || product.suitableFor === "هر دو") && (
|
||||
{forCat && (
|
||||
<div className="w-6 h-6 bg-white/90 backdrop-blur-xs rounded-md flex items-center justify-center text-medical-gray-500 border border-medical-gray-200 shadow-2xs" title="مناسب برای گربه">
|
||||
<Cat className="w-3.5 h-3.5 text-canina-blue" />
|
||||
</div>
|
||||
|
||||
@ -2,6 +2,7 @@
|
||||
import React, { useState, useMemo, useEffect } from "react";
|
||||
import { Product } from "../lib/data/products";
|
||||
import { productService } from "../lib/services/productService";
|
||||
import { isSpeciesCompatible, matchesMedicalSymptom } from "../lib/petCompatibility";
|
||||
import { motion, AnimatePresence } from "motion/react";
|
||||
import { PetProfileSkeleton } from "./Skeleton";
|
||||
import SafeImage from "./SafeImage";
|
||||
@ -164,15 +165,13 @@ export default function PetProfile({ initialView, advisorNeed, embedded = false
|
||||
// Priority 1: Match activePet.medicalConditions directly against product.symptoms
|
||||
if (activePet.medicalConditions && activePet.medicalConditions.length > 0) {
|
||||
products.forEach(p => {
|
||||
if (p.suitableFor !== activePet.type && p.suitableFor !== "هر دو") return;
|
||||
const matchedSymptoms = (p.symptoms || []).filter(s =>
|
||||
activePet.medicalConditions.some(mc => mc.includes(s) || s.includes(mc))
|
||||
);
|
||||
if (!isSpeciesCompatible(p.suitableFor, activePet.type)) return;
|
||||
const matchedCondition = matchesMedicalSymptom(activePet.medicalConditions, p.symptoms, p.benefits);
|
||||
|
||||
if (matchedSymptoms.length > 0 && !picks.some(x => x.product.id === p.id)) {
|
||||
if (matchedCondition && !picks.some(x => x.product.id === p.id)) {
|
||||
picks.push({
|
||||
product: p,
|
||||
reason: `پیشنهاد هوشمند برای تسکین ${matchedSymptoms.join(" و ")}`
|
||||
reason: `پیشنهاد هوشمند برای تسکین ${matchedCondition}`
|
||||
});
|
||||
}
|
||||
});
|
||||
@ -182,7 +181,7 @@ export default function PetProfile({ initialView, advisorNeed, embedded = false
|
||||
if (activePet.age >= 7) {
|
||||
const seniorSupplements = products.filter(p =>
|
||||
(p.id === "herz-vital" || p.slug?.includes("herz") || p.name.includes("قلب") || p.benefits?.includes("مسن")) &&
|
||||
(p.suitableFor === activePet.type || p.suitableFor === "هر دو")
|
||||
isSpeciesCompatible(p.suitableFor, activePet.type)
|
||||
);
|
||||
seniorSupplements.forEach(p => {
|
||||
if (!picks.some(x => x.product.id === p.id)) {
|
||||
@ -192,7 +191,7 @@ export default function PetProfile({ initialView, advisorNeed, embedded = false
|
||||
} else if (activePet.age > 0 && activePet.age <= 1) {
|
||||
const growthSupplements = products.filter(p =>
|
||||
(p.name.includes("رشد") || p.benefits?.includes("تغذیه توله") || p.benefits?.includes("کلسیم")) &&
|
||||
(p.suitableFor === activePet.type || p.suitableFor === "هر دو")
|
||||
isSpeciesCompatible(p.suitableFor, activePet.type)
|
||||
);
|
||||
growthSupplements.forEach(p => {
|
||||
if (!picks.some(x => x.product.id === p.id)) {
|
||||
@ -204,7 +203,7 @@ export default function PetProfile({ initialView, advisorNeed, embedded = false
|
||||
if (activePet.activityLevel === "زیاد") {
|
||||
const performanceSupplements = products.filter(p =>
|
||||
(p.name.includes("انرژی") || p.benefits?.includes("عضله") || p.benefits?.includes("مفصل")) &&
|
||||
(p.suitableFor === activePet.type || p.suitableFor === "هر دو")
|
||||
isSpeciesCompatible(p.suitableFor, activePet.type)
|
||||
);
|
||||
performanceSupplements.forEach(p => {
|
||||
if (!picks.some(x => x.product.id === p.id)) {
|
||||
|
||||
@ -57,6 +57,7 @@ import { usePetStore } from "../lib/store/usePetStore";
|
||||
import { toast } from "sonner";
|
||||
import api from "../lib/services/api";
|
||||
import { DosageConfig } from "../lib/types";
|
||||
import { isSuitableForDog, isSuitableForCat, isSuitableForBoth, isSpeciesCompatible, matchesMedicalSymptom } from "../lib/petCompatibility";
|
||||
|
||||
interface CalculatorState {
|
||||
petType: "young" | "adult";
|
||||
@ -218,10 +219,8 @@ export default function ProductPage({ productSlug }: { productSlug: string }) {
|
||||
const compatibility = useMemo(() => {
|
||||
if (!activePet || !fullProduct) return null;
|
||||
|
||||
const sameSpecies = fullProduct.suitableFor === activePet.type || fullProduct.suitableFor === "هر دو";
|
||||
const matchedSymptom = (activePet.medicalConditions || []).find(mc =>
|
||||
(fullProduct.symptoms || []).some(s => mc.includes(s) || s.includes(mc))
|
||||
);
|
||||
const sameSpecies = isSpeciesCompatible(fullProduct.suitableFor, activePet.type);
|
||||
const matchedSymptom = matchesMedicalSymptom(activePet.medicalConditions, fullProduct.symptoms, fullProduct.benefits);
|
||||
|
||||
if (!sameSpecies) return { type: 'alert', text: `مخصوص ${fullProduct.suitableFor}` };
|
||||
if (matchedSymptom) return { type: 'success', text: `توصیه شده برای ${matchedSymptom} ${activePet.name}` };
|
||||
@ -469,12 +468,12 @@ export default function ProductPage({ productSlug }: { productSlug: string }) {
|
||||
|
||||
{/* Species Suitable Badges (Dog / Cat) */}
|
||||
<div className="absolute bottom-4 left-4 flex gap-1.5 z-10 pointer-events-none">
|
||||
{(product.suitableFor === "سگ" || product.suitableFor === "هر دو") && (
|
||||
{isSuitableForDog(product.suitableFor) && (
|
||||
<div className="w-7 h-7 bg-white/90 backdrop-blur-sm rounded-lg flex items-center justify-center text-medical-gray-600 border border-medical-gray-200 shadow-sm" title="مناسب برای سگ">
|
||||
<Dog className="w-4 h-4 text-canina-blue" />
|
||||
</div>
|
||||
)}
|
||||
{(product.suitableFor === "گربه" || product.suitableFor === "هر دو") && (
|
||||
{isSuitableForCat(product.suitableFor) && (
|
||||
<div className="w-7 h-7 bg-white/90 backdrop-blur-sm rounded-lg flex items-center justify-center text-medical-gray-600 border border-medical-gray-200 shadow-sm" title="مناسب برای گربه">
|
||||
<Cat className="w-4 h-4 text-canina-blue" />
|
||||
</div>
|
||||
@ -657,7 +656,24 @@ export default function ProductPage({ productSlug }: { productSlug: string }) {
|
||||
compatibility.type === 'success' ? 'bg-emerald-100 text-emerald-800 border border-emerald-200' :
|
||||
'bg-medical-gray-100 text-medical-gray-700 border border-medical-gray-200'
|
||||
}`}>
|
||||
{compatibility.type === 'alert' ? <AlertCircle className="w-3 h-3 shrink-0" /> : compatibility.type === 'success' ? <Heart className="w-3 h-3 shrink-0 text-emerald-600" /> : <Sparkles className="w-3 h-3 shrink-0 text-canina-blue" />}
|
||||
{compatibility.type === 'alert' ? (
|
||||
isSuitableForBoth(product.suitableFor) ? (
|
||||
<span className="flex items-center gap-0.5">
|
||||
<Dog className="w-3 h-3 shrink-0" />
|
||||
<Cat className="w-3 h-3 shrink-0" />
|
||||
</span>
|
||||
) : isSuitableForCat(product.suitableFor) ? (
|
||||
<Cat className="w-3 h-3 shrink-0" />
|
||||
) : isSuitableForDog(product.suitableFor) ? (
|
||||
<Dog className="w-3 h-3 shrink-0" />
|
||||
) : (
|
||||
<AlertCircle className="w-3 h-3 shrink-0" />
|
||||
)
|
||||
) : compatibility.type === 'success' ? (
|
||||
<Heart className="w-3 h-3 shrink-0 text-emerald-600" />
|
||||
) : (
|
||||
<Sparkles className="w-3 h-3 shrink-0 text-canina-blue" />
|
||||
)}
|
||||
<span>{compatibility.text}</span>
|
||||
</div>
|
||||
)}
|
||||
|
||||
@ -1325,7 +1325,7 @@ export default function UserDashboard() {
|
||||
<p className="text-[10px] font-bold text-white/70 mb-1">مجموع کمکهای اهدایی</p>
|
||||
<div className="flex items-baseline gap-2 flex-row-reverse justify-end">
|
||||
<span className="text-xl sm:text-3xl font-black italic">
|
||||
{toPersian((Math.max(profile.charityDonationTotal || 0, orders.reduce((sum, o) => sum + Number(o.charityDonation || 0), 0))).toLocaleString())}
|
||||
{toPersian((Number(profile.charityDonationTotal) || 0).toLocaleString())}
|
||||
</span>
|
||||
<span className="text-xs font-bold opacity-60">تومان</span>
|
||||
</div>
|
||||
@ -1336,7 +1336,7 @@ export default function UserDashboard() {
|
||||
<Sparkles className="w-3 h-3 sm:w-4 sm:h-4 text-white" />
|
||||
</div>
|
||||
<p className="text-[10px] sm:text-xs font-black leading-relaxed">
|
||||
همکاری شما باعث تامین هزینه <span className="text-xs sm:text-sm text-yellow-300 mx-1">{toPersian(Math.floor((profile.charityDonationTotal || 0) / 15000).toString())} وعده غذا</span> برای حیوانات بیپناه شده است.
|
||||
همکاری شما باعث تامین هزینه <span className="text-xs sm:text-sm text-yellow-300 mx-1">{toPersian(Math.floor((Number(profile.charityDonationTotal) || 0) / 15000).toString())} وعده غذا</span> برای حیوانات بیپناه شده است.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@ -60,9 +60,14 @@ const getFormBadge = (unit?: string, name?: string) => {
|
||||
|
||||
// Helper for pet target species icon
|
||||
const getSpeciesBadge = (suitableFor?: string) => {
|
||||
if (suitableFor === "سگ") return { label: "مخصوص سگ", icon: Dog };
|
||||
if (suitableFor === "گربه") return { label: "مخصوص گربه", icon: Cat };
|
||||
return { label: "سگ و گربه", icon: Heart };
|
||||
const s = (suitableFor || "").trim().toLowerCase();
|
||||
const isDog = s === "سگ" || s.includes("سگ") || s.includes("dog");
|
||||
const isCat = s === "گربه" || s.includes("گربه") || s.includes("cat");
|
||||
const isBoth = s.includes("هر دو") || s.includes("both") || (isDog && isCat);
|
||||
|
||||
if (isBoth) return { label: "سگ و گربه", isBoth: true, icon: Dog, iconCat: Cat };
|
||||
if (isCat) return { label: "مخصوص گربه", isBoth: false, icon: Cat };
|
||||
return { label: "مخصوص سگ", isBoth: false, icon: Dog };
|
||||
};
|
||||
|
||||
export default function CatalogPageSpread({
|
||||
@ -380,7 +385,14 @@ export default function CatalogPageSpread({
|
||||
{/* 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" />
|
||||
{speciesBadge.isBoth ? (
|
||||
<span className="flex items-center gap-0.5">
|
||||
<Dog className="w-3 h-3 text-slate-500 shrink-0" />
|
||||
<Cat className="w-3 h-3 text-slate-500 shrink-0" />
|
||||
</span>
|
||||
) : (
|
||||
<SpeciesIcon className="w-3 h-3 text-slate-500 shrink-0" />
|
||||
)}
|
||||
<span className="whitespace-nowrap">{speciesBadge.label}</span>
|
||||
</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">
|
||||
|
||||
85
frontend/application/lib/petCompatibility.ts
Normal file
85
frontend/application/lib/petCompatibility.ts
Normal file
@ -0,0 +1,85 @@
|
||||
export function isSuitableForDog(suitableFor?: string): boolean {
|
||||
if (!suitableFor) return true;
|
||||
const s = suitableFor.trim().toLowerCase();
|
||||
return s === "سگ" || s.includes("سگ") || s.includes("هر دو") || s.includes("مشترک") || s.includes("both") || s.includes("dog");
|
||||
}
|
||||
|
||||
export function isSuitableForCat(suitableFor?: string): boolean {
|
||||
if (!suitableFor) return true;
|
||||
const s = suitableFor.trim().toLowerCase();
|
||||
return s === "گربه" || s.includes("گربه") || s.includes("هر دو") || s.includes("مشترک") || s.includes("both") || s.includes("cat");
|
||||
}
|
||||
|
||||
export function isSuitableForBoth(suitableFor?: string): boolean {
|
||||
if (!suitableFor) return true;
|
||||
const s = suitableFor.trim().toLowerCase();
|
||||
if (s.includes("هر دو") || s.includes("مشترک") || s.includes("both")) return true;
|
||||
return isSuitableForDog(s) && isSuitableForCat(s);
|
||||
}
|
||||
|
||||
export function isSpeciesCompatible(suitableFor: string | undefined, petType: string | undefined): boolean {
|
||||
if (!petType) return true;
|
||||
const isDog = petType.includes("سگ") || petType.toLowerCase().includes("dog");
|
||||
const isCat = petType.includes("گربه") || petType.toLowerCase().includes("cat");
|
||||
|
||||
if (isSuitableForBoth(suitableFor)) return true;
|
||||
if (isDog) return isSuitableForDog(suitableFor);
|
||||
if (isCat) return isSuitableForCat(suitableFor);
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Partial / fuzzy matching between pet medical conditions and product symptoms
|
||||
*/
|
||||
export function matchesMedicalSymptom(
|
||||
petConditions: string[] | undefined,
|
||||
productSymptoms: string[] | undefined,
|
||||
productBenefits?: string
|
||||
): string | null {
|
||||
if (!petConditions || petConditions.length === 0) return null;
|
||||
|
||||
// Filter out negative conditions like "هیچکدام"
|
||||
const validConditions = petConditions.filter(
|
||||
(c) => c && !c.includes("هیچکدام") && !c.includes("سلامت کامل")
|
||||
);
|
||||
if (validConditions.length === 0) return null;
|
||||
|
||||
const symptoms = (productSymptoms || []).filter(Boolean);
|
||||
const benefitsText = (productBenefits || "").toLowerCase();
|
||||
|
||||
for (const condition of validConditions) {
|
||||
const condNorm = condition.trim().toLowerCase();
|
||||
|
||||
// Check direct symptom list
|
||||
for (const symptom of symptoms) {
|
||||
const sympNorm = symptom.trim().toLowerCase();
|
||||
if (
|
||||
condNorm.includes(sympNorm) ||
|
||||
sympNorm.includes(condNorm) ||
|
||||
// Check core keywords
|
||||
(condNorm.includes("مفصل") && sympNorm.includes("مفصل")) ||
|
||||
(condNorm.includes("گوارش") && (sympNorm.includes("گوارش") || sympNorm.includes("اسهال") || sympNorm.includes("غذا"))) ||
|
||||
(condNorm.includes("مو") && (sympNorm.includes("مو") || sympNorm.includes("پوست") || sympNorm.includes("خارش"))) ||
|
||||
(condNorm.includes("اشتها") && sympNorm.includes("اشتها")) ||
|
||||
(condNorm.includes("باردار") && sympNorm.includes("باردار")) ||
|
||||
(condNorm.includes("زایمان") && (sympNorm.includes("شیر") || sympNorm.includes("توله") || sympNorm.includes("زایمان")))
|
||||
) {
|
||||
return condition;
|
||||
}
|
||||
}
|
||||
|
||||
// Also check benefits text if available
|
||||
if (benefitsText) {
|
||||
if (
|
||||
(condNorm.includes("مفصل") && benefitsText.includes("مفصل")) ||
|
||||
(condNorm.includes("گوارش") && benefitsText.includes("گوارش")) ||
|
||||
(condNorm.includes("مو") && (benefitsText.includes("ریزش") || benefitsText.includes("پوست"))) ||
|
||||
(condNorm.includes("اشتها") && benefitsText.includes("اشتها"))
|
||||
) {
|
||||
return condition;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
@ -1,26 +1,26 @@
|
||||
{
|
||||
"0": "Roles",
|
||||
"1": "app.module.ts",
|
||||
"2": "payment.service.ts",
|
||||
"2": "getMediaUrl",
|
||||
"3": "productService.ts",
|
||||
"4": "UserDashboard.tsx",
|
||||
"4": "PetProfile.tsx",
|
||||
"5": "CmsController",
|
||||
"6": "tickets.controller.ts",
|
||||
"7": "SmsSettingsPage.tsx",
|
||||
"8": "SmsService",
|
||||
"9": "devDependencies",
|
||||
"10": "ReviewsService",
|
||||
"11": "ConfirmModal.tsx",
|
||||
"10": "reviews.controller.ts",
|
||||
"11": "UsersService",
|
||||
"12": "index.ts",
|
||||
"13": "app-audit-verification.e2e-spec.js",
|
||||
"14": "toPersian",
|
||||
"14": "UserDashboard.tsx",
|
||||
"15": "src/services/api.ts",
|
||||
"16": "DoctorQueryDto",
|
||||
"17": "schema.ts",
|
||||
"18": "JwtAuthGuard",
|
||||
"19": "admin.controller.ts",
|
||||
"20": "CreateVideoDto",
|
||||
"21": "auth.service.ts",
|
||||
"21": "auth.module.ts",
|
||||
"22": "ProductDto",
|
||||
"23": "MenuService",
|
||||
"24": "BE-001",
|
||||
@ -35,7 +35,7 @@
|
||||
"33": "WholesaleApplyDto",
|
||||
"34": "B2BService",
|
||||
"35": "ContactService",
|
||||
"36": "FaqService",
|
||||
"36": "FaqController",
|
||||
"37": "راهنمای تست سیستم (Software Testing)",
|
||||
"38": "Button",
|
||||
"39": "CategoriesController",
|
||||
@ -51,13 +51,13 @@
|
||||
"49": "devDependencies",
|
||||
"50": "devDependencies",
|
||||
"51": "BlogsController",
|
||||
"52": "PrescriptionsService",
|
||||
"52": "prescriptions.controller.ts",
|
||||
"53": "SmartAdvisorService",
|
||||
"54": "Button.tsx",
|
||||
"55": "UITexts.tsx",
|
||||
"56": "Orders.tsx",
|
||||
"57": "Role & Core Objective",
|
||||
"58": "AuthService",
|
||||
"58": "auth.service.ts",
|
||||
"59": "compilerOptions",
|
||||
"60": "CreateUserDto",
|
||||
"61": "ProductPage.tsx",
|
||||
@ -84,15 +84,15 @@
|
||||
"82": "scripts",
|
||||
"83": "dependencies",
|
||||
"84": "Role & Core Objective",
|
||||
"85": "RegisterDto",
|
||||
"85": "auth.controller.ts",
|
||||
"86": "zibal.service.ts",
|
||||
"87": "dependencies",
|
||||
"88": "CreateEBankCheckoutDto",
|
||||
"89": "seed-products.ts",
|
||||
"90": "useCartStore",
|
||||
"90": "orderService.ts",
|
||||
"91": "Reconciled Audit Roles & Assignments",
|
||||
"92": "OrdersService",
|
||||
"93": "ArchivePage.tsx",
|
||||
"93": "components/Skeleton.tsx",
|
||||
"94": "Phase 3.1 — Human Review Preparation and Master Backlog Critique",
|
||||
"95": "getSeoConfig",
|
||||
"96": "compilerOptions",
|
||||
@ -122,7 +122,7 @@
|
||||
"120": "compilerOptions",
|
||||
"121": "backend/README.md",
|
||||
"122": "AdminService",
|
||||
"123": "UsersService",
|
||||
"123": "UsersController",
|
||||
"124": "Repository Map",
|
||||
"125": "validate_integrity.js",
|
||||
"126": "admin-panel/package.json",
|
||||
@ -143,15 +143,15 @@
|
||||
"141": "application/package.json",
|
||||
"142": "start-dev.js",
|
||||
"143": "generate-openapi.js",
|
||||
"144": "PodcastPlayerModal.tsx",
|
||||
"145": "AdminLoginDto",
|
||||
"144": "lib/services/api.ts",
|
||||
"145": "orders.service.ts",
|
||||
"146": "System Discovery",
|
||||
"147": "HomeController",
|
||||
"148": "VerifyOtpDto",
|
||||
"148": "RouteErrorBoundary",
|
||||
"149": "wiki/[slug]/page.tsx",
|
||||
"150": "Product Requirement Document (PRD)",
|
||||
"151": "@types/node",
|
||||
"152": "RevalidationService",
|
||||
"151": "AddressDto",
|
||||
"152": "RedisService",
|
||||
"153": "exclude",
|
||||
"154": "Baseline Command Plan & Reconciled Command History",
|
||||
"155": "seo-backfill.ts",
|
||||
@ -183,8 +183,8 @@
|
||||
"181": "⚙️ Backend Technical Review (05_dev_backend)",
|
||||
"182": "🎨 Frontend & Admin Panel Technical Review (06_dev_frontend)",
|
||||
"183": "🚀 SEO & Content Strategy Review (12_seo_content)",
|
||||
"184": "AppModule",
|
||||
"185": "eslint-config-next",
|
||||
"184": "FaqService",
|
||||
"185": "Reviews.tsx",
|
||||
"186": "seed-ui-texts.ts",
|
||||
"187": "seed-wiki.ts",
|
||||
"188": "update-blog.dto.ts",
|
||||
@ -196,13 +196,14 @@
|
||||
"194": "Raw Finding Verification & Disposition Report",
|
||||
"195": "React + TypeScript + Vite",
|
||||
"196": "Select.tsx",
|
||||
"197": "userStore.ts",
|
||||
"197": "ClientLayout.tsx",
|
||||
"198": "@tailwindcss/postcss",
|
||||
"199": "SmsLogQueryDto",
|
||||
"199": "track/page.tsx",
|
||||
"200": "application/README.md",
|
||||
"201": "deploy.sh",
|
||||
"202": "🔒 Security & Performance Review (09_devops_security)",
|
||||
"203": "👁️ UX & Persona Interface Review (08_visual_qa)",
|
||||
"204": "bcrypt",
|
||||
"205": "prisma/scientificTerms.ts",
|
||||
"206": "seed-blogs.ts",
|
||||
"207": "seed-custom.ts",
|
||||
@ -218,9 +219,11 @@
|
||||
"217": "sync_honest_manifest.js",
|
||||
"218": "sync_manifest.js",
|
||||
"219": "FormField.tsx",
|
||||
"220": "class-transformer",
|
||||
"221": "Textarea.tsx",
|
||||
"222": "admin-panel/tsconfig.json",
|
||||
"223": "tailwindcss",
|
||||
"224": "helmet",
|
||||
"225": "next.config.ts",
|
||||
"226": "Shabnam Font README",
|
||||
"227": "AGENTS.md",
|
||||
@ -228,7 +231,8 @@
|
||||
"229": ".agents/workflows/graphify.md",
|
||||
"230": "instructions.md",
|
||||
"231": "@nestjs/schematics",
|
||||
"232": "prisma",
|
||||
"232": "js-yaml",
|
||||
"233": "@nestjs/core",
|
||||
"234": "source-map-support",
|
||||
"235": "ts-loader",
|
||||
"236": "ts-node",
|
||||
@ -260,6 +264,7 @@
|
||||
"262": "User Logout API",
|
||||
"263": "generate-openapi.d.ts",
|
||||
"264": "@types/compression",
|
||||
"265": "@nestjs/jwt",
|
||||
"266": "@types/express",
|
||||
"267": "@types/jest",
|
||||
"268": "@types/multer",
|
||||
@ -289,14 +294,23 @@
|
||||
"292": "Production Docker Compose",
|
||||
"293": "Staging Docker Compose",
|
||||
"294": "ZibalService",
|
||||
"295": "@nestjs/throttler",
|
||||
"296": "passport",
|
||||
"297": "ZibalEBankService",
|
||||
"298": ".initiateOrderPayment",
|
||||
"299": "@tailwindcss/postcss",
|
||||
"300": "typescript",
|
||||
"301": "reflect-metadata",
|
||||
"302": "typescript-eslint",
|
||||
"303": "swagger-ui-express",
|
||||
"304": "eslint",
|
||||
"305": "eslint-config-prettier",
|
||||
"306": "@eslint/js",
|
||||
"307": "@eslint/eslintrc",
|
||||
"308": "jest",
|
||||
"309": "axios",
|
||||
"310": "tailwindcss",
|
||||
"311": "@nestjs/cli",
|
||||
"312": "@types/passport-jwt",
|
||||
"313": "20260526160916_add_ui_texts_and_scientific_terms/migration.sql",
|
||||
"314": "eslint-plugin-prettier",
|
||||
@ -304,9 +318,15 @@
|
||||
"316": "globals",
|
||||
"317": "revalidate/route.ts",
|
||||
"318": "MaskableField.tsx",
|
||||
"319": "@nestjs/testing",
|
||||
"320": "prettier",
|
||||
"321": "orders/page.tsx",
|
||||
"322": "pets/page.tsx",
|
||||
"323": "ts-jest",
|
||||
"324": "@types/js-yaml",
|
||||
"325": "@types/react-dom",
|
||||
"326": "@types/supertest",
|
||||
"327": "eslint-plugin-react-refresh",
|
||||
"328": "tailwindcss",
|
||||
"329": "typescript-eslint"
|
||||
}
|
||||
|
||||
File diff suppressed because one or more lines are too long
@ -1,16 +1,16 @@
|
||||
{
|
||||
"0": "Roles",
|
||||
"1": "app.module.ts",
|
||||
"2": "AdminTransactionFilterDto",
|
||||
"2": "payment.service.ts",
|
||||
"3": "productService.ts",
|
||||
"4": "PetProfile.tsx",
|
||||
"4": "UserDashboard.tsx",
|
||||
"5": "CmsController",
|
||||
"6": "TicketsService",
|
||||
"6": "tickets.controller.ts",
|
||||
"7": "SmsSettingsPage.tsx",
|
||||
"8": "SettingsController",
|
||||
"8": "SmsService",
|
||||
"9": "devDependencies",
|
||||
"10": "CreateReviewDto",
|
||||
"11": "WikiController",
|
||||
"10": "ReviewsService",
|
||||
"11": "ConfirmModal.tsx",
|
||||
"12": "index.ts",
|
||||
"13": "app-audit-verification.e2e-spec.js",
|
||||
"14": "toPersian",
|
||||
@ -20,8 +20,8 @@
|
||||
"18": "JwtAuthGuard",
|
||||
"19": "admin.controller.ts",
|
||||
"20": "CreateVideoDto",
|
||||
"21": ".getSmsConfig",
|
||||
"22": "BlogsService",
|
||||
"21": "auth.service.ts",
|
||||
"22": "ProductDto",
|
||||
"23": "MenuService",
|
||||
"24": "BE-001",
|
||||
"25": "FE-001",
|
||||
@ -47,26 +47,26 @@
|
||||
"45": "What You Must Do When Invoked",
|
||||
"46": "20260526145407_init/migration.sql",
|
||||
"47": "IngredientsService",
|
||||
"48": "auth.controller.ts",
|
||||
"48": "AuthController",
|
||||
"49": "devDependencies",
|
||||
"50": "devDependencies",
|
||||
"51": "BlogsController",
|
||||
"52": "PrescriptionsController",
|
||||
"52": "PrescriptionsService",
|
||||
"53": "SmartAdvisorService",
|
||||
"54": "Button.tsx",
|
||||
"55": "UITexts.tsx",
|
||||
"56": "Orders.tsx",
|
||||
"57": "Role & Core Objective",
|
||||
"58": "UserDashboard.tsx",
|
||||
"58": "AuthService",
|
||||
"59": "compilerOptions",
|
||||
"60": "CreateUserDto",
|
||||
"61": "ProductPage.tsx",
|
||||
"62": "WikiService",
|
||||
"62": "torob.controller.ts",
|
||||
"63": "dependencies",
|
||||
"64": "compilerOptions",
|
||||
"65": "admin.service.ts",
|
||||
"66": "AdminQueryDto",
|
||||
"67": "ReportsController",
|
||||
"67": "admin.module.ts",
|
||||
"68": "useSettingsStore",
|
||||
"69": "Required Review Group Closures",
|
||||
"70": "compilerOptions",
|
||||
@ -84,17 +84,17 @@
|
||||
"82": "scripts",
|
||||
"83": "dependencies",
|
||||
"84": "Role & Core Objective",
|
||||
"85": "auth.module.ts",
|
||||
"85": "RegisterDto",
|
||||
"86": "zibal.service.ts",
|
||||
"87": "dependencies",
|
||||
"88": "payment.controller.ts",
|
||||
"88": "CreateEBankCheckoutDto",
|
||||
"89": "seed-products.ts",
|
||||
"90": "OrderService",
|
||||
"90": "useCartStore",
|
||||
"91": "Reconciled Audit Roles & Assignments",
|
||||
"92": "OrdersService",
|
||||
"93": "ArchivePage.tsx",
|
||||
"94": "Phase 3.1 — Human Review Preparation and Master Backlog Critique",
|
||||
"95": "wiki/[slug]/page.tsx",
|
||||
"95": "getSeoConfig",
|
||||
"96": "compilerOptions",
|
||||
"97": "PaymentService",
|
||||
"98": "scripts",
|
||||
@ -105,7 +105,7 @@
|
||||
"103": "Comprehensive Change Log",
|
||||
"104": "Products.tsx",
|
||||
"105": "Operational Rules & Boundaries",
|
||||
"106": "cms.controller.ts",
|
||||
"106": "InitiatePaymentDto",
|
||||
"107": "PaginationDto",
|
||||
"108": "PrismaService",
|
||||
"109": "1. Summary of Integrity Repairs Performed",
|
||||
@ -121,13 +121,13 @@
|
||||
"119": "compilerOptions",
|
||||
"120": "compilerOptions",
|
||||
"121": "backend/README.md",
|
||||
"122": "AdminController",
|
||||
"122": "AdminService",
|
||||
"123": "UsersService",
|
||||
"124": "Repository Map",
|
||||
"125": "validate_integrity.js",
|
||||
"126": "admin-panel/package.json",
|
||||
"127": "Sahel-Font",
|
||||
"128": "AdminService",
|
||||
"128": "Body",
|
||||
"129": "Reports.tsx",
|
||||
"130": "Sahel-Font",
|
||||
"131": "Role & Core Objective",
|
||||
@ -143,15 +143,15 @@
|
||||
"141": "application/package.json",
|
||||
"142": "start-dev.js",
|
||||
"143": "generate-openapi.js",
|
||||
"144": "SafeImage.tsx",
|
||||
"145": "AuthService",
|
||||
"144": "PodcastPlayerModal.tsx",
|
||||
"145": "AdminLoginDto",
|
||||
"146": "System Discovery",
|
||||
"147": "HomeController",
|
||||
"148": "track/page.tsx",
|
||||
"149": "trust-seals/page.tsx",
|
||||
"148": "VerifyOtpDto",
|
||||
"149": "wiki/[slug]/page.tsx",
|
||||
"150": "Product Requirement Document (PRD)",
|
||||
"151": "menu.module.ts",
|
||||
"152": "auth.service.ts",
|
||||
"151": "@types/node",
|
||||
"152": "RevalidationService",
|
||||
"153": "exclude",
|
||||
"154": "Baseline Command Plan & Reconciled Command History",
|
||||
"155": "seo-backfill.ts",
|
||||
@ -183,8 +183,8 @@
|
||||
"181": "⚙️ Backend Technical Review (05_dev_backend)",
|
||||
"182": "🎨 Frontend & Admin Panel Technical Review (06_dev_frontend)",
|
||||
"183": "🚀 SEO & Content Strategy Review (12_seo_content)",
|
||||
"184": "MetricsController",
|
||||
"185": "RouteErrorBoundary",
|
||||
"184": "AppModule",
|
||||
"185": "eslint-config-next",
|
||||
"186": "seed-ui-texts.ts",
|
||||
"187": "seed-wiki.ts",
|
||||
"188": "update-blog.dto.ts",
|
||||
@ -203,7 +203,6 @@
|
||||
"201": "deploy.sh",
|
||||
"202": "🔒 Security & Performance Review (09_devops_security)",
|
||||
"203": "👁️ UX & Persona Interface Review (08_visual_qa)",
|
||||
"204": "zibal-ebank.service.ts",
|
||||
"205": "prisma/scientificTerms.ts",
|
||||
"206": "seed-blogs.ts",
|
||||
"207": "seed-custom.ts",
|
||||
@ -219,11 +218,9 @@
|
||||
"217": "sync_honest_manifest.js",
|
||||
"218": "sync_manifest.js",
|
||||
"219": "FormField.tsx",
|
||||
"220": "jest",
|
||||
"221": "Textarea.tsx",
|
||||
"222": "admin-panel/tsconfig.json",
|
||||
"223": "tailwindcss",
|
||||
"224": "class-transformer",
|
||||
"225": "next.config.ts",
|
||||
"226": "Shabnam Font README",
|
||||
"227": "AGENTS.md",
|
||||
@ -232,7 +229,6 @@
|
||||
"230": "instructions.md",
|
||||
"231": "@nestjs/schematics",
|
||||
"232": "prisma",
|
||||
"233": "Reviews.tsx",
|
||||
"234": "source-map-support",
|
||||
"235": "ts-loader",
|
||||
"236": "ts-node",
|
||||
@ -264,7 +260,6 @@
|
||||
"262": "User Logout API",
|
||||
"263": "generate-openapi.d.ts",
|
||||
"264": "@types/compression",
|
||||
"265": "helmet",
|
||||
"266": "@types/express",
|
||||
"267": "@types/jest",
|
||||
"268": "@types/multer",
|
||||
@ -294,23 +289,14 @@
|
||||
"292": "Production Docker Compose",
|
||||
"293": "Staging Docker Compose",
|
||||
"294": "ZibalService",
|
||||
"295": "js-yaml",
|
||||
"296": "@nestjs/core",
|
||||
"297": "ZibalEBankService",
|
||||
"298": ".initiateOrderPayment",
|
||||
"299": "@tailwindcss/postcss",
|
||||
"300": "typescript",
|
||||
"301": "@nestjs/jwt",
|
||||
"302": "typescript-eslint",
|
||||
"303": "@nestjs/throttler",
|
||||
"304": "passport",
|
||||
"305": "reflect-metadata",
|
||||
"306": "@eslint/js",
|
||||
"307": "swagger-ui-express",
|
||||
"308": "eslint-config-prettier",
|
||||
"309": "axios",
|
||||
"310": "tailwindcss",
|
||||
"311": "@eslint/eslintrc",
|
||||
"312": "@types/passport-jwt",
|
||||
"313": "20260526160916_add_ui_texts_and_scientific_terms/migration.sql",
|
||||
"314": "eslint-plugin-prettier",
|
||||
@ -318,17 +304,9 @@
|
||||
"316": "globals",
|
||||
"317": "revalidate/route.ts",
|
||||
"318": "MaskableField.tsx",
|
||||
"319": "@nestjs/cli",
|
||||
"320": "@nestjs/testing",
|
||||
"321": "orders/page.tsx",
|
||||
"322": "pets/page.tsx",
|
||||
"323": "prettier",
|
||||
"324": "eslint",
|
||||
"325": "@types/react-dom",
|
||||
"326": "@types/js-yaml",
|
||||
"327": "eslint-plugin-react-refresh",
|
||||
"328": "@types/supertest",
|
||||
"329": "typescript-eslint",
|
||||
"330": "@nestjs/swagger",
|
||||
"331": "tailwindcss"
|
||||
"329": "typescript-eslint"
|
||||
}
|
||||
|
||||
@ -1,32 +1,32 @@
|
||||
# Graph Report - canina (2026-09-02)
|
||||
# Graph Report - canina (2026-09-05)
|
||||
|
||||
## Corpus Check
|
||||
- 599 files · ~1,084,689 words
|
||||
- 601 files · ~1,114,020 words
|
||||
- Verdict: corpus is large enough that graph structure adds value.
|
||||
|
||||
## Summary
|
||||
- 4208 nodes · 7643 edges · 332 communities (212 shown, 120 thin omitted)
|
||||
- Extraction: 96% EXTRACTED · 4% INFERRED · 0% AMBIGUOUS · INFERRED: 288 edges (avg confidence: 0.79)
|
||||
- 4234 nodes · 7717 edges · 310 communities (215 shown, 95 thin omitted)
|
||||
- Extraction: 96% EXTRACTED · 4% INFERRED · 0% AMBIGUOUS · INFERRED: 298 edges (avg confidence: 0.79)
|
||||
- Token cost: 0 input · 0 output
|
||||
|
||||
## Graph Freshness
|
||||
- Built from commit: `ceaab10f`
|
||||
- Built from commit: `e15c25da`
|
||||
- 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
|
||||
- AdminTransactionFilterDto
|
||||
- payment.service.ts
|
||||
- productService.ts
|
||||
- PetProfile.tsx
|
||||
- UserDashboard.tsx
|
||||
- CmsController
|
||||
- TicketsService
|
||||
- tickets.controller.ts
|
||||
- SmsSettingsPage.tsx
|
||||
- SettingsController
|
||||
- SmsService
|
||||
- devDependencies
|
||||
- CreateReviewDto
|
||||
- WikiController
|
||||
- ReviewsService
|
||||
- ConfirmModal.tsx
|
||||
- index.ts
|
||||
- app-audit-verification.e2e-spec.js
|
||||
- toPersian
|
||||
@ -36,7 +36,8 @@
|
||||
- JwtAuthGuard
|
||||
- admin.controller.ts
|
||||
- CreateVideoDto
|
||||
- BlogsService
|
||||
- auth.service.ts
|
||||
- ProductDto
|
||||
- MenuService
|
||||
- BE-001
|
||||
- FE-001
|
||||
@ -62,26 +63,26 @@
|
||||
- What You Must Do When Invoked
|
||||
- 20260526145407_init/migration.sql
|
||||
- IngredientsService
|
||||
- auth.controller.ts
|
||||
- AuthController
|
||||
- devDependencies
|
||||
- devDependencies
|
||||
- BlogsController
|
||||
- PrescriptionsController
|
||||
- PrescriptionsService
|
||||
- SmartAdvisorService
|
||||
- Button.tsx
|
||||
- UITexts.tsx
|
||||
- Orders.tsx
|
||||
- Role & Core Objective
|
||||
- UserDashboard.tsx
|
||||
- AuthService
|
||||
- compilerOptions
|
||||
- CreateUserDto
|
||||
- ProductPage.tsx
|
||||
- WikiService
|
||||
- torob.controller.ts
|
||||
- dependencies
|
||||
- compilerOptions
|
||||
- admin.service.ts
|
||||
- AdminQueryDto
|
||||
- ReportsController
|
||||
- admin.module.ts
|
||||
- useSettingsStore
|
||||
- Required Review Group Closures
|
||||
- compilerOptions
|
||||
@ -99,17 +100,17 @@
|
||||
- scripts
|
||||
- dependencies
|
||||
- Role & Core Objective
|
||||
- auth.module.ts
|
||||
- RegisterDto
|
||||
- zibal.service.ts
|
||||
- dependencies
|
||||
- payment.controller.ts
|
||||
- CreateEBankCheckoutDto
|
||||
- seed-products.ts
|
||||
- OrderService
|
||||
- useCartStore
|
||||
- Reconciled Audit Roles & Assignments
|
||||
- OrdersService
|
||||
- ArchivePage.tsx
|
||||
- Phase 3.1 — Human Review Preparation and Master Backlog Critique
|
||||
- wiki/[slug]/page.tsx
|
||||
- getSeoConfig
|
||||
- compilerOptions
|
||||
- PaymentService
|
||||
- scripts
|
||||
@ -120,7 +121,7 @@
|
||||
- Comprehensive Change Log
|
||||
- Products.tsx
|
||||
- Operational Rules & Boundaries
|
||||
- cms.controller.ts
|
||||
- InitiatePaymentDto
|
||||
- PaginationDto
|
||||
- PrismaService
|
||||
- 1. Summary of Integrity Repairs Performed
|
||||
@ -136,13 +137,13 @@
|
||||
- compilerOptions
|
||||
- compilerOptions
|
||||
- backend/README.md
|
||||
- AdminController
|
||||
- AdminService
|
||||
- UsersService
|
||||
- Repository Map
|
||||
- validate_integrity.js
|
||||
- admin-panel/package.json
|
||||
- Sahel-Font
|
||||
- AdminService
|
||||
- Body
|
||||
- Reports.tsx
|
||||
- Sahel-Font
|
||||
- Role & Core Objective
|
||||
@ -158,15 +159,15 @@
|
||||
- application/package.json
|
||||
- start-dev.js
|
||||
- generate-openapi.js
|
||||
- SafeImage.tsx
|
||||
- AuthService
|
||||
- PodcastPlayerModal.tsx
|
||||
- AdminLoginDto
|
||||
- System Discovery
|
||||
- HomeController
|
||||
- track/page.tsx
|
||||
- trust-seals/page.tsx
|
||||
- VerifyOtpDto
|
||||
- wiki/[slug]/page.tsx
|
||||
- Product Requirement Document (PRD)
|
||||
- menu.module.ts
|
||||
- auth.service.ts
|
||||
- @types/node
|
||||
- RevalidationService
|
||||
- exclude
|
||||
- Baseline Command Plan & Reconciled Command History
|
||||
- seo-backfill.ts
|
||||
@ -197,8 +198,8 @@
|
||||
- ⚙️ Backend Technical Review (05_dev_backend)
|
||||
- 🎨 Frontend & Admin Panel Technical Review (06_dev_frontend)
|
||||
- 🚀 SEO & Content Strategy Review (12_seo_content)
|
||||
- MetricsController
|
||||
- RouteErrorBoundary
|
||||
- AppModule
|
||||
- eslint-config-next
|
||||
- seed-ui-texts.ts
|
||||
- seed-wiki.ts
|
||||
- update-blog.dto.ts
|
||||
@ -217,7 +218,6 @@
|
||||
- deploy.sh
|
||||
- 🔒 Security & Performance Review (09_devops_security)
|
||||
- 👁️ UX & Persona Interface Review (08_visual_qa)
|
||||
- zibal-ebank.service.ts
|
||||
- prisma/scientificTerms.ts
|
||||
- seed-blogs.ts
|
||||
- seed-custom.ts
|
||||
@ -233,11 +233,9 @@
|
||||
- sync_honest_manifest.js
|
||||
- sync_manifest.js
|
||||
- FormField.tsx
|
||||
- jest
|
||||
- Textarea.tsx
|
||||
- admin-panel/tsconfig.json
|
||||
- tailwindcss
|
||||
- class-transformer
|
||||
- next.config.ts
|
||||
- Shabnam Font README
|
||||
- AGENTS.md
|
||||
@ -246,7 +244,6 @@
|
||||
- instructions.md
|
||||
- @nestjs/schematics
|
||||
- prisma
|
||||
- Reviews.tsx
|
||||
- source-map-support
|
||||
- ts-loader
|
||||
- ts-node
|
||||
@ -274,7 +271,6 @@
|
||||
- User Login API
|
||||
- User Logout API
|
||||
- @types/compression
|
||||
- helmet
|
||||
- @types/express
|
||||
- @types/jest
|
||||
- @types/multer
|
||||
@ -293,21 +289,12 @@
|
||||
- Production Docker Compose
|
||||
- Staging Docker Compose
|
||||
- ZibalService
|
||||
- js-yaml
|
||||
- @nestjs/core
|
||||
- ZibalEBankService
|
||||
- .initiateOrderPayment
|
||||
- @tailwindcss/postcss
|
||||
- typescript
|
||||
- @nestjs/jwt
|
||||
- typescript-eslint
|
||||
- @nestjs/throttler
|
||||
- passport
|
||||
- reflect-metadata
|
||||
- @eslint/js
|
||||
- swagger-ui-express
|
||||
- eslint-config-prettier
|
||||
- @eslint/eslintrc
|
||||
- @types/passport-jwt
|
||||
- 20260526160916_add_ui_texts_and_scientific_terms/migration.sql
|
||||
- eslint-plugin-prettier
|
||||
@ -315,24 +302,16 @@
|
||||
- globals
|
||||
- revalidate/route.ts
|
||||
- MaskableField.tsx
|
||||
- @nestjs/cli
|
||||
- @nestjs/testing
|
||||
- prettier
|
||||
- eslint
|
||||
- @types/react-dom
|
||||
- @types/js-yaml
|
||||
- eslint-plugin-react-refresh
|
||||
- @types/supertest
|
||||
- typescript-eslint
|
||||
- @nestjs/swagger
|
||||
- tailwindcss
|
||||
|
||||
## God Nodes (most connected - your core abstractions)
|
||||
1. `Roles()` - 106 edges
|
||||
1. `Roles()` - 108 edges
|
||||
2. `PrismaService` - 89 edges
|
||||
3. `useSettingsStore` - 61 edges
|
||||
4. `api` - 44 edges
|
||||
5. `SmsService` - 43 edges
|
||||
4. `SmsService` - 51 edges
|
||||
5. `api` - 44 edges
|
||||
6. `PaginationDto` - 41 edges
|
||||
7. `AdminService` - 40 edges
|
||||
8. `AdminController` - 39 edges
|
||||
@ -352,75 +331,75 @@
|
||||
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 (332 total, 120 thin omitted)
|
||||
## Communities (310 total, 95 thin omitted)
|
||||
|
||||
### Community 0 - "Roles"
|
||||
Cohesion: 0.24
|
||||
Nodes (13): Roles(), PaymentController, ApiBearerAuth, ApiOperation, ApiTags, Body, Controller, Get (+5 more)
|
||||
|
||||
### Community 1 - "app.module.ts"
|
||||
Cohesion: 0.06
|
||||
Nodes (39): B2BModule, Module, BannersModule, Module, CmsModule, Module, RevalidationModule, Global (+31 more)
|
||||
Cohesion: 0.07
|
||||
Nodes (36): B2BModule, Module, BannersModule, Module, CmsModule, Module, SmsModule, Global (+28 more)
|
||||
|
||||
### Community 2 - "AdminTransactionFilterDto"
|
||||
Cohesion: 0.22
|
||||
Nodes (7): AdminTransactionFilterDto, ApiPropertyOptional, IsIn, IsNumber, IsOptional, IsString, Type
|
||||
### Community 2 - "payment.service.ts"
|
||||
Cohesion: 0.20
|
||||
Nodes (8): AdminTransactionFilterDto, ApiPropertyOptional, IsIn, IsNumber, IsOptional, IsString, Type, ClientMetadata
|
||||
|
||||
### Community 3 - "productService.ts"
|
||||
Cohesion: 0.06
|
||||
Nodes (39): buildTorobProductSpec(), buildTorobProductTitle(), dynamic, GET(), revalidate, dynamic, GET(), revalidate (+31 more)
|
||||
Cohesion: 0.05
|
||||
Nodes (41): buildTorobProductSpec(), buildTorobProductTitle(), dynamic, GET(), revalidate, dynamic, GET(), revalidate (+33 more)
|
||||
|
||||
### Community 4 - "PetProfile.tsx"
|
||||
Cohesion: 0.12
|
||||
Nodes (18): metadata, FeaturedProducts(), ProductCard(), OrderSuccess(), PetProfile(), SearchResultsPage(), CURRENT_SYMPTOMS, MEDICAL_HISTORIES (+10 more)
|
||||
### Community 4 - "UserDashboard.tsx"
|
||||
Cohesion: 0.11
|
||||
Nodes (20): metadata, OrderDetailsModal(), PetProfile(), SearchResultsPage(), CURRENT_SYMPTOMS, MEDICAL_HISTORIES, SmartAdvisor(), SmartAdvisorProps (+12 more)
|
||||
|
||||
### Community 5 - "CmsController"
|
||||
Cohesion: 0.10
|
||||
Nodes (14): CmsController, ApiBearerAuth, ApiOperation, ApiTags, Body, Controller, Delete, Get (+6 more)
|
||||
Cohesion: 0.09
|
||||
Nodes (24): CmsController, ApiBearerAuth, ApiOperation, ApiTags, Body, Controller, Delete, Get (+16 more)
|
||||
|
||||
### Community 6 - "TicketsService"
|
||||
### Community 6 - "tickets.controller.ts"
|
||||
Cohesion: 0.09
|
||||
Nodes (29): AdminUpdateTicketDto, CreateTicketDto, ReplyTicketDto, ApiProperty, ApiPropertyOptional, IsNotEmpty, IsOptional, IsString (+21 more)
|
||||
|
||||
### Community 7 - "SmsSettingsPage.tsx"
|
||||
Cohesion: 0.29
|
||||
Nodes (7): PatternItem, SmsConfigState, SmsLogItem, SmsLogStats, SmsSettingsPage(), toPersianDigits(), SmsSettingsPage
|
||||
Cohesion: 0.20
|
||||
Nodes (10): PatternItem, SmsConfigState, SmsEventDefinition, SmsEventVariable, SmsLogItem, SmsLogStats, SmsRule, SmsSettingsPage() (+2 more)
|
||||
|
||||
### Community 8 - "SettingsController"
|
||||
Cohesion: 0.10
|
||||
Nodes (17): SettingsController, ApiBearerAuth, ApiOkResponse, ApiOperation, ApiTags, Body, Controller, Delete (+9 more)
|
||||
### Community 8 - "SmsService"
|
||||
Cohesion: 0.06
|
||||
Nodes (20): SmsEventDefinition, SmsService, Injectable, SettingsController, ApiBearerAuth, ApiOkResponse, ApiOperation, ApiTags (+12 more)
|
||||
|
||||
### Community 9 - "devDependencies"
|
||||
Cohesion: 0.22
|
||||
Nodes (9): devDependencies, ts-jest, @types/bcryptjs, @types/node, typescript, @types/node, typescript, ts-jest (+1 more)
|
||||
Cohesion: 0.08
|
||||
Nodes (25): devDependencies, eslint, eslint-config-prettier, @eslint/eslintrc, jest, @nestjs/cli, @nestjs/testing, prettier (+17 more)
|
||||
|
||||
### Community 10 - "CreateReviewDto"
|
||||
Cohesion: 0.07
|
||||
Nodes (30): CreateReviewDto, ApiProperty, IsInt, IsNotEmpty, IsOptional, IsString, Min, ApiProperty (+22 more)
|
||||
### Community 10 - "ReviewsService"
|
||||
Cohesion: 0.09
|
||||
Nodes (22): ApiProperty, IsIn, IsOptional, IsString, UpdateReviewDto, ReviewsController, ApiBearerAuth, ApiOperation (+14 more)
|
||||
|
||||
### Community 11 - "WikiController"
|
||||
Cohesion: 0.21
|
||||
Nodes (9): ApiNotFoundResponse, ApiOkResponse, ApiOperation, ApiTags, Controller, Get, Param, Query (+1 more)
|
||||
### Community 11 - "ConfirmModal.tsx"
|
||||
Cohesion: 0.10
|
||||
Nodes (16): ConfirmModal(), ConfirmModalProps, Pagination(), PaginationProps, Category, Pet, DoctorOption, Video (+8 more)
|
||||
|
||||
### Community 12 - "index.ts"
|
||||
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.06
|
||||
Nodes (28): AppModule, Module, EnvironmentVariables, IsNotEmpty, IsOptional, IsString, validateEnv(), CustomHttpExceptionFilter (+20 more)
|
||||
Cohesion: 0.07
|
||||
Nodes (26): EnvironmentVariables, IsNotEmpty, IsOptional, IsString, validateEnv(), CustomHttpExceptionFilter, Catch, PrismaExceptionFilter (+18 more)
|
||||
|
||||
### Community 14 - "toPersian"
|
||||
Cohesion: 0.17
|
||||
Nodes (20): HomeClient(), VerifyContent(), AddressFormData, AddressModal(), AddressModalProps, normalizeDigits(), validateAddressForm(), CheckoutPage() (+12 more)
|
||||
Nodes (19): VerifyContent(), AddressFormData, AddressModal(), AddressModalProps, normalizeDigits(), validateAddressForm(), BackButton(), BackButtonProps (+11 more)
|
||||
|
||||
### Community 15 - "src/services/api.ts"
|
||||
Cohesion: 0.06
|
||||
Nodes (36): Layout(), ProtectedRoute(), MenuGroup, Sidebar(), SidebarProps, SubMenuItem, LiveMonitoringSummary, SEARCHABLE_PAGES (+28 more)
|
||||
Nodes (38): Layout(), ProtectedRoute(), MenuGroup, Sidebar(), SidebarProps, SubMenuItem, LiveMonitoringSummary, SEARCHABLE_PAGES (+30 more)
|
||||
|
||||
### Community 16 - "DoctorQueryDto"
|
||||
Cohesion: 0.09
|
||||
@ -431,16 +410,24 @@ Cohesion: 0.14
|
||||
Nodes (18): B2BPage(), generateMetadata(), ContactPage(), generateMetadata(), generateMetadata(), getInitialVideos(), Videos(), ContactFormClient() (+10 more)
|
||||
|
||||
### Community 18 - "JwtAuthGuard"
|
||||
Cohesion: 0.19
|
||||
Nodes (8): JwtAuthGuard, Injectable, ROLES_KEY, RequestWithUser, RolesGuard, Injectable, UserReqPayload, ScientificTermData
|
||||
Cohesion: 0.10
|
||||
Nodes (19): JwtAuthGuard, Injectable, ROLES_KEY, RequestWithUser, RolesGuard, Injectable, ApiPropertyOptional, IsOptional (+11 more)
|
||||
|
||||
### Community 19 - "admin.controller.ts"
|
||||
Cohesion: 0.35
|
||||
Cohesion: 0.29
|
||||
Nodes (12): ApplyGlobalMarginsDto, BulkPriceAdjustmentDto, ApiProperty, ApiPropertyOptional, IsArray, IsBoolean, IsIn, IsNumber (+4 more)
|
||||
|
||||
### Community 20 - "CreateVideoDto"
|
||||
Cohesion: 0.07
|
||||
Nodes (31): CreateVideoDto, ApiProperty, ApiPropertyOptional, IsBoolean, IsNotEmpty, IsOptional, IsString, UpdateVideoDto (+23 more)
|
||||
Nodes (32): CreateVideoDto, ApiProperty, ApiPropertyOptional, IsBoolean, IsNotEmpty, IsOptional, IsString, UpdateVideoDto (+24 more)
|
||||
|
||||
### Community 21 - "auth.service.ts"
|
||||
Cohesion: 0.14
|
||||
Nodes (13): AdminLoginInput, LoginInput, RegisterInput, LoginDto, ApiProperty, IsNotEmpty, IsString, MinLength (+5 more)
|
||||
|
||||
### Community 22 - "ProductDto"
|
||||
Cohesion: 0.16
|
||||
Nodes (7): ProductDto, ApiPropertyOptional, IsArray, IsBoolean, IsNumber, IsOptional, IsString
|
||||
|
||||
### Community 23 - "MenuService"
|
||||
Cohesion: 0.12
|
||||
@ -480,7 +467,7 @@ Nodes (31): Acceptance Criteria, Affected Application, Affected Files, Alternati
|
||||
|
||||
### Community 32 - "adminRoutes.tsx"
|
||||
Cohesion: 0.07
|
||||
Nodes (21): App(), ContactInfoItem, ContactSubmission, CategoryDist, DashboardData, SslStatus, Ticket, TicketMessage (+13 more)
|
||||
Nodes (16): App(), Props, RouteErrorBoundary, State, HeroBanner, VetTestimonial, SslStatus, AdminRouteConfig (+8 more)
|
||||
|
||||
### Community 33 - "WholesaleApplyDto"
|
||||
Cohesion: 0.10
|
||||
@ -495,8 +482,8 @@ Cohesion: 0.13
|
||||
Nodes (12): ContactController, Body, Controller, Get, Param, Post, Put, Query (+4 more)
|
||||
|
||||
### Community 36 - "FaqService"
|
||||
Cohesion: 0.14
|
||||
Nodes (14): FaqController, ApiBearerAuth, ApiOperation, ApiTags, Body, Controller, Delete, Get (+6 more)
|
||||
Cohesion: 0.12
|
||||
Nodes (16): FaqController, ApiBearerAuth, ApiOperation, ApiTags, Body, Controller, Delete, Get (+8 more)
|
||||
|
||||
### Community 37 - "راهنمای تست سیستم (Software Testing)"
|
||||
Cohesion: 0.07
|
||||
@ -519,8 +506,8 @@ Cohesion: 0.07
|
||||
Nodes (26): For /graphify add and --watch, For /graphify query, For the commit hook and native CLAUDE.md integration, For --update and --cluster-only, /graphify, Honesty Rules, Interpreter guard for subcommands, Part A - Structural extraction for code files (+18 more)
|
||||
|
||||
### Community 42 - "SslController"
|
||||
Cohesion: 0.11
|
||||
Nodes (15): SslController, ApiBearerAuth, ApiOperation, ApiTags, Body, Controller, Get, Post (+7 more)
|
||||
Cohesion: 0.13
|
||||
Nodes (14): SslController, ApiBearerAuth, ApiOperation, ApiTags, Body, Controller, Get, Post (+6 more)
|
||||
|
||||
### Community 43 - "BannersService"
|
||||
Cohesion: 0.13
|
||||
@ -542,9 +529,9 @@ Nodes (14): "coupons", "health_logs", "order_items", "orders", "pet_medical_cond
|
||||
Cohesion: 0.13
|
||||
Nodes (14): IngredientsController, ApiBearerAuth, ApiOperation, ApiTags, Body, Controller, Delete, Get (+6 more)
|
||||
|
||||
### Community 48 - "auth.controller.ts"
|
||||
Cohesion: 0.06
|
||||
Nodes (43): AuthController, ApiBadRequestResponse, ApiBearerAuth, ApiOkResponse, ApiOperation, ApiTags, Body, Controller (+35 more)
|
||||
### Community 48 - "AuthController"
|
||||
Cohesion: 0.25
|
||||
Nodes (13): AuthController, ApiBadRequestResponse, ApiBearerAuth, ApiOkResponse, ApiOperation, ApiTags, Body, Controller (+5 more)
|
||||
|
||||
### Community 49 - "devDependencies"
|
||||
Cohesion: 0.11
|
||||
@ -552,27 +539,27 @@ Nodes (19): autoprefixer, devDependencies, autoprefixer, eslint, @eslint/js, glo
|
||||
|
||||
### Community 50 - "devDependencies"
|
||||
Cohesion: 0.12
|
||||
Nodes (17): eslint-config-next, devDependencies, eslint, eslint-config-next, jsdom, @testing-library/jest-dom, @testing-library/react, @types/node (+9 more)
|
||||
Nodes (17): devDependencies, eslint, jsdom, tailwindcss, @testing-library/jest-dom, @testing-library/react, @types/node, @types/react (+9 more)
|
||||
|
||||
### Community 51 - "BlogsController"
|
||||
Cohesion: 0.07
|
||||
Nodes (18): BlogsController, ApiBearerAuth, ApiOperation, ApiQuery, ApiTags, Body, Controller, Delete (+10 more)
|
||||
|
||||
### Community 52 - "PrescriptionsController"
|
||||
Cohesion: 0.16
|
||||
Nodes (12): PrescriptionsController, ApiBearerAuth, ApiOperation, ApiTags, Body, Controller, Get, Param (+4 more)
|
||||
### Community 52 - "PrescriptionsService"
|
||||
Cohesion: 0.14
|
||||
Nodes (14): PrescriptionsController, ApiBearerAuth, ApiOperation, ApiTags, Body, Controller, Get, Param (+6 more)
|
||||
|
||||
### Community 53 - "SmartAdvisorService"
|
||||
Cohesion: 0.13
|
||||
Nodes (14): SmartAdvisorController, ApiBearerAuth, ApiOperation, ApiTags, Body, Controller, Delete, Get (+6 more)
|
||||
|
||||
### Community 54 - "Button.tsx"
|
||||
Cohesion: 0.10
|
||||
Nodes (16): ButtonProps, ButtonSize, ButtonVariant, ConfirmModal(), ConfirmModalProps, HeroBanner, VetTestimonial, FAQ (+8 more)
|
||||
Cohesion: 0.07
|
||||
Nodes (24): ButtonProps, ButtonSize, ButtonVariant, maxWidthClasses, Modal(), ModalProps, ContactInfoItem, ContactSubmission (+16 more)
|
||||
|
||||
### Community 55 - "UITexts.tsx"
|
||||
Cohesion: 0.07
|
||||
Nodes (26): ICON_REGISTRY, IconPickerModal(), IconPickerModalProps, ActiveStates, PRESET_BG_COLORS, PRESET_COLORS, RichTextEditor(), RichTextEditorProps (+18 more)
|
||||
Cohesion: 0.08
|
||||
Nodes (23): ICON_REGISTRY, IconPickerModal(), IconPickerModalProps, ActiveStates, PRESET_BG_COLORS, PRESET_COLORS, RichTextEditor(), RichTextEditorProps (+15 more)
|
||||
|
||||
### Community 56 - "Orders.tsx"
|
||||
Cohesion: 0.11
|
||||
@ -582,45 +569,49 @@ Nodes (15): Badge(), BadgeProps, BadgeVariant, variantStyles, Skeleton(), Monito
|
||||
Cohesion: 0.09
|
||||
Nodes (22): CREATE MODE — Normal Operation, Expected JSON Output Schema, File Scope Boundary, Forbidden Actions, MODE 1: REVIEW (called during Review Phase), MODE 2: CONTENT CREATION (standalone task from backlog), Operating Modes, Operational Rules & Boundaries (+14 more)
|
||||
|
||||
### Community 58 - "UserDashboard.tsx"
|
||||
Cohesion: 0.12
|
||||
Nodes (11): DeleteConfirmModal(), DeleteConfirmModalProps, OrderDetailsModal(), OrderRowSkeleton(), PetProfileSkeleton(), Skeleton(), SkeletonProps, CreateTicketPayload (+3 more)
|
||||
### Community 58 - "AuthService"
|
||||
Cohesion: 0.19
|
||||
Nodes (3): AuthService, Injectable, normalizeMobile()
|
||||
|
||||
### Community 59 - "compilerOptions"
|
||||
Cohesion: 0.06
|
||||
Nodes (30): compilerOptions, allowSyntheticDefaultImports, baseUrl, declaration, emitDecoratorMetadata, esModuleInterop, experimentalDecorators, forceConsistentCasingInFileNames (+22 more)
|
||||
|
||||
### Community 60 - "CreateUserDto"
|
||||
Cohesion: 0.23
|
||||
Cohesion: 0.21
|
||||
Nodes (10): CreateUserDto, ApiProperty, ApiPropertyOptional, IsEmail, IsNotEmpty, IsNumber, IsOptional, IsString (+2 more)
|
||||
|
||||
### Community 61 - "ProductPage.tsx"
|
||||
Cohesion: 0.10
|
||||
Nodes (19): ProductImageZoomModalProps, CalculatorState, GalleryMediaItem, ICON_MAP, isVideoUrl(), ProductImageZoomModal, ProductPage(), ProductReviews (+11 more)
|
||||
Cohesion: 0.09
|
||||
Nodes (20): ProductImageZoomModalProps, CalculatorState, GalleryMediaItem, ICON_MAP, isVideoUrl(), ProductImageZoomModal, ProductPage(), ProductReviews (+12 more)
|
||||
|
||||
### Community 62 - "torob.controller.ts"
|
||||
Cohesion: 0.22
|
||||
Nodes (8): buildTorobProductSpec(), buildTorobProductTitle(), TorobController, ApiOperation, ApiTags, Controller, Get, Query
|
||||
|
||||
### Community 63 - "dependencies"
|
||||
Cohesion: 0.09
|
||||
Nodes (23): dependencies, bcrypt, bcryptjs, class-validator, compression, ioredis, @nestjs/common, @nestjs/passport (+15 more)
|
||||
Cohesion: 0.05
|
||||
Nodes (43): dependencies, bcrypt, bcryptjs, class-transformer, class-validator, compression, helmet, ioredis (+35 more)
|
||||
|
||||
### Community 64 - "compilerOptions"
|
||||
Cohesion: 0.10
|
||||
Nodes (20): compilerOptions, allowImportingTsExtensions, erasableSyntaxOnly, lib, module, moduleDetection, moduleResolution, noEmit (+12 more)
|
||||
|
||||
### Community 65 - "admin.service.ts"
|
||||
Cohesion: 0.14
|
||||
Nodes (15): CouponTargetInput, PaginationQuery, ProductDto, ApiPropertyOptional, IsArray, IsBoolean, IsNumber, IsOptional (+7 more)
|
||||
Cohesion: 0.33
|
||||
Nodes (8): CouponTargetInput, PaginationQuery, applyRounding(), calculateSellingPrice(), DEFAULT_PRICING_SETTINGS, PricingSettings, RoundingMode, CANONICAL_ALIASES
|
||||
|
||||
### Community 66 - "AdminQueryDto"
|
||||
Cohesion: 0.13
|
||||
Nodes (8): ApiQuery, Get, Query, AdminProductQueryDto, AdminQueryDto, ApiPropertyOptional, IsOptional, IsString
|
||||
Cohesion: 0.18
|
||||
Nodes (7): ApiQuery, Query, AdminProductQueryDto, AdminQueryDto, ApiPropertyOptional, IsOptional, IsString
|
||||
|
||||
### Community 67 - "ReportsController"
|
||||
Cohesion: 0.14
|
||||
Nodes (11): ReportsController, ApiBearerAuth, ApiOperation, ApiQuery, ApiTags, Controller, Get, Query (+3 more)
|
||||
### Community 67 - "admin.module.ts"
|
||||
Cohesion: 0.08
|
||||
Nodes (17): AdminModule, Module, ReportsController, ApiBearerAuth, ApiOperation, ApiQuery, ApiTags, Controller (+9 more)
|
||||
|
||||
### Community 68 - "useSettingsStore"
|
||||
Cohesion: 0.08
|
||||
Nodes (29): HomeClientProps, B2BLandingClient(), BlogPost, BlogPreviewSection(), BrandLogo(), BrandLogoProps, ContactInfoItem, FAQItem (+21 more)
|
||||
Nodes (36): HomeClient(), HomeClientProps, B2BLandingClient(), BlogPostClientProps, BlogPost, BlogPreviewSection(), ContactInfoItem, EnamadBadge() (+28 more)
|
||||
|
||||
### Community 69 - "Required Review Group Closures"
|
||||
Cohesion: 0.10
|
||||
@ -631,8 +622,8 @@ Cohesion: 0.08
|
||||
Nodes (23): compilerOptions, allowImportingTsExtensions, erasableSyntaxOnly, jsx, lib, module, moduleDetection, moduleResolution (+15 more)
|
||||
|
||||
### Community 71 - "getPageMetadata"
|
||||
Cohesion: 0.09
|
||||
Nodes (14): generateMetadata(), CatalogClient(), generateMetadata(), generateMetadata(), generateMetadata(), generateMetadata(), generateMetadata(), generateMetadata() (+6 more)
|
||||
Cohesion: 0.08
|
||||
Nodes (16): generateMetadata(), CatalogClient(), generateMetadata(), generateMetadata(), generateMetadata(), generateMetadata(), generateMetadata(), generateMetadata() (+8 more)
|
||||
|
||||
### Community 72 - "Operational Rules & Boundaries"
|
||||
Cohesion: 0.11
|
||||
@ -643,7 +634,7 @@ Cohesion: 0.11
|
||||
Nodes (18): 1. Framework-Aware Analysis, 2. DOM & Semantic Structure Analysis, 3. Accessibility Compliance, 4. Responsive Layout Verification, 5. Fallback Inspection Mode, 6. Defect Routing Protocol, 7. Forbidden Actions, Expected JSON Output Schema (+10 more)
|
||||
|
||||
### Community 74 - "WikiController"
|
||||
Cohesion: 0.14
|
||||
Cohesion: 0.13
|
||||
Nodes (14): ApiBearerAuth, ApiOperation, ApiQuery, ApiTags, Body, Controller, Delete, Get (+6 more)
|
||||
|
||||
### Community 75 - "PetsController"
|
||||
@ -651,8 +642,8 @@ Cohesion: 0.05
|
||||
Nodes (47): CreateHealthLogDto, ApiProperty, ApiPropertyOptional, IsNotEmpty, IsOptional, IsString, CreatePetDto, ApiProperty (+39 more)
|
||||
|
||||
### Community 76 - "ProductsService"
|
||||
Cohesion: 0.07
|
||||
Nodes (27): GetProductsDto, ApiPropertyOptional, IsEnum, IsOptional, IsString, ProductsController, ApiOperation, ApiTags (+19 more)
|
||||
Cohesion: 0.10
|
||||
Nodes (19): GetProductsDto, ApiPropertyOptional, IsEnum, IsOptional, IsString, ProductsController, ApiOperation, ApiTags (+11 more)
|
||||
|
||||
### Community 77 - "seo.module.ts"
|
||||
Cohesion: 0.16
|
||||
@ -686,9 +677,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 - "auth.module.ts"
|
||||
Cohesion: 0.17
|
||||
Nodes (10): DEFAULT_JWT_REFRESH_SECRET, DEFAULT_JWT_SECRET, getJwtSecret(), AuthModule, Module, JwtPayload, JwtStrategy, Injectable (+2 more)
|
||||
### Community 85 - "RegisterDto"
|
||||
Cohesion: 0.22
|
||||
Nodes (8): RegisterDto, ApiProperty, ApiPropertyOptional, IsEmail, IsNotEmpty, IsOptional, IsString, MinLength
|
||||
|
||||
### Community 86 - "zibal.service.ts"
|
||||
Cohesion: 0.16
|
||||
@ -698,33 +689,37 @@ Nodes (9): GatewayHealthResult, IPaymentGateway, PaymentInquiryResult, PaymentRe
|
||||
Cohesion: 0.11
|
||||
Nodes (19): dependencies, axios, lucide-react, motion, next, nextjs-toploader, react, react-dom (+11 more)
|
||||
|
||||
### Community 88 - "payment.controller.ts"
|
||||
Cohesion: 0.12
|
||||
Nodes (19): CreateEBankCheckoutDto, ApiProperty, ApiPropertyOptional, IsNotEmpty, IsNumber, IsOptional, IsString, Min (+11 more)
|
||||
### 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 - "useCartStore"
|
||||
Cohesion: 0.09
|
||||
Nodes (19): B2BPortal, CartDrawer, B2BPortal(), CartDrawer(), DeleteConfirmModal(), DeleteConfirmModalProps, OrderSuccess(), OrderTracking() (+11 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.07
|
||||
Cohesion: 0.06
|
||||
Nodes (35): CreateOrderDto, OrderItemDto, ApiProperty, ApiPropertyOptional, IsArray, IsNotEmpty, IsNumber, IsOptional (+27 more)
|
||||
|
||||
### Community 93 - "ArchivePage.tsx"
|
||||
Cohesion: 0.13
|
||||
Nodes (15): ArchivePage(), ArchiveProductCard(), CATEGORY_MAP, ICON_MAP, BannerPlacement(), BannerPlacementProps, ProductCardSkeleton(), B2BInquiry (+7 more)
|
||||
Cohesion: 0.08
|
||||
Nodes (21): ArchivePage(), ArchiveProductCard(), CATEGORY_MAP, ICON_MAP, BannerPlacement(), BannerPlacementProps, OrderRowSkeleton(), PetProfileSkeleton() (+13 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.19
|
||||
Nodes (16): BlogPostPage(), generateMetadata(), getBlog(), revalidate, safeIso(), safeLocalDate(), generateMetadata(), revalidate (+8 more)
|
||||
### Community 95 - "getSeoConfig"
|
||||
Cohesion: 0.26
|
||||
Nodes (11): BlogPostPage(), generateMetadata(), getBlog(), revalidate, safeIso(), safeLocalDate(), generateMetadata(), revalidate (+3 more)
|
||||
|
||||
### Community 96 - "compilerOptions"
|
||||
Cohesion: 0.06
|
||||
@ -735,8 +730,8 @@ Cohesion: 0.13
|
||||
Nodes (15): scripts, build, build:nest, docs:generate, lint, seo:backfill, start, start:debug (+7 more)
|
||||
|
||||
### Community 99 - "BlogsController"
|
||||
Cohesion: 0.14
|
||||
Nodes (15): BlogsController, ApiNotFoundResponse, ApiOkResponse, ApiOperation, ApiTags, Body, Controller, Get (+7 more)
|
||||
Cohesion: 0.18
|
||||
Nodes (12): BlogsController, ApiNotFoundResponse, ApiOkResponse, ApiOperation, ApiTags, Body, Controller, Get (+4 more)
|
||||
|
||||
### Community 100 - "Deep Audit Summary Report"
|
||||
Cohesion: 0.14
|
||||
@ -755,24 +750,24 @@ Cohesion: 0.15
|
||||
Nodes (12): 10. `TASK-VERIFY-001`, 1. `TASK-SEC-001`, 2. `TASK-SEC-002`, 3. `TASK-SEC-003`, 4. `TASK-FIN-001`, 5. `TASK-BUILD-001`, 6. `TASK-AUTH-001`, 7. `TASK-FE-001` (+4 more)
|
||||
|
||||
### Community 104 - "Products.tsx"
|
||||
Cohesion: 0.10
|
||||
Nodes (24): Input, InputProps, formatPriceWithCommas(), PriceInput(), PriceInputProps, toEnglishDigits(), Coupon, CouponFormData (+16 more)
|
||||
Cohesion: 0.09
|
||||
Nodes (25): Input, InputProps, formatPriceWithCommas(), PriceInput(), PriceInputProps, toEnglishDigits(), Coupon, CouponFormData (+17 more)
|
||||
|
||||
### Community 105 - "Operational Rules & Boundaries"
|
||||
Cohesion: 0.17
|
||||
Nodes (11): 1. Detect Test Runner from Tech Stack, 2. Execution Output Capture (Mandatory), 3. Acceptance Criteria Verification, 4. Failure Routing Protocol, 5. Success Routing Protocol, 6. Forbidden Actions, Expected JSON Output Schema, Operational Rules & Boundaries (+3 more)
|
||||
|
||||
### Community 106 - "cms.controller.ts"
|
||||
Cohesion: 0.37
|
||||
Nodes (10): CreateHeroBannerDto, CreateSmartAdvisorRuleDto, CreateVetTestimonialDto, ApiProperty, ApiPropertyOptional, IsBoolean, IsNumber, IsOptional (+2 more)
|
||||
### Community 106 - "InitiatePaymentDto"
|
||||
Cohesion: 0.43
|
||||
Nodes (7): InitiatePaymentDto, InitiateWalletTopupDto, ApiProperty, ApiPropertyOptional, IsNotEmpty, IsOptional, IsString
|
||||
|
||||
### Community 107 - "PaginationDto"
|
||||
Cohesion: 0.12
|
||||
Nodes (15): AdminModule, Module, PaginationDto, SortOrder, ApiPropertyOptional, IsEnum, IsInt, IsOptional (+7 more)
|
||||
Cohesion: 0.06
|
||||
Nodes (27): BlogsModule, Module, BlogFilterDto, BlogsService, Injectable, PaginationDto, SortOrder, ApiPropertyOptional (+19 more)
|
||||
|
||||
### Community 108 - "PrismaService"
|
||||
Cohesion: 0.06
|
||||
Nodes (21): CategoryQuery, PetQuery, WikiQuery, RevalidationService, Injectable, MeliPayamakPattern, MeliPayamakResponse, SendPatternSmsOptions (+13 more)
|
||||
Cohesion: 0.07
|
||||
Nodes (23): CategoryQuery, DEFAULT_SMS_RULES, SMS_EVENT_DEFINITIONS, SmsEventVariable, SmsRule, MeliPayamakPattern, MeliPayamakResponse, SendPatternSmsOptions (+15 more)
|
||||
|
||||
### Community 109 - "1. Summary of Integrity Repairs Performed"
|
||||
Cohesion: 0.17
|
||||
@ -791,16 +786,16 @@ 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 - "PetsController"
|
||||
Cohesion: 0.11
|
||||
Nodes (13): PetsController, ApiBearerAuth, ApiOperation, ApiQuery, ApiTags, Controller, Delete, Get (+5 more)
|
||||
Cohesion: 0.10
|
||||
Nodes (14): PetsController, ApiBearerAuth, ApiOperation, ApiQuery, ApiTags, Controller, Delete, Get (+6 more)
|
||||
|
||||
### Community 114 - "AppService"
|
||||
Cohesion: 0.29
|
||||
Nodes (5): AppController, Controller, Get, AppService, Injectable
|
||||
|
||||
### Community 115 - "Spinner.tsx"
|
||||
Cohesion: 0.07
|
||||
Nodes (36): ImagePreviewModal(), ImagePreviewModalProps, getFileType(), Media, MediaSelector(), MediaSelectorProps, maxWidthClasses, Modal() (+28 more)
|
||||
Cohesion: 0.10
|
||||
Nodes (22): ImagePreviewModal(), ImagePreviewModalProps, getFileType(), Media, MediaSelector(), MediaSelectorProps, Spinner(), Doctor (+14 more)
|
||||
|
||||
### Community 116 - "Vazirmatn Changelog"
|
||||
Cohesion: 0.18
|
||||
@ -826,13 +821,13 @@ Nodes (9): compilerOptions, esModuleInterop, module, moduleResolution, skipLibCh
|
||||
Cohesion: 0.20
|
||||
Nodes (9): Compile and run the project, Deployment, Description, License, Project setup, Resources, Run tests, Stay in touch (+1 more)
|
||||
|
||||
### Community 122 - "AdminController"
|
||||
Cohesion: 0.17
|
||||
Nodes (12): AdminController, ApiBearerAuth, ApiOperation, ApiTags, Body, Controller, Delete, Param (+4 more)
|
||||
### Community 122 - "AdminService"
|
||||
Cohesion: 0.09
|
||||
Nodes (12): AdminController, ApiBearerAuth, ApiOperation, ApiTags, Controller, Delete, Get, Param (+4 more)
|
||||
|
||||
### Community 123 - "UsersService"
|
||||
Cohesion: 0.07
|
||||
Nodes (32): AddressDto, ApiProperty, ApiPropertyOptional, IsBoolean, IsNotEmpty, IsOptional, IsString, ApiPropertyOptional (+24 more)
|
||||
Cohesion: 0.05
|
||||
Nodes (42): DEFAULT_JWT_REFRESH_SECRET, DEFAULT_JWT_SECRET, getJwtSecret(), AuthModule, Module, JwtPayload, JwtStrategy, Injectable (+34 more)
|
||||
|
||||
### Community 124 - "Repository Map"
|
||||
Cohesion: 0.20
|
||||
@ -850,6 +845,10 @@ Nodes (9): name, private, scripts, build, dev, lint, preview, type (+1 more)
|
||||
Cohesion: 0.20
|
||||
Nodes (9): Arch Linux, Contributors, Install, Known problems for variable version, License, Sahel-Font, To Do (variable), طریقه استفاده از نسخه متغیر variable (+1 more)
|
||||
|
||||
### Community 128 - "Body"
|
||||
Cohesion: 0.17
|
||||
Nodes (3): Body, Post, CouponInput
|
||||
|
||||
### Community 129 - "Reports.tsx"
|
||||
Cohesion: 0.20
|
||||
Nodes (7): BestSellerItem, CategoryDistItem, COLORS, CustomTooltipProps, ReportData, TopCouponItem, Reports
|
||||
@ -891,8 +890,8 @@ Cohesion: 0.22
|
||||
Nodes (8): Arch Linux, bower, Install, npm, Shabnam Font, yarn, طریقه استفاده در صفحات وب:, نمونه متن Sample:
|
||||
|
||||
### Community 139 - "layout.tsx"
|
||||
Cohesion: 0.43
|
||||
Nodes (5): generateMetadata(), RootLayout(), lalezar, vazirmatn, generateOrganizationSchema()
|
||||
Cohesion: 0.23
|
||||
Nodes (8): generateMetadata(), RootLayout(), AnalyticsDeferred(), AnalyticsDeferredProps, Window, lalezar, vazirmatn, generateOrganizationSchema()
|
||||
|
||||
### Community 140 - "ErrorBoundary"
|
||||
Cohesion: 0.22
|
||||
@ -910,9 +909,13 @@ Nodes (7): backend, distMainPath, fs, http, path, { spawn, execSync }, waitForBa
|
||||
Cohesion: 0.25
|
||||
Nodes (6): app_module_1, core_1, fs, path, swagger_1, yaml
|
||||
|
||||
### Community 144 - "SafeImage.tsx"
|
||||
Cohesion: 0.10
|
||||
Nodes (20): BackButton(), BackButtonProps, BlogPostClientProps, PLAYBACK_RATES, PodcastInlinePlayer(), PodcastInlinePlayerProps, PLAYBACK_RATES, PodcastPlayerModal() (+12 more)
|
||||
### Community 144 - "PodcastPlayerModal.tsx"
|
||||
Cohesion: 0.40
|
||||
Nodes (3): PLAYBACK_RATES, PodcastPlayerModal(), PodcastPlayerModalProps
|
||||
|
||||
### Community 145 - "AdminLoginDto"
|
||||
Cohesion: 0.29
|
||||
Nodes (6): AdminLoginDto, ApiProperty, IsEmail, IsNotEmpty, IsString, MinLength
|
||||
|
||||
### Community 146 - "System Discovery"
|
||||
Cohesion: 0.25
|
||||
@ -922,17 +925,21 @@ Nodes (7): Active Core Applications, Current Architecture, Evidence-Based Status
|
||||
Cohesion: 0.16
|
||||
Nodes (10): HomeController, ApiOkResponse, ApiOperation, ApiTags, Controller, Get, HomeModule, Module (+2 more)
|
||||
|
||||
### Community 148 - "VerifyOtpDto"
|
||||
Cohesion: 0.33
|
||||
Nodes (6): ApiProperty, IsNotEmpty, IsString, Matches, VerifyOtpDto, Length
|
||||
|
||||
### Community 149 - "wiki/[slug]/page.tsx"
|
||||
Cohesion: 0.60
|
||||
Nodes (5): generateMetadata(), getRelatedProducts(), getWikiTerm(), WikiTermPage(), generateMedicalWebPageSchema()
|
||||
|
||||
### Community 150 - "Product Requirement Document (PRD)"
|
||||
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 - "menu.module.ts"
|
||||
Cohesion: 0.40
|
||||
Nodes (3): MenuModule, Module, MenuType
|
||||
|
||||
### Community 152 - "auth.service.ts"
|
||||
Cohesion: 0.09
|
||||
Nodes (11): AdminLoginInput, AuthService, LoginInput, RegisterInput, Injectable, normalizeMobile(), RedisModule, Global (+3 more)
|
||||
### Community 152 - "RevalidationService"
|
||||
Cohesion: 0.10
|
||||
Nodes (11): Optional, RevalidationModule, Global, Module, RevalidationService, Injectable, RedisModule, Global (+3 more)
|
||||
|
||||
### Community 153 - "exclude"
|
||||
Cohesion: 0.22
|
||||
@ -947,8 +954,8 @@ Cohesion: 0.67
|
||||
Nodes (3): prisma, runSeoBackfill(), stripHtml()
|
||||
|
||||
### Community 158 - "media/[...path]/route.ts"
|
||||
Cohesion: 0.60
|
||||
Nodes (4): dynamic, GET(), getCandidateUrls(), HEAD()
|
||||
Cohesion: 0.53
|
||||
Nodes (5): dynamic, GET(), getCandidateUrls(), getMimeType(), HEAD()
|
||||
|
||||
### Community 159 - "with-vpn.sh"
|
||||
Cohesion: 0.62
|
||||
@ -1019,8 +1026,8 @@ Cohesion: 0.40
|
||||
Nodes (4): activeFiles, errors, validationOutput, warnings
|
||||
|
||||
### Community 176 - "uploads/[...path]/route.ts"
|
||||
Cohesion: 0.60
|
||||
Nodes (4): dynamic, GET(), getCandidateUrls(), HEAD()
|
||||
Cohesion: 0.53
|
||||
Nodes (5): dynamic, GET(), getCandidateUrls(), getMimeType(), HEAD()
|
||||
|
||||
### Community 177 - "app/page.tsx"
|
||||
Cohesion: 0.67
|
||||
@ -1050,13 +1057,9 @@ Nodes (3): Architectural Overview, Critical Review Findings & Required Enhanceme
|
||||
Cohesion: 0.50
|
||||
Nodes (3): Overview & Content Foundation, SEO & Content Requirements, 🚀 SEO & Content Strategy Review (12_seo_content)
|
||||
|
||||
### Community 184 - "MetricsController"
|
||||
Cohesion: 0.25
|
||||
Nodes (5): ApiExcludeController, MetricsController, Controller, Get, Res
|
||||
|
||||
### Community 185 - "RouteErrorBoundary"
|
||||
Cohesion: 0.22
|
||||
Nodes (3): Props, RouteErrorBoundary, State
|
||||
### Community 184 - "AppModule"
|
||||
Cohesion: 0.12
|
||||
Nodes (7): ApiExcludeController, AppModule, Module, MetricsController, Controller, Get, Res
|
||||
|
||||
### Community 191 - "graphify reference: add a URL and watch a folder"
|
||||
Cohesion: 0.50
|
||||
@ -1083,8 +1086,8 @@ Cohesion: 0.50
|
||||
Nodes (3): Select, SelectOption, SelectProps
|
||||
|
||||
### Community 197 - "userStore.ts"
|
||||
Cohesion: 0.08
|
||||
Nodes (37): AuthModal, B2BPortal, CartDrawer, ClientLayout(), LoginModal, AuthModal(), AuthModalProps, extractOtpFromText() (+29 more)
|
||||
Cohesion: 0.06
|
||||
Nodes (33): AuthModal, ClientLayout(), LoginModal, AuthModal(), AuthModalProps, extractOtpFromText(), BrandLogo(), BrandLogoProps (+25 more)
|
||||
|
||||
### Community 199 - "SmsLogQueryDto"
|
||||
Cohesion: 0.25
|
||||
@ -1098,10 +1101,6 @@ Nodes (3): Deploy on Vercel, Getting Started, Learn More
|
||||
Cohesion: 0.50
|
||||
Nodes (3): COMPOSE_DOCKER_CLI_BUILD, DOCKER_BUILDKIT, deploy.sh script
|
||||
|
||||
### Community 204 - "zibal-ebank.service.ts"
|
||||
Cohesion: 0.40
|
||||
Nodes (4): EBankCheckoutListFilter, EBankCheckoutOptions, EBankIdentifiedPaymentFilter, EBankStatementFilter
|
||||
|
||||
### Community 211 - "Master Task Backlog (Phase 3.3)"
|
||||
Cohesion: 0.67
|
||||
Nodes (3): ADR-AUTH-001: Admin Panel Authentication Architecture & Token Management, Master Task Backlog (Phase 3.3), Phase 3 Master Execution Plan
|
||||
@ -1110,12 +1109,8 @@ 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 233 - "Reviews.tsx"
|
||||
Cohesion: 0.40
|
||||
Nodes (5): BlogCommentItem, ProductReview, Reviews(), toPersianDigits(), Reviews
|
||||
|
||||
### Community 298 - ".initiateOrderPayment"
|
||||
Cohesion: 0.21
|
||||
Cohesion: 0.28
|
||||
Nodes (6): ApiBadRequestResponse, ApiOkResponse, Req, Res, Headers, Ip
|
||||
|
||||
### Community 317 - "revalidate/route.ts"
|
||||
@ -1123,24 +1118,24 @@ Cohesion: 0.83
|
||||
Nodes (3): GET(), handleRevalidate(), POST()
|
||||
|
||||
## Knowledge Gaps
|
||||
- **1347 isolated node(s):** `$schema`, `collection`, `sourceRoot`, `deleteOutDir`, `name` (+1342 more)
|
||||
- **1352 isolated node(s):** `$schema`, `collection`, `sourceRoot`, `deleteOutDir`, `name` (+1347 more)
|
||||
These have ≤1 connection - possible missing edges or undocumented components.
|
||||
- **120 thin communities (<3 nodes) omitted from report** — run `graphify query` to explore isolated nodes.
|
||||
- **95 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 `Roles()` connect `Roles` to `CmsController`, `TicketsService`, `SettingsController`, `CreateReviewDto`, `JwtAuthGuard`, `MenuService`, `WholesaleApplyDto`, `B2BService`, `ContactService`, `FaqService`, `SslController`, `BannersService`, `TestimonialsService`, `IngredientsService`, `PrescriptionsController`, `SmartAdvisorService`, `ProductsService`, `payment.controller.ts`, `cms.controller.ts`?**
|
||||
_High betweenness centrality (0.065) - this node is a cross-community bridge._
|
||||
- **Why does `ApiResponse` connect `src/services/api.ts` to `BlogsController`, `PetsController`, `ProductsService`, `WikiController`, `auth.controller.ts`, `HomeController`, `UsersService`, `OrdersService`?**
|
||||
_High betweenness centrality (0.057) - this node is a cross-community bridge._
|
||||
- **Why does `PrismaService` connect `PrismaService` to `app.module.ts`, `CmsController`, `TicketsService`, `CreateReviewDto`, `DoctorQueryDto`, `HomeController`, `CreateVideoDto`, `BlogsService`, `menu.module.ts`, `auth.service.ts`, `MenuService`, `B2BService`, `FaqService`, `ZibalService`, `CategoriesController`, `MediaController`, `ZibalEBankService`, `BannersService`, `TestimonialsService`, `IngredientsService`, `SmartAdvisorService`, `MetricsController`, `WikiService`, `admin.service.ts`, `ReportsController`, `PetsController`, `zibal-ebank.service.ts`, `ProductsService`, `seo.module.ts`, `zibal.service.ts`, `OrdersService`, `BlogsController`, `cms.controller.ts`, `PaginationDto`, `PetsController`, `UsersService`?**
|
||||
_High betweenness centrality (0.029) - this node is a cross-community bridge._
|
||||
- **Why does `Roles()` connect `Roles` to `WholesaleApplyDto`, `B2BService`, `ContactService`, `FaqService`, `CmsController`, `tickets.controller.ts`, `SmsService`, `SslController`, `BannersService`, `ProductsService`, `ReviewsService`, `TestimonialsService`, `IngredientsService`, `JwtAuthGuard`, `PrescriptionsService`, `SmartAdvisorService`, `MenuService`?**
|
||||
_High betweenness centrality (0.094) - this node is a cross-community bridge._
|
||||
- **Why does `ApiResponse` connect `src/services/api.ts` to `BlogsController`, `PetsController`, `ProductsService`, `PaginationDto`, `AuthController`, `HomeController`, `UsersService`, `OrdersService`?**
|
||||
_High betweenness centrality (0.066) - this node is a cross-community bridge._
|
||||
- **Why does `JwtAuthGuard` connect `JwtAuthGuard` to `admin.module.ts`, `CmsController`, `tickets.controller.ts`, `PaginationDto`, `PetsController`, `ProductsService`, `DoctorQueryDto`, `PetsController`, `admin.controller.ts`, `CreateVideoDto`, `auth.service.ts`, `UsersService`, `OrdersService`?**
|
||||
_High betweenness centrality (0.030) - this node is a cross-community bridge._
|
||||
- **What connects `$schema`, `collection`, `sourceRoot` to the rest of the system?**
|
||||
_1347 weakly-connected nodes found - possible documentation gaps or missing edges._
|
||||
_1352 weakly-connected nodes found - possible documentation gaps or missing edges._
|
||||
- **Should `app.module.ts` be split into smaller, more focused modules?**
|
||||
_Cohesion score 0.06170598911070781 - nodes in this community are weakly interconnected._
|
||||
_Cohesion score 0.06988120195667366 - nodes in this community are weakly interconnected._
|
||||
- **Should `productService.ts` be split into smaller, more focused modules?**
|
||||
_Cohesion score 0.05780885780885781 - nodes in this community are weakly interconnected._
|
||||
- **Should `PetProfile.tsx` be split into smaller, more focused modules?**
|
||||
_Cohesion score 0.11822660098522167 - nodes in this community are weakly interconnected._
|
||||
_Cohesion score 0.05472837022132797 - nodes in this community are weakly interconnected._
|
||||
- **Should `UserDashboard.tsx` be split into smaller, more focused modules?**
|
||||
_Cohesion score 0.10752688172043011 - nodes in this community are weakly interconnected._
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -1,42 +1,42 @@
|
||||
# Graph Report - canina (2026-09-05)
|
||||
|
||||
## Corpus Check
|
||||
- 601 files · ~1,114,020 words
|
||||
- 602 files · ~1,114,472 words
|
||||
- Verdict: corpus is large enough that graph structure adds value.
|
||||
|
||||
## Summary
|
||||
- 4234 nodes · 7717 edges · 310 communities (215 shown, 95 thin omitted)
|
||||
- 4240 nodes · 7765 edges · 330 communities (217 shown, 113 thin omitted)
|
||||
- Extraction: 96% EXTRACTED · 4% INFERRED · 0% AMBIGUOUS · INFERRED: 298 edges (avg confidence: 0.79)
|
||||
- Token cost: 0 input · 0 output
|
||||
|
||||
## Graph Freshness
|
||||
- Built from commit: `e15c25da`
|
||||
- Built from commit: `330d9605`
|
||||
- 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
|
||||
- payment.service.ts
|
||||
- getMediaUrl
|
||||
- productService.ts
|
||||
- UserDashboard.tsx
|
||||
- PetProfile.tsx
|
||||
- CmsController
|
||||
- tickets.controller.ts
|
||||
- SmsSettingsPage.tsx
|
||||
- SmsService
|
||||
- devDependencies
|
||||
- ReviewsService
|
||||
- ConfirmModal.tsx
|
||||
- reviews.controller.ts
|
||||
- UsersService
|
||||
- index.ts
|
||||
- app-audit-verification.e2e-spec.js
|
||||
- toPersian
|
||||
- UserDashboard.tsx
|
||||
- src/services/api.ts
|
||||
- DoctorQueryDto
|
||||
- schema.ts
|
||||
- JwtAuthGuard
|
||||
- admin.controller.ts
|
||||
- CreateVideoDto
|
||||
- auth.service.ts
|
||||
- auth.module.ts
|
||||
- ProductDto
|
||||
- MenuService
|
||||
- BE-001
|
||||
@ -51,7 +51,7 @@
|
||||
- WholesaleApplyDto
|
||||
- B2BService
|
||||
- ContactService
|
||||
- FaqService
|
||||
- FaqController
|
||||
- راهنمای تست سیستم (Software Testing)
|
||||
- Button
|
||||
- CategoriesController
|
||||
@ -67,13 +67,13 @@
|
||||
- devDependencies
|
||||
- devDependencies
|
||||
- BlogsController
|
||||
- PrescriptionsService
|
||||
- prescriptions.controller.ts
|
||||
- SmartAdvisorService
|
||||
- Button.tsx
|
||||
- UITexts.tsx
|
||||
- Orders.tsx
|
||||
- Role & Core Objective
|
||||
- AuthService
|
||||
- auth.service.ts
|
||||
- compilerOptions
|
||||
- CreateUserDto
|
||||
- ProductPage.tsx
|
||||
@ -100,15 +100,15 @@
|
||||
- scripts
|
||||
- dependencies
|
||||
- Role & Core Objective
|
||||
- RegisterDto
|
||||
- auth.controller.ts
|
||||
- zibal.service.ts
|
||||
- dependencies
|
||||
- CreateEBankCheckoutDto
|
||||
- seed-products.ts
|
||||
- useCartStore
|
||||
- orderService.ts
|
||||
- Reconciled Audit Roles & Assignments
|
||||
- OrdersService
|
||||
- ArchivePage.tsx
|
||||
- components/Skeleton.tsx
|
||||
- Phase 3.1 — Human Review Preparation and Master Backlog Critique
|
||||
- getSeoConfig
|
||||
- compilerOptions
|
||||
@ -138,7 +138,7 @@
|
||||
- compilerOptions
|
||||
- backend/README.md
|
||||
- AdminService
|
||||
- UsersService
|
||||
- UsersController
|
||||
- Repository Map
|
||||
- validate_integrity.js
|
||||
- admin-panel/package.json
|
||||
@ -159,15 +159,15 @@
|
||||
- application/package.json
|
||||
- start-dev.js
|
||||
- generate-openapi.js
|
||||
- PodcastPlayerModal.tsx
|
||||
- AdminLoginDto
|
||||
- lib/services/api.ts
|
||||
- orders.service.ts
|
||||
- System Discovery
|
||||
- HomeController
|
||||
- VerifyOtpDto
|
||||
- RouteErrorBoundary
|
||||
- wiki/[slug]/page.tsx
|
||||
- Product Requirement Document (PRD)
|
||||
- @types/node
|
||||
- RevalidationService
|
||||
- AddressDto
|
||||
- RedisService
|
||||
- exclude
|
||||
- Baseline Command Plan & Reconciled Command History
|
||||
- seo-backfill.ts
|
||||
@ -198,8 +198,8 @@
|
||||
- ⚙️ Backend Technical Review (05_dev_backend)
|
||||
- 🎨 Frontend & Admin Panel Technical Review (06_dev_frontend)
|
||||
- 🚀 SEO & Content Strategy Review (12_seo_content)
|
||||
- AppModule
|
||||
- eslint-config-next
|
||||
- FaqService
|
||||
- Reviews.tsx
|
||||
- seed-ui-texts.ts
|
||||
- seed-wiki.ts
|
||||
- update-blog.dto.ts
|
||||
@ -211,13 +211,14 @@
|
||||
- Raw Finding Verification & Disposition Report
|
||||
- React + TypeScript + Vite
|
||||
- Select.tsx
|
||||
- userStore.ts
|
||||
- ClientLayout.tsx
|
||||
- @tailwindcss/postcss
|
||||
- SmsLogQueryDto
|
||||
- track/page.tsx
|
||||
- application/README.md
|
||||
- deploy.sh
|
||||
- 🔒 Security & Performance Review (09_devops_security)
|
||||
- 👁️ UX & Persona Interface Review (08_visual_qa)
|
||||
- bcrypt
|
||||
- prisma/scientificTerms.ts
|
||||
- seed-blogs.ts
|
||||
- seed-custom.ts
|
||||
@ -233,9 +234,11 @@
|
||||
- sync_honest_manifest.js
|
||||
- sync_manifest.js
|
||||
- FormField.tsx
|
||||
- class-transformer
|
||||
- Textarea.tsx
|
||||
- admin-panel/tsconfig.json
|
||||
- tailwindcss
|
||||
- helmet
|
||||
- next.config.ts
|
||||
- Shabnam Font README
|
||||
- AGENTS.md
|
||||
@ -243,7 +246,8 @@
|
||||
- .agents/workflows/graphify.md
|
||||
- instructions.md
|
||||
- @nestjs/schematics
|
||||
- prisma
|
||||
- js-yaml
|
||||
- @nestjs/core
|
||||
- source-map-support
|
||||
- ts-loader
|
||||
- ts-node
|
||||
@ -271,6 +275,7 @@
|
||||
- User Login API
|
||||
- User Logout API
|
||||
- @types/compression
|
||||
- @nestjs/jwt
|
||||
- @types/express
|
||||
- @types/jest
|
||||
- @types/multer
|
||||
@ -289,12 +294,21 @@
|
||||
- Production Docker Compose
|
||||
- Staging Docker Compose
|
||||
- ZibalService
|
||||
- @nestjs/throttler
|
||||
- passport
|
||||
- ZibalEBankService
|
||||
- .initiateOrderPayment
|
||||
- @tailwindcss/postcss
|
||||
- typescript
|
||||
- reflect-metadata
|
||||
- typescript-eslint
|
||||
- swagger-ui-express
|
||||
- eslint
|
||||
- eslint-config-prettier
|
||||
- @eslint/js
|
||||
- @eslint/eslintrc
|
||||
- jest
|
||||
- @nestjs/cli
|
||||
- @types/passport-jwt
|
||||
- 20260526160916_add_ui_texts_and_scientific_terms/migration.sql
|
||||
- eslint-plugin-prettier
|
||||
@ -302,8 +316,14 @@
|
||||
- globals
|
||||
- revalidate/route.ts
|
||||
- MaskableField.tsx
|
||||
- @nestjs/testing
|
||||
- prettier
|
||||
- ts-jest
|
||||
- @types/js-yaml
|
||||
- @types/react-dom
|
||||
- @types/supertest
|
||||
- eslint-plugin-react-refresh
|
||||
- tailwindcss
|
||||
- typescript-eslint
|
||||
|
||||
## God Nodes (most connected - your core abstractions)
|
||||
@ -331,11 +351,11 @@
|
||||
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/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`
|
||||
- 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, 95 thin omitted)
|
||||
## Communities (330 total, 113 thin omitted)
|
||||
|
||||
### Community 0 - "Roles"
|
||||
Cohesion: 0.24
|
||||
@ -343,19 +363,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 (34): B2BModule, Module, BannersModule, Module, CmsModule, Module, SmsModule, Global (+26 more)
|
||||
|
||||
### Community 2 - "payment.service.ts"
|
||||
Cohesion: 0.20
|
||||
Nodes (8): AdminTransactionFilterDto, ApiPropertyOptional, IsIn, IsNumber, IsOptional, IsString, Type, ClientMetadata
|
||||
### Community 2 - "getMediaUrl"
|
||||
Cohesion: 0.10
|
||||
Nodes (23): buildTorobProductSpec(), buildTorobProductTitle(), dynamic, GET(), revalidate, dynamic, GET(), revalidate (+15 more)
|
||||
|
||||
### Community 3 - "productService.ts"
|
||||
Cohesion: 0.05
|
||||
Nodes (41): buildTorobProductSpec(), buildTorobProductTitle(), dynamic, GET(), revalidate, dynamic, GET(), revalidate (+33 more)
|
||||
Cohesion: 0.07
|
||||
Nodes (32): DEFAULT_CATEGORIES, dynamic, revalidate, dynamic, revalidate, BlogCategory, BlogPostItem, CatalogPageSpread() (+24 more)
|
||||
|
||||
### Community 4 - "UserDashboard.tsx"
|
||||
Cohesion: 0.11
|
||||
Nodes (20): metadata, OrderDetailsModal(), PetProfile(), SearchResultsPage(), CURRENT_SYMPTOMS, MEDICAL_HISTORIES, SmartAdvisor(), SmartAdvisorProps (+12 more)
|
||||
### Community 4 - "PetProfile.tsx"
|
||||
Cohesion: 0.09
|
||||
Nodes (31): VerifyContent(), metadata, CartDrawer(), Header(), MENU_ICONS, OrderSuccess(), PetProfile(), PrescriptionUploadModal() (+23 more)
|
||||
|
||||
### Community 5 - "CmsController"
|
||||
Cohesion: 0.09
|
||||
@ -370,20 +390,20 @@ Cohesion: 0.20
|
||||
Nodes (10): PatternItem, SmsConfigState, SmsEventDefinition, SmsEventVariable, SmsLogItem, SmsLogStats, SmsRule, SmsSettingsPage() (+2 more)
|
||||
|
||||
### Community 8 - "SmsService"
|
||||
Cohesion: 0.06
|
||||
Nodes (20): SmsEventDefinition, SmsService, Injectable, SettingsController, ApiBearerAuth, ApiOkResponse, ApiOperation, ApiTags (+12 more)
|
||||
Cohesion: 0.05
|
||||
Nodes (27): SmsEventDefinition, SmsService, Injectable, SmsLogQueryDto, ApiPropertyOptional, IsIn, IsNumber, IsOptional (+19 more)
|
||||
|
||||
### Community 9 - "devDependencies"
|
||||
Cohesion: 0.08
|
||||
Nodes (25): devDependencies, eslint, eslint-config-prettier, @eslint/eslintrc, jest, @nestjs/cli, @nestjs/testing, prettier (+17 more)
|
||||
Cohesion: 0.22
|
||||
Nodes (9): devDependencies, prisma, @types/bcryptjs, @types/node, typescript, @types/node, typescript, prisma (+1 more)
|
||||
|
||||
### Community 10 - "ReviewsService"
|
||||
Cohesion: 0.09
|
||||
Nodes (22): ApiProperty, IsIn, IsOptional, IsString, UpdateReviewDto, ReviewsController, ApiBearerAuth, ApiOperation (+14 more)
|
||||
### Community 10 - "reviews.controller.ts"
|
||||
Cohesion: 0.07
|
||||
Nodes (32): CreateReviewDto, ApiProperty, IsInt, IsNotEmpty, IsOptional, IsString, Min, ApiProperty (+24 more)
|
||||
|
||||
### Community 11 - "ConfirmModal.tsx"
|
||||
Cohesion: 0.10
|
||||
Nodes (16): ConfirmModal(), ConfirmModalProps, Pagination(), PaginationProps, Category, Pet, DoctorOption, Video (+8 more)
|
||||
### Community 11 - "UsersService"
|
||||
Cohesion: 0.12
|
||||
Nodes (10): ApiPropertyOptional, IsEmail, IsOptional, IsString, MinLength, UpdateProfileDto, Injectable, Optional (+2 more)
|
||||
|
||||
### Community 12 - "index.ts"
|
||||
Cohesion: 0.06
|
||||
@ -393,13 +413,13 @@ Nodes (24): backend, frontend, playwright.config.ts, @playwright/test, tests/**/
|
||||
Cohesion: 0.07
|
||||
Nodes (26): EnvironmentVariables, IsNotEmpty, IsOptional, IsString, validateEnv(), CustomHttpExceptionFilter, Catch, PrismaExceptionFilter (+18 more)
|
||||
|
||||
### Community 14 - "toPersian"
|
||||
Cohesion: 0.17
|
||||
Nodes (19): VerifyContent(), AddressFormData, AddressModal(), AddressModalProps, normalizeDigits(), validateAddressForm(), BackButton(), BackButtonProps (+11 more)
|
||||
### Community 14 - "UserDashboard.tsx"
|
||||
Cohesion: 0.14
|
||||
Nodes (23): AddressFormData, AddressModal(), AddressModalProps, normalizeDigits(), validateAddressForm(), BackButton(), BackButtonProps, CheckoutPage() (+15 more)
|
||||
|
||||
### Community 15 - "src/services/api.ts"
|
||||
Cohesion: 0.06
|
||||
Nodes (38): Layout(), ProtectedRoute(), MenuGroup, Sidebar(), SidebarProps, SubMenuItem, LiveMonitoringSummary, SEARCHABLE_PAGES (+30 more)
|
||||
Nodes (36): Layout(), ProtectedRoute(), MenuGroup, Sidebar(), SidebarProps, SubMenuItem, LiveMonitoringSummary, SEARCHABLE_PAGES (+28 more)
|
||||
|
||||
### Community 16 - "DoctorQueryDto"
|
||||
Cohesion: 0.09
|
||||
@ -410,20 +430,20 @@ Cohesion: 0.14
|
||||
Nodes (18): B2BPage(), generateMetadata(), ContactPage(), generateMetadata(), generateMetadata(), getInitialVideos(), Videos(), ContactFormClient() (+10 more)
|
||||
|
||||
### Community 18 - "JwtAuthGuard"
|
||||
Cohesion: 0.10
|
||||
Nodes (19): JwtAuthGuard, Injectable, ROLES_KEY, RequestWithUser, RolesGuard, Injectable, ApiPropertyOptional, IsOptional (+11 more)
|
||||
Cohesion: 0.21
|
||||
Nodes (6): JwtAuthGuard, Injectable, ROLES_KEY, RequestWithUser, RolesGuard, Injectable
|
||||
|
||||
### Community 19 - "admin.controller.ts"
|
||||
Cohesion: 0.29
|
||||
Nodes (12): ApplyGlobalMarginsDto, BulkPriceAdjustmentDto, ApiProperty, ApiPropertyOptional, IsArray, IsBoolean, IsIn, IsNumber (+4 more)
|
||||
|
||||
### Community 20 - "CreateVideoDto"
|
||||
Cohesion: 0.07
|
||||
Nodes (32): CreateVideoDto, ApiProperty, ApiPropertyOptional, IsBoolean, IsNotEmpty, IsOptional, IsString, UpdateVideoDto (+24 more)
|
||||
Cohesion: 0.09
|
||||
Nodes (24): CreateVideoDto, ApiProperty, ApiPropertyOptional, IsBoolean, IsNotEmpty, IsOptional, IsString, UpdateVideoDto (+16 more)
|
||||
|
||||
### Community 21 - "auth.service.ts"
|
||||
Cohesion: 0.14
|
||||
Nodes (13): AdminLoginInput, LoginInput, RegisterInput, LoginDto, ApiProperty, IsNotEmpty, IsString, MinLength (+5 more)
|
||||
### Community 21 - "auth.module.ts"
|
||||
Cohesion: 0.15
|
||||
Nodes (10): DEFAULT_JWT_REFRESH_SECRET, DEFAULT_JWT_SECRET, getJwtSecret(), AuthModule, Module, JwtPayload, JwtStrategy, Injectable (+2 more)
|
||||
|
||||
### Community 22 - "ProductDto"
|
||||
Cohesion: 0.16
|
||||
@ -467,23 +487,23 @@ Nodes (31): Acceptance Criteria, Affected Application, Affected Files, Alternati
|
||||
|
||||
### Community 32 - "adminRoutes.tsx"
|
||||
Cohesion: 0.07
|
||||
Nodes (16): App(), Props, RouteErrorBoundary, State, HeroBanner, VetTestimonial, SslStatus, AdminRouteConfig (+8 more)
|
||||
Nodes (21): App(), ContactInfoItem, ContactSubmission, CategoryDist, DashboardData, SslStatus, Ticket, TicketMessage (+13 more)
|
||||
|
||||
### Community 33 - "WholesaleApplyDto"
|
||||
Cohesion: 0.10
|
||||
Nodes (20): ApiProperty, ApiPropertyOptional, IsNotEmpty, IsOptional, IsString, WholesaleApplyDto, ApiBearerAuth, ApiOperation (+12 more)
|
||||
|
||||
### Community 34 - "B2BService"
|
||||
Cohesion: 0.12
|
||||
Nodes (16): B2BController, ApiBearerAuth, ApiOperation, ApiTags, Body, Controller, Get, Param (+8 more)
|
||||
Cohesion: 0.13
|
||||
Nodes (15): B2BController, ApiBearerAuth, ApiOperation, ApiTags, Body, Controller, Get, Param (+7 more)
|
||||
|
||||
### Community 35 - "ContactService"
|
||||
Cohesion: 0.13
|
||||
Nodes (12): ContactController, Body, Controller, Get, Param, Post, Put, Query (+4 more)
|
||||
|
||||
### Community 36 - "FaqService"
|
||||
Cohesion: 0.12
|
||||
Nodes (16): FaqController, ApiBearerAuth, ApiOperation, ApiTags, Body, Controller, Delete, Get (+8 more)
|
||||
### Community 36 - "FaqController"
|
||||
Cohesion: 0.14
|
||||
Nodes (12): FaqController, ApiBearerAuth, ApiOperation, ApiTags, Body, Controller, Delete, Get (+4 more)
|
||||
|
||||
### Community 37 - "راهنمای تست سیستم (Software Testing)"
|
||||
Cohesion: 0.07
|
||||
@ -499,7 +519,7 @@ Nodes (16): CategoriesController, ApiBearerAuth, ApiOperation, ApiQuery, ApiTags
|
||||
|
||||
### Community 40 - "MediaController"
|
||||
Cohesion: 0.11
|
||||
Nodes (16): MediaController, ApiBearerAuth, ApiOperation, ApiTags, Body, Controller, Delete, Get (+8 more)
|
||||
Nodes (14): MediaController, ApiBearerAuth, ApiOperation, ApiTags, Body, Controller, Delete, Get (+6 more)
|
||||
|
||||
### Community 41 - "What You Must Do When Invoked"
|
||||
Cohesion: 0.07
|
||||
@ -530,7 +550,7 @@ Cohesion: 0.13
|
||||
Nodes (14): IngredientsController, ApiBearerAuth, ApiOperation, ApiTags, Body, Controller, Delete, Get (+6 more)
|
||||
|
||||
### Community 48 - "AuthController"
|
||||
Cohesion: 0.25
|
||||
Cohesion: 0.23
|
||||
Nodes (13): AuthController, ApiBadRequestResponse, ApiBearerAuth, ApiOkResponse, ApiOperation, ApiTags, Body, Controller (+5 more)
|
||||
|
||||
### Community 49 - "devDependencies"
|
||||
@ -539,23 +559,23 @@ Nodes (19): autoprefixer, devDependencies, autoprefixer, eslint, @eslint/js, glo
|
||||
|
||||
### Community 50 - "devDependencies"
|
||||
Cohesion: 0.12
|
||||
Nodes (17): devDependencies, eslint, jsdom, tailwindcss, @testing-library/jest-dom, @testing-library/react, @types/node, @types/react (+9 more)
|
||||
Nodes (17): eslint-config-next, devDependencies, eslint, eslint-config-next, jsdom, @testing-library/jest-dom, @testing-library/react, @types/node (+9 more)
|
||||
|
||||
### Community 51 - "BlogsController"
|
||||
Cohesion: 0.07
|
||||
Nodes (18): BlogsController, ApiBearerAuth, ApiOperation, ApiQuery, ApiTags, Body, Controller, Delete (+10 more)
|
||||
|
||||
### Community 52 - "PrescriptionsService"
|
||||
Cohesion: 0.14
|
||||
Nodes (14): PrescriptionsController, ApiBearerAuth, ApiOperation, ApiTags, Body, Controller, Get, Param (+6 more)
|
||||
### Community 52 - "prescriptions.controller.ts"
|
||||
Cohesion: 0.11
|
||||
Nodes (17): PrescriptionsController, ApiBearerAuth, ApiOperation, ApiTags, Body, Controller, Get, Param (+9 more)
|
||||
|
||||
### Community 53 - "SmartAdvisorService"
|
||||
Cohesion: 0.13
|
||||
Nodes (14): SmartAdvisorController, ApiBearerAuth, ApiOperation, ApiTags, Body, Controller, Delete, Get (+6 more)
|
||||
|
||||
### Community 54 - "Button.tsx"
|
||||
Cohesion: 0.07
|
||||
Nodes (24): ButtonProps, ButtonSize, ButtonVariant, maxWidthClasses, Modal(), ModalProps, ContactInfoItem, ContactSubmission (+16 more)
|
||||
Cohesion: 0.10
|
||||
Nodes (16): ButtonProps, ButtonSize, ButtonVariant, ConfirmModal(), ConfirmModalProps, HeroBanner, VetTestimonial, FAQ (+8 more)
|
||||
|
||||
### Community 55 - "UITexts.tsx"
|
||||
Cohesion: 0.08
|
||||
@ -569,9 +589,9 @@ Nodes (15): Badge(), BadgeProps, BadgeVariant, variantStyles, Skeleton(), Monito
|
||||
Cohesion: 0.09
|
||||
Nodes (22): CREATE MODE — Normal Operation, Expected JSON Output Schema, File Scope Boundary, Forbidden Actions, MODE 1: REVIEW (called during Review Phase), MODE 2: CONTENT CREATION (standalone task from backlog), Operating Modes, Operational Rules & Boundaries (+14 more)
|
||||
|
||||
### Community 58 - "AuthService"
|
||||
Cohesion: 0.19
|
||||
Nodes (3): AuthService, Injectable, normalizeMobile()
|
||||
### Community 58 - "auth.service.ts"
|
||||
Cohesion: 0.09
|
||||
Nodes (17): AdminLoginInput, AuthService, LoginInput, RegisterInput, Injectable, SendOtpDto, ApiProperty, IsNotEmpty (+9 more)
|
||||
|
||||
### Community 59 - "compilerOptions"
|
||||
Cohesion: 0.06
|
||||
@ -582,16 +602,16 @@ Cohesion: 0.21
|
||||
Nodes (10): CreateUserDto, ApiProperty, ApiPropertyOptional, IsEmail, IsNotEmpty, IsNumber, IsOptional, IsString (+2 more)
|
||||
|
||||
### Community 61 - "ProductPage.tsx"
|
||||
Cohesion: 0.09
|
||||
Nodes (20): ProductImageZoomModalProps, CalculatorState, GalleryMediaItem, ICON_MAP, isVideoUrl(), ProductImageZoomModal, ProductPage(), ProductReviews (+12 more)
|
||||
Cohesion: 0.18
|
||||
Nodes (21): ArchiveProductCard(), CATEGORY_MAP, ICON_MAP, FeaturedProducts(), ProductCard(), ProductImageZoomModalProps, CalculatorState, GalleryMediaItem (+13 more)
|
||||
|
||||
### Community 62 - "torob.controller.ts"
|
||||
Cohesion: 0.22
|
||||
Nodes (8): buildTorobProductSpec(), buildTorobProductTitle(), TorobController, ApiOperation, ApiTags, Controller, Get, Query
|
||||
|
||||
### 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,12 +626,12 @@ Cohesion: 0.18
|
||||
Nodes (7): ApiQuery, Query, AdminProductQueryDto, AdminQueryDto, ApiPropertyOptional, IsOptional, IsString
|
||||
|
||||
### Community 67 - "admin.module.ts"
|
||||
Cohesion: 0.08
|
||||
Nodes (17): AdminModule, Module, ReportsController, ApiBearerAuth, ApiOperation, ApiQuery, ApiTags, Controller (+9 more)
|
||||
Cohesion: 0.06
|
||||
Nodes (23): AdminModule, Module, CategoryQuery, MediaService, Injectable, PetQuery, PetsService, Injectable (+15 more)
|
||||
|
||||
### Community 68 - "useSettingsStore"
|
||||
Cohesion: 0.08
|
||||
Nodes (36): HomeClient(), HomeClientProps, B2BLandingClient(), BlogPostClientProps, BlogPost, BlogPreviewSection(), ContactInfoItem, EnamadBadge() (+28 more)
|
||||
Cohesion: 0.07
|
||||
Nodes (34): HomeClient(), HomeClientProps, ArchivePage(), B2BLandingClient(), BannerPlacement(), BannerPlacementProps, BrandLogo(), BrandLogoProps (+26 more)
|
||||
|
||||
### Community 69 - "Required Review Group Closures"
|
||||
Cohesion: 0.10
|
||||
@ -622,8 +642,8 @@ Cohesion: 0.08
|
||||
Nodes (23): compilerOptions, allowImportingTsExtensions, erasableSyntaxOnly, jsx, lib, module, moduleDetection, moduleResolution (+15 more)
|
||||
|
||||
### Community 71 - "getPageMetadata"
|
||||
Cohesion: 0.08
|
||||
Nodes (16): generateMetadata(), CatalogClient(), generateMetadata(), generateMetadata(), generateMetadata(), generateMetadata(), generateMetadata(), generateMetadata() (+8 more)
|
||||
Cohesion: 0.09
|
||||
Nodes (15): generateMetadata(), CatalogClient(), generateMetadata(), generateMetadata(), generateMetadata(), generateMetadata(), generateMetadata(), generateMetadata() (+7 more)
|
||||
|
||||
### Community 72 - "Operational Rules & Boundaries"
|
||||
Cohesion: 0.11
|
||||
@ -677,9 +697,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 - "RegisterDto"
|
||||
Cohesion: 0.22
|
||||
Nodes (8): RegisterDto, ApiProperty, ApiPropertyOptional, IsEmail, IsNotEmpty, IsOptional, IsString, MinLength
|
||||
### Community 85 - "auth.controller.ts"
|
||||
Cohesion: 0.10
|
||||
Nodes (19): AdminLoginDto, ApiProperty, IsEmail, IsNotEmpty, IsString, MinLength, LoginDto, ApiProperty (+11 more)
|
||||
|
||||
### Community 86 - "zibal.service.ts"
|
||||
Cohesion: 0.16
|
||||
@ -697,21 +717,21 @@ Nodes (8): CreateEBankCheckoutDto, ApiProperty, ApiPropertyOptional, IsNotEmpty,
|
||||
Cohesion: 0.17
|
||||
Nodes (12): prisma, main(), prisma, determineSuitableFor(), findOrCreateCategory(), getProductImageUrl(), main(), parseSize() (+4 more)
|
||||
|
||||
### Community 90 - "useCartStore"
|
||||
Cohesion: 0.09
|
||||
Nodes (19): B2BPortal, CartDrawer, B2BPortal(), CartDrawer(), DeleteConfirmModal(), DeleteConfirmModalProps, OrderSuccess(), OrderTracking() (+11 more)
|
||||
### Community 90 - "orderService.ts"
|
||||
Cohesion: 0.18
|
||||
Nodes (5): ApiErr, Order, OrderItem, OrderService, mockProduct
|
||||
|
||||
### 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.06
|
||||
Nodes (35): CreateOrderDto, OrderItemDto, ApiProperty, ApiPropertyOptional, IsArray, IsNotEmpty, IsNumber, IsOptional (+27 more)
|
||||
Cohesion: 0.07
|
||||
Nodes (29): CreateOrderDto, OrderItemDto, ApiProperty, ApiPropertyOptional, IsArray, IsNotEmpty, IsNumber, IsOptional (+21 more)
|
||||
|
||||
### Community 93 - "ArchivePage.tsx"
|
||||
Cohesion: 0.08
|
||||
Nodes (21): ArchivePage(), ArchiveProductCard(), CATEGORY_MAP, ICON_MAP, BannerPlacement(), BannerPlacementProps, OrderRowSkeleton(), PetProfileSkeleton() (+13 more)
|
||||
### Community 93 - "components/Skeleton.tsx"
|
||||
Cohesion: 0.24
|
||||
Nodes (4): OrderRowSkeleton(), PetProfileSkeleton(), Skeleton(), SkeletonProps
|
||||
|
||||
### Community 94 - "Phase 3.1 — Human Review Preparation and Master Backlog Critique"
|
||||
Cohesion: 0.13
|
||||
@ -725,6 +745,10 @@ Nodes (11): BlogPostPage(), generateMetadata(), getBlog(), revalidate, safeIso()
|
||||
Cohesion: 0.06
|
||||
Nodes (32): compilerOptions, allowJs, esModuleInterop, incremental, isolatedModules, jsx, lib, module (+24 more)
|
||||
|
||||
### Community 97 - "PaymentService"
|
||||
Cohesion: 0.10
|
||||
Nodes (9): AdminTransactionFilterDto, ApiPropertyOptional, IsIn, IsNumber, IsOptional, IsString, Type, PaymentService (+1 more)
|
||||
|
||||
### Community 98 - "scripts"
|
||||
Cohesion: 0.13
|
||||
Nodes (15): scripts, build, build:nest, docs:generate, lint, seo:backfill, start, start:debug (+7 more)
|
||||
@ -750,8 +774,8 @@ Cohesion: 0.15
|
||||
Nodes (12): 10. `TASK-VERIFY-001`, 1. `TASK-SEC-001`, 2. `TASK-SEC-002`, 3. `TASK-SEC-003`, 4. `TASK-FIN-001`, 5. `TASK-BUILD-001`, 6. `TASK-AUTH-001`, 7. `TASK-FE-001` (+4 more)
|
||||
|
||||
### Community 104 - "Products.tsx"
|
||||
Cohesion: 0.09
|
||||
Nodes (25): Input, InputProps, formatPriceWithCommas(), PriceInput(), PriceInputProps, toEnglishDigits(), Coupon, CouponFormData (+17 more)
|
||||
Cohesion: 0.10
|
||||
Nodes (24): Input, InputProps, formatPriceWithCommas(), PriceInput(), PriceInputProps, toEnglishDigits(), Coupon, CouponFormData (+16 more)
|
||||
|
||||
### Community 105 - "Operational Rules & Boundaries"
|
||||
Cohesion: 0.17
|
||||
@ -762,12 +786,12 @@ Cohesion: 0.43
|
||||
Nodes (7): InitiatePaymentDto, InitiateWalletTopupDto, ApiProperty, ApiPropertyOptional, IsNotEmpty, IsOptional, IsString
|
||||
|
||||
### Community 107 - "PaginationDto"
|
||||
Cohesion: 0.06
|
||||
Nodes (27): BlogsModule, Module, BlogFilterDto, BlogsService, Injectable, PaginationDto, SortOrder, ApiPropertyOptional (+19 more)
|
||||
Cohesion: 0.05
|
||||
Nodes (32): BlogsModule, Module, BlogFilterDto, BlogsService, Injectable, PaginationDto, SortOrder, ApiPropertyOptional (+24 more)
|
||||
|
||||
### Community 108 - "PrismaService"
|
||||
Cohesion: 0.07
|
||||
Nodes (23): CategoryQuery, DEFAULT_SMS_RULES, SMS_EVENT_DEFINITIONS, SmsEventVariable, SmsRule, MeliPayamakPattern, MeliPayamakResponse, SendPatternSmsOptions (+15 more)
|
||||
Cohesion: 0.04
|
||||
Nodes (35): ApiExcludeController, Optional, B2BWholesaleOrderItem, MetricsController, Controller, Get, Res, RevalidationModule (+27 more)
|
||||
|
||||
### Community 109 - "1. Summary of Integrity Repairs Performed"
|
||||
Cohesion: 0.17
|
||||
@ -786,16 +810,16 @@ 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 - "PetsController"
|
||||
Cohesion: 0.10
|
||||
Nodes (14): PetsController, ApiBearerAuth, ApiOperation, ApiQuery, ApiTags, Controller, Delete, Get (+6 more)
|
||||
Cohesion: 0.15
|
||||
Nodes (11): PetsController, ApiBearerAuth, ApiOperation, ApiQuery, ApiTags, Controller, Delete, Get (+3 more)
|
||||
|
||||
### Community 114 - "AppService"
|
||||
Cohesion: 0.29
|
||||
Nodes (5): AppController, Controller, Get, AppService, Injectable
|
||||
|
||||
### Community 115 - "Spinner.tsx"
|
||||
Cohesion: 0.10
|
||||
Nodes (22): ImagePreviewModal(), ImagePreviewModalProps, getFileType(), Media, MediaSelector(), MediaSelectorProps, Spinner(), Doctor (+14 more)
|
||||
Cohesion: 0.07
|
||||
Nodes (36): ImagePreviewModal(), ImagePreviewModalProps, getFileType(), Media, MediaSelector(), MediaSelectorProps, maxWidthClasses, Modal() (+28 more)
|
||||
|
||||
### Community 116 - "Vazirmatn Changelog"
|
||||
Cohesion: 0.18
|
||||
@ -825,9 +849,9 @@ Nodes (9): Compile and run the project, Deployment, Description, License, Projec
|
||||
Cohesion: 0.09
|
||||
Nodes (12): AdminController, ApiBearerAuth, ApiOperation, ApiTags, Controller, Delete, Get, Param (+4 more)
|
||||
|
||||
### Community 123 - "UsersService"
|
||||
Cohesion: 0.05
|
||||
Nodes (42): DEFAULT_JWT_REFRESH_SECRET, DEFAULT_JWT_SECRET, getJwtSecret(), AuthModule, Module, JwtPayload, JwtStrategy, Injectable (+34 more)
|
||||
### Community 123 - "UsersController"
|
||||
Cohesion: 0.21
|
||||
Nodes (16): ApiBadRequestResponse, ApiBearerAuth, ApiCreatedResponse, ApiOkResponse, ApiOperation, ApiTags, Body, Controller (+8 more)
|
||||
|
||||
### Community 124 - "Repository Map"
|
||||
Cohesion: 0.20
|
||||
@ -909,13 +933,13 @@ Nodes (7): backend, distMainPath, fs, http, path, { spawn, execSync }, waitForBa
|
||||
Cohesion: 0.25
|
||||
Nodes (6): app_module_1, core_1, fs, path, swagger_1, yaml
|
||||
|
||||
### Community 144 - "PodcastPlayerModal.tsx"
|
||||
Cohesion: 0.40
|
||||
Nodes (3): PLAYBACK_RATES, PodcastPlayerModal(), PodcastPlayerModalProps
|
||||
### Community 144 - "lib/services/api.ts"
|
||||
Cohesion: 0.08
|
||||
Nodes (24): B2BPortal(), BlogPostClientProps, BlogPost, BlogPreviewSection(), ContactInfoItem, OrderDetailsModal(), OrderDetailsModalProps, PLAYBACK_RATES (+16 more)
|
||||
|
||||
### Community 145 - "AdminLoginDto"
|
||||
Cohesion: 0.29
|
||||
Nodes (6): AdminLoginDto, ApiProperty, IsEmail, IsNotEmpty, IsString, MinLength
|
||||
### Community 145 - "orders.service.ts"
|
||||
Cohesion: 0.24
|
||||
Nodes (6): IsNotEmpty, IsNumber, IsString, ValidateCouponDto, OrdersModule, Module
|
||||
|
||||
### Community 146 - "System Discovery"
|
||||
Cohesion: 0.25
|
||||
@ -925,9 +949,9 @@ Nodes (7): Active Core Applications, Current Architecture, Evidence-Based Status
|
||||
Cohesion: 0.16
|
||||
Nodes (10): HomeController, ApiOkResponse, ApiOperation, ApiTags, Controller, Get, HomeModule, Module (+2 more)
|
||||
|
||||
### Community 148 - "VerifyOtpDto"
|
||||
Cohesion: 0.33
|
||||
Nodes (6): ApiProperty, IsNotEmpty, IsString, Matches, VerifyOtpDto, Length
|
||||
### Community 148 - "RouteErrorBoundary"
|
||||
Cohesion: 0.22
|
||||
Nodes (3): Props, RouteErrorBoundary, State
|
||||
|
||||
### Community 149 - "wiki/[slug]/page.tsx"
|
||||
Cohesion: 0.60
|
||||
@ -937,9 +961,13 @@ Nodes (5): generateMetadata(), getRelatedProducts(), getWikiTerm(), WikiTermPage
|
||||
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 152 - "RevalidationService"
|
||||
Cohesion: 0.10
|
||||
Nodes (11): Optional, RevalidationModule, Global, Module, RevalidationService, Injectable, RedisModule, Global (+3 more)
|
||||
### Community 151 - "AddressDto"
|
||||
Cohesion: 0.25
|
||||
Nodes (7): AddressDto, ApiProperty, ApiPropertyOptional, IsBoolean, IsNotEmpty, IsOptional, IsString
|
||||
|
||||
### Community 152 - "RedisService"
|
||||
Cohesion: 0.11
|
||||
Nodes (7): AppModule, Module, RedisModule, Global, Module, RedisService, Injectable
|
||||
|
||||
### Community 153 - "exclude"
|
||||
Cohesion: 0.22
|
||||
@ -1057,9 +1085,13 @@ Nodes (3): Architectural Overview, Critical Review Findings & Required Enhanceme
|
||||
Cohesion: 0.50
|
||||
Nodes (3): Overview & Content Foundation, SEO & Content Requirements, 🚀 SEO & Content Strategy Review (12_seo_content)
|
||||
|
||||
### Community 184 - "AppModule"
|
||||
Cohesion: 0.12
|
||||
Nodes (7): ApiExcludeController, AppModule, Module, MetricsController, Controller, Get, Res
|
||||
### Community 184 - "FaqService"
|
||||
Cohesion: 0.33
|
||||
Nodes (4): FaqModule, Module, FaqService, Injectable
|
||||
|
||||
### Community 185 - "Reviews.tsx"
|
||||
Cohesion: 0.40
|
||||
Nodes (5): BlogCommentItem, ProductReview, Reviews(), toPersianDigits(), Reviews
|
||||
|
||||
### Community 191 - "graphify reference: add a URL and watch a folder"
|
||||
Cohesion: 0.50
|
||||
@ -1085,13 +1117,9 @@ Nodes (3): Expanding the ESLint configuration, React Compiler, React + TypeScrip
|
||||
Cohesion: 0.50
|
||||
Nodes (3): Select, SelectOption, SelectProps
|
||||
|
||||
### Community 197 - "userStore.ts"
|
||||
Cohesion: 0.06
|
||||
Nodes (33): AuthModal, ClientLayout(), LoginModal, AuthModal(), AuthModalProps, extractOtpFromText(), BrandLogo(), BrandLogoProps (+25 more)
|
||||
|
||||
### Community 199 - "SmsLogQueryDto"
|
||||
Cohesion: 0.25
|
||||
Nodes (7): SmsLogQueryDto, ApiPropertyOptional, IsIn, IsNumber, IsOptional, IsString, Type
|
||||
### Community 197 - "ClientLayout.tsx"
|
||||
Cohesion: 0.08
|
||||
Nodes (19): AuthModal, B2BPortal, CartDrawer, ClientLayout(), LoginModal, AuthModal(), AuthModalProps, extractOtpFromText() (+11 more)
|
||||
|
||||
### Community 200 - "application/README.md"
|
||||
Cohesion: 0.50
|
||||
@ -1110,8 +1138,8 @@ Cohesion: 0.67
|
||||
Nodes (3): Shabnam Font README, Shabnam Font Sample, Vazir Font
|
||||
|
||||
### Community 298 - ".initiateOrderPayment"
|
||||
Cohesion: 0.28
|
||||
Nodes (6): ApiBadRequestResponse, ApiOkResponse, Req, Res, Headers, Ip
|
||||
Cohesion: 0.20
|
||||
Nodes (10): ApiPropertyOptional, IsOptional, IsString, ZibalCallbackQueryDto, ApiBadRequestResponse, ApiOkResponse, Req, Res (+2 more)
|
||||
|
||||
### Community 317 - "revalidate/route.ts"
|
||||
Cohesion: 0.83
|
||||
@ -1120,22 +1148,22 @@ Nodes (3): GET(), handleRevalidate(), POST()
|
||||
## Knowledge Gaps
|
||||
- **1352 isolated node(s):** `$schema`, `collection`, `sourceRoot`, `deleteOutDir`, `name` (+1347 more)
|
||||
These have ≤1 connection - possible missing edges or undocumented components.
|
||||
- **95 thin communities (<3 nodes) omitted from report** — run `graphify query` to explore isolated nodes.
|
||||
- **113 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 `Roles()` connect `Roles` to `WholesaleApplyDto`, `B2BService`, `ContactService`, `FaqService`, `CmsController`, `tickets.controller.ts`, `SmsService`, `SslController`, `BannersService`, `ProductsService`, `ReviewsService`, `TestimonialsService`, `IngredientsService`, `JwtAuthGuard`, `PrescriptionsService`, `SmartAdvisorService`, `MenuService`?**
|
||||
- **Why does `Roles()` connect `Roles` to `WholesaleApplyDto`, `B2BService`, `ContactService`, `FaqController`, `CmsController`, `tickets.controller.ts`, `SmsService`, `SslController`, `BannersService`, `ProductsService`, `reviews.controller.ts`, `TestimonialsService`, `IngredientsService`, `JwtAuthGuard`, `prescriptions.controller.ts`, `SmartAdvisorService`, `MenuService`?**
|
||||
_High betweenness centrality (0.094) - this node is a cross-community bridge._
|
||||
- **Why does `ApiResponse` connect `src/services/api.ts` to `BlogsController`, `PetsController`, `ProductsService`, `PaginationDto`, `AuthController`, `HomeController`, `UsersService`, `OrdersService`?**
|
||||
- **Why does `ApiResponse` connect `src/services/api.ts` to `BlogsController`, `PetsController`, `ProductsService`, `PaginationDto`, `AuthController`, `HomeController`, `UsersController`, `OrdersService`?**
|
||||
_High betweenness centrality (0.066) - this node is a cross-community bridge._
|
||||
- **Why does `JwtAuthGuard` connect `JwtAuthGuard` to `admin.module.ts`, `CmsController`, `tickets.controller.ts`, `PaginationDto`, `PetsController`, `ProductsService`, `DoctorQueryDto`, `PetsController`, `admin.controller.ts`, `CreateVideoDto`, `auth.service.ts`, `UsersService`, `OrdersService`?**
|
||||
- **Why does `JwtAuthGuard` connect `JwtAuthGuard` to `admin.module.ts`, `CmsController`, `tickets.controller.ts`, `reviews.controller.ts`, `PaginationDto`, `PetsController`, `ProductsService`, `UsersService`, `DoctorQueryDto`, `orders.service.ts`, `admin.controller.ts`, `prescriptions.controller.ts`, `auth.controller.ts`?**
|
||||
_High betweenness centrality (0.030) - this node is a cross-community bridge._
|
||||
- **What connects `$schema`, `collection`, `sourceRoot` to the rest of the system?**
|
||||
_1352 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.07215686274509804 - nodes in this community are weakly interconnected._
|
||||
- **Should `getMediaUrl` be split into smaller, more focused modules?**
|
||||
_Cohesion score 0.09848484848484848 - nodes in this community are weakly interconnected._
|
||||
- **Should `productService.ts` be split into smaller, more focused modules?**
|
||||
_Cohesion score 0.05472837022132797 - nodes in this community are weakly interconnected._
|
||||
- **Should `UserDashboard.tsx` be split into smaller, more focused modules?**
|
||||
_Cohesion score 0.10752688172043011 - 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
11310
graphify-out/graph.json
11310
graphify-out/graph.json
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