chore(clean): pass all lint, typecheck and build checks with zero errors
This commit is contained in:
parent
6fa1f2c906
commit
a7d842ba10
@ -179,10 +179,11 @@ export class AdminService {
|
||||
]);
|
||||
|
||||
const enrichedUsers = data.map((u) => {
|
||||
const totalSpent = u.orders?.reduce(
|
||||
(acc, curr) => acc + (Number(curr.totalAmount) || 0),
|
||||
0,
|
||||
) || 0;
|
||||
const totalSpent =
|
||||
u.orders?.reduce(
|
||||
(acc, curr) => acc + (Number(curr.totalAmount) || 0),
|
||||
0,
|
||||
) || 0;
|
||||
const { orders, ...rest } = u;
|
||||
return {
|
||||
...rest,
|
||||
@ -1194,8 +1195,7 @@ export class AdminService {
|
||||
dto.roundingStep !== undefined
|
||||
? Number(dto.roundingStep)
|
||||
: pricingSettings.roundingStep;
|
||||
const globalRoundingMode = (dto.roundingMode ||
|
||||
pricingSettings.roundingMode) as RoundingMode;
|
||||
const globalRoundingMode = dto.roundingMode || pricingSettings.roundingMode;
|
||||
const retailMargin = Number(dto.retailMarginPercent);
|
||||
const wholesaleMargin = Number(dto.wholesaleMarginPercent);
|
||||
|
||||
@ -1285,7 +1285,8 @@ export class AdminService {
|
||||
roundingStep: updatedPricing.roundingStep,
|
||||
roundingMode: updatedPricing.roundingMode,
|
||||
defaultRetailMarginPercent: updatedPricing.defaultRetailMarginPercent,
|
||||
defaultWholesaleMarginPercent: updatedPricing.defaultWholesaleMarginPercent,
|
||||
defaultWholesaleMarginPercent:
|
||||
updatedPricing.defaultWholesaleMarginPercent,
|
||||
};
|
||||
await this.prisma.setting.upsert({
|
||||
where: { key: 'pricing_config' },
|
||||
@ -1313,8 +1314,7 @@ export class AdminService {
|
||||
dto.roundingStep !== undefined
|
||||
? Number(dto.roundingStep)
|
||||
: pricingSettings.roundingStep;
|
||||
const roundingMode = (dto.roundingMode ||
|
||||
pricingSettings.roundingMode) as RoundingMode;
|
||||
const roundingMode = dto.roundingMode || pricingSettings.roundingMode;
|
||||
const applyRound = dto.applyRounding !== false;
|
||||
const adjValue = Number(dto.value || 0);
|
||||
|
||||
|
||||
@ -35,7 +35,8 @@ export class UpdatePricingSettingsDto {
|
||||
defaultWholesaleMarginPercent!: number;
|
||||
|
||||
@ApiPropertyOptional({
|
||||
description: 'آیا قیمت تمام محصولات بر اساس فرمول جدید بلافاصله بهروزرسانی شود؟',
|
||||
description:
|
||||
'آیا قیمت تمام محصولات بر اساس فرمول جدید بلافاصله بهروزرسانی شود؟',
|
||||
default: true,
|
||||
})
|
||||
@IsOptional()
|
||||
@ -44,12 +45,18 @@ export class UpdatePricingSettingsDto {
|
||||
}
|
||||
|
||||
export class ApplyGlobalMarginsDto {
|
||||
@ApiProperty({ description: 'درصد سود تکفروشی برای اعمال سراسری', example: 30 })
|
||||
@ApiProperty({
|
||||
description: 'درصد سود تکفروشی برای اعمال سراسری',
|
||||
example: 30,
|
||||
})
|
||||
@IsNumber()
|
||||
@Min(0)
|
||||
retailMarginPercent!: number;
|
||||
|
||||
@ApiProperty({ description: 'درصد سود عمدهفروشی برای اعمال سراسری', example: 15 })
|
||||
@ApiProperty({
|
||||
description: 'درصد سود عمدهفروشی برای اعمال سراسری',
|
||||
example: 15,
|
||||
})
|
||||
@IsNumber()
|
||||
@Min(0)
|
||||
wholesaleMarginPercent!: number;
|
||||
@ -79,12 +86,16 @@ export class ApplyGlobalMarginsDto {
|
||||
@IsIn(['ALL', 'CATEGORY', 'SPECIFIC'])
|
||||
scope?: 'ALL' | 'CATEGORY' | 'SPECIFIC';
|
||||
|
||||
@ApiPropertyOptional({ description: 'شناسه دستهبندیها در صورت انتخاب دامنه CATEGORY' })
|
||||
@ApiPropertyOptional({
|
||||
description: 'شناسه دستهبندیها در صورت انتخاب دامنه CATEGORY',
|
||||
})
|
||||
@IsOptional()
|
||||
@IsArray()
|
||||
categoryIds?: string[];
|
||||
|
||||
@ApiPropertyOptional({ description: 'شناسه محصولات در صورت انتخاب دامنه SPECIFIC' })
|
||||
@ApiPropertyOptional({
|
||||
description: 'شناسه محصولات در صورت انتخاب دامنه SPECIFIC',
|
||||
})
|
||||
@IsOptional()
|
||||
@IsArray()
|
||||
productIds?: string[];
|
||||
@ -100,12 +111,16 @@ export class BulkPriceAdjustmentDto {
|
||||
@IsIn(['ALL', 'CATEGORY', 'SPECIFIC'])
|
||||
scope!: 'ALL' | 'CATEGORY' | 'SPECIFIC';
|
||||
|
||||
@ApiPropertyOptional({ description: 'شناسه دستهبندیها در صورت انتخاب دامنه CATEGORY' })
|
||||
@ApiPropertyOptional({
|
||||
description: 'شناسه دستهبندیها در صورت انتخاب دامنه CATEGORY',
|
||||
})
|
||||
@IsOptional()
|
||||
@IsArray()
|
||||
categoryIds?: string[];
|
||||
|
||||
@ApiPropertyOptional({ description: 'شناسه محصولات در صورت انتخاب دامنه SPECIFIC' })
|
||||
@ApiPropertyOptional({
|
||||
description: 'شناسه محصولات در صورت انتخاب دامنه SPECIFIC',
|
||||
})
|
||||
@IsOptional()
|
||||
@IsArray()
|
||||
productIds?: string[];
|
||||
@ -129,7 +144,8 @@ export class BulkPriceAdjustmentDto {
|
||||
adjustmentType!: 'PERCENT' | 'FIXED';
|
||||
|
||||
@ApiProperty({
|
||||
description: 'جهت تغییر: INCREASE (افزایش / گرانتر) یا DECREASE (کاهش / ارزانتر)',
|
||||
description:
|
||||
'جهت تغییر: INCREASE (افزایش / گرانتر) یا DECREASE (کاهش / ارزانتر)',
|
||||
enum: ['INCREASE', 'DECREASE'],
|
||||
example: 'INCREASE',
|
||||
})
|
||||
@ -138,19 +154,26 @@ export class BulkPriceAdjustmentDto {
|
||||
adjustmentDirection!: 'INCREASE' | 'DECREASE';
|
||||
|
||||
@ApiProperty({
|
||||
description: 'مقدار تغییر (مثلاً 10 برای 10 درصد، یا 100000 برای 100 هزار تومان)',
|
||||
description:
|
||||
'مقدار تغییر (مثلاً 10 برای 10 درصد، یا 100000 برای 100 هزار تومان)',
|
||||
example: 10,
|
||||
})
|
||||
@IsNumber()
|
||||
@Min(0)
|
||||
value!: number;
|
||||
|
||||
@ApiPropertyOptional({ description: 'آیا پس از تغییر قیمت، گرد کردن اعمال شود؟', default: true })
|
||||
@ApiPropertyOptional({
|
||||
description: 'آیا پس از تغییر قیمت، گرد کردن اعمال شود؟',
|
||||
default: true,
|
||||
})
|
||||
@IsOptional()
|
||||
@IsBoolean()
|
||||
applyRounding?: boolean;
|
||||
|
||||
@ApiPropertyOptional({ description: 'گام گرد کردن سفارشی (در صورت خالی بودن از تنظیمات سیستم استفاده میشود)' })
|
||||
@ApiPropertyOptional({
|
||||
description:
|
||||
'گام گرد کردن سفارشی (در صورت خالی بودن از تنظیمات سیستم استفاده میشود)',
|
||||
})
|
||||
@IsOptional()
|
||||
@IsNumber()
|
||||
roundingStep?: number;
|
||||
|
||||
@ -83,7 +83,9 @@ export class ProductDto {
|
||||
@IsNumber()
|
||||
wholesaleMarginPercent?: number;
|
||||
|
||||
@ApiPropertyOptional({ description: 'گام گرد کردن اختصاصی این محصول (اختیاری)' })
|
||||
@ApiPropertyOptional({
|
||||
description: 'گام گرد کردن اختصاصی این محصول (اختیاری)',
|
||||
})
|
||||
@IsOptional()
|
||||
@IsNumber()
|
||||
roundingStep?: number;
|
||||
|
||||
@ -82,7 +82,13 @@ export class BlogsController {
|
||||
@ApiOperation({ summary: 'ارسال نظر برای مقاله' })
|
||||
addComment(
|
||||
@Param('slug') slug: string,
|
||||
@Body() body: { userName: string; email?: string; content: string; userId?: string },
|
||||
@Body()
|
||||
body: {
|
||||
userName: string;
|
||||
email?: string;
|
||||
content: string;
|
||||
userId?: string;
|
||||
},
|
||||
) {
|
||||
return this.blogsService.addComment(slug, body);
|
||||
}
|
||||
|
||||
@ -357,7 +357,12 @@ export class BlogsService {
|
||||
|
||||
async addComment(
|
||||
slug: string,
|
||||
data: { userName: string; email?: string; content: string; userId?: string },
|
||||
data: {
|
||||
userName: string;
|
||||
email?: string;
|
||||
content: string;
|
||||
userId?: string;
|
||||
},
|
||||
) {
|
||||
const blog = await this.prisma.blog.findUnique({
|
||||
where: { slug },
|
||||
|
||||
@ -111,10 +111,11 @@ export class ProductsService {
|
||||
const isAdmin = userRole === 'ADMIN' || userRole === 'SuperAdmin';
|
||||
|
||||
const data = rawProducts.map((p) => {
|
||||
const totalSold = p.orderItems?.reduce(
|
||||
(acc, item) => acc + (Number(item.quantity) || 0),
|
||||
0,
|
||||
) || 0;
|
||||
const totalSold =
|
||||
p.orderItems?.reduce(
|
||||
(acc, item) => acc + (Number(item.quantity) || 0),
|
||||
0,
|
||||
) || 0;
|
||||
const { buyPrice, wholesalePrice, orderItems, ...publicProduct } = p;
|
||||
void buyPrice;
|
||||
void wholesalePrice;
|
||||
|
||||
@ -69,13 +69,14 @@ function buildTorobProductSpec(product: {
|
||||
category?: { name?: string } | null;
|
||||
}): Record<string, string> {
|
||||
const spec: Record<string, string> = {
|
||||
'برند': 'کنینا (Canina Pharma Germany)',
|
||||
برند: 'کنینا (Canina Pharma Germany)',
|
||||
'کشور سازنده': 'آلمان',
|
||||
'ضمانت': 'اصالت ۱۰۰٪ کالای آلمانی و سلامت فیزیکی',
|
||||
ضمانت: 'اصالت ۱۰۰٪ کالای آلمانی و سلامت فیزیکی',
|
||||
};
|
||||
|
||||
if (product.suitableFor) {
|
||||
spec['گونه هدف'] = product.suitableFor === 'هر دو' ? 'سگ و گربه' : product.suitableFor;
|
||||
spec['گونه هدف'] =
|
||||
product.suitableFor === 'هر دو' ? 'سگ و گربه' : product.suitableFor;
|
||||
}
|
||||
|
||||
const numSize = Number(product.packageSize);
|
||||
@ -101,14 +102,22 @@ export class TorobController {
|
||||
constructor(private readonly prisma: PrismaService) {}
|
||||
|
||||
@Get('products')
|
||||
@ApiOperation({ summary: 'دریافت محصولات جهت وبسرویس خودکار ترب (Torob API)' })
|
||||
@ApiOperation({
|
||||
summary: 'دریافت محصولات جهت وبسرویس خودکار ترب (Torob API)',
|
||||
})
|
||||
async getTorobProducts(
|
||||
@Query('page') pageQuery?: string,
|
||||
@Query('page_size') pageSizeQuery?: string,
|
||||
) {
|
||||
const page = Math.max(1, parseInt(pageQuery || '1', 10));
|
||||
const pageSize = Math.min(100, Math.max(10, parseInt(pageSizeQuery || '100', 10)));
|
||||
const baseUrl = (process.env.FRONTEND_URL || 'https://canina.ir').replace(/\/$/, '');
|
||||
const pageSize = Math.min(
|
||||
100,
|
||||
Math.max(10, parseInt(pageSizeQuery || '100', 10)),
|
||||
);
|
||||
const baseUrl = (process.env.FRONTEND_URL || 'https://canina.ir').replace(
|
||||
/\/$/,
|
||||
'',
|
||||
);
|
||||
|
||||
const whereCondition = {
|
||||
noIndex: false,
|
||||
@ -134,7 +143,7 @@ export class TorobController {
|
||||
const slug = product.slug || product.artNo || product.id;
|
||||
const pageUrl = `${baseUrl}/shop/${slug}`;
|
||||
const productId = String(product.artNo || product.id || slug);
|
||||
|
||||
|
||||
const title = buildTorobProductTitle(product);
|
||||
const spec = buildTorobProductSpec(product);
|
||||
|
||||
@ -142,8 +151,15 @@ export class TorobController {
|
||||
const rawEn = (product.nameEn || '').trim();
|
||||
const numSize = Number(product.packageSize);
|
||||
const unit = (product.unit || '').trim();
|
||||
const sizeStr = numSize && numSize > 0 ? (unit ? `${numSize} ${unit}` : `${numSize}`) : '';
|
||||
let subtitle = rawEn.startsWith('Canina') ? rawEn : `Canina ${rawEn}`.trim();
|
||||
const sizeStr =
|
||||
numSize && numSize > 0
|
||||
? unit
|
||||
? `${numSize} ${unit}`
|
||||
: `${numSize}`
|
||||
: '';
|
||||
let subtitle = rawEn.startsWith('Canina')
|
||||
? rawEn
|
||||
: `Canina ${rawEn}`.trim();
|
||||
if (sizeStr && !subtitle.includes(sizeStr)) {
|
||||
subtitle = `${subtitle} - ${sizeStr}`;
|
||||
}
|
||||
@ -151,12 +167,16 @@ export class TorobController {
|
||||
const rawImage = product.ogImage || product.imageUrl || '';
|
||||
let imageLink = '';
|
||||
if (rawImage) {
|
||||
const cleanImage = rawImage.trim()
|
||||
const cleanImage = rawImage
|
||||
.trim()
|
||||
.replace(/^https?:\/\/api\.canina\.ir/i, '')
|
||||
.replace(/^https?:\/\/localhost:\d+/i, '')
|
||||
.replace(/^https?:\/\/127\.0\.0\.1:\d+/i, '');
|
||||
|
||||
if (cleanImage.startsWith('http://') || cleanImage.startsWith('https://')) {
|
||||
if (
|
||||
cleanImage.startsWith('http://') ||
|
||||
cleanImage.startsWith('https://')
|
||||
) {
|
||||
imageLink = cleanImage;
|
||||
} else {
|
||||
const cleanPath = cleanImage.replace(/^\/?(api\/)?(uploads\/)?/, '');
|
||||
@ -164,7 +184,11 @@ export class TorobController {
|
||||
}
|
||||
}
|
||||
|
||||
const isInStock = product.stockStatus !== 'DISCONTINUED' && String(product.stockStatus || '').toLowerCase().includes('in');
|
||||
const isInStock =
|
||||
product.stockStatus !== 'DISCONTINUED' &&
|
||||
String(product.stockStatus || '')
|
||||
.toLowerCase()
|
||||
.includes('in');
|
||||
const price = Number(product.priceValue || 0);
|
||||
const oldPrice = Number(product.priceValue || 0);
|
||||
|
||||
@ -179,7 +203,10 @@ export class TorobController {
|
||||
availability: isInStock ? 'instock' : 'outofstock',
|
||||
image_link: imageLink,
|
||||
guarantee: 'ضمانت اصالت ۱۰۰٪ کمپانی Canina آلمان و اصالت کالا',
|
||||
category_name: product.category?.name || product.categorySlug || 'مکمل حیوانات خانگی',
|
||||
category_name:
|
||||
product.category?.name ||
|
||||
product.categorySlug ||
|
||||
'مکمل حیوانات خانگی',
|
||||
spec,
|
||||
};
|
||||
});
|
||||
|
||||
@ -36,7 +36,8 @@ export class VideosService {
|
||||
}
|
||||
|
||||
const sortField =
|
||||
query.sortBy && ['createdAt', 'viewsCount', 'title', 'isFeatured'].includes(query.sortBy)
|
||||
query.sortBy &&
|
||||
['createdAt', 'viewsCount', 'title', 'isFeatured'].includes(query.sortBy)
|
||||
? query.sortBy
|
||||
: 'createdAt';
|
||||
const sortDirection = query.sortOrder === 'asc' ? 'asc' : 'desc';
|
||||
|
||||
@ -3,7 +3,7 @@
|
||||
"1": "app.module.ts",
|
||||
"2": "AdminTransactionFilterDto",
|
||||
"3": "productService.ts",
|
||||
"4": "PetProfile.tsx",
|
||||
"4": "api",
|
||||
"5": "CmsController",
|
||||
"6": "TicketsService",
|
||||
"7": "SmsSettingsPage.tsx",
|
||||
@ -13,7 +13,7 @@
|
||||
"11": "WikiController",
|
||||
"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",
|
||||
@ -57,7 +57,7 @@
|
||||
"55": "UITexts.tsx",
|
||||
"56": "Orders.tsx",
|
||||
"57": "Role & Core Objective",
|
||||
"58": "UserDashboard.tsx",
|
||||
"58": "components/Skeleton.tsx",
|
||||
"59": "compilerOptions",
|
||||
"60": "CreateUserDto",
|
||||
"61": "ProductPage.tsx",
|
||||
@ -89,10 +89,10 @@
|
||||
"87": "dependencies",
|
||||
"88": "payment.controller.ts",
|
||||
"89": "seed-products.ts",
|
||||
"90": "OrderService",
|
||||
"90": "useCartStore",
|
||||
"91": "Reconciled Audit Roles & Assignments",
|
||||
"92": "OrdersService",
|
||||
"93": "ArchivePage.tsx",
|
||||
"93": "HomeClient.tsx",
|
||||
"94": "Phase 3.1 — Human Review Preparation and Master Backlog Critique",
|
||||
"95": "wiki/[slug]/page.tsx",
|
||||
"96": "compilerOptions",
|
||||
@ -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": "ProductDto",
|
||||
"129": "Reports.tsx",
|
||||
"130": "Sahel-Font",
|
||||
"131": "Role & Core Objective",
|
||||
@ -150,7 +150,7 @@
|
||||
"148": "track/page.tsx",
|
||||
"149": "trust-seals/page.tsx",
|
||||
"150": "Product Requirement Document (PRD)",
|
||||
"151": "AuthService",
|
||||
"151": "Body",
|
||||
"152": "auth.service.ts",
|
||||
"153": "exclude",
|
||||
"154": "Baseline Command Plan & Reconciled Command History",
|
||||
@ -196,7 +196,7 @@
|
||||
"194": "Raw Finding Verification & Disposition Report",
|
||||
"195": "React + TypeScript + Vite",
|
||||
"196": "Select.tsx",
|
||||
"197": "userStore.ts",
|
||||
"197": "lib/services/api.ts",
|
||||
"198": "Reviews.tsx",
|
||||
"199": "SmsLogQueryDto",
|
||||
"200": "application/README.md",
|
||||
@ -232,6 +232,7 @@
|
||||
"230": "instructions.md",
|
||||
"231": "@nestjs/schematics",
|
||||
"232": "prisma",
|
||||
"233": "tailwindcss",
|
||||
"234": "source-map-support",
|
||||
"235": "ts-loader",
|
||||
"236": "ts-node",
|
||||
@ -293,7 +294,6 @@
|
||||
"293": "Staging Docker Compose",
|
||||
"294": "ZibalService",
|
||||
"295": "eslint-config-next",
|
||||
"296": "@tailwindcss/postcss",
|
||||
"297": "ZibalEBankService",
|
||||
"298": ".initiateOrderPayment",
|
||||
"299": "@tailwindcss/postcss",
|
||||
|
||||
File diff suppressed because one or more lines are too long
@ -3,7 +3,7 @@
|
||||
"1": "app.module.ts",
|
||||
"2": "AdminTransactionFilterDto",
|
||||
"3": "productService.ts",
|
||||
"4": "api",
|
||||
"4": "PetProfile.tsx",
|
||||
"5": "CmsController",
|
||||
"6": "TicketsService",
|
||||
"7": "SmsSettingsPage.tsx",
|
||||
@ -13,7 +13,7 @@
|
||||
"11": "WikiController",
|
||||
"12": "index.ts",
|
||||
"13": "app-audit-verification.e2e-spec.js",
|
||||
"14": "UserDashboard.tsx",
|
||||
"14": "toPersian",
|
||||
"15": "src/services/api.ts",
|
||||
"16": "DoctorQueryDto",
|
||||
"17": "schema.ts",
|
||||
@ -57,7 +57,7 @@
|
||||
"55": "UITexts.tsx",
|
||||
"56": "Orders.tsx",
|
||||
"57": "Role & Core Objective",
|
||||
"58": "components/Skeleton.tsx",
|
||||
"58": "UserDashboard.tsx",
|
||||
"59": "compilerOptions",
|
||||
"60": "CreateUserDto",
|
||||
"61": "ProductPage.tsx",
|
||||
@ -89,10 +89,10 @@
|
||||
"87": "dependencies",
|
||||
"88": "payment.controller.ts",
|
||||
"89": "seed-products.ts",
|
||||
"90": "useCartStore",
|
||||
"90": "OrderService",
|
||||
"91": "Reconciled Audit Roles & Assignments",
|
||||
"92": "OrdersService",
|
||||
"93": "HomeClient.tsx",
|
||||
"93": "ArchivePage.tsx",
|
||||
"94": "Phase 3.1 — Human Review Preparation and Master Backlog Critique",
|
||||
"95": "wiki/[slug]/page.tsx",
|
||||
"96": "compilerOptions",
|
||||
@ -150,7 +150,7 @@
|
||||
"148": "track/page.tsx",
|
||||
"149": "trust-seals/page.tsx",
|
||||
"150": "Product Requirement Document (PRD)",
|
||||
"151": "eslint-plugin-prettier",
|
||||
"151": "AuthService",
|
||||
"152": "auth.service.ts",
|
||||
"153": "exclude",
|
||||
"154": "Baseline Command Plan & Reconciled Command History",
|
||||
@ -184,7 +184,7 @@
|
||||
"182": "🎨 Frontend & Admin Panel Technical Review (06_dev_frontend)",
|
||||
"183": "🚀 SEO & Content Strategy Review (12_seo_content)",
|
||||
"184": "MetricsController",
|
||||
"185": "globals",
|
||||
"185": "eslint-config-prettier",
|
||||
"186": "seed-ui-texts.ts",
|
||||
"187": "seed-wiki.ts",
|
||||
"188": "update-blog.dto.ts",
|
||||
@ -196,7 +196,7 @@
|
||||
"194": "Raw Finding Verification & Disposition Report",
|
||||
"195": "React + TypeScript + Vite",
|
||||
"196": "Select.tsx",
|
||||
"197": "lib/services/api.ts",
|
||||
"197": "userStore.ts",
|
||||
"198": "Reviews.tsx",
|
||||
"199": "SmsLogQueryDto",
|
||||
"200": "application/README.md",
|
||||
@ -219,10 +219,11 @@
|
||||
"217": "sync_honest_manifest.js",
|
||||
"218": "sync_manifest.js",
|
||||
"219": "FormField.tsx",
|
||||
"220": "typescript-eslint",
|
||||
"220": "jest",
|
||||
"221": "Textarea.tsx",
|
||||
"222": "admin-panel/tsconfig.json",
|
||||
"223": "tailwindcss",
|
||||
"224": "typescript",
|
||||
"225": "next.config.ts",
|
||||
"226": "Shabnam Font README",
|
||||
"227": "AGENTS.md",
|
||||
|
||||
@ -1,16 +1,16 @@
|
||||
# Graph Report - canina (2026-09-02)
|
||||
|
||||
## Corpus Check
|
||||
- 599 files · ~1,079,118 words
|
||||
- 599 files · ~1,079,429 words
|
||||
- Verdict: corpus is large enough that graph structure adds value.
|
||||
|
||||
## Summary
|
||||
- 4208 nodes · 7642 edges · 311 communities (212 shown, 99 thin omitted)
|
||||
- 4208 nodes · 7642 edges · 312 communities (211 shown, 101 thin omitted)
|
||||
- Extraction: 96% EXTRACTED · 4% INFERRED · 0% AMBIGUOUS · INFERRED: 288 edges (avg confidence: 0.79)
|
||||
- Token cost: 0 input · 0 output
|
||||
|
||||
## Graph Freshness
|
||||
- Built from commit: `517d611b`
|
||||
- Built from commit: `3cbcad7b`
|
||||
- Run `git rev-parse HEAD` and compare to check if the graph is stale.
|
||||
- Run `graphify update .` after code changes (no API cost).
|
||||
|
||||
@ -19,7 +19,7 @@
|
||||
- app.module.ts
|
||||
- AdminTransactionFilterDto
|
||||
- productService.ts
|
||||
- api
|
||||
- PetProfile.tsx
|
||||
- CmsController
|
||||
- TicketsService
|
||||
- SmsSettingsPage.tsx
|
||||
@ -29,7 +29,7 @@
|
||||
- WikiController
|
||||
- index.ts
|
||||
- app-audit-verification.e2e-spec.js
|
||||
- UserDashboard.tsx
|
||||
- toPersian
|
||||
- src/services/api.ts
|
||||
- DoctorQueryDto
|
||||
- schema.ts
|
||||
@ -72,7 +72,7 @@
|
||||
- UITexts.tsx
|
||||
- Orders.tsx
|
||||
- Role & Core Objective
|
||||
- components/Skeleton.tsx
|
||||
- UserDashboard.tsx
|
||||
- compilerOptions
|
||||
- CreateUserDto
|
||||
- ProductPage.tsx
|
||||
@ -104,10 +104,10 @@
|
||||
- dependencies
|
||||
- payment.controller.ts
|
||||
- seed-products.ts
|
||||
- useCartStore
|
||||
- OrderService
|
||||
- Reconciled Audit Roles & Assignments
|
||||
- OrdersService
|
||||
- HomeClient.tsx
|
||||
- ArchivePage.tsx
|
||||
- Phase 3.1 — Human Review Preparation and Master Backlog Critique
|
||||
- wiki/[slug]/page.tsx
|
||||
- compilerOptions
|
||||
@ -165,7 +165,7 @@
|
||||
- track/page.tsx
|
||||
- trust-seals/page.tsx
|
||||
- Product Requirement Document (PRD)
|
||||
- eslint-plugin-prettier
|
||||
- AuthService
|
||||
- auth.service.ts
|
||||
- exclude
|
||||
- Baseline Command Plan & Reconciled Command History
|
||||
@ -198,7 +198,7 @@
|
||||
- 🎨 Frontend & Admin Panel Technical Review (06_dev_frontend)
|
||||
- 🚀 SEO & Content Strategy Review (12_seo_content)
|
||||
- MetricsController
|
||||
- globals
|
||||
- eslint-config-prettier
|
||||
- seed-ui-texts.ts
|
||||
- seed-wiki.ts
|
||||
- update-blog.dto.ts
|
||||
@ -210,7 +210,7 @@
|
||||
- Raw Finding Verification & Disposition Report
|
||||
- React + TypeScript + Vite
|
||||
- Select.tsx
|
||||
- lib/services/api.ts
|
||||
- userStore.ts
|
||||
- Reviews.tsx
|
||||
- SmsLogQueryDto
|
||||
- application/README.md
|
||||
@ -233,10 +233,11 @@
|
||||
- sync_honest_manifest.js
|
||||
- sync_manifest.js
|
||||
- FormField.tsx
|
||||
- typescript-eslint
|
||||
- jest
|
||||
- Textarea.tsx
|
||||
- admin-panel/tsconfig.json
|
||||
- tailwindcss
|
||||
- typescript
|
||||
- next.config.ts
|
||||
- Shabnam Font README
|
||||
- AGENTS.md
|
||||
@ -331,11 +332,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 (311 total, 99 thin omitted)
|
||||
## Communities (312 total, 101 thin omitted)
|
||||
|
||||
### Community 0 - "Roles"
|
||||
Cohesion: 0.24
|
||||
@ -351,15 +352,15 @@ Nodes (7): AdminTransactionFilterDto, ApiPropertyOptional, IsIn, IsNumber, IsOpt
|
||||
|
||||
### Community 3 - "productService.ts"
|
||||
Cohesion: 0.06
|
||||
Nodes (38): buildTorobProductSpec(), buildTorobProductTitle(), dynamic, GET(), revalidate, dynamic, GET(), revalidate (+30 more)
|
||||
Nodes (39): buildTorobProductSpec(), buildTorobProductTitle(), dynamic, GET(), revalidate, dynamic, GET(), revalidate (+31 more)
|
||||
|
||||
### Community 4 - "api"
|
||||
Cohesion: 0.13
|
||||
Nodes (14): metadata, ContactInfoItem, OrderDetailsModal(), OrderDetailsModalProps, CURRENT_SYMPTOMS, MEDICAL_HISTORIES, SmartAdvisor(), SmartAdvisorProps (+6 more)
|
||||
### Community 4 - "PetProfile.tsx"
|
||||
Cohesion: 0.12
|
||||
Nodes (18): metadata, FeaturedProducts(), ProductCard(), OrderSuccess(), PetProfile(), SearchResultsPage(), CURRENT_SYMPTOMS, MEDICAL_HISTORIES (+10 more)
|
||||
|
||||
### Community 5 - "CmsController"
|
||||
Cohesion: 0.12
|
||||
Nodes (12): CmsController, ApiBearerAuth, ApiOperation, ApiTags, Controller, Delete, Get, Param (+4 more)
|
||||
Cohesion: 0.10
|
||||
Nodes (14): CmsController, ApiBearerAuth, ApiOperation, ApiTags, Body, Controller, Delete, Get (+6 more)
|
||||
|
||||
### Community 6 - "TicketsService"
|
||||
Cohesion: 0.09
|
||||
@ -375,7 +376,7 @@ Nodes (17): SettingsController, ApiBearerAuth, ApiOkResponse, ApiOperation, ApiT
|
||||
|
||||
### Community 9 - "devDependencies"
|
||||
Cohesion: 0.08
|
||||
Nodes (25): devDependencies, eslint, eslint-config-prettier, @eslint/eslintrc, jest, @nestjs/cli, @nestjs/testing, prettier (+17 more)
|
||||
Nodes (25): devDependencies, eslint, @eslint/eslintrc, eslint-plugin-prettier, globals, @nestjs/cli, @nestjs/testing, prettier (+17 more)
|
||||
|
||||
### Community 10 - "CreateReviewDto"
|
||||
Cohesion: 0.07
|
||||
@ -393,9 +394,9 @@ 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 - "UserDashboard.tsx"
|
||||
Cohesion: 0.13
|
||||
Nodes (28): VerifyContent(), AddressFormData, AddressModal(), AddressModalProps, normalizeDigits(), validateAddressForm(), AuthModal(), AuthModalProps (+20 more)
|
||||
### Community 14 - "toPersian"
|
||||
Cohesion: 0.17
|
||||
Nodes (20): HomeClient(), VerifyContent(), AddressFormData, AddressModal(), AddressModalProps, normalizeDigits(), validateAddressForm(), CheckoutPage() (+12 more)
|
||||
|
||||
### Community 15 - "src/services/api.ts"
|
||||
Cohesion: 0.06
|
||||
@ -561,9 +562,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 - "components/Skeleton.tsx"
|
||||
Cohesion: 0.24
|
||||
Nodes (4): OrderRowSkeleton(), PetProfileSkeleton(), Skeleton(), SkeletonProps
|
||||
### Community 58 - "UserDashboard.tsx"
|
||||
Cohesion: 0.12
|
||||
Nodes (11): DeleteConfirmModal(), DeleteConfirmModalProps, OrderDetailsModal(), OrderRowSkeleton(), PetProfileSkeleton(), Skeleton(), SkeletonProps, CreateTicketPayload (+3 more)
|
||||
|
||||
### Community 59 - "compilerOptions"
|
||||
Cohesion: 0.06
|
||||
@ -574,8 +575,8 @@ Cohesion: 0.23
|
||||
Nodes (10): CreateUserDto, ApiProperty, ApiPropertyOptional, IsEmail, IsNotEmpty, IsNumber, IsOptional, IsString (+2 more)
|
||||
|
||||
### Community 61 - "ProductPage.tsx"
|
||||
Cohesion: 0.09
|
||||
Nodes (20): PodcastInlinePlayer(), ProductImageZoomModalProps, CalculatorState, GalleryMediaItem, ICON_MAP, isVideoUrl(), ProductImageZoomModal, ProductPage() (+12 more)
|
||||
Cohesion: 0.10
|
||||
Nodes (19): ProductImageZoomModalProps, CalculatorState, GalleryMediaItem, ICON_MAP, isVideoUrl(), ProductImageZoomModal, ProductPage(), ProductReviews (+11 more)
|
||||
|
||||
### Community 62 - "RevalidationService"
|
||||
Cohesion: 0.14
|
||||
@ -602,8 +603,8 @@ Cohesion: 0.13
|
||||
Nodes (13): AdminModule, Module, ReportsController, ApiBearerAuth, ApiOperation, ApiQuery, ApiTags, Controller (+5 more)
|
||||
|
||||
### Community 68 - "useSettingsStore"
|
||||
Cohesion: 0.10
|
||||
Nodes (22): AuthModal, B2BPortal, CartDrawer, ClientLayout(), B2BLandingClient(), BrandLogo(), BrandLogoProps, FAQItem (+14 more)
|
||||
Cohesion: 0.08
|
||||
Nodes (29): HomeClientProps, B2BLandingClient(), BlogPost, BlogPreviewSection(), BrandLogo(), BrandLogoProps, ContactInfoItem, FAQItem (+21 more)
|
||||
|
||||
### Community 69 - "Required Review Group Closures"
|
||||
Cohesion: 0.10
|
||||
@ -689,10 +690,6 @@ Nodes (19): CreateEBankCheckoutDto, ApiProperty, ApiPropertyOptional, IsNotEmpty
|
||||
Cohesion: 0.17
|
||||
Nodes (12): prisma, main(), prisma, determineSuitableFor(), findOrCreateCategory(), getProductImageUrl(), main(), parseSize() (+4 more)
|
||||
|
||||
### Community 90 - "useCartStore"
|
||||
Cohesion: 0.07
|
||||
Nodes (27): ArchivePage(), ArchiveProductCard(), CATEGORY_MAP, ICON_MAP, CartDrawer(), DeleteConfirmModal(), DeleteConfirmModalProps, FeaturedProducts() (+19 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)
|
||||
@ -701,9 +698,9 @@ Nodes (15): 10. Documentation Engineer, 1. Lead Architect / Orchestrator, 2. Rea
|
||||
Cohesion: 0.07
|
||||
Nodes (35): CreateOrderDto, OrderItemDto, ApiProperty, ApiPropertyOptional, IsArray, IsNotEmpty, IsNumber, IsOptional (+27 more)
|
||||
|
||||
### Community 93 - "HomeClient.tsx"
|
||||
Cohesion: 0.12
|
||||
Nodes (17): HomeClient(), HomeClientProps, BannerPlacement(), BannerPlacementProps, BlogPreviewSection(), Hero(), StatCounter(), TestimonialsSection() (+9 more)
|
||||
### Community 93 - "ArchivePage.tsx"
|
||||
Cohesion: 0.13
|
||||
Nodes (15): ArchivePage(), ArchiveProductCard(), CATEGORY_MAP, ICON_MAP, BannerPlacement(), BannerPlacementProps, ProductCardSkeleton(), B2BInquiry (+7 more)
|
||||
|
||||
### Community 94 - "Phase 3.1 — Human Review Preparation and Master Backlog Critique"
|
||||
Cohesion: 0.13
|
||||
@ -750,8 +747,8 @@ 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.21
|
||||
Nodes (12): Body, Post, CreateHeroBannerDto, CreateSmartAdvisorRuleDto, CreateVetTestimonialDto, ApiProperty, ApiPropertyOptional, IsBoolean (+4 more)
|
||||
Cohesion: 0.37
|
||||
Nodes (10): CreateHeroBannerDto, CreateSmartAdvisorRuleDto, CreateVetTestimonialDto, ApiProperty, ApiPropertyOptional, IsBoolean, IsNumber, IsOptional (+2 more)
|
||||
|
||||
### Community 107 - "PaginationDto"
|
||||
Cohesion: 0.09
|
||||
@ -898,8 +895,8 @@ Cohesion: 0.25
|
||||
Nodes (6): app_module_1, core_1, fs, path, swagger_1, yaml
|
||||
|
||||
### Community 144 - "SafeImage.tsx"
|
||||
Cohesion: 0.08
|
||||
Nodes (23): BackButton(), BackButtonProps, BlogCategory, BlogPostItem, BlogPostClientProps, BlogPost, ProductDetailModalProps, PLAYBACK_RATES (+15 more)
|
||||
Cohesion: 0.10
|
||||
Nodes (20): BackButton(), BackButtonProps, BlogPostClientProps, PLAYBACK_RATES, PodcastInlinePlayer(), PodcastInlinePlayerProps, PLAYBACK_RATES, PodcastPlayerModal() (+12 more)
|
||||
|
||||
### Community 145 - "RouteErrorBoundary"
|
||||
Cohesion: 0.22
|
||||
@ -1061,9 +1058,9 @@ Nodes (3): Expanding the ESLint configuration, React Compiler, React + TypeScrip
|
||||
Cohesion: 0.50
|
||||
Nodes (3): Select, SelectOption, SelectProps
|
||||
|
||||
### Community 197 - "lib/services/api.ts"
|
||||
Cohesion: 0.09
|
||||
Nodes (17): LoginModal, B2BPortal(), LoginModal(), LoginModalProps, PrescriptionUploadModal(), PrescriptionUploadModalProps, ApiErrorPayload, baseURL (+9 more)
|
||||
### Community 197 - "userStore.ts"
|
||||
Cohesion: 0.08
|
||||
Nodes (37): AuthModal, B2BPortal, CartDrawer, ClientLayout(), LoginModal, AuthModal(), AuthModalProps, extractOtpFromText() (+29 more)
|
||||
|
||||
### Community 198 - "Reviews.tsx"
|
||||
Cohesion: 0.40
|
||||
@ -1104,7 +1101,7 @@ Nodes (3): GET(), handleRevalidate(), POST()
|
||||
## Knowledge Gaps
|
||||
- **1347 isolated node(s):** `$schema`, `collection`, `sourceRoot`, `deleteOutDir`, `name` (+1342 more)
|
||||
These have ≤1 connection - possible missing edges or undocumented components.
|
||||
- **99 thin communities (<3 nodes) omitted from report** — run `graphify query` to explore isolated nodes.
|
||||
- **101 thin communities (<3 nodes) omitted from report** — run `graphify query` to explore isolated nodes.
|
||||
|
||||
## Suggested Questions
|
||||
_Questions this graph is uniquely positioned to answer:_
|
||||
@ -1120,6 +1117,6 @@ _Questions this graph is uniquely positioned to answer:_
|
||||
- **Should `app.module.ts` be split into smaller, more focused modules?**
|
||||
_Cohesion score 0.055299539170506916 - nodes in this community are weakly interconnected._
|
||||
- **Should `productService.ts` be split into smaller, more focused modules?**
|
||||
_Cohesion score 0.06299603174603174 - nodes in this community are weakly interconnected._
|
||||
- **Should `api` be split into smaller, more focused modules?**
|
||||
_Cohesion score 0.12648221343873517 - nodes in this community are weakly interconnected._
|
||||
_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._
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -1,16 +1,16 @@
|
||||
# Graph Report - canina (2026-09-02)
|
||||
|
||||
## Corpus Check
|
||||
- 599 files · ~1,079,429 words
|
||||
- 599 files · ~1,079,434 words
|
||||
- Verdict: corpus is large enough that graph structure adds value.
|
||||
|
||||
## Summary
|
||||
- 4208 nodes · 7642 edges · 312 communities (211 shown, 101 thin omitted)
|
||||
- 4208 nodes · 7642 edges · 312 communities (214 shown, 98 thin omitted)
|
||||
- Extraction: 96% EXTRACTED · 4% INFERRED · 0% AMBIGUOUS · INFERRED: 288 edges (avg confidence: 0.79)
|
||||
- Token cost: 0 input · 0 output
|
||||
|
||||
## Graph Freshness
|
||||
- Built from commit: `3cbcad7b`
|
||||
- Built from commit: `6fa1f2c9`
|
||||
- Run `git rev-parse HEAD` and compare to check if the graph is stale.
|
||||
- Run `graphify update .` after code changes (no API cost).
|
||||
|
||||
@ -19,7 +19,7 @@
|
||||
- app.module.ts
|
||||
- AdminTransactionFilterDto
|
||||
- productService.ts
|
||||
- PetProfile.tsx
|
||||
- api
|
||||
- CmsController
|
||||
- TicketsService
|
||||
- SmsSettingsPage.tsx
|
||||
@ -29,7 +29,7 @@
|
||||
- WikiController
|
||||
- index.ts
|
||||
- app-audit-verification.e2e-spec.js
|
||||
- toPersian
|
||||
- UserDashboard.tsx
|
||||
- src/services/api.ts
|
||||
- DoctorQueryDto
|
||||
- schema.ts
|
||||
@ -72,7 +72,7 @@
|
||||
- UITexts.tsx
|
||||
- Orders.tsx
|
||||
- Role & Core Objective
|
||||
- UserDashboard.tsx
|
||||
- components/Skeleton.tsx
|
||||
- compilerOptions
|
||||
- CreateUserDto
|
||||
- ProductPage.tsx
|
||||
@ -104,10 +104,10 @@
|
||||
- dependencies
|
||||
- payment.controller.ts
|
||||
- seed-products.ts
|
||||
- OrderService
|
||||
- useCartStore
|
||||
- Reconciled Audit Roles & Assignments
|
||||
- OrdersService
|
||||
- ArchivePage.tsx
|
||||
- HomeClient.tsx
|
||||
- Phase 3.1 — Human Review Preparation and Master Backlog Critique
|
||||
- wiki/[slug]/page.tsx
|
||||
- compilerOptions
|
||||
@ -136,13 +136,13 @@
|
||||
- compilerOptions
|
||||
- compilerOptions
|
||||
- backend/README.md
|
||||
- AdminController
|
||||
- AdminService
|
||||
- UsersService
|
||||
- Repository Map
|
||||
- validate_integrity.js
|
||||
- admin-panel/package.json
|
||||
- Sahel-Font
|
||||
- AdminService
|
||||
- ProductDto
|
||||
- Reports.tsx
|
||||
- Sahel-Font
|
||||
- Role & Core Objective
|
||||
@ -165,7 +165,7 @@
|
||||
- track/page.tsx
|
||||
- trust-seals/page.tsx
|
||||
- Product Requirement Document (PRD)
|
||||
- AuthService
|
||||
- Body
|
||||
- auth.service.ts
|
||||
- exclude
|
||||
- Baseline Command Plan & Reconciled Command History
|
||||
@ -210,7 +210,7 @@
|
||||
- Raw Finding Verification & Disposition Report
|
||||
- React + TypeScript + Vite
|
||||
- Select.tsx
|
||||
- userStore.ts
|
||||
- lib/services/api.ts
|
||||
- Reviews.tsx
|
||||
- SmsLogQueryDto
|
||||
- application/README.md
|
||||
@ -246,6 +246,7 @@
|
||||
- instructions.md
|
||||
- @nestjs/schematics
|
||||
- prisma
|
||||
- tailwindcss
|
||||
- source-map-support
|
||||
- ts-loader
|
||||
- ts-node
|
||||
@ -292,7 +293,6 @@
|
||||
- Staging Docker Compose
|
||||
- ZibalService
|
||||
- eslint-config-next
|
||||
- @tailwindcss/postcss
|
||||
- ZibalEBankService
|
||||
- .initiateOrderPayment
|
||||
- @tailwindcss/postcss
|
||||
@ -336,7 +336,7 @@
|
||||
- 3-file cycle: `frontend/application/lib/services/api.ts -> frontend/application/lib/store/userStore.ts -> frontend/application/lib/store/cartStore.ts -> frontend/application/lib/services/api.ts`
|
||||
- 4-file cycle: `frontend/application/lib/services/api.ts -> frontend/application/lib/store/userStore.ts -> frontend/application/lib/store/cartStore.ts -> frontend/application/lib/services/orderService.ts -> frontend/application/lib/services/api.ts`
|
||||
|
||||
## Communities (312 total, 101 thin omitted)
|
||||
## Communities (312 total, 98 thin omitted)
|
||||
|
||||
### Community 0 - "Roles"
|
||||
Cohesion: 0.24
|
||||
@ -352,11 +352,11 @@ Nodes (7): AdminTransactionFilterDto, ApiPropertyOptional, IsIn, IsNumber, IsOpt
|
||||
|
||||
### Community 3 - "productService.ts"
|
||||
Cohesion: 0.06
|
||||
Nodes (39): buildTorobProductSpec(), buildTorobProductTitle(), dynamic, GET(), revalidate, dynamic, GET(), revalidate (+31 more)
|
||||
Nodes (38): buildTorobProductSpec(), buildTorobProductTitle(), dynamic, GET(), revalidate, dynamic, GET(), revalidate (+30 more)
|
||||
|
||||
### Community 4 - "PetProfile.tsx"
|
||||
Cohesion: 0.12
|
||||
Nodes (18): metadata, FeaturedProducts(), ProductCard(), OrderSuccess(), PetProfile(), SearchResultsPage(), CURRENT_SYMPTOMS, MEDICAL_HISTORIES (+10 more)
|
||||
### Community 4 - "api"
|
||||
Cohesion: 0.13
|
||||
Nodes (14): metadata, ContactInfoItem, OrderDetailsModal(), OrderDetailsModalProps, CURRENT_SYMPTOMS, MEDICAL_HISTORIES, SmartAdvisor(), SmartAdvisorProps (+6 more)
|
||||
|
||||
### Community 5 - "CmsController"
|
||||
Cohesion: 0.10
|
||||
@ -394,9 +394,9 @@ 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 (20): HomeClient(), VerifyContent(), AddressFormData, AddressModal(), AddressModalProps, normalizeDigits(), validateAddressForm(), CheckoutPage() (+12 more)
|
||||
### Community 14 - "UserDashboard.tsx"
|
||||
Cohesion: 0.13
|
||||
Nodes (28): VerifyContent(), AddressFormData, AddressModal(), AddressModalProps, normalizeDigits(), validateAddressForm(), AuthModal(), AuthModalProps (+20 more)
|
||||
|
||||
### Community 15 - "src/services/api.ts"
|
||||
Cohesion: 0.06
|
||||
@ -415,7 +415,7 @@ Cohesion: 0.19
|
||||
Nodes (8): JwtAuthGuard, Injectable, ROLES_KEY, RequestWithUser, RolesGuard, Injectable, UserReqPayload, ScientificTermData
|
||||
|
||||
### 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"
|
||||
@ -532,7 +532,7 @@ 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): devDependencies, eslint, jsdom, @tailwindcss/postcss, @testing-library/jest-dom, @testing-library/react, @types/node, @types/react (+9 more)
|
||||
|
||||
### Community 51 - "BlogsController"
|
||||
Cohesion: 0.14
|
||||
@ -562,21 +562,21 @@ 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 - "components/Skeleton.tsx"
|
||||
Cohesion: 0.24
|
||||
Nodes (4): OrderRowSkeleton(), PetProfileSkeleton(), Skeleton(), SkeletonProps
|
||||
|
||||
### 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.24
|
||||
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): PodcastInlinePlayer(), ProductImageZoomModalProps, CalculatorState, GalleryMediaItem, ICON_MAP, isVideoUrl(), ProductImageZoomModal, ProductPage() (+12 more)
|
||||
|
||||
### Community 62 - "RevalidationService"
|
||||
Cohesion: 0.14
|
||||
@ -591,20 +591,20 @@ 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.22
|
||||
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 - "admin.module.ts"
|
||||
Cohesion: 0.13
|
||||
Nodes (13): AdminModule, Module, ReportsController, ApiBearerAuth, ApiOperation, ApiQuery, ApiTags, Controller (+5 more)
|
||||
|
||||
### Community 68 - "useSettingsStore"
|
||||
Cohesion: 0.08
|
||||
Nodes (29): HomeClientProps, B2BLandingClient(), BlogPost, BlogPreviewSection(), BrandLogo(), BrandLogoProps, ContactInfoItem, FAQItem (+21 more)
|
||||
Cohesion: 0.10
|
||||
Nodes (22): AuthModal, B2BPortal, CartDrawer, ClientLayout(), B2BLandingClient(), BrandLogo(), BrandLogoProps, FAQItem (+14 more)
|
||||
|
||||
### Community 69 - "Required Review Group Closures"
|
||||
Cohesion: 0.10
|
||||
@ -690,6 +690,10 @@ Nodes (19): CreateEBankCheckoutDto, ApiProperty, ApiPropertyOptional, IsNotEmpty
|
||||
Cohesion: 0.17
|
||||
Nodes (12): prisma, main(), prisma, determineSuitableFor(), findOrCreateCategory(), getProductImageUrl(), main(), parseSize() (+4 more)
|
||||
|
||||
### Community 90 - "useCartStore"
|
||||
Cohesion: 0.07
|
||||
Nodes (27): ArchivePage(), ArchiveProductCard(), CATEGORY_MAP, ICON_MAP, CartDrawer(), DeleteConfirmModal(), DeleteConfirmModalProps, FeaturedProducts() (+19 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)
|
||||
@ -698,9 +702,9 @@ Nodes (15): 10. Documentation Engineer, 1. Lead Architect / Orchestrator, 2. Rea
|
||||
Cohesion: 0.07
|
||||
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)
|
||||
### Community 93 - "HomeClient.tsx"
|
||||
Cohesion: 0.12
|
||||
Nodes (17): HomeClient(), HomeClientProps, BannerPlacement(), BannerPlacementProps, BlogPreviewSection(), Hero(), StatCounter(), TestimonialsSection() (+9 more)
|
||||
|
||||
### Community 94 - "Phase 3.1 — Human Review Preparation and Master Backlog Critique"
|
||||
Cohesion: 0.13
|
||||
@ -810,9 +814,9 @@ 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.10
|
||||
Nodes (12): AdminController, ApiBearerAuth, ApiOperation, ApiTags, Controller, Delete, Get, Param (+4 more)
|
||||
|
||||
### Community 123 - "UsersService"
|
||||
Cohesion: 0.07
|
||||
@ -834,6 +838,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 - "ProductDto"
|
||||
Cohesion: 0.16
|
||||
Nodes (7): ProductDto, ApiPropertyOptional, IsArray, IsBoolean, IsNumber, IsOptional, IsString
|
||||
|
||||
### Community 129 - "Reports.tsx"
|
||||
Cohesion: 0.20
|
||||
Nodes (7): BestSellerItem, CategoryDistItem, COLORS, CustomTooltipProps, ReportData, TopCouponItem, Reports
|
||||
@ -895,8 +903,8 @@ 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)
|
||||
Cohesion: 0.08
|
||||
Nodes (23): BackButton(), BackButtonProps, BlogCategory, BlogPostItem, BlogPostClientProps, BlogPost, ProductDetailModalProps, PLAYBACK_RATES (+15 more)
|
||||
|
||||
### Community 145 - "RouteErrorBoundary"
|
||||
Cohesion: 0.22
|
||||
@ -914,6 +922,10 @@ Nodes (10): HomeController, ApiOkResponse, ApiOperation, ApiTags, Controller, Ge
|
||||
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 - "Body"
|
||||
Cohesion: 0.21
|
||||
Nodes (3): Body, Post, CouponInput
|
||||
|
||||
### Community 152 - "auth.service.ts"
|
||||
Cohesion: 0.08
|
||||
Nodes (13): AppModule, Module, AdminLoginInput, AuthService, LoginInput, RegisterInput, Injectable, normalizeMobile() (+5 more)
|
||||
@ -1058,9 +1070,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.08
|
||||
Nodes (37): AuthModal, B2BPortal, CartDrawer, ClientLayout(), LoginModal, AuthModal(), AuthModalProps, extractOtpFromText() (+29 more)
|
||||
### Community 197 - "lib/services/api.ts"
|
||||
Cohesion: 0.09
|
||||
Nodes (17): LoginModal, B2BPortal(), LoginModal(), LoginModalProps, PrescriptionUploadModal(), PrescriptionUploadModalProps, ApiErrorPayload, baseURL (+9 more)
|
||||
|
||||
### Community 198 - "Reviews.tsx"
|
||||
Cohesion: 0.40
|
||||
@ -1101,7 +1113,7 @@ Nodes (3): GET(), handleRevalidate(), POST()
|
||||
## Knowledge Gaps
|
||||
- **1347 isolated node(s):** `$schema`, `collection`, `sourceRoot`, `deleteOutDir`, `name` (+1342 more)
|
||||
These have ≤1 connection - possible missing edges or undocumented components.
|
||||
- **101 thin communities (<3 nodes) omitted from report** — run `graphify query` to explore isolated nodes.
|
||||
- **98 thin communities (<3 nodes) omitted from report** — run `graphify query` to explore isolated nodes.
|
||||
|
||||
## Suggested Questions
|
||||
_Questions this graph is uniquely positioned to answer:_
|
||||
@ -1117,6 +1129,6 @@ _Questions this graph is uniquely positioned to answer:_
|
||||
- **Should `app.module.ts` be split into smaller, more focused modules?**
|
||||
_Cohesion score 0.055299539170506916 - 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.06299603174603174 - nodes in this community are weakly interconnected._
|
||||
- **Should `api` be split into smaller, more focused modules?**
|
||||
_Cohesion score 0.12648221343873517 - nodes in this community are weakly interconnected._
|
||||
2
graphify-out/cache/stat-index.json
vendored
2
graphify-out/cache/stat-index.json
vendored
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue
Block a user