Implement ALTCHA captcha service with challenge generation and solution verification
- Added AltchaService class for managing ALTCHA captcha challenges and solutions. - Created CaptchaController to handle API requests for generating challenges. - Introduced CaptchaGuard for validating captcha solutions on public endpoints. - Developed unit tests for AltchaService to ensure challenge creation and solution verification functionality. - Implemented integration tests for the Captcha API endpoint and captcha bypass behavior when disabled. - Added documentation for the Captcha API in the corresponding markdown file.
This commit is contained in:
@@ -632,12 +632,10 @@
|
||||
"630": "Community 630",
|
||||
"631": "Community 631",
|
||||
"632": "Community 632",
|
||||
"633": "Community 633",
|
||||
"634": "Community 634",
|
||||
"635": "Community 635",
|
||||
"636": "Community 636",
|
||||
"637": "Community 637",
|
||||
"638": "Community 638",
|
||||
"639": "Community 639",
|
||||
"640": "Community 640",
|
||||
"641": "Community 641",
|
||||
@@ -666,7 +664,6 @@
|
||||
"664": "Community 664",
|
||||
"665": "Community 665",
|
||||
"666": "Community 666",
|
||||
"667": "Community 667",
|
||||
"668": "Community 668",
|
||||
"669": "Community 669",
|
||||
"670": "Community 670",
|
||||
@@ -676,7 +673,6 @@
|
||||
"674": "Community 674",
|
||||
"675": "Community 675",
|
||||
"676": "Community 676",
|
||||
"677": "Community 677",
|
||||
"678": "Community 678",
|
||||
"679": "Community 679",
|
||||
"680": "Community 680",
|
||||
@@ -688,11 +684,9 @@
|
||||
"686": "Community 686",
|
||||
"687": "Community 687",
|
||||
"688": "Community 688",
|
||||
"689": "Community 689",
|
||||
"690": "Community 690",
|
||||
"691": "Community 691",
|
||||
"692": "Community 692",
|
||||
"693": "Community 693",
|
||||
"694": "Community 694",
|
||||
"695": "Community 695",
|
||||
"696": "Community 696",
|
||||
"697": "Community 697",
|
||||
@@ -702,23 +696,28 @@
|
||||
"702": "Community 702",
|
||||
"703": "Community 703",
|
||||
"704": "Community 704",
|
||||
"705": "Community 705",
|
||||
"706": "Community 706",
|
||||
"707": "Community 707",
|
||||
"708": "Community 708",
|
||||
"709": "Community 709",
|
||||
"711": "Community 711",
|
||||
"712": "Community 712",
|
||||
"713": "Community 713",
|
||||
"714": "Community 714",
|
||||
"715": "Community 715",
|
||||
"717": "Community 717",
|
||||
"718": "Community 718",
|
||||
"719": "Community 719",
|
||||
"720": "Community 720",
|
||||
"721": "Community 721",
|
||||
"722": "Community 722",
|
||||
"725": "Community 725",
|
||||
"723": "Community 723",
|
||||
"726": "Community 726",
|
||||
"727": "Community 727",
|
||||
"728": "Community 728",
|
||||
"729": "Community 729",
|
||||
"730": "Community 730",
|
||||
"731": "Community 731",
|
||||
"732": "Community 732",
|
||||
"734": "Community 734",
|
||||
"735": "Community 735",
|
||||
"736": "Community 736",
|
||||
"737": "Community 737",
|
||||
"738": "Community 738"
|
||||
}
|
||||
|
||||
+159
-164
@@ -1,16 +1,16 @@
|
||||
# Graph Report - clinicpro (2026-07-10)
|
||||
|
||||
## Corpus Check
|
||||
- 728 files · ~538,154 words
|
||||
- 736 files · ~541,238 words
|
||||
- Verdict: corpus is large enough that graph structure adds value.
|
||||
|
||||
## Summary
|
||||
- 9204 nodes · 12739 edges · 722 communities (577 shown, 145 thin omitted)
|
||||
- 9268 nodes · 12820 edges · 721 communities (576 shown, 145 thin omitted)
|
||||
- Extraction: 98% EXTRACTED · 2% INFERRED · 0% AMBIGUOUS · INFERRED: 279 edges (avg confidence: 0.8)
|
||||
- Token cost: 0 input · 0 output
|
||||
|
||||
## Graph Freshness
|
||||
- Built from commit: `9d2023a7`
|
||||
- Built from commit: `11efed41`
|
||||
- Run `git rev-parse HEAD` and compare to check if the graph is stale.
|
||||
- Run `graphify update .` after code changes (no API cost).
|
||||
|
||||
@@ -636,12 +636,10 @@
|
||||
- [[_COMMUNITY_Community 625|Community 625]]
|
||||
- [[_COMMUNITY_Community 631|Community 631]]
|
||||
- [[_COMMUNITY_Community 632|Community 632]]
|
||||
- [[_COMMUNITY_Community 633|Community 633]]
|
||||
- [[_COMMUNITY_Community 634|Community 634]]
|
||||
- [[_COMMUNITY_Community 635|Community 635]]
|
||||
- [[_COMMUNITY_Community 636|Community 636]]
|
||||
- [[_COMMUNITY_Community 637|Community 637]]
|
||||
- [[_COMMUNITY_Community 638|Community 638]]
|
||||
- [[_COMMUNITY_Community 639|Community 639]]
|
||||
- [[_COMMUNITY_Community 640|Community 640]]
|
||||
- [[_COMMUNITY_Community 641|Community 641]]
|
||||
@@ -668,7 +666,6 @@
|
||||
- [[_COMMUNITY_Community 664|Community 664]]
|
||||
- [[_COMMUNITY_Community 665|Community 665]]
|
||||
- [[_COMMUNITY_Community 666|Community 666]]
|
||||
- [[_COMMUNITY_Community 667|Community 667]]
|
||||
- [[_COMMUNITY_Community 668|Community 668]]
|
||||
- [[_COMMUNITY_Community 669|Community 669]]
|
||||
- [[_COMMUNITY_Community 671|Community 671]]
|
||||
@@ -677,7 +674,6 @@
|
||||
- [[_COMMUNITY_Community 674|Community 674]]
|
||||
- [[_COMMUNITY_Community 675|Community 675]]
|
||||
- [[_COMMUNITY_Community 676|Community 676]]
|
||||
- [[_COMMUNITY_Community 677|Community 677]]
|
||||
- [[_COMMUNITY_Community 678|Community 678]]
|
||||
- [[_COMMUNITY_Community 679|Community 679]]
|
||||
- [[_COMMUNITY_Community 680|Community 680]]
|
||||
@@ -689,11 +685,9 @@
|
||||
- [[_COMMUNITY_Community 686|Community 686]]
|
||||
- [[_COMMUNITY_Community 687|Community 687]]
|
||||
- [[_COMMUNITY_Community 688|Community 688]]
|
||||
- [[_COMMUNITY_Community 689|Community 689]]
|
||||
- [[_COMMUNITY_Community 690|Community 690]]
|
||||
- [[_COMMUNITY_Community 691|Community 691]]
|
||||
- [[_COMMUNITY_Community 692|Community 692]]
|
||||
- [[_COMMUNITY_Community 693|Community 693]]
|
||||
- [[_COMMUNITY_Community 694|Community 694]]
|
||||
- [[_COMMUNITY_Community 695|Community 695]]
|
||||
- [[_COMMUNITY_Community 696|Community 696]]
|
||||
- [[_COMMUNITY_Community 697|Community 697]]
|
||||
@@ -703,29 +697,34 @@
|
||||
- [[_COMMUNITY_Community 702|Community 702]]
|
||||
- [[_COMMUNITY_Community 703|Community 703]]
|
||||
- [[_COMMUNITY_Community 704|Community 704]]
|
||||
- [[_COMMUNITY_Community 705|Community 705]]
|
||||
- [[_COMMUNITY_Community 706|Community 706]]
|
||||
- [[_COMMUNITY_Community 707|Community 707]]
|
||||
- [[_COMMUNITY_Community 708|Community 708]]
|
||||
- [[_COMMUNITY_Community 709|Community 709]]
|
||||
- [[_COMMUNITY_Community 711|Community 711]]
|
||||
- [[_COMMUNITY_Community 712|Community 712]]
|
||||
- [[_COMMUNITY_Community 713|Community 713]]
|
||||
- [[_COMMUNITY_Community 714|Community 714]]
|
||||
- [[_COMMUNITY_Community 715|Community 715]]
|
||||
- [[_COMMUNITY_Community 717|Community 717]]
|
||||
- [[_COMMUNITY_Community 718|Community 718]]
|
||||
- [[_COMMUNITY_Community 719|Community 719]]
|
||||
- [[_COMMUNITY_Community 720|Community 720]]
|
||||
- [[_COMMUNITY_Community 721|Community 721]]
|
||||
- [[_COMMUNITY_Community 722|Community 722]]
|
||||
- [[_COMMUNITY_Community 725|Community 725]]
|
||||
- [[_COMMUNITY_Community 723|Community 723]]
|
||||
- [[_COMMUNITY_Community 726|Community 726]]
|
||||
- [[_COMMUNITY_Community 727|Community 727]]
|
||||
- [[_COMMUNITY_Community 728|Community 728]]
|
||||
- [[_COMMUNITY_Community 729|Community 729]]
|
||||
- [[_COMMUNITY_Community 730|Community 730]]
|
||||
- [[_COMMUNITY_Community 731|Community 731]]
|
||||
- [[_COMMUNITY_Community 732|Community 732]]
|
||||
- [[_COMMUNITY_Community 734|Community 734]]
|
||||
- [[_COMMUNITY_Community 735|Community 735]]
|
||||
- [[_COMMUNITY_Community 736|Community 736]]
|
||||
- [[_COMMUNITY_Community 737|Community 737]]
|
||||
- [[_COMMUNITY_Community 738|Community 738]]
|
||||
|
||||
## God Nodes (most connected - your core abstractions)
|
||||
1. `BaseController` - 78 edges
|
||||
2. `ApiTestCase` - 74 edges
|
||||
1. `BaseController` - 80 edges
|
||||
2. `ApiTestCase` - 76 edges
|
||||
3. `api` - 55 edges
|
||||
4. `UserProfile` - 52 edges
|
||||
5. `Clinic` - 50 edges
|
||||
@@ -738,23 +737,23 @@
|
||||
## Surprising Connections (you probably didn't know these)
|
||||
- `ServiceTariffModal()` --calls--> `formatNumber()` [EXTRACTED]
|
||||
assets/admin/components/ServiceTariffModal.tsx → assets/admin/lib/utils.ts
|
||||
- `SmsPage()` --calls--> `formatDateTime()` [EXTRACTED]
|
||||
assets/admin/pages/SmsPage.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
|
||||
- `TabActions()` --calls--> `useAuthStore` [EXTRACTED]
|
||||
assets/admin/pages/CategoriesPage.tsx → assets/admin/stores/authStore.ts
|
||||
- `DashboardPage()` --calls--> `useAuthStore` [EXTRACTED]
|
||||
assets/admin/pages/DashboardPage.tsx → assets/admin/stores/authStore.ts
|
||||
|
||||
## Import Cycles
|
||||
- None detected.
|
||||
|
||||
## Communities (722 total, 145 thin omitted)
|
||||
## Communities (721 total, 145 thin omitted)
|
||||
|
||||
### Community 0 - "Community 0"
|
||||
Cohesion: 0.05
|
||||
Nodes (48): ALLOWED_ROLES, PrivateRoute(), PublicRoute(), RoleRoute(), queryClient, toastStyle, get, BeforeInstallPromptEvent (+40 more)
|
||||
Nodes (43): ALLOWED_ROLES, PrivateRoute(), PublicRoute(), RoleRoute(), queryClient, toastStyle, AddForm, addSchema (+35 more)
|
||||
|
||||
### Community 1 - "Community 1"
|
||||
Cohesion: 0.03
|
||||
@@ -769,8 +768,8 @@ Cohesion: 0.10
|
||||
Nodes (20): `RepresentationActionController` — welcome بهصورت inline (بدون تمپلت), `SmsMessageTemplate::DEFAULTS` (فاقد نام تمپلت و نگاشت token), `SmsService::sendNow` — انتخاب بین lookup و متنآزاد, الگوی فعلی همهی call-siteها (بهجز OTP) — متنآزاد، بدون `templateCode`, تبدیل همهی پیامکهای سیستمی به VerifyLookup کاوهنگار (تمپلت نامدار), تنها جای درست (OTP) — که باید الگوی بقیه شود, زمینه, فایلهای مرتبط (+12 more)
|
||||
|
||||
### Community 4 - "Community 4"
|
||||
Cohesion: 0.08
|
||||
Nodes (5): Doctor, Collection, self, User, WeeklySchedule
|
||||
Cohesion: 0.06
|
||||
Nodes (8): DoctorService, Doctor, DoctorServiceRepository, Collection, self, User, WeeklySchedule, ManagerRegistry
|
||||
|
||||
### Community 5 - "Community 5"
|
||||
Cohesion: 0.07
|
||||
@@ -785,8 +784,8 @@ Cohesion: 0.07
|
||||
Nodes (5): Clinic, Collection, Doctor, self, User
|
||||
|
||||
### Community 8 - "Community 8"
|
||||
Cohesion: 0.07
|
||||
Nodes (27): Contract, InsuranceOption, KIND_LABEL, AdminLayout(), Topbar(), DEGREE_OPTIONS, DoctorFormPage(), FormValues (+19 more)
|
||||
Cohesion: 0.08
|
||||
Nodes (27): useSubscription(), AdminLayout(), avatarBg(), buildSections(), HUES, Props, ROLE_LABELS, Section (+19 more)
|
||||
|
||||
### Community 9 - "Community 9"
|
||||
Cohesion: 0.04
|
||||
@@ -805,8 +804,8 @@ Cohesion: 0.05
|
||||
Nodes (44): Clinic Doctor Invitation API, DELETE `/api/v1/admin/clinic/invitation/{invUuid}`, Errors, Errors, Errors, Errors, Errors, Errors (+36 more)
|
||||
|
||||
### Community 13 - "Community 13"
|
||||
Cohesion: 0.08
|
||||
Nodes (21): api, ApiError, downloadFile(), getToken(), refreshOnce(), request(), { refreshMock, logoutMock }, replaceMock (+13 more)
|
||||
Cohesion: 0.06
|
||||
Nodes (29): get, PaymentConfig, PaymentGatewayInfo, api, ApiError, downloadFile(), getToken(), refreshOnce() (+21 more)
|
||||
|
||||
### Community 14 - "Community 14"
|
||||
Cohesion: 0.10
|
||||
@@ -817,12 +816,12 @@ Cohesion: 0.25
|
||||
Nodes (7): PaymentController, Appointment, JsonResponse, Payment, Request, Response, User
|
||||
|
||||
### Community 16 - "Community 16"
|
||||
Cohesion: 0.09
|
||||
Nodes (6): PatientSession, Appointment, Collection, PatientRecord, self, SessionService
|
||||
Cohesion: 0.06
|
||||
Nodes (8): PatientSession, SmsWallet, AppLog, Appointment, Collection, PatientRecord, self, SessionService
|
||||
|
||||
### Community 17 - "Community 17"
|
||||
Cohesion: 0.05
|
||||
Nodes (38): DELETE `/api/v1/comment/{uuid}`, Errors, Errors, Errors, Errors, Errors, Errors, Errors (+30 more)
|
||||
Cohesion: 0.06
|
||||
Nodes (33): DELETE `/api/v1/comment/{uuid}`, Errors, Errors, Errors, Errors, Errors, Errors, Errors (+25 more)
|
||||
|
||||
### Community 18 - "Community 18"
|
||||
Cohesion: 0.05
|
||||
@@ -830,7 +829,7 @@ Nodes (38): API, API, API, API, API, Route, Route, Route (+30 more)
|
||||
|
||||
### Community 19 - "Community 19"
|
||||
Cohesion: 0.03
|
||||
Nodes (59): CityForm, citySchema, ImportError, InsuranceForm, insuranceSchema, LogoUploadField(), ProvinceForm, provinceSchema (+51 more)
|
||||
Nodes (88): ApiResponse, PaginatedResponse, STATUS_FILTERS, CityForm, citySchema, ImportError, InsuranceForm, insuranceSchema (+80 more)
|
||||
|
||||
### Community 20 - "Community 20"
|
||||
Cohesion: 0.13
|
||||
@@ -838,11 +837,11 @@ Nodes (4): AdminApiController, JsonResponse, Request, StreamedResponse
|
||||
|
||||
### Community 21 - "Community 21"
|
||||
Cohesion: 0.05
|
||||
Nodes (34): formatNumber(), ClinicDetailPage(), AdminCharts, AdminDashboard(), AdminRecent, AdminStats, APPT_CLS, APPT_COLOR (+26 more)
|
||||
Nodes (33): formatNumber(), ClinicDetailPage(), AdminCharts, AdminDashboard(), AdminRecent, AdminStats, APPT_CLS, APPT_COLOR (+25 more)
|
||||
|
||||
### Community 22 - "Community 22"
|
||||
Cohesion: 0.09
|
||||
Nodes (15): RatingController, Like, Rate, CommentListNPlusOneTest, LikeRepository, RateRepository, JsonResponse, Request (+7 more)
|
||||
Cohesion: 0.15
|
||||
Nodes (9): RatingController, Like, LikeRepository, JsonResponse, Request, User, Comment, ManagerRegistry (+1 more)
|
||||
|
||||
### Community 23 - "Community 23"
|
||||
Cohesion: 0.05
|
||||
@@ -872,6 +871,10 @@ Nodes (4): Appointment, Doctor, self, User
|
||||
Cohesion: 0.06
|
||||
Nodes (35): Bulk import / export, DELETE `/api/v1/admin/city/{id}`, DELETE `/api/v1/admin/province/{id}`, Errors, Errors, Errors, Errors, GET `/api/v1/admin/cities` (+27 more)
|
||||
|
||||
### Community 30 - "Community 30"
|
||||
Cohesion: 0.09
|
||||
Nodes (13): BillingCalculatorTest, BillingCalculator, Money, BillingCalculator, InvoiceService, PatientService, CoverageRule, ShareBreakdown (+5 more)
|
||||
|
||||
### Community 31 - "Community 31"
|
||||
Cohesion: 0.06
|
||||
Nodes (33): `AppointmentStatusDropdown.tsx`, Doctor Tabs در داشبورد کلینیک, Pagination, `PersianCalendar.tsx`, Stats Bar, Status Badge (inline قابل کلیک), Status Dropdown (کلیک روی badge), Toolbar (+25 more)
|
||||
@@ -886,7 +889,7 @@ Nodes (21): CoverageRow, Draft, KIND, TenantInsurance, ServiceTariffModal(), Tar
|
||||
|
||||
### Community 34 - "Community 34"
|
||||
Cohesion: 0.06
|
||||
Nodes (35): require, doctrine/doctrine-bundle, doctrine/doctrine-migrations-bundle, doctrine/orm, ext-ctype, ext-iconv, ext-soap, lexik/jwt-authentication-bundle (+27 more)
|
||||
Nodes (36): require, altcha-org/altcha, doctrine/doctrine-bundle, doctrine/doctrine-migrations-bundle, doctrine/orm, ext-ctype, ext-iconv, ext-soap (+28 more)
|
||||
|
||||
### Community 35 - "Community 35"
|
||||
Cohesion: 0.06
|
||||
@@ -901,7 +904,7 @@ Cohesion: 0.06
|
||||
Nodes (31): API endpoint موجود برای آدرس دکتر:, `DELETE /api/v1/clinic/{clinicUuid}/address/{addressUuid}` — حذف, `docs/api/appointment-settings.md`:, `docs/api/clinic.md`:, Endpoint موجود (workaround که حذف میشود):, Entity `DoctorAddress`:, Frontend موجود (`DoctorDetailPage.tsx`):, `GET /api/v1/clinic/{clinicUuid}/addresses` — لیست آدرسها (+23 more)
|
||||
|
||||
### Community 38 - "Community 38"
|
||||
Cohesion: 0.22
|
||||
Cohesion: 0.25
|
||||
Nodes (8): Authentication API, DELETE `/api/v1/notification-mobile/{target}`, Errors, Notification Mobile (OTP), POST `/oauth/logout`, Request Body, Response `200`, Response `200`
|
||||
|
||||
### Community 39 - "Community 39"
|
||||
@@ -913,8 +916,8 @@ Cohesion: 0.09
|
||||
Nodes (4): User, PasswordAuthenticatedUserInterface, self, UserInterface
|
||||
|
||||
### Community 41 - "Community 41"
|
||||
Cohesion: 0.07
|
||||
Nodes (29): ApiResponse, PaginatedResponse, STATUS_FILTERS, FILTERS, Breakdown, SOURCE_LABEL, Summary, LEVEL_FILTER_OPTIONS (+21 more)
|
||||
Cohesion: 0.11
|
||||
Nodes (17): endpointهای عمومی که باید محافظت شوند, زمینه, مشکل / هدف, نکات مهم, وضعیت فعلی, وظایف, پروژه, یکپارچهسازی ALTCHA (کپچای Self-Hosted، Proof-of-Work) روی endpointهای عمومی (+9 more)
|
||||
|
||||
### Community 42 - "Community 42"
|
||||
Cohesion: 0.07
|
||||
@@ -945,8 +948,8 @@ Cohesion: 0.11
|
||||
Nodes (4): Payment, Appointment, self, User
|
||||
|
||||
### Community 49 - "Community 49"
|
||||
Cohesion: 0.07
|
||||
Nodes (22): AppointmentsPage(), BookingSlot, CancelledBadge(), DateNavigator(), EMPTY_ARR, getPersianWeekDay(), navBtnSx, NewAppointmentModal() (+14 more)
|
||||
Cohesion: 0.08
|
||||
Nodes (19): AppointmentsPage(), BookingSlot, CancelledBadge(), DateNavigator(), EMPTY_ARR, getPersianWeekDay(), navBtnSx, NewAppointmentModal() (+11 more)
|
||||
|
||||
### Community 50 - "Community 50"
|
||||
Cohesion: 0.07
|
||||
@@ -961,8 +964,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, ClaimItemRepository, InvoiceItemRepository, PreRegistrationRepository, SessionServiceRepository, SiteConfigRepository, ServiceEntityRepository, ManagerRegistry (+7 more)
|
||||
Cohesion: 0.10
|
||||
Nodes (13): AppLogRepository, ClaimItemRepository, PreRegistrationRepository, ProvinceRepository, SessionServiceRepository, ServiceEntityRepository, ManagerRegistry, ManagerRegistry (+5 more)
|
||||
|
||||
### Community 54 - "Community 54"
|
||||
Cohesion: 0.10
|
||||
@@ -1001,12 +1004,12 @@ 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.05
|
||||
Nodes (45): FreeVisitPrice(), Pricing, cn(), formatDateTime(), formatRial(), iranMobileOptionalSchema, iranMobileSchema, isValidIranMobile() (+37 more)
|
||||
Cohesion: 0.06
|
||||
Nodes (42): FreeVisitPrice(), Pricing, cn(), formatRial(), iranMobileOptionalSchema, iranMobileSchema, isValidIranMobile(), maskMobile() (+34 more)
|
||||
|
||||
### Community 64 - "Community 64"
|
||||
Cohesion: 0.19
|
||||
Nodes (7): SmsWalletController, SmsSettingsRepository, SmsSettings, JsonResponse, Request, User, ManagerRegistry
|
||||
Cohesion: 0.29
|
||||
Nodes (4): SmsWalletController, JsonResponse, Request, User
|
||||
|
||||
### Community 65 - "Community 65"
|
||||
Cohesion: 0.08
|
||||
@@ -1029,8 +1032,8 @@ Cohesion: 0.15
|
||||
Nodes (12): رفع بهمریختگی کامل پنل ادمین روی iPhone 8 (Safari/Chrome iOS), زمینه, فایلهای مرتبط, مشکل / هدف, نکات مهم, وضعیت فعلی, وظایف, پروژه (+4 more)
|
||||
|
||||
### Community 71 - "Community 71"
|
||||
Cohesion: 0.09
|
||||
Nodes (19): AddForm, addSchema, ClinicsPage(), HUES_LIST, EMPTY, PreRegistration, STATUS_META, STATUS_TABS (+11 more)
|
||||
Cohesion: 0.08
|
||||
Nodes (22): Contract, InsuranceOption, KIND_LABEL, ChargeForm, chargeSchema, EMPTY_LOGS, POST_VISIT_VARS, REMINDER_HOUR_OPTIONS (+14 more)
|
||||
|
||||
### Community 72 - "Community 72"
|
||||
Cohesion: 0.09
|
||||
@@ -1081,8 +1084,8 @@ Cohesion: 0.07
|
||||
Nodes (30): devDependencies, @babel/core, @babel/preset-env, @babel/preset-react, @babel/preset-typescript, core-js, @csstools/postcss-oklab-function, @hotwired/stimulus (+22 more)
|
||||
|
||||
### Community 86 - "Community 86"
|
||||
Cohesion: 0.06
|
||||
Nodes (15): AppointmentExpiryServiceTest, DateOverrideOwnershipTest, LowTierFixesTest, SendCodeMobileRateLimitTest, ClaimsListPaginationTest, ServiceItemStaffOwnershipTest, EntityManagerInterface, KernelBrowser (+7 more)
|
||||
Cohesion: 0.05
|
||||
Nodes (16): AppointmentExpiryServiceTest, LowTierFixesTest, SendCodeMobileRateLimitTest, ClaimsListPaginationTest, CaptchaFlowTest, ServiceItemStaffOwnershipTest, EntityManagerInterface, KernelBrowser (+8 more)
|
||||
|
||||
### Community 87 - "Community 87"
|
||||
Cohesion: 0.10
|
||||
@@ -1105,7 +1108,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"
|
||||
@@ -1169,8 +1172,8 @@ Cohesion: 0.33
|
||||
Nodes (6): AppointmentController, Appointment, Doctor, JsonResponse, Request, User
|
||||
|
||||
### Community 108 - "Community 108"
|
||||
Cohesion: 0.13
|
||||
Nodes (10): BaseController, CategoryController, CategoryImportController, SiteContextController, JsonResponse, JsonResponse, Request, JsonResponse (+2 more)
|
||||
Cohesion: 0.11
|
||||
Nodes (12): CaptchaController, BaseController, CategoryController, CategoryImportController, SiteContextController, JsonResponse, JsonResponse, Request (+4 more)
|
||||
|
||||
### Community 109 - "Community 109"
|
||||
Cohesion: 0.29
|
||||
@@ -1377,8 +1380,8 @@ 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
|
||||
@@ -1401,8 +1404,8 @@ Cohesion: 0.10
|
||||
Nodes (20): api.ir (استعلام هویت — Shahkar / IbanMatch), اتصال به دیتابیسهای مستقل (الزامی), اسرار (الزامی — قبل از اولین دیپلوی), امنیت و منابع, بررسی سلامت, دامنهها و CORS, دیپلویهای بعدی, راهنمای دیپلوی ClinicPro (Coolify + Docker Compose) (+12 more)
|
||||
|
||||
### Community 169 - "Community 169"
|
||||
Cohesion: 0.22
|
||||
Nodes (4): EntityInsurancePricing, TenantInsuranceCleanupTest, EntityInsurancePricingRepository, ManagerRegistry
|
||||
Cohesion: 0.15
|
||||
Nodes (5): EntityInsurancePricing, TenantInsuranceCleanupTest, EntityInsurancePricingRepository, TenantInsuranceCleanupService, ManagerRegistry
|
||||
|
||||
### Community 170 - "Community 170"
|
||||
Cohesion: 0.13
|
||||
@@ -1452,10 +1455,6 @@ Nodes (3): PatientRecord, Collection, User
|
||||
Cohesion: 0.23
|
||||
Nodes (3): WeeklySchedule, Doctor, self
|
||||
|
||||
### Community 182 - "Community 182"
|
||||
Cohesion: 0.07
|
||||
Nodes (5): SmsSettings, SmsWallet, LogPruneService, AppointmentExpiryService, self
|
||||
|
||||
### Community 183 - "Community 183"
|
||||
Cohesion: 0.14
|
||||
Nodes (13): `UserDetailPage.tsx` — فقط user query, زمینه, فایلهای مرتبط, قرارداد پروفایل (`UserProfile.toArray`), مشکل / هدف, نمایش پروفایل کاربر در صفحهی جزئیات کاربرِ پنل ادمین, نکات مهم, وضعیت فعلی (کد واقعی) (+5 more)
|
||||
@@ -1526,7 +1525,7 @@ Nodes (13): Endpoint ها, PATCH /api/v1/secretary/{uuid}, POST /api/v1/secretar
|
||||
|
||||
### Community 201 - "Community 201"
|
||||
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)
|
||||
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/representations`, GET /api/v1/admin/settings (+8 more)
|
||||
|
||||
### Community 202 - "Community 202"
|
||||
Cohesion: 0.15
|
||||
@@ -1545,8 +1544,8 @@ Cohesion: 0.07
|
||||
Nodes (20): Command, CancelExpiredAppointmentsCommand, CreateAdminCommand, PruneLogsCommand, SeedCategoriesCommand, SeedDemoDataCommand, SeedSmsMessageTemplatesCommand, InputInterface (+12 more)
|
||||
|
||||
### Community 206 - "Community 206"
|
||||
Cohesion: 0.08
|
||||
Nodes (14): MellatGateway, MockGateway, SepGateway, SoapClient, PaymentGatewayInterface, PaymentInitResult, PaymentRefundResult, PaymentVerifyResult (+6 more)
|
||||
Cohesion: 0.06
|
||||
Nodes (17): GatewayFactory, MellatGateway, MockGateway, SepGateway, MellatGateway, SepGateway, SoapClient, PaymentGatewayInterface (+9 more)
|
||||
|
||||
### Community 207 - "Community 207"
|
||||
Cohesion: 0.15
|
||||
@@ -1605,8 +1604,8 @@ Cohesion: 0.23
|
||||
Nodes (5): PaymentRepository, Appointment, ManagerRegistry, Payment, User
|
||||
|
||||
### Community 225 - "Community 225"
|
||||
Cohesion: 0.09
|
||||
Nodes (18): formatDate(), toDate(), ALL_STATUSES, AppointmentDetailPage(), timeOf(), Claim, ClaimItem, DebtRow (+10 more)
|
||||
Cohesion: 0.05
|
||||
Nodes (36): formatDate(), formatDateTime(), toDate(), ALL_STATUSES, AppointmentDetailPage(), timeOf(), Claim, ClaimItem (+28 more)
|
||||
|
||||
### Community 226 - "Community 226"
|
||||
Cohesion: 0.15
|
||||
@@ -1617,8 +1616,8 @@ Cohesion: 0.17
|
||||
Nodes (11): تشخیص عمیق down شدن سرور بعد از ~۱۰ سیکل + وریفای و تکمیل فیکسهای پایداری, زمینه, فایلهای مرتبط, مشکل / هدف, نکات مهم, وضعیت فعلی, وظایف, ۱. وریفای فیکسهای repo (idempotent) (+3 more)
|
||||
|
||||
### Community 228 - "Community 228"
|
||||
Cohesion: 0.04
|
||||
Nodes (47): Bulk import / export, DELETE `/api/v1/admin/insurance/{id}`, DELETE `/api/v1/billing/tenant-insurances/{uuid}`, DELETE `/api/v1/insurance/{id}`, EntityInsurancePricing — قیمتگذاری ویزیت بر اساس بیمه, Errors, Errors, Errors (+39 more)
|
||||
Cohesion: 0.20
|
||||
Nodes (10): Bulk import / export, DELETE `/api/v1/admin/insurance/{id}`, DELETE `/api/v1/insurance/{id}`, EntityInsurancePricing — قیمتگذاری ویزیت بر اساس بیمه, GET `/api/v1/insurance/{id}`, Insurance API, Response `200`, Response `200` (+2 more)
|
||||
|
||||
### Community 229 - "Community 229"
|
||||
Cohesion: 0.14
|
||||
@@ -1793,12 +1792,12 @@ 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.20
|
||||
Cohesion: 0.15
|
||||
Nodes (5): Authentication, ClinicPro — API Documentation Index, Error Code Reference, Modules, Standard Response Envelope
|
||||
|
||||
### Community 275 - "Community 275"
|
||||
Cohesion: 0.24
|
||||
Nodes (4): MellatGateway, MellatGatewayTest, ErrorCodesTest, TestCase
|
||||
Cohesion: 0.19
|
||||
Nodes (5): MellatGatewayTest, ErrorCodesTest, KavehNegarProviderTest, TestCase, KavehNegarProvider
|
||||
|
||||
### Community 276 - "Community 276"
|
||||
Cohesion: 0.20
|
||||
@@ -1897,8 +1896,8 @@ Cohesion: 0.42
|
||||
Nodes (3): PreRegistrationController, JsonResponse, Request
|
||||
|
||||
### Community 301 - "Community 301"
|
||||
Cohesion: 0.07
|
||||
Nodes (18): ClinicAddress, ClinicDoctorItem, ClinicInvitation, EditForm, editSchema, HUES_LIST, INV_STATUS_MAP, IRAN_CENTER (+10 more)
|
||||
Cohesion: 0.06
|
||||
Nodes (22): ClinicAddress, ClinicDoctorItem, ClinicInvitation, EditForm, editSchema, HUES_LIST, INV_STATUS_MAP, IRAN_CENTER (+14 more)
|
||||
|
||||
### Community 302 - "Community 302"
|
||||
Cohesion: 0.12
|
||||
@@ -1910,7 +1909,7 @@ Nodes (16): آمادهسازی پروژه ClinicPro برای دیپلوی ر
|
||||
|
||||
### Community 304 - "Community 304"
|
||||
Cohesion: 0.04
|
||||
Nodes (47): 29. 🟢 `GET` clinic list 🆕, 30. 🟢 `GET` get 🆕, 33. 🔵 `POST` image_clinic, 34. 🔵 `POST` image logo, 36. 🟢 `GET` get my rate, 37. 🔵 `POST` post, 38. 🟢 `GET` Unapproved comments, 39. 🟡 `PATCH` Comment confirmation (+39 more)
|
||||
Nodes (48): 29. 🟢 `GET` clinic list 🆕, 30. 🟢 `GET` get 🆕, 33. 🔵 `POST` image_clinic, 34. 🔵 `POST` image logo, 35. 🟡 `PATCH` patch, 36. 🟢 `GET` get my rate, 37. 🔵 `POST` post, 38. 🟢 `GET` Unapproved comments (+40 more)
|
||||
|
||||
### Community 306 - "Community 306"
|
||||
Cohesion: 0.07
|
||||
@@ -2009,8 +2008,8 @@ Cohesion: 0.22
|
||||
Nodes (8): Query های جدید, بیماران منحصربهفرد در بازه, درآمد بر اساس روز (از patient_sessions), فروش اشتراک بر اساس پنل (admin), نوبتها بر اساس روز (admin chart), نکات مهم, هیچ migration لازم نیست, پایگاه داده — تسک ۱۶: داشبورد هوشمند
|
||||
|
||||
### Community 333 - "Community 333"
|
||||
Cohesion: 0.25
|
||||
Nodes (7): DELETE `/api/v1/clinic-pro/doctor-address/{id}`, Doctor API, Errors, GET `/api/v1/doctors`, Query Parameters, Response `200`, Response `200`
|
||||
Cohesion: 0.05
|
||||
Nodes (41): DELETE `/api/v1/clinic-pro/doctor-address/{id}`, DELETE `/api/v1/doctor/{uuid}`, Doctor API, Errors, Errors, Errors, Errors, Errors (+33 more)
|
||||
|
||||
### Community 334 - "Community 334"
|
||||
Cohesion: 0.25
|
||||
@@ -2065,8 +2064,8 @@ Cohesion: 0.11
|
||||
Nodes (18): زمینه, فاز ۰ — Baseline, فاز ۱ — قرارداد پاسخ و Envelope, فاز ۲ — احراز هویت و مجوزها (Auth / RBAC), فاز ۳ — اعتبارسنجی ورودی و مدیریت خطا, فاز ۴ — امنیت API, فاز ۵ — پنل ادمین React SPA, فاز ۶ — یکپارچگی و سناریوهای واقعی کاربر (E2E) (+10 more)
|
||||
|
||||
### Community 348 - "Community 348"
|
||||
Cohesion: 0.39
|
||||
Nodes (3): ProvinceRepository, ManagerRegistry, Province
|
||||
Cohesion: 0.43
|
||||
Nodes (3): SmsTemplateRepository, SmsTemplate, ManagerRegistry
|
||||
|
||||
### Community 349 - "Community 349"
|
||||
Cohesion: 0.18
|
||||
@@ -2137,8 +2136,8 @@ Cohesion: 0.25
|
||||
Nodes (7): ادمین, دکتر نمونه کامل — تبریز, دکتران bulk (۱۵۰۰ دکتر در ۱۵ شهر), ساخت مجدد, منشی دکتر نمونه, کاربران تستی, کلینیک نمونه — تبریز
|
||||
|
||||
### Community 367 - "Community 367"
|
||||
Cohesion: 0.13
|
||||
Nodes (12): AdminUserDetail, AVATAR_COLORS, EditForm, editSchema, GENDER_LABELS, getPrimaryRole(), MARITAL_LABELS, MEDICAL_SECTIONS (+4 more)
|
||||
Cohesion: 0.18
|
||||
Nodes (5): Altcha, AltchaService, altcha, AltchaProps, IntrinsicElements
|
||||
|
||||
### Community 368 - "Community 368"
|
||||
Cohesion: 0.36
|
||||
@@ -2258,7 +2257,7 @@ Nodes (7): initiate(), refund(), reverse(), verify(), PaymentInitResult, Payment
|
||||
|
||||
### Community 399 - "Community 399"
|
||||
Cohesion: 0.23
|
||||
Nodes (5): AbstractMigration, Schema, Version20260609130407, Schema, Version20260611075829
|
||||
Nodes (5): AbstractMigration, Schema, Version20260609130407, Schema, Version20260628165710
|
||||
|
||||
### Community 401 - "Community 401"
|
||||
Cohesion: 0.12
|
||||
@@ -2269,7 +2268,7 @@ Cohesion: 0.11
|
||||
Nodes (17): بازطراحی معماری پرداخت — سرویسمحور، امن، توسعهپذیر (Backend), تست دستی (ddev، در حالت `payment_test_mode=1`), خروجی نهایی (طبق spec — در گزارش اجرا ارائه شود), زمینه, فایلهای مرتبط, مشکل / هدف, نکات مهم, وضعیت فعلی (+9 more)
|
||||
|
||||
### Community 407 - "Community 407"
|
||||
Cohesion: 0.15
|
||||
Cohesion: 0.16
|
||||
Nodes (11): MessageBusInterface, MockObject, SmsService, SmsServiceLookupOnlyTest, SmsLogRepository, SmsMessageTemplateRepository, SmsService, SmsTextResolver (+3 more)
|
||||
|
||||
### Community 418 - "Community 418"
|
||||
@@ -2408,10 +2407,6 @@ Nodes (3): CommissionService, Payment, Representation
|
||||
Cohesion: 0.29
|
||||
Nodes (6): Appointment Settings API, Available Locations, Errors, `GET /api/v1/appointment-settings/available-locations/{doctorUuid}`, Response `200`, Slot Calculation Logic (Reference)
|
||||
|
||||
### Community 485 - "Community 485"
|
||||
Cohesion: 0.43
|
||||
Nodes (3): SmsMessageController, JsonResponse, Request
|
||||
|
||||
### Community 486 - "Community 486"
|
||||
Cohesion: 0.40
|
||||
Nodes (5): ۲.۸ تنظیمات نوبت (Appointment Settings), ۲.۸.۱ برنامه هفتگی (Weekly Schedule), ۲.۸.۲ تعطیلات (Holidays), ۲.۸.۳ لغو تعطیل (Date Override), ۲.۸.۴ الگوریتم محاسبه اسلاتهای خالی
|
||||
@@ -2425,8 +2420,8 @@ Cohesion: 0.40
|
||||
Nodes (5): Admin Endpoints, GET /api/v1/admin/sms/settings/review, GET /api/v1/admin/sms/wallet-report, POST /api/v1/admin/sms/settings/{id}/approve, POST /api/v1/admin/sms/settings/{id}/reject
|
||||
|
||||
### Community 490 - "Community 490"
|
||||
Cohesion: 0.06
|
||||
Nodes (29): PaymentConfig, PaymentGatewayInfo, usePaymentConfig(), emptyFeatures(), FEATURE_KEYS, FEATURE_LABELS, PeriodForm, periodSchema (+21 more)
|
||||
Cohesion: 0.10
|
||||
Nodes (18): usePaymentConfig(), emptyFeatures(), FEATURE_KEYS, FEATURE_LABELS, PeriodForm, periodSchema, PLAN_DISPLAY, PlanForm (+10 more)
|
||||
|
||||
### Community 491 - "Community 491"
|
||||
Cohesion: 0.12
|
||||
@@ -2665,16 +2660,16 @@ Cohesion: 0.50
|
||||
Nodes (4): Errors, POST `/api/v1/admin/sms/template/{uuid}/reject`, Request Body, Response `200`
|
||||
|
||||
### Community 559 - "Community 559"
|
||||
Cohesion: 0.25
|
||||
Nodes (4): SmsMessageTemplateRepository, SmsTextResolver, SmsMessageTemplate, ManagerRegistry
|
||||
Cohesion: 0.16
|
||||
Nodes (7): SmsMessageController, SmsMessageTemplateRepository, SmsTextResolver, SmsMessageTemplate, JsonResponse, Request, ManagerRegistry
|
||||
|
||||
### Community 560 - "Community 560"
|
||||
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.43
|
||||
Nodes (3): BaseKernel, MicroKernelTrait, Kernel
|
||||
Cohesion: 0.19
|
||||
Nodes (6): BaseKernel, Closure, CorsRegexEnvProcessor, EnvVarProcessorInterface, MicroKernelTrait, Kernel
|
||||
|
||||
### Community 563 - "Community 563"
|
||||
Cohesion: 0.67
|
||||
@@ -2709,8 +2704,8 @@ Cohesion: 0.12
|
||||
Nodes (15): دیپلوی ClinicPro (Symfony) روی لیارا با Docker, زمینه, فایلهای مرتبط, مشکل / هدف, نکات مهم, وضعیت فعلی (کد واقعی), وظایف, پروژه (+7 more)
|
||||
|
||||
### Community 577 - "Community 577"
|
||||
Cohesion: 0.39
|
||||
Nodes (3): DoctorService, DoctorServiceRepository, ManagerRegistry
|
||||
Cohesion: 0.38
|
||||
Nodes (5): Rate, RateRepository, Doctor, ManagerRegistry, User
|
||||
|
||||
### Community 581 - "Community 581"
|
||||
Cohesion: 0.50
|
||||
@@ -2749,21 +2744,21 @@ Cohesion: 0.50
|
||||
Nodes (3): Entity: Payment, ساختار فایلها, معماری — تسک ۱۵: ماژول پرداخت
|
||||
|
||||
### Community 595 - "Community 595"
|
||||
Cohesion: 0.40
|
||||
Nodes (5): Errors, GET `/api/v1/clinic/my-doctor/{doctorUuid}`, Path Parameters, Response `200`, Schedule Fields Notes
|
||||
Cohesion: 0.43
|
||||
Nodes (3): SmsLogRepository, SmsLog, ManagerRegistry
|
||||
|
||||
### Community 596 - "Community 596"
|
||||
Cohesion: 0.15
|
||||
Nodes (3): LoggerInterface, RanginehProvider, ApiIrService
|
||||
|
||||
### 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
|
||||
Nodes (3): Errors, POST `/api/v1/sms/template/{uuid}/submit`, Response `200`
|
||||
|
||||
### Community 600 - "Community 600"
|
||||
Cohesion: 0.67
|
||||
Nodes (3): POST `/api/v1/admin/sms/template/{uuid}/approve`, Request Body (`application/json`), Response `200`
|
||||
|
||||
### Community 603 - "Community 603"
|
||||
Cohesion: 0.67
|
||||
Nodes (3): Anti-Pattern هایی که مشاهده میشوند, Pattern هایی که استفاده شدهاند, ۳. تحلیل Design Patterns
|
||||
@@ -2785,16 +2780,20 @@ Cohesion: 0.67
|
||||
Nodes (3): بکاند, فرانتاند, وضعیت فعلی کد (مهم — قبل از تغییر بخوان)
|
||||
|
||||
### Community 618 - "Community 618"
|
||||
Cohesion: 0.12
|
||||
Nodes (6): ServiceItemDeleteCleanupTest, ServiceCoverageNPlusOneTest, TenantServiceCoverageRepository, TenantInsuranceCleanupService, ManagerRegistry, TenantServiceCoverage
|
||||
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, هدرهای اضافی, پاسخها
|
||||
|
||||
### Community 631 - "Community 631"
|
||||
Cohesion: 0.50
|
||||
Nodes (4): GET `/api/v1/admin/representations`, Query Parameters, Representation Management, Response `200`
|
||||
Nodes (4): 40. 🔵 `POST` post, مثال Request, هدرهای اضافی, پاسخها
|
||||
|
||||
### Community 632 - "Community 632"
|
||||
Cohesion: 0.50
|
||||
Nodes (4): DELETE `/api/v1/doctor/{uuid}`, Errors, Path Parameters, Response `200`
|
||||
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 634 - "Community 634"
|
||||
Cohesion: 0.47
|
||||
@@ -2804,10 +2803,6 @@ Nodes (3): ImageCropModalProps, createImage(), getCroppedImage()
|
||||
Cohesion: 0.12
|
||||
Nodes (16): Runbook — تشخیص «ریاستارت» سرور: recycle عادی یا خرابی واقعی؟, اقدامات تکمیلی روی سرور (خارج از repo), تأیید روی سرور — اسکریپت آماده, جدول تفسیر خروجی اسکریپت, خلاصه یکخطی, علامت مشکل, چرا این اتفاق میافتاد (و فیکس اعمالشده), چکلیست رفع (+8 more)
|
||||
|
||||
### Community 638 - "Community 638"
|
||||
Cohesion: 0.40
|
||||
Nodes (5): Errors, PATCH `/api/v1/doctor/{uuid}`, Path Parameters, Request Body (`application/json`), Response `200`
|
||||
|
||||
### Community 640 - "Community 640"
|
||||
Cohesion: 0.40
|
||||
Nodes (5): Errors, Notes, POST `/api/v1/notification-mobile/request-otp`, Request Body, Response `200`
|
||||
@@ -2845,8 +2840,8 @@ Cohesion: 0.38
|
||||
Nodes (5): MyAppointmentsController, Doctor, JsonResponse, Request, User
|
||||
|
||||
### Community 656 - "Community 656"
|
||||
Cohesion: 0.43
|
||||
Nodes (3): SmsTemplateRepository, SmsTemplate, ManagerRegistry
|
||||
Cohesion: 0.33
|
||||
Nodes (6): Captcha API (ALTCHA), GET `/api/v1/altcha/challenge`, Response `200`, اعمال کپچا روی endpointهای محافظتشده, امنیت, خطای اعتبارسنجی کپچا `422`
|
||||
|
||||
### Community 657 - "Community 657"
|
||||
Cohesion: 0.20
|
||||
@@ -2862,16 +2857,12 @@ Nodes (4): ClinicInvitationService, Clinic, ClinicDoctorInvitation, User
|
||||
|
||||
### Community 661 - "Community 661"
|
||||
Cohesion: 0.43
|
||||
Nodes (3): SmsLogRepository, SmsLog, ManagerRegistry
|
||||
Nodes (5): BeforeInstallPromptEvent, usePwaInstall(), PwaInstallBanner(), detectIOS(), PwaLoginCard()
|
||||
|
||||
### Community 662 - "Community 662"
|
||||
Cohesion: 0.20
|
||||
Nodes (10): Application Logs, DELETE `/api/v1/admin/logs`, GET `/api/v1/admin/logs`, GET `/api/v1/admin/logs/export`, Log Retention, Query Parameters, Query Parameters, Response `200` (+2 more)
|
||||
|
||||
### Community 667 - "Community 667"
|
||||
Cohesion: 0.40
|
||||
Nodes (5): Errors, PATCH `/api/v1/clinic-pro/doctor-address/{id}`, Path Parameters, Request Body, Response `200`
|
||||
|
||||
### Community 672 - "Community 672"
|
||||
Cohesion: 0.17
|
||||
Nodes (11): تشخیص «ریاستارت» سرور روی Coolify + رفع نویز لاگ + بررسی خطای ACME, زمینه, فایلهای مرتبط, نکات مهم, وضعیت فعلی, وظایف, پروژه, ۱. کاهش نویز لاگ workerها (بدون تغییر رفتار) (+3 more)
|
||||
@@ -2881,8 +2872,8 @@ Cohesion: 0.50
|
||||
Nodes (4): Errors, POST `/api/v1/user/register`, Request Body, Response `201`
|
||||
|
||||
### Community 674 - "Community 674"
|
||||
Cohesion: 0.40
|
||||
Nodes (3): Props, StatTone, TONE
|
||||
Cohesion: 0.43
|
||||
Nodes (3): InvoiceItemRepository, InvoiceItem, ManagerRegistry
|
||||
|
||||
### Community 675 - "Community 675"
|
||||
Cohesion: 0.50
|
||||
@@ -2892,10 +2883,6 @@ Nodes (4): GET `/api/v1/admin/secretaries`, Query Parameters, Response `200`, Se
|
||||
Cohesion: 0.50
|
||||
Nodes (4): Errors, POST `/api/v1/doctor`, Request Body (`application/json`), Response `201`
|
||||
|
||||
### Community 677 - "Community 677"
|
||||
Cohesion: 0.50
|
||||
Nodes (4): Errors, GET `/api/v1/doctor/{uuid}`, Path Parameters, Response `200`
|
||||
|
||||
### Community 678 - "Community 678"
|
||||
Cohesion: 0.50
|
||||
Nodes (4): Errors, POST `/oauth/token`, Request Body, Response `200`
|
||||
@@ -2916,21 +2903,9 @@ Nodes (5): GET `/api/v1/admin/comments`, GET `/api/v1/admin/rates`, Query Parame
|
||||
Cohesion: 0.50
|
||||
Nodes (4): Errors, PATCH `/api/v1/admin/insurance/{id}`, Path Parameters, Response `200`
|
||||
|
||||
### Community 689 - "Community 689"
|
||||
Cohesion: 0.50
|
||||
Nodes (4): Errors, POST `/api/v1/clinic-pro/doctor-address`, Request Body, Response `201`
|
||||
|
||||
### Community 690 - "Community 690"
|
||||
Cohesion: 0.50
|
||||
Nodes (4): Errors, Path Parameters, POST `/api/v1/clinic-pro/doctor-address/from-clinic/{clinicUuid}`, Response `201`
|
||||
|
||||
### Community 692 - "Community 692"
|
||||
Cohesion: 0.50
|
||||
Nodes (4): extra, symfony, allow-contrib, require
|
||||
|
||||
### Community 693 - "Community 693"
|
||||
Cohesion: 0.67
|
||||
Nodes (3): GET `/api/v1/clinic-pro/doctor-addresses/{doctorId}`, Path Parameters, Response `200`
|
||||
### Community 694 - "Community 694"
|
||||
Cohesion: 0.48
|
||||
Nodes (3): SmsSettingsRepository, SmsSettings, ManagerRegistry
|
||||
|
||||
### Community 695 - "Community 695"
|
||||
Cohesion: 0.67
|
||||
@@ -2952,37 +2927,41 @@ Nodes (11): رفع خطای `Class "SoapClient" not found` در پرداخت م
|
||||
Cohesion: 0.40
|
||||
Nodes (5): 32. 🔵 `POST` post, Request Body, مثال Request, هدرهای اضافی, پاسخها
|
||||
|
||||
### Community 705 - "Community 705"
|
||||
Cohesion: 0.40
|
||||
Nodes (5): DELETE `/api/v1/billing/tenant-insurances/{uuid}`, GET `/api/v1/billing/tenant-insurances`, PATCH `/api/v1/billing/tenant-insurances/{uuid}`, POST `/api/v1/billing/tenant-insurances`, TenantInsurance — قراردادهای بیمهی tenant (فاز ۱ سیستم صورتحساب)
|
||||
|
||||
### Community 706 - "Community 706"
|
||||
Cohesion: 0.53
|
||||
Nodes (3): PaymentLog, PaymentLogRepository, ManagerRegistry
|
||||
|
||||
### Community 708 - "Community 708"
|
||||
Cohesion: 0.33
|
||||
Nodes (4): PatientService, Appointment, PatientRecord, PatientSession
|
||||
### Community 707 - "Community 707"
|
||||
Cohesion: 0.40
|
||||
Nodes (5): Errors, Path Parameters, POST `/api/v1/like/{commentUuid}`, Request Body (`application/json`), Response `200`
|
||||
|
||||
### Community 712 - "Community 712"
|
||||
Cohesion: 0.50
|
||||
Nodes (4): 44. 🟢 `GET` list comment, هدرهای اضافی, پارامترهای Query, پاسخها
|
||||
|
||||
### Community 714 - "Community 714"
|
||||
Cohesion: 0.40
|
||||
Nodes (5): 31. 🟡 `PATCH` patch, Request Body, مثال Request, هدرهای اضافی, پاسخها
|
||||
### Community 718 - "Community 718"
|
||||
Cohesion: 0.50
|
||||
Nodes (4): Errors, GET `/api/v1/admin/insurances`, Query Parameters, Response `200`
|
||||
|
||||
### Community 715 - "Community 715"
|
||||
Cohesion: 0.40
|
||||
Nodes (5): 35. 🟡 `PATCH` patch, Request Body, مثال Request, هدرهای اضافی, پاسخها
|
||||
### Community 719 - "Community 719"
|
||||
Cohesion: 0.50
|
||||
Nodes (4): Errors, POST `/api/v1/admin/insurance`, Request Body (`application/json`), Response `201`
|
||||
|
||||
### Community 720 - "Community 720"
|
||||
Cohesion: 0.33
|
||||
Nodes (3): Closure, CorsRegexEnvProcessor, EnvVarProcessorInterface
|
||||
Cohesion: 0.50
|
||||
Nodes (4): Errors, POST `/api/v1/insurance/`, Request Body (`application/json`), Response `201`
|
||||
|
||||
### Community 725 - "Community 725"
|
||||
Cohesion: 0.43
|
||||
Nodes (3): InvoiceService, Invoice, PatientSession
|
||||
### Community 721 - "Community 721"
|
||||
Cohesion: 0.50
|
||||
Nodes (4): Errors, PATCH `/api/v1/insurance/{id}`, Request Body, Response `200`
|
||||
|
||||
### Community 727 - "Community 727"
|
||||
Cohesion: 0.53
|
||||
Nodes (4): Money, BillingCalculator, CoverageRule, ShareBreakdown
|
||||
### Community 723 - "Community 723"
|
||||
Cohesion: 0.50
|
||||
Nodes (4): PUT `/api/v1/insurance-pricing`, Request Body, Response `200`, خطاها
|
||||
|
||||
### Community 728 - "Community 728"
|
||||
Cohesion: 0.50
|
||||
@@ -2996,28 +2975,44 @@ Nodes (3): Errors, GET `/api/v1/notification-mobile/{target}`, Response `200`
|
||||
Cohesion: 0.67
|
||||
Nodes (3): GET `/api/v1/representation/{uuid}/dashboard/yearly`, Query Parameters, Response `200`
|
||||
|
||||
### Community 734 - "Community 734"
|
||||
Cohesion: 0.67
|
||||
Nodes (3): GET `/api/v1/billing/tenant-insurances/{uuid}/service-coverage`, PUT `/api/v1/billing/tenant-insurances/{uuid}/service-coverage`, TenantServiceCoverage — پوشش خدمت تحت یک قرارداد بیمه (فاز ۲)
|
||||
|
||||
### Community 735 - "Community 735"
|
||||
Cohesion: 0.67
|
||||
Nodes (3): GET `/api/v1/insurance-pricing`, Response `200`, خطاها
|
||||
|
||||
### Community 736 - "Community 736"
|
||||
Cohesion: 0.67
|
||||
Nodes (3): GET `/api/v1/insurances`, Query Parameters, Response `200`
|
||||
|
||||
### Community 737 - "Community 737"
|
||||
Cohesion: 0.67
|
||||
Nodes (3): POST `/api/v1/admin/insurance/{id}/upload-logo`, Request, Response `200`
|
||||
|
||||
### Community 738 - "Community 738"
|
||||
Cohesion: 0.50
|
||||
Nodes (4): Errors, GET `/api/v1/representation/{uuid}`, Path Parameters, Response `200`
|
||||
|
||||
## Knowledge Gaps
|
||||
- **4009 isolated node(s):** `ALLOWED_ROLES`, `Pricing`, `ImageCropModalProps`, `TenantInsurance`, `CoverageRow` (+4004 more)
|
||||
- **4030 isolated node(s):** `ALLOWED_ROLES`, `Pricing`, `ImageCropModalProps`, `TenantInsurance`, `CoverageRow` (+4025 more)
|
||||
These have ≤1 connection - possible missing edges or undocumented components.
|
||||
- **145 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 `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 308`, `Community 58`, `Community 59`, `Community 318`, `Community 64`, `Community 75`, `Community 77`, `Community 607`, `Community 480`, `Community 485`, `Community 230`, `Community 104`, `Community 107`, `Community 109`, `Community 245`, `Community 380`, `Community 121`, `Community 122`, `Community 252`?**
|
||||
_High betweenness centrality (0.026) - 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 559`, `Community 433`, `Community 308`, `Community 58`, `Community 59`, `Community 318`, `Community 64`, `Community 75`, `Community 77`, `Community 607`, `Community 480`, `Community 230`, `Community 104`, `Community 107`, `Community 109`, `Community 245`, `Community 380`, `Community 121`, `Community 122`, `Community 252`?**
|
||||
_High betweenness centrality (0.029) - this node is a cross-community bridge._
|
||||
- **Why does `ApiTestCase` connect `Community 86` to `Community 397`, `Community 534`, `Community 535`, `Community 541`, `Community 169`, `Community 562`, `Community 565`, `Community 573`, `Community 574`, `Community 575`, `Community 708`, `Community 717`, `Community 594`, `Community 82`, `Community 609`, `Community 484`, `Community 618`, `Community 497`, `Community 371`?**
|
||||
_High betweenness centrality (0.020) - this node is a cross-community bridge._
|
||||
- **Why does `Version20260705070546` connect `Community 646` to `Community 399`?**
|
||||
_High betweenness centrality (0.019) - this node is a cross-community bridge._
|
||||
- **Why does `ApiTestCase` connect `Community 86` to `Community 397`, `Community 22`, `Community 535`, `Community 534`, `Community 541`, `Community 169`, `Community 562`, `Community 565`, `Community 573`, `Community 574`, `Community 575`, `Community 594`, `Community 82`, `Community 609`, `Community 484`, `Community 618`, `Community 497`, `Community 371`, `Community 633`?**
|
||||
_High betweenness centrality (0.018) - this node is a cross-community bridge._
|
||||
- **What connects `ALLOWED_ROLES`, `Pricing`, `ImageCropModalProps` to the rest of the system?**
|
||||
_4009 weakly-connected nodes found - possible documentation gaps or missing edges._
|
||||
_4030 weakly-connected nodes found - possible documentation gaps or missing edges._
|
||||
- **Should `Community 0` be split into smaller, more focused modules?**
|
||||
_Cohesion score 0.05004389815627744 - nodes in this community are weakly interconnected._
|
||||
_Cohesion score 0.047107014848950336 - 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?**
|
||||
|
||||
graphify-out/cache/ast/v0.8.44/0849c4c39bf752e5f94477e82ef9080245cde06f6fc59bac80a5b5a0f0f7eecc.json
Vendored
+1
@@ -0,0 +1 @@
|
||||
{"nodes": [{"id": "users_hamed_pj_my_pj_clinic_pro_clinicpro_src_shared_captcha_captchaguard_php", "label": "CaptchaGuard.php", "file_type": "code", "source_file": "src/Shared/Captcha/CaptchaGuard.php", "source_location": "L1"}, {"id": "captcha_captchaguard_captchaguard", "label": "CaptchaGuard", "file_type": "code", "source_file": "src/Shared/Captcha/CaptchaGuard.php", "source_location": "L16"}, {"id": "captcha_captchaguard_captchaguard_construct", "label": ".__construct()", "file_type": "code", "source_file": "src/Shared/Captcha/CaptchaGuard.php", "source_location": "L18"}, {"id": "captcha_captchaguard_captchaguard_assertvalid", "label": ".assertValid()", "file_type": "code", "source_file": "src/Shared/Captcha/CaptchaGuard.php", "source_location": "L20"}, {"id": "request", "label": "Request", "file_type": "code", "source_file": "src/Shared/Captcha/CaptchaGuard.php", "source_location": "L20"}], "edges": [{"source": "users_hamed_pj_my_pj_clinic_pro_clinicpro_src_shared_captcha_captchaguard_php", "target": "errorcodes", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "src/Shared/Captcha/CaptchaGuard.php", "source_location": "L5", "weight": 1.0}, {"source": "users_hamed_pj_my_pj_clinic_pro_clinicpro_src_shared_captcha_captchaguard_php", "target": "appexception", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "src/Shared/Captcha/CaptchaGuard.php", "source_location": "L6", "weight": 1.0}, {"source": "users_hamed_pj_my_pj_clinic_pro_clinicpro_src_shared_captcha_captchaguard_php", "target": "request", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "src/Shared/Captcha/CaptchaGuard.php", "source_location": "L7", "weight": 1.0}, {"source": "users_hamed_pj_my_pj_clinic_pro_clinicpro_src_shared_captcha_captchaguard_php", "target": "captcha_captchaguard_captchaguard", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/Shared/Captcha/CaptchaGuard.php", "source_location": "L16", "weight": 1.0}, {"source": "captcha_captchaguard_captchaguard", "target": "captcha_captchaguard_captchaguard_construct", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/Shared/Captcha/CaptchaGuard.php", "source_location": "L18", "weight": 1.0}, {"source": "captcha_captchaguard_captchaguard", "target": "captcha_captchaguard_captchaguard_assertvalid", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/Shared/Captcha/CaptchaGuard.php", "source_location": "L20", "weight": 1.0}, {"source": "captcha_captchaguard_captchaguard_assertvalid", "target": "request", "relation": "references", "confidence": "EXTRACTED", "source_file": "src/Shared/Captcha/CaptchaGuard.php", "source_location": "L20", "weight": 1.0, "context": "parameter_type"}], "raw_calls": [{"caller_nid": "captcha_captchaguard_captchaguard_assertvalid", "callee": "enabled", "is_member_call": true, "source_file": "/Users/hamed/pj/my_pj/clinic_pro/clinicpro/src/Shared/Captcha/CaptchaGuard.php", "source_location": "L22", "receiver": null}, {"caller_nid": "captcha_captchaguard_captchaguard_assertvalid", "callee": "json_decode", "is_member_call": false, "source_file": "/Users/hamed/pj/my_pj/clinic_pro/clinicpro/src/Shared/Captcha/CaptchaGuard.php", "source_location": "L26", "receiver": null}, {"caller_nid": "captcha_captchaguard_captchaguard_assertvalid", "callee": "getContent", "is_member_call": true, "source_file": "/Users/hamed/pj/my_pj/clinic_pro/clinicpro/src/Shared/Captcha/CaptchaGuard.php", "source_location": "L26", "receiver": null}, {"caller_nid": "captcha_captchaguard_captchaguard_assertvalid", "callee": "is_array", "is_member_call": false, "source_file": "/Users/hamed/pj/my_pj/clinic_pro/clinicpro/src/Shared/Captcha/CaptchaGuard.php", "source_location": "L27", "receiver": null}, {"caller_nid": "captcha_captchaguard_captchaguard_assertvalid", "callee": "verifySolution", "is_member_call": true, "source_file": "/Users/hamed/pj/my_pj/clinic_pro/clinicpro/src/Shared/Captcha/CaptchaGuard.php", "source_location": "L29", "receiver": null}]}
|
||||
graphify-out/cache/ast/v0.8.44/0f897db099d2ec763d97567742429eb682a7b6f955187cd2382b2df8957bd09a.json
Vendored
+1
File diff suppressed because one or more lines are too long
graphify-out/cache/ast/v0.8.44/1e979b2ea4c50ef051443cc5bd9f5351ac5cc9d8934c67c0c0319e3b36fc3d8b.json
Vendored
+1
File diff suppressed because one or more lines are too long
graphify-out/cache/ast/v0.8.44/51e53996bd81dece6745b657f1728dd6e02e1dcafe6171f84761e9624dcd0f60.json
Vendored
+1
File diff suppressed because one or more lines are too long
graphify-out/cache/ast/v0.8.44/546ab73e38144470b6ba0ee685ce273acc48d22a03f7d3f58c4e9d3cc9213230.json
Vendored
+1
File diff suppressed because one or more lines are too long
graphify-out/cache/ast/v0.8.44/63bfddb2b2dd14542521febeda5cc3584ed8c08eb27e1983dfeb1657154b3f7f.json
Vendored
+1
File diff suppressed because one or more lines are too long
graphify-out/cache/ast/v0.8.44/63d566ddb57c57860dce114a2fa5575f83877ad50bcdaace4d2f31648f83aa6c.json
Vendored
+1
File diff suppressed because one or more lines are too long
graphify-out/cache/ast/v0.8.44/6abeef1dc282dce2ff64bfc1ae4ea098c41f2fea0f3be9dfc38be3ccd7c628a5.json
Vendored
+1
@@ -0,0 +1 @@
|
||||
{"nodes": [{"id": "users_hamed_pj_my_pj_clinic_pro_clinicpro_docs_api_captcha_md", "label": "captcha.md", "file_type": "document", "source_file": "docs/api/captcha.md", "source_location": "L1"}, {"id": "api_captcha_captcha_api_altcha", "label": "Captcha API (ALTCHA)", "file_type": "document", "source_file": "docs/api/captcha.md", "source_location": "L1"}, {"id": "api_captcha_get_api_v1_altcha_challenge", "label": "GET `/api/v1/altcha/challenge`", "file_type": "document", "source_file": "docs/api/captcha.md", "source_location": "L10"}, {"id": "api_captcha_response_200", "label": "Response `200`", "file_type": "document", "source_file": "docs/api/captcha.md", "source_location": "L14"}, {"id": "api_captcha_\u0627\u0639\u0645\u0627\u0644_\u06a9\u067e\u0686\u0627_\u0631\u0648\u06cc_endpoint\u0647\u0627\u06cc_\u0645\u062d\u0627\u0641\u0638\u062a_\u0634\u062f\u0647", "label": "\u0627\u0639\u0645\u0627\u0644 \u06a9\u067e\u0686\u0627 \u0631\u0648\u06cc endpoint\u0647\u0627\u06cc \u0645\u062d\u0627\u0641\u0638\u062a\u200c\u0634\u062f\u0647", "file_type": "document", "source_file": "docs/api/captcha.md", "source_location": "L31"}, {"id": "api_captcha_\u062e\u0637\u0627\u06cc_\u0627\u0639\u062a\u0628\u0627\u0631\u0633\u0646\u062c\u06cc_\u06a9\u067e\u0686\u0627_422", "label": "\u062e\u0637\u0627\u06cc \u0627\u0639\u062a\u0628\u0627\u0631\u0633\u0646\u062c\u06cc \u06a9\u067e\u0686\u0627 `422`", "file_type": "document", "source_file": "docs/api/captcha.md", "source_location": "L53"}, {"id": "api_captcha_\u0627\u0645\u0646\u06cc\u062a", "label": "\u0627\u0645\u0646\u06cc\u062a", "file_type": "document", "source_file": "docs/api/captcha.md", "source_location": "L66"}], "edges": [{"source": "users_hamed_pj_my_pj_clinic_pro_clinicpro_docs_api_captcha_md", "target": "api_captcha_captcha_api_altcha", "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/api/captcha.md", "source_location": "L1", "weight": 1.0}, {"source": "api_captcha_captcha_api_altcha", "target": "api_captcha_get_api_v1_altcha_challenge", "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/api/captcha.md", "source_location": "L10", "weight": 1.0}, {"source": "api_captcha_get_api_v1_altcha_challenge", "target": "api_captcha_response_200", "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/api/captcha.md", "source_location": "L14", "weight": 1.0}, {"source": "api_captcha_captcha_api_altcha", "target": "api_captcha_\u0627\u0639\u0645\u0627\u0644_\u06a9\u067e\u0686\u0627_\u0631\u0648\u06cc_endpoint\u0647\u0627\u06cc_\u0645\u062d\u0627\u0641\u0638\u062a_\u0634\u062f\u0647", "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/api/captcha.md", "source_location": "L31", "weight": 1.0}, {"source": "api_captcha_\u0627\u0639\u0645\u0627\u0644_\u06a9\u067e\u0686\u0627_\u0631\u0648\u06cc_endpoint\u0647\u0627\u06cc_\u0645\u062d\u0627\u0641\u0638\u062a_\u0634\u062f\u0647", "target": "api_captcha_\u062e\u0637\u0627\u06cc_\u0627\u0639\u062a\u0628\u0627\u0631\u0633\u0646\u062c\u06cc_\u06a9\u067e\u0686\u0627_422", "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/api/captcha.md", "source_location": "L53", "weight": 1.0}, {"source": "api_captcha_captcha_api_altcha", "target": "api_captcha_\u0627\u0645\u0646\u06cc\u062a", "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/api/captcha.md", "source_location": "L66", "weight": 1.0}], "input_tokens": 0, "output_tokens": 0}
|
||||
graphify-out/cache/ast/v0.8.44/962704b45cef9adf358f089e6ca1282c649de48375527eaa85ccecf1ecd9ab63.json
Vendored
+1
File diff suppressed because one or more lines are too long
graphify-out/cache/ast/v0.8.44/a1dbde0191ac9e7b42cf608b82c8397c0425a57300c749f29f5589e4d99a82fa.json
Vendored
+1
File diff suppressed because one or more lines are too long
graphify-out/cache/ast/v0.8.44/b1602ecd3be5e3c1e29eb2f66b7beb9f991e5d7ac487e72e0c6bf6cf640a3879.json
Vendored
+1
@@ -0,0 +1 @@
|
||||
{"nodes": [{"id": "users_hamed_pj_my_pj_clinic_pro_clinicpro_src_shared_captcha_captchacontroller_php", "label": "CaptchaController.php", "file_type": "code", "source_file": "src/Shared/Captcha/CaptchaController.php", "source_location": "L1"}, {"id": "captcha_captchacontroller_captchacontroller", "label": "CaptchaController", "file_type": "code", "source_file": "src/Shared/Captcha/CaptchaController.php", "source_location": "L10"}, {"id": "basecontroller", "label": "BaseController", "file_type": "code", "source_file": "", "source_location": ""}, {"id": "captcha_captchacontroller_captchacontroller_construct", "label": ".__construct()", "file_type": "code", "source_file": "src/Shared/Captcha/CaptchaController.php", "source_location": "L13"}, {"id": "captcha_captchacontroller_captchacontroller_challenge", "label": ".challenge()", "file_type": "code", "source_file": "src/Shared/Captcha/CaptchaController.php", "source_location": "L15"}, {"id": "jsonresponse", "label": "JsonResponse", "file_type": "code", "source_file": "src/Shared/Captcha/CaptchaController.php", "source_location": "L15"}], "edges": [{"source": "users_hamed_pj_my_pj_clinic_pro_clinicpro_src_shared_captcha_captchacontroller_php", "target": "basecontroller", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "src/Shared/Captcha/CaptchaController.php", "source_location": "L5", "weight": 1.0}, {"source": "users_hamed_pj_my_pj_clinic_pro_clinicpro_src_shared_captcha_captchacontroller_php", "target": "attributes", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "src/Shared/Captcha/CaptchaController.php", "source_location": "L6", "weight": 1.0}, {"source": "users_hamed_pj_my_pj_clinic_pro_clinicpro_src_shared_captcha_captchacontroller_php", "target": "jsonresponse", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "src/Shared/Captcha/CaptchaController.php", "source_location": "L7", "weight": 1.0}, {"source": "users_hamed_pj_my_pj_clinic_pro_clinicpro_src_shared_captcha_captchacontroller_php", "target": "route", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "src/Shared/Captcha/CaptchaController.php", "source_location": "L8", "weight": 1.0}, {"source": "users_hamed_pj_my_pj_clinic_pro_clinicpro_src_shared_captcha_captchacontroller_php", "target": "captcha_captchacontroller_captchacontroller", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/Shared/Captcha/CaptchaController.php", "source_location": "L10", "weight": 1.0}, {"source": "captcha_captchacontroller_captchacontroller", "target": "basecontroller", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "src/Shared/Captcha/CaptchaController.php", "source_location": "L11", "weight": 1.0}, {"source": "captcha_captchacontroller_captchacontroller", "target": "captcha_captchacontroller_captchacontroller_construct", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/Shared/Captcha/CaptchaController.php", "source_location": "L13", "weight": 1.0}, {"source": "captcha_captchacontroller_captchacontroller", "target": "captcha_captchacontroller_captchacontroller_challenge", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/Shared/Captcha/CaptchaController.php", "source_location": "L15", "weight": 1.0}, {"source": "captcha_captchacontroller_captchacontroller_challenge", "target": "jsonresponse", "relation": "references", "confidence": "EXTRACTED", "source_file": "src/Shared/Captcha/CaptchaController.php", "source_location": "L15", "weight": 1.0, "context": "return_type"}], "raw_calls": [{"caller_nid": "captcha_captchacontroller_captchacontroller_challenge", "callee": "createChallenge", "is_member_call": true, "source_file": "/Users/hamed/pj/my_pj/clinic_pro/clinicpro/src/Shared/Captcha/CaptchaController.php", "source_location": "L23", "receiver": null}]}
|
||||
graphify-out/cache/ast/v0.8.44/c2185822b43db5ca6a54b83767776d61b6602130d3d66920219a7ee30faeeeaf.json
Vendored
+1
File diff suppressed because one or more lines are too long
graphify-out/cache/ast/v0.8.44/c435895b86893a68c87144f4f70cb4e75f26bfbfc99390769c837c450dfb3a21.json
Vendored
+1
File diff suppressed because one or more lines are too long
graphify-out/cache/ast/v0.8.44/d98e311e0268ef2b6015b051d42bfedaaf9afa0a2850d7842f1e0d7600916f4a.json
Vendored
+1
File diff suppressed because one or more lines are too long
graphify-out/cache/ast/v0.8.44/db00decdd07f5ce818cae523811ea83bb924334ebf86272b975dfec118027095.json
Vendored
+1
@@ -0,0 +1 @@
|
||||
{"nodes": [{"id": "users_hamed_pj_my_pj_clinic_pro_clinicpro_docs_api_captcha_md", "label": "captcha.md", "file_type": "document", "source_file": "docs/api/captcha.md", "source_location": "L1"}, {"id": "api_captcha_captcha_api_altcha", "label": "Captcha API (ALTCHA)", "file_type": "document", "source_file": "docs/api/captcha.md", "source_location": "L1"}, {"id": "api_captcha_get_api_v1_altcha_challenge", "label": "GET `/api/v1/altcha/challenge`", "file_type": "document", "source_file": "docs/api/captcha.md", "source_location": "L10"}, {"id": "api_captcha_response_200", "label": "Response `200`", "file_type": "document", "source_file": "docs/api/captcha.md", "source_location": "L14"}, {"id": "api_captcha_\u0627\u0639\u0645\u0627\u0644_\u06a9\u067e\u0686\u0627_\u0631\u0648\u06cc_endpoint\u0647\u0627\u06cc_\u0645\u062d\u0627\u0641\u0638\u062a_\u0634\u062f\u0647", "label": "\u0627\u0639\u0645\u0627\u0644 \u06a9\u067e\u0686\u0627 \u0631\u0648\u06cc endpoint\u0647\u0627\u06cc \u0645\u062d\u0627\u0641\u0638\u062a\u200c\u0634\u062f\u0647", "file_type": "document", "source_file": "docs/api/captcha.md", "source_location": "L31"}, {"id": "api_captcha_\u062e\u0637\u0627\u06cc_\u0627\u0639\u062a\u0628\u0627\u0631\u0633\u0646\u062c\u06cc_\u06a9\u067e\u0686\u0627_422", "label": "\u062e\u0637\u0627\u06cc \u0627\u0639\u062a\u0628\u0627\u0631\u0633\u0646\u062c\u06cc \u06a9\u067e\u0686\u0627 `422`", "file_type": "document", "source_file": "docs/api/captcha.md", "source_location": "L51"}, {"id": "api_captcha_\u0627\u0645\u0646\u06cc\u062a", "label": "\u0627\u0645\u0646\u06cc\u062a", "file_type": "document", "source_file": "docs/api/captcha.md", "source_location": "L64"}], "edges": [{"source": "users_hamed_pj_my_pj_clinic_pro_clinicpro_docs_api_captcha_md", "target": "api_captcha_captcha_api_altcha", "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/api/captcha.md", "source_location": "L1", "weight": 1.0}, {"source": "api_captcha_captcha_api_altcha", "target": "api_captcha_get_api_v1_altcha_challenge", "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/api/captcha.md", "source_location": "L10", "weight": 1.0}, {"source": "api_captcha_get_api_v1_altcha_challenge", "target": "api_captcha_response_200", "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/api/captcha.md", "source_location": "L14", "weight": 1.0}, {"source": "api_captcha_captcha_api_altcha", "target": "api_captcha_\u0627\u0639\u0645\u0627\u0644_\u06a9\u067e\u0686\u0627_\u0631\u0648\u06cc_endpoint\u0647\u0627\u06cc_\u0645\u062d\u0627\u0641\u0638\u062a_\u0634\u062f\u0647", "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/api/captcha.md", "source_location": "L31", "weight": 1.0}, {"source": "api_captcha_\u0627\u0639\u0645\u0627\u0644_\u06a9\u067e\u0686\u0627_\u0631\u0648\u06cc_endpoint\u0647\u0627\u06cc_\u0645\u062d\u0627\u0641\u0638\u062a_\u0634\u062f\u0647", "target": "api_captcha_\u062e\u0637\u0627\u06cc_\u0627\u0639\u062a\u0628\u0627\u0631\u0633\u0646\u062c\u06cc_\u06a9\u067e\u0686\u0627_422", "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/api/captcha.md", "source_location": "L51", "weight": 1.0}, {"source": "api_captcha_captcha_api_altcha", "target": "api_captcha_\u0627\u0645\u0646\u06cc\u062a", "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/api/captcha.md", "source_location": "L64", "weight": 1.0}], "input_tokens": 0, "output_tokens": 0}
|
||||
graphify-out/cache/ast/v0.8.44/f786ca8be38675ac8bf6c0dc71c67a842d6785a4de2a7c3294b6df6d082284ef.json
Vendored
+1
@@ -0,0 +1 @@
|
||||
{"nodes": [{"id": "users_hamed_pj_my_pj_clinic_pro_clinicpro_src_shared_constant_errorcodes_php", "label": "ErrorCodes.php", "file_type": "code", "source_file": "src/Shared/Constant/ErrorCodes.php", "source_location": "L1"}, {"id": "constant_errorcodes_errorcodes", "label": "ErrorCodes", "file_type": "code", "source_file": "src/Shared/Constant/ErrorCodes.php", "source_location": "L5"}, {"id": "constant_errorcodes_errorcodes_message", "label": ".message()", "file_type": "code", "source_file": "src/Shared/Constant/ErrorCodes.php", "source_location": "L106"}], "edges": [{"source": "users_hamed_pj_my_pj_clinic_pro_clinicpro_src_shared_constant_errorcodes_php", "target": "constant_errorcodes_errorcodes", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/Shared/Constant/ErrorCodes.php", "source_location": "L5", "weight": 1.0}, {"source": "constant_errorcodes_errorcodes", "target": "constant_errorcodes_errorcodes_message", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/Shared/Constant/ErrorCodes.php", "source_location": "L106", "weight": 1.0}], "raw_calls": []}
|
||||
Vendored
+1
-1
File diff suppressed because one or more lines are too long
+2359
-885
File diff suppressed because it is too large
Load Diff
+62
-22
@@ -450,8 +450,8 @@
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"composer.json": {
|
||||
"mtime": 1783490678.46749,
|
||||
"ast_hash": "af0a543bf9cbb00808c5dc8850ca273c",
|
||||
"mtime": 1783666096.953897,
|
||||
"ast_hash": "fcf018bd5c7fc59ecd3c76c463e7e9a8",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"config/bundles.php": {
|
||||
@@ -780,8 +780,8 @@
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"package.json": {
|
||||
"mtime": 1783189109.134888,
|
||||
"ast_hash": "f0b61dd4c429f6bceac993e60b933ab4",
|
||||
"mtime": 1783666097.0063853,
|
||||
"ast_hash": "218d7761b7559cdbae136d5d9d8204a8",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"postcss.config.js": {
|
||||
@@ -905,8 +905,8 @@
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"src/Auth/Controller/AuthController.php": {
|
||||
"mtime": 1783071277.1970987,
|
||||
"ast_hash": "b4778b795ee2d27f5e857a1967c337df",
|
||||
"mtime": 1783666097.0093415,
|
||||
"ast_hash": "39b0ff3917eea112c09e8a7b11d7ea1c",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"src/Auth/Controller/NotificationMobileController.php": {
|
||||
@@ -915,8 +915,8 @@
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"src/Auth/Controller/PreRegistrationController.php": {
|
||||
"mtime": 1783238186.8425517,
|
||||
"ast_hash": "69a551f873ff500c47fc880ea088be8b",
|
||||
"mtime": 1783666097.0124094,
|
||||
"ast_hash": "246de59bb3b7acb58a862b66341e0a15",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"src/Auth/Entity/MobileVerificationOtp.php": {
|
||||
@@ -1410,7 +1410,7 @@
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"src/Rating/Controller/RatingController.php": {
|
||||
"mtime": 1782728407.1993864,
|
||||
"mtime": 1783666764.412828,
|
||||
"ast_hash": "19a05cd6788d427b52c6c2b604ec69af",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
@@ -1535,8 +1535,8 @@
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"src/Shared/Constant/ErrorCodes.php": {
|
||||
"mtime": 1782728407.2028558,
|
||||
"ast_hash": "6555622a4f54511406726cc156eac7aa",
|
||||
"mtime": 1783666097.015498,
|
||||
"ast_hash": "6ad487190ee8ba21689c31580d564a4b",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"src/Shared/Controller/BaseController.php": {
|
||||
@@ -2185,8 +2185,8 @@
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"README.MD": {
|
||||
"mtime": 1782933937.9090674,
|
||||
"ast_hash": "1da6a3afea0f626c55b6f7c1ff126b65",
|
||||
"mtime": 1783666800.9005868,
|
||||
"ast_hash": "b63e5ed1aa434fd429f8a04daae5335c",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"TEST_USERS.md": {
|
||||
@@ -2195,8 +2195,8 @@
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"config/packages/cache.yaml": {
|
||||
"mtime": 1781010060.4718235,
|
||||
"ast_hash": "7e97d477dade0fd454310d84c4a47237",
|
||||
"mtime": 1783666096.9616337,
|
||||
"ast_hash": "5a3d4a654c5cc1932cbaa77152f5e9c0",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"config/packages/debug.yaml": {
|
||||
@@ -2260,8 +2260,8 @@
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"config/packages/security.yaml": {
|
||||
"mtime": 1783569345.7766566,
|
||||
"ast_hash": "6d04ed4f39e92b722ac727559194623a",
|
||||
"mtime": 1783666096.9829946,
|
||||
"ast_hash": "7236c28a514152be0d7dbf02834096c4",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"config/packages/twig.yaml": {
|
||||
@@ -2300,8 +2300,8 @@
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"config/services.yaml": {
|
||||
"mtime": 1783570481.7864468,
|
||||
"ast_hash": "ed9215189d1b96849ae1e9f6dacdc266",
|
||||
"mtime": 1783666096.987689,
|
||||
"ast_hash": "92837e221e0914e026f4f79e8e8ee0b6",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"docs/Architecture_Audit.md": {
|
||||
@@ -2355,8 +2355,8 @@
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"docs/api/auth.md": {
|
||||
"mtime": 1783072324.1093419,
|
||||
"ast_hash": "fe76d2c41f7e9996751b1002edb50c6b",
|
||||
"mtime": 1783666224.6876435,
|
||||
"ast_hash": "10113c88f71bb74fb7d6dae80843c253",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"docs/api/billing.md": {
|
||||
@@ -2420,7 +2420,7 @@
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"docs/api/rating.md": {
|
||||
"mtime": 1782728407.1106706,
|
||||
"mtime": 1783666791.9281247,
|
||||
"ast_hash": "ab1f1c46ee73542ebd50f8eddc428efb",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
@@ -3803,5 +3803,45 @@
|
||||
"mtime": 1783570038.522232,
|
||||
"ast_hash": "0bc13f299e24b463b720695195298c6a",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"assets/admin/components/ui/Altcha.tsx": {
|
||||
"mtime": 1783666097.1123717,
|
||||
"ast_hash": "76bfa4d9d7c539585eb8b3836c81f3cb",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"src/Shared/Captcha/AltchaService.php": {
|
||||
"mtime": 1783666097.1130326,
|
||||
"ast_hash": "432b4dd0304710632ba86b243e530a5b",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"src/Shared/Captcha/CaptchaController.php": {
|
||||
"mtime": 1783666097.1135097,
|
||||
"ast_hash": "e6fccf870e0891e4d836baf6c27aa958",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"src/Shared/Captcha/CaptchaGuard.php": {
|
||||
"mtime": 1783666097.1140714,
|
||||
"ast_hash": "a84bc84f26a9296f39d446336abd45d5",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"tests/Shared/Captcha/AltchaServiceTest.php": {
|
||||
"mtime": 1783666097.1154962,
|
||||
"ast_hash": "f6a6ca5f5ccaa6fb6cbf811f1e91dc0b",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"tests/Shared/Captcha/CaptchaFlowTest.php": {
|
||||
"mtime": 1783666097.1165395,
|
||||
"ast_hash": "86aa236ea6e3bb4067b6511b7161661f",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
".claude/prompt/altcha-captcha-integration.md": {
|
||||
"mtime": 1783666097.111438,
|
||||
"ast_hash": "312b9b9b16b99ac3550f2911e34619e8",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"docs/api/captcha.md": {
|
||||
"mtime": 1783666775.6831665,
|
||||
"ast_hash": "4796a4acacfaba72c1e4b741b234c96f",
|
||||
"semantic_hash": ""
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user