fix(payment): resolve zibal refund apiKey and token resolution across aliases
All checks were successful
Deploy Canina / deploy (push) Successful in 33s
All checks were successful
Deploy Canina / deploy (push) Successful in 33s
This commit is contained in:
parent
d62787cd99
commit
992c815749
@ -458,16 +458,53 @@ export class ZibalService implements IPaymentGateway {
|
||||
|
||||
private async getAccessToken(): Promise<string> {
|
||||
try {
|
||||
const setting = await this.prisma.uiText.findUnique({
|
||||
where: { key: 'ZIBAL_EBANK_TOKEN' },
|
||||
// Check multiple possible keys where the admin might have saved the API Token / EBank token
|
||||
const settings = await this.prisma.uiText.findMany({
|
||||
where: {
|
||||
key: {
|
||||
in: [
|
||||
'ZIBAL_EBANK_TOKEN',
|
||||
'zibal_ebank_token',
|
||||
'ZIBAL_API_KEY',
|
||||
'zibal_api_key',
|
||||
'ZIBAL_TOKEN',
|
||||
'zibal_token',
|
||||
'ZIBAL_MERCHANT',
|
||||
'zibal_merchant',
|
||||
],
|
||||
},
|
||||
},
|
||||
});
|
||||
if (setting && setting.value && setting.value.trim() !== '') {
|
||||
return setting.value.trim();
|
||||
|
||||
const map = new Map(settings.map((s) => [s.key, s.value?.trim()]));
|
||||
const token =
|
||||
map.get('ZIBAL_EBANK_TOKEN') ||
|
||||
map.get('zibal_ebank_token') ||
|
||||
map.get('ZIBAL_API_KEY') ||
|
||||
map.get('zibal_api_key') ||
|
||||
map.get('ZIBAL_TOKEN') ||
|
||||
map.get('zibal_token');
|
||||
|
||||
if (token && token.length > 0 && token !== 'zibal') {
|
||||
return token;
|
||||
}
|
||||
|
||||
// If token not set, check merchant if it's a real merchant key (not sandbox 'zibal')
|
||||
const merchant = map.get('ZIBAL_MERCHANT') || map.get('zibal_merchant');
|
||||
if (merchant && merchant.length > 0 && merchant !== 'zibal') {
|
||||
return merchant;
|
||||
}
|
||||
} catch (e) {
|
||||
this.logger.warn(`Could not read ZIBAL_EBANK_TOKEN: ${e}`);
|
||||
this.logger.warn(`Could not read Zibal token from db: ${e}`);
|
||||
}
|
||||
return process.env.ZIBAL_EBANK_TOKEN || '';
|
||||
|
||||
return (
|
||||
process.env.ZIBAL_EBANK_TOKEN ||
|
||||
process.env.ZIBAL_API_KEY ||
|
||||
process.env.ZIBAL_TOKEN ||
|
||||
process.env.ZIBAL_MERCHANT ||
|
||||
''
|
||||
);
|
||||
}
|
||||
|
||||
private async apiRequest<T>(
|
||||
@ -482,16 +519,19 @@ export class ZibalService implements IPaymentGateway {
|
||||
const headers: Record<string, string> = {
|
||||
'Content-Type': 'application/json',
|
||||
};
|
||||
if (apiKey) {
|
||||
headers['Authorization'] = `Bearer ${apiKey}`;
|
||||
|
||||
// Zibal API accepts Bearer Token in Authorization header
|
||||
if (token && token !== 'zibal') {
|
||||
headers['Authorization'] = `Bearer ${token}`;
|
||||
}
|
||||
|
||||
// Automatically inject apiKey into body if it's a POST request and not provided
|
||||
// Prepare JSON body: ensure apiKey / merchant is correctly passed
|
||||
const finalBody =
|
||||
body && method === 'POST'
|
||||
? {
|
||||
apiKey: body.apiKey || apiKey,
|
||||
...body,
|
||||
// Ensure apiKey is set if not already present
|
||||
apiKey: body.apiKey || (token && token !== 'zibal' ? token : apiKey),
|
||||
}
|
||||
: body;
|
||||
|
||||
@ -509,7 +549,12 @@ export class ZibalService implements IPaymentGateway {
|
||||
});
|
||||
|
||||
const data = await res.json();
|
||||
this.logger.log(`[Zibal Core API Response] ${endpoint} -> ${JSON.stringify(data)}`);
|
||||
return data as T;
|
||||
} catch (err: unknown) {
|
||||
const msg = err instanceof Error ? err.message : String(err);
|
||||
this.logger.error(`[Zibal Core API Error] ${endpoint} failed: ${msg}`);
|
||||
throw err;
|
||||
} finally {
|
||||
clearTimeout(timeoutId);
|
||||
}
|
||||
|
||||
@ -100,6 +100,16 @@ export const CANONICAL_ALIASES: Record<string, string[]> = {
|
||||
charity_round_step: ['CHARITY_ROUND_STEP', 'charityRoundStep'],
|
||||
charityRoundStep: ['CHARITY_ROUND_STEP', 'charity_round_step'],
|
||||
|
||||
// Zibal Gateway & Tokens
|
||||
ZIBAL_EBANK_TOKEN: ['zibal_ebank_token', 'ZIBAL_API_KEY', 'zibal_api_key', 'ZIBAL_TOKEN', 'zibal_token'],
|
||||
zibal_ebank_token: ['ZIBAL_EBANK_TOKEN', 'ZIBAL_API_KEY', 'zibal_api_key', 'ZIBAL_TOKEN', 'zibal_token'],
|
||||
ZIBAL_API_KEY: ['ZIBAL_EBANK_TOKEN', 'zibal_ebank_token', 'zibal_api_key', 'ZIBAL_TOKEN', 'zibal_token'],
|
||||
zibal_api_key: ['ZIBAL_EBANK_TOKEN', 'zibal_ebank_token', 'ZIBAL_API_KEY', 'ZIBAL_TOKEN', 'zibal_token'],
|
||||
ZIBAL_MERCHANT: ['zibal_merchant', 'merchantId', 'merchant'],
|
||||
zibal_merchant: ['ZIBAL_MERCHANT', 'merchantId', 'merchant'],
|
||||
ZIBAL_EBANK_ACCOUNT_ID: ['zibal_ebank_account_id', 'accountId'],
|
||||
zibal_ebank_account_id: ['ZIBAL_EBANK_ACCOUNT_ID', 'accountId'],
|
||||
|
||||
// Modes
|
||||
MAINTENANCE_MODE: ['maintenance_mode'],
|
||||
maintenance_mode: ['MAINTENANCE_MODE'],
|
||||
|
||||
@ -295,13 +295,13 @@
|
||||
"293": "typescript",
|
||||
"294": "app-audit-verification.e2e-spec.d.ts",
|
||||
"295": "app.e2e-spec.d.ts",
|
||||
"296": "@types/react-dom",
|
||||
"296": "wiki/page.tsx",
|
||||
"297": "CreateHealthLogDto",
|
||||
"298": "eslint-config-prettier",
|
||||
"299": "CreateReminderDto",
|
||||
"300": ".sendOtp",
|
||||
"301": "track/page.tsx",
|
||||
"302": "dashboard/page.tsx",
|
||||
"302": "eslint-config-next",
|
||||
"303": "eslint-plugin-prettier",
|
||||
"305": "RouteErrorBoundary",
|
||||
"309": "globals",
|
||||
|
||||
File diff suppressed because one or more lines are too long
@ -5,7 +5,7 @@
|
||||
"3": "app.module.ts",
|
||||
"4": "reviews.controller.ts",
|
||||
"5": "tickets.controller.ts",
|
||||
"6": "userStore.ts",
|
||||
"6": "AuthService",
|
||||
"7": "MediaSelector.tsx",
|
||||
"8": "PetProfile.tsx",
|
||||
"9": "Roles",
|
||||
@ -13,12 +13,12 @@
|
||||
"11": "MenuService",
|
||||
"12": "adminRoutes.tsx",
|
||||
"13": "PrismaService",
|
||||
"14": "PetsController",
|
||||
"14": "pets/pets.controller.ts",
|
||||
"15": "ProductsService",
|
||||
"16": "UserDashboard.tsx",
|
||||
"17": "CreateVideoDto",
|
||||
"18": "src/services/api.ts",
|
||||
"19": "auth.controller.ts",
|
||||
"19": ".adminLogin",
|
||||
"20": "BE-001",
|
||||
"21": "SmsService",
|
||||
"22": "FE-001",
|
||||
@ -36,7 +36,7 @@
|
||||
"34": "CategoriesController",
|
||||
"35": "B2BService",
|
||||
"36": "What You Must Do When Invoked",
|
||||
"37": "useSettingsStore",
|
||||
"37": ".update",
|
||||
"38": "UsersService",
|
||||
"39": "What You Must Do When Invoked",
|
||||
"40": "SslController",
|
||||
@ -44,28 +44,28 @@
|
||||
"42": "IngredientsService",
|
||||
"43": "FaqService",
|
||||
"44": "MediaController",
|
||||
"45": "Media.tsx",
|
||||
"45": "Coupons.tsx",
|
||||
"46": "ContactService",
|
||||
"47": "zibal.service.ts",
|
||||
"48": "PrescriptionsService",
|
||||
"49": "SmartAdvisorService",
|
||||
"50": "TestimonialsService",
|
||||
"51": "Role & Core Objective",
|
||||
"52": ".initiateOrderPayment",
|
||||
"52": ".handleZibalCallback",
|
||||
"53": "ZibalEBankService",
|
||||
"54": "compilerOptions",
|
||||
"55": "PrescriptionsManager.tsx",
|
||||
"55": "Media.tsx",
|
||||
"56": "compilerOptions",
|
||||
"57": "PetsController",
|
||||
"58": "PaginationDto",
|
||||
"59": "dependencies",
|
||||
"60": "compilerOptions",
|
||||
"61": "ArchivePage.tsx",
|
||||
"61": "HomeClient.tsx",
|
||||
"62": "BlogsController",
|
||||
"63": "ApiOperation",
|
||||
"64": "BannersService",
|
||||
"65": "Required Review Group Closures",
|
||||
"66": "Coupons.tsx",
|
||||
"66": "Products.tsx",
|
||||
"67": "Operational Rules & Boundaries",
|
||||
"68": "Operational Rules & Boundaries",
|
||||
"69": "WikiController",
|
||||
@ -78,10 +78,10 @@
|
||||
"76": "Operational Rules & Boundaries",
|
||||
"77": "scripts",
|
||||
"78": "Role & Core Objective",
|
||||
"79": "HomeController",
|
||||
"80": "B2BPortal.tsx",
|
||||
"79": "Transactions.tsx",
|
||||
"80": "SafeImage.tsx",
|
||||
"81": "devDependencies",
|
||||
"82": "api",
|
||||
"82": "auth.controller.ts",
|
||||
"83": "Orders.tsx",
|
||||
"84": "devDependencies",
|
||||
"85": "seed-products.ts",
|
||||
@ -101,9 +101,9 @@
|
||||
"99": "Comprehensive Change Log",
|
||||
"100": "Operational Rules & Boundaries",
|
||||
"101": "UITexts.tsx",
|
||||
"102": "BlogsController",
|
||||
"103": "AdminTransactionFilterDto",
|
||||
"104": "CreateOrderDto",
|
||||
"102": "ApiResponse",
|
||||
"103": "payment.service.ts",
|
||||
"104": "PetsService",
|
||||
"105": "1. Summary of Integrity Repairs Performed",
|
||||
"106": "@nestjs/cli",
|
||||
"107": "Operational Rules & Boundaries",
|
||||
@ -140,9 +140,9 @@
|
||||
"138": "InitiatePaymentDto",
|
||||
"139": "System Discovery",
|
||||
"140": "Product Requirement Document (PRD)",
|
||||
"141": "WikiController",
|
||||
"142": "useCartStore",
|
||||
"143": "RedisService",
|
||||
"141": "PetsController",
|
||||
"142": "lib/services/api.ts",
|
||||
"143": "auth.service.ts",
|
||||
"144": "Baseline Command Plan & Reconciled Command History",
|
||||
"145": "catalog/page.tsx",
|
||||
"146": "ErrorPages.tsx",
|
||||
@ -173,7 +173,7 @@
|
||||
"171": "🎨 Frontend & Admin Panel Technical Review (06_dev_frontend)",
|
||||
"172": "🚀 SEO & Content Strategy Review (12_seo_content)",
|
||||
"173": "@types/node",
|
||||
"174": "shop/page.tsx",
|
||||
"174": "MetricsController",
|
||||
"175": "seed-ui-texts.ts",
|
||||
"176": "seed-wiki.ts",
|
||||
"177": "update-blog.dto.ts",
|
||||
@ -185,7 +185,7 @@
|
||||
"183": "Raw Finding Verification & Disposition Report",
|
||||
"184": "React + TypeScript + Vite",
|
||||
"185": "Select.tsx",
|
||||
"186": "Reports.tsx",
|
||||
"186": "RegisterDto",
|
||||
"187": "ts-node",
|
||||
"188": "application/README.md",
|
||||
"189": "@types/express",
|
||||
@ -213,14 +213,14 @@
|
||||
"211": "@types/multer",
|
||||
"212": "videos/page.tsx",
|
||||
"213": "@testing-library/jest-dom",
|
||||
"214": "checkout/page.tsx",
|
||||
"214": "AdminLoginDto",
|
||||
"215": "AdminController",
|
||||
"216": "FormField.tsx",
|
||||
"217": "Input.tsx",
|
||||
"218": "Textarea.tsx",
|
||||
"219": "admin-panel/tsconfig.json",
|
||||
"220": "getPageMetadata",
|
||||
"221": "AuthService",
|
||||
"221": "AuthController",
|
||||
"222": "next.config.ts",
|
||||
"223": "Shabnam Font README",
|
||||
"224": "AGENTS.md",
|
||||
@ -237,10 +237,10 @@
|
||||
"235": "typescript",
|
||||
"236": "vitest",
|
||||
"237": "axios",
|
||||
"238": ".createCoupon",
|
||||
"238": "Body",
|
||||
"239": "WholesaleApplyDto",
|
||||
"240": "ts-loader",
|
||||
"241": "zibal-ebank.service.ts",
|
||||
"241": "VerifyOtpDto",
|
||||
"242": "@types/bcrypt",
|
||||
"243": "app.e2e-spec.js",
|
||||
"244": "blog.entity.ts",
|
||||
@ -290,13 +290,18 @@
|
||||
"288": "Staging Docker Compose",
|
||||
"289": "tailwindcss",
|
||||
"290": "@types/passport-jwt",
|
||||
"291": "ClientLayout.tsx",
|
||||
"291": "useSettingsStore",
|
||||
"292": "@types/supertest",
|
||||
"293": "typescript",
|
||||
"294": "app-audit-verification.e2e-spec.d.ts",
|
||||
"295": "app.e2e-spec.d.ts",
|
||||
"296": "@types/react-dom",
|
||||
"297": "CreateHealthLogDto",
|
||||
"298": "eslint-config-prettier",
|
||||
"299": "CreateReminderDto",
|
||||
"300": ".sendOtp",
|
||||
"301": "track/page.tsx",
|
||||
"302": "dashboard/page.tsx",
|
||||
"303": "eslint-plugin-prettier",
|
||||
"305": "RouteErrorBoundary",
|
||||
"309": "globals",
|
||||
|
||||
@ -1,16 +1,16 @@
|
||||
# Graph Report - canina (2026-08-22)
|
||||
|
||||
## Corpus Check
|
||||
- 536 files · ~759,763 words
|
||||
- 539 files · ~762,534 words
|
||||
- Verdict: corpus is large enough that graph structure adds value.
|
||||
|
||||
## Summary
|
||||
- 3887 nodes · 6841 edges · 303 communities (203 shown, 100 thin omitted)
|
||||
- Extraction: 96% EXTRACTED · 4% INFERRED · 0% AMBIGUOUS · INFERRED: 261 edges (avg confidence: 0.79)
|
||||
- 3902 nodes · 6878 edges · 308 communities (207 shown, 101 thin omitted)
|
||||
- Extraction: 96% EXTRACTED · 4% INFERRED · 0% AMBIGUOUS · INFERRED: 262 edges (avg confidence: 0.79)
|
||||
- Token cost: 0 input · 0 output
|
||||
|
||||
## Graph Freshness
|
||||
- Built from commit: `ee32b4c1`
|
||||
- Built from commit: `f9e40564`
|
||||
- Run `git rev-parse HEAD` and compare to check if the graph is stale.
|
||||
- Run `graphify update .` after code changes (no API cost).
|
||||
|
||||
@ -21,7 +21,7 @@
|
||||
- app.module.ts
|
||||
- reviews.controller.ts
|
||||
- tickets.controller.ts
|
||||
- userStore.ts
|
||||
- AuthService
|
||||
- MediaSelector.tsx
|
||||
- PetProfile.tsx
|
||||
- Roles
|
||||
@ -29,12 +29,12 @@
|
||||
- MenuService
|
||||
- adminRoutes.tsx
|
||||
- PrismaService
|
||||
- PetsController
|
||||
- pets/pets.controller.ts
|
||||
- ProductsService
|
||||
- UserDashboard.tsx
|
||||
- CreateVideoDto
|
||||
- src/services/api.ts
|
||||
- auth.controller.ts
|
||||
- .adminLogin
|
||||
- BE-001
|
||||
- SmsService
|
||||
- FE-001
|
||||
@ -52,7 +52,7 @@
|
||||
- CategoriesController
|
||||
- B2BService
|
||||
- What You Must Do When Invoked
|
||||
- useSettingsStore
|
||||
- .update
|
||||
- UsersService
|
||||
- What You Must Do When Invoked
|
||||
- SslController
|
||||
@ -60,28 +60,28 @@
|
||||
- IngredientsService
|
||||
- FaqService
|
||||
- MediaController
|
||||
- Media.tsx
|
||||
- Coupons.tsx
|
||||
- ContactService
|
||||
- zibal.service.ts
|
||||
- PrescriptionsService
|
||||
- SmartAdvisorService
|
||||
- TestimonialsService
|
||||
- Role & Core Objective
|
||||
- .initiateOrderPayment
|
||||
- .handleZibalCallback
|
||||
- ZibalEBankService
|
||||
- compilerOptions
|
||||
- PrescriptionsManager.tsx
|
||||
- Media.tsx
|
||||
- compilerOptions
|
||||
- PetsController
|
||||
- PaginationDto
|
||||
- dependencies
|
||||
- compilerOptions
|
||||
- ArchivePage.tsx
|
||||
- HomeClient.tsx
|
||||
- BlogsController
|
||||
- ApiOperation
|
||||
- BannersService
|
||||
- Required Review Group Closures
|
||||
- Coupons.tsx
|
||||
- Products.tsx
|
||||
- Operational Rules & Boundaries
|
||||
- Operational Rules & Boundaries
|
||||
- WikiController
|
||||
@ -94,10 +94,10 @@
|
||||
- Operational Rules & Boundaries
|
||||
- scripts
|
||||
- Role & Core Objective
|
||||
- HomeController
|
||||
- B2BPortal.tsx
|
||||
- Transactions.tsx
|
||||
- SafeImage.tsx
|
||||
- devDependencies
|
||||
- api
|
||||
- auth.controller.ts
|
||||
- Orders.tsx
|
||||
- devDependencies
|
||||
- seed-products.ts
|
||||
@ -117,9 +117,9 @@
|
||||
- Comprehensive Change Log
|
||||
- Operational Rules & Boundaries
|
||||
- UITexts.tsx
|
||||
- BlogsController
|
||||
- AdminTransactionFilterDto
|
||||
- CreateOrderDto
|
||||
- ApiResponse
|
||||
- payment.service.ts
|
||||
- PetsService
|
||||
- 1. Summary of Integrity Repairs Performed
|
||||
- @nestjs/cli
|
||||
- Operational Rules & Boundaries
|
||||
@ -156,9 +156,9 @@
|
||||
- InitiatePaymentDto
|
||||
- System Discovery
|
||||
- Product Requirement Document (PRD)
|
||||
- WikiController
|
||||
- useCartStore
|
||||
- RedisService
|
||||
- PetsController
|
||||
- lib/services/api.ts
|
||||
- auth.service.ts
|
||||
- Baseline Command Plan & Reconciled Command History
|
||||
- catalog/page.tsx
|
||||
- ErrorPages.tsx
|
||||
@ -189,7 +189,7 @@
|
||||
- 🎨 Frontend & Admin Panel Technical Review (06_dev_frontend)
|
||||
- 🚀 SEO & Content Strategy Review (12_seo_content)
|
||||
- @types/node
|
||||
- shop/page.tsx
|
||||
- MetricsController
|
||||
- seed-ui-texts.ts
|
||||
- seed-wiki.ts
|
||||
- update-blog.dto.ts
|
||||
@ -201,7 +201,7 @@
|
||||
- Raw Finding Verification & Disposition Report
|
||||
- React + TypeScript + Vite
|
||||
- Select.tsx
|
||||
- Reports.tsx
|
||||
- RegisterDto
|
||||
- ts-node
|
||||
- application/README.md
|
||||
- @types/express
|
||||
@ -229,14 +229,14 @@
|
||||
- @types/multer
|
||||
- videos/page.tsx
|
||||
- @testing-library/jest-dom
|
||||
- checkout/page.tsx
|
||||
- AdminLoginDto
|
||||
- AdminController
|
||||
- FormField.tsx
|
||||
- Input.tsx
|
||||
- Textarea.tsx
|
||||
- admin-panel/tsconfig.json
|
||||
- getPageMetadata
|
||||
- AuthService
|
||||
- AuthController
|
||||
- next.config.ts
|
||||
- Shabnam Font README
|
||||
- AGENTS.md
|
||||
@ -252,10 +252,10 @@
|
||||
- @types/react
|
||||
- typescript
|
||||
- vitest
|
||||
- .createCoupon
|
||||
- Body
|
||||
- WholesaleApplyDto
|
||||
- ts-loader
|
||||
- zibal-ebank.service.ts
|
||||
- VerifyOtpDto
|
||||
- @types/bcrypt
|
||||
- app.e2e-spec.js
|
||||
- blog.entity.ts
|
||||
@ -291,11 +291,15 @@
|
||||
- Production Docker Compose
|
||||
- Staging Docker Compose
|
||||
- @types/passport-jwt
|
||||
- ClientLayout.tsx
|
||||
- useSettingsStore
|
||||
- @types/supertest
|
||||
- typescript
|
||||
- @types/react-dom
|
||||
- CreateHealthLogDto
|
||||
- eslint-config-prettier
|
||||
- CreateReminderDto
|
||||
- track/page.tsx
|
||||
- dashboard/page.tsx
|
||||
- eslint-plugin-prettier
|
||||
- RouteErrorBoundary
|
||||
- globals
|
||||
@ -309,22 +313,22 @@
|
||||
4. `api` - 43 edges
|
||||
5. `SmsService` - 42 edges
|
||||
6. `PaginationDto` - 41 edges
|
||||
7. `ZibalService` - 37 edges
|
||||
8. `PaymentController` - 36 edges
|
||||
9. `JwtAuthGuard` - 35 edges
|
||||
10. `AdminService` - 34 edges
|
||||
7. `PaymentController` - 37 edges
|
||||
8. `ZibalService` - 37 edges
|
||||
9. `AdminService` - 35 edges
|
||||
10. `JwtAuthGuard` - 35 edges
|
||||
|
||||
## Surprising Connections (you probably didn't know these)
|
||||
- `User Profile Photo` --conceptually_related_to--> `User Roles and Capabilities` [INFERRED]
|
||||
backend/uploads/1781288429353-508765350.jpg → docs/02-user-guide.md
|
||||
- `AuthController` --references--> `ApiResponse` [EXTRACTED]
|
||||
backend/src/auth/auth.controller.ts → frontend/admin-panel/src/types/admin.ts
|
||||
- `BlogsController` --references--> `ApiResponse` [EXTRACTED]
|
||||
backend/src/blogs/blogs.controller.ts → frontend/admin-panel/src/types/admin.ts
|
||||
- `HomeController` --references--> `ApiResponse` [EXTRACTED]
|
||||
backend/src/home/home.controller.ts → frontend/admin-panel/src/types/admin.ts
|
||||
- `OrdersController` --references--> `ApiResponse` [EXTRACTED]
|
||||
backend/src/orders/orders.controller.ts → frontend/admin-panel/src/types/admin.ts
|
||||
- `PetsController` --references--> `ApiResponse` [EXTRACTED]
|
||||
backend/src/pets/pets.controller.ts → frontend/admin-panel/src/types/admin.ts
|
||||
- `ProductsController` --references--> `ApiResponse` [EXTRACTED]
|
||||
backend/src/products/products.controller.ts → frontend/admin-panel/src/types/admin.ts
|
||||
|
||||
## Import Cycles
|
||||
- 3-file cycle: `frontend/application/lib/services/api.ts -> frontend/application/lib/store/userStore.ts -> frontend/application/lib/services/authService.ts -> frontend/application/lib/services/api.ts`
|
||||
@ -335,15 +339,15 @@
|
||||
- **Rastikerdar Font Ecosystem** — frontend_application_public_fonts_shabnam_font_v5_0_1_readme, frontend_application_public_fonts_vazirmatn_v33_003_readme, vazir_font [EXTRACTED 0.95]
|
||||
- **Canina Deployment Stack** — scripts_compose_prod, scripts_compose_stage [EXTRACTED 1.00]
|
||||
|
||||
## Communities (303 total, 100 thin omitted)
|
||||
## Communities (308 total, 101 thin omitted)
|
||||
|
||||
### Community 0 - "OrdersService"
|
||||
Cohesion: 0.10
|
||||
Nodes (18): OrdersController, ApiBadRequestResponse, ApiBearerAuth, ApiCreatedResponse, ApiNotFoundResponse, ApiOkResponse, ApiOperation, ApiTags (+10 more)
|
||||
Cohesion: 0.06
|
||||
Nodes (35): CreateOrderDto, OrderItemDto, ApiProperty, ApiPropertyOptional, IsArray, IsNotEmpty, IsNumber, IsOptional (+27 more)
|
||||
|
||||
### Community 1 - "productService.ts"
|
||||
Cohesion: 0.09
|
||||
Nodes (26): BlogPost, CatalogPageSpread(), CatalogPageSpreadProps, CategoryMeta, getFormBadge(), getSpeciesBadge(), FlipbookCatalog(), FlipbookCatalogProps (+18 more)
|
||||
Cohesion: 0.10
|
||||
Nodes (24): BlogPost, CatalogPageSpread(), CatalogPageSpreadProps, CategoryMeta, getFormBadge(), getSpeciesBadge(), FlipbookCatalog(), FlipbookCatalogProps (+16 more)
|
||||
|
||||
### Community 2 - "CmsController"
|
||||
Cohesion: 0.09
|
||||
@ -351,7 +355,7 @@ Nodes (24): CmsController, ApiBearerAuth, ApiOperation, ApiTags, Body, Controlle
|
||||
|
||||
### Community 3 - "app.module.ts"
|
||||
Cohesion: 0.07
|
||||
Nodes (34): B2BModule, Module, BannersModule, Module, CmsModule, Module, SmsModule, Global (+26 more)
|
||||
Nodes (36): B2BModule, Module, BannersModule, Module, CmsModule, Module, SmsModule, Global (+28 more)
|
||||
|
||||
### Community 4 - "reviews.controller.ts"
|
||||
Cohesion: 0.07
|
||||
@ -359,31 +363,27 @@ Nodes (31): CreateReviewDto, ApiProperty, IsInt, IsNotEmpty, IsOptional, IsStrin
|
||||
|
||||
### Community 5 - "tickets.controller.ts"
|
||||
Cohesion: 0.09
|
||||
Nodes (29): AdminUpdateTicketDto, CreateTicketDto, ReplyTicketDto, ApiProperty, ApiPropertyOptional, IsNotEmpty, IsOptional, IsString (+21 more)
|
||||
|
||||
### Community 6 - "userStore.ts"
|
||||
Cohesion: 0.11
|
||||
Nodes (10): LoginModal(), LoginModalProps, ApiErr, AuthResponse, AuthService, User, Transaction, UserProfile (+2 more)
|
||||
Nodes (31): AdminUpdateTicketDto, CreateTicketDto, ReplyTicketDto, ApiProperty, ApiPropertyOptional, IsNotEmpty, IsOptional, IsString (+23 more)
|
||||
|
||||
### Community 7 - "MediaSelector.tsx"
|
||||
Cohesion: 0.08
|
||||
Nodes (26): ConfirmModal(), ConfirmModalProps, ImagePreviewModal(), ImagePreviewModalProps, getFileType(), Media, MediaSelector(), MediaSelectorProps (+18 more)
|
||||
Cohesion: 0.07
|
||||
Nodes (26): ConfirmModal(), ConfirmModalProps, getFileType(), Media, MediaSelector(), MediaSelectorProps, BlogPost, Category (+18 more)
|
||||
|
||||
### Community 8 - "PetProfile.tsx"
|
||||
Cohesion: 0.12
|
||||
Nodes (19): CheckoutPage(), FeaturedProducts(), ProductCard(), PetProfile(), PrescriptionUploadModal(), PrescriptionUploadModalProps, SearchResultsPage(), OrderRowSkeleton() (+11 more)
|
||||
Cohesion: 0.11
|
||||
Nodes (18): FeaturedProducts(), ProductCard(), OrderSuccess(), PrescriptionUploadModal(), PrescriptionUploadModalProps, SearchResultsPage(), OrderRowSkeleton(), PetProfileSkeleton() (+10 more)
|
||||
|
||||
### Community 9 - "Roles"
|
||||
Cohesion: 0.24
|
||||
Nodes (13): Roles(), PaymentController, ApiBearerAuth, ApiOperation, ApiTags, Body, Controller, Get (+5 more)
|
||||
Cohesion: 0.20
|
||||
Nodes (15): Roles(), PaymentController, ApiBadRequestResponse, ApiBearerAuth, ApiOkResponse, ApiOperation, ApiTags, Body (+7 more)
|
||||
|
||||
### Community 10 - "DoctorQueryDto"
|
||||
Cohesion: 0.09
|
||||
Nodes (24): DoctorsController, ApiBearerAuth, ApiOperation, ApiTags, Body, Controller, Delete, Get (+16 more)
|
||||
Cohesion: 0.08
|
||||
Nodes (26): DoctorsController, ApiBearerAuth, ApiOperation, ApiTags, Body, Controller, Delete, Get (+18 more)
|
||||
|
||||
### Community 11 - "MenuService"
|
||||
Cohesion: 0.10
|
||||
Nodes (19): MenuController, ApiBearerAuth, ApiOperation, ApiQuery, ApiTags, Body, Controller, Delete (+11 more)
|
||||
Cohesion: 0.12
|
||||
Nodes (16): MenuController, ApiBearerAuth, ApiOperation, ApiQuery, ApiTags, Body, Controller, Delete (+8 more)
|
||||
|
||||
### Community 12 - "adminRoutes.tsx"
|
||||
Cohesion: 0.09
|
||||
@ -391,31 +391,31 @@ Nodes (16): App(), HeroBanner, VetTestimonial, ContactInfoItem, ContactSubmissio
|
||||
|
||||
### Community 13 - "PrismaService"
|
||||
Cohesion: 0.08
|
||||
Nodes (18): CategoryQuery, AdminLoginInput, LoginInput, RegisterInput, MeliPayamakPattern, MeliPayamakResponse, SendPatternSmsOptions, SmsConfig (+10 more)
|
||||
Nodes (18): MeliPayamakPattern, MeliPayamakResponse, SendPatternSmsOptions, SmsConfig, SmsLogQuery, CreateContactSubmissionDto, UpdateContactInfoItemDto, MenuType (+10 more)
|
||||
|
||||
### Community 14 - "PetsController"
|
||||
Cohesion: 0.05
|
||||
Nodes (47): CreateHealthLogDto, ApiProperty, ApiPropertyOptional, IsNotEmpty, IsOptional, IsString, CreatePetDto, ApiProperty (+39 more)
|
||||
### Community 14 - "pets/pets.controller.ts"
|
||||
Cohesion: 0.16
|
||||
Nodes (13): CreatePetDto, ApiProperty, ApiPropertyOptional, IsArray, IsNotEmpty, IsNumber, IsOptional, IsString (+5 more)
|
||||
|
||||
### Community 15 - "ProductsService"
|
||||
Cohesion: 0.09
|
||||
Nodes (19): GetProductsDto, ApiPropertyOptional, IsEnum, IsOptional, IsString, ProductsController, ApiOperation, ApiTags (+11 more)
|
||||
Cohesion: 0.13
|
||||
Nodes (12): ProductsController, ApiOperation, ApiTags, Body, Controller, Get, Param, Patch (+4 more)
|
||||
|
||||
### Community 16 - "UserDashboard.tsx"
|
||||
Cohesion: 0.10
|
||||
Nodes (30): VerifyContent(), AddressModal(), AddressModalProps, AuthModal(), AuthModalProps, extractOtpFromText(), BackButton(), BackButtonProps (+22 more)
|
||||
Cohesion: 0.09
|
||||
Nodes (41): VerifyContent(), AddressModal(), AddressModalProps, ArchiveProductCard(), AuthModal(), AuthModalProps, extractOtpFromText(), B2BPortal() (+33 more)
|
||||
|
||||
### Community 17 - "CreateVideoDto"
|
||||
Cohesion: 0.07
|
||||
Nodes (31): CreateVideoDto, ApiProperty, ApiPropertyOptional, IsBoolean, IsNotEmpty, IsOptional, IsString, UpdateVideoDto (+23 more)
|
||||
Cohesion: 0.08
|
||||
Nodes (29): CreateVideoDto, ApiProperty, ApiPropertyOptional, IsBoolean, IsNotEmpty, IsOptional, IsString, UpdateVideoDto (+21 more)
|
||||
|
||||
### Community 18 - "src/services/api.ts"
|
||||
Cohesion: 0.09
|
||||
Nodes (25): ProtectedRoute(), SEARCHABLE_PAGES, Topbar(), TopbarProps, Login(), B2BManager, SeoSettingsPage, SmartAdvisorManager (+17 more)
|
||||
Cohesion: 0.08
|
||||
Nodes (30): Layout(), ProtectedRoute(), MenuGroup, Sidebar(), SidebarProps, SubMenuItem, SEARCHABLE_PAGES, Topbar() (+22 more)
|
||||
|
||||
### Community 19 - "auth.controller.ts"
|
||||
Cohesion: 0.06
|
||||
Nodes (42): AuthController, ApiBadRequestResponse, ApiBearerAuth, ApiOkResponse, ApiOperation, ApiTags, Body, Controller (+34 more)
|
||||
### Community 19 - ".adminLogin"
|
||||
Cohesion: 0.34
|
||||
Nodes (9): ApiBadRequestResponse, ApiBearerAuth, ApiOkResponse, ApiOperation, Body, Post, Req, UseGuards (+1 more)
|
||||
|
||||
### Community 20 - "BE-001"
|
||||
Cohesion: 0.06
|
||||
@ -423,7 +423,7 @@ Nodes (32): Acceptance Criteria, Affected Application, Affected Files, Alternati
|
||||
|
||||
### Community 21 - "SmsService"
|
||||
Cohesion: 0.06
|
||||
Nodes (27): SmsLogQuery, SmsService, Injectable, SmsLogQueryDto, ApiPropertyOptional, IsIn, IsNumber, IsOptional (+19 more)
|
||||
Nodes (26): SmsService, Injectable, SmsLogQueryDto, ApiPropertyOptional, IsIn, IsNumber, IsOptional, IsString (+18 more)
|
||||
|
||||
### Community 22 - "FE-001"
|
||||
Cohesion: 0.06
|
||||
@ -458,8 +458,8 @@ Cohesion: 0.14
|
||||
Nodes (14): ApiBearerAuth, ApiOperation, ApiTags, Body, Controller, Get, Param, Post (+6 more)
|
||||
|
||||
### Community 30 - "app-audit-verification.e2e-spec.js"
|
||||
Cohesion: 0.08
|
||||
Nodes (20): CustomHttpExceptionFilter, Catch, PrismaExceptionFilter, Catch, DecimalInterceptor, Injectable, ApiErrorResponse, ErrorDetailField (+12 more)
|
||||
Cohesion: 0.07
|
||||
Nodes (22): AppModule, Module, CustomHttpExceptionFilter, Catch, PrismaExceptionFilter, Catch, DecimalInterceptor, Injectable (+14 more)
|
||||
|
||||
### Community 31 - "JwtAuthGuard"
|
||||
Cohesion: 0.20
|
||||
@ -467,7 +467,7 @@ Nodes (7): JwtAuthGuard, Injectable, ROLES_KEY, RequestWithUser, RolesGuard, Inj
|
||||
|
||||
### Community 32 - "ZibalService"
|
||||
Cohesion: 0.09
|
||||
Nodes (4): PaymentService, Injectable, Injectable, ZibalService
|
||||
Nodes (5): Put, PaymentService, Injectable, Injectable, ZibalService
|
||||
|
||||
### Community 33 - "راهنمای تست سیستم (Software Testing)"
|
||||
Cohesion: 0.07
|
||||
@ -485,9 +485,9 @@ Nodes (15): B2BController, ApiBearerAuth, ApiOperation, ApiTags, Body, Controlle
|
||||
Cohesion: 0.07
|
||||
Nodes (26): For /graphify add and --watch, For /graphify query, For the commit hook and native CLAUDE.md integration, For --update and --cluster-only, /graphify, Honesty Rules, Interpreter guard for subcommands, Part A - Structural extraction for code files (+18 more)
|
||||
|
||||
### Community 37 - "useSettingsStore"
|
||||
Cohesion: 0.09
|
||||
Nodes (29): HomeClient(), HomeClientProps, BlogPost, BlogPreviewSection(), ContactInfoItem, EnamadBadge(), FAQItem, FAQSection() (+21 more)
|
||||
### Community 37 - ".update"
|
||||
Cohesion: 0.24
|
||||
Nodes (11): ApiNotFoundResponse, ApiOkResponse, ApiOperation, Body, Delete, Get, Param, Patch (+3 more)
|
||||
|
||||
### Community 38 - "UsersService"
|
||||
Cohesion: 0.06
|
||||
@ -517,9 +517,9 @@ Nodes (14): FaqController, ApiBearerAuth, ApiOperation, ApiTags, Body, Controlle
|
||||
Cohesion: 0.11
|
||||
Nodes (16): MediaController, ApiBearerAuth, ApiOperation, ApiTags, Body, Controller, Delete, Get (+8 more)
|
||||
|
||||
### Community 45 - "Media.tsx"
|
||||
Cohesion: 0.11
|
||||
Nodes (15): Pagination(), PaginationProps, getFileType(), Media, MediaManager(), Pet, GatewayHealth, Stats (+7 more)
|
||||
### Community 45 - "Coupons.tsx"
|
||||
Cohesion: 0.12
|
||||
Nodes (12): Pagination(), PaginationProps, Coupon, CouponFormData, CouponModalProps, CouponTarget, Pet, ProductItem (+4 more)
|
||||
|
||||
### Community 46 - "ContactService"
|
||||
Cohesion: 0.13
|
||||
@ -545,17 +545,17 @@ Nodes (14): TestimonialsController, ApiBearerAuth, ApiOperation, ApiTags, Body,
|
||||
Cohesion: 0.09
|
||||
Nodes (22): CREATE MODE — Normal Operation, Expected JSON Output Schema, File Scope Boundary, Forbidden Actions, MODE 1: REVIEW (called during Review Phase), MODE 2: CONTENT CREATION (standalone task from backlog), Operating Modes, Operational Rules & Boundaries (+14 more)
|
||||
|
||||
### Community 52 - ".initiateOrderPayment"
|
||||
Cohesion: 0.19
|
||||
Nodes (10): ApiPropertyOptional, IsOptional, IsString, ZibalCallbackQueryDto, ApiBadRequestResponse, ApiOkResponse, Req, Res (+2 more)
|
||||
### Community 52 - ".handleZibalCallback"
|
||||
Cohesion: 0.25
|
||||
Nodes (7): ApiPropertyOptional, IsOptional, IsString, ZibalCallbackQueryDto, Res, Headers, Ip
|
||||
|
||||
### Community 54 - "compilerOptions"
|
||||
Cohesion: 0.06
|
||||
Nodes (30): compilerOptions, allowSyntheticDefaultImports, baseUrl, declaration, emitDecoratorMetadata, esModuleInterop, experimentalDecorators, forceConsistentCasingInFileNames (+22 more)
|
||||
|
||||
### Community 55 - "PrescriptionsManager.tsx"
|
||||
Cohesion: 0.22
|
||||
Nodes (7): Badge(), BadgeProps, BadgeVariant, variantStyles, ProductItem, PrescriptionsManager, Prescription
|
||||
### Community 55 - "Media.tsx"
|
||||
Cohesion: 0.14
|
||||
Nodes (13): Badge(), BadgeProps, BadgeVariant, variantStyles, ImagePreviewModal(), ImagePreviewModalProps, getFileType(), Media (+5 more)
|
||||
|
||||
### Community 56 - "compilerOptions"
|
||||
Cohesion: 0.08
|
||||
@ -566,8 +566,8 @@ Cohesion: 0.10
|
||||
Nodes (14): PetsController, ApiBearerAuth, ApiOperation, ApiQuery, ApiTags, Controller, Delete, Get (+6 more)
|
||||
|
||||
### Community 58 - "PaginationDto"
|
||||
Cohesion: 0.07
|
||||
Nodes (15): BlogsService, Injectable, BlogsModule, Module, BlogsService, Injectable, PaginationDto, SortOrder (+7 more)
|
||||
Cohesion: 0.06
|
||||
Nodes (24): BlogsService, Injectable, BlogsModule, Module, BlogsService, Injectable, PaginationDto, SortOrder (+16 more)
|
||||
|
||||
### Community 59 - "dependencies"
|
||||
Cohesion: 0.05
|
||||
@ -577,16 +577,16 @@ Nodes (41): dependencies, bcrypt, bcryptjs, class-transformer, class-validator,
|
||||
Cohesion: 0.10
|
||||
Nodes (20): compilerOptions, allowImportingTsExtensions, erasableSyntaxOnly, lib, module, moduleDetection, moduleResolution, noEmit (+12 more)
|
||||
|
||||
### Community 61 - "ArchivePage.tsx"
|
||||
Cohesion: 0.15
|
||||
Nodes (13): ArchiveProductCard(), CATEGORY_MAP, ICON_MAP, BannerPlacement(), BannerPlacementProps, B2BInquiry, Banner, DosageConfig (+5 more)
|
||||
### Community 61 - "HomeClient.tsx"
|
||||
Cohesion: 0.11
|
||||
Nodes (20): HomeClient(), HomeClientProps, CATEGORY_MAP, ICON_MAP, BannerPlacement(), BannerPlacementProps, FAQItem, FAQSection() (+12 more)
|
||||
|
||||
### Community 62 - "BlogsController"
|
||||
Cohesion: 0.14
|
||||
Nodes (16): BlogsController, ApiBearerAuth, ApiOperation, ApiQuery, ApiTags, Body, Controller, Delete (+8 more)
|
||||
|
||||
### Community 63 - "ApiOperation"
|
||||
Cohesion: 0.14
|
||||
Cohesion: 0.17
|
||||
Nodes (8): ApiOperation, ApiQuery, Get, Query, AdminQueryDto, ApiPropertyOptional, IsOptional, IsString
|
||||
|
||||
### Community 64 - "BannersService"
|
||||
@ -597,9 +597,9 @@ Nodes (15): BannersController, ApiBearerAuth, ApiOperation, ApiTags, Body, Contr
|
||||
Cohesion: 0.10
|
||||
Nodes (19): 10. Orders Backend, 11. Settings & Administrative Backend, 12. Prisma Schema, Migrations & Seed, 13. Redis & Temporary Auth State, 14. Unit & E2E Tests, 15. Docker, NGINX, Prometheus & Deployment Config, 16. Documentation & OpenAPI Artifacts, 1. Storefront Shell & Routing (+11 more)
|
||||
|
||||
### Community 66 - "Coupons.tsx"
|
||||
Cohesion: 0.10
|
||||
Nodes (15): formatPriceWithCommas(), PriceInput(), PriceInputProps, toEnglishDigits(), Coupon, CouponFormData, CouponModalProps, CouponTarget (+7 more)
|
||||
### Community 66 - "Products.tsx"
|
||||
Cohesion: 0.16
|
||||
Nodes (10): formatPriceWithCommas(), PriceInput(), PriceInputProps, toEnglishDigits(), Category, Product, FinancialSettingsPage, Products (+2 more)
|
||||
|
||||
### Community 67 - "Operational Rules & Boundaries"
|
||||
Cohesion: 0.11
|
||||
@ -614,8 +614,8 @@ Cohesion: 0.13
|
||||
Nodes (14): ApiBearerAuth, ApiOperation, ApiQuery, ApiTags, Body, Controller, Delete, Get (+6 more)
|
||||
|
||||
### Community 70 - "admin.service.ts"
|
||||
Cohesion: 0.20
|
||||
Nodes (13): CouponInput, CouponTargetInput, PaginationQuery, CreateUserDto, ApiProperty, ApiPropertyOptional, IsEmail, IsNotEmpty (+5 more)
|
||||
Cohesion: 0.16
|
||||
Nodes (14): CouponTargetInput, PaginationQuery, CreateUserDto, ApiProperty, ApiPropertyOptional, IsEmail, IsNotEmpty, IsNumber (+6 more)
|
||||
|
||||
### Community 71 - "getSeoConfig"
|
||||
Cohesion: 0.24
|
||||
@ -649,21 +649,21 @@ Nodes (17): concurrently, devDependencies, concurrently, name, private, scripts,
|
||||
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 79 - "HomeController"
|
||||
Cohesion: 0.16
|
||||
Nodes (10): HomeController, ApiOkResponse, ApiOperation, ApiTags, Controller, Get, HomeModule, Module (+2 more)
|
||||
### Community 79 - "Transactions.tsx"
|
||||
Cohesion: 0.15
|
||||
Nodes (13): TransactionReceiptData, TransactionReceiptModal(), TransactionReceiptModalProps, Button(), ButtonProps, ButtonSize, ButtonVariant, MaskableField() (+5 more)
|
||||
|
||||
### Community 80 - "B2BPortal.tsx"
|
||||
Cohesion: 0.16
|
||||
Nodes (11): ProductDetailModalProps, SafeImage(), SafeImageProps, DisplayVideoItem, FALLBACK_VIDEOS, TestimonialItem, PLAYBACK_RATES, VideoModalPlayer() (+3 more)
|
||||
### Community 80 - "SafeImage.tsx"
|
||||
Cohesion: 0.11
|
||||
Nodes (16): BlogPost, BlogPreviewSection(), ProductDetailModalProps, SafeImage(), SafeImageProps, Testimonial, TestimonialsSection(), DisplayVideoItem (+8 more)
|
||||
|
||||
### Community 81 - "devDependencies"
|
||||
Cohesion: 0.13
|
||||
Nodes (15): eslint-config-next, devDependencies, eslint, eslint-config-next, jsdom, tailwindcss, @tailwindcss/postcss, @types/node (+7 more)
|
||||
|
||||
### Community 82 - "api"
|
||||
Cohesion: 0.15
|
||||
Nodes (10): Layout(), MenuGroup, Sidebar(), SidebarProps, SubMenuItem, MENU_TABS, MenuItem, MenuType (+2 more)
|
||||
### Community 82 - "auth.controller.ts"
|
||||
Cohesion: 0.18
|
||||
Nodes (10): LoginDto, ApiProperty, IsNotEmpty, IsString, MinLength, SendOtpDto, ApiProperty, IsNotEmpty (+2 more)
|
||||
|
||||
### Community 83 - "Orders.tsx"
|
||||
Cohesion: 0.14
|
||||
@ -726,8 +726,8 @@ Cohesion: 0.15
|
||||
Nodes (13): jest, collectCoverageFrom, coverageDirectory, moduleFileExtensions, rootDir, testEnvironment, testRegex, transform (+5 more)
|
||||
|
||||
### Community 98 - "AdminService"
|
||||
Cohesion: 0.15
|
||||
Nodes (5): Body, Param, Put, AdminService, Injectable
|
||||
Cohesion: 0.13
|
||||
Nodes (5): Delete, Param, Put, AdminService, Injectable
|
||||
|
||||
### Community 99 - "Comprehensive Change Log"
|
||||
Cohesion: 0.15
|
||||
@ -741,17 +741,13 @@ Nodes (11): 1. Detect Test Runner from Tech Stack, 2. Execution Output Capture (
|
||||
Cohesion: 0.10
|
||||
Nodes (18): ICON_REGISTRY, IconPickerModal(), IconPickerModalProps, COLORS, RichTextEditor(), RichTextEditorProps, ToggleSwitch(), ToggleSwitchProps (+10 more)
|
||||
|
||||
### Community 102 - "BlogsController"
|
||||
Cohesion: 0.17
|
||||
Nodes (14): BlogsController, ApiBearerAuth, ApiNotFoundResponse, ApiOkResponse, ApiOperation, ApiTags, Body, Controller (+6 more)
|
||||
### Community 102 - "ApiResponse"
|
||||
Cohesion: 0.06
|
||||
Nodes (34): BlogsController, ApiBearerAuth, ApiNotFoundResponse, ApiOkResponse, ApiOperation, ApiTags, Body, Controller (+26 more)
|
||||
|
||||
### Community 103 - "AdminTransactionFilterDto"
|
||||
Cohesion: 0.22
|
||||
Nodes (7): AdminTransactionFilterDto, ApiPropertyOptional, IsIn, IsNumber, IsOptional, IsString, Type
|
||||
|
||||
### Community 104 - "CreateOrderDto"
|
||||
Cohesion: 0.13
|
||||
Nodes (17): CreateOrderDto, OrderItemDto, ApiProperty, ApiPropertyOptional, IsArray, IsNotEmpty, IsNumber, IsOptional (+9 more)
|
||||
### Community 103 - "payment.service.ts"
|
||||
Cohesion: 0.20
|
||||
Nodes (8): AdminTransactionFilterDto, ApiPropertyOptional, IsIn, IsNumber, IsOptional, IsString, Type, ClientMetadata
|
||||
|
||||
### Community 105 - "1. Summary of Integrity Repairs Performed"
|
||||
Cohesion: 0.17
|
||||
@ -826,8 +822,8 @@ Cohesion: 0.20
|
||||
Nodes (9): Arch Linux, Contributors, Install, Known problems for variable version, License, Sahel-Font, To Do (variable), طریقه استفاده از نسخه متغیر variable (+1 more)
|
||||
|
||||
### Community 124 - "Spinner.tsx"
|
||||
Cohesion: 0.11
|
||||
Nodes (12): Spinner(), FAQ, ProductReview, Reviews(), toPersianDigits(), SslStatus, FAQManager, PaymentGatewaysPage (+4 more)
|
||||
Cohesion: 0.07
|
||||
Nodes (21): Spinner(), MENU_TABS, MenuItem, MenuType, BestSellerItem, CategoryDistItem, COLORS, CustomTooltipProps (+13 more)
|
||||
|
||||
### Community 125 - "Sahel-Font"
|
||||
Cohesion: 0.20
|
||||
@ -889,17 +885,17 @@ Nodes (7): Active Core Applications, Current Architecture, Evidence-Based Status
|
||||
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 141 - "WikiController"
|
||||
Cohesion: 0.13
|
||||
Nodes (13): ApiNotFoundResponse, ApiOkResponse, ApiOperation, ApiTags, Controller, Get, Param, Query (+5 more)
|
||||
### Community 141 - "PetsController"
|
||||
Cohesion: 0.18
|
||||
Nodes (9): PetsController, ApiBadRequestResponse, ApiBearerAuth, ApiCreatedResponse, ApiTags, Controller, UploadedFile, UseGuards (+1 more)
|
||||
|
||||
### Community 142 - "useCartStore"
|
||||
Cohesion: 0.12
|
||||
Nodes (11): CartDrawer(), OrderSuccess(), OrderTracking(), mockProduct, ApiErr, Order, OrderItem, OrderService (+3 more)
|
||||
|
||||
### Community 143 - "RedisService"
|
||||
### Community 142 - "lib/services/api.ts"
|
||||
Cohesion: 0.08
|
||||
Nodes (12): ApiExcludeController, AppModule, Module, MetricsController, Controller, Get, Res, RedisModule (+4 more)
|
||||
Nodes (19): ContactInfoItem, api, ApiErrorPayload, baseURL, ApiErr, AuthResponse, User, ApiErr (+11 more)
|
||||
|
||||
### Community 143 - "auth.service.ts"
|
||||
Cohesion: 0.14
|
||||
Nodes (8): AdminLoginInput, LoginInput, RegisterInput, RedisModule, Global, Module, RedisService, Injectable
|
||||
|
||||
### Community 144 - "Baseline Command Plan & Reconciled Command History"
|
||||
Cohesion: 0.29
|
||||
@ -997,6 +993,10 @@ Nodes (3): Architectural Overview, Critical Review Findings & Required Enhanceme
|
||||
Cohesion: 0.50
|
||||
Nodes (3): Overview & Content Foundation, SEO & Content Requirements, 🚀 SEO & Content Strategy Review (12_seo_content)
|
||||
|
||||
### Community 174 - "MetricsController"
|
||||
Cohesion: 0.20
|
||||
Nodes (5): ApiExcludeController, MetricsController, Controller, Get, Res
|
||||
|
||||
### Community 180 - "graphify reference: add a URL and watch a folder"
|
||||
Cohesion: 0.50
|
||||
Nodes (3): For /graphify add, For --watch, graphify reference: add a URL and watch a folder
|
||||
@ -1021,9 +1021,9 @@ Nodes (3): Expanding the ESLint configuration, React Compiler, React + TypeScrip
|
||||
Cohesion: 0.50
|
||||
Nodes (3): Select, SelectOption, SelectProps
|
||||
|
||||
### Community 186 - "Reports.tsx"
|
||||
Cohesion: 0.20
|
||||
Nodes (7): BestSellerItem, CategoryDistItem, COLORS, CustomTooltipProps, ReportData, TopCouponItem, Reports
|
||||
### Community 186 - "RegisterDto"
|
||||
Cohesion: 0.22
|
||||
Nodes (8): RegisterDto, ApiProperty, ApiPropertyOptional, IsEmail, IsNotEmpty, IsOptional, IsString, MinLength
|
||||
|
||||
### Community 188 - "application/README.md"
|
||||
Cohesion: 0.50
|
||||
@ -1037,41 +1037,57 @@ Nodes (3): COMPOSE_DOCKER_CLI_BUILD, DOCKER_BUILDKIT, deploy.sh script
|
||||
Cohesion: 0.67
|
||||
Nodes (3): ADR-AUTH-001: Admin Panel Authentication Architecture & Token Management, Master Task Backlog (Phase 3.3), Phase 3 Master Execution Plan
|
||||
|
||||
### Community 214 - "AdminLoginDto"
|
||||
Cohesion: 0.29
|
||||
Nodes (6): AdminLoginDto, ApiProperty, IsEmail, IsNotEmpty, IsString, MinLength
|
||||
|
||||
### Community 215 - "AdminController"
|
||||
Cohesion: 0.18
|
||||
Nodes (6): AdminController, ApiBearerAuth, ApiTags, Controller, Delete, UseGuards
|
||||
Cohesion: 0.25
|
||||
Nodes (5): AdminController, ApiBearerAuth, ApiTags, Controller, UseGuards
|
||||
|
||||
### Community 220 - "getPageMetadata"
|
||||
Cohesion: 0.14
|
||||
Nodes (7): generateMetadata(), generateMetadata(), generateMetadata(), generateMetadata(), generateMetadata(), generateMetadata(), getPageMetadata()
|
||||
Cohesion: 0.13
|
||||
Nodes (8): generateMetadata(), generateMetadata(), generateMetadata(), generateMetadata(), generateMetadata(), generateMetadata(), ArchivePage(), getPageMetadata()
|
||||
|
||||
### Community 221 - "AuthService"
|
||||
Cohesion: 0.22
|
||||
Nodes (3): AuthService, Injectable, normalizeMobile()
|
||||
### Community 221 - "AuthController"
|
||||
Cohesion: 0.20
|
||||
Nodes (5): AuthController, ApiTags, Controller, AuthService, Injectable
|
||||
|
||||
### Community 223 - "Shabnam Font README"
|
||||
Cohesion: 0.67
|
||||
Nodes (3): Shabnam Font README, Shabnam Font Sample, Vazir Font
|
||||
|
||||
### Community 232 - "ProductDto"
|
||||
Cohesion: 0.22
|
||||
Cohesion: 0.20
|
||||
Nodes (7): ProductDto, ApiPropertyOptional, IsArray, IsBoolean, IsNumber, IsOptional, IsString
|
||||
|
||||
### Community 238 - "Body"
|
||||
Cohesion: 0.21
|
||||
Nodes (3): Body, Post, CouponInput
|
||||
|
||||
### Community 239 - "WholesaleApplyDto"
|
||||
Cohesion: 0.29
|
||||
Nodes (6): ApiProperty, ApiPropertyOptional, IsNotEmpty, IsOptional, IsString, WholesaleApplyDto
|
||||
|
||||
### Community 241 - "zibal-ebank.service.ts"
|
||||
Cohesion: 0.40
|
||||
Nodes (4): EBankCheckoutListFilter, EBankCheckoutOptions, EBankIdentifiedPaymentFilter, EBankStatementFilter
|
||||
### Community 241 - "VerifyOtpDto"
|
||||
Cohesion: 0.29
|
||||
Nodes (6): ApiProperty, IsNotEmpty, IsString, Matches, VerifyOtpDto, Length
|
||||
|
||||
### Community 243 - "app.e2e-spec.js"
|
||||
Cohesion: 0.50
|
||||
Nodes (3): app_module_1, supertest_1, testing_1
|
||||
|
||||
### Community 291 - "ClientLayout.tsx"
|
||||
Cohesion: 0.18
|
||||
Nodes (11): ClientLayout(), B2BPortal(), BrandLogo(), BrandLogoProps, Footer(), MaintenancePage(), NetworkBanner(), useNetworkStatus() (+3 more)
|
||||
### Community 291 - "useSettingsStore"
|
||||
Cohesion: 0.13
|
||||
Nodes (20): ClientLayout(), BrandLogo(), BrandLogoProps, EnamadBadge(), Footer(), MENU_ICONS, MaintenancePage(), NetworkBanner() (+12 more)
|
||||
|
||||
### Community 297 - "CreateHealthLogDto"
|
||||
Cohesion: 0.29
|
||||
Nodes (6): CreateHealthLogDto, ApiProperty, ApiPropertyOptional, IsNotEmpty, IsOptional, IsString
|
||||
|
||||
### Community 299 - "CreateReminderDto"
|
||||
Cohesion: 0.29
|
||||
Nodes (6): CreateReminderDto, ApiProperty, ApiPropertyOptional, IsNotEmpty, IsOptional, IsString
|
||||
|
||||
### Community 305 - "RouteErrorBoundary"
|
||||
Cohesion: 0.22
|
||||
@ -1079,27 +1095,27 @@ Nodes (3): Props, RouteErrorBoundary, State
|
||||
|
||||
### Community 310 - "admin.module.ts"
|
||||
Cohesion: 0.08
|
||||
Nodes (15): AdminModule, Module, ReportsController, ApiBearerAuth, ApiOperation, ApiTags, Controller, Get (+7 more)
|
||||
Nodes (16): AdminModule, Module, CategoryQuery, ReportsController, ApiBearerAuth, ApiOperation, ApiTags, Controller (+8 more)
|
||||
|
||||
## Knowledge Gaps
|
||||
- **1269 isolated node(s):** `$schema`, `collection`, `sourceRoot`, `deleteOutDir`, `name` (+1264 more)
|
||||
- **1274 isolated node(s):** `$schema`, `collection`, `sourceRoot`, `deleteOutDir`, `name` (+1269 more)
|
||||
These have ≤1 connection - possible missing edges or undocumented components.
|
||||
- **100 thin communities (<3 nodes) omitted from report** — run `graphify query` to explore isolated nodes.
|
||||
- **101 thin communities (<3 nodes) omitted from report** — run `graphify query` to explore isolated nodes.
|
||||
|
||||
## Suggested Questions
|
||||
_Questions this graph is uniquely positioned to answer:_
|
||||
|
||||
- **Why does `ApiResponse` connect `src/services/api.ts` to `OrdersService`, `BlogsController`, `UsersService`, `WikiController`, `PetsController`, `HomeController`, `ProductsService`, `auth.controller.ts`?**
|
||||
- **Why does `ApiResponse` connect `ApiResponse` to `OrdersService`, `UsersService`, `PetsController`, `ProductsService`, `src/services/api.ts`, `AuthController`?**
|
||||
_High betweenness centrality (0.064) - this node is a cross-community bridge._
|
||||
- **Why does `Roles()` connect `Roles` to `BannersService`, `CmsController`, `B2BService`, `reviews.controller.ts`, `tickets.controller.ts`, `SslController`, `IngredientsService`, `FaqService`, `MenuService`, `ContactService`, `ProductsService`, `PrescriptionsService`, `SmartAdvisorService`, `TestimonialsService`, `SmsService`, `WholesaleService`, `JwtAuthGuard`?**
|
||||
_High betweenness centrality (0.062) - this node is a cross-community bridge._
|
||||
- **Why does `JwtAuthGuard` connect `JwtAuthGuard` to `CmsController`, `reviews.controller.ts`, `tickets.controller.ts`, `admin.service.ts`, `UsersService`, `CreateOrderDto`, `DoctorQueryDto`, `PetsController`, `ProductsService`, `CreateVideoDto`, `auth.controller.ts`, `admin.module.ts`, `PetsController`, `PaginationDto`?**
|
||||
_High betweenness centrality (0.032) - this node is a cross-community bridge._
|
||||
- **Why does `Roles()` connect `Roles` to `BannersService`, `ZibalService`, `CmsController`, `B2BService`, `reviews.controller.ts`, `tickets.controller.ts`, `SslController`, `IngredientsService`, `FaqService`, `MenuService`, `ContactService`, `ProductsService`, `PrescriptionsService`, `SmartAdvisorService`, `TestimonialsService`, `SmsService`, `WholesaleService`, `JwtAuthGuard`?**
|
||||
_High betweenness centrality (0.060) - this node is a cross-community bridge._
|
||||
- **Why does `PrismaService` connect `PrismaService` to `OrdersService`, `CmsController`, `app.module.ts`, `reviews.controller.ts`, `tickets.controller.ts`, `DoctorQueryDto`, `MenuService`, `pets/pets.controller.ts`, `auth.service.ts`, `ProductsService`, `CreateVideoDto`, `SmsService`, `WholesaleService`, `ZibalService`, `CategoriesController`, `B2BService`, `UsersService`, `IngredientsService`, `FaqService`, `MediaController`, `MetricsController`, `ContactService`, `zibal.service.ts`, `PrescriptionsService`, `SmartAdvisorService`, `TestimonialsService`, `ZibalEBankService`, `admin.module.ts`, `PetsController`, `PaginationDto`, `BannersService`, `admin.service.ts`, `seo.module.ts`, `AuthController`, `ApiResponse`, `payment.service.ts`, `PetsService`, `WholesaleApplyDto`?**
|
||||
_High betweenness centrality (0.040) - this node is a cross-community bridge._
|
||||
- **What connects `$schema`, `collection`, `sourceRoot` to the rest of the system?**
|
||||
_1269 weakly-connected nodes found - possible documentation gaps or missing edges._
|
||||
_1274 weakly-connected nodes found - possible documentation gaps or missing edges._
|
||||
- **Should `OrdersService` be split into smaller, more focused modules?**
|
||||
_Cohesion score 0.10160427807486631 - nodes in this community are weakly interconnected._
|
||||
_Cohesion score 0.059932659932659935 - nodes in this community are weakly interconnected._
|
||||
- **Should `productService.ts` be split into smaller, more focused modules?**
|
||||
_Cohesion score 0.08985200845665962 - nodes in this community are weakly interconnected._
|
||||
_Cohesion score 0.09619450317124736 - nodes in this community are weakly interconnected._
|
||||
- **Should `CmsController` be split into smaller, more focused modules?**
|
||||
_Cohesion score 0.0899854862119013 - 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,7 +1,7 @@
|
||||
# Graph Report - canina (2026-08-22)
|
||||
|
||||
## Corpus Check
|
||||
- 539 files · ~762,534 words
|
||||
- 539 files · ~762,735 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: `f9e40564`
|
||||
- Built from commit: `d62787cd`
|
||||
- Run `git rev-parse HEAD` and compare to check if the graph is stale.
|
||||
- Run `graphify update .` after code changes (no API cost).
|
||||
|
||||
@ -294,12 +294,12 @@
|
||||
- useSettingsStore
|
||||
- @types/supertest
|
||||
- typescript
|
||||
- @types/react-dom
|
||||
- wiki/page.tsx
|
||||
- CreateHealthLogDto
|
||||
- eslint-config-prettier
|
||||
- CreateReminderDto
|
||||
- track/page.tsx
|
||||
- dashboard/page.tsx
|
||||
- eslint-config-next
|
||||
- eslint-plugin-prettier
|
||||
- RouteErrorBoundary
|
||||
- globals
|
||||
@ -659,7 +659,7 @@ Nodes (16): BlogPost, BlogPreviewSection(), ProductDetailModalProps, SafeImage()
|
||||
|
||||
### Community 81 - "devDependencies"
|
||||
Cohesion: 0.13
|
||||
Nodes (15): eslint-config-next, devDependencies, eslint, eslint-config-next, jsdom, tailwindcss, @tailwindcss/postcss, @types/node (+7 more)
|
||||
Nodes (15): devDependencies, eslint, jsdom, tailwindcss, @tailwindcss/postcss, @types/node, @types/react-dom, @vitejs/plugin-react (+7 more)
|
||||
|
||||
### Community 82 - "auth.controller.ts"
|
||||
Cohesion: 0.18
|
||||
|
||||
2
graphify-out/cache/stat-index.json
vendored
2
graphify-out/cache/stat-index.json
vendored
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue
Block a user