feat(settings): add admin toggle for prescription upload button and bind to header
Some checks failed
E2E Playwright Tests / Run Full E2E & Security Suites (push) Waiting to run
Deploy Canina / deploy (push) Has been cancelled

This commit is contained in:
parsa aghaei 2026-08-26 14:32:30 +03:30
parent 3109e30fd7
commit 0132cce0cb
13 changed files with 5099 additions and 4983 deletions

View File

@ -33,6 +33,7 @@ export default function SystemSettingsPage() {
CATALOG_ALLOW_CART: 'false',
CATALOG_ALLOW_CHECKOUT: 'false',
CATALOG_PREORDER_BTN: 'false',
PRESCRIPTION_UPLOAD_ENABLED: 'true',
});
const [isLoading, setIsLoading] = useState(true);
@ -64,6 +65,7 @@ export default function SystemSettingsPage() {
CATALOG_ALLOW_CART: d.CATALOG_ALLOW_CART || 'false',
CATALOG_ALLOW_CHECKOUT: d.CATALOG_ALLOW_CHECKOUT || 'false',
CATALOG_PREORDER_BTN: d.CATALOG_PREORDER_BTN || 'false',
PRESCRIPTION_UPLOAD_ENABLED: d.PRESCRIPTION_UPLOAD_ENABLED !== undefined ? d.PRESCRIPTION_UPLOAD_ENABLED : 'true',
});
}
})
@ -310,6 +312,35 @@ export default function SystemSettingsPage() {
</label>
</div>
{/* Prescription Upload Button Toggle */}
<div className="flex items-center justify-between p-4 bg-emerald-50/60 rounded-2xl border border-emerald-200/80 md:col-span-2">
<div className="flex items-center gap-3">
<div className="w-10 h-10 rounded-xl bg-emerald-600 text-white flex items-center justify-center font-black">
<CheckCircle2 className="w-5 h-5" />
</div>
<div>
<h4 className="font-bold text-gray-900 text-sm">دکمه و امکان «ثبت نسخه دامپزشک» در سایت فعال باشد</h4>
<p className="text-xs text-gray-600 mt-0.5">
با غیرفعالسازی این گزینه، دکمه و پنجره ثبت نسخه در هدر دسکتاپ و منوی موبایل پنهان میشود.
</p>
</div>
</div>
<label className="relative inline-flex items-center cursor-pointer">
<input
type="checkbox"
className="sr-only peer"
checked={catalogSettings.PRESCRIPTION_UPLOAD_ENABLED !== 'false'}
onChange={(e) =>
setCatalogSettings({
...catalogSettings,
PRESCRIPTION_UPLOAD_ENABLED: e.target.checked ? 'true' : 'false',
})
}
/>
<div className="w-12 h-6 bg-gray-200 peer-focus:outline-none rounded-full peer peer-checked:after:translate-x-full peer-checked:after:border-white after:content-[''] after:absolute after:top-[2px] after:left-[2px] after:bg-white after:border-gray-300 after:border after:rounded-full after:h-5 after:w-5 after:transition-all peer-checked:bg-emerald-600"></div>
</label>
</div>
<div className="md:col-span-2">
<label className="block text-sm font-bold text-gray-700 mb-1">
شماره تماس پشتیبانی اضطراری (در زمان تعمیرات)

View File

@ -46,6 +46,7 @@ export default function Header({
const [searchQuery, setSearchQuery] = useState("");
const [isMobileMenuOpen, setIsMobileMenuOpen] = useState(false);
const isB2BEnabled = useSettingsStore((s) => s.getBoolean('b2bRegistrationOpen', true) && s.getBoolean('b2b_enabled', true));
const isPrescriptionEnabled = useSettingsStore((s) => s.getText('PRESCRIPTION_UPLOAD_ENABLED', 'true') !== 'false');
const [menuItems, setMenuItems] = useState<{
id: string;
@ -239,15 +240,17 @@ export default function Header({
{/* Left Action Buttons */}
<div className="flex items-center gap-1.5 sm:gap-3 shrink-0">
{/* Prescription Upload Button (Desktop & Mobile) */}
<button
onClick={() => setIsPrescriptionModalOpen(true)}
className="flex items-center gap-1.5 px-2.5 sm:px-3 py-2 bg-emerald-50 text-emerald-700 border border-emerald-200 hover:bg-emerald-100 rounded-xl text-[11px] sm:text-xs font-black transition-all shadow-xs cursor-pointer"
title="ثبت نسخه دامپزشک"
>
<FileHeart className="w-3.5 h-3.5 sm:w-4 sm:h-4 text-emerald-600 shrink-0" />
<span className="hidden xs:inline sm:inline">ثبت نسخه دامپزشک</span>
<span className="inline xs:hidden sm:hidden">ثبت نسخه</span>
</button>
{isPrescriptionEnabled && (
<button
onClick={() => setIsPrescriptionModalOpen(true)}
className="flex items-center gap-1.5 px-2.5 sm:px-3 py-2 bg-emerald-50 text-emerald-700 border border-emerald-200 hover:bg-emerald-100 rounded-xl text-[11px] sm:text-xs font-black transition-all shadow-xs cursor-pointer"
title="ثبت نسخه دامپزشک"
>
<FileHeart className="w-3.5 h-3.5 sm:w-4 sm:h-4 text-emerald-600 shrink-0" />
<span className="hidden xs:inline sm:inline">ثبت نسخه دامپزشک</span>
<span className="inline xs:hidden sm:hidden">ثبت نسخه</span>
</button>
)}
{/* User Account Button with Dropdown & Pets List */}
{isLoggedIn ? (
@ -528,25 +531,27 @@ export default function Header({
</form>
{/* Direct Prescription CTA in Mobile Drawer */}
<button
type="button"
onClick={() => {
setIsMobileMenuOpen(false);
setIsPrescriptionModalOpen(true);
}}
className="w-full flex items-center justify-between p-3.5 bg-gradient-to-r from-emerald-500 to-teal-600 text-white rounded-2xl font-black text-xs shadow-md shadow-emerald-500/20 hover:brightness-105 transition-all cursor-pointer font-vazir"
>
<div className="flex items-center gap-2.5">
<div className="p-1.5 bg-white/20 rounded-xl">
<FileHeart className="w-4 h-4 text-white" />
{isPrescriptionEnabled && (
<button
type="button"
onClick={() => {
setIsMobileMenuOpen(false);
setIsPrescriptionModalOpen(true);
}}
className="w-full flex items-center justify-between p-3.5 bg-gradient-to-r from-emerald-500 to-teal-600 text-white rounded-2xl font-black text-xs shadow-md shadow-emerald-500/20 hover:brightness-105 transition-all cursor-pointer font-vazir"
>
<div className="flex items-center gap-2.5">
<div className="p-1.5 bg-white/20 rounded-xl">
<FileHeart className="w-4 h-4 text-white" />
</div>
<div className="text-right">
<div className="text-xs font-black">ثبت و استعلام نسخه دامپزشک</div>
<div className="text-[10px] text-emerald-100 font-medium">تامین فوری دارو و مکملهای اورجینال</div>
</div>
</div>
<div className="text-right">
<div className="text-xs font-black">ثبت و استعلام نسخه دامپزشک</div>
<div className="text-[10px] text-emerald-100 font-medium">تامین فوری دارو و مکملهای اورجینال</div>
</div>
</div>
<span className="text-lg"></span>
</button>
<span className="text-lg"></span>
</button>
)}
{/* Dynamic Menu Groups in Mobile Drawer */}
{headerNavItems.map((navGroup) => {

View File

@ -147,7 +147,7 @@
"145": "admin.service.ts",
"146": "System Discovery",
"147": "HomeClient.tsx",
"148": "bcrypt",
"148": "@nestjs/swagger",
"149": "SmsSettingsPage.tsx",
"150": "Product Requirement Document (PRD)",
"151": "class-transformer",
@ -318,8 +318,8 @@
"316": "prettier",
"317": "revalidate/route.ts",
"318": "MaskableField.tsx",
"319": "eslint-config-next",
"320": "eslint",
"319": "@eslint/js",
"320": "@testing-library/react",
"321": "orders/page.tsx",
"322": "pets/page.tsx",
"323": "@types/react-dom",

File diff suppressed because one or more lines are too long

View File

@ -3,17 +3,17 @@
"1": "app.module.ts",
"2": "SmsService",
"3": "ProductService",
"4": "toPersian",
"4": "ProductPage.tsx",
"5": "CmsController",
"6": "TicketsService",
"6": "tickets.controller.ts",
"7": "Button.tsx",
"8": "users.controller.ts",
"8": "users.service.ts",
"9": "devDependencies",
"10": "reviews.controller.ts",
"11": "MediaSelector.tsx",
"12": "index.ts",
"13": "app-audit-verification.e2e-spec.js",
"14": "BlogsService",
"14": "PetProfile.tsx",
"15": "src/services/api.ts",
"16": "DoctorQueryDto",
"17": "schema.ts",
@ -32,7 +32,7 @@
"30": "DEVOPS-001",
"31": "DOC-001",
"32": "adminRoutes.tsx",
"33": "WholesaleApplyDto",
"33": "WholesaleService",
"34": "B2BService",
"35": "AuthController",
"36": "FaqService",
@ -67,7 +67,7 @@
"65": "app.e2e-spec.js",
"66": "ApiOperation",
"67": "PetsController",
"68": "lib/services/api.ts",
"68": "UserDashboard.tsx",
"69": "Required Review Group Closures",
"70": "compilerOptions",
"71": "getPageMetadata",
@ -75,7 +75,7 @@
"73": "Operational Rules & Boundaries",
"74": "WikiController",
"75": "PetsController",
"76": "AdminService",
"76": "Param",
"77": "seo.module.ts",
"78": "rss.xml/route.ts",
"79": "🏢 AI Software Agency — Master Orchestration Protocol v3",
@ -89,12 +89,12 @@
"87": "dependencies",
"88": "CreateEBankCheckoutDto",
"89": "seed-products.ts",
"90": "userStore.ts",
"90": "lib/services/api.ts",
"91": "Reconciled Audit Roles & Assignments",
"92": "OrdersService",
"93": "CheckoutPage.tsx",
"93": "BlogsService",
"94": "Phase 3.1 — Human Review Preparation and Master Backlog Critique",
"95": "blog/[slug]/page.tsx",
"95": "wiki/[slug]/page.tsx",
"96": "compilerOptions",
"97": "InitiatePaymentDto",
"98": "scripts",
@ -112,7 +112,7 @@
"110": "Operational Rules & Boundaries",
"111": "Operational Rules & Boundaries",
"112": "Operational Rules & Boundaries",
"113": "videos/page.tsx",
"113": "AdminService",
"114": "AppService",
"115": "VetGallery.tsx",
"116": "Vazirmatn Changelog",
@ -122,13 +122,13 @@
"120": "compilerOptions",
"121": "backend/README.md",
"122": "AdminController",
"123": "AuthService",
"123": "auth.service.ts",
"124": "Repository Map",
"125": "validate_integrity.js",
"126": "admin-panel/package.json",
"127": "Sahel-Font",
"128": "Body",
"129": "auth.service.ts",
"128": ".createCoupon",
"129": "auth.controller.ts",
"130": "Sahel-Font",
"131": "Role & Core Objective",
"132": "orchestrate.py",
@ -143,10 +143,10 @@
"141": "application/package.json",
"142": "start-dev.js",
"143": "generate-openapi.js",
"144": "@testing-library/react",
"144": "WholesaleApplyDto",
"145": "admin.service.ts",
"146": "System Discovery",
"147": "PodcastPlayerModal.tsx",
"147": "HomeClient.tsx",
"148": "bcrypt",
"149": "SmsSettingsPage.tsx",
"150": "Product Requirement Document (PRD)",
@ -176,7 +176,7 @@
"174": "rebuild_honest_ledger.js",
"175": "validate_evidence_grade.js",
"176": "@nestjs/core",
"177": "@eslint/js",
"177": "trust-seals/page.tsx",
"178": "نقشه جامع پوشش تست‌های سرتاسری (E2E Test Coverage Map) — پروژه Canina",
"179": "@nestjs/jwt",
"180": "API Contract Specification",
@ -196,7 +196,7 @@
"194": "Raw Finding Verification & Disposition Report",
"195": "React + TypeScript + Vite",
"196": "Select.tsx",
"197": "SmsLogQueryDto",
"197": "app/page.tsx",
"198": "@nestjs/throttler",
"199": "passport",
"200": "application/README.md",
@ -319,6 +319,9 @@
"317": "revalidate/route.ts",
"318": "MaskableField.tsx",
"319": "eslint-config-next",
"324": "catalog/page.tsx",
"320": "eslint",
"321": "orders/page.tsx",
"322": "pets/page.tsx",
"323": "@types/react-dom",
"327": "eslint-plugin-react-refresh"
}

View File

@ -1,16 +1,16 @@
# Graph Report - canina (2026-08-26)
## Corpus Check
- 587 files · ~1,333,603 words
- 589 files · ~1,333,629 words
- Verdict: corpus is large enough that graph structure adds value.
## Summary
- 4110 nodes · 7412 edges · 322 communities (205 shown, 117 thin omitted)
- 4114 nodes · 7414 edges · 325 communities (206 shown, 119 thin omitted)
- Extraction: 96% EXTRACTED · 4% INFERRED · 0% AMBIGUOUS · INFERRED: 281 edges (avg confidence: 0.79)
- Token cost: 0 input · 0 output
## Graph Freshness
- Built from commit: `63e10449`
- Built from commit: `e797cf91`
- Run `git rev-parse HEAD` and compare to check if the graph is stale.
- Run `graphify update .` after code changes (no API cost).
@ -19,17 +19,17 @@
- app.module.ts
- SmsService
- ProductService
- toPersian
- ProductPage.tsx
- CmsController
- TicketsService
- tickets.controller.ts
- Button.tsx
- users.controller.ts
- users.service.ts
- devDependencies
- reviews.controller.ts
- MediaSelector.tsx
- index.ts
- app-audit-verification.e2e-spec.js
- BlogsService
- PetProfile.tsx
- src/services/api.ts
- DoctorQueryDto
- schema.ts
@ -48,7 +48,7 @@
- DEVOPS-001
- DOC-001
- adminRoutes.tsx
- WholesaleApplyDto
- WholesaleService
- B2BService
- AuthController
- FaqService
@ -83,7 +83,7 @@
- app.e2e-spec.js
- ApiOperation
- PetsController
- lib/services/api.ts
- UserDashboard.tsx
- Required Review Group Closures
- compilerOptions
- getPageMetadata
@ -91,7 +91,7 @@
- Operational Rules & Boundaries
- WikiController
- PetsController
- AdminService
- Param
- seo.module.ts
- rss.xml/route.ts
- 🏢 AI Software Agency — Master Orchestration Protocol v3
@ -105,12 +105,12 @@
- dependencies
- CreateEBankCheckoutDto
- seed-products.ts
- userStore.ts
- lib/services/api.ts
- Reconciled Audit Roles & Assignments
- OrdersService
- CheckoutPage.tsx
- BlogsService
- Phase 3.1 — Human Review Preparation and Master Backlog Critique
- blog/[slug]/page.tsx
- wiki/[slug]/page.tsx
- compilerOptions
- InitiatePaymentDto
- scripts
@ -128,7 +128,7 @@
- Operational Rules & Boundaries
- Operational Rules & Boundaries
- Operational Rules & Boundaries
- videos/page.tsx
- AdminService
- AppService
- VetGallery.tsx
- Vazirmatn Changelog
@ -138,13 +138,13 @@
- compilerOptions
- backend/README.md
- AdminController
- AuthService
- auth.service.ts
- Repository Map
- validate_integrity.js
- admin-panel/package.json
- Sahel-Font
- Body
- auth.service.ts
- .createCoupon
- auth.controller.ts
- Sahel-Font
- Role & Core Objective
- orchestrate.py
@ -159,10 +159,10 @@
- application/package.json
- start-dev.js
- generate-openapi.js
- @testing-library/react
- WholesaleApplyDto
- admin.service.ts
- System Discovery
- PodcastPlayerModal.tsx
- HomeClient.tsx
- bcrypt
- SmsSettingsPage.tsx
- Product Requirement Document (PRD)
@ -191,7 +191,7 @@
- rebuild_honest_ledger.js
- validate_evidence_grade.js
- @nestjs/core
- @eslint/js
- trust-seals/page.tsx
- نقشه جامع پوشش تست‌های سرتاسری (E2E Test Coverage Map) — پروژه Canina
- @nestjs/jwt
- API Contract Specification
@ -211,7 +211,7 @@
- Raw Finding Verification & Disposition Report
- React + TypeScript + Vite
- Select.tsx
- SmsLogQueryDto
- app/page.tsx
- @nestjs/throttler
- passport
- application/README.md
@ -317,7 +317,8 @@
- revalidate/route.ts
- MaskableField.tsx
- eslint-config-next
- catalog/page.tsx
- eslint
- @types/react-dom
- eslint-plugin-react-refresh
## God Nodes (most connected - your core abstractions)
@ -349,33 +350,33 @@
- 3-file cycle: `frontend/application/lib/services/api.ts -> frontend/application/lib/store/userStore.ts -> frontend/application/lib/store/cartStore.ts -> frontend/application/lib/services/api.ts`
- 4-file cycle: `frontend/application/lib/services/api.ts -> frontend/application/lib/store/userStore.ts -> frontend/application/lib/store/cartStore.ts -> frontend/application/lib/services/orderService.ts -> frontend/application/lib/services/api.ts`
## Communities (322 total, 117 thin omitted)
## Communities (325 total, 119 thin omitted)
### Community 0 - "Roles"
Cohesion: 0.24
Nodes (13): Roles(), PaymentController, ApiBearerAuth, ApiOperation, ApiTags, Body, Controller, Get (+5 more)
### Community 1 - "app.module.ts"
Cohesion: 0.07
Nodes (36): B2BModule, Module, BannersModule, Module, CmsModule, Module, SmsModule, Global (+28 more)
Cohesion: 0.06
Nodes (41): B2BModule, Module, BannersModule, Module, CmsModule, Module, RevalidationModule, Global (+33 more)
### Community 2 - "SmsService"
Cohesion: 0.06
Nodes (20): SmsService, Injectable, SettingsController, ApiBearerAuth, ApiOkResponse, ApiOperation, ApiTags, Body (+12 more)
Nodes (27): SmsService, Injectable, SmsLogQueryDto, ApiPropertyOptional, IsIn, IsNumber, IsOptional, IsString (+19 more)
### Community 3 - "ProductService"
Cohesion: 0.06
Nodes (36): dynamic, revalidate, DEFAULT_CATEGORIES, dynamic, revalidate, dynamic, revalidate, BlogCategory (+28 more)
Nodes (34): dynamic, revalidate, DEFAULT_CATEGORIES, dynamic, revalidate, dynamic, revalidate, BlogCategory (+26 more)
### Community 4 - "toPersian"
Cohesion: 0.11
Nodes (17): BlogPreviewSection(), HeaderButton(), HeaderButtonProps, PLAYBACK_RATES, PodcastInlinePlayer(), PodcastInlinePlayerProps, CalculatorState, ICON_MAP (+9 more)
### Community 4 - "ProductPage.tsx"
Cohesion: 0.13
Nodes (14): revalidate, PLAYBACK_RATES, PodcastInlinePlayer(), PodcastInlinePlayerProps, CalculatorState, ICON_MAP, ProductPage(), ProductReviews (+6 more)
### Community 5 - "CmsController"
Cohesion: 0.09
Nodes (24): CmsController, ApiBearerAuth, ApiOperation, ApiTags, Body, Controller, Delete, Get (+16 more)
### Community 6 - "TicketsService"
### Community 6 - "tickets.controller.ts"
Cohesion: 0.09
Nodes (29): AdminUpdateTicketDto, CreateTicketDto, ReplyTicketDto, ApiProperty, ApiPropertyOptional, IsNotEmpty, IsOptional, IsString (+21 more)
@ -383,17 +384,17 @@ Nodes (29): AdminUpdateTicketDto, CreateTicketDto, ReplyTicketDto, ApiProperty,
Cohesion: 0.12
Nodes (14): Button(), ButtonProps, ButtonSize, ButtonVariant, Spinner(), FAQ, BlogCommentItem, ProductReview (+6 more)
### Community 8 - "users.controller.ts"
### Community 8 - "users.service.ts"
Cohesion: 0.13
Nodes (13): AddressDto, ApiProperty, ApiPropertyOptional, IsBoolean, IsNotEmpty, IsOptional, IsString, ApiPropertyOptional (+5 more)
Nodes (14): AddressDto, ApiProperty, ApiPropertyOptional, IsBoolean, IsNotEmpty, IsOptional, IsString, ApiPropertyOptional (+6 more)
### Community 9 - "devDependencies"
Cohesion: 0.22
Nodes (9): devDependencies, eslint, @types/bcryptjs, @types/node, typescript, eslint, @types/node, typescript (+1 more)
Nodes (9): devDependencies, @eslint/js, @types/bcryptjs, @types/node, typescript, @eslint/js, @types/node, typescript (+1 more)
### Community 10 - "reviews.controller.ts"
Cohesion: 0.07
Nodes (32): CreateReviewDto, ApiProperty, IsInt, IsNotEmpty, IsOptional, IsString, Min, ApiProperty (+24 more)
Nodes (30): CreateReviewDto, ApiProperty, IsInt, IsNotEmpty, IsOptional, IsString, Min, ApiProperty (+22 more)
### Community 11 - "MediaSelector.tsx"
Cohesion: 0.06
@ -404,12 +405,12 @@ Cohesion: 0.06
Nodes (24): backend, frontend, playwright.config.ts, @playwright/test, tests/**/*.ts, authFile, test, compilerOptions (+16 more)
### Community 13 - "app-audit-verification.e2e-spec.js"
Cohesion: 0.07
Nodes (26): EnvironmentVariables, IsNotEmpty, IsOptional, IsString, validateEnv(), CustomHttpExceptionFilter, Catch, PrismaExceptionFilter (+18 more)
Cohesion: 0.06
Nodes (28): AppModule, Module, EnvironmentVariables, IsNotEmpty, IsOptional, IsString, validateEnv(), CustomHttpExceptionFilter (+20 more)
### Community 14 - "BlogsService"
Cohesion: 0.07
Nodes (7): BlogsService, Injectable, RevalidationModule, Global, Module, RevalidationService, Injectable
### Community 14 - "PetProfile.tsx"
Cohesion: 0.14
Nodes (19): metadata, Header(), MENU_ICONS, PrescriptionUploadModal(), PrescriptionUploadModalProps, CURRENT_SYMPTOMS, MEDICAL_HISTORIES, SmartAdvisor() (+11 more)
### Community 15 - "src/services/api.ts"
Cohesion: 0.08
@ -420,24 +421,24 @@ Cohesion: 0.09
Nodes (24): DoctorsController, ApiBearerAuth, ApiOperation, ApiTags, Body, Controller, Delete, Get (+16 more)
### Community 17 - "schema.ts"
Cohesion: 0.15
Nodes (18): B2BPage(), generateMetadata(), ContactPage(), generateMetadata(), generateMetadata(), getRelatedProducts(), getWikiTerm(), WikiTermPage() (+10 more)
Cohesion: 0.14
Nodes (18): B2BPage(), generateMetadata(), ContactPage(), generateMetadata(), generateMetadata(), getInitialVideos(), Videos(), ContactFormClient() (+10 more)
### Community 18 - "JwtAuthGuard"
Cohesion: 0.15
Nodes (11): JwtAuthGuard, Injectable, ROLES_KEY, RequestWithUser, RolesGuard, Injectable, ApiPropertyOptional, IsOptional (+3 more)
Cohesion: 0.18
Nodes (7): JwtAuthGuard, Injectable, ROLES_KEY, RequestWithUser, RolesGuard, Injectable, UserReqPayload
### Community 19 - "ProductsService"
Cohesion: 0.10
Nodes (19): GetProductsDto, ApiPropertyOptional, IsEnum, IsOptional, IsString, ProductsController, ApiOperation, ApiTags (+11 more)
Cohesion: 0.11
Nodes (14): ProductsController, ApiOperation, ApiTags, Body, Controller, Get, Param, Patch (+6 more)
### Community 20 - "CreateVideoDto"
Cohesion: 0.07
Nodes (32): CreateVideoDto, ApiProperty, ApiPropertyOptional, IsBoolean, IsNotEmpty, IsOptional, IsString, UpdateVideoDto (+24 more)
### Community 21 - "admin.module.ts"
Cohesion: 0.08
Nodes (17): AdminModule, Module, ReportsController, ApiBearerAuth, ApiOperation, ApiQuery, ApiTags, Controller (+9 more)
Cohesion: 0.07
Nodes (20): AdminModule, Module, PetQuery, PetsService, Injectable, ReportsController, ApiBearerAuth, ApiOperation (+12 more)
### Community 22 - "FeaturedProducts.tsx"
Cohesion: 0.14
@ -483,9 +484,9 @@ Nodes (31): Acceptance Criteria, Affected Application, Affected Files, Alternati
Cohesion: 0.06
Nodes (24): App(), Props, RouteErrorBoundary, State, HeroBanner, VetTestimonial, BestSellerItem, CategoryDistItem (+16 more)
### Community 33 - "WholesaleApplyDto"
Cohesion: 0.10
Nodes (20): ApiProperty, ApiPropertyOptional, IsNotEmpty, IsOptional, IsString, WholesaleApplyDto, ApiBearerAuth, ApiOperation (+12 more)
### Community 33 - "WholesaleService"
Cohesion: 0.14
Nodes (14): ApiBearerAuth, ApiOperation, ApiTags, Body, Controller, Get, Param, Post (+6 more)
### Community 34 - "B2BService"
Cohesion: 0.12
@ -544,7 +545,7 @@ Cohesion: 0.13
Nodes (14): IngredientsController, ApiBearerAuth, ApiOperation, ApiTags, Body, Controller, Delete, Get (+6 more)
### Community 48 - "UsersController"
Cohesion: 0.20
Cohesion: 0.19
Nodes (16): ApiBadRequestResponse, ApiBearerAuth, ApiCreatedResponse, ApiOkResponse, ApiOperation, ApiTags, Body, Controller (+8 more)
### Community 49 - "devDependencies"
@ -553,11 +554,11 @@ Nodes (19): autoprefixer, devDependencies, autoprefixer, eslint, @eslint/js, glo
### Community 50 - "devDependencies"
Cohesion: 0.13
Nodes (15): devDependencies, eslint, jsdom, tailwindcss, @tailwindcss/postcss, @types/node, @types/react-dom, @vitejs/plugin-react (+7 more)
Nodes (15): devDependencies, eslint, jsdom, tailwindcss, @tailwindcss/postcss, @testing-library/react, @types/node, @vitejs/plugin-react (+7 more)
### Community 51 - "BlogsController"
Cohesion: 0.14
Nodes (16): BlogsController, ApiBearerAuth, ApiOperation, ApiQuery, ApiTags, Body, Controller, Delete (+8 more)
Cohesion: 0.07
Nodes (18): BlogsController, ApiBearerAuth, ApiOperation, ApiQuery, ApiTags, Body, Controller, Delete (+10 more)
### Community 52 - "PrescriptionsService"
Cohesion: 0.14
@ -596,7 +597,7 @@ Cohesion: 0.22
Nodes (7): AdminTransactionFilterDto, ApiPropertyOptional, IsIn, IsNumber, IsOptional, IsString, Type
### Community 62 - "ProductDto"
Cohesion: 0.22
Cohesion: 0.17
Nodes (7): ProductDto, ApiPropertyOptional, IsArray, IsBoolean, IsNumber, IsOptional, IsString
### Community 63 - "dependencies"
@ -612,16 +613,16 @@ Cohesion: 0.50
Nodes (3): app_module_1, supertest_1, testing_1
### Community 66 - "ApiOperation"
Cohesion: 0.12
Cohesion: 0.22
Nodes (8): ApiOperation, ApiQuery, Get, Query, AdminQueryDto, ApiPropertyOptional, IsOptional, IsString
### Community 67 - "PetsController"
Cohesion: 0.10
Nodes (14): PetsController, ApiBearerAuth, ApiOperation, ApiQuery, ApiTags, Controller, Delete, Get (+6 more)
Cohesion: 0.15
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
Nodes (29): VerifyContent(), metadata, BlogPostClientProps, BlogPost, ContactInfoItem, OrderDetailsModal(), OrderDetailsModalProps, PetProfile() (+21 more)
Nodes (35): AuthModal, HomeClient(), VerifyContent(), AddressFormData, AddressModal(), AddressModalProps, normalizeDigits(), validateAddressForm() (+27 more)
### Community 69 - "Required Review Group Closures"
Cohesion: 0.10
@ -632,8 +633,8 @@ Cohesion: 0.08
Nodes (23): compilerOptions, allowImportingTsExtensions, erasableSyntaxOnly, jsx, lib, module, moduleDetection, moduleResolution (+15 more)
### Community 71 - "getPageMetadata"
Cohesion: 0.08
Nodes (17): generateMetadata(), generateMetadata(), generateMetadata(), generateMetadata(), getHomeData(), Home(), generateMetadata(), generateMetadata() (+9 more)
Cohesion: 0.09
Nodes (15): generateMetadata(), CatalogClient(), generateMetadata(), generateMetadata(), generateMetadata(), generateMetadata(), generateMetadata(), generateMetadata() (+7 more)
### Community 72 - "Operational Rules & Boundaries"
Cohesion: 0.11
@ -651,10 +652,6 @@ Nodes (14): ApiBearerAuth, ApiOperation, ApiQuery, ApiTags, Body, Controller, De
Cohesion: 0.05
Nodes (47): CreateHealthLogDto, ApiProperty, ApiPropertyOptional, IsNotEmpty, IsOptional, IsString, CreatePetDto, ApiProperty (+39 more)
### Community 76 - "AdminService"
Cohesion: 0.20
Nodes (4): Delete, Param, AdminService, Injectable
### Community 77 - "seo.module.ts"
Cohesion: 0.16
Nodes (10): SeoController, ApiOperation, ApiTags, Controller, Get, Param, SeoModule, Module (+2 more)
@ -688,8 +685,8 @@ Cohesion: 0.12
Nodes (16): 1. Active Secret Scanning (All Modified Files), 2. Docker Container Verification (if Dockerfile exists), 3. CI/CD Basic Check (if `.github/workflows/` exists), 4. Failure Routing Protocol, 5. Forbidden Actions, ENFORCE MODE — Normal Operation, Expected JSON Output Schema, Operational Rules & Boundaries (+8 more)
### Community 85 - "useSettingsStore"
Cohesion: 0.08
Nodes (34): HomeClient(), HomeClientProps, ArchivePage(), ArchiveProductCard(), CATEGORY_MAP, ICON_MAP, B2BLandingClient(), BannerPlacement() (+26 more)
Cohesion: 0.13
Nodes (17): ClientLayout(), B2BLandingClient(), BrandLogo(), BrandLogoProps, FAQItem, FAQSection(), Footer(), Hero() (+9 more)
### Community 86 - "zibal.service.ts"
Cohesion: 0.16
@ -707,29 +704,29 @@ Nodes (8): CreateEBankCheckoutDto, ApiProperty, ApiPropertyOptional, IsNotEmpty,
Cohesion: 0.17
Nodes (12): prisma, main(), prisma, determineSuitableFor(), findOrCreateCategory(), getProductImageUrl(), main(), parseSize() (+4 more)
### Community 90 - "userStore.ts"
Cohesion: 0.07
Nodes (33): AuthModal, CartDrawer, ClientLayout(), LoginModal, AuthModal(), AuthModalProps, extractOtpFromText(), Header() (+25 more)
### Community 90 - "lib/services/api.ts"
Cohesion: 0.06
Nodes (20): LoginModal, ContactInfoItem, LoginModal(), LoginModalProps, api, ApiErrorPayload, baseURL, ApiErr (+12 more)
### Community 91 - "Reconciled Audit Roles & Assignments"
Cohesion: 0.12
Nodes (15): 10. Documentation Engineer, 1. Lead Architect / Orchestrator, 2. React / Vite Storefront Auditor, 3. NestJS Backend Auditor, 4. Admin Features Auditor, 5. Database & Data Integrity Auditor, 6. Security Auditor, 7. TypeScript & Code Quality Auditor (+7 more)
### Community 92 - "OrdersService"
Cohesion: 0.06
Nodes (35): CreateOrderDto, OrderItemDto, ApiProperty, ApiPropertyOptional, IsArray, IsNotEmpty, IsNumber, IsOptional (+27 more)
Cohesion: 0.07
Nodes (29): CreateOrderDto, OrderItemDto, ApiProperty, ApiPropertyOptional, IsArray, IsNotEmpty, IsNumber, IsOptional (+21 more)
### Community 93 - "CheckoutPage.tsx"
Cohesion: 0.30
Nodes (11): AddressFormData, AddressModal(), AddressModalProps, normalizeDigits(), validateAddressForm(), CheckoutPage(), SearchableSelect(), SearchableSelectProps (+3 more)
### Community 93 - "BlogsService"
Cohesion: 0.14
Nodes (5): BlogsModule, Module, BlogFilterDto, BlogsService, Injectable
### Community 94 - "Phase 3.1 — Human Review Preparation and Master Backlog Critique"
Cohesion: 0.13
Nodes (14): 10. Dependency & Wave Adjustments, 11. Acceptance Criteria Refinements, 12. Business and Product Decision Classification, 13. Final Recommended Backlog Summary, 1. Executive Assessment, 2. Findings That Require No Change, 3. Findings Requiring Task Refinements, 4. Tasks Requiring Splitting (+6 more)
### Community 95 - "blog/[slug]/page.tsx"
Cohesion: 0.26
Nodes (11): BlogPostPage(), generateMetadata(), getBlog(), revalidate, safeIso(), safeLocalDate(), generateMetadata(), revalidate (+3 more)
### Community 95 - "wiki/[slug]/page.tsx"
Cohesion: 0.24
Nodes (15): BlogPostPage(), generateMetadata(), getBlog(), revalidate, safeIso(), safeLocalDate(), generateMetadata(), generateMetadata() (+7 more)
### Community 96 - "compilerOptions"
Cohesion: 0.06
@ -744,8 +741,8 @@ Cohesion: 0.13
Nodes (15): scripts, build, build:nest, docs:generate, lint, seo:backfill, start, start:debug (+7 more)
### Community 99 - "BlogsController"
Cohesion: 0.09
Nodes (16): BlogsController, ApiNotFoundResponse, ApiOkResponse, ApiOperation, ApiTags, Body, Controller, Get (+8 more)
Cohesion: 0.18
Nodes (12): BlogsController, ApiNotFoundResponse, ApiOkResponse, ApiOperation, ApiTags, Body, Controller, Get (+4 more)
### Community 100 - "Deep Audit Summary Report"
Cohesion: 0.14
@ -772,12 +769,12 @@ Cohesion: 0.17
Nodes (11): 1. Detect Test Runner from Tech Stack, 2. Execution Output Capture (Mandatory), 3. Acceptance Criteria Verification, 4. Failure Routing Protocol, 5. Success Routing Protocol, 6. Forbidden Actions, Expected JSON Output Schema, Operational Rules & Boundaries (+3 more)
### Community 107 - "PaginationDto"
Cohesion: 0.07
Nodes (24): CategoryQuery, BlogFilterDto, PaginationDto, SortOrder, ApiPropertyOptional, IsEnum, IsInt, IsOptional (+16 more)
Cohesion: 0.06
Nodes (33): PaginationDto, SortOrder, ApiPropertyOptional, IsEnum, IsInt, IsOptional, IsString, Min (+25 more)
### Community 108 - "PrismaService"
Cohesion: 0.08
Nodes (16): MeliPayamakPattern, MeliPayamakResponse, SendPatternSmsOptions, SmsConfig, SmsLogQuery, CreateContactSubmissionDto, UpdateContactInfoItemDto, MenuType (+8 more)
Cohesion: 0.07
Nodes (19): CategoryQuery, RevalidationService, Injectable, MeliPayamakPattern, MeliPayamakResponse, SendPatternSmsOptions, SmsConfig, SmsLogQuery (+11 more)
### Community 109 - "1. Summary of Integrity Repairs Performed"
Cohesion: 0.17
@ -795,10 +792,6 @@ Nodes (10): 1. Mark Active Task as Complete, 2. Documentation Updates, 3. Dynami
Cohesion: 0.18
Nodes (10): 1. Pre-Deployment Checklist, 2. Build Verification, 3. Deployment Strategy (Based on Target), 4. Post-Deployment Health Check, 5. Forbidden Actions, Expected JSON Output Schema, Operational Rules & Boundaries, Required Output Artifacts (What files to write/update) (+2 more)
### Community 113 - "videos/page.tsx"
Cohesion: 0.47
Nodes (5): generateMetadata(), getInitialVideos(), Videos(), VideosPage(), generateVideoObjectSchema()
### Community 114 - "AppService"
Cohesion: 0.29
Nodes (5): AppController, Controller, Get, AppService, Injectable
@ -833,11 +826,11 @@ Nodes (9): Compile and run the project, Deployment, Description, License, Projec
### Community 122 - "AdminController"
Cohesion: 0.14
Nodes (6): AdminController, ApiBearerAuth, ApiTags, Controller, Put, UseGuards
Nodes (7): AdminController, ApiBearerAuth, ApiTags, Body, Controller, Put, UseGuards
### Community 123 - "AuthService"
Cohesion: 0.18
Nodes (4): AuthService, Injectable, normalizeMobile(), UserAddressInput
### Community 123 - "auth.service.ts"
Cohesion: 0.09
Nodes (17): AdminLoginInput, AuthService, LoginInput, RegisterInput, Injectable, SendOtpDto, ApiProperty, IsNotEmpty (+9 more)
### Community 124 - "Repository Map"
Cohesion: 0.20
@ -855,9 +848,9 @@ Nodes (9): name, private, scripts, build, dev, lint, preview, type (+1 more)
Cohesion: 0.20
Nodes (9): Arch Linux, Contributors, Install, Known problems for variable version, License, Sahel-Font, To Do (variable), طریقه استفاده از نسخه متغیر variable (+1 more)
### Community 129 - "auth.service.ts"
Cohesion: 0.06
Nodes (33): AdminLoginInput, LoginInput, RegisterInput, AdminLoginDto, ApiProperty, IsEmail, IsNotEmpty, IsString (+25 more)
### Community 129 - "auth.controller.ts"
Cohesion: 0.10
Nodes (19): AdminLoginDto, ApiProperty, IsEmail, IsNotEmpty, IsString, MinLength, LoginDto, ApiProperty (+11 more)
### Community 130 - "Sahel-Font"
Cohesion: 0.20
@ -915,6 +908,10 @@ Nodes (7): backend, distMainPath, fs, http, path, { spawn, execSync }, waitForBa
Cohesion: 0.25
Nodes (6): app_module_1, core_1, fs, path, swagger_1, yaml
### Community 144 - "WholesaleApplyDto"
Cohesion: 0.29
Nodes (6): ApiProperty, ApiPropertyOptional, IsNotEmpty, IsOptional, IsString, WholesaleApplyDto
### Community 145 - "admin.service.ts"
Cohesion: 0.17
Nodes (14): CouponInput, CouponTargetInput, PaginationQuery, CreateUserDto, ApiProperty, ApiPropertyOptional, IsEmail, IsNotEmpty (+6 more)
@ -923,9 +920,9 @@ Nodes (14): CouponInput, CouponTargetInput, PaginationQuery, CreateUserDto, ApiP
Cohesion: 0.25
Nodes (7): Active Core Applications, Current Architecture, Evidence-Based Status Matrix, Excluded / Non-Auditable Artifacts, Major Business Domains Discovered, System Discovery, Technical Architecture Summary
### Community 147 - "PodcastPlayerModal.tsx"
Cohesion: 0.40
Nodes (3): PLAYBACK_RATES, PodcastPlayerModal(), PodcastPlayerModalProps
### Community 147 - "HomeClient.tsx"
Cohesion: 0.09
Nodes (26): HomeClientProps, ArchivePage(), CATEGORY_MAP, ICON_MAP, BannerPlacement(), BannerPlacementProps, BlogPostClientProps, BlogPost (+18 more)
### Community 149 - "SmsSettingsPage.tsx"
Cohesion: 0.29
@ -936,8 +933,8 @@ Cohesion: 0.29
Nodes (6): 1. Executive Vision, 2. Target Audience, 3. Functional Requirements, 4. Non-Functional Requirements (Performance, Security), 5. Epic / Feature Breakdown, Product Requirement Document (PRD)
### Community 152 - "useCartStore"
Cohesion: 0.10
Nodes (15): B2BPortal, B2BPortal(), CartDrawer(), DeleteConfirmModal(), DeleteConfirmModalProps, OrderSuccess(), OrderTracking(), mockProduct (+7 more)
Cohesion: 0.15
Nodes (13): B2BPortal, CartDrawer, B2BPortal(), CartDrawer(), DeleteConfirmModal(), DeleteConfirmModalProps, OrderSuccess(), OrderTracking() (+5 more)
### Community 153 - "exclude"
Cohesion: 0.22
@ -1040,8 +1037,8 @@ Cohesion: 0.50
Nodes (3): Overview & Content Foundation, SEO & Content Requirements, 🚀 SEO & Content Strategy Review (12_seo_content)
### Community 184 - "RedisService"
Cohesion: 0.08
Nodes (12): ApiExcludeController, AppModule, Module, MetricsController, Controller, Get, Res, RedisModule (+4 more)
Cohesion: 0.10
Nodes (10): ApiExcludeController, MetricsController, Controller, Get, Res, RedisModule, Global, Module (+2 more)
### Community 191 - "graphify reference: add a URL and watch a folder"
Cohesion: 0.50
@ -1067,9 +1064,9 @@ Nodes (3): Expanding the ESLint configuration, React Compiler, React + TypeScrip
Cohesion: 0.50
Nodes (3): Select, SelectOption, SelectProps
### Community 197 - "SmsLogQueryDto"
Cohesion: 0.25
Nodes (7): SmsLogQueryDto, ApiPropertyOptional, IsIn, IsNumber, IsOptional, IsString, Type
### Community 197 - "app/page.tsx"
Cohesion: 0.67
Nodes (3): generateMetadata(), getHomeData(), Home()
### Community 200 - "application/README.md"
Cohesion: 0.50
@ -1088,8 +1085,8 @@ Cohesion: 0.67
Nodes (3): Shabnam Font README, Shabnam Font Sample, Vazir Font
### Community 298 - ".initiateOrderPayment"
Cohesion: 0.21
Nodes (6): ApiBadRequestResponse, ApiOkResponse, Req, Res, Headers, Ip
Cohesion: 0.20
Nodes (10): ApiPropertyOptional, IsOptional, IsString, ZibalCallbackQueryDto, ApiBadRequestResponse, ApiOkResponse, Req, Res (+2 more)
### Community 313 - "Modal.tsx"
Cohesion: 0.10
@ -1102,22 +1099,22 @@ Nodes (3): GET(), handleRevalidate(), POST()
## Knowledge Gaps
- **1337 isolated node(s):** `$schema`, `collection`, `sourceRoot`, `deleteOutDir`, `name` (+1332 more)
These have ≤1 connection - possible missing edges or undocumented components.
- **117 thin communities (<3 nodes) omitted from report** — run `graphify query` to explore isolated nodes.
- **119 thin communities (<3 nodes) omitted from report** — run `graphify query` to explore isolated nodes.
## Suggested Questions
_Questions this graph is uniquely positioned to answer:_
- **Why does `ApiResponse` connect `src/services/api.ts` to `BlogsController`, `AuthController`, `PetsController`, `PaginationDto`, `HomeController`, `UsersController`, `ProductsService`, `OrdersService`?**
_High betweenness centrality (0.085) - this node is a cross-community bridge._
- **Why does `Roles()` connect `Roles` to `WholesaleApplyDto`, `B2BService`, `SmsService`, `FaqService`, `CmsController`, `TicketsService`, `SslController`, `BannersService`, `reviews.controller.ts`, `TestimonialsService`, `IngredientsService`, `JwtAuthGuard`, `ProductsService`, `PrescriptionsService`, `SmartAdvisorService`, `MenuService`, `ContactService`?**
_High betweenness centrality (0.067) - this node is a cross-community bridge._
- **Why does `JwtAuthGuard` connect `JwtAuthGuard` to `auth.service.ts`, `PetsController`, `CmsController`, `users.controller.ts`, `reviews.controller.ts`, `PaginationDto`, `PetsController`, `DoctorQueryDto`, `admin.service.ts`, `ProductsService`, `CreateVideoDto`, `admin.module.ts`, `OrdersService`?**
- **Why does `Roles()` connect `Roles` to `WholesaleService`, `B2BService`, `SmsService`, `FaqService`, `CmsController`, `tickets.controller.ts`, `SslController`, `BannersService`, `reviews.controller.ts`, `TestimonialsService`, `IngredientsService`, `JwtAuthGuard`, `ProductsService`, `PrescriptionsService`, `SmartAdvisorService`, `MenuService`, `ContactService`?**
_High betweenness centrality (0.066) - this node is a cross-community bridge._
- **Why does `JwtAuthGuard` connect `JwtAuthGuard` to `auth.controller.ts`, `CmsController`, `tickets.controller.ts`, `users.service.ts`, `reviews.controller.ts`, `PaginationDto`, `PetsController`, `DoctorQueryDto`, `admin.service.ts`, `CreateVideoDto`, `admin.module.ts`, `BlogsService`?**
_High betweenness centrality (0.033) - this node is a cross-community bridge._
- **What connects `$schema`, `collection`, `sourceRoot` to the rest of the system?**
_1337 weakly-connected nodes found - possible documentation gaps or missing edges._
- **Should `app.module.ts` be split into smaller, more focused modules?**
_Cohesion score 0.06848357791754019 - nodes in this community are weakly interconnected._
_Cohesion score 0.059562841530054644 - nodes in this community are weakly interconnected._
- **Should `SmsService` be split into smaller, more focused modules?**
_Cohesion score 0.06324786324786325 - nodes in this community are weakly interconnected._
_Cohesion score 0.055040197897340756 - nodes in this community are weakly interconnected._
- **Should `ProductService` be split into smaller, more focused modules?**
_Cohesion score 0.05952380952380952 - nodes in this community are weakly interconnected._
_Cohesion score 0.06093189964157706 - nodes in this community are weakly interconnected._

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1,7 +1,7 @@
# Graph Report - canina (2026-08-26)
## Corpus Check
- 589 files · ~1,333,629 words
- 589 files · ~1,333,778 words
- Verdict: corpus is large enough that graph structure adds value.
## Summary
@ -10,7 +10,7 @@
- Token cost: 0 input · 0 output
## Graph Freshness
- Built from commit: `e797cf91`
- Built from commit: `3109e30f`
- Run `git rev-parse HEAD` and compare to check if the graph is stale.
- Run `graphify update .` after code changes (no API cost).
@ -163,7 +163,7 @@
- admin.service.ts
- System Discovery
- HomeClient.tsx
- bcrypt
- @nestjs/swagger
- SmsSettingsPage.tsx
- Product Requirement Document (PRD)
- class-transformer
@ -316,8 +316,8 @@
- prettier
- revalidate/route.ts
- MaskableField.tsx
- eslint-config-next
- eslint
- @eslint/js
- @testing-library/react
- @types/react-dom
- eslint-plugin-react-refresh
@ -390,7 +390,7 @@ Nodes (14): AddressDto, ApiProperty, ApiPropertyOptional, IsBoolean, IsNotEmpty,
### Community 9 - "devDependencies"
Cohesion: 0.22
Nodes (9): devDependencies, @eslint/js, @types/bcryptjs, @types/node, typescript, @eslint/js, @types/node, typescript (+1 more)
Nodes (9): devDependencies, eslint, @types/bcryptjs, @types/node, typescript, eslint, @types/node, typescript (+1 more)
### Community 10 - "reviews.controller.ts"
Cohesion: 0.07
@ -545,7 +545,7 @@ Cohesion: 0.13
Nodes (14): IngredientsController, ApiBearerAuth, ApiOperation, ApiTags, Body, Controller, Delete, Get (+6 more)
### Community 48 - "UsersController"
Cohesion: 0.19
Cohesion: 0.21
Nodes (16): ApiBadRequestResponse, ApiBearerAuth, ApiCreatedResponse, ApiOkResponse, ApiOperation, ApiTags, Body, Controller (+8 more)
### Community 49 - "devDependencies"
@ -554,7 +554,7 @@ Nodes (19): autoprefixer, devDependencies, autoprefixer, eslint, @eslint/js, glo
### Community 50 - "devDependencies"
Cohesion: 0.13
Nodes (15): devDependencies, eslint, jsdom, tailwindcss, @tailwindcss/postcss, @testing-library/react, @types/node, @vitejs/plugin-react (+7 more)
Nodes (15): eslint-config-next, devDependencies, eslint, eslint-config-next, jsdom, tailwindcss, @tailwindcss/postcss, @types/node (+7 more)
### Community 51 - "BlogsController"
Cohesion: 0.07
@ -602,7 +602,7 @@ Nodes (7): ProductDto, ApiPropertyOptional, IsArray, IsBoolean, IsNumber, IsOpti
### Community 63 - "dependencies"
Cohesion: 0.09
Nodes (23): dependencies, bcryptjs, class-validator, compression, ioredis, @nestjs/common, @nestjs/passport, @nestjs/platform-express (+15 more)
Nodes (23): dependencies, bcrypt, bcryptjs, class-validator, compression, ioredis, @nestjs/common, @nestjs/passport (+15 more)
### Community 64 - "compilerOptions"
Cohesion: 0.10

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -6040,6 +6040,30 @@
"community_name": "UsersService",
"norm_label": ".validate()"
},
{
"label": ".constructor()",
"file_type": "code",
"source_file": "backend/src/users/users.controller.ts",
"source_location": "L44",
"_callable": true,
"_origin": "ast",
"id": "backend_src_users_users_controller_userscontroller_constructor",
"community": 106,
"community_name": "UsersService",
"norm_label": ".constructor()"
},
{
"label": ".addAddress()",
"file_type": "code",
"source_file": "backend/src/users/users.service.ts",
"source_location": "L210",
"_callable": true,
"_origin": "ast",
"id": "backend_src_users_users_service_usersservice_addaddress",
"community": 106,
"community_name": "UsersService",
"norm_label": ".addaddress()"
},
{
"label": ".constructor()",
"file_type": "code",
@ -7460,7 +7484,7 @@
"label": "handleClickOutside()",
"file_type": "code",
"source_file": "frontend/application/components/Header.tsx",
"source_location": "L181",
"source_location": "L182",
"_callable": true,
"_origin": "ast",
"id": "frontend_application_components_header_header_handleclickoutside",
@ -13012,18 +13036,6 @@
"community_name": "UsersController",
"norm_label": ".addaddress()"
},
{
"label": ".constructor()",
"file_type": "code",
"source_file": "backend/src/users/users.controller.ts",
"source_location": "L44",
"_callable": true,
"_origin": "ast",
"id": "backend_src_users_users_controller_userscontroller_constructor",
"community": 48,
"community_name": "UsersController",
"norm_label": ".constructor()"
},
{
"label": ".deleteAddress()",
"file_type": "code",
@ -13096,18 +13108,6 @@
"community_name": "UsersController",
"norm_label": ".updateprofile()"
},
{
"label": ".addAddress()",
"file_type": "code",
"source_file": "backend/src/users/users.service.ts",
"source_location": "L210",
"_callable": true,
"_origin": "ast",
"id": "backend_src_users_users_service_usersservice_addaddress",
"community": 48,
"community_name": "UsersController",
"norm_label": ".addaddress()"
},
{
"label": ".constructor()",
"file_type": "code",
@ -24719,26 +24719,26 @@
"norm_label": "types.ts"
},
{
"label": "bcrypt",
"label": "@nestjs/swagger",
"file_type": "code",
"source_file": "backend/package.json",
"source_location": "L33",
"source_location": "L30",
"_origin": "ast",
"id": "backend_package_dependencies_bcrypt",
"id": "backend_package_dependencies_nestjs_swagger",
"community": 148,
"community_name": "bcrypt",
"norm_label": "bcrypt"
"community_name": "@nestjs/swagger",
"norm_label": "@nestjs/swagger"
},
{
"label": "bcrypt",
"label": "@nestjs/swagger",
"file_type": "concept",
"source_file": "backend/package.json",
"source_location": "L33",
"source_location": "L30",
"_origin": "ast",
"id": "bcrypt",
"id": "nestjs_swagger",
"community": 148,
"community_name": "bcrypt",
"norm_label": "bcrypt"
"community_name": "@nestjs/swagger",
"norm_label": "@nestjs/swagger"
},
{
"label": "SmsSettingsPage.tsx",
@ -34426,26 +34426,26 @@
"norm_label": "maskablefield.tsx"
},
{
"label": "eslint-config-next",
"label": "@eslint/js",
"file_type": "code",
"source_file": "frontend/application/package.json",
"source_location": "L30",
"source_file": "backend/package.json",
"source_location": "L49",
"_origin": "ast",
"id": "frontend_application_package_devdependencies_eslint_config_next",
"id": "backend_package_devdependencies_eslint_js",
"community": 319,
"community_name": "eslint-config-next",
"norm_label": "eslint-config-next"
"community_name": "@eslint/js",
"norm_label": "@eslint/js"
},
{
"label": "eslint-config-next",
"label": "@eslint/js",
"file_type": "concept",
"source_file": "frontend/application/package.json",
"source_location": "L30",
"source_file": "backend/package.json",
"source_location": "L49",
"_origin": "ast",
"id": "eslint_config_next",
"id": "backend_package_json_eslint_js",
"community": 319,
"community_name": "eslint-config-next",
"norm_label": "eslint-config-next"
"community_name": "@eslint/js",
"norm_label": "@eslint/js"
},
{
"label": "App.tsx",
@ -34646,26 +34646,26 @@
"norm_label": "lazywithretry.ts"
},
{
"label": "eslint",
"label": "@testing-library/react",
"file_type": "code",
"source_file": "backend/package.json",
"source_location": "L63",
"source_file": "frontend/application/package.json",
"source_location": "L24",
"_origin": "ast",
"id": "backend_package_devdependencies_eslint",
"id": "frontend_application_package_devdependencies_testing_library_react",
"community": 320,
"community_name": "eslint",
"norm_label": "eslint"
"community_name": "@testing-library/react",
"norm_label": "@testing-library/react"
},
{
"label": "eslint",
"label": "@testing-library/react",
"file_type": "concept",
"source_file": "backend/package.json",
"source_location": "L63",
"source_file": "frontend/application/package.json",
"source_location": "L24",
"_origin": "ast",
"id": "backend_package_json_eslint",
"id": "testing_library_react",
"community": 320,
"community_name": "eslint",
"norm_label": "eslint"
"community_name": "@testing-library/react",
"norm_label": "@testing-library/react"
},
{
"label": "orders/page.tsx",
@ -38022,6 +38022,17 @@
"community_name": "devDependencies",
"norm_label": "eslint"
},
{
"label": "eslint-config-next",
"file_type": "code",
"source_file": "frontend/application/package.json",
"source_location": "L30",
"_origin": "ast",
"id": "frontend_application_package_devdependencies_eslint_config_next",
"community": 50,
"community_name": "devDependencies",
"norm_label": "eslint-config-next"
},
{
"label": "jsdom",
"file_type": "code",
@ -38055,17 +38066,6 @@
"community_name": "devDependencies",
"norm_label": "@tailwindcss/postcss"
},
{
"label": "@testing-library/react",
"file_type": "code",
"source_file": "frontend/application/package.json",
"source_location": "L24",
"_origin": "ast",
"id": "frontend_application_package_devdependencies_testing_library_react",
"community": 50,
"community_name": "devDependencies",
"norm_label": "@testing-library/react"
},
{
"label": "@types/node",
"file_type": "code",
@ -38088,6 +38088,17 @@
"community_name": "devDependencies",
"norm_label": "@vitejs/plugin-react"
},
{
"label": "eslint-config-next",
"file_type": "concept",
"source_file": "frontend/application/package.json",
"source_location": "L30",
"_origin": "ast",
"id": "eslint_config_next",
"community": 50,
"community_name": "devDependencies",
"norm_label": "eslint-config-next"
},
{
"label": "eslint",
"file_type": "concept",
@ -38154,17 +38165,6 @@
"community_name": "devDependencies",
"norm_label": "jsdom"
},
{
"label": "@testing-library/react",
"file_type": "concept",
"source_file": "frontend/application/package.json",
"source_location": "L24",
"_origin": "ast",
"id": "testing_library_react",
"community": 50,
"community_name": "devDependencies",
"norm_label": "@testing-library/react"
},
{
"label": "ApiBearerAuth",
"file_type": "code",
@ -40134,6 +40134,17 @@
"community_name": "dependencies",
"norm_label": "dependencies"
},
{
"label": "bcrypt",
"file_type": "code",
"source_file": "backend/package.json",
"source_location": "L33",
"_origin": "ast",
"id": "backend_package_dependencies_bcrypt",
"community": 63,
"community_name": "dependencies",
"norm_label": "bcrypt"
},
{
"label": "bcryptjs",
"file_type": "code",
@ -40211,17 +40222,6 @@
"community_name": "dependencies",
"norm_label": "@nestjs/platform-express"
},
{
"label": "@nestjs/swagger",
"file_type": "code",
"source_file": "backend/package.json",
"source_location": "L30",
"_origin": "ast",
"id": "backend_package_dependencies_nestjs_swagger",
"community": 63,
"community_name": "dependencies",
"norm_label": "@nestjs/swagger"
},
{
"label": "passport-jwt",
"file_type": "code",
@ -40255,6 +40255,17 @@
"community_name": "dependencies",
"norm_label": "rxjs"
},
{
"label": "bcrypt",
"file_type": "concept",
"source_file": "backend/package.json",
"source_location": "L33",
"_origin": "ast",
"id": "bcrypt",
"community": 63,
"community_name": "dependencies",
"norm_label": "bcrypt"
},
{
"label": "bcryptjs",
"file_type": "concept",
@ -40332,17 +40343,6 @@
"community_name": "dependencies",
"norm_label": "@nestjs/platform-express"
},
{
"label": "@nestjs/swagger",
"file_type": "concept",
"source_file": "backend/package.json",
"source_location": "L30",
"_origin": "ast",
"id": "nestjs_swagger",
"community": 63,
"community_name": "dependencies",
"norm_label": "@nestjs/swagger"
},
{
"label": "passport-jwt",
"file_type": "concept",
@ -45085,15 +45085,15 @@
"norm_label": "devdependencies"
},
{
"label": "@eslint/js",
"label": "eslint",
"file_type": "code",
"source_file": "backend/package.json",
"source_location": "L49",
"source_location": "L63",
"_origin": "ast",
"id": "backend_package_devdependencies_eslint_js",
"id": "backend_package_devdependencies_eslint",
"community": 9,
"community_name": "devDependencies",
"norm_label": "@eslint/js"
"norm_label": "eslint"
},
{
"label": "@types/bcryptjs",
@ -45129,15 +45129,15 @@
"norm_label": "typescript"
},
{
"label": "@eslint/js",
"label": "eslint",
"file_type": "concept",
"source_file": "backend/package.json",
"source_location": "L49",
"source_location": "L63",
"_origin": "ast",
"id": "backend_package_json_eslint_js",
"id": "backend_package_json_eslint",
"community": 9,
"community_name": "devDependencies",
"norm_label": "@eslint/js"
"norm_label": "eslint"
},
{
"label": "@types/node",
@ -50368,7 +50368,7 @@
"confidence": "EXTRACTED",
"confidence_score": 1.0,
"source_file": "frontend/application/components/Header.tsx",
"source_location": "L142",
"source_location": "L143",
"weight": 1.0,
"_origin": "ast",
"source": "frontend_application_components_header_header",
@ -50380,7 +50380,7 @@
"confidence": "EXTRACTED",
"confidence_score": 1.0,
"source_file": "frontend/application/components/Header.tsx",
"source_location": "L143",
"source_location": "L144",
"weight": 1.0,
"_origin": "ast",
"source": "frontend_application_components_header_header",
@ -50392,7 +50392,7 @@
"confidence": "EXTRACTED",
"confidence_score": 1.0,
"source_file": "frontend/application/components/Header.tsx",
"source_location": "L144",
"source_location": "L145",
"weight": 1.0,
"_origin": "ast",
"source": "frontend_application_components_header_header",
@ -50404,7 +50404,7 @@
"confidence": "EXTRACTED",
"confidence_score": 1.0,
"source_file": "frontend/application/components/Header.tsx",
"source_location": "L261",
"source_location": "L264",
"weight": 1.0,
"_origin": "ast",
"source": "frontend_application_components_header_header",
@ -129830,7 +129830,7 @@
"relation": "indirect_call",
"confidence": "INFERRED",
"source_file": "frontend/application/components/Header.tsx",
"source_location": "L186",
"source_location": "L187",
"weight": 1.0,
"_origin": "ast",
"context": "argument",
@ -133268,5 +133268,5 @@
}
],
"hyperedges": [],
"built_at_commit": "e797cf9167e1c4fefbbad815ac5c19dd6812d805"
"built_at_commit": "3109e30fd7d4e1133f46f6fb2faa827dfbbb4ceb"
}

File diff suppressed because it is too large Load Diff