Update community IDs and source locations in graph.json and manifest.json

- Adjusted source location for mockPricing() in AppointmentBookingModal.test.tsx from L144 to L149.
- Updated community IDs for various migration entries and commands in graph.json to reflect new community associations.
- Modified timestamps and AST hashes for AppointmentBookingModal.test.tsx and AppointmentsPage.tsx in manifest.json.
This commit is contained in:
hamed
2026-07-23 15:18:59 +03:30
parent 36f13ac7d3
commit 1d1c3d5f30
6 changed files with 196 additions and 185 deletions
@@ -26,6 +26,7 @@ beforeEach(() => {
describe('NewAppointmentModal — جستجوی موبایل‌محور', () => {
it('submit stays disabled until a mobile search is done', () => {
renderWithProviders(<NewAppointmentModal slot={slot} onClose={() => {}} onSuccess={() => {}} />);
fireEvent.click(screen.getByRole('button', { name: 'شماره موبایل' }));
fireEvent.change(screen.getByPlaceholderText('مثال: 09123456789'), { target: { value: '09121234567' } });
// بدون جستجو، ثبت نوبت غیرفعال است
expect(screen.getByRole('button', { name: 'ثبت نوبت' })).toBeDisabled();
@@ -34,6 +35,7 @@ describe('NewAppointmentModal — جستجوی موبایل‌محور', () => {
it('converts Persian digits to English and searches by the normalized mobile', async () => {
get.mockResolvedValue({ success: true, data: { found: false } });
renderWithProviders(<NewAppointmentModal slot={slot} onClose={() => {}} onSuccess={() => {}} />);
fireEvent.click(screen.getByRole('button', { name: 'شماره موبایل' }));
const input = screen.getByPlaceholderText('مثال: 09123456789') as HTMLInputElement;
fireEvent.change(input, { target: { value: '۰۹۱۲۳۴۵۶۷۸۹' } });
@@ -46,6 +48,7 @@ describe('NewAppointmentModal — جستجوی موبایل‌محور', () => {
it('searches on Enter key in the mobile field', async () => {
get.mockResolvedValue({ success: true, data: { found: false } });
renderWithProviders(<NewAppointmentModal slot={slot} onClose={() => {}} onSuccess={() => {}} />);
fireEvent.click(screen.getByRole('button', { name: 'شماره موبایل' }));
const input = screen.getByPlaceholderText('مثال: 09123456789');
fireEvent.change(input, { target: { value: '09121234567' } });
@@ -57,6 +60,7 @@ describe('NewAppointmentModal — جستجوی موبایل‌محور', () => {
it('found patient with national code books directly without extra fields', async () => {
get.mockResolvedValue({ success: true, data: { found: true, name: 'علی محمدی', mobile: '09121234567', national_code: '0012345678' } });
renderWithProviders(<NewAppointmentModal slot={slot} onClose={() => {}} onSuccess={() => {}} />);
fireEvent.click(screen.getByRole('button', { name: 'شماره موبایل' }));
fireEvent.change(screen.getByPlaceholderText('مثال: 09123456789'), { target: { value: '09121234567' } });
fireEvent.click(screen.getByRole('button', { name: 'جستجو' }));
@@ -78,6 +82,7 @@ describe('NewAppointmentModal — جستجوی موبایل‌محور', () => {
it('unknown mobile reveals national code + name fields and books the new patient', async () => {
get.mockResolvedValue({ success: true, data: { found: false } });
renderWithProviders(<NewAppointmentModal slot={slot} onClose={() => {}} onSuccess={() => {}} />);
fireEvent.click(screen.getByRole('button', { name: 'شماره موبایل' }));
fireEvent.change(screen.getByPlaceholderText('مثال: 09123456789'), { target: { value: '09990001122' } });
fireEvent.click(screen.getByRole('button', { name: 'جستجو' }));
+3 -3
View File
@@ -118,8 +118,8 @@ export function NewAppointmentModal({
const [lookup, setLookup] = useState<PatientLookup | null>(null);
const [patientName, setPatientName] = useState('');
const [nationalCode, setNationalCode] = useState('');
// معیار جستجوی بیمار: موبایل یا کد ملی.
const [searchBy, setSearchBy] = useState<'mobile' | 'national'>('mobile');
// معیار جستجوی بیمار: کد ملی (پیش‌فرض) یا موبایل.
const [searchBy, setSearchBy] = useState<'mobile' | 'national'>('national');
const [pick, setPick] = useState<{ serviceUuids: string[]; slot: { start: number; end: number } | null }>({ serviceUuids: [], slot: null });
const role = useAuthStore(s => s.primaryRole);
@@ -292,7 +292,7 @@ export function NewAppointmentModal({
<label>جستجوی بیمار <span className="req">*</span></label>
{/* انتخاب معیار جستجو: موبایل یا کد ملی */}
<div style={{ display: 'flex', gap: 6, marginBottom: 8 }}>
{(['mobile', 'national'] as const).map(mode => (
{(['national', 'mobile'] as const).map(mode => (
<button
key={mode}
type="button"
+2 -1
View File
@@ -959,6 +959,7 @@
"957": "Community 957",
"958": "Community 958",
"959": "Community 959",
"960": "Community 960",
"961": "Community 961",
"962": "Community 962",
"963": "Community 963",
@@ -986,9 +987,9 @@
"985": "Community 985",
"986": "Community 986",
"987": "Community 987",
"988": "Community 988",
"989": "Community 989",
"990": "Community 990",
"991": "Community 991",
"992": "Community 992",
"993": "Community 993",
"994": "Community 994",
+43 -38
View File
@@ -1,16 +1,16 @@
# Graph Report - clinicpro (2026-07-23)
## Corpus Check
- 1193 files · ~853,807 words
- 1193 files · ~853,838 words
- Verdict: corpus is large enough that graph structure adds value.
## Summary
- 13952 nodes · 21775 edges · 1014 communities (776 shown, 238 thin omitted)
- 13952 nodes · 21775 edges · 1015 communities (777 shown, 238 thin omitted)
- Extraction: 98% EXTRACTED · 2% INFERRED · 0% AMBIGUOUS · INFERRED: 465 edges (avg confidence: 0.8)
- Token cost: 0 input · 0 output
## Graph Freshness
- Built from commit: `0edaf651`
- Built from commit: `36f13ac7`
- Run `git rev-parse HEAD` and compare to check if the graph is stale.
- Run `graphify update .` after code changes (no API cost).
@@ -958,6 +958,7 @@
- [[_COMMUNITY_Community 957|Community 957]]
- [[_COMMUNITY_Community 958|Community 958]]
- [[_COMMUNITY_Community 959|Community 959]]
- [[_COMMUNITY_Community 960|Community 960]]
- [[_COMMUNITY_Community 961|Community 961]]
- [[_COMMUNITY_Community 962|Community 962]]
- [[_COMMUNITY_Community 963|Community 963]]
@@ -984,9 +985,9 @@
- [[_COMMUNITY_Community 985|Community 985]]
- [[_COMMUNITY_Community 986|Community 986]]
- [[_COMMUNITY_Community 987|Community 987]]
- [[_COMMUNITY_Community 988|Community 988]]
- [[_COMMUNITY_Community 989|Community 989]]
- [[_COMMUNITY_Community 990|Community 990]]
- [[_COMMUNITY_Community 991|Community 991]]
- [[_COMMUNITY_Community 992|Community 992]]
- [[_COMMUNITY_Community 993|Community 993]]
- [[_COMMUNITY_Community 994|Community 994]]
@@ -1039,7 +1040,7 @@
## Import Cycles
- None detected.
## Communities (1014 total, 238 thin omitted)
## Communities (1015 total, 238 thin omitted)
### Community 0 - "Community 0"
Cohesion: 0.05
@@ -1255,7 +1256,7 @@ Nodes (26): الزامات UI, باگ‌فیکس صفحه نوبت‌ها, با
### Community 53 - "Community 53"
Cohesion: 0.06
Nodes (20): AppLogRepository, ClaimItemRepository, DoctorClaimRequestRepository, PreRegistrationRepository, SessionAuditLogRepository, SessionServiceRepository, SiteConfigRepository, SmsTemplateRepository (+12 more)
Nodes (20): AppointmentEvent, AppLogRepository, AppointmentEventRepository, ClaimItemRepository, DoctorClaimRequestRepository, DoctorInsuranceRepository, InventoryPackageRepository, PreRegistrationRepository (+12 more)
### Community 54 - "Community 54"
Cohesion: 0.10
@@ -1459,7 +1460,7 @@ Nodes (8): AppointmentController, Appointment, Clinic, Doctor, JsonResponse, Req
### Community 108 - "Community 108"
Cohesion: 0.09
Nodes (16): CaptchaController, BaseController, CategoryController, DoctorImportController, SiteContextController, SmsMessageController, JsonResponse, JsonResponse (+8 more)
Nodes (16): CaptchaController, BaseController, CategoryController, CategoryImportController, DoctorImportController, SiteContextController, JsonResponse, JsonResponse (+8 more)
### Community 109 - "Community 109"
Cohesion: 0.29
@@ -1562,8 +1563,8 @@ Cohesion: 0.12
Nodes (16): Endpoint ها, GET /api/v1/representation/filter/{id}, GET /api/v1/representation/filter/{representationId}, GET /api/v1/representation/my-appointments/{id}, GET /api/v1/representation/{uuid}, GET /api/v1/representation/yearly-income/{id}, GET /api/v1/representation/yearly-income/{representationId}, POST /api/v1/representations/{id}/bank-accounts (+8 more)
### Community 135 - "Community 135"
Cohesion: 0.12
Nodes (16): Day Index Convention, DELETE `/api/v1/booking-setting/{uuid}`, Errors, Errors, Errors, Errors, GET `/api/v1/appointment-settings/weekly-schedule/{uuid}`, PATCH `/api/v1/appointment-settings/weekly-schedule/{uuid}` (+8 more)
Cohesion: 0.07
Nodes (29): Access rule, Appointment Settings API, Available Locations, Booking context (`clinic_uuid`), Context additions (2026-07), Date overrides are always per-context, Day Index Convention, DELETE `/api/v1/booking-setting/{uuid}` (+21 more)
### Community 136 - "Community 136"
Cohesion: 0.12
@@ -1822,8 +1823,8 @@ Cohesion: 0.11
Nodes (19): Admin API, Behaviour while enabled, Clinic Invitation Management, Console escape hatch, Failure behaviour, GET `/api/v1/admin/pre-registrations`, GET `/api/v1/admin/secretaries`, GET /api/v1/admin/settings (+11 more)
### Community 202 - "Community 202"
Cohesion: 0.07
Nodes (26): Access rule, Appointment Settings API, Available Locations, Booking context (`clinic_uuid`), Context additions (2026-07), Date overrides are always per-context, DELETE `/api/v1/appointment-settings/holidays/{uuid}`, Errors (+18 more)
Cohesion: 0.15
Nodes (13): DELETE `/api/v1/appointment-settings/holidays/{uuid}`, Errors, GET `/api/v1/appointment-settings/holidays/list/{doctorUuid}`, GET `/api/v1/appointment-settings/holidays/{uuid}`, Holidays, PATCH `/api/v1/appointment-settings/holidays/{uuid}`, POST `/api/v1/appointment-settings/holidays`, Request Body (+5 more)
### Community 203 - "Community 203"
Cohesion: 0.12
@@ -2543,7 +2544,7 @@ Nodes (7): initiate(), refund(), reverse(), verify(), PaymentInitResult, Payment
### Community 399 - "Community 399"
Cohesion: 0.16
Nodes (7): AbstractMigration, Schema, Version20260609130407, Schema, Version20260624092459, Schema, Version20260716094319
Nodes (7): AbstractMigration, Schema, Version20260614182950, Schema, Version20260619121047, Schema, Version20260624092459
### Community 401 - "Community 401"
Cohesion: 0.12
@@ -2606,8 +2607,8 @@ Cohesion: 0.18
Nodes (8): ErrorCodes, PatientController, JsonResponse, PatientRecord, PatientRecordScope, PatientSession, Request, User
### Community 435 - "Community 435"
Cohesion: 0.36
Nodes (3): RepairImportedDoctorsCommand, InputInterface, OutputInterface
Cohesion: 0.15
Nodes (10): Command, CancelExpiredAppointmentsCommand, RepairImportedDoctorsCommand, SystemOwnerCommand, InputInterface, OutputInterface, InputInterface, OutputInterface (+2 more)
### Community 436 - "Community 436"
Cohesion: 0.12
@@ -2674,8 +2675,8 @@ Cohesion: 0.24
Nodes (10): gridItemStyle, JALALI_MONTHS, jalaliFirstWeekday(), jalaliToGregorian(), navBtnStyle, PersianCalendar(), pf, Props (+2 more)
### Community 459 - "Community 459"
Cohesion: 0.33
Nodes (6): API موجود (نیاز به تغییر ندارند), اپیک‌ها, اپیک ۳ — منشی (Secretary) — تکمیل, تغییرات مورد نیاز, توضیح, نیازمندی‌های کارکردی
Cohesion: 0.40
Nodes (5): API موجود (نیاز به تغییر ندارند), اپیک ۳ — منشی (Secretary) — تکمیل, تغییرات مورد نیاز, توضیح, نیازمندی‌های کارکردی
### Community 460 - "Community 460"
Cohesion: 0.33
@@ -2810,8 +2811,8 @@ Cohesion: 0.12
Nodes (16): `AppointmentSettingsPage.tsx` (بخش render), backend — نیازی به تغییر نیست (اول گشتم), `InsuranceModal.tsx` — انتخاب دستی نوع (حذف شود), `InsurancePricingPage.tsx`, `TenantInsuranceContracts.tsx` — یک جدول مسطح، خلاصه فقط در زیرنویس نام, بازطراحی صفحه بیمه و قیمت‌گذاری — تفکیک نوع بیمه با Tab + ردیف Expandable + انتقال ویزیت آزاد, زمینه, فایل‌های مرتبط (+8 more)
### Community 500 - "Community 500"
Cohesion: 0.40
Nodes (5): API موجود (نیاز به endpoint جدید ندارد), اپیک ۷ — داشبورد هوشمند (Smart Dashboard), تغییر مورد نیاز, توضیح, نیازمندی‌های کارکردی
Cohesion: 0.33
Nodes (6): API موجود (نیاز به endpoint جدید ندارد), اپیک‌ها, اپیک ۷ — داشبورد هوشمند (Smart Dashboard), تغییر مورد نیاز, توضیح, نیازمندی‌های کارکردی
### Community 501 - "Community 501"
Cohesion: 0.40
@@ -3122,8 +3123,8 @@ 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, Errors, GET `/api/v1/admin/sms/templates`, GET `/api/v1/sms/template/{uuid}`, POST `/api/v1/sms/send` — ⛔ غیرفعال (Deprecated), Response `200`, Response `200` (+2 more)
### Community 598 - "Community 598"
Cohesion: 0.29
@@ -3306,8 +3307,8 @@ Cohesion: 0.12
Nodes (16): Errors, Errors, Errors, GET `/api/v1/admin/representations`, GET `/api/v1/admin/representations/{uuid}/appointments`, GET `/api/v1/admin/representations/{uuid}/doctors`, POST `/api/v1/admin/representations/{uuid}/doctors`, Query Parameters (+8 more)
### Community 693 - "Community 693"
Cohesion: 0.31
Nodes (3): InventoryPackageRepository, InventoryPackage, ManagerRegistry
Cohesion: 0.47
Nodes (3): CommissionService, Payment, Representation
### Community 694 - "Community 694"
Cohesion: 0.05
@@ -3402,8 +3403,8 @@ Cohesion: 0.15
Nodes (12): call siteهای فعلی PersianDateInput (نباید تغییر کنند — فقط برای اطمینان از سازگاری Props), زمینه, فایل‌های مرتبط, مشکل / هدف, نکات مهم, همه‌ی تقویم‌های پنل ادمین باید شمسی باشند (رفع تقویم میلادی PersianDateInput), وضعیت فعلی (کد مشکل‌دار), وظایف (+4 more)
### Community 733 - "Community 733"
Cohesion: 0.14
Nodes (8): UniqueConstraintsTest, FinancialBreakdown, FinancialBreakdownRepository, CommissionService, ManagerRegistry, Payment, Payment, Representation
Cohesion: 0.19
Nodes (5): UniqueConstraintsTest, FinancialBreakdown, FinancialBreakdownRepository, ManagerRegistry, Payment
### Community 737 - "Community 737"
Cohesion: 0.38
@@ -3610,8 +3611,8 @@ Cohesion: 0.38
Nodes (5): Rate, RateRepository, Doctor, ManagerRegistry, User
### Community 815 - "Community 815"
Cohesion: 0.38
Nodes (3): SystemOwnerCommand, InputInterface, OutputInterface
Cohesion: 0.43
Nodes (3): SmsTemplateRepository, SmsTemplate, ManagerRegistry
### Community 818 - "Community 818"
Cohesion: 0.38
@@ -3751,7 +3752,7 @@ Nodes (3): SessionPaymentRepository, ManagerRegistry, SessionPayment
### Community 870 - "Community 870"
Cohesion: 0.43
Nodes (3): CategoryImportController, JsonResponse, Request
Nodes (3): SmsMessageController, JsonResponse, Request
### Community 871 - "Community 871"
Cohesion: 0.35
@@ -3786,8 +3787,8 @@ Cohesion: 0.15
Nodes (12): زمینه, فایل‌های مرتبط, فرآیند ثبت و قطعی کردن نوبت (مودال پرداخت + پرونده), مشکل / هدف, نکات مهم, وضعیت فعلی, وظایف, پروژه (+4 more)
### Community 890 - "Community 890"
Cohesion: 0.48
Nodes (3): DoctorInsuranceRepository, DoctorInsurance, ManagerRegistry
Cohesion: 0.43
Nodes (3): SessionAuditLogRepository, SessionAuditLog, ManagerRegistry
### Community 899 - "Community 899"
Cohesion: 0.15
@@ -3806,8 +3807,8 @@ Cohesion: 0.40
Nodes (5): Errors, GET `/api/v1/clinic/doctor-list/{clinicUuid}`, Path Parameters, Query Parameters, Response `200`
### Community 903 - "Community 903"
Cohesion: 0.43
Nodes (3): AppointmentEvent, AppointmentEventRepository, ManagerRegistry
Cohesion: 0.48
Nodes (3): SessionServiceRepository, ManagerRegistry, SessionService
### Community 904 - "Community 904"
Cohesion: 0.41
@@ -3877,18 +3878,26 @@ Nodes (3): PatientRecordScopeResolver, PatientRecordScope, User
Cohesion: 0.43
Nodes (4): AppointmentConfirmationService, Appointment, PatientSession, User
### Community 932 - "Community 932"
Cohesion: 0.47
Nodes (3): PruneLogsCommand, InputInterface, OutputInterface
### Community 935 - "Community 935"
Cohesion: 0.38
Nodes (3): RepairAcceptedInvitationsCommand, InputInterface, OutputInterface
### Community 937 - "Community 937"
Cohesion: 0.13
Nodes (13): Command, CancelExpiredAppointmentsCommand, NormalizeScheduleFormatCommand, PruneLogsCommand, SeedCategoriesCommand, InputInterface, OutputInterface, InputInterface (+5 more)
Cohesion: 0.38
Nodes (3): NormalizeScheduleFormatCommand, InputInterface, OutputInterface
### Community 939 - "Community 939"
Cohesion: 0.12
Nodes (9): DoctorRepairStep, BackfillSpecialtyParentsStep, BackfillSurrogateRoleStep, RepairOptions, RepairResult, SymfonyStyle, RepairOptions, RepairResult (+1 more)
### Community 940 - "Community 940"
Cohesion: 0.47
Nodes (3): SeedCategoriesCommand, InputInterface, OutputInterface
### Community 941 - "Community 941"
Cohesion: 0.50
Nodes (4): Errors, GET `/api/v1/representation/doctors`, Query Parameters, Response `200`
@@ -4025,10 +4034,6 @@ Nodes (4): run(), RepairOptions, RepairResult, SymfonyStyle
Cohesion: 0.33
Nodes (6): GET `/api/v1/admin/sms/logs`, GET `/api/v1/admin/sms/templates`, Query Parameters, Response `200`, Response `200`, SMS Management (Admin)
### Community 991 - "Community 991"
Cohesion: 0.67
Nodes (3): Errors, POST `/api/v1/sms/send` — ⛔ غیرفعال (Deprecated), Response `422` (همیشه)
### Community 992 - "Community 992"
Cohesion: 0.47
Nodes (3): SeedSmsMessageTemplatesCommand, InputInterface, OutputInterface
@@ -4083,7 +4088,7 @@ _Questions this graph is uniquely positioned to answer:_
- **Why does `Altcha` connect `Community 367` to `Community 1012`, `Community 485`?**
_High betweenness centrality (0.115) - this node is a cross-community bridge._
- **Why does `SiteConfigRepository` connect `Community 608` to `Community 832`, `Community 485`, `Community 733`, `Community 809`, `Community 169`, `Community 205`, `Community 206`, `Community 15`, `Community 367`, `Community 761`, `Community 637`, `Community 926`?**
- **Why does `SiteConfigRepository` connect `Community 608` to `Community 832`, `Community 485`, `Community 809`, `Community 169`, `Community 205`, `Community 206`, `Community 15`, `Community 367`, `Community 693`, `Community 761`, `Community 637`, `Community 926`?**
_High betweenness centrality (0.103) - this node is a cross-community bridge._
- **Why does `BaseController` connect `Community 108` to `Community 771`, `Community 6`, `Community 7`, `Community 265`, `Community 138`, `Community 139`, `Community 14`, `Community 654`, `Community 655`, `Community 529`, `Community 15`, `Community 275`, `Community 20`, `Community 22`, `Community 26`, `Community 926`, `Community 676`, `Community 295`, `Community 433`, `Community 689`, `Community 438`, `Community 58`, `Community 59`, `Community 315`, `Community 699`, `Community 444`, `Community 64`, `Community 75`, `Community 77`, `Community 607`, `Community 739`, `Community 870`, `Community 104`, `Community 873`, `Community 107`, `Community 109`, `Community 245`, `Community 121`, `Community 122`, `Community 252`?**
_High betweenness centrality (0.057) - this node is a cross-community bridge._
+139 -139
View File
File diff suppressed because it is too large Load Diff
+4 -4
View File
@@ -170,8 +170,8 @@
"semantic_hash": ""
},
"assets/admin/pages/AppointmentsPage.tsx": {
"mtime": 1784806921.2071803,
"ast_hash": "28b83f88809749c37f107e2b7b51b9c2",
"mtime": 1784807146.776891,
"ast_hash": "43969982b8f32d6dd77f84e1b6d8c1ba",
"semantic_hash": ""
},
"assets/admin/pages/BlogFormPage.tsx": {
@@ -4890,8 +4890,8 @@
"semantic_hash": ""
},
"assets/admin/pages/AppointmentBookingModal.test.tsx": {
"mtime": 1784806974.9179978,
"ast_hash": "a8bb87ad34a3123e50cac859fee650ba",
"mtime": 1784807195.759872,
"ast_hash": "640879bdd9ad142e72de387a07b65f40",
"semantic_hash": ""
},
"config/bootstrap_tz.php": {