fix(media): enhance media proxy routing with multi-target fallback and add uploads location to nginx
This commit is contained in:
parent
fa1a35c835
commit
b68dd29541
@ -2,6 +2,29 @@ import { NextRequest, NextResponse } from 'next/server';
|
|||||||
|
|
||||||
export const dynamic = 'force-dynamic';
|
export const dynamic = 'force-dynamic';
|
||||||
|
|
||||||
|
function getCandidateUrls(filePath: string): string[] {
|
||||||
|
const set = new Set<string>();
|
||||||
|
|
||||||
|
if (process.env.INTERNAL_API_URL) {
|
||||||
|
const base = process.env.INTERNAL_API_URL.replace(/\/api\/?$/, '');
|
||||||
|
set.add(`${base}/uploads/${filePath}`);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (process.env.NEXT_PUBLIC_API_URL && !process.env.NEXT_PUBLIC_API_URL.startsWith('/')) {
|
||||||
|
const base = process.env.NEXT_PUBLIC_API_URL.replace(/\/api\/?$/, '');
|
||||||
|
set.add(`${base}/uploads/${filePath}`);
|
||||||
|
}
|
||||||
|
|
||||||
|
set.add(`http://backend_prod:3000/uploads/${filePath}`);
|
||||||
|
set.add(`http://canino_backend_prod:3000/uploads/${filePath}`);
|
||||||
|
set.add(`http://backend:3000/uploads/${filePath}`);
|
||||||
|
|
||||||
|
set.add(`http://127.0.0.1:4001/uploads/${filePath}`);
|
||||||
|
set.add(`http://localhost:4001/uploads/${filePath}`);
|
||||||
|
|
||||||
|
return Array.from(set);
|
||||||
|
}
|
||||||
|
|
||||||
export async function GET(
|
export async function GET(
|
||||||
request: NextRequest,
|
request: NextRequest,
|
||||||
{ params }: { params: Promise<{ path: string[] }> }
|
{ params }: { params: Promise<{ path: string[] }> }
|
||||||
@ -13,13 +36,7 @@ export async function GET(
|
|||||||
}
|
}
|
||||||
|
|
||||||
const filePath = path.map(segment => encodeURIComponent(segment)).join('/');
|
const filePath = path.map(segment => encodeURIComponent(segment)).join('/');
|
||||||
const backendBase = (
|
const candidates = getCandidateUrls(filePath);
|
||||||
process.env.INTERNAL_API_URL ||
|
|
||||||
process.env.NEXT_PUBLIC_API_URL ||
|
|
||||||
'http://127.0.0.1:4001'
|
|
||||||
).replace(/\/api\/?$/, '');
|
|
||||||
|
|
||||||
const targetUrl = `${backendBase}/uploads/${filePath}`;
|
|
||||||
|
|
||||||
const forwardedHeaders: HeadersInit = {};
|
const forwardedHeaders: HeadersInit = {};
|
||||||
const rangeHeader = request.headers.get('range');
|
const rangeHeader = request.headers.get('range');
|
||||||
@ -29,16 +46,27 @@ export async function GET(
|
|||||||
const ifModifiedSince = request.headers.get('if-modified-since');
|
const ifModifiedSince = request.headers.get('if-modified-since');
|
||||||
if (ifModifiedSince) forwardedHeaders['if-modified-since'] = ifModifiedSince;
|
if (ifModifiedSince) forwardedHeaders['if-modified-since'] = ifModifiedSince;
|
||||||
|
|
||||||
const backendRes = await fetch(targetUrl, {
|
let backendRes: Response | null = null;
|
||||||
method: 'GET',
|
|
||||||
headers: forwardedHeaders,
|
|
||||||
cache: 'no-store',
|
|
||||||
});
|
|
||||||
|
|
||||||
if (!backendRes.ok && backendRes.status !== 304 && backendRes.status !== 206) {
|
for (const targetUrl of candidates) {
|
||||||
return new NextResponse(`Media not found or error from upstream (${backendRes.status})`, {
|
try {
|
||||||
status: backendRes.status,
|
const res = await fetch(targetUrl, {
|
||||||
});
|
method: 'GET',
|
||||||
|
headers: forwardedHeaders,
|
||||||
|
cache: 'no-store',
|
||||||
|
});
|
||||||
|
|
||||||
|
if (res.ok || res.status === 304 || res.status === 206) {
|
||||||
|
backendRes = res;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
} catch {
|
||||||
|
// Continue
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!backendRes) {
|
||||||
|
return new NextResponse('Media file not found upstream', { status: 404 });
|
||||||
}
|
}
|
||||||
|
|
||||||
const responseHeaders = new Headers();
|
const responseHeaders = new Headers();
|
||||||
@ -85,14 +113,25 @@ export async function HEAD(
|
|||||||
}
|
}
|
||||||
|
|
||||||
const filePath = path.map(segment => encodeURIComponent(segment)).join('/');
|
const filePath = path.map(segment => encodeURIComponent(segment)).join('/');
|
||||||
const backendBase = (
|
const candidates = getCandidateUrls(filePath);
|
||||||
process.env.INTERNAL_API_URL ||
|
|
||||||
process.env.NEXT_PUBLIC_API_URL ||
|
|
||||||
'http://127.0.0.1:4001'
|
|
||||||
).replace(/\/api\/?$/, '');
|
|
||||||
|
|
||||||
const targetUrl = `${backendBase}/uploads/${filePath}`;
|
let backendRes: Response | null = null;
|
||||||
const backendRes = await fetch(targetUrl, { method: 'HEAD', cache: 'no-store' });
|
|
||||||
|
for (const targetUrl of candidates) {
|
||||||
|
try {
|
||||||
|
const res = await fetch(targetUrl, { method: 'HEAD', cache: 'no-store' });
|
||||||
|
if (res.ok || res.status === 304) {
|
||||||
|
backendRes = res;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
} catch {
|
||||||
|
// Continue
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!backendRes) {
|
||||||
|
return new NextResponse(null, { status: 404 });
|
||||||
|
}
|
||||||
|
|
||||||
const responseHeaders = new Headers();
|
const responseHeaders = new Headers();
|
||||||
const contentType = backendRes.headers.get('content-type') || 'application/octet-stream';
|
const contentType = backendRes.headers.get('content-type') || 'application/octet-stream';
|
||||||
|
|||||||
@ -2,6 +2,31 @@ import { NextRequest, NextResponse } from 'next/server';
|
|||||||
|
|
||||||
export const dynamic = 'force-dynamic';
|
export const dynamic = 'force-dynamic';
|
||||||
|
|
||||||
|
function getCandidateUrls(filePath: string): string[] {
|
||||||
|
const set = new Set<string>();
|
||||||
|
|
||||||
|
if (process.env.INTERNAL_API_URL) {
|
||||||
|
const base = process.env.INTERNAL_API_URL.replace(/\/api\/?$/, '');
|
||||||
|
set.add(`${base}/uploads/${filePath}`);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (process.env.NEXT_PUBLIC_API_URL && !process.env.NEXT_PUBLIC_API_URL.startsWith('/')) {
|
||||||
|
const base = process.env.NEXT_PUBLIC_API_URL.replace(/\/api\/?$/, '');
|
||||||
|
set.add(`${base}/uploads/${filePath}`);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Docker internal service aliases
|
||||||
|
set.add(`http://backend_prod:3000/uploads/${filePath}`);
|
||||||
|
set.add(`http://canino_backend_prod:3000/uploads/${filePath}`);
|
||||||
|
set.add(`http://backend:3000/uploads/${filePath}`);
|
||||||
|
|
||||||
|
// Local development ports
|
||||||
|
set.add(`http://127.0.0.1:4001/uploads/${filePath}`);
|
||||||
|
set.add(`http://localhost:4001/uploads/${filePath}`);
|
||||||
|
|
||||||
|
return Array.from(set);
|
||||||
|
}
|
||||||
|
|
||||||
export async function GET(
|
export async function GET(
|
||||||
request: NextRequest,
|
request: NextRequest,
|
||||||
{ params }: { params: Promise<{ path: string[] }> }
|
{ params }: { params: Promise<{ path: string[] }> }
|
||||||
@ -13,72 +38,59 @@ export async function GET(
|
|||||||
}
|
}
|
||||||
|
|
||||||
const filePath = path.map(segment => encodeURIComponent(segment)).join('/');
|
const filePath = path.map(segment => encodeURIComponent(segment)).join('/');
|
||||||
const backendBase = (
|
const candidates = getCandidateUrls(filePath);
|
||||||
process.env.INTERNAL_API_URL ||
|
|
||||||
process.env.NEXT_PUBLIC_API_URL ||
|
|
||||||
'http://127.0.0.1:4001'
|
|
||||||
).replace(/\/api\/?$/, '');
|
|
||||||
|
|
||||||
const targetUrl = `${backendBase}/uploads/${filePath}`;
|
// Forward streaming/caching headers from client
|
||||||
|
|
||||||
// Forward streaming/caching headers from client to backend
|
|
||||||
const forwardedHeaders: HeadersInit = {};
|
const forwardedHeaders: HeadersInit = {};
|
||||||
const rangeHeader = request.headers.get('range');
|
const rangeHeader = request.headers.get('range');
|
||||||
if (rangeHeader) {
|
if (rangeHeader) forwardedHeaders['range'] = rangeHeader;
|
||||||
forwardedHeaders['range'] = rangeHeader;
|
|
||||||
}
|
|
||||||
const ifNoneMatch = request.headers.get('if-none-match');
|
const ifNoneMatch = request.headers.get('if-none-match');
|
||||||
if (ifNoneMatch) {
|
if (ifNoneMatch) forwardedHeaders['if-none-match'] = ifNoneMatch;
|
||||||
forwardedHeaders['if-none-match'] = ifNoneMatch;
|
|
||||||
}
|
|
||||||
const ifModifiedSince = request.headers.get('if-modified-since');
|
const ifModifiedSince = request.headers.get('if-modified-since');
|
||||||
if (ifModifiedSince) {
|
if (ifModifiedSince) forwardedHeaders['if-modified-since'] = ifModifiedSince;
|
||||||
forwardedHeaders['if-modified-since'] = ifModifiedSince;
|
|
||||||
|
let backendRes: Response | null = null;
|
||||||
|
|
||||||
|
for (const targetUrl of candidates) {
|
||||||
|
try {
|
||||||
|
const res = await fetch(targetUrl, {
|
||||||
|
method: 'GET',
|
||||||
|
headers: forwardedHeaders,
|
||||||
|
cache: 'no-store',
|
||||||
|
});
|
||||||
|
|
||||||
|
if (res.ok || res.status === 304 || res.status === 206) {
|
||||||
|
backendRes = res;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
} catch {
|
||||||
|
// Continue trying next candidate
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const backendRes = await fetch(targetUrl, {
|
if (!backendRes) {
|
||||||
method: 'GET',
|
return new NextResponse('Media file not found upstream', { status: 404 });
|
||||||
headers: forwardedHeaders,
|
|
||||||
cache: 'no-store', // Always stream directly or use Next.js response headers
|
|
||||||
});
|
|
||||||
|
|
||||||
if (!backendRes.ok && backendRes.status !== 304 && backendRes.status !== 206) {
|
|
||||||
return new NextResponse(`Media not found or error from upstream (${backendRes.status})`, {
|
|
||||||
status: backendRes.status,
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Build response headers with long-term caching and media streaming support
|
|
||||||
const responseHeaders = new Headers();
|
const responseHeaders = new Headers();
|
||||||
|
|
||||||
// Forward essential media headers
|
|
||||||
const contentType = backendRes.headers.get('content-type') || 'application/octet-stream';
|
const contentType = backendRes.headers.get('content-type') || 'application/octet-stream';
|
||||||
responseHeaders.set('Content-Type', contentType);
|
responseHeaders.set('Content-Type', contentType);
|
||||||
|
|
||||||
const contentLength = backendRes.headers.get('content-length');
|
const contentLength = backendRes.headers.get('content-length');
|
||||||
if (contentLength) {
|
if (contentLength) responseHeaders.set('Content-Length', contentLength);
|
||||||
responseHeaders.set('Content-Length', contentLength);
|
|
||||||
}
|
|
||||||
|
|
||||||
const contentRange = backendRes.headers.get('content-range');
|
const contentRange = backendRes.headers.get('content-range');
|
||||||
if (contentRange) {
|
if (contentRange) responseHeaders.set('Content-Range', contentRange);
|
||||||
responseHeaders.set('Content-Range', contentRange);
|
|
||||||
}
|
|
||||||
|
|
||||||
const acceptRanges = backendRes.headers.get('accept-ranges') || 'bytes';
|
const acceptRanges = backendRes.headers.get('accept-ranges') || 'bytes';
|
||||||
responseHeaders.set('Accept-Ranges', acceptRanges);
|
responseHeaders.set('Accept-Ranges', acceptRanges);
|
||||||
|
|
||||||
const etag = backendRes.headers.get('etag');
|
const etag = backendRes.headers.get('etag');
|
||||||
if (etag) {
|
if (etag) responseHeaders.set('ETag', etag);
|
||||||
responseHeaders.set('ETag', etag);
|
|
||||||
}
|
|
||||||
|
|
||||||
const lastModified = backendRes.headers.get('last-modified');
|
const lastModified = backendRes.headers.get('last-modified');
|
||||||
if (lastModified) {
|
if (lastModified) responseHeaders.set('Last-Modified', lastModified);
|
||||||
responseHeaders.set('Last-Modified', lastModified);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Set aggressive caching for static media (1 year with immutable)
|
|
||||||
responseHeaders.set('Cache-Control', 'public, max-age=31536000, s-maxage=31536000, immutable');
|
responseHeaders.set('Cache-Control', 'public, max-age=31536000, s-maxage=31536000, immutable');
|
||||||
responseHeaders.set('X-Content-Type-Options', 'nosniff');
|
responseHeaders.set('X-Content-Type-Options', 'nosniff');
|
||||||
|
|
||||||
@ -104,14 +116,25 @@ export async function HEAD(
|
|||||||
}
|
}
|
||||||
|
|
||||||
const filePath = path.map(segment => encodeURIComponent(segment)).join('/');
|
const filePath = path.map(segment => encodeURIComponent(segment)).join('/');
|
||||||
const backendBase = (
|
const candidates = getCandidateUrls(filePath);
|
||||||
process.env.INTERNAL_API_URL ||
|
|
||||||
process.env.NEXT_PUBLIC_API_URL ||
|
|
||||||
'http://127.0.0.1:4001'
|
|
||||||
).replace(/\/api\/?$/, '');
|
|
||||||
|
|
||||||
const targetUrl = `${backendBase}/uploads/${filePath}`;
|
let backendRes: Response | null = null;
|
||||||
const backendRes = await fetch(targetUrl, { method: 'HEAD', cache: 'no-store' });
|
|
||||||
|
for (const targetUrl of candidates) {
|
||||||
|
try {
|
||||||
|
const res = await fetch(targetUrl, { method: 'HEAD', cache: 'no-store' });
|
||||||
|
if (res.ok || res.status === 304) {
|
||||||
|
backendRes = res;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
} catch {
|
||||||
|
// Continue
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!backendRes) {
|
||||||
|
return new NextResponse(null, { status: 404 });
|
||||||
|
}
|
||||||
|
|
||||||
const responseHeaders = new Headers();
|
const responseHeaders = new Headers();
|
||||||
const contentType = backendRes.headers.get('content-type') || 'application/octet-stream';
|
const contentType = backendRes.headers.get('content-type') || 'application/octet-stream';
|
||||||
|
|||||||
@ -1,24 +1,24 @@
|
|||||||
{
|
{
|
||||||
"0": "Roles",
|
"0": "Roles",
|
||||||
"1": "app.module.ts",
|
"1": "app.module.ts",
|
||||||
"2": "SettingsController",
|
"2": "SettingsService",
|
||||||
"3": "productService.ts",
|
"3": "productService.ts",
|
||||||
"4": "ProductPage.tsx",
|
"4": "ProductPage.tsx",
|
||||||
"5": "CmsController",
|
"5": "CmsController",
|
||||||
"6": "tickets.controller.ts",
|
"6": "tickets.controller.ts",
|
||||||
"7": "Button.tsx",
|
"7": "Button.tsx",
|
||||||
"8": "reviews.controller.ts",
|
"8": "pets/pets.controller.ts",
|
||||||
"9": "devDependencies",
|
"9": "devDependencies",
|
||||||
"10": "ReviewsController",
|
"10": "CreateReviewDto",
|
||||||
"11": "MediaSelector.tsx",
|
"11": "MediaSelector.tsx",
|
||||||
"12": "index.ts",
|
"12": "index.ts",
|
||||||
"13": "app-audit-verification.e2e-spec.js",
|
"13": "app-audit-verification.e2e-spec.js",
|
||||||
"14": "lib/services/api.ts",
|
"14": "userStore.ts",
|
||||||
"15": "src/services/api.ts",
|
"15": "src/services/api.ts",
|
||||||
"16": "DoctorQueryDto",
|
"16": "DoctorQueryDto",
|
||||||
"17": "schema.ts",
|
"17": "schema.ts",
|
||||||
"18": "JwtAuthGuard",
|
"18": "JwtAuthGuard",
|
||||||
"19": "ProductsController",
|
"19": "ProductsService",
|
||||||
"20": "CreateVideoDto",
|
"20": "CreateVideoDto",
|
||||||
"21": "admin.module.ts",
|
"21": "admin.module.ts",
|
||||||
"22": "RevalidationService",
|
"22": "RevalidationService",
|
||||||
@ -33,7 +33,7 @@
|
|||||||
"31": "DOC-001",
|
"31": "DOC-001",
|
||||||
"32": "adminRoutes.tsx",
|
"32": "adminRoutes.tsx",
|
||||||
"33": "WholesaleApplyDto",
|
"33": "WholesaleApplyDto",
|
||||||
"34": "B2BController",
|
"34": "B2BService",
|
||||||
"35": "AuthController",
|
"35": "AuthController",
|
||||||
"36": "FaqService",
|
"36": "FaqService",
|
||||||
"37": "راهنمای تست سیستم (Software Testing)",
|
"37": "راهنمای تست سیستم (Software Testing)",
|
||||||
@ -42,16 +42,16 @@
|
|||||||
"40": "MediaController",
|
"40": "MediaController",
|
||||||
"41": "What You Must Do When Invoked",
|
"41": "What You Must Do When Invoked",
|
||||||
"42": "SslController",
|
"42": "SslController",
|
||||||
"43": "BannersController",
|
"43": "BannersService",
|
||||||
"44": "TestimonialsController",
|
"44": "TestimonialsService",
|
||||||
"45": "What You Must Do When Invoked",
|
"45": "What You Must Do When Invoked",
|
||||||
"46": "20260526145407_init/migration.sql",
|
"46": "20260526145407_init/migration.sql",
|
||||||
"47": "IngredientsController",
|
"47": "IngredientsService",
|
||||||
"48": "UsersController",
|
"48": "UsersController",
|
||||||
"49": "devDependencies",
|
"49": "devDependencies",
|
||||||
"50": "devDependencies",
|
"50": "devDependencies",
|
||||||
"51": "BlogsController",
|
"51": "BlogsController",
|
||||||
"52": "PrescriptionsController",
|
"52": "PrescriptionsService",
|
||||||
"53": "SmartAdvisorService",
|
"53": "SmartAdvisorService",
|
||||||
"54": "Modal.tsx",
|
"54": "Modal.tsx",
|
||||||
"55": "UITexts.tsx",
|
"55": "UITexts.tsx",
|
||||||
@ -60,7 +60,7 @@
|
|||||||
"58": "ContactService",
|
"58": "ContactService",
|
||||||
"59": "compilerOptions",
|
"59": "compilerOptions",
|
||||||
"60": "PaymentService",
|
"60": "PaymentService",
|
||||||
"61": "PetProfile.tsx",
|
"61": "useCartStore",
|
||||||
"62": "SmsService",
|
"62": "SmsService",
|
||||||
"63": "dependencies",
|
"63": "dependencies",
|
||||||
"64": "compilerOptions",
|
"64": "compilerOptions",
|
||||||
@ -75,7 +75,7 @@
|
|||||||
"73": "Operational Rules & Boundaries",
|
"73": "Operational Rules & Boundaries",
|
||||||
"74": "WikiController",
|
"74": "WikiController",
|
||||||
"75": "PetsController",
|
"75": "PetsController",
|
||||||
"76": "AdminService",
|
"76": "Param",
|
||||||
"77": "seo.module.ts",
|
"77": "seo.module.ts",
|
||||||
"78": "rss.xml/route.ts",
|
"78": "rss.xml/route.ts",
|
||||||
"79": "🏢 AI Software Agency — Master Orchestration Protocol v3",
|
"79": "🏢 AI Software Agency — Master Orchestration Protocol v3",
|
||||||
@ -89,7 +89,7 @@
|
|||||||
"87": "dependencies",
|
"87": "dependencies",
|
||||||
"88": "CreateEBankCheckoutDto",
|
"88": "CreateEBankCheckoutDto",
|
||||||
"89": "seed-products.ts",
|
"89": "seed-products.ts",
|
||||||
"90": "ProductsService",
|
"90": "ApiBearerAuth",
|
||||||
"91": "Reconciled Audit Roles & Assignments",
|
"91": "Reconciled Audit Roles & Assignments",
|
||||||
"92": "OrdersService",
|
"92": "OrdersService",
|
||||||
"93": "HomeClient.tsx",
|
"93": "HomeClient.tsx",
|
||||||
@ -112,7 +112,7 @@
|
|||||||
"110": "Operational Rules & Boundaries",
|
"110": "Operational Rules & Boundaries",
|
||||||
"111": "Operational Rules & Boundaries",
|
"111": "Operational Rules & Boundaries",
|
||||||
"112": "Operational Rules & Boundaries",
|
"112": "Operational Rules & Boundaries",
|
||||||
"113": "AdminTransactionFilterDto",
|
"113": "SettingsController",
|
||||||
"114": "AppService",
|
"114": "AppService",
|
||||||
"115": "Blogs.tsx",
|
"115": "Blogs.tsx",
|
||||||
"116": "Vazirmatn Changelog",
|
"116": "Vazirmatn Changelog",
|
||||||
@ -121,14 +121,14 @@
|
|||||||
"119": "compilerOptions",
|
"119": "compilerOptions",
|
||||||
"120": "compilerOptions",
|
"120": "compilerOptions",
|
||||||
"121": "backend/README.md",
|
"121": "backend/README.md",
|
||||||
"122": "AdminController",
|
"122": "AdminService",
|
||||||
"123": "MetricsController",
|
"123": "users.service.ts",
|
||||||
"124": "Repository Map",
|
"124": "Repository Map",
|
||||||
"125": "validate_integrity.js",
|
"125": "validate_integrity.js",
|
||||||
"126": "admin-panel/package.json",
|
"126": "admin-panel/package.json",
|
||||||
"127": "Sahel-Font",
|
"127": "Sahel-Font",
|
||||||
"128": "Body",
|
"128": "RedisService",
|
||||||
"129": "wiki/[slug]/page.tsx",
|
"129": "UsersService",
|
||||||
"130": "Sahel-Font",
|
"130": "Sahel-Font",
|
||||||
"131": "Role & Core Objective",
|
"131": "Role & Core Objective",
|
||||||
"132": "orchestrate.py",
|
"132": "orchestrate.py",
|
||||||
@ -143,15 +143,15 @@
|
|||||||
"141": "application/package.json",
|
"141": "application/package.json",
|
||||||
"142": "start-dev.js",
|
"142": "start-dev.js",
|
||||||
"143": "generate-openapi.js",
|
"143": "generate-openapi.js",
|
||||||
"144": "SafeImage.tsx",
|
"144": "VetGallery.tsx",
|
||||||
"145": "ProductDto",
|
"145": "ProductDto",
|
||||||
"146": "System Discovery",
|
"146": "System Discovery",
|
||||||
"147": "HomeController",
|
"147": "HomeController",
|
||||||
"148": "admin.service.ts",
|
"148": "admin.service.ts",
|
||||||
"149": "SmsSettingsPage.tsx",
|
"149": "SmsSettingsPage.tsx",
|
||||||
"150": "Product Requirement Document (PRD)",
|
"150": "Product Requirement Document (PRD)",
|
||||||
"151": "zibal-ebank.service.ts",
|
"151": "components/Skeleton.tsx",
|
||||||
"152": "useCartStore",
|
"152": "lib/services/api.ts",
|
||||||
"153": "exclude",
|
"153": "exclude",
|
||||||
"154": "Baseline Command Plan & Reconciled Command History",
|
"154": "Baseline Command Plan & Reconciled Command History",
|
||||||
"155": "seo-backfill.ts",
|
"155": "seo-backfill.ts",
|
||||||
@ -176,14 +176,15 @@
|
|||||||
"174": "rebuild_honest_ledger.js",
|
"174": "rebuild_honest_ledger.js",
|
||||||
"175": "validate_evidence_grade.js",
|
"175": "validate_evidence_grade.js",
|
||||||
"176": "uploads/[...path]/route.ts",
|
"176": "uploads/[...path]/route.ts",
|
||||||
"177": "UsersService",
|
"177": "auth.module.ts",
|
||||||
"178": "نقشه جامع پوشش تستهای سرتاسری (E2E Test Coverage Map) — پروژه Canina",
|
"178": "نقشه جامع پوشش تستهای سرتاسری (E2E Test Coverage Map) — پروژه Canina",
|
||||||
"179": "prisma",
|
"179": "prisma",
|
||||||
"180": "API Contract Specification",
|
"180": "API Contract Specification",
|
||||||
"181": "⚙️ Backend Technical Review (05_dev_backend)",
|
"181": "⚙️ Backend Technical Review (05_dev_backend)",
|
||||||
"182": "🎨 Frontend & Admin Panel Technical Review (06_dev_frontend)",
|
"182": "🎨 Frontend & Admin Panel Technical Review (06_dev_frontend)",
|
||||||
"183": "🚀 SEO & Content Strategy Review (12_seo_content)",
|
"183": "🚀 SEO & Content Strategy Review (12_seo_content)",
|
||||||
"184": "@types/node",
|
"184": "RegisterDto",
|
||||||
|
"185": "SmsLogQueryDto",
|
||||||
"186": "seed-ui-texts.ts",
|
"186": "seed-ui-texts.ts",
|
||||||
"187": "seed-wiki.ts",
|
"187": "seed-wiki.ts",
|
||||||
"188": "update-blog.dto.ts",
|
"188": "update-blog.dto.ts",
|
||||||
@ -195,10 +196,14 @@
|
|||||||
"194": "Raw Finding Verification & Disposition Report",
|
"194": "Raw Finding Verification & Disposition Report",
|
||||||
"195": "React + TypeScript + Vite",
|
"195": "React + TypeScript + Vite",
|
||||||
"196": "Select.tsx",
|
"196": "Select.tsx",
|
||||||
|
"197": "AdminLoginDto",
|
||||||
|
"198": "LoginDto",
|
||||||
|
"199": "videos/page.tsx",
|
||||||
"200": "application/README.md",
|
"200": "application/README.md",
|
||||||
"201": "deploy.sh",
|
"201": "deploy.sh",
|
||||||
"202": "🔒 Security & Performance Review (09_devops_security)",
|
"202": "🔒 Security & Performance Review (09_devops_security)",
|
||||||
"203": "👁️ UX & Persona Interface Review (08_visual_qa)",
|
"203": "👁️ UX & Persona Interface Review (08_visual_qa)",
|
||||||
|
"204": "trust-seals/page.tsx",
|
||||||
"205": "prisma/scientificTerms.ts",
|
"205": "prisma/scientificTerms.ts",
|
||||||
"206": "seed-blogs.ts",
|
"206": "seed-blogs.ts",
|
||||||
"207": "seed-custom.ts",
|
"207": "seed-custom.ts",
|
||||||
@ -217,16 +222,22 @@
|
|||||||
"220": "Input.tsx",
|
"220": "Input.tsx",
|
||||||
"221": "Textarea.tsx",
|
"221": "Textarea.tsx",
|
||||||
"222": "admin-panel/tsconfig.json",
|
"222": "admin-panel/tsconfig.json",
|
||||||
|
"223": "catalog/page.tsx",
|
||||||
|
"224": "bcrypt",
|
||||||
"225": "next.config.ts",
|
"225": "next.config.ts",
|
||||||
"226": "Shabnam Font README",
|
"226": "Shabnam Font README",
|
||||||
"227": "AGENTS.md",
|
"227": "AGENTS.md",
|
||||||
"228": "rules/graphify.md",
|
"228": "rules/graphify.md",
|
||||||
"229": ".agents/workflows/graphify.md",
|
"229": ".agents/workflows/graphify.md",
|
||||||
"230": "instructions.md",
|
"230": "instructions.md",
|
||||||
"231": "WikiController",
|
"231": "class-transformer",
|
||||||
|
"232": "helmet",
|
||||||
"233": "tailwindcss",
|
"233": "tailwindcss",
|
||||||
"234": "@nestjs/schematics",
|
"234": "@nestjs/schematics",
|
||||||
|
"235": "js-yaml",
|
||||||
|
"236": "@nestjs/core",
|
||||||
"237": "source-map-support",
|
"237": "source-map-support",
|
||||||
|
"238": "@nestjs/jwt",
|
||||||
"239": "ts-loader",
|
"239": "ts-loader",
|
||||||
"240": "supertest",
|
"240": "supertest",
|
||||||
"241": "blog.entity.ts",
|
"241": "blog.entity.ts",
|
||||||
@ -291,25 +302,37 @@
|
|||||||
"300": "typescript",
|
"300": "typescript",
|
||||||
"301": "@types/jest",
|
"301": "@types/jest",
|
||||||
"302": "typescript-eslint",
|
"302": "typescript-eslint",
|
||||||
|
"303": "@nestjs/swagger",
|
||||||
"304": "@types/multer",
|
"304": "@types/multer",
|
||||||
"305": "@types/react",
|
"305": "@types/react",
|
||||||
"306": "globals",
|
"306": "globals",
|
||||||
|
"307": "@nestjs/throttler",
|
||||||
"308": "vitest",
|
"308": "vitest",
|
||||||
"309": "axios",
|
"309": "axios",
|
||||||
"310": "tailwindcss",
|
"310": "tailwindcss",
|
||||||
|
"311": "reflect-metadata",
|
||||||
"312": "@types/passport-jwt",
|
"312": "@types/passport-jwt",
|
||||||
"313": "20260526160916_add_ui_texts_and_scientific_terms/migration.sql",
|
"313": "20260526160916_add_ui_texts_and_scientific_terms/migration.sql",
|
||||||
"314": "typescript-eslint",
|
"314": "typescript-eslint",
|
||||||
"315": "typescript",
|
"315": "typescript",
|
||||||
|
"316": "swagger-ui-express",
|
||||||
"317": "revalidate/route.ts",
|
"317": "revalidate/route.ts",
|
||||||
"318": "MaskableField.tsx",
|
"318": "MaskableField.tsx",
|
||||||
"319": "@eslint/js",
|
"319": "@eslint/js",
|
||||||
"320": "@testing-library/react",
|
"320": "@testing-library/react",
|
||||||
"321": "orders/page.tsx",
|
"321": "orders/page.tsx",
|
||||||
"322": "pets/page.tsx",
|
"322": "pets/page.tsx",
|
||||||
|
"323": "eslint-config-prettier",
|
||||||
|
"324": "@eslint/eslintrc",
|
||||||
"325": "@types/react-dom",
|
"325": "@types/react-dom",
|
||||||
|
"326": "jest",
|
||||||
"327": "eslint-plugin-react-refresh",
|
"327": "eslint-plugin-react-refresh",
|
||||||
"330": "track/page.tsx",
|
"328": "@nestjs/cli",
|
||||||
|
"329": "@nestjs/testing",
|
||||||
|
"330": "prettier",
|
||||||
|
"331": "ts-jest",
|
||||||
"332": "app.e2e-spec.js",
|
"332": "app.e2e-spec.js",
|
||||||
"333": "app/page.tsx"
|
"333": "app/page.tsx",
|
||||||
|
"334": "@types/js-yaml",
|
||||||
|
"335": "@types/supertest"
|
||||||
}
|
}
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
@ -2,26 +2,26 @@
|
|||||||
"0": "Roles",
|
"0": "Roles",
|
||||||
"1": "app.module.ts",
|
"1": "app.module.ts",
|
||||||
"2": "SettingsController",
|
"2": "SettingsController",
|
||||||
"3": "ProductService",
|
"3": "productService.ts",
|
||||||
"4": "ProductPage.tsx",
|
"4": "ProductPage.tsx",
|
||||||
"5": "CmsController",
|
"5": "CmsController",
|
||||||
"6": "tickets.controller.ts",
|
"6": "tickets.controller.ts",
|
||||||
"7": "Button.tsx",
|
"7": "Button.tsx",
|
||||||
"8": "SettingsService",
|
"8": "reviews.controller.ts",
|
||||||
"9": "devDependencies",
|
"9": "devDependencies",
|
||||||
"10": "CreateReviewDto",
|
"10": "ReviewsController",
|
||||||
"11": "MediaSelector.tsx",
|
"11": "MediaSelector.tsx",
|
||||||
"12": "index.ts",
|
"12": "index.ts",
|
||||||
"13": "app-audit-verification.e2e-spec.js",
|
"13": "app-audit-verification.e2e-spec.js",
|
||||||
"14": "userStore.ts",
|
"14": "lib/services/api.ts",
|
||||||
"15": "src/services/api.ts",
|
"15": "src/services/api.ts",
|
||||||
"16": "DoctorQueryDto",
|
"16": "DoctorQueryDto",
|
||||||
"17": "schema.ts",
|
"17": "schema.ts",
|
||||||
"18": "JwtAuthGuard",
|
"18": "JwtAuthGuard",
|
||||||
"19": "ProductsService",
|
"19": "ProductsController",
|
||||||
"20": "CreateVideoDto",
|
"20": "CreateVideoDto",
|
||||||
"21": "ReportsController",
|
"21": "admin.module.ts",
|
||||||
"22": "components/Skeleton.tsx",
|
"22": "RevalidationService",
|
||||||
"23": "MenuService",
|
"23": "MenuService",
|
||||||
"24": "BE-001",
|
"24": "BE-001",
|
||||||
"25": "FE-001",
|
"25": "FE-001",
|
||||||
@ -51,23 +51,23 @@
|
|||||||
"49": "devDependencies",
|
"49": "devDependencies",
|
||||||
"50": "devDependencies",
|
"50": "devDependencies",
|
||||||
"51": "BlogsController",
|
"51": "BlogsController",
|
||||||
"52": "PrescriptionsService",
|
"52": "PrescriptionsController",
|
||||||
"53": "SmartAdvisorService",
|
"53": "SmartAdvisorService",
|
||||||
"54": "Modal.tsx",
|
"54": "Modal.tsx",
|
||||||
"55": "UITexts.tsx",
|
"55": "UITexts.tsx",
|
||||||
"56": "Orders.tsx",
|
"56": "Orders.tsx",
|
||||||
"57": "Role & Core Objective",
|
"57": "Role & Core Objective",
|
||||||
"58": "ContactController",
|
"58": "ContactService",
|
||||||
"59": "compilerOptions",
|
"59": "compilerOptions",
|
||||||
"60": "PaymentService",
|
"60": "PaymentService",
|
||||||
"61": "usePetStore",
|
"61": "PetProfile.tsx",
|
||||||
"62": "SmsService",
|
"62": "SmsService",
|
||||||
"63": "dependencies",
|
"63": "dependencies",
|
||||||
"64": "compilerOptions",
|
"64": "compilerOptions",
|
||||||
"65": "BlogsService",
|
"65": "BlogsService",
|
||||||
"66": "ApiOperation",
|
"66": "ApiOperation",
|
||||||
"67": "PetsController",
|
"67": "PetsController",
|
||||||
"68": "lib/services/api.ts",
|
"68": "UserDashboard.tsx",
|
||||||
"69": "Required Review Group Closures",
|
"69": "Required Review Group Closures",
|
||||||
"70": "compilerOptions",
|
"70": "compilerOptions",
|
||||||
"71": "getPageMetadata",
|
"71": "getPageMetadata",
|
||||||
@ -84,17 +84,17 @@
|
|||||||
"82": "scripts",
|
"82": "scripts",
|
||||||
"83": "dependencies",
|
"83": "dependencies",
|
||||||
"84": "Role & Core Objective",
|
"84": "Role & Core Objective",
|
||||||
"85": "trust-seals/page.tsx",
|
"85": "useSettingsStore",
|
||||||
"86": "zibal.service.ts",
|
"86": "zibal.service.ts",
|
||||||
"87": "dependencies",
|
"87": "dependencies",
|
||||||
"88": "CreateEBankCheckoutDto",
|
"88": "CreateEBankCheckoutDto",
|
||||||
"89": "seed-products.ts",
|
"89": "seed-products.ts",
|
||||||
"90": "users.service.ts",
|
"90": "ProductsService",
|
||||||
"91": "Reconciled Audit Roles & Assignments",
|
"91": "Reconciled Audit Roles & Assignments",
|
||||||
"92": "OrdersService",
|
"92": "OrdersService",
|
||||||
"93": "useSettingsStore",
|
"93": "HomeClient.tsx",
|
||||||
"94": "Phase 3.1 — Human Review Preparation and Master Backlog Critique",
|
"94": "Phase 3.1 — Human Review Preparation and Master Backlog Critique",
|
||||||
"95": "wiki/[slug]/page.tsx",
|
"95": "blog/[slug]/page.tsx",
|
||||||
"96": "compilerOptions",
|
"96": "compilerOptions",
|
||||||
"97": "InitiatePaymentDto",
|
"97": "InitiatePaymentDto",
|
||||||
"98": "scripts",
|
"98": "scripts",
|
||||||
@ -112,7 +112,7 @@
|
|||||||
"110": "Operational Rules & Boundaries",
|
"110": "Operational Rules & Boundaries",
|
||||||
"111": "Operational Rules & Boundaries",
|
"111": "Operational Rules & Boundaries",
|
||||||
"112": "Operational Rules & Boundaries",
|
"112": "Operational Rules & Boundaries",
|
||||||
"113": "RegisterDto",
|
"113": "AdminTransactionFilterDto",
|
||||||
"114": "AppService",
|
"114": "AppService",
|
||||||
"115": "Blogs.tsx",
|
"115": "Blogs.tsx",
|
||||||
"116": "Vazirmatn Changelog",
|
"116": "Vazirmatn Changelog",
|
||||||
@ -122,13 +122,13 @@
|
|||||||
"120": "compilerOptions",
|
"120": "compilerOptions",
|
||||||
"121": "backend/README.md",
|
"121": "backend/README.md",
|
||||||
"122": "AdminController",
|
"122": "AdminController",
|
||||||
"123": "AuthService",
|
"123": "MetricsController",
|
||||||
"124": "Repository Map",
|
"124": "Repository Map",
|
||||||
"125": "validate_integrity.js",
|
"125": "validate_integrity.js",
|
||||||
"126": "admin-panel/package.json",
|
"126": "admin-panel/package.json",
|
||||||
"127": "Sahel-Font",
|
"127": "Sahel-Font",
|
||||||
"128": "Body",
|
"128": "Body",
|
||||||
"129": "auth.controller.ts",
|
"129": "wiki/[slug]/page.tsx",
|
||||||
"130": "Sahel-Font",
|
"130": "Sahel-Font",
|
||||||
"131": "Role & Core Objective",
|
"131": "Role & Core Objective",
|
||||||
"132": "orchestrate.py",
|
"132": "orchestrate.py",
|
||||||
@ -143,21 +143,21 @@
|
|||||||
"141": "application/package.json",
|
"141": "application/package.json",
|
||||||
"142": "start-dev.js",
|
"142": "start-dev.js",
|
||||||
"143": "generate-openapi.js",
|
"143": "generate-openapi.js",
|
||||||
"144": "VetGallery.tsx",
|
"144": "SafeImage.tsx",
|
||||||
"145": "ProductDto",
|
"145": "ProductDto",
|
||||||
"146": "System Discovery",
|
"146": "System Discovery",
|
||||||
"147": "HomeController",
|
"147": "HomeController",
|
||||||
"148": "admin.service.ts",
|
"148": "admin.service.ts",
|
||||||
"149": "SmsSettingsPage.tsx",
|
"149": "SmsSettingsPage.tsx",
|
||||||
"150": "Product Requirement Document (PRD)",
|
"150": "Product Requirement Document (PRD)",
|
||||||
"151": "class-transformer",
|
"151": "zibal-ebank.service.ts",
|
||||||
"152": "useCartStore",
|
"152": "useCartStore",
|
||||||
"153": "exclude",
|
"153": "exclude",
|
||||||
"154": "Baseline Command Plan & Reconciled Command History",
|
"154": "Baseline Command Plan & Reconciled Command History",
|
||||||
"155": "seo-backfill.ts",
|
"155": "seo-backfill.ts",
|
||||||
"156": "manual-test-scenarios.md",
|
"156": "manual-test-scenarios.md",
|
||||||
"157": "ErrorPages.tsx",
|
"157": "ErrorPages.tsx",
|
||||||
"158": "js-yaml",
|
"158": "media/[...path]/route.ts",
|
||||||
"159": "with-vpn.sh",
|
"159": "with-vpn.sh",
|
||||||
"160": "Architecture Specification",
|
"160": "Architecture Specification",
|
||||||
"161": "Project Health Audit Report",
|
"161": "Project Health Audit Report",
|
||||||
@ -175,16 +175,15 @@
|
|||||||
"173": "Phase 3 Audit Traceability Matrix",
|
"173": "Phase 3 Audit Traceability Matrix",
|
||||||
"174": "rebuild_honest_ledger.js",
|
"174": "rebuild_honest_ledger.js",
|
||||||
"175": "validate_evidence_grade.js",
|
"175": "validate_evidence_grade.js",
|
||||||
"176": "@nestjs/core",
|
"176": "uploads/[...path]/route.ts",
|
||||||
"177": "auth.module.ts",
|
"177": "UsersService",
|
||||||
"178": "نقشه جامع پوشش تستهای سرتاسری (E2E Test Coverage Map) — پروژه Canina",
|
"178": "نقشه جامع پوشش تستهای سرتاسری (E2E Test Coverage Map) — پروژه Canina",
|
||||||
"179": "@nestjs/jwt",
|
"179": "prisma",
|
||||||
"180": "API Contract Specification",
|
"180": "API Contract Specification",
|
||||||
"181": "⚙️ Backend Technical Review (05_dev_backend)",
|
"181": "⚙️ Backend Technical Review (05_dev_backend)",
|
||||||
"182": "🎨 Frontend & Admin Panel Technical Review (06_dev_frontend)",
|
"182": "🎨 Frontend & Admin Panel Technical Review (06_dev_frontend)",
|
||||||
"183": "🚀 SEO & Content Strategy Review (12_seo_content)",
|
"183": "🚀 SEO & Content Strategy Review (12_seo_content)",
|
||||||
"184": "CheckoutPage.tsx",
|
"184": "@types/node",
|
||||||
"185": "@eslint/eslintrc",
|
|
||||||
"186": "seed-ui-texts.ts",
|
"186": "seed-ui-texts.ts",
|
||||||
"187": "seed-wiki.ts",
|
"187": "seed-wiki.ts",
|
||||||
"188": "update-blog.dto.ts",
|
"188": "update-blog.dto.ts",
|
||||||
@ -196,14 +195,10 @@
|
|||||||
"194": "Raw Finding Verification & Disposition Report",
|
"194": "Raw Finding Verification & Disposition Report",
|
||||||
"195": "React + TypeScript + Vite",
|
"195": "React + TypeScript + Vite",
|
||||||
"196": "Select.tsx",
|
"196": "Select.tsx",
|
||||||
"197": "UsersService",
|
|
||||||
"198": "@nestjs/throttler",
|
|
||||||
"199": "passport",
|
|
||||||
"200": "application/README.md",
|
"200": "application/README.md",
|
||||||
"201": "deploy.sh",
|
"201": "deploy.sh",
|
||||||
"202": "🔒 Security & Performance Review (09_devops_security)",
|
"202": "🔒 Security & Performance Review (09_devops_security)",
|
||||||
"203": "👁️ UX & Persona Interface Review (08_visual_qa)",
|
"203": "👁️ UX & Persona Interface Review (08_visual_qa)",
|
||||||
"204": "reflect-metadata",
|
|
||||||
"205": "prisma/scientificTerms.ts",
|
"205": "prisma/scientificTerms.ts",
|
||||||
"206": "seed-blogs.ts",
|
"206": "seed-blogs.ts",
|
||||||
"207": "seed-custom.ts",
|
"207": "seed-custom.ts",
|
||||||
@ -222,8 +217,6 @@
|
|||||||
"220": "Input.tsx",
|
"220": "Input.tsx",
|
||||||
"221": "Textarea.tsx",
|
"221": "Textarea.tsx",
|
||||||
"222": "admin-panel/tsconfig.json",
|
"222": "admin-panel/tsconfig.json",
|
||||||
"223": "swagger-ui-express",
|
|
||||||
"224": "jest",
|
|
||||||
"225": "next.config.ts",
|
"225": "next.config.ts",
|
||||||
"226": "Shabnam Font README",
|
"226": "Shabnam Font README",
|
||||||
"227": "AGENTS.md",
|
"227": "AGENTS.md",
|
||||||
@ -231,13 +224,9 @@
|
|||||||
"229": ".agents/workflows/graphify.md",
|
"229": ".agents/workflows/graphify.md",
|
||||||
"230": "instructions.md",
|
"230": "instructions.md",
|
||||||
"231": "WikiController",
|
"231": "WikiController",
|
||||||
"232": "helmet",
|
|
||||||
"233": "tailwindcss",
|
"233": "tailwindcss",
|
||||||
"234": "@nestjs/schematics",
|
"234": "@nestjs/schematics",
|
||||||
"235": "@nestjs/testing",
|
|
||||||
"236": "BlogsService",
|
|
||||||
"237": "source-map-support",
|
"237": "source-map-support",
|
||||||
"238": "ts-jest",
|
|
||||||
"239": "ts-loader",
|
"239": "ts-loader",
|
||||||
"240": "supertest",
|
"240": "supertest",
|
||||||
"241": "blog.entity.ts",
|
"241": "blog.entity.ts",
|
||||||
@ -302,36 +291,25 @@
|
|||||||
"300": "typescript",
|
"300": "typescript",
|
||||||
"301": "@types/jest",
|
"301": "@types/jest",
|
||||||
"302": "typescript-eslint",
|
"302": "typescript-eslint",
|
||||||
"303": "@types/js-yaml",
|
|
||||||
"304": "@types/multer",
|
"304": "@types/multer",
|
||||||
"305": "@types/react",
|
"305": "@types/react",
|
||||||
"306": "globals",
|
"306": "globals",
|
||||||
"307": "@nestjs/cli",
|
|
||||||
"308": "vitest",
|
"308": "vitest",
|
||||||
"309": "axios",
|
"309": "axios",
|
||||||
"310": "tailwindcss",
|
"310": "tailwindcss",
|
||||||
"311": "@types/supertest",
|
|
||||||
"312": "@types/passport-jwt",
|
"312": "@types/passport-jwt",
|
||||||
"313": "20260526160916_add_ui_texts_and_scientific_terms/migration.sql",
|
"313": "20260526160916_add_ui_texts_and_scientific_terms/migration.sql",
|
||||||
"314": "typescript-eslint",
|
"314": "typescript-eslint",
|
||||||
"315": "typescript",
|
"315": "typescript",
|
||||||
"316": "prettier",
|
|
||||||
"317": "revalidate/route.ts",
|
"317": "revalidate/route.ts",
|
||||||
"318": "MaskableField.tsx",
|
"318": "MaskableField.tsx",
|
||||||
"319": "@eslint/js",
|
"319": "@eslint/js",
|
||||||
"320": "@testing-library/react",
|
"320": "@testing-library/react",
|
||||||
"321": "orders/page.tsx",
|
"321": "orders/page.tsx",
|
||||||
"322": "pets/page.tsx",
|
"322": "pets/page.tsx",
|
||||||
"323": "eslint-config-prettier",
|
|
||||||
"324": "eslint",
|
|
||||||
"325": "@types/react-dom",
|
"325": "@types/react-dom",
|
||||||
"326": "SmsLogQueryDto",
|
|
||||||
"327": "eslint-plugin-react-refresh",
|
"327": "eslint-plugin-react-refresh",
|
||||||
"328": "WikiService",
|
|
||||||
"329": "B2BService",
|
|
||||||
"330": "track/page.tsx",
|
"330": "track/page.tsx",
|
||||||
"331": "PodcastPlayerModal.tsx",
|
|
||||||
"332": "app.e2e-spec.js",
|
"332": "app.e2e-spec.js",
|
||||||
"333": "app/page.tsx",
|
"333": "app/page.tsx"
|
||||||
"334": "bcrypt"
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,16 +1,16 @@
|
|||||||
# Graph Report - canina (2026-08-29)
|
# Graph Report - canina (2026-08-29)
|
||||||
|
|
||||||
## Corpus Check
|
## Corpus Check
|
||||||
- 590 files · ~1,336,894 words
|
- 593 files · ~1,337,817 words
|
||||||
- Verdict: corpus is large enough that graph structure adds value.
|
- Verdict: corpus is large enough that graph structure adds value.
|
||||||
|
|
||||||
## Summary
|
## Summary
|
||||||
- 4138 nodes · 7454 edges · 335 communities (213 shown, 122 thin omitted)
|
- 4149 nodes · 7481 edges · 313 communities (211 shown, 102 thin omitted)
|
||||||
- Extraction: 96% EXTRACTED · 4% INFERRED · 0% AMBIGUOUS · INFERRED: 281 edges (avg confidence: 0.79)
|
- Extraction: 96% EXTRACTED · 4% INFERRED · 0% AMBIGUOUS · INFERRED: 281 edges (avg confidence: 0.79)
|
||||||
- Token cost: 0 input · 0 output
|
- Token cost: 0 input · 0 output
|
||||||
|
|
||||||
## Graph Freshness
|
## Graph Freshness
|
||||||
- Built from commit: `32e40a82`
|
- Built from commit: `d9c693c4`
|
||||||
- Run `git rev-parse HEAD` and compare to check if the graph is stale.
|
- Run `git rev-parse HEAD` and compare to check if the graph is stale.
|
||||||
- Run `graphify update .` after code changes (no API cost).
|
- Run `graphify update .` after code changes (no API cost).
|
||||||
|
|
||||||
@ -18,26 +18,26 @@
|
|||||||
- Roles
|
- Roles
|
||||||
- app.module.ts
|
- app.module.ts
|
||||||
- SettingsController
|
- SettingsController
|
||||||
- ProductService
|
- productService.ts
|
||||||
- ProductPage.tsx
|
- ProductPage.tsx
|
||||||
- CmsController
|
- CmsController
|
||||||
- tickets.controller.ts
|
- tickets.controller.ts
|
||||||
- Button.tsx
|
- Button.tsx
|
||||||
- SettingsService
|
- reviews.controller.ts
|
||||||
- devDependencies
|
- devDependencies
|
||||||
- CreateReviewDto
|
- ReviewsController
|
||||||
- MediaSelector.tsx
|
- MediaSelector.tsx
|
||||||
- index.ts
|
- index.ts
|
||||||
- app-audit-verification.e2e-spec.js
|
- app-audit-verification.e2e-spec.js
|
||||||
- userStore.ts
|
- lib/services/api.ts
|
||||||
- src/services/api.ts
|
- src/services/api.ts
|
||||||
- DoctorQueryDto
|
- DoctorQueryDto
|
||||||
- schema.ts
|
- schema.ts
|
||||||
- JwtAuthGuard
|
- JwtAuthGuard
|
||||||
- ProductsService
|
- ProductsController
|
||||||
- CreateVideoDto
|
- CreateVideoDto
|
||||||
- ReportsController
|
- admin.module.ts
|
||||||
- components/Skeleton.tsx
|
- RevalidationService
|
||||||
- MenuService
|
- MenuService
|
||||||
- BE-001
|
- BE-001
|
||||||
- FE-001
|
- FE-001
|
||||||
@ -67,23 +67,23 @@
|
|||||||
- devDependencies
|
- devDependencies
|
||||||
- devDependencies
|
- devDependencies
|
||||||
- BlogsController
|
- BlogsController
|
||||||
- PrescriptionsService
|
- PrescriptionsController
|
||||||
- SmartAdvisorService
|
- SmartAdvisorService
|
||||||
- Modal.tsx
|
- Modal.tsx
|
||||||
- UITexts.tsx
|
- UITexts.tsx
|
||||||
- Orders.tsx
|
- Orders.tsx
|
||||||
- Role & Core Objective
|
- Role & Core Objective
|
||||||
- ContactController
|
- ContactService
|
||||||
- compilerOptions
|
- compilerOptions
|
||||||
- PaymentService
|
- PaymentService
|
||||||
- usePetStore
|
- PetProfile.tsx
|
||||||
- SmsService
|
- SmsService
|
||||||
- dependencies
|
- dependencies
|
||||||
- compilerOptions
|
- compilerOptions
|
||||||
- BlogsService
|
- BlogsService
|
||||||
- ApiOperation
|
- ApiOperation
|
||||||
- PetsController
|
- PetsController
|
||||||
- lib/services/api.ts
|
- UserDashboard.tsx
|
||||||
- Required Review Group Closures
|
- Required Review Group Closures
|
||||||
- compilerOptions
|
- compilerOptions
|
||||||
- getPageMetadata
|
- getPageMetadata
|
||||||
@ -100,17 +100,17 @@
|
|||||||
- scripts
|
- scripts
|
||||||
- dependencies
|
- dependencies
|
||||||
- Role & Core Objective
|
- Role & Core Objective
|
||||||
- trust-seals/page.tsx
|
- useSettingsStore
|
||||||
- zibal.service.ts
|
- zibal.service.ts
|
||||||
- dependencies
|
- dependencies
|
||||||
- CreateEBankCheckoutDto
|
- CreateEBankCheckoutDto
|
||||||
- seed-products.ts
|
- seed-products.ts
|
||||||
- users.service.ts
|
- ProductsService
|
||||||
- Reconciled Audit Roles & Assignments
|
- Reconciled Audit Roles & Assignments
|
||||||
- OrdersService
|
- OrdersService
|
||||||
- useSettingsStore
|
- HomeClient.tsx
|
||||||
- Phase 3.1 — Human Review Preparation and Master Backlog Critique
|
- Phase 3.1 — Human Review Preparation and Master Backlog Critique
|
||||||
- wiki/[slug]/page.tsx
|
- blog/[slug]/page.tsx
|
||||||
- compilerOptions
|
- compilerOptions
|
||||||
- InitiatePaymentDto
|
- InitiatePaymentDto
|
||||||
- scripts
|
- scripts
|
||||||
@ -128,7 +128,7 @@
|
|||||||
- Operational Rules & Boundaries
|
- Operational Rules & Boundaries
|
||||||
- Operational Rules & Boundaries
|
- Operational Rules & Boundaries
|
||||||
- Operational Rules & Boundaries
|
- Operational Rules & Boundaries
|
||||||
- RegisterDto
|
- AdminTransactionFilterDto
|
||||||
- AppService
|
- AppService
|
||||||
- Blogs.tsx
|
- Blogs.tsx
|
||||||
- Vazirmatn Changelog
|
- Vazirmatn Changelog
|
||||||
@ -138,13 +138,13 @@
|
|||||||
- compilerOptions
|
- compilerOptions
|
||||||
- backend/README.md
|
- backend/README.md
|
||||||
- AdminController
|
- AdminController
|
||||||
- AuthService
|
- MetricsController
|
||||||
- Repository Map
|
- Repository Map
|
||||||
- validate_integrity.js
|
- validate_integrity.js
|
||||||
- admin-panel/package.json
|
- admin-panel/package.json
|
||||||
- Sahel-Font
|
- Sahel-Font
|
||||||
- Body
|
- Body
|
||||||
- auth.controller.ts
|
- wiki/[slug]/page.tsx
|
||||||
- Sahel-Font
|
- Sahel-Font
|
||||||
- Role & Core Objective
|
- Role & Core Objective
|
||||||
- orchestrate.py
|
- orchestrate.py
|
||||||
@ -159,20 +159,20 @@
|
|||||||
- application/package.json
|
- application/package.json
|
||||||
- start-dev.js
|
- start-dev.js
|
||||||
- generate-openapi.js
|
- generate-openapi.js
|
||||||
- VetGallery.tsx
|
- SafeImage.tsx
|
||||||
- ProductDto
|
- ProductDto
|
||||||
- System Discovery
|
- System Discovery
|
||||||
- HomeController
|
- HomeController
|
||||||
- admin.service.ts
|
- admin.service.ts
|
||||||
- SmsSettingsPage.tsx
|
- SmsSettingsPage.tsx
|
||||||
- Product Requirement Document (PRD)
|
- Product Requirement Document (PRD)
|
||||||
- class-transformer
|
- zibal-ebank.service.ts
|
||||||
- useCartStore
|
- useCartStore
|
||||||
- exclude
|
- exclude
|
||||||
- Baseline Command Plan & Reconciled Command History
|
- Baseline Command Plan & Reconciled Command History
|
||||||
- seo-backfill.ts
|
- seo-backfill.ts
|
||||||
- ErrorPages.tsx
|
- ErrorPages.tsx
|
||||||
- js-yaml
|
- media/[...path]/route.ts
|
||||||
- with-vpn.sh
|
- with-vpn.sh
|
||||||
- Architecture Specification
|
- Architecture Specification
|
||||||
- Project Health Audit Report
|
- Project Health Audit Report
|
||||||
@ -190,16 +190,15 @@
|
|||||||
- Phase 3 Audit Traceability Matrix
|
- Phase 3 Audit Traceability Matrix
|
||||||
- rebuild_honest_ledger.js
|
- rebuild_honest_ledger.js
|
||||||
- validate_evidence_grade.js
|
- validate_evidence_grade.js
|
||||||
- @nestjs/core
|
- uploads/[...path]/route.ts
|
||||||
- auth.module.ts
|
- UsersService
|
||||||
- نقشه جامع پوشش تستهای سرتاسری (E2E Test Coverage Map) — پروژه Canina
|
- نقشه جامع پوشش تستهای سرتاسری (E2E Test Coverage Map) — پروژه Canina
|
||||||
- @nestjs/jwt
|
- prisma
|
||||||
- API Contract Specification
|
- API Contract Specification
|
||||||
- ⚙️ Backend Technical Review (05_dev_backend)
|
- ⚙️ Backend Technical Review (05_dev_backend)
|
||||||
- 🎨 Frontend & Admin Panel Technical Review (06_dev_frontend)
|
- 🎨 Frontend & Admin Panel Technical Review (06_dev_frontend)
|
||||||
- 🚀 SEO & Content Strategy Review (12_seo_content)
|
- 🚀 SEO & Content Strategy Review (12_seo_content)
|
||||||
- CheckoutPage.tsx
|
- @types/node
|
||||||
- @eslint/eslintrc
|
|
||||||
- seed-ui-texts.ts
|
- seed-ui-texts.ts
|
||||||
- seed-wiki.ts
|
- seed-wiki.ts
|
||||||
- update-blog.dto.ts
|
- update-blog.dto.ts
|
||||||
@ -211,14 +210,10 @@
|
|||||||
- Raw Finding Verification & Disposition Report
|
- Raw Finding Verification & Disposition Report
|
||||||
- React + TypeScript + Vite
|
- React + TypeScript + Vite
|
||||||
- Select.tsx
|
- Select.tsx
|
||||||
- UsersService
|
|
||||||
- @nestjs/throttler
|
|
||||||
- passport
|
|
||||||
- application/README.md
|
- application/README.md
|
||||||
- deploy.sh
|
- deploy.sh
|
||||||
- 🔒 Security & Performance Review (09_devops_security)
|
- 🔒 Security & Performance Review (09_devops_security)
|
||||||
- 👁️ UX & Persona Interface Review (08_visual_qa)
|
- 👁️ UX & Persona Interface Review (08_visual_qa)
|
||||||
- reflect-metadata
|
|
||||||
- prisma/scientificTerms.ts
|
- prisma/scientificTerms.ts
|
||||||
- seed-blogs.ts
|
- seed-blogs.ts
|
||||||
- seed-custom.ts
|
- seed-custom.ts
|
||||||
@ -237,8 +232,6 @@
|
|||||||
- Input.tsx
|
- Input.tsx
|
||||||
- Textarea.tsx
|
- Textarea.tsx
|
||||||
- admin-panel/tsconfig.json
|
- admin-panel/tsconfig.json
|
||||||
- swagger-ui-express
|
|
||||||
- jest
|
|
||||||
- next.config.ts
|
- next.config.ts
|
||||||
- Shabnam Font README
|
- Shabnam Font README
|
||||||
- AGENTS.md
|
- AGENTS.md
|
||||||
@ -246,13 +239,9 @@
|
|||||||
- .agents/workflows/graphify.md
|
- .agents/workflows/graphify.md
|
||||||
- instructions.md
|
- instructions.md
|
||||||
- WikiController
|
- WikiController
|
||||||
- helmet
|
|
||||||
- tailwindcss
|
- tailwindcss
|
||||||
- @nestjs/schematics
|
- @nestjs/schematics
|
||||||
- @nestjs/testing
|
|
||||||
- BlogsService
|
|
||||||
- source-map-support
|
- source-map-support
|
||||||
- ts-jest
|
|
||||||
- ts-loader
|
- ts-loader
|
||||||
- supertest
|
- supertest
|
||||||
- blog.entity.ts
|
- blog.entity.ts
|
||||||
@ -302,34 +291,23 @@
|
|||||||
- typescript
|
- typescript
|
||||||
- @types/jest
|
- @types/jest
|
||||||
- typescript-eslint
|
- typescript-eslint
|
||||||
- @types/js-yaml
|
|
||||||
- @types/multer
|
- @types/multer
|
||||||
- @types/react
|
- @types/react
|
||||||
- globals
|
- globals
|
||||||
- @nestjs/cli
|
|
||||||
- vitest
|
- vitest
|
||||||
- @types/supertest
|
|
||||||
- @types/passport-jwt
|
- @types/passport-jwt
|
||||||
- 20260526160916_add_ui_texts_and_scientific_terms/migration.sql
|
- 20260526160916_add_ui_texts_and_scientific_terms/migration.sql
|
||||||
- typescript-eslint
|
- typescript-eslint
|
||||||
- typescript
|
- typescript
|
||||||
- prettier
|
|
||||||
- revalidate/route.ts
|
- revalidate/route.ts
|
||||||
- MaskableField.tsx
|
- MaskableField.tsx
|
||||||
- @eslint/js
|
- @eslint/js
|
||||||
- @testing-library/react
|
- @testing-library/react
|
||||||
- eslint-config-prettier
|
|
||||||
- eslint
|
|
||||||
- @types/react-dom
|
- @types/react-dom
|
||||||
- SmsLogQueryDto
|
|
||||||
- eslint-plugin-react-refresh
|
- eslint-plugin-react-refresh
|
||||||
- WikiService
|
|
||||||
- B2BService
|
|
||||||
- track/page.tsx
|
- track/page.tsx
|
||||||
- PodcastPlayerModal.tsx
|
|
||||||
- app.e2e-spec.js
|
- app.e2e-spec.js
|
||||||
- app/page.tsx
|
- app/page.tsx
|
||||||
- bcrypt
|
|
||||||
|
|
||||||
## God Nodes (most connected - your core abstractions)
|
## God Nodes (most connected - your core abstractions)
|
||||||
1. `Roles()` - 106 edges
|
1. `Roles()` - 106 edges
|
||||||
@ -360,27 +338,27 @@
|
|||||||
- 3-file cycle: `frontend/application/lib/services/api.ts -> frontend/application/lib/store/userStore.ts -> frontend/application/lib/services/authService.ts -> frontend/application/lib/services/api.ts`
|
- 3-file cycle: `frontend/application/lib/services/api.ts -> frontend/application/lib/store/userStore.ts -> frontend/application/lib/services/authService.ts -> frontend/application/lib/services/api.ts`
|
||||||
- 4-file cycle: `frontend/application/lib/services/api.ts -> frontend/application/lib/store/userStore.ts -> frontend/application/lib/store/cartStore.ts -> frontend/application/lib/services/orderService.ts -> frontend/application/lib/services/api.ts`
|
- 4-file cycle: `frontend/application/lib/services/api.ts -> frontend/application/lib/store/userStore.ts -> frontend/application/lib/store/cartStore.ts -> frontend/application/lib/services/orderService.ts -> frontend/application/lib/services/api.ts`
|
||||||
|
|
||||||
## Communities (335 total, 122 thin omitted)
|
## Communities (313 total, 102 thin omitted)
|
||||||
|
|
||||||
### Community 0 - "Roles"
|
### Community 0 - "Roles"
|
||||||
Cohesion: 0.24
|
Cohesion: 0.24
|
||||||
Nodes (13): Roles(), PaymentController, ApiBearerAuth, ApiOperation, ApiTags, Body, Controller, Get (+5 more)
|
Nodes (13): Roles(), PaymentController, ApiBearerAuth, ApiOperation, ApiTags, Body, Controller, Get (+5 more)
|
||||||
|
|
||||||
### Community 1 - "app.module.ts"
|
### Community 1 - "app.module.ts"
|
||||||
Cohesion: 0.06
|
Cohesion: 0.07
|
||||||
Nodes (40): B2BModule, Module, BannersModule, Module, CmsModule, Module, SmsModule, Global (+32 more)
|
Nodes (34): B2BModule, Module, BannersModule, Module, CmsModule, Module, SmsModule, Global (+26 more)
|
||||||
|
|
||||||
### Community 2 - "SettingsController"
|
### Community 2 - "SettingsController"
|
||||||
Cohesion: 0.16
|
Cohesion: 0.07
|
||||||
Nodes (15): SettingsController, ApiBearerAuth, ApiOkResponse, ApiOperation, ApiTags, Body, Controller, Delete (+7 more)
|
Nodes (24): SmsLogQueryDto, ApiPropertyOptional, IsIn, IsNumber, IsOptional, IsString, Type, SettingsController (+16 more)
|
||||||
|
|
||||||
### Community 3 - "ProductService"
|
### Community 3 - "productService.ts"
|
||||||
Cohesion: 0.06
|
Cohesion: 0.06
|
||||||
Nodes (34): dynamic, revalidate, DEFAULT_CATEGORIES, dynamic, revalidate, dynamic, revalidate, BlogCategory (+26 more)
|
Nodes (32): dynamic, revalidate, DEFAULT_CATEGORIES, dynamic, revalidate, dynamic, revalidate, BlogCategory (+24 more)
|
||||||
|
|
||||||
### Community 4 - "ProductPage.tsx"
|
### Community 4 - "ProductPage.tsx"
|
||||||
Cohesion: 0.12
|
Cohesion: 0.13
|
||||||
Nodes (16): PLAYBACK_RATES, PodcastInlinePlayer(), PodcastInlinePlayerProps, ProductImageZoomModalProps, CalculatorState, GalleryMediaItem, ICON_MAP, isVideoUrl() (+8 more)
|
Nodes (15): ProductImageZoomModalProps, CalculatorState, GalleryMediaItem, ICON_MAP, isVideoUrl(), ProductImageZoomModal, ProductPage(), ProductReviews (+7 more)
|
||||||
|
|
||||||
### Community 5 - "CmsController"
|
### Community 5 - "CmsController"
|
||||||
Cohesion: 0.09
|
Cohesion: 0.09
|
||||||
@ -388,19 +366,23 @@ Nodes (24): CmsController, ApiBearerAuth, ApiOperation, ApiTags, Body, Controlle
|
|||||||
|
|
||||||
### Community 6 - "tickets.controller.ts"
|
### Community 6 - "tickets.controller.ts"
|
||||||
Cohesion: 0.09
|
Cohesion: 0.09
|
||||||
Nodes (29): AdminUpdateTicketDto, CreateTicketDto, ReplyTicketDto, ApiProperty, ApiPropertyOptional, IsNotEmpty, IsOptional, IsString (+21 more)
|
Nodes (31): AdminUpdateTicketDto, CreateTicketDto, ReplyTicketDto, ApiProperty, ApiPropertyOptional, IsNotEmpty, IsOptional, IsString (+23 more)
|
||||||
|
|
||||||
### Community 7 - "Button.tsx"
|
### Community 7 - "Button.tsx"
|
||||||
Cohesion: 0.12
|
Cohesion: 0.12
|
||||||
Nodes (14): Button(), ButtonProps, ButtonSize, ButtonVariant, Spinner(), FAQ, BlogCommentItem, ProductReview (+6 more)
|
Nodes (14): Button(), ButtonProps, ButtonSize, ButtonVariant, Spinner(), FAQ, BlogCommentItem, ProductReview (+6 more)
|
||||||
|
|
||||||
### Community 9 - "devDependencies"
|
### Community 8 - "reviews.controller.ts"
|
||||||
Cohesion: 0.22
|
Cohesion: 0.13
|
||||||
Nodes (9): devDependencies, prisma, @types/bcryptjs, @types/node, typescript, @types/node, typescript, prisma (+1 more)
|
Nodes (17): CreateReviewDto, ApiProperty, IsInt, IsNotEmpty, IsOptional, IsString, Min, ApiProperty (+9 more)
|
||||||
|
|
||||||
### Community 10 - "CreateReviewDto"
|
### Community 9 - "devDependencies"
|
||||||
Cohesion: 0.09
|
Cohesion: 0.08
|
||||||
Nodes (23): CreateReviewDto, ApiProperty, IsInt, IsNotEmpty, IsOptional, IsString, Min, ReviewsController (+15 more)
|
Nodes (25): devDependencies, eslint, eslint-config-prettier, @eslint/eslintrc, jest, @nestjs/cli, @nestjs/testing, prettier (+17 more)
|
||||||
|
|
||||||
|
### Community 10 - "ReviewsController"
|
||||||
|
Cohesion: 0.13
|
||||||
|
Nodes (15): ReviewsController, ApiBearerAuth, ApiOperation, ApiTags, Body, Controller, Delete, Get (+7 more)
|
||||||
|
|
||||||
### Community 11 - "MediaSelector.tsx"
|
### Community 11 - "MediaSelector.tsx"
|
||||||
Cohesion: 0.06
|
Cohesion: 0.06
|
||||||
@ -414,9 +396,9 @@ Nodes (24): backend, frontend, playwright.config.ts, @playwright/test, tests/**/
|
|||||||
Cohesion: 0.07
|
Cohesion: 0.07
|
||||||
Nodes (26): EnvironmentVariables, IsNotEmpty, IsOptional, IsString, validateEnv(), CustomHttpExceptionFilter, Catch, PrismaExceptionFilter (+18 more)
|
Nodes (26): EnvironmentVariables, IsNotEmpty, IsOptional, IsString, validateEnv(), CustomHttpExceptionFilter, Catch, PrismaExceptionFilter (+18 more)
|
||||||
|
|
||||||
### Community 14 - "userStore.ts"
|
### Community 14 - "lib/services/api.ts"
|
||||||
Cohesion: 0.07
|
Cohesion: 0.09
|
||||||
Nodes (30): AuthModal, B2BPortal, CartDrawer, ClientLayout(), LoginModal, metadata, AuthModal(), AuthModalProps (+22 more)
|
Nodes (16): BlogPostClient(), BlogPostClientProps, ContactInfoItem, Testimonial, api, ApiErrorPayload, BASE_DOMAIN, baseURL (+8 more)
|
||||||
|
|
||||||
### Community 15 - "src/services/api.ts"
|
### Community 15 - "src/services/api.ts"
|
||||||
Cohesion: 0.08
|
Cohesion: 0.08
|
||||||
@ -427,28 +409,28 @@ Cohesion: 0.09
|
|||||||
Nodes (24): DoctorsController, ApiBearerAuth, ApiOperation, ApiTags, Body, Controller, Delete, Get (+16 more)
|
Nodes (24): DoctorsController, ApiBearerAuth, ApiOperation, ApiTags, Body, Controller, Delete, Get (+16 more)
|
||||||
|
|
||||||
### Community 17 - "schema.ts"
|
### Community 17 - "schema.ts"
|
||||||
Cohesion: 0.14
|
Cohesion: 0.13
|
||||||
Nodes (18): B2BPage(), generateMetadata(), ContactPage(), generateMetadata(), generateMetadata(), getInitialVideos(), Videos(), ContactFormClient() (+10 more)
|
Nodes (19): B2BPage(), generateMetadata(), ContactPage(), generateMetadata(), generateMetadata(), getInitialVideos(), Videos(), B2BLandingClient() (+11 more)
|
||||||
|
|
||||||
### Community 18 - "JwtAuthGuard"
|
### Community 18 - "JwtAuthGuard"
|
||||||
Cohesion: 0.16
|
Cohesion: 0.12
|
||||||
Nodes (7): JwtAuthGuard, Injectable, ROLES_KEY, RequestWithUser, RolesGuard, Injectable, UserReqPayload
|
Nodes (11): JwtAuthGuard, Injectable, B2BService, B2BWholesaleOrderItem, Injectable, ROLES_KEY, RequestWithUser, RolesGuard (+3 more)
|
||||||
|
|
||||||
### Community 19 - "ProductsService"
|
### Community 19 - "ProductsController"
|
||||||
Cohesion: 0.10
|
Cohesion: 0.14
|
||||||
Nodes (19): GetProductsDto, ApiPropertyOptional, IsEnum, IsOptional, IsString, ProductsController, ApiOperation, ApiTags (+11 more)
|
Nodes (10): ProductsController, ApiOperation, ApiTags, Body, Controller, Get, Param, Patch (+2 more)
|
||||||
|
|
||||||
### Community 20 - "CreateVideoDto"
|
### Community 20 - "CreateVideoDto"
|
||||||
Cohesion: 0.09
|
Cohesion: 0.07
|
||||||
Nodes (24): CreateVideoDto, ApiProperty, ApiPropertyOptional, IsBoolean, IsNotEmpty, IsOptional, IsString, UpdateVideoDto (+16 more)
|
Nodes (32): CreateVideoDto, ApiProperty, ApiPropertyOptional, IsBoolean, IsNotEmpty, IsOptional, IsString, UpdateVideoDto (+24 more)
|
||||||
|
|
||||||
### Community 21 - "ReportsController"
|
### Community 21 - "admin.module.ts"
|
||||||
Cohesion: 0.14
|
Cohesion: 0.06
|
||||||
Nodes (11): ReportsController, ApiBearerAuth, ApiOperation, ApiQuery, ApiTags, Controller, Get, Query (+3 more)
|
Nodes (20): AdminModule, Module, MediaService, Injectable, PetsService, Injectable, ReportsController, ApiBearerAuth (+12 more)
|
||||||
|
|
||||||
### Community 22 - "components/Skeleton.tsx"
|
### Community 22 - "RevalidationService"
|
||||||
Cohesion: 0.21
|
Cohesion: 0.15
|
||||||
Nodes (5): OrderRowSkeleton(), PetProfileSkeleton(), ProductCardSkeleton(), Skeleton(), SkeletonProps
|
Nodes (5): RevalidationModule, Global, Module, RevalidationService, Injectable
|
||||||
|
|
||||||
### Community 23 - "MenuService"
|
### Community 23 - "MenuService"
|
||||||
Cohesion: 0.12
|
Cohesion: 0.12
|
||||||
@ -491,7 +473,7 @@ Cohesion: 0.06
|
|||||||
Nodes (24): App(), Props, RouteErrorBoundary, State, HeroBanner, VetTestimonial, BestSellerItem, CategoryDistItem (+16 more)
|
Nodes (24): App(), Props, RouteErrorBoundary, State, HeroBanner, VetTestimonial, BestSellerItem, CategoryDistItem (+16 more)
|
||||||
|
|
||||||
### Community 33 - "WholesaleApplyDto"
|
### Community 33 - "WholesaleApplyDto"
|
||||||
Cohesion: 0.10
|
Cohesion: 0.11
|
||||||
Nodes (20): ApiProperty, ApiPropertyOptional, IsNotEmpty, IsOptional, IsString, WholesaleApplyDto, ApiBearerAuth, ApiOperation (+12 more)
|
Nodes (20): ApiProperty, ApiPropertyOptional, IsNotEmpty, IsOptional, IsString, WholesaleApplyDto, ApiBearerAuth, ApiOperation (+12 more)
|
||||||
|
|
||||||
### Community 34 - "B2BController"
|
### Community 34 - "B2BController"
|
||||||
@ -499,8 +481,8 @@ Cohesion: 0.14
|
|||||||
Nodes (13): B2BController, ApiBearerAuth, ApiOperation, ApiTags, Body, Controller, Get, Param (+5 more)
|
Nodes (13): B2BController, ApiBearerAuth, ApiOperation, ApiTags, Body, Controller, Get, Param (+5 more)
|
||||||
|
|
||||||
### Community 35 - "AuthController"
|
### Community 35 - "AuthController"
|
||||||
Cohesion: 0.25
|
Cohesion: 0.08
|
||||||
Nodes (13): AuthController, ApiBadRequestResponse, ApiBearerAuth, ApiOkResponse, ApiOperation, ApiTags, Body, Controller (+5 more)
|
Nodes (32): AuthController, ApiBadRequestResponse, ApiBearerAuth, ApiOkResponse, ApiOperation, ApiTags, Body, Controller (+24 more)
|
||||||
|
|
||||||
### Community 36 - "FaqService"
|
### Community 36 - "FaqService"
|
||||||
Cohesion: 0.14
|
Cohesion: 0.14
|
||||||
@ -551,8 +533,8 @@ Cohesion: 0.13
|
|||||||
Nodes (12): IngredientsController, ApiBearerAuth, ApiOperation, ApiTags, Body, Controller, Delete, Get (+4 more)
|
Nodes (12): IngredientsController, ApiBearerAuth, ApiOperation, ApiTags, Body, Controller, Delete, Get (+4 more)
|
||||||
|
|
||||||
### Community 48 - "UsersController"
|
### Community 48 - "UsersController"
|
||||||
Cohesion: 0.21
|
Cohesion: 0.08
|
||||||
Nodes (16): ApiBadRequestResponse, ApiBearerAuth, ApiCreatedResponse, ApiOkResponse, ApiOperation, ApiTags, Body, Controller (+8 more)
|
Nodes (29): AddressDto, ApiProperty, ApiPropertyOptional, IsBoolean, IsNotEmpty, IsOptional, IsString, ApiPropertyOptional (+21 more)
|
||||||
|
|
||||||
### Community 49 - "devDependencies"
|
### Community 49 - "devDependencies"
|
||||||
Cohesion: 0.11
|
Cohesion: 0.11
|
||||||
@ -566,9 +548,9 @@ Nodes (15): eslint-config-next, devDependencies, eslint, eslint-config-next, jsd
|
|||||||
Cohesion: 0.14
|
Cohesion: 0.14
|
||||||
Nodes (16): BlogsController, ApiBearerAuth, ApiOperation, ApiQuery, ApiTags, Body, Controller, Delete (+8 more)
|
Nodes (16): BlogsController, ApiBearerAuth, ApiOperation, ApiQuery, ApiTags, Body, Controller, Delete (+8 more)
|
||||||
|
|
||||||
### Community 52 - "PrescriptionsService"
|
### Community 52 - "PrescriptionsController"
|
||||||
Cohesion: 0.14
|
Cohesion: 0.16
|
||||||
Nodes (14): PrescriptionsController, ApiBearerAuth, ApiOperation, ApiTags, Body, Controller, Get, Param (+6 more)
|
Nodes (12): PrescriptionsController, ApiBearerAuth, ApiOperation, ApiTags, Body, Controller, Get, Param (+4 more)
|
||||||
|
|
||||||
### Community 53 - "SmartAdvisorService"
|
### Community 53 - "SmartAdvisorService"
|
||||||
Cohesion: 0.13
|
Cohesion: 0.13
|
||||||
@ -590,45 +572,41 @@ Nodes (15): Skeleton(), MonitoringStats, getPaymentMethodLabel(), Order, ORDER_S
|
|||||||
Cohesion: 0.09
|
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)
|
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 - "ContactController"
|
### Community 58 - "ContactService"
|
||||||
Cohesion: 0.13
|
Cohesion: 0.13
|
||||||
Nodes (10): ContactController, Body, Controller, Get, Param, Post, Put, Query (+2 more)
|
Nodes (12): ContactController, Body, Controller, Get, Param, Post, Put, Query (+4 more)
|
||||||
|
|
||||||
### Community 59 - "compilerOptions"
|
### Community 59 - "compilerOptions"
|
||||||
Cohesion: 0.06
|
Cohesion: 0.06
|
||||||
Nodes (30): compilerOptions, allowSyntheticDefaultImports, baseUrl, declaration, emitDecoratorMetadata, esModuleInterop, experimentalDecorators, forceConsistentCasingInFileNames (+22 more)
|
Nodes (30): compilerOptions, allowSyntheticDefaultImports, baseUrl, declaration, emitDecoratorMetadata, esModuleInterop, experimentalDecorators, forceConsistentCasingInFileNames (+22 more)
|
||||||
|
|
||||||
### Community 60 - "PaymentService"
|
### Community 61 - "PetProfile.tsx"
|
||||||
Cohesion: 0.11
|
Cohesion: 0.07
|
||||||
Nodes (9): AdminTransactionFilterDto, ApiPropertyOptional, IsIn, IsNumber, IsOptional, IsString, Type, PaymentService (+1 more)
|
Nodes (24): metadata, FeaturedProducts(), ProductCard(), Header(), OrderSuccess(), PrescriptionUploadModal(), PrescriptionUploadModalProps, OrderRowSkeleton() (+16 more)
|
||||||
|
|
||||||
### Community 61 - "usePetStore"
|
### Community 62 - "SmsService"
|
||||||
Cohesion: 0.14
|
Cohesion: 0.12
|
||||||
Nodes (14): FeaturedProducts(), ProductCard(), OrderSuccess(), PrescriptionUploadModal(), PrescriptionUploadModalProps, SearchResultsPage(), mockProducts, mockPush (+6 more)
|
Nodes (4): SmsService, Injectable, PrescriptionsService, Injectable
|
||||||
|
|
||||||
### Community 63 - "dependencies"
|
### Community 63 - "dependencies"
|
||||||
Cohesion: 0.09
|
Cohesion: 0.05
|
||||||
Nodes (23): dependencies, bcryptjs, class-validator, compression, ioredis, @nestjs/common, @nestjs/passport, @nestjs/platform-express (+15 more)
|
Nodes (43): dependencies, bcrypt, bcryptjs, class-transformer, class-validator, compression, helmet, ioredis (+35 more)
|
||||||
|
|
||||||
### Community 64 - "compilerOptions"
|
### Community 64 - "compilerOptions"
|
||||||
Cohesion: 0.10
|
Cohesion: 0.10
|
||||||
Nodes (20): compilerOptions, allowImportingTsExtensions, erasableSyntaxOnly, lib, module, moduleDetection, moduleResolution, noEmit (+12 more)
|
Nodes (20): compilerOptions, allowImportingTsExtensions, erasableSyntaxOnly, lib, module, moduleDetection, moduleResolution, noEmit (+12 more)
|
||||||
|
|
||||||
### Community 65 - "BlogsService"
|
|
||||||
Cohesion: 0.06
|
|
||||||
Nodes (14): BlogsService, Injectable, RevalidationModule, Global, Module, RevalidationService, Injectable, ApiProperty (+6 more)
|
|
||||||
|
|
||||||
### Community 66 - "ApiOperation"
|
### Community 66 - "ApiOperation"
|
||||||
Cohesion: 0.12
|
Cohesion: 0.12
|
||||||
Nodes (8): ApiOperation, ApiQuery, Get, Query, AdminQueryDto, ApiPropertyOptional, IsOptional, IsString
|
Nodes (8): ApiOperation, ApiQuery, Get, Query, AdminQueryDto, ApiPropertyOptional, IsOptional, IsString
|
||||||
|
|
||||||
### Community 67 - "PetsController"
|
### Community 67 - "PetsController"
|
||||||
Cohesion: 0.11
|
Cohesion: 0.15
|
||||||
Nodes (13): PetsController, ApiBearerAuth, ApiOperation, ApiQuery, ApiTags, Controller, Delete, Get (+5 more)
|
Nodes (11): PetsController, ApiBearerAuth, ApiOperation, ApiQuery, ApiTags, Controller, Delete, Get (+3 more)
|
||||||
|
|
||||||
### Community 68 - "lib/services/api.ts"
|
### Community 68 - "UserDashboard.tsx"
|
||||||
Cohesion: 0.09
|
Cohesion: 0.11
|
||||||
Nodes (31): VerifyContent(), B2BPortal(), BlogPostClientProps, BlogPost, BlogPreviewSection(), ContactInfoItem, HeaderButton(), HeaderButtonProps (+23 more)
|
Nodes (34): LoginModal, HomeClient(), VerifyContent(), AddressFormData, AddressModal(), AddressModalProps, normalizeDigits(), validateAddressForm() (+26 more)
|
||||||
|
|
||||||
### Community 69 - "Required Review Group Closures"
|
### Community 69 - "Required Review Group Closures"
|
||||||
Cohesion: 0.10
|
Cohesion: 0.10
|
||||||
@ -639,8 +617,8 @@ Cohesion: 0.08
|
|||||||
Nodes (23): compilerOptions, allowImportingTsExtensions, erasableSyntaxOnly, jsx, lib, module, moduleDetection, moduleResolution (+15 more)
|
Nodes (23): compilerOptions, allowImportingTsExtensions, erasableSyntaxOnly, jsx, lib, module, moduleDetection, moduleResolution (+15 more)
|
||||||
|
|
||||||
### Community 71 - "getPageMetadata"
|
### Community 71 - "getPageMetadata"
|
||||||
Cohesion: 0.09
|
Cohesion: 0.08
|
||||||
Nodes (14): generateMetadata(), CatalogClient(), generateMetadata(), generateMetadata(), generateMetadata(), generateMetadata(), generateMetadata(), generateMetadata() (+6 more)
|
Nodes (17): generateMetadata(), CatalogClient(), generateMetadata(), generateMetadata(), generateMetadata(), generateMetadata(), generateMetadata(), generateMetadata() (+9 more)
|
||||||
|
|
||||||
### Community 72 - "Operational Rules & Boundaries"
|
### Community 72 - "Operational Rules & Boundaries"
|
||||||
Cohesion: 0.11
|
Cohesion: 0.11
|
||||||
@ -694,6 +672,10 @@ Nodes (21): dependencies, axios, lucide-react, react, react-dom, react-hot-toast
|
|||||||
Cohesion: 0.12
|
Cohesion: 0.12
|
||||||
Nodes (16): 1. Active Secret Scanning (All Modified Files), 2. Docker Container Verification (if Dockerfile exists), 3. CI/CD Basic Check (if `.github/workflows/` exists), 4. Failure Routing Protocol, 5. Forbidden Actions, ENFORCE MODE — Normal Operation, Expected JSON Output Schema, Operational Rules & Boundaries (+8 more)
|
Nodes (16): 1. Active Secret Scanning (All Modified Files), 2. Docker Container Verification (if Dockerfile exists), 3. CI/CD Basic Check (if `.github/workflows/` exists), 4. Failure Routing Protocol, 5. Forbidden Actions, ENFORCE MODE — Normal Operation, Expected JSON Output Schema, Operational Rules & Boundaries (+8 more)
|
||||||
|
|
||||||
|
### Community 85 - "useSettingsStore"
|
||||||
|
Cohesion: 0.09
|
||||||
|
Nodes (24): AuthModal, CartDrawer, ClientLayout(), BrandLogo(), BrandLogoProps, EnamadBadge(), FAQItem, FAQSection() (+16 more)
|
||||||
|
|
||||||
### Community 86 - "zibal.service.ts"
|
### Community 86 - "zibal.service.ts"
|
||||||
Cohesion: 0.16
|
Cohesion: 0.16
|
||||||
Nodes (9): GatewayHealthResult, IPaymentGateway, PaymentInquiryResult, PaymentRequestOptions, PaymentRequestResult, PaymentVerifyResult, ZibalInquiryResponse, ZibalRequestResponse (+1 more)
|
Nodes (9): GatewayHealthResult, IPaymentGateway, PaymentInquiryResult, PaymentRequestOptions, PaymentRequestResult, PaymentVerifyResult, ZibalInquiryResponse, ZibalRequestResponse (+1 more)
|
||||||
@ -710,29 +692,29 @@ Nodes (8): CreateEBankCheckoutDto, ApiProperty, ApiPropertyOptional, IsNotEmpty,
|
|||||||
Cohesion: 0.17
|
Cohesion: 0.17
|
||||||
Nodes (12): prisma, main(), prisma, determineSuitableFor(), findOrCreateCategory(), getProductImageUrl(), main(), parseSize() (+4 more)
|
Nodes (12): prisma, main(), prisma, determineSuitableFor(), findOrCreateCategory(), getProductImageUrl(), main(), parseSize() (+4 more)
|
||||||
|
|
||||||
### Community 90 - "users.service.ts"
|
### Community 90 - "ProductsService"
|
||||||
Cohesion: 0.13
|
Cohesion: 0.21
|
||||||
Nodes (14): AddressDto, ApiProperty, ApiPropertyOptional, IsBoolean, IsNotEmpty, IsOptional, IsString, ApiPropertyOptional (+6 more)
|
Nodes (9): GetProductsDto, ApiPropertyOptional, IsEnum, IsOptional, IsString, ProductsModule, Module, ProductsService (+1 more)
|
||||||
|
|
||||||
### Community 91 - "Reconciled Audit Roles & Assignments"
|
### Community 91 - "Reconciled Audit Roles & Assignments"
|
||||||
Cohesion: 0.12
|
Cohesion: 0.12
|
||||||
Nodes (15): 10. Documentation Engineer, 1. Lead Architect / Orchestrator, 2. React / Vite Storefront Auditor, 3. NestJS Backend Auditor, 4. Admin Features Auditor, 5. Database & Data Integrity Auditor, 6. Security Auditor, 7. TypeScript & Code Quality Auditor (+7 more)
|
Nodes (15): 10. Documentation Engineer, 1. Lead Architect / Orchestrator, 2. React / Vite Storefront Auditor, 3. NestJS Backend Auditor, 4. Admin Features Auditor, 5. Database & Data Integrity Auditor, 6. Security Auditor, 7. TypeScript & Code Quality Auditor (+7 more)
|
||||||
|
|
||||||
### Community 92 - "OrdersService"
|
### Community 92 - "OrdersService"
|
||||||
Cohesion: 0.06
|
Cohesion: 0.07
|
||||||
Nodes (35): CreateOrderDto, OrderItemDto, ApiProperty, ApiPropertyOptional, IsArray, IsNotEmpty, IsNumber, IsOptional (+27 more)
|
Nodes (35): CreateOrderDto, OrderItemDto, ApiProperty, ApiPropertyOptional, IsArray, IsNotEmpty, IsNumber, IsOptional (+27 more)
|
||||||
|
|
||||||
### Community 93 - "useSettingsStore"
|
### Community 93 - "HomeClient.tsx"
|
||||||
Cohesion: 0.08
|
Cohesion: 0.11
|
||||||
Nodes (33): HomeClient(), HomeClientProps, ArchivePage(), ArchiveProductCard(), CATEGORY_MAP, ICON_MAP, B2BLandingClient(), BannerPlacement() (+25 more)
|
Nodes (19): HomeClientProps, ArchiveProductCard(), CATEGORY_MAP, ICON_MAP, BannerPlacement(), BannerPlacementProps, BlogPreviewSection(), Hero() (+11 more)
|
||||||
|
|
||||||
### Community 94 - "Phase 3.1 — Human Review Preparation and Master Backlog Critique"
|
### Community 94 - "Phase 3.1 — Human Review Preparation and Master Backlog Critique"
|
||||||
Cohesion: 0.13
|
Cohesion: 0.13
|
||||||
Nodes (14): 10. Dependency & Wave Adjustments, 11. Acceptance Criteria Refinements, 12. Business and Product Decision Classification, 13. Final Recommended Backlog Summary, 1. Executive Assessment, 2. Findings That Require No Change, 3. Findings Requiring Task Refinements, 4. Tasks Requiring Splitting (+6 more)
|
Nodes (14): 10. Dependency & Wave Adjustments, 11. Acceptance Criteria Refinements, 12. Business and Product Decision Classification, 13. Final Recommended Backlog Summary, 1. Executive Assessment, 2. Findings That Require No Change, 3. Findings Requiring Task Refinements, 4. Tasks Requiring Splitting (+6 more)
|
||||||
|
|
||||||
### Community 95 - "wiki/[slug]/page.tsx"
|
### Community 95 - "blog/[slug]/page.tsx"
|
||||||
Cohesion: 0.19
|
Cohesion: 0.29
|
||||||
Nodes (16): BlogPostPage(), generateMetadata(), getBlog(), revalidate, safeIso(), safeLocalDate(), generateMetadata(), revalidate (+8 more)
|
Nodes (10): BlogPostPage(), generateMetadata(), getBlog(), revalidate, safeIso(), safeLocalDate(), generateMetadata(), revalidate (+2 more)
|
||||||
|
|
||||||
### Community 96 - "compilerOptions"
|
### Community 96 - "compilerOptions"
|
||||||
Cohesion: 0.06
|
Cohesion: 0.06
|
||||||
@ -747,8 +729,8 @@ Cohesion: 0.13
|
|||||||
Nodes (15): scripts, build, build:nest, docs:generate, lint, seo:backfill, start, start:debug (+7 more)
|
Nodes (15): scripts, build, build:nest, docs:generate, lint, seo:backfill, start, start:debug (+7 more)
|
||||||
|
|
||||||
### Community 99 - "BlogsController"
|
### Community 99 - "BlogsController"
|
||||||
Cohesion: 0.18
|
Cohesion: 0.10
|
||||||
Nodes (12): BlogsController, ApiNotFoundResponse, ApiOkResponse, ApiOperation, ApiTags, Body, Controller, Get (+4 more)
|
Nodes (14): BlogsController, ApiNotFoundResponse, ApiOkResponse, ApiOperation, ApiTags, Body, Controller, Get (+6 more)
|
||||||
|
|
||||||
### Community 100 - "Deep Audit Summary Report"
|
### Community 100 - "Deep Audit Summary Report"
|
||||||
Cohesion: 0.14
|
Cohesion: 0.14
|
||||||
@ -775,16 +757,16 @@ Cohesion: 0.17
|
|||||||
Nodes (11): 1. Detect Test Runner from Tech Stack, 2. Execution Output Capture (Mandatory), 3. Acceptance Criteria Verification, 4. Failure Routing Protocol, 5. Success Routing Protocol, 6. Forbidden Actions, Expected JSON Output Schema, Operational Rules & Boundaries (+3 more)
|
Nodes (11): 1. Detect Test Runner from Tech Stack, 2. Execution Output Capture (Mandatory), 3. Acceptance Criteria Verification, 4. Failure Routing Protocol, 5. Success Routing Protocol, 6. Forbidden Actions, Expected JSON Output Schema, Operational Rules & Boundaries (+3 more)
|
||||||
|
|
||||||
### Community 106 - "auth.service.ts"
|
### Community 106 - "auth.service.ts"
|
||||||
Cohesion: 0.07
|
Cohesion: 0.06
|
||||||
Nodes (15): ApiExcludeController, AppModule, Module, AdminLoginInput, LoginInput, RegisterInput, MetricsController, Controller (+7 more)
|
Nodes (24): AppModule, Module, AdminLoginInput, AuthService, LoginInput, RegisterInput, Injectable, SendOtpDto (+16 more)
|
||||||
|
|
||||||
### Community 107 - "PaginationDto"
|
### Community 107 - "PaginationDto"
|
||||||
Cohesion: 0.07
|
Cohesion: 0.11
|
||||||
Nodes (26): AdminModule, Module, MediaService, Injectable, SslCertInfo, BlogsModule, Module, BlogFilterDto (+18 more)
|
Nodes (16): BlogsModule, Module, BlogFilterDto, PaginationDto, SortOrder, ApiPropertyOptional, IsEnum, IsInt (+8 more)
|
||||||
|
|
||||||
### Community 108 - "PrismaService"
|
### Community 108 - "PrismaService"
|
||||||
Cohesion: 0.05
|
Cohesion: 0.07
|
||||||
Nodes (29): CategoryQuery, PetQuery, WikiQuery, BannersService, Injectable, MeliPayamakPattern, MeliPayamakResponse, SendPatternSmsOptions (+21 more)
|
Nodes (21): CategoryQuery, PetQuery, WikiQuery, BannersService, Injectable, MeliPayamakPattern, MeliPayamakResponse, SendPatternSmsOptions (+13 more)
|
||||||
|
|
||||||
### Community 109 - "1. Summary of Integrity Repairs Performed"
|
### Community 109 - "1. Summary of Integrity Repairs Performed"
|
||||||
Cohesion: 0.17
|
Cohesion: 0.17
|
||||||
@ -802,9 +784,9 @@ Nodes (10): 1. Mark Active Task as Complete, 2. Documentation Updates, 3. Dynami
|
|||||||
Cohesion: 0.18
|
Cohesion: 0.18
|
||||||
Nodes (10): 1. Pre-Deployment Checklist, 2. Build Verification, 3. Deployment Strategy (Based on Target), 4. Post-Deployment Health Check, 5. Forbidden Actions, Expected JSON Output Schema, Operational Rules & Boundaries, Required Output Artifacts (What files to write/update) (+2 more)
|
Nodes (10): 1. Pre-Deployment Checklist, 2. Build Verification, 3. Deployment Strategy (Based on Target), 4. Post-Deployment Health Check, 5. Forbidden Actions, Expected JSON Output Schema, Operational Rules & Boundaries, Required Output Artifacts (What files to write/update) (+2 more)
|
||||||
|
|
||||||
### Community 113 - "RegisterDto"
|
### Community 113 - "AdminTransactionFilterDto"
|
||||||
Cohesion: 0.22
|
Cohesion: 0.25
|
||||||
Nodes (8): RegisterDto, ApiProperty, ApiPropertyOptional, IsEmail, IsNotEmpty, IsOptional, IsString, MinLength
|
Nodes (7): AdminTransactionFilterDto, ApiPropertyOptional, IsIn, IsNumber, IsOptional, IsString, Type
|
||||||
|
|
||||||
### Community 114 - "AppService"
|
### Community 114 - "AppService"
|
||||||
Cohesion: 0.29
|
Cohesion: 0.29
|
||||||
@ -842,9 +824,9 @@ Nodes (9): Compile and run the project, Deployment, Description, License, Projec
|
|||||||
Cohesion: 0.14
|
Cohesion: 0.14
|
||||||
Nodes (6): AdminController, ApiBearerAuth, ApiTags, Controller, Put, UseGuards
|
Nodes (6): AdminController, ApiBearerAuth, ApiTags, Controller, Put, UseGuards
|
||||||
|
|
||||||
### Community 123 - "AuthService"
|
### Community 123 - "MetricsController"
|
||||||
Cohesion: 0.19
|
Cohesion: 0.29
|
||||||
Nodes (3): AuthService, Injectable, normalizeMobile()
|
Nodes (5): ApiExcludeController, MetricsController, Controller, Get, Res
|
||||||
|
|
||||||
### Community 124 - "Repository Map"
|
### Community 124 - "Repository Map"
|
||||||
Cohesion: 0.20
|
Cohesion: 0.20
|
||||||
@ -862,9 +844,9 @@ Nodes (9): name, private, scripts, build, dev, lint, preview, type (+1 more)
|
|||||||
Cohesion: 0.20
|
Cohesion: 0.20
|
||||||
Nodes (9): Arch Linux, Contributors, Install, Known problems for variable version, License, Sahel-Font, To Do (variable), طریقه استفاده از نسخه متغیر variable (+1 more)
|
Nodes (9): Arch Linux, Contributors, Install, Known problems for variable version, License, Sahel-Font, To Do (variable), طریقه استفاده از نسخه متغیر variable (+1 more)
|
||||||
|
|
||||||
### Community 129 - "auth.controller.ts"
|
### Community 129 - "wiki/[slug]/page.tsx"
|
||||||
Cohesion: 0.09
|
Cohesion: 0.60
|
||||||
Nodes (22): AdminLoginDto, ApiProperty, IsEmail, IsNotEmpty, IsString, MinLength, LoginDto, ApiProperty (+14 more)
|
Nodes (5): generateMetadata(), getRelatedProducts(), getWikiTerm(), WikiTermPage(), generateMedicalWebPageSchema()
|
||||||
|
|
||||||
### Community 130 - "Sahel-Font"
|
### Community 130 - "Sahel-Font"
|
||||||
Cohesion: 0.20
|
Cohesion: 0.20
|
||||||
@ -922,9 +904,9 @@ Nodes (7): backend, distMainPath, fs, http, path, { spawn, execSync }, waitForBa
|
|||||||
Cohesion: 0.25
|
Cohesion: 0.25
|
||||||
Nodes (6): app_module_1, core_1, fs, path, swagger_1, yaml
|
Nodes (6): app_module_1, core_1, fs, path, swagger_1, yaml
|
||||||
|
|
||||||
### Community 144 - "VetGallery.tsx"
|
### Community 144 - "SafeImage.tsx"
|
||||||
Cohesion: 0.16
|
Cohesion: 0.10
|
||||||
Nodes (12): BackButton(), BackButtonProps, VideoModalPlayer, DisplayVideoItem, FALLBACK_VIDEOS, TestimonialItem, VetGallery(), PLAYBACK_RATES (+4 more)
|
Nodes (23): BackButton(), BackButtonProps, BlogPost, PLAYBACK_RATES, PodcastInlinePlayer(), PodcastInlinePlayerProps, PLAYBACK_RATES, PodcastPlayerModal() (+15 more)
|
||||||
|
|
||||||
### Community 145 - "ProductDto"
|
### Community 145 - "ProductDto"
|
||||||
Cohesion: 0.22
|
Cohesion: 0.22
|
||||||
@ -950,9 +932,13 @@ Nodes (7): PatternItem, SmsConfigState, SmsLogItem, SmsLogStats, SmsSettingsPage
|
|||||||
Cohesion: 0.29
|
Cohesion: 0.29
|
||||||
Nodes (6): 1. Executive Vision, 2. Target Audience, 3. Functional Requirements, 4. Non-Functional Requirements (Performance, Security), 5. Epic / Feature Breakdown, Product Requirement Document (PRD)
|
Nodes (6): 1. Executive Vision, 2. Target Audience, 3. Functional Requirements, 4. Non-Functional Requirements (Performance, Security), 5. Epic / Feature Breakdown, Product Requirement Document (PRD)
|
||||||
|
|
||||||
|
### Community 151 - "zibal-ebank.service.ts"
|
||||||
|
Cohesion: 0.40
|
||||||
|
Nodes (4): EBankCheckoutListFilter, EBankCheckoutOptions, EBankIdentifiedPaymentFilter, EBankStatementFilter
|
||||||
|
|
||||||
### Community 152 - "useCartStore"
|
### Community 152 - "useCartStore"
|
||||||
Cohesion: 0.12
|
Cohesion: 0.11
|
||||||
Nodes (12): CartDrawer(), DeleteConfirmModal(), DeleteConfirmModalProps, Header(), mockProduct, ApiErr, Order, OrderItem (+4 more)
|
Nodes (15): B2BPortal, B2BPortal(), CartDrawer(), DeleteConfirmModal(), DeleteConfirmModalProps, mockProduct, ApiErr, Order (+7 more)
|
||||||
|
|
||||||
### Community 153 - "exclude"
|
### Community 153 - "exclude"
|
||||||
Cohesion: 0.22
|
Cohesion: 0.22
|
||||||
@ -1034,9 +1020,9 @@ Nodes (4): evidenceList, ledger, mandatoryMap, mandatoryScope
|
|||||||
Cohesion: 0.40
|
Cohesion: 0.40
|
||||||
Nodes (4): activeFiles, errors, validationOutput, warnings
|
Nodes (4): activeFiles, errors, validationOutput, warnings
|
||||||
|
|
||||||
### Community 177 - "auth.module.ts"
|
### Community 177 - "UsersService"
|
||||||
Cohesion: 0.17
|
Cohesion: 0.12
|
||||||
Nodes (10): DEFAULT_JWT_REFRESH_SECRET, DEFAULT_JWT_SECRET, getJwtSecret(), AuthModule, Module, JwtPayload, JwtStrategy, Injectable (+2 more)
|
Nodes (13): DEFAULT_JWT_REFRESH_SECRET, DEFAULT_JWT_SECRET, getJwtSecret(), AuthModule, Module, JwtPayload, JwtStrategy, Injectable (+5 more)
|
||||||
|
|
||||||
### Community 178 - "نقشه جامع پوشش تستهای سرتاسری (E2E Test Coverage Map) — پروژه Canina"
|
### Community 178 - "نقشه جامع پوشش تستهای سرتاسری (E2E Test Coverage Map) — پروژه Canina"
|
||||||
Cohesion: 0.33
|
Cohesion: 0.33
|
||||||
@ -1058,10 +1044,6 @@ Nodes (3): Architectural Overview, Critical Review Findings & Required Enhanceme
|
|||||||
Cohesion: 0.50
|
Cohesion: 0.50
|
||||||
Nodes (3): Overview & Content Foundation, SEO & Content Requirements, 🚀 SEO & Content Strategy Review (12_seo_content)
|
Nodes (3): Overview & Content Foundation, SEO & Content Requirements, 🚀 SEO & Content Strategy Review (12_seo_content)
|
||||||
|
|
||||||
### Community 184 - "CheckoutPage.tsx"
|
|
||||||
Cohesion: 0.30
|
|
||||||
Nodes (11): AddressFormData, AddressModal(), AddressModalProps, normalizeDigits(), validateAddressForm(), CheckoutPage(), SearchableSelect(), SearchableSelectProps (+3 more)
|
|
||||||
|
|
||||||
### Community 191 - "graphify reference: add a URL and watch a folder"
|
### Community 191 - "graphify reference: add a URL and watch a folder"
|
||||||
Cohesion: 0.50
|
Cohesion: 0.50
|
||||||
Nodes (3): For /graphify add, For --watch, graphify reference: add a URL and watch a folder
|
Nodes (3): For /graphify add, For --watch, graphify reference: add a URL and watch a folder
|
||||||
@ -1114,18 +1096,6 @@ Nodes (10): ApiPropertyOptional, IsOptional, IsString, ZibalCallbackQueryDto, Ap
|
|||||||
Cohesion: 0.83
|
Cohesion: 0.83
|
||||||
Nodes (3): GET(), handleRevalidate(), POST()
|
Nodes (3): GET(), handleRevalidate(), POST()
|
||||||
|
|
||||||
### Community 326 - "SmsLogQueryDto"
|
|
||||||
Cohesion: 0.25
|
|
||||||
Nodes (7): SmsLogQueryDto, ApiPropertyOptional, IsIn, IsNumber, IsOptional, IsString, Type
|
|
||||||
|
|
||||||
### Community 329 - "B2BService"
|
|
||||||
Cohesion: 0.48
|
|
||||||
Nodes (3): B2BService, B2BWholesaleOrderItem, Injectable
|
|
||||||
|
|
||||||
### Community 331 - "PodcastPlayerModal.tsx"
|
|
||||||
Cohesion: 0.40
|
|
||||||
Nodes (3): PLAYBACK_RATES, PodcastPlayerModal(), PodcastPlayerModalProps
|
|
||||||
|
|
||||||
### Community 332 - "app.e2e-spec.js"
|
### Community 332 - "app.e2e-spec.js"
|
||||||
Cohesion: 0.50
|
Cohesion: 0.50
|
||||||
Nodes (3): app_module_1, supertest_1, testing_1
|
Nodes (3): app_module_1, supertest_1, testing_1
|
||||||
@ -1135,24 +1105,24 @@ Cohesion: 0.67
|
|||||||
Nodes (3): generateMetadata(), getHomeData(), Home()
|
Nodes (3): generateMetadata(), getHomeData(), Home()
|
||||||
|
|
||||||
## Knowledge Gaps
|
## Knowledge Gaps
|
||||||
- **1341 isolated node(s):** `$schema`, `collection`, `sourceRoot`, `deleteOutDir`, `name` (+1336 more)
|
- **1343 isolated node(s):** `$schema`, `collection`, `sourceRoot`, `deleteOutDir`, `name` (+1338 more)
|
||||||
These have ≤1 connection - possible missing edges or undocumented components.
|
These have ≤1 connection - possible missing edges or undocumented components.
|
||||||
- **122 thin communities (<3 nodes) omitted from report** — run `graphify query` to explore isolated nodes.
|
- **102 thin communities (<3 nodes) omitted from report** — run `graphify query` to explore isolated nodes.
|
||||||
|
|
||||||
## Suggested Questions
|
## Suggested Questions
|
||||||
_Questions this graph is uniquely positioned to answer:_
|
_Questions this graph is uniquely positioned to answer:_
|
||||||
|
|
||||||
- **Why does `ApiResponse` connect `src/services/api.ts` to `BlogsController`, `AuthController`, `WikiController`, `PetsController`, `UsersController`, `HomeController`, `ProductsService`, `OrdersService`?**
|
- **Why does `ApiResponse` connect `src/services/api.ts` to `BlogsController`, `AuthController`, `WikiController`, `PetsController`, `UsersController`, `HomeController`, `ProductsController`, `OrdersService`?**
|
||||||
_High betweenness centrality (0.080) - this node is a cross-community bridge._
|
_High betweenness centrality (0.080) - this node is a cross-community bridge._
|
||||||
- **Why does `Roles()` connect `Roles` to `SettingsController`, `CmsController`, `tickets.controller.ts`, `CreateReviewDto`, `JwtAuthGuard`, `ProductsService`, `MenuService`, `WholesaleApplyDto`, `B2BController`, `FaqService`, `SslController`, `BannersController`, `TestimonialsController`, `IngredientsController`, `PrescriptionsService`, `SmartAdvisorService`, `ContactController`, `BlogsService`, `B2BService`?**
|
- **Why does `Roles()` connect `Roles` to `SettingsController`, `CmsController`, `tickets.controller.ts`, `reviews.controller.ts`, `ReviewsController`, `JwtAuthGuard`, `ProductsController`, `MenuService`, `WholesaleApplyDto`, `B2BController`, `FaqService`, `SslController`, `BannersController`, `TestimonialsController`, `IngredientsController`, `PrescriptionsController`, `SmartAdvisorService`, `ContactService`, `ProductsService`?**
|
||||||
_High betweenness centrality (0.063) - this node is a cross-community bridge._
|
_High betweenness centrality (0.063) - this node is a cross-community bridge._
|
||||||
- **Why does `JwtAuthGuard` connect `JwtAuthGuard` to `auth.controller.ts`, `BlogsService`, `CmsController`, `tickets.controller.ts`, `B2BService`, `PaginationDto`, `PetsController`, `ProductsService`, `admin.service.ts`, `ReportsController`, `users.service.ts`, `OrdersService`?**
|
- **Why does `JwtAuthGuard` connect `JwtAuthGuard` to `app.module.ts`, `CmsController`, `tickets.controller.ts`, `reviews.controller.ts`, `auth.service.ts`, `PaginationDto`, `PetsController`, `UsersService`, `admin.service.ts`, `admin.module.ts`, `CreateVideoDto`, `ProductsService`, `OrdersService`?**
|
||||||
_High betweenness centrality (0.036) - this node is a cross-community bridge._
|
_High betweenness centrality (0.035) - this node is a cross-community bridge._
|
||||||
- **What connects `$schema`, `collection`, `sourceRoot` to the rest of the system?**
|
- **What connects `$schema`, `collection`, `sourceRoot` to the rest of the system?**
|
||||||
_1341 weakly-connected nodes found - possible documentation gaps or missing edges._
|
_1343 weakly-connected nodes found - possible documentation gaps or missing edges._
|
||||||
- **Should `app.module.ts` be split into smaller, more focused modules?**
|
- **Should `app.module.ts` be split into smaller, more focused modules?**
|
||||||
_Cohesion score 0.06078316773816481 - nodes in this community are weakly interconnected._
|
_Cohesion score 0.06748911465892599 - nodes in this community are weakly interconnected._
|
||||||
- **Should `ProductService` be split into smaller, more focused modules?**
|
- **Should `SettingsController` be split into smaller, more focused modules?**
|
||||||
_Cohesion score 0.06229508196721312 - nodes in this community are weakly interconnected._
|
_Cohesion score 0.07333333333333333 - nodes in this community are weakly interconnected._
|
||||||
- **Should `ProductPage.tsx` be split into smaller, more focused modules?**
|
- **Should `productService.ts` be split into smaller, more focused modules?**
|
||||||
_Cohesion score 0.11594202898550725 - nodes in this community are weakly interconnected._
|
_Cohesion score 0.06440677966101695 - 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,40 +1,40 @@
|
|||||||
# Graph Report - canina (2026-08-29)
|
# Graph Report - canina (2026-08-29)
|
||||||
|
|
||||||
## Corpus Check
|
## Corpus Check
|
||||||
- 593 files · ~1,337,817 words
|
- 593 files · ~1,337,957 words
|
||||||
- Verdict: corpus is large enough that graph structure adds value.
|
- Verdict: corpus is large enough that graph structure adds value.
|
||||||
|
|
||||||
## Summary
|
## Summary
|
||||||
- 4149 nodes · 7481 edges · 313 communities (211 shown, 102 thin omitted)
|
- 4151 nodes · 7487 edges · 336 communities (214 shown, 122 thin omitted)
|
||||||
- Extraction: 96% EXTRACTED · 4% INFERRED · 0% AMBIGUOUS · INFERRED: 281 edges (avg confidence: 0.79)
|
- Extraction: 96% EXTRACTED · 4% INFERRED · 0% AMBIGUOUS · INFERRED: 281 edges (avg confidence: 0.79)
|
||||||
- Token cost: 0 input · 0 output
|
- Token cost: 0 input · 0 output
|
||||||
|
|
||||||
## Graph Freshness
|
## Graph Freshness
|
||||||
- Built from commit: `d9c693c4`
|
- Built from commit: `fa1a35c8`
|
||||||
- Run `git rev-parse HEAD` and compare to check if the graph is stale.
|
- Run `git rev-parse HEAD` and compare to check if the graph is stale.
|
||||||
- Run `graphify update .` after code changes (no API cost).
|
- Run `graphify update .` after code changes (no API cost).
|
||||||
|
|
||||||
## Community Hubs (Navigation)
|
## Community Hubs (Navigation)
|
||||||
- Roles
|
- Roles
|
||||||
- app.module.ts
|
- app.module.ts
|
||||||
- SettingsController
|
- SettingsService
|
||||||
- productService.ts
|
- productService.ts
|
||||||
- ProductPage.tsx
|
- ProductPage.tsx
|
||||||
- CmsController
|
- CmsController
|
||||||
- tickets.controller.ts
|
- tickets.controller.ts
|
||||||
- Button.tsx
|
- Button.tsx
|
||||||
- reviews.controller.ts
|
- pets/pets.controller.ts
|
||||||
- devDependencies
|
- devDependencies
|
||||||
- ReviewsController
|
- CreateReviewDto
|
||||||
- MediaSelector.tsx
|
- MediaSelector.tsx
|
||||||
- index.ts
|
- index.ts
|
||||||
- app-audit-verification.e2e-spec.js
|
- app-audit-verification.e2e-spec.js
|
||||||
- lib/services/api.ts
|
- userStore.ts
|
||||||
- src/services/api.ts
|
- src/services/api.ts
|
||||||
- DoctorQueryDto
|
- DoctorQueryDto
|
||||||
- schema.ts
|
- schema.ts
|
||||||
- JwtAuthGuard
|
- JwtAuthGuard
|
||||||
- ProductsController
|
- ProductsService
|
||||||
- CreateVideoDto
|
- CreateVideoDto
|
||||||
- admin.module.ts
|
- admin.module.ts
|
||||||
- RevalidationService
|
- RevalidationService
|
||||||
@ -49,7 +49,7 @@
|
|||||||
- DOC-001
|
- DOC-001
|
||||||
- adminRoutes.tsx
|
- adminRoutes.tsx
|
||||||
- WholesaleApplyDto
|
- WholesaleApplyDto
|
||||||
- B2BController
|
- B2BService
|
||||||
- AuthController
|
- AuthController
|
||||||
- FaqService
|
- FaqService
|
||||||
- راهنمای تست سیستم (Software Testing)
|
- راهنمای تست سیستم (Software Testing)
|
||||||
@ -58,16 +58,16 @@
|
|||||||
- MediaController
|
- MediaController
|
||||||
- What You Must Do When Invoked
|
- What You Must Do When Invoked
|
||||||
- SslController
|
- SslController
|
||||||
- BannersController
|
- BannersService
|
||||||
- TestimonialsController
|
- TestimonialsService
|
||||||
- What You Must Do When Invoked
|
- What You Must Do When Invoked
|
||||||
- 20260526145407_init/migration.sql
|
- 20260526145407_init/migration.sql
|
||||||
- IngredientsController
|
- IngredientsService
|
||||||
- UsersController
|
- UsersController
|
||||||
- devDependencies
|
- devDependencies
|
||||||
- devDependencies
|
- devDependencies
|
||||||
- BlogsController
|
- BlogsController
|
||||||
- PrescriptionsController
|
- PrescriptionsService
|
||||||
- SmartAdvisorService
|
- SmartAdvisorService
|
||||||
- Modal.tsx
|
- Modal.tsx
|
||||||
- UITexts.tsx
|
- UITexts.tsx
|
||||||
@ -76,7 +76,7 @@
|
|||||||
- ContactService
|
- ContactService
|
||||||
- compilerOptions
|
- compilerOptions
|
||||||
- PaymentService
|
- PaymentService
|
||||||
- PetProfile.tsx
|
- useCartStore
|
||||||
- SmsService
|
- SmsService
|
||||||
- dependencies
|
- dependencies
|
||||||
- compilerOptions
|
- compilerOptions
|
||||||
@ -91,7 +91,7 @@
|
|||||||
- Operational Rules & Boundaries
|
- Operational Rules & Boundaries
|
||||||
- WikiController
|
- WikiController
|
||||||
- PetsController
|
- PetsController
|
||||||
- AdminService
|
- Param
|
||||||
- seo.module.ts
|
- seo.module.ts
|
||||||
- rss.xml/route.ts
|
- rss.xml/route.ts
|
||||||
- 🏢 AI Software Agency — Master Orchestration Protocol v3
|
- 🏢 AI Software Agency — Master Orchestration Protocol v3
|
||||||
@ -105,7 +105,7 @@
|
|||||||
- dependencies
|
- dependencies
|
||||||
- CreateEBankCheckoutDto
|
- CreateEBankCheckoutDto
|
||||||
- seed-products.ts
|
- seed-products.ts
|
||||||
- ProductsService
|
- ApiBearerAuth
|
||||||
- Reconciled Audit Roles & Assignments
|
- Reconciled Audit Roles & Assignments
|
||||||
- OrdersService
|
- OrdersService
|
||||||
- HomeClient.tsx
|
- HomeClient.tsx
|
||||||
@ -128,7 +128,7 @@
|
|||||||
- Operational Rules & Boundaries
|
- Operational Rules & Boundaries
|
||||||
- Operational Rules & Boundaries
|
- Operational Rules & Boundaries
|
||||||
- Operational Rules & Boundaries
|
- Operational Rules & Boundaries
|
||||||
- AdminTransactionFilterDto
|
- SettingsController
|
||||||
- AppService
|
- AppService
|
||||||
- Blogs.tsx
|
- Blogs.tsx
|
||||||
- Vazirmatn Changelog
|
- Vazirmatn Changelog
|
||||||
@ -137,14 +137,14 @@
|
|||||||
- compilerOptions
|
- compilerOptions
|
||||||
- compilerOptions
|
- compilerOptions
|
||||||
- backend/README.md
|
- backend/README.md
|
||||||
- AdminController
|
- AdminService
|
||||||
- MetricsController
|
- users.service.ts
|
||||||
- Repository Map
|
- Repository Map
|
||||||
- validate_integrity.js
|
- validate_integrity.js
|
||||||
- admin-panel/package.json
|
- admin-panel/package.json
|
||||||
- Sahel-Font
|
- Sahel-Font
|
||||||
- Body
|
- RedisService
|
||||||
- wiki/[slug]/page.tsx
|
- UsersService
|
||||||
- Sahel-Font
|
- Sahel-Font
|
||||||
- Role & Core Objective
|
- Role & Core Objective
|
||||||
- orchestrate.py
|
- orchestrate.py
|
||||||
@ -159,15 +159,15 @@
|
|||||||
- application/package.json
|
- application/package.json
|
||||||
- start-dev.js
|
- start-dev.js
|
||||||
- generate-openapi.js
|
- generate-openapi.js
|
||||||
- SafeImage.tsx
|
- VetGallery.tsx
|
||||||
- ProductDto
|
- ProductDto
|
||||||
- System Discovery
|
- System Discovery
|
||||||
- HomeController
|
- HomeController
|
||||||
- admin.service.ts
|
- admin.service.ts
|
||||||
- SmsSettingsPage.tsx
|
- SmsSettingsPage.tsx
|
||||||
- Product Requirement Document (PRD)
|
- Product Requirement Document (PRD)
|
||||||
- zibal-ebank.service.ts
|
- components/Skeleton.tsx
|
||||||
- useCartStore
|
- lib/services/api.ts
|
||||||
- exclude
|
- exclude
|
||||||
- Baseline Command Plan & Reconciled Command History
|
- Baseline Command Plan & Reconciled Command History
|
||||||
- seo-backfill.ts
|
- seo-backfill.ts
|
||||||
@ -191,14 +191,15 @@
|
|||||||
- rebuild_honest_ledger.js
|
- rebuild_honest_ledger.js
|
||||||
- validate_evidence_grade.js
|
- validate_evidence_grade.js
|
||||||
- uploads/[...path]/route.ts
|
- uploads/[...path]/route.ts
|
||||||
- UsersService
|
- auth.module.ts
|
||||||
- نقشه جامع پوشش تستهای سرتاسری (E2E Test Coverage Map) — پروژه Canina
|
- نقشه جامع پوشش تستهای سرتاسری (E2E Test Coverage Map) — پروژه Canina
|
||||||
- prisma
|
- prisma
|
||||||
- API Contract Specification
|
- API Contract Specification
|
||||||
- ⚙️ Backend Technical Review (05_dev_backend)
|
- ⚙️ Backend Technical Review (05_dev_backend)
|
||||||
- 🎨 Frontend & Admin Panel Technical Review (06_dev_frontend)
|
- 🎨 Frontend & Admin Panel Technical Review (06_dev_frontend)
|
||||||
- 🚀 SEO & Content Strategy Review (12_seo_content)
|
- 🚀 SEO & Content Strategy Review (12_seo_content)
|
||||||
- @types/node
|
- RegisterDto
|
||||||
|
- SmsLogQueryDto
|
||||||
- seed-ui-texts.ts
|
- seed-ui-texts.ts
|
||||||
- seed-wiki.ts
|
- seed-wiki.ts
|
||||||
- update-blog.dto.ts
|
- update-blog.dto.ts
|
||||||
@ -210,10 +211,14 @@
|
|||||||
- Raw Finding Verification & Disposition Report
|
- Raw Finding Verification & Disposition Report
|
||||||
- React + TypeScript + Vite
|
- React + TypeScript + Vite
|
||||||
- Select.tsx
|
- Select.tsx
|
||||||
|
- AdminLoginDto
|
||||||
|
- LoginDto
|
||||||
|
- videos/page.tsx
|
||||||
- application/README.md
|
- application/README.md
|
||||||
- deploy.sh
|
- deploy.sh
|
||||||
- 🔒 Security & Performance Review (09_devops_security)
|
- 🔒 Security & Performance Review (09_devops_security)
|
||||||
- 👁️ UX & Persona Interface Review (08_visual_qa)
|
- 👁️ UX & Persona Interface Review (08_visual_qa)
|
||||||
|
- trust-seals/page.tsx
|
||||||
- prisma/scientificTerms.ts
|
- prisma/scientificTerms.ts
|
||||||
- seed-blogs.ts
|
- seed-blogs.ts
|
||||||
- seed-custom.ts
|
- seed-custom.ts
|
||||||
@ -232,16 +237,22 @@
|
|||||||
- Input.tsx
|
- Input.tsx
|
||||||
- Textarea.tsx
|
- Textarea.tsx
|
||||||
- admin-panel/tsconfig.json
|
- admin-panel/tsconfig.json
|
||||||
|
- catalog/page.tsx
|
||||||
|
- bcrypt
|
||||||
- next.config.ts
|
- next.config.ts
|
||||||
- Shabnam Font README
|
- Shabnam Font README
|
||||||
- AGENTS.md
|
- AGENTS.md
|
||||||
- rules/graphify.md
|
- rules/graphify.md
|
||||||
- .agents/workflows/graphify.md
|
- .agents/workflows/graphify.md
|
||||||
- instructions.md
|
- instructions.md
|
||||||
- WikiController
|
- class-transformer
|
||||||
|
- helmet
|
||||||
- tailwindcss
|
- tailwindcss
|
||||||
- @nestjs/schematics
|
- @nestjs/schematics
|
||||||
|
- js-yaml
|
||||||
|
- @nestjs/core
|
||||||
- source-map-support
|
- source-map-support
|
||||||
|
- @nestjs/jwt
|
||||||
- ts-loader
|
- ts-loader
|
||||||
- supertest
|
- supertest
|
||||||
- blog.entity.ts
|
- blog.entity.ts
|
||||||
@ -291,23 +302,35 @@
|
|||||||
- typescript
|
- typescript
|
||||||
- @types/jest
|
- @types/jest
|
||||||
- typescript-eslint
|
- typescript-eslint
|
||||||
|
- @nestjs/swagger
|
||||||
- @types/multer
|
- @types/multer
|
||||||
- @types/react
|
- @types/react
|
||||||
- globals
|
- globals
|
||||||
|
- @nestjs/throttler
|
||||||
- vitest
|
- vitest
|
||||||
|
- reflect-metadata
|
||||||
- @types/passport-jwt
|
- @types/passport-jwt
|
||||||
- 20260526160916_add_ui_texts_and_scientific_terms/migration.sql
|
- 20260526160916_add_ui_texts_and_scientific_terms/migration.sql
|
||||||
- typescript-eslint
|
- typescript-eslint
|
||||||
- typescript
|
- typescript
|
||||||
|
- swagger-ui-express
|
||||||
- revalidate/route.ts
|
- revalidate/route.ts
|
||||||
- MaskableField.tsx
|
- MaskableField.tsx
|
||||||
- @eslint/js
|
- @eslint/js
|
||||||
- @testing-library/react
|
- @testing-library/react
|
||||||
|
- eslint-config-prettier
|
||||||
|
- @eslint/eslintrc
|
||||||
- @types/react-dom
|
- @types/react-dom
|
||||||
|
- jest
|
||||||
- eslint-plugin-react-refresh
|
- eslint-plugin-react-refresh
|
||||||
- track/page.tsx
|
- @nestjs/cli
|
||||||
|
- @nestjs/testing
|
||||||
|
- prettier
|
||||||
|
- ts-jest
|
||||||
- app.e2e-spec.js
|
- app.e2e-spec.js
|
||||||
- app/page.tsx
|
- app/page.tsx
|
||||||
|
- @types/js-yaml
|
||||||
|
- @types/supertest
|
||||||
|
|
||||||
## God Nodes (most connected - your core abstractions)
|
## God Nodes (most connected - your core abstractions)
|
||||||
1. `Roles()` - 106 edges
|
1. `Roles()` - 106 edges
|
||||||
@ -334,27 +357,23 @@
|
|||||||
backend/src/orders/orders.controller.ts → frontend/admin-panel/src/types/admin.ts
|
backend/src/orders/orders.controller.ts → frontend/admin-panel/src/types/admin.ts
|
||||||
|
|
||||||
## Import Cycles
|
## 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/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`
|
- 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 (313 total, 102 thin omitted)
|
## Communities (336 total, 122 thin omitted)
|
||||||
|
|
||||||
### Community 0 - "Roles"
|
### Community 0 - "Roles"
|
||||||
Cohesion: 0.24
|
Cohesion: 0.24
|
||||||
Nodes (13): Roles(), PaymentController, ApiBearerAuth, ApiOperation, ApiTags, Body, Controller, Get (+5 more)
|
Nodes (13): Roles(), PaymentController, ApiBearerAuth, ApiOperation, ApiTags, Body, Controller, Get (+5 more)
|
||||||
|
|
||||||
### Community 1 - "app.module.ts"
|
### Community 1 - "app.module.ts"
|
||||||
Cohesion: 0.07
|
Cohesion: 0.05
|
||||||
Nodes (34): B2BModule, Module, BannersModule, Module, CmsModule, Module, SmsModule, Global (+26 more)
|
Nodes (43): AppModule, Module, B2BModule, Module, BannersModule, Module, CmsModule, Module (+35 more)
|
||||||
|
|
||||||
### Community 2 - "SettingsController"
|
|
||||||
Cohesion: 0.07
|
|
||||||
Nodes (24): SmsLogQueryDto, ApiPropertyOptional, IsIn, IsNumber, IsOptional, IsString, Type, SettingsController (+16 more)
|
|
||||||
|
|
||||||
### Community 3 - "productService.ts"
|
### Community 3 - "productService.ts"
|
||||||
Cohesion: 0.06
|
Cohesion: 0.06
|
||||||
Nodes (32): dynamic, revalidate, DEFAULT_CATEGORIES, dynamic, revalidate, dynamic, revalidate, BlogCategory (+24 more)
|
Nodes (33): dynamic, revalidate, DEFAULT_CATEGORIES, dynamic, revalidate, dynamic, revalidate, BlogCategory (+25 more)
|
||||||
|
|
||||||
### Community 4 - "ProductPage.tsx"
|
### Community 4 - "ProductPage.tsx"
|
||||||
Cohesion: 0.13
|
Cohesion: 0.13
|
||||||
@ -366,23 +385,23 @@ Nodes (24): CmsController, ApiBearerAuth, ApiOperation, ApiTags, Body, Controlle
|
|||||||
|
|
||||||
### Community 6 - "tickets.controller.ts"
|
### Community 6 - "tickets.controller.ts"
|
||||||
Cohesion: 0.09
|
Cohesion: 0.09
|
||||||
Nodes (31): AdminUpdateTicketDto, CreateTicketDto, ReplyTicketDto, ApiProperty, ApiPropertyOptional, IsNotEmpty, IsOptional, IsString (+23 more)
|
Nodes (29): AdminUpdateTicketDto, CreateTicketDto, ReplyTicketDto, ApiProperty, ApiPropertyOptional, IsNotEmpty, IsOptional, IsString (+21 more)
|
||||||
|
|
||||||
### Community 7 - "Button.tsx"
|
### Community 7 - "Button.tsx"
|
||||||
Cohesion: 0.12
|
Cohesion: 0.12
|
||||||
Nodes (14): Button(), ButtonProps, ButtonSize, ButtonVariant, Spinner(), FAQ, BlogCommentItem, ProductReview (+6 more)
|
Nodes (14): Button(), ButtonProps, ButtonSize, ButtonVariant, Spinner(), FAQ, BlogCommentItem, ProductReview (+6 more)
|
||||||
|
|
||||||
### Community 8 - "reviews.controller.ts"
|
### Community 8 - "pets/pets.controller.ts"
|
||||||
Cohesion: 0.13
|
Cohesion: 0.12
|
||||||
Nodes (17): CreateReviewDto, ApiProperty, IsInt, IsNotEmpty, IsOptional, IsString, Min, ApiProperty (+9 more)
|
Nodes (15): CreatePetDto, ApiProperty, ApiPropertyOptional, IsArray, IsNotEmpty, IsNumber, IsOptional, IsString (+7 more)
|
||||||
|
|
||||||
### Community 9 - "devDependencies"
|
### Community 9 - "devDependencies"
|
||||||
Cohesion: 0.08
|
Cohesion: 0.22
|
||||||
Nodes (25): devDependencies, eslint, eslint-config-prettier, @eslint/eslintrc, jest, @nestjs/cli, @nestjs/testing, prettier (+17 more)
|
Nodes (9): devDependencies, eslint, @types/bcryptjs, @types/node, typescript, eslint, @types/node, typescript (+1 more)
|
||||||
|
|
||||||
### Community 10 - "ReviewsController"
|
### Community 10 - "CreateReviewDto"
|
||||||
Cohesion: 0.13
|
Cohesion: 0.07
|
||||||
Nodes (15): ReviewsController, ApiBearerAuth, ApiOperation, ApiTags, Body, Controller, Delete, Get (+7 more)
|
Nodes (30): CreateReviewDto, ApiProperty, IsInt, IsNotEmpty, IsOptional, IsString, Min, ApiProperty (+22 more)
|
||||||
|
|
||||||
### Community 11 - "MediaSelector.tsx"
|
### Community 11 - "MediaSelector.tsx"
|
||||||
Cohesion: 0.06
|
Cohesion: 0.06
|
||||||
@ -396,9 +415,9 @@ Nodes (24): backend, frontend, playwright.config.ts, @playwright/test, tests/**/
|
|||||||
Cohesion: 0.07
|
Cohesion: 0.07
|
||||||
Nodes (26): EnvironmentVariables, IsNotEmpty, IsOptional, IsString, validateEnv(), CustomHttpExceptionFilter, Catch, PrismaExceptionFilter (+18 more)
|
Nodes (26): EnvironmentVariables, IsNotEmpty, IsOptional, IsString, validateEnv(), CustomHttpExceptionFilter, Catch, PrismaExceptionFilter (+18 more)
|
||||||
|
|
||||||
### Community 14 - "lib/services/api.ts"
|
### Community 14 - "userStore.ts"
|
||||||
Cohesion: 0.09
|
Cohesion: 0.11
|
||||||
Nodes (16): BlogPostClient(), BlogPostClientProps, ContactInfoItem, Testimonial, api, ApiErrorPayload, BASE_DOMAIN, baseURL (+8 more)
|
Nodes (11): LoginModal, LoginModal(), LoginModalProps, ApiErr, AuthResponse, AuthService, User, Transaction (+3 more)
|
||||||
|
|
||||||
### Community 15 - "src/services/api.ts"
|
### Community 15 - "src/services/api.ts"
|
||||||
Cohesion: 0.08
|
Cohesion: 0.08
|
||||||
@ -409,28 +428,24 @@ Cohesion: 0.09
|
|||||||
Nodes (24): DoctorsController, ApiBearerAuth, ApiOperation, ApiTags, Body, Controller, Delete, Get (+16 more)
|
Nodes (24): DoctorsController, ApiBearerAuth, ApiOperation, ApiTags, Body, Controller, Delete, Get (+16 more)
|
||||||
|
|
||||||
### Community 17 - "schema.ts"
|
### Community 17 - "schema.ts"
|
||||||
Cohesion: 0.13
|
Cohesion: 0.15
|
||||||
Nodes (19): B2BPage(), generateMetadata(), ContactPage(), generateMetadata(), generateMetadata(), getInitialVideos(), Videos(), B2BLandingClient() (+11 more)
|
Nodes (18): B2BPage(), generateMetadata(), ContactPage(), generateMetadata(), generateMetadata(), getRelatedProducts(), getWikiTerm(), WikiTermPage() (+10 more)
|
||||||
|
|
||||||
### Community 18 - "JwtAuthGuard"
|
### Community 18 - "JwtAuthGuard"
|
||||||
Cohesion: 0.12
|
Cohesion: 0.17
|
||||||
Nodes (11): JwtAuthGuard, Injectable, B2BService, B2BWholesaleOrderItem, Injectable, ROLES_KEY, RequestWithUser, RolesGuard (+3 more)
|
Nodes (7): JwtAuthGuard, Injectable, ROLES_KEY, RequestWithUser, RolesGuard, Injectable, UserReqPayload
|
||||||
|
|
||||||
### Community 19 - "ProductsController"
|
### Community 19 - "ProductsService"
|
||||||
Cohesion: 0.14
|
Cohesion: 0.10
|
||||||
Nodes (10): ProductsController, ApiOperation, ApiTags, Body, Controller, Get, Param, Patch (+2 more)
|
Nodes (19): GetProductsDto, ApiPropertyOptional, IsEnum, IsOptional, IsString, ProductsController, ApiOperation, ApiTags (+11 more)
|
||||||
|
|
||||||
### Community 20 - "CreateVideoDto"
|
### Community 20 - "CreateVideoDto"
|
||||||
Cohesion: 0.07
|
Cohesion: 0.09
|
||||||
Nodes (32): CreateVideoDto, ApiProperty, ApiPropertyOptional, IsBoolean, IsNotEmpty, IsOptional, IsString, UpdateVideoDto (+24 more)
|
Nodes (24): CreateVideoDto, ApiProperty, ApiPropertyOptional, IsBoolean, IsNotEmpty, IsOptional, IsString, UpdateVideoDto (+16 more)
|
||||||
|
|
||||||
### Community 21 - "admin.module.ts"
|
### Community 21 - "admin.module.ts"
|
||||||
Cohesion: 0.06
|
Cohesion: 0.07
|
||||||
Nodes (20): AdminModule, Module, MediaService, Injectable, PetsService, Injectable, ReportsController, ApiBearerAuth (+12 more)
|
Nodes (19): AdminModule, Module, MediaService, Injectable, ReportsController, ApiBearerAuth, ApiOperation, ApiQuery (+11 more)
|
||||||
|
|
||||||
### Community 22 - "RevalidationService"
|
|
||||||
Cohesion: 0.15
|
|
||||||
Nodes (5): RevalidationModule, Global, Module, RevalidationService, Injectable
|
|
||||||
|
|
||||||
### Community 23 - "MenuService"
|
### Community 23 - "MenuService"
|
||||||
Cohesion: 0.12
|
Cohesion: 0.12
|
||||||
@ -473,16 +488,16 @@ Cohesion: 0.06
|
|||||||
Nodes (24): App(), Props, RouteErrorBoundary, State, HeroBanner, VetTestimonial, BestSellerItem, CategoryDistItem (+16 more)
|
Nodes (24): App(), Props, RouteErrorBoundary, State, HeroBanner, VetTestimonial, BestSellerItem, CategoryDistItem (+16 more)
|
||||||
|
|
||||||
### Community 33 - "WholesaleApplyDto"
|
### Community 33 - "WholesaleApplyDto"
|
||||||
Cohesion: 0.11
|
Cohesion: 0.10
|
||||||
Nodes (20): ApiProperty, ApiPropertyOptional, IsNotEmpty, IsOptional, IsString, WholesaleApplyDto, ApiBearerAuth, ApiOperation (+12 more)
|
Nodes (20): ApiProperty, ApiPropertyOptional, IsNotEmpty, IsOptional, IsString, WholesaleApplyDto, ApiBearerAuth, ApiOperation (+12 more)
|
||||||
|
|
||||||
### Community 34 - "B2BController"
|
### Community 34 - "B2BService"
|
||||||
Cohesion: 0.14
|
Cohesion: 0.13
|
||||||
Nodes (13): B2BController, ApiBearerAuth, ApiOperation, ApiTags, Body, Controller, Get, Param (+5 more)
|
Nodes (15): B2BController, ApiBearerAuth, ApiOperation, ApiTags, Body, Controller, Get, Param (+7 more)
|
||||||
|
|
||||||
### Community 35 - "AuthController"
|
### Community 35 - "AuthController"
|
||||||
Cohesion: 0.08
|
Cohesion: 0.25
|
||||||
Nodes (32): AuthController, ApiBadRequestResponse, ApiBearerAuth, ApiOkResponse, ApiOperation, ApiTags, Body, Controller (+24 more)
|
Nodes (13): AuthController, ApiBadRequestResponse, ApiBearerAuth, ApiOkResponse, ApiOperation, ApiTags, Body, Controller (+5 more)
|
||||||
|
|
||||||
### Community 36 - "FaqService"
|
### Community 36 - "FaqService"
|
||||||
Cohesion: 0.14
|
Cohesion: 0.14
|
||||||
@ -501,8 +516,8 @@ Cohesion: 0.10
|
|||||||
Nodes (16): CategoriesController, ApiBearerAuth, ApiOperation, ApiQuery, ApiTags, Body, Controller, Delete (+8 more)
|
Nodes (16): CategoriesController, ApiBearerAuth, ApiOperation, ApiQuery, ApiTags, Body, Controller, Delete (+8 more)
|
||||||
|
|
||||||
### Community 40 - "MediaController"
|
### Community 40 - "MediaController"
|
||||||
Cohesion: 0.11
|
Cohesion: 0.07
|
||||||
Nodes (14): MediaController, ApiBearerAuth, ApiOperation, ApiTags, Body, Controller, Delete, Get (+6 more)
|
Nodes (23): MediaController, ApiBearerAuth, ApiOperation, ApiTags, Body, Controller, Delete, Get (+15 more)
|
||||||
|
|
||||||
### Community 41 - "What You Must Do When Invoked"
|
### Community 41 - "What You Must Do When Invoked"
|
||||||
Cohesion: 0.07
|
Cohesion: 0.07
|
||||||
@ -512,13 +527,13 @@ Nodes (26): For /graphify add and --watch, For /graphify query, For the commit h
|
|||||||
Cohesion: 0.13
|
Cohesion: 0.13
|
||||||
Nodes (14): SslController, ApiBearerAuth, ApiOperation, ApiTags, Body, Controller, Get, Post (+6 more)
|
Nodes (14): SslController, ApiBearerAuth, ApiOperation, ApiTags, Body, Controller, Get, Post (+6 more)
|
||||||
|
|
||||||
### Community 43 - "BannersController"
|
### Community 43 - "BannersService"
|
||||||
Cohesion: 0.13
|
Cohesion: 0.13
|
||||||
Nodes (13): BannersController, ApiBearerAuth, ApiOperation, ApiTags, Body, Controller, Delete, Get (+5 more)
|
Nodes (15): BannersController, ApiBearerAuth, ApiOperation, ApiTags, Body, Controller, Delete, Get (+7 more)
|
||||||
|
|
||||||
### Community 44 - "TestimonialsController"
|
### Community 44 - "TestimonialsService"
|
||||||
Cohesion: 0.13
|
Cohesion: 0.13
|
||||||
Nodes (12): TestimonialsController, ApiBearerAuth, ApiOperation, ApiTags, Body, Controller, Delete, Get (+4 more)
|
Nodes (14): TestimonialsController, ApiBearerAuth, ApiOperation, ApiTags, Body, Controller, Delete, Get (+6 more)
|
||||||
|
|
||||||
### Community 45 - "What You Must Do When Invoked"
|
### Community 45 - "What You Must Do When Invoked"
|
||||||
Cohesion: 0.07
|
Cohesion: 0.07
|
||||||
@ -528,13 +543,13 @@ Nodes (26): For /graphify add and --watch, For /graphify query, For the commit h
|
|||||||
Cohesion: 0.27
|
Cohesion: 0.27
|
||||||
Nodes (14): "coupons", "health_logs", "order_items", "orders", "pet_medical_conditions", "pets", "product_ingredients", "product_symptoms" (+6 more)
|
Nodes (14): "coupons", "health_logs", "order_items", "orders", "pet_medical_conditions", "pets", "product_ingredients", "product_symptoms" (+6 more)
|
||||||
|
|
||||||
### Community 47 - "IngredientsController"
|
### Community 47 - "IngredientsService"
|
||||||
Cohesion: 0.13
|
Cohesion: 0.13
|
||||||
Nodes (12): IngredientsController, ApiBearerAuth, ApiOperation, ApiTags, Body, Controller, Delete, Get (+4 more)
|
Nodes (14): IngredientsController, ApiBearerAuth, ApiOperation, ApiTags, Body, Controller, Delete, Get (+6 more)
|
||||||
|
|
||||||
### Community 48 - "UsersController"
|
### Community 48 - "UsersController"
|
||||||
Cohesion: 0.08
|
Cohesion: 0.21
|
||||||
Nodes (29): AddressDto, ApiProperty, ApiPropertyOptional, IsBoolean, IsNotEmpty, IsOptional, IsString, ApiPropertyOptional (+21 more)
|
Nodes (16): ApiBadRequestResponse, ApiBearerAuth, ApiCreatedResponse, ApiOkResponse, ApiOperation, ApiTags, Body, Controller (+8 more)
|
||||||
|
|
||||||
### Community 49 - "devDependencies"
|
### Community 49 - "devDependencies"
|
||||||
Cohesion: 0.11
|
Cohesion: 0.11
|
||||||
@ -548,9 +563,9 @@ Nodes (15): eslint-config-next, devDependencies, eslint, eslint-config-next, jsd
|
|||||||
Cohesion: 0.14
|
Cohesion: 0.14
|
||||||
Nodes (16): BlogsController, ApiBearerAuth, ApiOperation, ApiQuery, ApiTags, Body, Controller, Delete (+8 more)
|
Nodes (16): BlogsController, ApiBearerAuth, ApiOperation, ApiQuery, ApiTags, Body, Controller, Delete (+8 more)
|
||||||
|
|
||||||
### Community 52 - "PrescriptionsController"
|
### Community 52 - "PrescriptionsService"
|
||||||
Cohesion: 0.16
|
Cohesion: 0.14
|
||||||
Nodes (12): PrescriptionsController, ApiBearerAuth, ApiOperation, ApiTags, Body, Controller, Get, Param (+4 more)
|
Nodes (14): PrescriptionsController, ApiBearerAuth, ApiOperation, ApiTags, Body, Controller, Get, Param (+6 more)
|
||||||
|
|
||||||
### Community 53 - "SmartAdvisorService"
|
### Community 53 - "SmartAdvisorService"
|
||||||
Cohesion: 0.13
|
Cohesion: 0.13
|
||||||
@ -580,33 +595,33 @@ Nodes (12): ContactController, Body, Controller, Get, Param, Post, Put, Query (+
|
|||||||
Cohesion: 0.06
|
Cohesion: 0.06
|
||||||
Nodes (30): compilerOptions, allowSyntheticDefaultImports, baseUrl, declaration, emitDecoratorMetadata, esModuleInterop, experimentalDecorators, forceConsistentCasingInFileNames (+22 more)
|
Nodes (30): compilerOptions, allowSyntheticDefaultImports, baseUrl, declaration, emitDecoratorMetadata, esModuleInterop, experimentalDecorators, forceConsistentCasingInFileNames (+22 more)
|
||||||
|
|
||||||
### Community 61 - "PetProfile.tsx"
|
### Community 60 - "PaymentService"
|
||||||
Cohesion: 0.07
|
Cohesion: 0.11
|
||||||
Nodes (24): metadata, FeaturedProducts(), ProductCard(), Header(), OrderSuccess(), PrescriptionUploadModal(), PrescriptionUploadModalProps, OrderRowSkeleton() (+16 more)
|
Nodes (9): AdminTransactionFilterDto, ApiPropertyOptional, IsIn, IsNumber, IsOptional, IsString, Type, PaymentService (+1 more)
|
||||||
|
|
||||||
### Community 62 - "SmsService"
|
### Community 61 - "useCartStore"
|
||||||
Cohesion: 0.12
|
Cohesion: 0.08
|
||||||
Nodes (4): SmsService, Injectable, PrescriptionsService, Injectable
|
Nodes (27): ArchiveProductCard(), CartDrawer(), DeleteConfirmModal(), DeleteConfirmModalProps, FeaturedProducts(), ProductCard(), Header(), OrderDetailsModal() (+19 more)
|
||||||
|
|
||||||
### Community 63 - "dependencies"
|
### Community 63 - "dependencies"
|
||||||
Cohesion: 0.05
|
Cohesion: 0.09
|
||||||
Nodes (43): dependencies, bcrypt, bcryptjs, class-transformer, class-validator, compression, helmet, ioredis (+35 more)
|
Nodes (23): dependencies, bcryptjs, class-validator, compression, ioredis, @nestjs/common, @nestjs/passport, @nestjs/platform-express (+15 more)
|
||||||
|
|
||||||
### Community 64 - "compilerOptions"
|
### Community 64 - "compilerOptions"
|
||||||
Cohesion: 0.10
|
Cohesion: 0.10
|
||||||
Nodes (20): compilerOptions, allowImportingTsExtensions, erasableSyntaxOnly, lib, module, moduleDetection, moduleResolution, noEmit (+12 more)
|
Nodes (20): compilerOptions, allowImportingTsExtensions, erasableSyntaxOnly, lib, module, moduleDetection, moduleResolution, noEmit (+12 more)
|
||||||
|
|
||||||
### Community 66 - "ApiOperation"
|
### Community 66 - "ApiOperation"
|
||||||
Cohesion: 0.12
|
Cohesion: 0.13
|
||||||
Nodes (8): ApiOperation, ApiQuery, Get, Query, AdminQueryDto, ApiPropertyOptional, IsOptional, IsString
|
Nodes (8): ApiOperation, ApiQuery, Get, Query, AdminQueryDto, ApiPropertyOptional, IsOptional, IsString
|
||||||
|
|
||||||
### Community 67 - "PetsController"
|
### Community 67 - "PetsController"
|
||||||
Cohesion: 0.15
|
Cohesion: 0.10
|
||||||
Nodes (11): PetsController, ApiBearerAuth, ApiOperation, ApiQuery, ApiTags, Controller, Delete, Get (+3 more)
|
Nodes (14): PetsController, ApiBearerAuth, ApiOperation, ApiQuery, ApiTags, Controller, Delete, Get (+6 more)
|
||||||
|
|
||||||
### Community 68 - "UserDashboard.tsx"
|
### Community 68 - "UserDashboard.tsx"
|
||||||
Cohesion: 0.11
|
Cohesion: 0.12
|
||||||
Nodes (34): LoginModal, HomeClient(), VerifyContent(), AddressFormData, AddressModal(), AddressModalProps, normalizeDigits(), validateAddressForm() (+26 more)
|
Nodes (32): HomeClient(), VerifyContent(), AddressFormData, AddressModal(), AddressModalProps, normalizeDigits(), validateAddressForm(), AuthModal() (+24 more)
|
||||||
|
|
||||||
### Community 69 - "Required Review Group Closures"
|
### Community 69 - "Required Review Group Closures"
|
||||||
Cohesion: 0.10
|
Cohesion: 0.10
|
||||||
@ -617,8 +632,8 @@ Cohesion: 0.08
|
|||||||
Nodes (23): compilerOptions, allowImportingTsExtensions, erasableSyntaxOnly, jsx, lib, module, moduleDetection, moduleResolution (+15 more)
|
Nodes (23): compilerOptions, allowImportingTsExtensions, erasableSyntaxOnly, jsx, lib, module, moduleDetection, moduleResolution (+15 more)
|
||||||
|
|
||||||
### Community 71 - "getPageMetadata"
|
### Community 71 - "getPageMetadata"
|
||||||
Cohesion: 0.08
|
Cohesion: 0.10
|
||||||
Nodes (17): generateMetadata(), CatalogClient(), generateMetadata(), generateMetadata(), generateMetadata(), generateMetadata(), generateMetadata(), generateMetadata() (+9 more)
|
Nodes (13): generateMetadata(), generateMetadata(), generateMetadata(), generateMetadata(), generateMetadata(), generateMetadata(), generateMetadata(), generateMetadata() (+5 more)
|
||||||
|
|
||||||
### Community 72 - "Operational Rules & Boundaries"
|
### Community 72 - "Operational Rules & Boundaries"
|
||||||
Cohesion: 0.11
|
Cohesion: 0.11
|
||||||
@ -633,12 +648,8 @@ Cohesion: 0.13
|
|||||||
Nodes (14): ApiBearerAuth, ApiOperation, ApiQuery, ApiTags, Body, Controller, Delete, Get (+6 more)
|
Nodes (14): ApiBearerAuth, ApiOperation, ApiQuery, ApiTags, Body, Controller, Delete, Get (+6 more)
|
||||||
|
|
||||||
### Community 75 - "PetsController"
|
### Community 75 - "PetsController"
|
||||||
Cohesion: 0.05
|
Cohesion: 0.08
|
||||||
Nodes (47): CreateHealthLogDto, ApiProperty, ApiPropertyOptional, IsNotEmpty, IsOptional, IsString, CreatePetDto, ApiProperty (+39 more)
|
Nodes (32): CreateHealthLogDto, ApiProperty, ApiPropertyOptional, IsNotEmpty, IsOptional, IsString, CreateReminderDto, ApiProperty (+24 more)
|
||||||
|
|
||||||
### Community 76 - "AdminService"
|
|
||||||
Cohesion: 0.20
|
|
||||||
Nodes (4): Delete, Param, AdminService, Injectable
|
|
||||||
|
|
||||||
### Community 77 - "seo.module.ts"
|
### Community 77 - "seo.module.ts"
|
||||||
Cohesion: 0.16
|
Cohesion: 0.16
|
||||||
@ -674,7 +685,7 @@ Nodes (16): 1. Active Secret Scanning (All Modified Files), 2. Docker Container
|
|||||||
|
|
||||||
### Community 85 - "useSettingsStore"
|
### Community 85 - "useSettingsStore"
|
||||||
Cohesion: 0.09
|
Cohesion: 0.09
|
||||||
Nodes (24): AuthModal, CartDrawer, ClientLayout(), BrandLogo(), BrandLogoProps, EnamadBadge(), FAQItem, FAQSection() (+16 more)
|
Nodes (27): AuthModal, B2BPortal, CartDrawer, ClientLayout(), metadata, ArchivePage(), B2BLandingClient(), BrandLogo() (+19 more)
|
||||||
|
|
||||||
### Community 86 - "zibal.service.ts"
|
### Community 86 - "zibal.service.ts"
|
||||||
Cohesion: 0.16
|
Cohesion: 0.16
|
||||||
@ -692,29 +703,29 @@ Nodes (8): CreateEBankCheckoutDto, ApiProperty, ApiPropertyOptional, IsNotEmpty,
|
|||||||
Cohesion: 0.17
|
Cohesion: 0.17
|
||||||
Nodes (12): prisma, main(), prisma, determineSuitableFor(), findOrCreateCategory(), getProductImageUrl(), main(), parseSize() (+4 more)
|
Nodes (12): prisma, main(), prisma, determineSuitableFor(), findOrCreateCategory(), getProductImageUrl(), main(), parseSize() (+4 more)
|
||||||
|
|
||||||
### Community 90 - "ProductsService"
|
### Community 90 - "ApiBearerAuth"
|
||||||
Cohesion: 0.21
|
Cohesion: 0.25
|
||||||
Nodes (9): GetProductsDto, ApiPropertyOptional, IsEnum, IsOptional, IsString, ProductsModule, Module, ProductsService (+1 more)
|
Nodes (7): ApiBearerAuth, Body, Param, Patch, Post, Put, UseGuards
|
||||||
|
|
||||||
### Community 91 - "Reconciled Audit Roles & Assignments"
|
### Community 91 - "Reconciled Audit Roles & Assignments"
|
||||||
Cohesion: 0.12
|
Cohesion: 0.12
|
||||||
Nodes (15): 10. Documentation Engineer, 1. Lead Architect / Orchestrator, 2. React / Vite Storefront Auditor, 3. NestJS Backend Auditor, 4. Admin Features Auditor, 5. Database & Data Integrity Auditor, 6. Security Auditor, 7. TypeScript & Code Quality Auditor (+7 more)
|
Nodes (15): 10. Documentation Engineer, 1. Lead Architect / Orchestrator, 2. React / Vite Storefront Auditor, 3. NestJS Backend Auditor, 4. Admin Features Auditor, 5. Database & Data Integrity Auditor, 6. Security Auditor, 7. TypeScript & Code Quality Auditor (+7 more)
|
||||||
|
|
||||||
### Community 92 - "OrdersService"
|
### Community 92 - "OrdersService"
|
||||||
Cohesion: 0.07
|
Cohesion: 0.06
|
||||||
Nodes (35): CreateOrderDto, OrderItemDto, ApiProperty, ApiPropertyOptional, IsArray, IsNotEmpty, IsNumber, IsOptional (+27 more)
|
Nodes (35): CreateOrderDto, OrderItemDto, ApiProperty, ApiPropertyOptional, IsArray, IsNotEmpty, IsNumber, IsOptional (+27 more)
|
||||||
|
|
||||||
### Community 93 - "HomeClient.tsx"
|
### Community 93 - "HomeClient.tsx"
|
||||||
Cohesion: 0.11
|
Cohesion: 0.12
|
||||||
Nodes (19): HomeClientProps, ArchiveProductCard(), CATEGORY_MAP, ICON_MAP, BannerPlacement(), BannerPlacementProps, BlogPreviewSection(), Hero() (+11 more)
|
Nodes (18): HomeClientProps, CATEGORY_MAP, ICON_MAP, BannerPlacement(), BannerPlacementProps, BlogPreviewSection(), FAQItem, FAQSection() (+10 more)
|
||||||
|
|
||||||
### Community 94 - "Phase 3.1 — Human Review Preparation and Master Backlog Critique"
|
### Community 94 - "Phase 3.1 — Human Review Preparation and Master Backlog Critique"
|
||||||
Cohesion: 0.13
|
Cohesion: 0.13
|
||||||
Nodes (14): 10. Dependency & Wave Adjustments, 11. Acceptance Criteria Refinements, 12. Business and Product Decision Classification, 13. Final Recommended Backlog Summary, 1. Executive Assessment, 2. Findings That Require No Change, 3. Findings Requiring Task Refinements, 4. Tasks Requiring Splitting (+6 more)
|
Nodes (14): 10. Dependency & Wave Adjustments, 11. Acceptance Criteria Refinements, 12. Business and Product Decision Classification, 13. Final Recommended Backlog Summary, 1. Executive Assessment, 2. Findings That Require No Change, 3. Findings Requiring Task Refinements, 4. Tasks Requiring Splitting (+6 more)
|
||||||
|
|
||||||
### Community 95 - "blog/[slug]/page.tsx"
|
### Community 95 - "blog/[slug]/page.tsx"
|
||||||
Cohesion: 0.29
|
Cohesion: 0.26
|
||||||
Nodes (10): BlogPostPage(), generateMetadata(), getBlog(), revalidate, safeIso(), safeLocalDate(), generateMetadata(), revalidate (+2 more)
|
Nodes (11): BlogPostPage(), generateMetadata(), getBlog(), revalidate, safeIso(), safeLocalDate(), generateMetadata(), revalidate (+3 more)
|
||||||
|
|
||||||
### Community 96 - "compilerOptions"
|
### Community 96 - "compilerOptions"
|
||||||
Cohesion: 0.06
|
Cohesion: 0.06
|
||||||
@ -729,8 +740,8 @@ Cohesion: 0.13
|
|||||||
Nodes (15): scripts, build, build:nest, docs:generate, lint, seo:backfill, start, start:debug (+7 more)
|
Nodes (15): scripts, build, build:nest, docs:generate, lint, seo:backfill, start, start:debug (+7 more)
|
||||||
|
|
||||||
### Community 99 - "BlogsController"
|
### Community 99 - "BlogsController"
|
||||||
Cohesion: 0.10
|
Cohesion: 0.18
|
||||||
Nodes (14): BlogsController, ApiNotFoundResponse, ApiOkResponse, ApiOperation, ApiTags, Body, Controller, Get (+6 more)
|
Nodes (12): BlogsController, ApiNotFoundResponse, ApiOkResponse, ApiOperation, ApiTags, Body, Controller, Get (+4 more)
|
||||||
|
|
||||||
### Community 100 - "Deep Audit Summary Report"
|
### Community 100 - "Deep Audit Summary Report"
|
||||||
Cohesion: 0.14
|
Cohesion: 0.14
|
||||||
@ -757,16 +768,16 @@ Cohesion: 0.17
|
|||||||
Nodes (11): 1. Detect Test Runner from Tech Stack, 2. Execution Output Capture (Mandatory), 3. Acceptance Criteria Verification, 4. Failure Routing Protocol, 5. Success Routing Protocol, 6. Forbidden Actions, Expected JSON Output Schema, Operational Rules & Boundaries (+3 more)
|
Nodes (11): 1. Detect Test Runner from Tech Stack, 2. Execution Output Capture (Mandatory), 3. Acceptance Criteria Verification, 4. Failure Routing Protocol, 5. Success Routing Protocol, 6. Forbidden Actions, Expected JSON Output Schema, Operational Rules & Boundaries (+3 more)
|
||||||
|
|
||||||
### Community 106 - "auth.service.ts"
|
### Community 106 - "auth.service.ts"
|
||||||
Cohesion: 0.06
|
Cohesion: 0.10
|
||||||
Nodes (24): AppModule, Module, AdminLoginInput, AuthService, LoginInput, RegisterInput, Injectable, SendOtpDto (+16 more)
|
Nodes (17): AdminLoginInput, AuthService, LoginInput, RegisterInput, Injectable, SendOtpDto, ApiProperty, IsNotEmpty (+9 more)
|
||||||
|
|
||||||
### Community 107 - "PaginationDto"
|
### Community 107 - "PaginationDto"
|
||||||
Cohesion: 0.11
|
Cohesion: 0.06
|
||||||
Nodes (16): BlogsModule, Module, BlogFilterDto, PaginationDto, SortOrder, ApiPropertyOptional, IsEnum, IsInt (+8 more)
|
Nodes (23): BlogsModule, Module, BlogFilterDto, BlogsService, Injectable, PaginationDto, SortOrder, ApiPropertyOptional (+15 more)
|
||||||
|
|
||||||
### Community 108 - "PrismaService"
|
### Community 108 - "PrismaService"
|
||||||
Cohesion: 0.07
|
Cohesion: 0.06
|
||||||
Nodes (21): CategoryQuery, PetQuery, WikiQuery, BannersService, Injectable, MeliPayamakPattern, MeliPayamakResponse, SendPatternSmsOptions (+13 more)
|
Nodes (27): ApiExcludeController, CategoryQuery, B2BWholesaleOrderItem, MetricsController, Controller, Get, Res, MeliPayamakPattern (+19 more)
|
||||||
|
|
||||||
### Community 109 - "1. Summary of Integrity Repairs Performed"
|
### Community 109 - "1. Summary of Integrity Repairs Performed"
|
||||||
Cohesion: 0.17
|
Cohesion: 0.17
|
||||||
@ -784,9 +795,9 @@ Nodes (10): 1. Mark Active Task as Complete, 2. Documentation Updates, 3. Dynami
|
|||||||
Cohesion: 0.18
|
Cohesion: 0.18
|
||||||
Nodes (10): 1. Pre-Deployment Checklist, 2. Build Verification, 3. Deployment Strategy (Based on Target), 4. Post-Deployment Health Check, 5. Forbidden Actions, Expected JSON Output Schema, Operational Rules & Boundaries, Required Output Artifacts (What files to write/update) (+2 more)
|
Nodes (10): 1. Pre-Deployment Checklist, 2. Build Verification, 3. Deployment Strategy (Based on Target), 4. Post-Deployment Health Check, 5. Forbidden Actions, Expected JSON Output Schema, Operational Rules & Boundaries, Required Output Artifacts (What files to write/update) (+2 more)
|
||||||
|
|
||||||
### Community 113 - "AdminTransactionFilterDto"
|
### Community 113 - "SettingsController"
|
||||||
Cohesion: 0.25
|
Cohesion: 0.20
|
||||||
Nodes (7): AdminTransactionFilterDto, ApiPropertyOptional, IsIn, IsNumber, IsOptional, IsString, Type
|
Nodes (8): SettingsController, ApiOkResponse, ApiOperation, ApiTags, Controller, Delete, Get, Query
|
||||||
|
|
||||||
### Community 114 - "AppService"
|
### Community 114 - "AppService"
|
||||||
Cohesion: 0.29
|
Cohesion: 0.29
|
||||||
@ -820,13 +831,13 @@ Nodes (9): compilerOptions, esModuleInterop, module, moduleResolution, skipLibCh
|
|||||||
Cohesion: 0.20
|
Cohesion: 0.20
|
||||||
Nodes (9): Compile and run the project, Deployment, Description, License, Project setup, Resources, Run tests, Stay in touch (+1 more)
|
Nodes (9): Compile and run the project, Deployment, Description, License, Project setup, Resources, Run tests, Stay in touch (+1 more)
|
||||||
|
|
||||||
### Community 122 - "AdminController"
|
### Community 122 - "AdminService"
|
||||||
Cohesion: 0.14
|
Cohesion: 0.11
|
||||||
Nodes (6): AdminController, ApiBearerAuth, ApiTags, Controller, Put, UseGuards
|
Nodes (10): AdminController, ApiBearerAuth, ApiTags, Body, Controller, Post, Put, UseGuards (+2 more)
|
||||||
|
|
||||||
### Community 123 - "MetricsController"
|
### Community 123 - "users.service.ts"
|
||||||
Cohesion: 0.29
|
Cohesion: 0.13
|
||||||
Nodes (5): ApiExcludeController, MetricsController, Controller, Get, Res
|
Nodes (14): AddressDto, ApiProperty, ApiPropertyOptional, IsBoolean, IsNotEmpty, IsOptional, IsString, ApiPropertyOptional (+6 more)
|
||||||
|
|
||||||
### Community 124 - "Repository Map"
|
### Community 124 - "Repository Map"
|
||||||
Cohesion: 0.20
|
Cohesion: 0.20
|
||||||
@ -844,9 +855,9 @@ Nodes (9): name, private, scripts, build, dev, lint, preview, type (+1 more)
|
|||||||
Cohesion: 0.20
|
Cohesion: 0.20
|
||||||
Nodes (9): Arch Linux, Contributors, Install, Known problems for variable version, License, Sahel-Font, To Do (variable), طریقه استفاده از نسخه متغیر variable (+1 more)
|
Nodes (9): Arch Linux, Contributors, Install, Known problems for variable version, License, Sahel-Font, To Do (variable), طریقه استفاده از نسخه متغیر variable (+1 more)
|
||||||
|
|
||||||
### Community 129 - "wiki/[slug]/page.tsx"
|
### Community 128 - "RedisService"
|
||||||
Cohesion: 0.60
|
Cohesion: 0.15
|
||||||
Nodes (5): generateMetadata(), getRelatedProducts(), getWikiTerm(), WikiTermPage(), generateMedicalWebPageSchema()
|
Nodes (5): RedisModule, Global, Module, RedisService, Injectable
|
||||||
|
|
||||||
### Community 130 - "Sahel-Font"
|
### Community 130 - "Sahel-Font"
|
||||||
Cohesion: 0.20
|
Cohesion: 0.20
|
||||||
@ -904,9 +915,9 @@ Nodes (7): backend, distMainPath, fs, http, path, { spawn, execSync }, waitForBa
|
|||||||
Cohesion: 0.25
|
Cohesion: 0.25
|
||||||
Nodes (6): app_module_1, core_1, fs, path, swagger_1, yaml
|
Nodes (6): app_module_1, core_1, fs, path, swagger_1, yaml
|
||||||
|
|
||||||
### Community 144 - "SafeImage.tsx"
|
### Community 144 - "VetGallery.tsx"
|
||||||
Cohesion: 0.10
|
Cohesion: 0.12
|
||||||
Nodes (23): BackButton(), BackButtonProps, BlogPost, PLAYBACK_RATES, PodcastInlinePlayer(), PodcastInlinePlayerProps, PLAYBACK_RATES, PodcastPlayerModal() (+15 more)
|
Nodes (17): BackButton(), BackButtonProps, PLAYBACK_RATES, PodcastInlinePlayer(), PodcastInlinePlayerProps, VideoModalPlayer, DisplayVideoItem, FALLBACK_VIDEOS (+9 more)
|
||||||
|
|
||||||
### Community 145 - "ProductDto"
|
### Community 145 - "ProductDto"
|
||||||
Cohesion: 0.22
|
Cohesion: 0.22
|
||||||
@ -932,13 +943,13 @@ Nodes (7): PatternItem, SmsConfigState, SmsLogItem, SmsLogStats, SmsSettingsPage
|
|||||||
Cohesion: 0.29
|
Cohesion: 0.29
|
||||||
Nodes (6): 1. Executive Vision, 2. Target Audience, 3. Functional Requirements, 4. Non-Functional Requirements (Performance, Security), 5. Epic / Feature Breakdown, Product Requirement Document (PRD)
|
Nodes (6): 1. Executive Vision, 2. Target Audience, 3. Functional Requirements, 4. Non-Functional Requirements (Performance, Security), 5. Epic / Feature Breakdown, Product Requirement Document (PRD)
|
||||||
|
|
||||||
### Community 151 - "zibal-ebank.service.ts"
|
### Community 151 - "components/Skeleton.tsx"
|
||||||
Cohesion: 0.40
|
Cohesion: 0.21
|
||||||
Nodes (4): EBankCheckoutListFilter, EBankCheckoutOptions, EBankIdentifiedPaymentFilter, EBankStatementFilter
|
Nodes (5): OrderRowSkeleton(), PetProfileSkeleton(), ProductCardSkeleton(), Skeleton(), SkeletonProps
|
||||||
|
|
||||||
### Community 152 - "useCartStore"
|
### Community 152 - "lib/services/api.ts"
|
||||||
Cohesion: 0.11
|
Cohesion: 0.08
|
||||||
Nodes (15): B2BPortal, B2BPortal(), CartDrawer(), DeleteConfirmModal(), DeleteConfirmModalProps, mockProduct, ApiErr, Order (+7 more)
|
Nodes (19): BlogPostClientProps, BlogPost, ContactInfoItem, OrderDetailsModalProps, PLAYBACK_RATES, PodcastPlayerModal(), PodcastPlayerModalProps, SafeImage() (+11 more)
|
||||||
|
|
||||||
### Community 153 - "exclude"
|
### Community 153 - "exclude"
|
||||||
Cohesion: 0.22
|
Cohesion: 0.22
|
||||||
@ -952,6 +963,10 @@ Nodes (6): Attempted Command Execution Log, Backend `backend/package.json` Scrip
|
|||||||
Cohesion: 0.67
|
Cohesion: 0.67
|
||||||
Nodes (3): prisma, runSeoBackfill(), stripHtml()
|
Nodes (3): prisma, runSeoBackfill(), stripHtml()
|
||||||
|
|
||||||
|
### Community 158 - "media/[...path]/route.ts"
|
||||||
|
Cohesion: 0.60
|
||||||
|
Nodes (4): dynamic, GET(), getCandidateUrls(), HEAD()
|
||||||
|
|
||||||
### Community 159 - "with-vpn.sh"
|
### Community 159 - "with-vpn.sh"
|
||||||
Cohesion: 0.62
|
Cohesion: 0.62
|
||||||
Nodes (6): cleanup(), log(), with-vpn.sh script, start_vpn(), stop_vpn(), vpn_is_up()
|
Nodes (6): cleanup(), log(), with-vpn.sh script, start_vpn(), stop_vpn(), vpn_is_up()
|
||||||
@ -1020,9 +1035,13 @@ Nodes (4): evidenceList, ledger, mandatoryMap, mandatoryScope
|
|||||||
Cohesion: 0.40
|
Cohesion: 0.40
|
||||||
Nodes (4): activeFiles, errors, validationOutput, warnings
|
Nodes (4): activeFiles, errors, validationOutput, warnings
|
||||||
|
|
||||||
### Community 177 - "UsersService"
|
### Community 176 - "uploads/[...path]/route.ts"
|
||||||
Cohesion: 0.12
|
Cohesion: 0.60
|
||||||
Nodes (13): DEFAULT_JWT_REFRESH_SECRET, DEFAULT_JWT_SECRET, getJwtSecret(), AuthModule, Module, JwtPayload, JwtStrategy, Injectable (+5 more)
|
Nodes (4): dynamic, GET(), getCandidateUrls(), HEAD()
|
||||||
|
|
||||||
|
### Community 177 - "auth.module.ts"
|
||||||
|
Cohesion: 0.17
|
||||||
|
Nodes (10): DEFAULT_JWT_REFRESH_SECRET, DEFAULT_JWT_SECRET, getJwtSecret(), AuthModule, Module, JwtPayload, JwtStrategy, Injectable (+2 more)
|
||||||
|
|
||||||
### Community 178 - "نقشه جامع پوشش تستهای سرتاسری (E2E Test Coverage Map) — پروژه Canina"
|
### Community 178 - "نقشه جامع پوشش تستهای سرتاسری (E2E Test Coverage Map) — پروژه Canina"
|
||||||
Cohesion: 0.33
|
Cohesion: 0.33
|
||||||
@ -1044,6 +1063,14 @@ Nodes (3): Architectural Overview, Critical Review Findings & Required Enhanceme
|
|||||||
Cohesion: 0.50
|
Cohesion: 0.50
|
||||||
Nodes (3): Overview & Content Foundation, SEO & Content Requirements, 🚀 SEO & Content Strategy Review (12_seo_content)
|
Nodes (3): Overview & Content Foundation, SEO & Content Requirements, 🚀 SEO & Content Strategy Review (12_seo_content)
|
||||||
|
|
||||||
|
### Community 184 - "RegisterDto"
|
||||||
|
Cohesion: 0.22
|
||||||
|
Nodes (8): RegisterDto, ApiProperty, ApiPropertyOptional, IsEmail, IsNotEmpty, IsOptional, IsString, MinLength
|
||||||
|
|
||||||
|
### Community 185 - "SmsLogQueryDto"
|
||||||
|
Cohesion: 0.25
|
||||||
|
Nodes (7): SmsLogQueryDto, ApiPropertyOptional, IsIn, IsNumber, IsOptional, IsString, Type
|
||||||
|
|
||||||
### Community 191 - "graphify reference: add a URL and watch a folder"
|
### Community 191 - "graphify reference: add a URL and watch a folder"
|
||||||
Cohesion: 0.50
|
Cohesion: 0.50
|
||||||
Nodes (3): For /graphify add, For --watch, graphify reference: add a URL and watch a folder
|
Nodes (3): For /graphify add, For --watch, graphify reference: add a URL and watch a folder
|
||||||
@ -1068,6 +1095,18 @@ Nodes (3): Expanding the ESLint configuration, React Compiler, React + TypeScrip
|
|||||||
Cohesion: 0.50
|
Cohesion: 0.50
|
||||||
Nodes (3): Select, SelectOption, SelectProps
|
Nodes (3): Select, SelectOption, SelectProps
|
||||||
|
|
||||||
|
### Community 197 - "AdminLoginDto"
|
||||||
|
Cohesion: 0.29
|
||||||
|
Nodes (6): AdminLoginDto, ApiProperty, IsEmail, IsNotEmpty, IsString, MinLength
|
||||||
|
|
||||||
|
### Community 198 - "LoginDto"
|
||||||
|
Cohesion: 0.33
|
||||||
|
Nodes (5): LoginDto, ApiProperty, IsNotEmpty, IsString, MinLength
|
||||||
|
|
||||||
|
### Community 199 - "videos/page.tsx"
|
||||||
|
Cohesion: 0.47
|
||||||
|
Nodes (5): generateMetadata(), getInitialVideos(), Videos(), VideosPage(), generateVideoObjectSchema()
|
||||||
|
|
||||||
### Community 200 - "application/README.md"
|
### Community 200 - "application/README.md"
|
||||||
Cohesion: 0.50
|
Cohesion: 0.50
|
||||||
Nodes (3): Deploy on Vercel, Getting Started, Learn More
|
Nodes (3): Deploy on Vercel, Getting Started, Learn More
|
||||||
@ -1084,10 +1123,6 @@ Nodes (3): ADR-AUTH-001: Admin Panel Authentication Architecture & Token Managem
|
|||||||
Cohesion: 0.67
|
Cohesion: 0.67
|
||||||
Nodes (3): Shabnam Font README, Shabnam Font Sample, Vazir Font
|
Nodes (3): Shabnam Font README, Shabnam Font Sample, Vazir Font
|
||||||
|
|
||||||
### Community 231 - "WikiController"
|
|
||||||
Cohesion: 0.21
|
|
||||||
Nodes (9): ApiNotFoundResponse, ApiOkResponse, ApiOperation, ApiTags, Controller, Get, Param, Query (+1 more)
|
|
||||||
|
|
||||||
### Community 298 - ".initiateOrderPayment"
|
### Community 298 - ".initiateOrderPayment"
|
||||||
Cohesion: 0.20
|
Cohesion: 0.20
|
||||||
Nodes (10): ApiPropertyOptional, IsOptional, IsString, ZibalCallbackQueryDto, ApiBadRequestResponse, ApiOkResponse, Req, Res (+2 more)
|
Nodes (10): ApiPropertyOptional, IsOptional, IsString, ZibalCallbackQueryDto, ApiBadRequestResponse, ApiOkResponse, Req, Res (+2 more)
|
||||||
@ -1107,22 +1142,22 @@ Nodes (3): generateMetadata(), getHomeData(), Home()
|
|||||||
## Knowledge Gaps
|
## Knowledge Gaps
|
||||||
- **1343 isolated node(s):** `$schema`, `collection`, `sourceRoot`, `deleteOutDir`, `name` (+1338 more)
|
- **1343 isolated node(s):** `$schema`, `collection`, `sourceRoot`, `deleteOutDir`, `name` (+1338 more)
|
||||||
These have ≤1 connection - possible missing edges or undocumented components.
|
These have ≤1 connection - possible missing edges or undocumented components.
|
||||||
- **102 thin communities (<3 nodes) omitted from report** — run `graphify query` to explore isolated nodes.
|
- **122 thin communities (<3 nodes) omitted from report** — run `graphify query` to explore isolated nodes.
|
||||||
|
|
||||||
## Suggested Questions
|
## Suggested Questions
|
||||||
_Questions this graph is uniquely positioned to answer:_
|
_Questions this graph is uniquely positioned to answer:_
|
||||||
|
|
||||||
- **Why does `ApiResponse` connect `src/services/api.ts` to `BlogsController`, `AuthController`, `WikiController`, `PetsController`, `UsersController`, `HomeController`, `ProductsController`, `OrdersService`?**
|
- **Why does `ApiResponse` connect `src/services/api.ts` to `BlogsController`, `AuthController`, `MediaController`, `PetsController`, `UsersController`, `HomeController`, `ProductsService`, `OrdersService`?**
|
||||||
_High betweenness centrality (0.080) - this node is a cross-community bridge._
|
_High betweenness centrality (0.080) - this node is a cross-community bridge._
|
||||||
- **Why does `Roles()` connect `Roles` to `SettingsController`, `CmsController`, `tickets.controller.ts`, `reviews.controller.ts`, `ReviewsController`, `JwtAuthGuard`, `ProductsController`, `MenuService`, `WholesaleApplyDto`, `B2BController`, `FaqService`, `SslController`, `BannersController`, `TestimonialsController`, `IngredientsController`, `PrescriptionsController`, `SmartAdvisorService`, `ContactService`, `ProductsService`?**
|
- **Why does `Roles()` connect `Roles` to `WholesaleApplyDto`, `B2BService`, `FaqService`, `CmsController`, `ApiBearerAuth`, `tickets.controller.ts`, `SslController`, `BannersService`, `CreateReviewDto`, `TestimonialsService`, `IngredientsService`, `SettingsController`, `JwtAuthGuard`, `ProductsService`, `PrescriptionsService`, `SmartAdvisorService`, `MenuService`, `ContactService`?**
|
||||||
_High betweenness centrality (0.063) - this node is a cross-community bridge._
|
_High betweenness centrality (0.063) - this node is a cross-community bridge._
|
||||||
- **Why does `JwtAuthGuard` connect `JwtAuthGuard` to `app.module.ts`, `CmsController`, `tickets.controller.ts`, `reviews.controller.ts`, `auth.service.ts`, `PaginationDto`, `PetsController`, `UsersService`, `admin.service.ts`, `admin.module.ts`, `CreateVideoDto`, `ProductsService`, `OrdersService`?**
|
- **Why does `JwtAuthGuard` connect `JwtAuthGuard` to `PetsController`, `CmsController`, `tickets.controller.ts`, `pets/pets.controller.ts`, `auth.service.ts`, `PaginationDto`, `DoctorQueryDto`, `ProductsService`, `admin.service.ts`, `admin.module.ts`, `users.service.ts`, `OrdersService`?**
|
||||||
_High betweenness centrality (0.035) - this node is a cross-community bridge._
|
_High betweenness centrality (0.035) - this node is a cross-community bridge._
|
||||||
- **What connects `$schema`, `collection`, `sourceRoot` to the rest of the system?**
|
- **What connects `$schema`, `collection`, `sourceRoot` to the rest of the system?**
|
||||||
_1343 weakly-connected nodes found - possible documentation gaps or missing edges._
|
_1343 weakly-connected nodes found - possible documentation gaps or missing edges._
|
||||||
- **Should `app.module.ts` be split into smaller, more focused modules?**
|
- **Should `app.module.ts` be split into smaller, more focused modules?**
|
||||||
_Cohesion score 0.06748911465892599 - nodes in this community are weakly interconnected._
|
_Cohesion score 0.053613053613053616 - nodes in this community are weakly interconnected._
|
||||||
- **Should `SettingsController` be split into smaller, more focused modules?**
|
- **Should `SettingsService` be split into smaller, more focused modules?**
|
||||||
_Cohesion score 0.07333333333333333 - nodes in this community are weakly interconnected._
|
_Cohesion score 0.09782608695652174 - nodes in this community are weakly interconnected._
|
||||||
- **Should `productService.ts` be split into smaller, more focused modules?**
|
- **Should `productService.ts` be split into smaller, more focused modules?**
|
||||||
_Cohesion score 0.06440677966101695 - nodes in this community are weakly interconnected._
|
_Cohesion score 0.06384180790960452 - 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
10456
graphify-out/graph.json
10456
graphify-out/graph.json
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
22
nginx.conf
22
nginx.conf
@ -19,6 +19,17 @@ server {
|
|||||||
proxy_cache_bypass $http_upgrade;
|
proxy_cache_bypass $http_upgrade;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Uploads Static Files
|
||||||
|
location /uploads {
|
||||||
|
proxy_pass http://__BACKEND_HOST__:3000;
|
||||||
|
proxy_http_version 1.1;
|
||||||
|
proxy_set_header Upgrade $http_upgrade;
|
||||||
|
proxy_set_header Connection 'upgrade';
|
||||||
|
proxy_set_header Host $host;
|
||||||
|
proxy_cache_bypass $http_upgrade;
|
||||||
|
client_max_body_size 50M;
|
||||||
|
}
|
||||||
|
|
||||||
# Backend API
|
# Backend API
|
||||||
location /api {
|
location /api {
|
||||||
proxy_pass http://__BACKEND_HOST__:3000;
|
proxy_pass http://__BACKEND_HOST__:3000;
|
||||||
@ -50,6 +61,17 @@ server {
|
|||||||
try_files $uri $uri/ /index.html;
|
try_files $uri $uri/ /index.html;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Uploads Static Files for Admin
|
||||||
|
location /uploads {
|
||||||
|
proxy_pass http://__BACKEND_HOST__:3000;
|
||||||
|
proxy_http_version 1.1;
|
||||||
|
proxy_set_header Upgrade $http_upgrade;
|
||||||
|
proxy_set_header Connection 'upgrade';
|
||||||
|
proxy_set_header Host $host;
|
||||||
|
proxy_cache_bypass $http_upgrade;
|
||||||
|
client_max_body_size 50M;
|
||||||
|
}
|
||||||
|
|
||||||
# Backend API for Admin
|
# Backend API for Admin
|
||||||
location /api {
|
location /api {
|
||||||
proxy_pass http://__BACKEND_HOST__:3000;
|
proxy_pass http://__BACKEND_HOST__:3000;
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user