Refactor code structure for improved readability and maintainability

This commit is contained in:
hamed
2026-07-11 13:26:22 +03:30
parent 958105694a
commit 0b49b03a1e
33 changed files with 6439 additions and 1476 deletions
+9 -1
View File
@@ -747,5 +747,13 @@
"745": "Community 745",
"746": "Community 746",
"747": "Community 747",
"748": "Community 748"
"748": "Community 748",
"749": "Community 749",
"750": "Community 750",
"751": "Community 751",
"752": "Community 752",
"753": "Community 753",
"754": "Community 754",
"755": "Community 755",
"756": "Community 756"
}
+140 -138
View File
@@ -1,16 +1,16 @@
# Graph Report - clinicpro (2026-07-11)
## Corpus Check
- 743 files · ~552,971 words
- 763 files · ~563,266 words
- Verdict: corpus is large enough that graph structure adds value.
## Summary
- 9384 nodes · 12986 edges · 749 communities (603 shown, 146 thin omitted)
- Extraction: 98% EXTRACTED · 2% INFERRED · 0% AMBIGUOUS · INFERRED: 281 edges (avg confidence: 0.8)
- 9567 nodes · 13272 edges · 757 communities (604 shown, 153 thin omitted)
- Extraction: 98% EXTRACTED · 2% INFERRED · 0% AMBIGUOUS · INFERRED: 293 edges (avg confidence: 0.8)
- Token cost: 0 input · 0 output
## Graph Freshness
- Built from commit: `a5e3408e`
- Built from commit: `95810569`
- Run `git rev-parse HEAD` and compare to check if the graph is stale.
- Run `graphify update .` after code changes (no API cost).
@@ -750,18 +750,24 @@
- [[_COMMUNITY_Community 746|Community 746]]
- [[_COMMUNITY_Community 747|Community 747]]
- [[_COMMUNITY_Community 748|Community 748]]
- [[_COMMUNITY_Community 749|Community 749]]
- [[_COMMUNITY_Community 750|Community 750]]
- [[_COMMUNITY_Community 751|Community 751]]
- [[_COMMUNITY_Community 752|Community 752]]
- [[_COMMUNITY_Community 753|Community 753]]
- [[_COMMUNITY_Community 754|Community 754]]
## God Nodes (most connected - your core abstractions)
1. `BaseController` - 82 edges
2. `ApiTestCase` - 76 edges
1. `BaseController` - 86 edges
2. `ApiTestCase` - 80 edges
3. `Doctor` - 59 edges
4. `api` - 55 edges
4. `api` - 56 edges
5. `UserProfile` - 52 edges
6. `Clinic` - 50 edges
7. `useAuthStore` - 43 edges
8. `AdminApiController` - 43 edges
9. `ApiResponse` - 41 edges
10. `formatDate()` - 39 edges
8. `ApiResponse` - 42 edges
9. `AdminApiController` - 41 edges
10. `formatDate()` - 40 edges
## Surprising Connections (you probably didn't know these)
- `ServiceTariffModal()` --calls--> `formatNumber()` [EXTRACTED]
@@ -770,19 +776,19 @@
assets/admin/components/ui/Pagination.tsx → assets/admin/lib/utils.ts
- `SettlementsPage()` --calls--> `formatRial()` [EXTRACTED]
assets/admin/pages/SettlementsPage.tsx → assets/admin/lib/utils.ts
- `NewAppointmentModal()` --calls--> `useAuthStore` [EXTRACTED]
assets/admin/pages/AppointmentsPage.tsx → assets/admin/stores/authStore.ts
- `LogoUploadField()` --calls--> `useAuthStore` [EXTRACTED]
assets/admin/pages/CategoriesPage.tsx → assets/admin/stores/authStore.ts
- `LogsPage()` --calls--> `formatDateTime()` [EXTRACTED]
assets/admin/pages/LogsPage.tsx → assets/admin/lib/utils.ts
- `SmsPage()` --calls--> `formatDateTime()` [EXTRACTED]
assets/admin/pages/SmsPage.tsx → assets/admin/lib/utils.ts
## Import Cycles
- None detected.
## Communities (749 total, 146 thin omitted)
## Communities (757 total, 153 thin omitted)
### Community 0 - "Community 0"
Cohesion: 0.05
Nodes (41): ALLOWED_ROLES, PrivateRoute(), PublicRoute(), RoleRoute(), queryClient, toastStyle, DEGREE_OPTIONS, DoctorFormPage() (+33 more)
Nodes (46): ALLOWED_ROLES, PrivateRoute(), PublicRoute(), RoleRoute(), queryClient, toastStyle, useSubscription(), avatarBg() (+38 more)
### Community 1 - "Community 1"
Cohesion: 0.03
@@ -813,8 +819,8 @@ Cohesion: 0.06
Nodes (8): DoctorService, Clinic, DoctorServiceRepository, Collection, Doctor, self, User, ManagerRegistry
### Community 8 - "Community 8"
Cohesion: 0.08
Nodes (27): useSubscription(), AdminLayout(), avatarBg(), buildSections(), HUES, Props, ROLE_LABELS, Section (+19 more)
Cohesion: 0.07
Nodes (27): Contract, InsuranceOption, KIND_LABEL, AdminLayout(), Topbar(), DEGREE_OPTIONS, DoctorFormPage(), FormValues (+19 more)
### Community 9 - "Community 9"
Cohesion: 0.04
@@ -834,7 +840,7 @@ Nodes (47): Clinic Doctor Invitation API, DELETE `/api/v1/admin/clinic/invitatio
### Community 13 - "Community 13"
Cohesion: 0.05
Nodes (36): get, PaymentConfig, PaymentGatewayInfo, usePaymentConfig(), api, ApiError, ApiResponse, downloadFile() (+28 more)
Nodes (42): get, PaymentConfig, PaymentGatewayInfo, usePaymentConfig(), api, ApiError, ApiResponse, downloadFile() (+34 more)
### Community 14 - "Community 14"
Cohesion: 0.10
@@ -857,16 +863,16 @@ Cohesion: 0.05
Nodes (38): API, API, API, API, API, Route, Route, Route (+30 more)
### Community 19 - "Community 19"
Cohesion: 0.03
Nodes (56): CityForm, citySchema, ImportError, InsuranceForm, insuranceSchema, LogoUploadField(), ProvinceForm, provinceSchema (+48 more)
Cohesion: 0.06
Nodes (23): CityForm, citySchema, ImportError, InsuranceForm, insuranceSchema, LogoUploadField(), ProvinceForm, provinceSchema (+15 more)
### Community 20 - "Community 20"
Cohesion: 0.12
Nodes (6): AdminApiController, Collection, JsonResponse, Request, User, StreamedResponse
Cohesion: 0.13
Nodes (4): AdminApiController, JsonResponse, Request, StreamedResponse
### Community 21 - "Community 21"
Cohesion: 0.03
Nodes (48): formatNumber(), ClinicAddress, ClinicDetailPage(), ClinicDoctorItem, ClinicInvitation, EditForm, editSchema, HUES_LIST (+40 more)
Cohesion: 0.05
Nodes (36): formatNumber(), ClinicDetailPage(), AdminCharts, AdminDashboard(), AdminRecent, AdminStats, APPT_CLS, APPT_COLOR (+28 more)
### Community 22 - "Community 22"
Cohesion: 0.15
@@ -889,8 +895,8 @@ Cohesion: 0.24
Nodes (4): InsuranceController, JsonResponse, Request, User
### Community 27 - "Community 27"
Cohesion: 0.06
Nodes (35): 55. 🟢 `GET` all tag, 56. 🟢 `GET` supplementary_insurance, 57. 🟢 `GET` categories list, 58. 🟢 `GET` all state, 59. 🟢 `GET` all city, 60. 🟢 `GET` all specially doctor, 62. 🟡 `PATCH` patch, 63. 🔴 `DELETE` DELETE (+27 more)
Cohesion: 0.05
Nodes (40): 55. 🟢 `GET` all tag, 56. 🟢 `GET` supplementary_insurance, 57. 🟢 `GET` categories list, 58. 🟢 `GET` all state, 59. 🟢 `GET` all city, 60. 🟢 `GET` all specially doctor, 61. 🔵 `POST` post, 62. 🟡 `PATCH` patch (+32 more)
### Community 28 - "Community 28"
Cohesion: 0.08
@@ -909,8 +915,8 @@ Cohesion: 0.06
Nodes (32): 10. Modal / Dialog, 11. Toast Notifications, 12. Empty States & Loading, 13. Page Header (هر صفحه), 14. تکنولوژی Stack, 15. Responsive Breakpoints, 16. Dark Mode (اختیاری — فاز دوم), 17. نمونه رنگ‌بندی صفحه داشبورد (+24 more)
### Community 33 - "Community 33"
Cohesion: 0.07
Nodes (25): CoverageRow, Draft, KIND, TenantInsurance, ServiceTariffModal(), TariffResponse, TariffRow, EMPTY_ITEMS (+17 more)
Cohesion: 0.05
Nodes (32): CoverageRow, Draft, KIND, TenantInsurance, ServiceTariffModal(), TariffResponse, TariffRow, Claim (+24 more)
### Community 34 - "Community 34"
Cohesion: 0.06
@@ -989,8 +995,8 @@ Cohesion: 0.07
Nodes (26): الزامات UI, باگ‌فیکس صفحه نوبت‌ها, باگ ۱ — کرش تقویم, باگ ۲ — روز هفته در DateNavigator, باگ ۳ — پیام «slot نیست», باگ ۴ — نوبت جدید: نام اجباری + find-or-create patient, باگ ۵ — patient_mobile نشان می‌دهد موبایل پزشک, باگ ۶ — نوبت‌های رزرو شده در نمایش زمانبندی (+18 more)
### Community 53 - "Community 53"
Cohesion: 0.08
Nodes (15): AppLogRepository, PaymentLog, ClaimItemRepository, PaymentLogRepository, PreRegistrationRepository, SiteConfigRepository, SmsSettingsRepository, ServiceEntityRepository (+7 more)
Cohesion: 0.07
Nodes (17): AppLogRepository, PaymentLog, ClaimItemRepository, DoctorClaimRequestRepository, PaymentLogRepository, PreRegistrationRepository, SessionServiceRepository, SiteConfigRepository (+9 more)
### Community 54 - "Community 54"
Cohesion: 0.10
@@ -1029,24 +1035,24 @@ Cohesion: 0.08
Nodes (25): Bulk import / export, DELETE `/api/v1/admin/specialty/{id}`, Errors, Errors, Errors, Errors, GET `/api/v1/admin/specialties`, GET `/api/v1/specialties` (+17 more)
### Community 63 - "Community 63"
Cohesion: 0.06
Nodes (41): FreeVisitPrice(), Pricing, cn(), formatRial(), iranMobileOptionalSchema, iranMobileSchema, isValidIranMobile(), maskMobile() (+33 more)
Cohesion: 0.05
Nodes (52): FreeVisitPrice(), Pricing, cn(), formatDate(), formatDateTime(), formatRial(), iranMobileOptionalSchema, iranMobileSchema (+44 more)
### Community 64 - "Community 64"
Cohesion: 0.29
Nodes (4): SmsWalletController, JsonResponse, Request, User
Cohesion: 0.19
Nodes (7): SmsWalletController, SmsSettingsRepository, SmsSettings, JsonResponse, Request, User, ManagerRegistry
### Community 65 - "Community 65"
Cohesion: 0.08
Nodes (24): 2. کاربر (User), 4. 🔵 `POST` verify code, 5. 🔵 `POST` send code, 6. 🔵 `POST` register, 7. 🔴 `DELETE` delete user, 8. 🟡 `PATCH` patch, 9. 🟢 `GET` list secretary, Request Body (+16 more)
### Community 66 - "Community 66"
Cohesion: 0.06
Nodes (6): ClinicStaff, SmsWallet, AppLog, LogPruneService, AppointmentExpiryService, self
Cohesion: 0.07
Nodes (5): ClinicStaff, SmsWallet, AppLog, AppointmentExpiryService, self
### Community 67 - "Community 67"
Cohesion: 0.08
Nodes (7): FinancialBreakdown, Invoice, Collection, InvoiceItem, self, Payment, User
Cohesion: 0.11
Nodes (4): Invoice, Collection, InvoiceItem, self
### Community 68 - "Community 68"
Cohesion: 0.12
@@ -1114,7 +1120,7 @@ Nodes (30): devDependencies, @babel/core, @babel/preset-env, @babel/preset-react
### Community 86 - "Community 86"
Cohesion: 0.05
Nodes (17): AppointmentExpiryServiceTest, DateOverrideOwnershipTest, LowTierFixesTest, SendCodeMobileRateLimitTest, ClaimsListPaginationTest, CaptchaFlowTest, ServiceItemDeleteCleanupTest, ServiceItemStaffOwnershipTest (+9 more)
Nodes (16): AppointmentExpiryServiceTest, LowTierFixesTest, SendCodeMobileRateLimitTest, ClaimsListPaginationTest, CaptchaFlowTest, ServiceItemStaffOwnershipTest, EntityManagerInterface, KernelBrowser (+8 more)
### Community 87 - "Community 87"
Cohesion: 0.10
@@ -1137,7 +1143,7 @@ Cohesion: 0.10
Nodes (20): DELETE `/api/v1/admin/users/{uuid}`, Errors, Errors, GET `/api/v1/admin/users`, GET `/api/v1/admin/users/stats`, GET `/api/v1/admin/users/{uuid}`, POST `/api/v1/admin/users/{uuid}/status`, PUT `/api/v1/admin/users/{uuid}` (+12 more)
### Community 92 - "Community 92"
Cohesion: 0.09
Cohesion: 0.10
Nodes (21): Bulk import / export, DELETE `/api/v1/admin/doctor-service/{id}`, Doctor Service API, Errors, Errors, Errors, Errors, GET `/api/v1/admin/doctor-services` (+13 more)
### Community 93 - "Community 93"
@@ -1201,8 +1207,8 @@ Cohesion: 0.33
Nodes (6): AppointmentController, Appointment, Doctor, JsonResponse, Request, User
### Community 108 - "Community 108"
Cohesion: 0.14
Nodes (9): CaptchaController, BaseController, CategoryController, SiteContextController, JsonResponse, JsonResponse, Request, JsonResponse (+1 more)
Cohesion: 0.13
Nodes (11): BaseController, CategoryController, DoctorImportController, SiteContextController, JsonResponse, JsonResponse, Request, User (+3 more)
### Community 109 - "Community 109"
Cohesion: 0.29
@@ -1401,16 +1407,16 @@ Cohesion: 0.09
Nodes (21): Appointment Settings API, Available Locations, Date Overrides, DELETE `/api/v1/appointment-settings/date-override/{uuid}`, Errors, Errors, Errors, `GET /api/v1/appointment-settings/available-locations/{doctorUuid}` (+13 more)
### Community 161 - "Community 161"
Cohesion: 0.24
Nodes (7): ClaimSubmitterInterface, ClaimService, ManualClaimSubmitter, Claim, Invoice, Claim, ClaimSubmissionResult
Cohesion: 0.16
Nodes (9): ClaimsListNPlusOneTest, ClaimItem, ClaimSubmitterInterface, ClaimService, ManualClaimSubmitter, Claim, Invoice, Claim (+1 more)
### Community 162 - "Community 162"
Cohesion: 0.13
Nodes (13): Architecture, Auth, Backend (PHP/Symfony), Backend — `src/`, Category / Bundle system, Commands, Database, First-time setup (+5 more)
### Community 163 - "Community 163"
Cohesion: 0.13
Nodes (14): autoload, autoload-dev, psr-4, psr-4, conflict, symfony/symfony, description, license (+6 more)
Cohesion: 0.11
Nodes (18): autoload, autoload-dev, psr-4, psr-4, conflict, symfony/symfony, description, extra (+10 more)
### Community 164 - "Community 164"
Cohesion: 0.29
@@ -1433,8 +1439,8 @@ Cohesion: 0.10
Nodes (20): api.ir (استعلام هویت — Shahkar / IbanMatch), اتصال به دیتابیس‌های مستقل (الزامی), اسرار (الزامی — قبل از اولین دیپلوی), امنیت و منابع, بررسی سلامت, دامنه‌ها و CORS, دیپلوی‌های بعدی, راهنمای دیپلوی ClinicPro (Coolify + Docker Compose) (+12 more)
### Community 169 - "Community 169"
Cohesion: 0.13
Nodes (7): EntityInsurancePricing, EntityInsurancePricingRepository, TenantServiceCoverageRepository, TenantInsuranceCleanupService, ManagerRegistry, ManagerRegistry, TenantServiceCoverage
Cohesion: 0.15
Nodes (5): EntityInsurancePricing, TenantInsuranceCleanupTest, EntityInsurancePricingRepository, TenantInsuranceCleanupService, ManagerRegistry
### Community 170 - "Community 170"
Cohesion: 0.13
@@ -1553,8 +1559,8 @@ Cohesion: 0.14
Nodes (13): Endpoint ها, PATCH /api/v1/secretary/{uuid}, POST /api/v1/secretary, تسک ۱۴: ماژول منشی, توضیح, زمان تخمینی, ساختار JSON, سیستم مجوزها — Resource-Based Permissions (مقیاس‌پذیر) (+5 more)
### Community 201 - "Community 201"
Cohesion: 0.17
Nodes (12): Admin API, Clinic Invitation Management, Dashboard, GET `/api/v1/admin/dashboard/charts`, GET `/api/v1/admin/dashboard/recent`, GET `/api/v1/admin/dashboard/stats`, GET /api/v1/admin/settings, PATCH /api/v1/admin/settings (+4 more)
Cohesion: 0.12
Nodes (16): Admin API, Clinic Invitation Management, Dashboard, GET `/api/v1/admin/dashboard/charts`, GET `/api/v1/admin/dashboard/recent`, GET `/api/v1/admin/dashboard/stats`, GET `/api/v1/admin/pre-registrations`, GET /api/v1/admin/settings (+8 more)
### Community 202 - "Community 202"
Cohesion: 0.15
@@ -1570,15 +1576,15 @@ Nodes (6): AuthenticationException, ExceptionSubscriber, SecurityHeadersSubscrib
### Community 205 - "Community 205"
Cohesion: 0.06
Nodes (23): Command, CancelExpiredAppointmentsCommand, CreateAdminCommand, PruneLogsCommand, SeedCategoriesCommand, SeedDemoDataCommand, SeedSmsMessageTemplatesCommand, SystemOwnerCommand (+15 more)
Nodes (26): Command, BackfillSurrogateRoleCommand, CancelExpiredAppointmentsCommand, CreateAdminCommand, PruneLogsCommand, SeedCategoriesCommand, SeedDemoDataCommand, SeedSmsMessageTemplatesCommand (+18 more)
### Community 206 - "Community 206"
Cohesion: 0.08
Nodes (14): MellatGateway, MockGateway, SepGateway, SoapClient, PaymentGatewayInterface, PaymentInitResult, PaymentRefundResult, PaymentVerifyResult (+6 more)
### Community 207 - "Community 207"
Cohesion: 0.15
Nodes (13): ۲. مدل داده و موجودیت‌ها, ۲.۱ کاربر (User), ۲.۱۰ پرداخت (Payment Types), ۲.۱۰.۱ پرداخت نوبت, ۲.۱۰.۲ پرداخت اشتراک, ۲.۱۱ پروفایل بیمار (Profile), ۲.۱۲ وبلاگ (Blog), ۲.۳ دکتر (Doctor) (+5 more)
Cohesion: 0.07
Nodes (30): ۲. مدل داده و موجودیت‌ها, ۲.۱ کاربر (User), ۲.۱۰ پرداخت (Payment Types), ۲.۱۰.۱ پرداخت نوبت, ۲.۱۰.۲ پرداخت اشتراک, ۲.۱۱ پروفایل بیمار (Profile), ۲.۱۲ وبلاگ (Blog), ۲.۱۳ نظرات، لایک و امتیازدهی (+22 more)
### Community 208 - "Community 208"
Cohesion: 0.23
@@ -1633,8 +1639,8 @@ Cohesion: 0.23
Nodes (5): PaymentRepository, Appointment, ManagerRegistry, Payment, User
### Community 225 - "Community 225"
Cohesion: 0.05
Nodes (36): formatDate(), formatDateTime(), toDate(), ALL_STATUSES, AppointmentDetailPage(), timeOf(), Claim, ClaimItem (+28 more)
Cohesion: 0.13
Nodes (12): AdminUserDetail, AVATAR_COLORS, EditForm, editSchema, GENDER_LABELS, getPrimaryRole(), MARITAL_LABELS, MEDICAL_SECTIONS (+4 more)
### Community 226 - "Community 226"
Cohesion: 0.15
@@ -1709,8 +1715,8 @@ Cohesion: 0.28
Nodes (4): SubscriptionService, ClinicSubscription, Payment, SubscriptionPlan
### Community 245 - "Community 245"
Cohesion: 0.15
Nodes (11): emptyFeatures(), FEATURE_KEYS, FEATURE_LABELS, PeriodForm, periodSchema, PLAN_DISPLAY, PlanForm, planSchema (+3 more)
Cohesion: 0.11
Nodes (15): emptyFeatures(), FEATURE_KEYS, FEATURE_LABELS, PeriodForm, periodSchema, PLAN_DISPLAY, PlanForm, planSchema (+7 more)
### Community 246 - "Community 246"
Cohesion: 0.17
@@ -1749,12 +1755,12 @@ Cohesion: 0.18
Nodes (11): 1. 🔵 `POST` refresh token, 1. احراز هویت (Authentication), 2. 🟢 `GET` X-CSRF-Token, 3. 🟢 `GET` user info 🆕, Request Body, بخش دوم — مستند کامل API, خطاهای عمومی, فهرست مطالب (+3 more)
### Community 255 - "Community 255"
Cohesion: 0.18
Nodes (11): GET /api/v1/doctors/{id}, GET /api/v1/doctors/{id}/insurances, GET /api/v1/representations/{id}, GET /oauth/userinfo — اطلاعات کاربر (سازگار با دروپال), POST /api/v1/representations/{id}/bank-accounts, POST /oauth/token — تجدید توکن (Refresh), POST /oauth/token — ورود به سیستم, Task-02: احراز هویت (Authentication) (+3 more)
Cohesion: 0.11
Nodes (19): GET /api/v1/appointment-settings/slots — دریافت اسلات‌های خالی, GET /api/v1/categories/cities — شهرها, GET /api/v1/categories/states — استان‌ها, GET /api/v1/doctors/{id}, GET /api/v1/doctors/{id}/insurances, GET /api/v1/representations/{id}, GET /oauth/userinfo — اطلاعات کاربر (سازگار با دروپال), POST /api/v1/appointment-settings/holidays — ثبت تعطیلی (فقط ادمین) (+11 more)
### Community 256 - "Community 256"
Cohesion: 0.17
Nodes (11): `200 OK` (به‌روزرسانی شد), `200 OK` (رد به‌دلیل تصاحب‌شده), `201 Created` (ساخته شد), `422` (اعتبارسنجی), Doctor Import (IRIMC) API, idempotency, Request, Response (+3 more)
Cohesion: 0.13
Nodes (14): `200 OK` (به‌روزرسانی شد), `200 OK` (رد به‌دلیل تصاحب‌شده), `201 Created` (ساخته شد), `422` (اعتبارسنجی), backfill نقش جانشین‌های قدیمی, Doctor Import (IRIMC) API, idempotency, Request (+6 more)
### Community 258 - "Community 258"
Cohesion: 0.15
@@ -1785,8 +1791,8 @@ Cohesion: 0.30
Nodes (4): RepresentationRepository, ManagerRegistry, Representation, User
### Community 265 - "Community 265"
Cohesion: 0.08
Nodes (27): calcFinalPrice(), EMPTY_RECORDS, EMPTY_SESSIONS, fileNumber(), getPatientName(), getPatientPhone(), InsurancePricing, MyPatientsPageInner() (+19 more)
Cohesion: 0.15
Nodes (17): calcFinalPrice(), EMPTY_RECORDS, EMPTY_SESSIONS, fileNumber(), getPatientName(), getPatientPhone(), InsurancePricing, MyPatientsPageInner() (+9 more)
### Community 266 - "Community 266"
Cohesion: 0.33
@@ -1821,20 +1827,16 @@ Cohesion: 0.18
Nodes (10): Endpoint های موجود که تغییر می‌کنند, GET /api/v1/admin/dashboard/charts?from=UNIX&to=UNIX, GET /api/v1/dashboard/clinic, GET /api/v1/dashboard/doctor, تسک ۱۶: داشبورد هوشمند — چارت + فیلتر زمانی, توضیح, زمان تخمینی, فیلتر بازه زمانی (+2 more)
### Community 274 - "Community 274"
Cohesion: 0.17
Cohesion: 0.16
Nodes (5): Authentication, ClinicPro — API Documentation Index, Error Code Reference, Modules, Standard Response Envelope
### Community 275 - "Community 275"
Cohesion: 0.19
Nodes (5): MellatGatewayTest, ErrorCodesTest, KavehNegarProviderTest, TestCase, KavehNegarProvider
### Community 276 - "Community 276"
Cohesion: 0.20
Nodes (9): Architecture Audit — ClinicPro Symfony 7 Migration, Architecture Score (بعد از اصلاحات), Architecture Violations, Executive Summary, Final Verdict (بعد از اصلاحات), Missing Requirements (کامل), اصلاحات اعمال‌شده (بعد از Audit), دلیل تصمیم (+1 more)
### Community 277 - "Community 277"
Cohesion: 0.20
Nodes (9): بخش اول — مستند محصول (PRD), فهرست کلی, کلینیک پرو — مستند جامع فنی و API, ۵. فهرست مشکلات شناسایی‌شده و اصلاحات لازم, ۶. پیوست, ۶.۱ دیاگرام وضعیت نوبت, ۶.۲ جریان کمیسیون, ۶.۳ بررسی محدودیت منشی (+1 more)
Cohesion: 0.08
Nodes (23): GET /api/v1/sms/balance — موجودی حساب پیامک, POST /api/v1/sms/queue — افزودن به صف, بخش اول — مستند محصول (PRD), ثبت‌نام دکتر — از طریق نماینده, ثبت‌نام دکتر — از طریق کلینیک, ثبت‌نام دکتر — مستقل, فهرست کلی, کلینیک پرو — مستند جامع فنی و API (+15 more)
### Community 279 - "Community 279"
Cohesion: 0.20
@@ -1897,12 +1899,12 @@ Cohesion: 0.20
Nodes (9): AdminApiController — dashboardCharts با بازه زمانی, DashboardController — اضافه کردن from/to, date range selector component:, تغییر Backend, تغییر Frontend — DashboardPage.tsx, فایل‌هایی که تغییر می‌کنند, معماری — تسک ۱۶: داشبورد هوشمند, نصب dependency: (+1 more)
### Community 294 - "Community 294"
Cohesion: 0.30
Cohesion: 0.29
Nodes (6): AbstractAuthenticator, Passport, PasswordAuthenticator, Request, Response, TokenInterface
### Community 295 - "Community 295"
Cohesion: 0.29
Nodes (5): AbstractController, AdminController, HomeController, Response, Response
Cohesion: 0.20
Nodes (8): AbstractController, AdminController, HomeController, SeoController, Response, Response, Request, Response
### Community 296 - "Community 296"
Cohesion: 0.22
@@ -1926,7 +1928,7 @@ Nodes (3): PreRegistrationController, JsonResponse, Request
### Community 301 - "Community 301"
Cohesion: 0.05
Nodes (41): PaginatedResponse, STATUS_FILTERS, AddForm, addSchema, ClinicsPage(), HUES_LIST, FILTERS, Breakdown (+33 more)
Nodes (42): PaginatedResponse, STATUS_FILTERS, AddForm, addSchema, ClinicsPage(), HUES_LIST, FILTERS, Breakdown (+34 more)
### Community 302 - "Community 302"
Cohesion: 0.12
@@ -1938,7 +1940,7 @@ Nodes (16): آماده‌سازی پروژه ClinicPro برای دیپلوی ر
### Community 304 - "Community 304"
Cohesion: 0.22
Nodes (9): 29. 🟢 `GET` clinic list 🆕, 30. 🟢 `GET` get 🆕, 33. 🔵 `POST` image_clinic, 6. کلینیک (Clinic), هدرهای اضافی, پارامترهای Query, پاسخ‌ها, پاسخ‌ها (+1 more)
Nodes (9): 29. 🟢 `GET` clinic list 🆕, 30. 🟢 `GET` get 🆕, 36. 🟢 `GET` get my rate, 6. کلینیک (Clinic), هدرهای اضافی, پارامترهای Query, پاسخ‌ها, پاسخ‌ها (+1 more)
### Community 306 - "Community 306"
Cohesion: 0.07
@@ -2061,8 +2063,8 @@ Cohesion: 0.39
Nodes (5): JsonContains, FunctionNode, Node, Parser, SqlWalker
### Community 340 - "Community 340"
Cohesion: 0.25
Nodes (8): ثبت‌نام دکتر — از طریق نماینده, ثبت‌نام دکتر — از طریق کلینیک, ثبت‌نام دکتر — مستقل, ۱. معرفی محصول, ۱.۱ نقش‌های سیستم, ۱.۲ فلوهای عملیاتی اصلی, ۱.۳ پلن‌های اشتراک, ۱.۴ سیستم پیامک
Cohesion: 0.05
Nodes (43): Contract, CoverageRow, fieldLabel, FormData, PAYMENT_LABELS, Rule, schema, sectionTitle (+35 more)
### Community 341 - "Community 341"
Cohesion: 0.12
@@ -2109,8 +2111,8 @@ Cohesion: 0.11
Nodes (18): `Appointment.php`, `PaymentController::pay` (نوبت را اصلاً چک نمی‌کند), `PaymentController::startOrderPayment` (فقط status، بدون چک زمان), `renderPaymentResult` labels (برچسب `expired` ندارد), الگوی موجود انقضا (`AppointmentExpiryService`) — برای مرجع, زمینه, فایل‌های مرتبط, مشکل / هدف (+10 more)
### Community 352 - "Community 352"
Cohesion: 0.25
Nodes (8): ۲.۲ انواع دسته‌بندی (Category Types), ۲.۲.۱ تگ (Tag), ۲.۲.۲ استان (State), ۲.۲.۳ شهر (City), ۲.۲.۴ بیمه پایه (Basic Insurance), ۲.۲.۵ بیمه مکمل (Supplementary Insurance), ۲.۲.۶ تخصص دکتر (Doctor Specialty), ۲.۲.۷ خدمات دکتر (Doctor Services)
Cohesion: 0.07
Nodes (27): فرضیات صریح (فقط جایی که اطلاعات وجود نداشت), فیچر کامل ایمپورت پزشکان نظام پزشکی (IRIMC): ایمپورت، تصاحب پروفایل، کرالر State-Based, پروژه‌ها و برنچ, ۱. هدف فیچر, ۱۰. معیار پذیرش (Definition of Done), ۲. تحلیل معماری موجود — حقایق تأییدشده (دوباره کشف نکن، دوباره نساز), ۲.۱ آنچه از قبل پیاده شده و کار می‌کند, ۲.۲ واگرایی‌های سند-با-کد که این پرامپت حل می‌کند (تصمیم‌های معماری مستند) (+19 more)
### Community 354 - "Community 354"
Cohesion: 0.36
@@ -2277,17 +2279,13 @@ Cohesion: 0.33
Nodes (6): Refactoring Plan, فاز ۰ — مستندسازی (۳ تا ۵ روز، قبل از هر کدنویسی), فاز ۱ — زیرساخت پایه (task-01), فاز ۲ — پیاده‌سازی ماژول‌ها (به ترتیب dependency), فاز ۳ — بهینه‌سازی (بعد از پیاده‌سازی), فاز ۴ — آماده‌سازی تولید
### Community 397 - "Community 397"
Cohesion: 0.21
Nodes (6): ClaimAmountBoundsTest, ClaimsListNPlusOneTest, ClaimItem, Claim, Doctor, User
Cohesion: 0.36
Nodes (4): ClaimAmountBoundsTest, Claim, Doctor, User
### Community 398 - "Community 398"
Cohesion: 0.22
Nodes (7): initiate(), refund(), reverse(), verify(), PaymentInitResult, PaymentRefundResult, PaymentVerifyResult
### Community 399 - "Community 399"
Cohesion: 0.23
Nodes (5): AbstractMigration, Schema, Version20260609130407, Schema, Version20260628133044
### Community 401 - "Community 401"
Cohesion: 0.12
Nodes (15): `lib/utils.ts`, `SettingsPage.tsx` (ورودی‌ها ریال ذخیره می‌شوند), زمینه, فایل‌های مرتبط, مشکل / هدف, نمونهٔ نمایش (Subscription), نکات مهم, واحد پول = تومان در پنل ادمین (نمایش ÷۱۰ / ورودی ×۱۰) — ذخیره و درگاه ریال می‌ماند (+7 more)
@@ -2297,8 +2295,8 @@ Cohesion: 0.11
Nodes (17): بازطراحی معماری پرداخت — سرویس‌محور، امن، توسعه‌پذیر (Backend), تست دستی (ddev، در حالت `payment_test_mode=1`), خروجی نهایی (طبق spec — در گزارش اجرا ارائه شود), زمینه, فایل‌های مرتبط, مشکل / هدف, نکات مهم, وضعیت فعلی (+9 more)
### Community 407 - "Community 407"
Cohesion: 0.16
Nodes (11): MessageBusInterface, MockObject, SmsService, SmsServiceLookupOnlyTest, SmsLogRepository, SmsMessageTemplateRepository, SmsService, SmsTextResolver (+3 more)
Cohesion: 0.27
Nodes (8): MessageBusInterface, MockObject, SmsServiceLookupOnlyTest, SmsLogRepository, SmsMessageTemplateRepository, SmsService, SmsTextResolver, KavehNegarProvider
### Community 414 - "Community 414"
Cohesion: 0.10
@@ -2308,6 +2306,10 @@ Nodes (20): edge cases, خلاصهٔ خطاها و اولویت, راه‌حل,
Cohesion: 0.17
Nodes (11): دیپلوی ClinicPro روی Coolify (Docker Compose), رفع اشکال, مراحل دیپلوی, معماری دیپلوی, نکات عملیاتی, چند دامنه فرانت‌اند (مهم), ۱. ساخت Resource در Coolify, ۲. اختصاص دامنه (+3 more)
### Community 421 - "Community 421"
Cohesion: 0.23
Nodes (5): AbstractMigration, Schema, Version20260609132009, Schema, Version20260611075829
### Community 424 - "Community 424"
Cohesion: 0.33
Nodes (5): SecretaryController, DoctorSecretary, JsonResponse, Request, User
@@ -2338,11 +2340,11 @@ Nodes (18): [F10] راهنمای کهنه در `CLAUDE.md`: endpoint `categorys/
### Community 451 - "Community 451"
Cohesion: 0.08
Nodes (22): Contract, InsuranceOption, KIND_LABEL, ChargeForm, chargeSchema, EMPTY_LOGS, POST_VISIT_VARS, REMINDER_HOUR_OPTIONS (+14 more)
Nodes (16): ClinicAddress, ClinicDoctorItem, ClinicInvitation, EditForm, editSchema, HUES_LIST, INV_STATUS_MAP, IRAN_CENTER (+8 more)
### Community 452 - "Community 452"
Cohesion: 0.33
Nodes (6): GET /api/v1/sms/balance — موجودی حساب پیامک, POST /api/v1/sms/queue — افزودن به صف, ۴. سیستم حساب و صف پیامک, ۴.۱ حساب پیامک (SMS Account), ۴.۲ صف پیامک (SMS Queue), ۴.۳ API پیامک
Cohesion: 0.15
Nodes (3): DoctorClaimRequest, Doctor, User
### Community 456 - "Community 456"
Cohesion: 0.15
@@ -2444,10 +2446,6 @@ Nodes (5): BeforeInstallPromptEvent, usePwaInstall(), PwaInstallBanner(), detect
Cohesion: 0.43
Nodes (3): InvoiceRepository, Invoice, ManagerRegistry
### Community 486 - "Community 486"
Cohesion: 0.40
Nodes (5): ۲.۸ تنظیمات نوبت (Appointment Settings), ۲.۸.۱ برنامه هفتگی (Weekly Schedule), ۲.۸.۲ تعطیلات (Holidays), ۲.۸.۳ لغو تعطیل (Date Override), ۲.۸.۴ الگوریتم محاسبه اسلات‌های خالی
### Community 487 - "Community 487"
Cohesion: 0.40
Nodes (5): Errors, GET `/api/v1/representation/dashboard/summary`, GET `/api/v1/representation/doctors/performance`, GET `/api/v1/representation/finance/report`, داشبورد، عملکرد و مالیِ نماینده‌ی جاری
@@ -2464,6 +2462,10 @@ Nodes (3): DoctorServiceController, JsonResponse, Request
Cohesion: 0.12
Nodes (15): `Modal.tsx` (بدون Portal), `PersianCalendar.tsx` (buttonها بدون `type`) — نمونه‌ها, باگ ۱ — علت, باگ ۲ — علت, رفع دو باگ Modal و تقویم شمسی در پنل ادمین, زمینه, فایل‌های مرتبط, مشکل / هدف (+7 more)
### Community 492 - "Community 492"
Cohesion: 0.18
Nodes (4): KavehNegarProvider, SmsService, SendSmsMessage, SmsProviderInterface
### Community 493 - "Community 493"
Cohesion: 0.20
Nodes (9): Backend Audit Backlog — ClinicPro, ☐ CRITICAL, ✅ DONE (committed on backend-audit), ☐ EPICS (design debt — cross-repo, defer; do NOT quick-fix), ☐ HIGH, ☐ LOW, ☐ MEDIUM, Progress (this audit session) (+1 more)
@@ -2581,24 +2583,24 @@ Cohesion: 0.15
Nodes (12): ارسال پیامک OTP فقط از طریق Kavenegar VerifyLookup (پترن), اسپک Kavenegar VerifyLookup (از داکیومنت رسمی), زمینه, فایل‌های مرتبط, نکات مهم, وضعیت فعلی, وظایف, پروژه (+4 more)
### Community 526 - "Community 526"
Cohesion: 0.50
Nodes (4): GET /api/v1/appointment-settings/slots — دریافت اسلات‌های خالی, POST /api/v1/appointment-settings/holidays — ثبت تعطیلی (فقط ادمین), POST /api/v1/appointment-settings/overrides — ثبت Override توسط دکتر, Task-09: API تنظیمات نوبت
Cohesion: 0.13
Nodes (14): Doctor Profile Claim API (تصاحب پروفایل پزشک ایمپورت‌شده), env های مرتبط, Errors, GET `/api/v1/admin/doctor-claims`, GET `/api/v1/doctor/{uuid}/claim-info`, POST `/api/v1/admin/doctors/{uuid}/transfer`, POST `/api/v1/doctor/{uuid}/claim`, Request (+6 more)
### Community 528 - "Community 528"
Cohesion: 0.50
Nodes (4): GET /api/v1/categories/cities — شهرها, GET /api/v1/categories/states — استان‌ها, Task-08: API دسته‌بندی‌ها, سایر Endpoint های دسته‌بندی — الزامی
Cohesion: 0.17
Nodes (12): buildKavenegarPattern(), KavenegarGuide(), SmsPage(), STATUS_LOG_META, Tab, TAG_FILTER_OPTIONS, TAG_LABELS, TemplateFormData (+4 more)
### Community 529 - "Community 529"
Cohesion: 0.50
Nodes (4): Errors, POST `/oauth/token/refresh`, Request Body, Response `200`
### Community 530 - "Community 530"
Cohesion: 0.33
Nodes (3): GatewayFactory, MellatGateway, SepGateway
Cohesion: 0.23
Nodes (4): GatewayFactory, MellatGateway, MellatGatewayTest, SepGateway
### Community 531 - "Community 531"
Cohesion: 0.50
Nodes (4): ۲.۱۳ نظرات، لایک و امتیازدهی, ۲.۱۳.۱ نظر (Comment), ۲.۱۳.۲ لایک (Like), ۲.۱۳.۳ امتیاز (Rate)
Cohesion: 0.42
Nodes (4): DoctorClaimRequest, DoctorClaimService, Doctor, User
### Community 532 - "Community 532"
Cohesion: 0.33
@@ -2625,8 +2627,8 @@ Cohesion: 0.22
Nodes (3): AppException, SlotTakenException, RuntimeException
### Community 543 - "Community 543"
Cohesion: 0.21
Nodes (6): HealthController, EntityManagerInterface, CommissionService, Payment, Representation, JsonResponse
Cohesion: 0.47
Nodes (3): CommissionService, Payment, Representation
### Community 544 - "Community 544"
Cohesion: 0.15
@@ -2696,6 +2698,10 @@ Nodes (4): SmsMessageTemplateRepository, SmsTextResolver, SmsMessageTemplate, Ma
Cohesion: 0.50
Nodes (4): GET /api/v1/sms/wallet/balance, GET /api/v1/sms/wallet/logs, POST /api/v1/sms/wallet/charge, SMS Wallet
### Community 561 - "Community 561"
Cohesion: 0.25
Nodes (3): CorsRegexEnvProcessorTest, ErrorCodesTest, TestCase
### Community 563 - "Community 563"
Cohesion: 0.67
Nodes (3): submit(), Claim, ClaimSubmissionResult
@@ -2781,12 +2787,12 @@ Cohesion: 0.43
Nodes (3): SmsLogRepository, SmsLog, ManagerRegistry
### Community 596 - "Community 596"
Cohesion: 0.57
Nodes (3): SeoController, Request, Response
Cohesion: 0.29
Nodes (3): FinancialBreakdown, Payment, User
### Community 597 - "Community 597"
Cohesion: 0.29
Nodes (7): Configuration, Errors, GET `/api/v1/admin/sms/templates`, GET `/api/v1/sms/template/{uuid}`, Response `200`, Response `200`, SMS API
Cohesion: 0.20
Nodes (10): Configuration, Errors, GET `/api/v1/admin/sms/templates`, GET `/api/v1/sms/template/{uuid}`, POST `/api/v1/admin/sms/template/{uuid}/approve`, Request Body (`application/json`), Response `200`, Response `200` (+2 more)
### Community 599 - "Community 599"
Cohesion: 0.67
@@ -2804,6 +2810,10 @@ Nodes (3): ماژول‌های شناسایی‌شده در PRD, موارد پو
Cohesion: 0.67
Nodes (3): نقاط ضعف, نقاط قوت, ۶. تحلیل API Design
### Community 606 - "Community 606"
Cohesion: 0.18
Nodes (10): ایمپورت پزشکان نظام پزشکی به کلینیک‌پرو و مدیریت مالکیت پروفایل, ۱. مسئله و محدودیت‌ها, ۲. مدل مالکیت پروفایل, ۳. راه‌حل انتخاب‌شده و دلیل آن, ۴. تغییرات بک‌اند (clinicpro), ۵. جریان کرالر (pipeline.py), ۶. نحوه‌ی اجرا, ۷. نکته‌ی مهم: captcha در لاگین (+2 more)
### Community 607 - "Community 607"
Cohesion: 0.34
Nodes (5): RepresentationController, JsonResponse, Representation, Request, User
@@ -2812,6 +2822,10 @@ Nodes (5): RepresentationController, JsonResponse, Representation, Request, User
Cohesion: 0.67
Nodes (3): بک‌اند, فرانت‌اند, وضعیت فعلی کد (مهم — قبل از تغییر بخوان)
### Community 618 - "Community 618"
Cohesion: 0.16
Nodes (5): ServiceItemDeleteCleanupTest, ServiceCoverageNPlusOneTest, TenantServiceCoverageRepository, ManagerRegistry, TenantServiceCoverage
### Community 625 - "Community 625"
Cohesion: 0.40
Nodes (5): 31. 🟡 `PATCH` patch, Request Body, مثال Request, هدرهای اضافی, پاسخ‌ها
@@ -3016,10 +3030,6 @@ Nodes (4): 39. 🟡 `PATCH` Comment confirmation, مثال Request, هدرهای
Cohesion: 0.50
Nodes (4): 45. 🔵 `POST` post, مثال Request, هدرهای اضافی, پاسخ‌ها
### Community 715 - "Community 715"
Cohesion: 0.67
Nodes (3): POST `/api/v1/admin/sms/template/{uuid}/approve`, Request Body (`application/json`), Response `200`
### Community 716 - "Community 716"
Cohesion: 0.50
Nodes (4): Errors, GET `/oauth/userinfo`, Headers, Response `200`
@@ -3109,8 +3119,8 @@ Cohesion: 0.50
Nodes (4): Errors, GET `/api/v1/representation/{uuid}`, Path Parameters, Response `200`
### Community 739 - "Community 739"
Cohesion: 0.67
Nodes (3): 36. 🟢 `GET` get my rate, هدرهای اضافی, پاسخ‌ها
Cohesion: 0.38
Nodes (4): DoctorClaimController, JsonResponse, Request, User
### Community 740 - "Community 740"
Cohesion: 0.67
@@ -3120,40 +3130,32 @@ Nodes (3): 42. 🔴 `DELETE` delete, هدرهای اضافی, پاسخ‌ها
Cohesion: 0.67
Nodes (3): 43. 🟢 `GET` get, هدرهای اضافی, پاسخ‌ها
### Community 743 - "Community 743"
Cohesion: 0.53
Nodes (3): SessionServiceRepository, ManagerRegistry, SessionService
### Community 744 - "Community 744"
Cohesion: 0.36
Nodes (4): DoctorImportResult, DoctorImportService, Collection, User
### Community 745 - "Community 745"
Cohesion: 0.40
Nodes (5): 61. 🔵 `POST` post, Request Body, مثال Request, هدرهای اضافی, پاسخ‌ها
### Community 746 - "Community 746"
Cohesion: 0.50
Nodes (4): GET `/api/v1/admin/pre-registrations`, POST `/api/v1/admin/pre-registrations/{uuid}/approve`, POST `/api/v1/admin/pre-registrations/{uuid}/reject`, Pre-Registration Management
### Community 747 - "Community 747"
Cohesion: 0.50
Nodes (4): extra, symfony, allow-contrib, require
### Community 753 - "Community 753"
Cohesion: 0.67
Nodes (3): 33. 🔵 `POST` image_clinic, هدرهای اضافی, پاسخ‌ها
## Knowledge Gaps
- **4087 isolated node(s):** `ALLOWED_ROLES`, `Pricing`, `ImageCropModalProps`, `TenantInsurance`, `CoverageRow` (+4082 more)
- **4135 isolated node(s):** `ALLOWED_ROLES`, `Pricing`, `ImageCropModalProps`, `TenantInsurance`, `CoverageRow` (+4130 more)
These have ≤1 connection - possible missing edges or undocumented components.
- **146 thin communities (<3 nodes) omitted from report** — run `graphify query` to explore isolated nodes.
- **153 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 `Altcha` connect `Community 367` to `Community 0`, `Community 485`?**
_High betweenness centrality (0.070) - this node is a cross-community bridge._
- **Why does `BaseController` connect `Community 108` to `Community 6`, `Community 138`, `Community 139`, `Community 14`, `Community 654`, `Community 655`, `Community 15`, `Community 20`, `Community 22`, `Community 26`, `Community 164`, `Community 295`, `Community 424`, `Community 300`, `Community 433`, `Community 435`, `Community 308`, `Community 59`, `Community 318`, `Community 576`, `Community 577`, `Community 64`, `Community 75`, `Community 77`, `Community 607`, `Community 480`, `Community 230`, `Community 104`, `Community 490`, `Community 107`, `Community 109`, `Community 499`, `Community 380`, `Community 121`, `Community 122`, `Community 252`?**
_High betweenness centrality (0.044) - this node is a cross-community bridge._
- **Why does `ApiTestCase` connect `Community 86` to `Community 640`, `Community 397`, `Community 534`, `Community 535`, `Community 541`, `Community 543`, `Community 562`, `Community 565`, `Community 574`, `Community 575`, `Community 594`, `Community 82`, `Community 609`, `Community 484`, `Community 744`, `Community 618`, `Community 748`, `Community 497`, `Community 371`?**
_High betweenness centrality (0.030) - this node is a cross-community bridge._
_High betweenness centrality (0.066) - this node is a cross-community bridge._
- **Why does `BaseController` connect `Community 108` to `Community 6`, `Community 138`, `Community 139`, `Community 14`, `Community 654`, `Community 655`, `Community 15`, `Community 20`, `Community 22`, `Community 26`, `Community 164`, `Community 295`, `Community 424`, `Community 300`, `Community 433`, `Community 435`, `Community 308`, `Community 59`, `Community 318`, `Community 576`, `Community 577`, `Community 64`, `Community 75`, `Community 77`, `Community 607`, `Community 480`, `Community 739`, `Community 230`, `Community 104`, `Community 745`, `Community 490`, `Community 107`, `Community 109`, `Community 499`, `Community 252`, `Community 121`, `Community 122`, `Community 380`?**
_High betweenness centrality (0.037) - this node is a cross-community bridge._
- **Why does `Version20260705070546` connect `Community 646` to `Community 421`?**
_High betweenness centrality (0.024) - this node is a cross-community bridge._
- **What connects `ALLOWED_ROLES`, `Pricing`, `ImageCropModalProps` to the rest of the system?**
_4087 weakly-connected nodes found - possible documentation gaps or missing edges._
_4135 weakly-connected nodes found - possible documentation gaps or missing edges._
- **Should `Community 0` be split into smaller, more focused modules?**
_Cohesion score 0.048087431693989074 - nodes in this community are weakly interconnected._
_Cohesion score 0.05069124423963134 - nodes in this community are weakly interconnected._
- **Should `Community 1` be split into smaller, more focused modules?**
_Cohesion score 0.028985507246376812 - nodes in this community are weakly interconnected._
- **Should `Community 2` be split into smaller, more focused modules?**
File diff suppressed because one or more lines are too long
@@ -0,0 +1 @@
{"nodes": [{"id": "users_hamed_pj_my_pj_clinic_pro_clinicpro_src_doctor_service_doctorimportresult_php", "label": "DoctorImportResult.php", "file_type": "code", "source_file": "src/Doctor/Service/DoctorImportResult.php", "source_location": "L1"}, {"id": "service_doctorimportresult_doctorimportresult", "label": "DoctorImportResult", "file_type": "code", "source_file": "src/Doctor/Service/DoctorImportResult.php", "source_location": "L7"}, {"id": "service_doctorimportresult_doctorimportresult_construct", "label": ".__construct()", "file_type": "code", "source_file": "src/Doctor/Service/DoctorImportResult.php", "source_location": "L9"}], "edges": [{"source": "users_hamed_pj_my_pj_clinic_pro_clinicpro_src_doctor_service_doctorimportresult_php", "target": "doctor", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "src/Doctor/Service/DoctorImportResult.php", "source_location": "L5", "weight": 1.0}, {"source": "users_hamed_pj_my_pj_clinic_pro_clinicpro_src_doctor_service_doctorimportresult_php", "target": "service_doctorimportresult_doctorimportresult", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/Doctor/Service/DoctorImportResult.php", "source_location": "L7", "weight": 1.0}, {"source": "service_doctorimportresult_doctorimportresult", "target": "service_doctorimportresult_doctorimportresult_construct", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/Doctor/Service/DoctorImportResult.php", "source_location": "L9", "weight": 1.0}], "raw_calls": []}
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 one or more lines are too long
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 one or more lines are too long
@@ -0,0 +1 @@
{"nodes": [{"id": "users_hamed_pj_my_pj_clinic_pro_clinicpro_src_shared_util_persiantext_php", "label": "PersianText.php", "file_type": "code", "source_file": "src/Shared/Util/PersianText.php", "source_location": "L1"}, {"id": "util_persiantext_persiantext", "label": "PersianText", "file_type": "code", "source_file": "src/Shared/Util/PersianText.php", "source_location": "L12"}, {"id": "util_persiantext_persiantext_normalize", "label": ".normalize()", "file_type": "code", "source_file": "src/Shared/Util/PersianText.php", "source_location": "L14"}, {"id": "util_persiantext_persiantext_samename", "label": ".sameName()", "file_type": "code", "source_file": "src/Shared/Util/PersianText.php", "source_location": "L40"}, {"id": "util_persiantext_persiantext_stripdoctortitle", "label": ".stripDoctorTitle()", "file_type": "code", "source_file": "src/Shared/Util/PersianText.php", "source_location": "L46"}], "edges": [{"source": "users_hamed_pj_my_pj_clinic_pro_clinicpro_src_shared_util_persiantext_php", "target": "util_persiantext_persiantext", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/Shared/Util/PersianText.php", "source_location": "L12", "weight": 1.0}, {"source": "util_persiantext_persiantext", "target": "util_persiantext_persiantext_normalize", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/Shared/Util/PersianText.php", "source_location": "L14", "weight": 1.0}, {"source": "util_persiantext_persiantext", "target": "util_persiantext_persiantext_samename", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/Shared/Util/PersianText.php", "source_location": "L40", "weight": 1.0}, {"source": "util_persiantext_persiantext", "target": "util_persiantext_persiantext_stripdoctortitle", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/Shared/Util/PersianText.php", "source_location": "L46", "weight": 1.0}], "raw_calls": [{"caller_nid": "util_persiantext_persiantext_normalize", "callee": "class_exists", "is_member_call": false, "source_file": "/Users/hamed/pj/my_pj/clinic_pro/clinicpro/src/Shared/Util/PersianText.php", "source_location": "L16", "receiver": null}, {"caller_nid": "util_persiantext_persiantext_normalize", "callee": "\\Normalizer", "is_member_call": false, "source_file": "/Users/hamed/pj/my_pj/clinic_pro/clinicpro/src/Shared/Util/PersianText.php", "source_location": "L17", "receiver": null}, {"caller_nid": "util_persiantext_persiantext_normalize", "callee": "strtr", "is_member_call": false, "source_file": "/Users/hamed/pj/my_pj/clinic_pro/clinicpro/src/Shared/Util/PersianText.php", "source_location": "L20", "receiver": null}, {"caller_nid": "util_persiantext_persiantext_normalize", "callee": "strtr", "is_member_call": false, "source_file": "/Users/hamed/pj/my_pj/clinic_pro/clinicpro/src/Shared/Util/PersianText.php", "source_location": "L31", "receiver": null}, {"caller_nid": "util_persiantext_persiantext_normalize", "callee": "array_combine", "is_member_call": false, "source_file": "/Users/hamed/pj/my_pj/clinic_pro/clinicpro/src/Shared/Util/PersianText.php", "source_location": "L31", "receiver": null}, {"caller_nid": "util_persiantext_persiantext_normalize", "callee": "trim", "is_member_call": false, "source_file": "/Users/hamed/pj/my_pj/clinic_pro/clinicpro/src/Shared/Util/PersianText.php", "source_location": "L36", "receiver": null}, {"caller_nid": "util_persiantext_persiantext_normalize", "callee": "preg_replace", "is_member_call": false, "source_file": "/Users/hamed/pj/my_pj/clinic_pro/clinicpro/src/Shared/Util/PersianText.php", "source_location": "L36", "receiver": null}, {"caller_nid": "util_persiantext_persiantext_samename", "callee": "self", "is_member_call": false, "source_file": "/Users/hamed/pj/my_pj/clinic_pro/clinicpro/src/Shared/Util/PersianText.php", "source_location": "L42", "receiver": null}, {"caller_nid": "util_persiantext_persiantext_samename", "callee": "self", "is_member_call": false, "source_file": "/Users/hamed/pj/my_pj/clinic_pro/clinicpro/src/Shared/Util/PersianText.php", "source_location": "L42", "receiver": null}, {"caller_nid": "util_persiantext_persiantext_stripdoctortitle", "callee": "trim", "is_member_call": false, "source_file": "/Users/hamed/pj/my_pj/clinic_pro/clinicpro/src/Shared/Util/PersianText.php", "source_location": "L48", "receiver": null}, {"caller_nid": "util_persiantext_persiantext_stripdoctortitle", "callee": "preg_replace", "is_member_call": false, "source_file": "/Users/hamed/pj/my_pj/clinic_pro/clinicpro/src/Shared/Util/PersianText.php", "source_location": "L48", "receiver": null}, {"caller_nid": "util_persiantext_persiantext_stripdoctortitle", "callee": "self", "is_member_call": false, "source_file": "/Users/hamed/pj/my_pj/clinic_pro/clinicpro/src/Shared/Util/PersianText.php", "source_location": "L48", "receiver": null}]}
File diff suppressed because one or more lines are too long
@@ -0,0 +1 @@
{"nodes": [{"id": "users_hamed_pj_my_pj_clinic_pro_clinicpro_src_doctor_repository_doctorclaimrequestrepository_php", "label": "DoctorClaimRequestRepository.php", "file_type": "code", "source_file": "src/Doctor/Repository/DoctorClaimRequestRepository.php", "source_location": "L1"}, {"id": "repository_doctorclaimrequestrepository_doctorclaimrequestrepository", "label": "DoctorClaimRequestRepository", "file_type": "code", "source_file": "src/Doctor/Repository/DoctorClaimRequestRepository.php", "source_location": "L9"}, {"id": "serviceentityrepository", "label": "ServiceEntityRepository", "file_type": "code", "source_file": "", "source_location": ""}, {"id": "repository_doctorclaimrequestrepository_doctorclaimrequestrepository_construct", "label": ".__construct()", "file_type": "code", "source_file": "src/Doctor/Repository/DoctorClaimRequestRepository.php", "source_location": "L11"}, {"id": "managerregistry", "label": "ManagerRegistry", "file_type": "code", "source_file": "src/Doctor/Repository/DoctorClaimRequestRepository.php", "source_location": "L11"}], "edges": [{"source": "users_hamed_pj_my_pj_clinic_pro_clinicpro_src_doctor_repository_doctorclaimrequestrepository_php", "target": "doctorclaimrequest", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "src/Doctor/Repository/DoctorClaimRequestRepository.php", "source_location": "L5", "weight": 1.0}, {"source": "users_hamed_pj_my_pj_clinic_pro_clinicpro_src_doctor_repository_doctorclaimrequestrepository_php", "target": "serviceentityrepository", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "src/Doctor/Repository/DoctorClaimRequestRepository.php", "source_location": "L6", "weight": 1.0}, {"source": "users_hamed_pj_my_pj_clinic_pro_clinicpro_src_doctor_repository_doctorclaimrequestrepository_php", "target": "managerregistry", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "src/Doctor/Repository/DoctorClaimRequestRepository.php", "source_location": "L7", "weight": 1.0}, {"source": "users_hamed_pj_my_pj_clinic_pro_clinicpro_src_doctor_repository_doctorclaimrequestrepository_php", "target": "repository_doctorclaimrequestrepository_doctorclaimrequestrepository", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/Doctor/Repository/DoctorClaimRequestRepository.php", "source_location": "L9", "weight": 1.0}, {"source": "repository_doctorclaimrequestrepository_doctorclaimrequestrepository", "target": "serviceentityrepository", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "src/Doctor/Repository/DoctorClaimRequestRepository.php", "source_location": "L9", "weight": 1.0}, {"source": "repository_doctorclaimrequestrepository_doctorclaimrequestrepository", "target": "repository_doctorclaimrequestrepository_doctorclaimrequestrepository_construct", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/Doctor/Repository/DoctorClaimRequestRepository.php", "source_location": "L11", "weight": 1.0}, {"source": "repository_doctorclaimrequestrepository_doctorclaimrequestrepository_construct", "target": "managerregistry", "relation": "references", "confidence": "EXTRACTED", "source_file": "src/Doctor/Repository/DoctorClaimRequestRepository.php", "source_location": "L11", "weight": 1.0, "context": "parameter_type"}], "raw_calls": [{"caller_nid": "repository_doctorclaimrequestrepository_doctorclaimrequestrepository_construct", "callee": "parent", "is_member_call": false, "source_file": "/Users/hamed/pj/my_pj/clinic_pro/clinicpro/src/Doctor/Repository/DoctorClaimRequestRepository.php", "source_location": "L13", "receiver": null}]}
@@ -0,0 +1 @@
{"nodes": [{"id": "users_hamed_pj_my_pj_clinic_pro_clinicpro_migrations_version20260711151000_php", "label": "Version20260711151000.php", "file_type": "code", "source_file": "migrations/Version20260711151000.php", "source_location": "L1"}, {"id": "migrations_version20260711151000_version20260711151000", "label": "Version20260711151000", "file_type": "code", "source_file": "migrations/Version20260711151000.php", "source_location": "L14"}, {"id": "abstractmigration", "label": "AbstractMigration", "file_type": "code", "source_file": "", "source_location": ""}, {"id": "migrations_version20260711151000_version20260711151000_getdescription", "label": ".getDescription()", "file_type": "code", "source_file": "migrations/Version20260711151000.php", "source_location": "L16"}, {"id": "migrations_version20260711151000_version20260711151000_up", "label": ".up()", "file_type": "code", "source_file": "migrations/Version20260711151000.php", "source_location": "L21"}, {"id": "schema", "label": "Schema", "file_type": "code", "source_file": "migrations/Version20260711151000.php", "source_location": "L21"}, {"id": "migrations_version20260711151000_version20260711151000_down", "label": ".down()", "file_type": "code", "source_file": "migrations/Version20260711151000.php", "source_location": "L46"}], "edges": [{"source": "users_hamed_pj_my_pj_clinic_pro_clinicpro_migrations_version20260711151000_php", "target": "schema", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "migrations/Version20260711151000.php", "source_location": "L7", "weight": 1.0}, {"source": "users_hamed_pj_my_pj_clinic_pro_clinicpro_migrations_version20260711151000_php", "target": "abstractmigration", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "migrations/Version20260711151000.php", "source_location": "L8", "weight": 1.0}, {"source": "users_hamed_pj_my_pj_clinic_pro_clinicpro_migrations_version20260711151000_php", "target": "migrations_version20260711151000_version20260711151000", "relation": "contains", "confidence": "EXTRACTED", "source_file": "migrations/Version20260711151000.php", "source_location": "L14", "weight": 1.0}, {"source": "migrations_version20260711151000_version20260711151000", "target": "abstractmigration", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "migrations/Version20260711151000.php", "source_location": "L14", "weight": 1.0}, {"source": "migrations_version20260711151000_version20260711151000", "target": "migrations_version20260711151000_version20260711151000_getdescription", "relation": "method", "confidence": "EXTRACTED", "source_file": "migrations/Version20260711151000.php", "source_location": "L16", "weight": 1.0}, {"source": "migrations_version20260711151000_version20260711151000", "target": "migrations_version20260711151000_version20260711151000_up", "relation": "method", "confidence": "EXTRACTED", "source_file": "migrations/Version20260711151000.php", "source_location": "L21", "weight": 1.0}, {"source": "migrations_version20260711151000_version20260711151000_up", "target": "schema", "relation": "references", "confidence": "EXTRACTED", "source_file": "migrations/Version20260711151000.php", "source_location": "L21", "weight": 1.0, "context": "parameter_type"}, {"source": "migrations_version20260711151000_version20260711151000", "target": "migrations_version20260711151000_version20260711151000_down", "relation": "method", "confidence": "EXTRACTED", "source_file": "migrations/Version20260711151000.php", "source_location": "L46", "weight": 1.0}, {"source": "migrations_version20260711151000_version20260711151000_down", "target": "schema", "relation": "references", "confidence": "EXTRACTED", "source_file": "migrations/Version20260711151000.php", "source_location": "L46", "weight": 1.0, "context": "parameter_type"}], "raw_calls": [{"caller_nid": "migrations_version20260711151000_version20260711151000_up", "callee": "addSql", "is_member_call": true, "source_file": "/Users/hamed/pj/my_pj/clinic_pro/clinicpro/migrations/Version20260711151000.php", "source_location": "L23", "receiver": null}, {"caller_nid": "migrations_version20260711151000_version20260711151000_up", "callee": "addSql", "is_member_call": true, "source_file": "/Users/hamed/pj/my_pj/clinic_pro/clinicpro/migrations/Version20260711151000.php", "source_location": "L42", "receiver": null}, {"caller_nid": "migrations_version20260711151000_version20260711151000_up", "callee": "addSql", "is_member_call": true, "source_file": "/Users/hamed/pj/my_pj/clinic_pro/clinicpro/migrations/Version20260711151000.php", "source_location": "L43", "receiver": null}, {"caller_nid": "migrations_version20260711151000_version20260711151000_down", "callee": "addSql", "is_member_call": true, "source_file": "/Users/hamed/pj/my_pj/clinic_pro/clinicpro/migrations/Version20260711151000.php", "source_location": "L48", "receiver": null}]}
@@ -0,0 +1 @@
{"nodes": [{"id": "users_hamed_pj_my_pj_clinic_pro_clinicpro_docs_scenarios_crawler_md", "label": "crawler.md", "file_type": "document", "source_file": "docs/scenarios/crawler.md", "source_location": "L1"}], "edges": [], "input_tokens": 0, "output_tokens": 0}
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 one or more lines are too long
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 one or more lines are too long
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 one or more lines are too long
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 one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -0,0 +1 @@
{"nodes": [{"id": "users_hamed_pj_my_pj_clinic_pro_clinicpro_docs_scenarios_climed_md", "label": "climed.md", "file_type": "document", "source_file": "docs/scenarios/climed.md", "source_location": "L1"}], "edges": [], "input_tokens": 0, "output_tokens": 0}
File diff suppressed because one or more lines are too long
+1 -1
View File
File diff suppressed because one or more lines are too long
+6131 -1301
View File
File diff suppressed because it is too large Load Diff
+130 -35
View File
@@ -1,7 +1,7 @@
{
"assets/admin/App.tsx": {
"mtime": 1782750328.975341,
"ast_hash": "496200a3a353f2057d3a37621f80aa07",
"mtime": 1783757885.6255667,
"ast_hash": "69fd74865eefe0cb7c1bfc78a71a0a1e",
"semantic_hash": ""
},
"assets/admin/components/FreeVisitPrice.tsx": {
@@ -30,8 +30,8 @@
"semantic_hash": ""
},
"assets/admin/components/layout/Sidebar.tsx": {
"mtime": 1783067421.0219867,
"ast_hash": "61ff8f2939c5c0d3d1aa9c23b75bcdb6",
"mtime": 1783757885.626085,
"ast_hash": "2f0f7e9608d40b9cda0a0b9412782cca",
"semantic_hash": ""
},
"assets/admin/components/layout/Topbar.tsx": {
@@ -245,8 +245,8 @@
"semantic_hash": ""
},
"assets/admin/pages/DoctorsPage.tsx": {
"mtime": 1783014538.7828207,
"ast_hash": "6cf2c963ef00401631e8d519b5f9b0ed",
"mtime": 1783757825.0106773,
"ast_hash": "d2092c284b360169efff2f5405469893",
"semantic_hash": ""
},
"assets/admin/pages/FinancialReportPage.tsx": {
@@ -810,8 +810,8 @@
"semantic_hash": ""
},
"src/Admin/Controller/AdminApiController.php": {
"mtime": 1783747617.3699927,
"ast_hash": "920703ac00621ed56bd030a02c077016",
"mtime": 1783757803.148958,
"ast_hash": "73acc68912b526d1c608c10b92fac3f0",
"semantic_hash": ""
},
"src/Admin/Controller/AdminController.php": {
@@ -930,8 +930,8 @@
"semantic_hash": ""
},
"src/Auth/Entity/User.php": {
"mtime": 1782728407.1921442,
"ast_hash": "c21a256d856199dfa5d76b7c4193306d",
"mtime": 1783757329.0757134,
"ast_hash": "85cd7c4923a991aab2f1003d8996fc32",
"semantic_hash": ""
},
"src/Auth/Entity/UserActiveContext.php": {
@@ -955,8 +955,8 @@
"semantic_hash": ""
},
"src/Auth/Security/PasswordAuthenticator.php": {
"mtime": 1783668692.4381845,
"ast_hash": "e4107ad152265492e7427334d4534b10",
"mtime": 1783757329.0759397,
"ast_hash": "1c385c3916608095ea2512ac434aca19",
"semantic_hash": ""
},
"src/Auth/Service/OtpService.php": {
@@ -1185,8 +1185,8 @@
"semantic_hash": ""
},
"src/Doctor/Entity/Doctor.php": {
"mtime": 1783747550.8134816,
"ast_hash": "ee77b315870c0299bc02b08b3e3a8726",
"mtime": 1783757329.076088,
"ast_hash": "e2334ea52505d1b8cc2b69b838fe17ca",
"semantic_hash": ""
},
"src/Doctor/Entity/DoctorAddress.php": {
@@ -1580,8 +1580,8 @@
"semantic_hash": ""
},
"src/Shared/Service/ApiIrService.php": {
"mtime": 1782750061.8790064,
"ast_hash": "5fb80e5fce2191b2ece9385cf295b983",
"mtime": 1783757329.076324,
"ast_hash": "7ee2ccaad6b77b3845258440accf99ee",
"semantic_hash": ""
},
"src/Shared/Service/FileValidatorService.php": {
@@ -2250,8 +2250,8 @@
"semantic_hash": ""
},
"config/packages/rate_limiter.yaml": {
"mtime": 1781946641.5599158,
"ast_hash": "9069ae4509af48c36a3905a2070465f9",
"mtime": 1783757329.0740077,
"ast_hash": "625dc1a0d852d36afd05b4ac60abd6d9",
"semantic_hash": ""
},
"config/packages/routing.yaml": {
@@ -2260,8 +2260,8 @@
"semantic_hash": ""
},
"config/packages/security.yaml": {
"mtime": 1783669243.3956637,
"ast_hash": "aa39bbbcb9476e4663f7f7e8e513528c",
"mtime": 1783757329.074222,
"ast_hash": "d6adafd1b3cf1b7ec18d3c729b70dcb8",
"semantic_hash": ""
},
"config/packages/twig.yaml": {
@@ -2300,8 +2300,8 @@
"semantic_hash": ""
},
"config/services.yaml": {
"mtime": 1783748202.290563,
"ast_hash": "cb30b75b2aa9eb8bd44ee757491d35d9",
"mtime": 1783757329.0744464,
"ast_hash": "feb62c479381915746246b38817892e3",
"semantic_hash": ""
},
"docs/Architecture_Audit.md": {
@@ -2340,8 +2340,8 @@
"semantic_hash": ""
},
"docs/api/admin.md": {
"mtime": 1783671102.5622253,
"ast_hash": "878c59042b8a5873afa8346b07830a35",
"mtime": 1783757329.0746298,
"ast_hash": "1fe7f1b55de999bb218ab72f44360021",
"semantic_hash": ""
},
"docs/api/appointment-settings.md": {
@@ -2395,8 +2395,8 @@
"semantic_hash": ""
},
"docs/api/doctor.md": {
"mtime": 1783747505.4473846,
"ast_hash": "59b4a19e6e646fcde2b31cf8cd6ccc46",
"mtime": 1783757329.0750217,
"ast_hash": "cb33dfc5636d36fdb6c98402cb789340",
"semantic_hash": ""
},
"docs/api/insurance.md": {
@@ -3850,8 +3850,8 @@
"semantic_hash": ""
},
"src/Auth/Command/SystemOwnerCommand.php": {
"mtime": 1783747644.3113935,
"ast_hash": "ba2cafb8bf075489371912af24b34757",
"mtime": 1783757329.0755038,
"ast_hash": "e26afd83ac2085644152496ebc79fbd3",
"semantic_hash": ""
},
".claude/prompt/fix-server-error-logs-20260711.md": {
@@ -3859,11 +3859,6 @@
"ast_hash": "07ba38da8be11ea753c616a29a133070",
"semantic_hash": ""
},
"docs/scenarios/irimc-doctor-import-ownership.html": {
"mtime": 1783692949.7169843,
"ast_hash": "65046faf3fcf2859db97a594fd66aeb1",
"semantic_hash": ""
},
"docs/scenarios/irimc-doctor-import-ownership.md": {
"mtime": 1783692850.4494128,
"ast_hash": "94803933a144c487e107395efcf6d764",
@@ -3880,8 +3875,108 @@
"semantic_hash": ""
},
"docs/api/doctor-import.md": {
"mtime": 1783747979.9276593,
"ast_hash": "0a30a6d1d4fd4f2584d6315ccf94ef35",
"mtime": 1783757329.074825,
"ast_hash": "cadef9a87e1f9249ffe4a78a3b394a45",
"semantic_hash": ""
},
"assets/admin/pages/DoctorClaimsPage.tsx": {
"mtime": 1783757859.3423393,
"ast_hash": "bf42d9bcc670c4632bb7078fba919b41",
"semantic_hash": ""
},
"migrations/Version20260711150000.php": {
"mtime": 1783757329.0904677,
"ast_hash": "a4735e00ad698d7b1908c1565f56101b",
"semantic_hash": ""
},
"migrations/Version20260711151000.php": {
"mtime": 1783757329.0905693,
"ast_hash": "4f19e830c75d8958e6ccac6fa0212d57",
"semantic_hash": ""
},
"src/Doctor/Command/BackfillSurrogateRoleCommand.php": {
"mtime": 1783757329.0907202,
"ast_hash": "795960477fc1d7bc59527e74777066d8",
"semantic_hash": ""
},
"src/Doctor/Controller/DoctorClaimController.php": {
"mtime": 1783757329.0908747,
"ast_hash": "ed52d6bb87506e44be9f86adffee5645",
"semantic_hash": ""
},
"src/Doctor/Controller/DoctorImportController.php": {
"mtime": 1783757329.0911074,
"ast_hash": "78db47cbe57f35d5c5baf17bcc3e3cca",
"semantic_hash": ""
},
"src/Doctor/Entity/DoctorClaimRequest.php": {
"mtime": 1783757329.0913296,
"ast_hash": "26c3d96b19594bb127aebb1e74df876e",
"semantic_hash": ""
},
"src/Doctor/Repository/DoctorClaimRequestRepository.php": {
"mtime": 1783757329.0914319,
"ast_hash": "9321165d5ce64d77ea1c20da6f08dc2e",
"semantic_hash": ""
},
"src/Doctor/Service/DoctorClaimService.php": {
"mtime": 1783757329.0916033,
"ast_hash": "577da8fd4de111aa71e0bdc1c98952ec",
"semantic_hash": ""
},
"src/Doctor/Service/DoctorImportResult.php": {
"mtime": 1783757329.0917,
"ast_hash": "4300a0647f76835d6913a031faa0e9f2",
"semantic_hash": ""
},
"src/Doctor/Service/DoctorImportService.php": {
"mtime": 1783757329.091918,
"ast_hash": "1e3ad74119be06e751c97438152c10bf",
"semantic_hash": ""
},
"src/Shared/Util/PersianText.php": {
"mtime": 1783757329.0920727,
"ast_hash": "5f7b411848c6a2969e6e299ed2a770a4",
"semantic_hash": ""
},
"tests/Doctor/DoctorClaimTest.php": {
"mtime": 1783757329.09223,
"ast_hash": "5973aa00e5a19406cd79f93be5455b76",
"semantic_hash": ""
},
"tests/Doctor/DoctorImportTest.php": {
"mtime": 1783757329.0924423,
"ast_hash": "77366f70913004b4b94367c2f47ef00e",
"semantic_hash": ""
},
"tests/Shared/PersianTextTest.php": {
"mtime": 1783757329.092578,
"ast_hash": "7edac40aa2ee51f7fa7d5fbefc9a49f9",
"semantic_hash": ""
},
".claude/prompt/irimc-import-complete.md": {
"mtime": 1783757329.0736878,
"ast_hash": "2d5029751c9bd813a0410e46aebe5eba",
"semantic_hash": ""
},
"docs/api/doctor-claim.md": {
"mtime": 1783757329.090325,
"ast_hash": "1cc55e0c447ec1d4176adc0700b8da54",
"semantic_hash": ""
},
"docs/scenarios/climed.md": {
"mtime": 1783753889.7651906,
"ast_hash": "36deff8609362d99217e415d322df1ac",
"semantic_hash": ""
},
"docs/scenarios/crawler.md": {
"mtime": 1783754133.317661,
"ast_hash": "86c9447fe38ac680873de5cae4f1db50",
"semantic_hash": ""
},
"docs/scenarios/\u0627\u06cc\u0645\u067e\u0648\u0631\u062a-\u067e\u0632\u0634\u06a9\u0627\u0646-\u0646\u0638\u0627\u0645-\u067e\u0632\u0634\u06a9\u06cc.md": {
"mtime": 1783751951.8968952,
"ast_hash": "692f883978aaad1f269b5357ba10a5f6",
"semantic_hash": ""
}
}