Update community IDs in graph.json and manifest.json; modify migration command in liara_pre_start.sh; enhance error logging in ExceptionSubscriber.php; add new AST cache files.

This commit is contained in:
hamed
2026-06-29 19:29:10 +03:30
parent 97958ecc7d
commit afb5b28272
10 changed files with 119 additions and 115 deletions
-1
View File
@@ -666,7 +666,6 @@
"664": "Community 664",
"665": "Community 665",
"666": "Community 666",
"667": "Community 667",
"668": "Community 668",
"669": "Community 669",
"670": "Community 670",
+24 -33
View File
@@ -1,16 +1,16 @@
# Graph Report - clinicpro (2026-06-29)
## Corpus Check
- 646 files · ~446,822 words
- 646 files · ~446,886 words
- Verdict: corpus is large enough that graph structure adds value.
## Summary
- 8212 nodes · 11323 edges · 672 communities (551 shown, 121 thin omitted)
- 8212 nodes · 11323 edges · 671 communities (549 shown, 122 thin omitted)
- Extraction: 98% EXTRACTED · 2% INFERRED · 0% AMBIGUOUS · INFERRED: 261 edges (avg confidence: 0.8)
- Token cost: 0 input · 0 output
## Graph Freshness
- Built from commit: `c71d674d`
- Built from commit: `97958ecc`
- Run `git rev-parse HEAD` and compare to check if the graph is stale.
- Run `graphify update .` after code changes (no API cost).
@@ -668,7 +668,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]]
@@ -700,7 +699,7 @@
## Import Cycles
- None detected.
## Communities (672 total, 121 thin omitted)
## Communities (671 total, 122 thin omitted)
### Community 0 - "Community 0"
Cohesion: 0.05
@@ -915,8 +914,8 @@ Cohesion: 0.07
Nodes (26): الزامات UI, باگ‌فیکس صفحه نوبت‌ها, باگ ۱ — کرش تقویم, باگ ۲ — روز هفته در DateNavigator, باگ ۳ — پیام «slot نیست», باگ ۴ — نوبت جدید: نام اجباری + find-or-create patient, باگ ۵ — patient_mobile نشان می‌دهد موبایل پزشک, باگ ۶ — نوبت‌های رزرو شده در نمایش زمانبندی (+18 more)
### Community 53 - "Community 53"
Cohesion: 0.09
Nodes (13): ClaimItemRepository, ClinicStaffRepository, PreRegistrationRepository, SessionServiceRepository, SiteConfigRepository, ServiceEntityRepository, ManagerRegistry, ManagerRegistry (+5 more)
Cohesion: 0.10
Nodes (14): ClaimItemRepository, ClinicStaffRepository, PreRegistrationRepository, SessionServiceRepository, SmsSettingsRepository, ServiceEntityRepository, SmsSettings, ManagerRegistry (+6 more)
### Community 54 - "Community 54"
Cohesion: 0.10
@@ -1036,7 +1035,7 @@ Nodes (29): devDependencies, @babel/core, @babel/preset-env, @babel/preset-react
### Community 86 - "Community 86"
Cohesion: 0.07
Nodes (13): AppointmentExpiryServiceTest, LowTierFixesTest, SendCodeMobileRateLimitTest, ClaimsListPaginationTest, ServiceItemStaffOwnershipTest, EntityManagerInterface, KernelBrowser, CommentPaginationTest (+5 more)
Nodes (14): AppointmentExpiryServiceTest, LowTierFixesTest, SendCodeMobileRateLimitTest, ClaimsListPaginationTest, ServiceItemStaffOwnershipTest, EntityManagerInterface, KernelBrowser, CommentPaginationTest (+6 more)
### Community 87 - "Community 87"
Cohesion: 0.10
@@ -1476,7 +1475,7 @@ Nodes (13): Endpoint ها, PATCH /api/v1/secretary/{uuid}, POST /api/v1/secretar
### Community 201 - "Community 201"
Cohesion: 0.15
Nodes (13): Admin API, Clinic Invitation Management, GET `/api/v1/admin/payments`, GET `/api/v1/admin/pre-registrations`, GET /api/v1/admin/settings, PATCH /api/v1/admin/settings, Payment Management, POST `/api/v1/admin/pre-registrations/{uuid}/approve` (+5 more)
Nodes (13): Admin API, Clinic Invitation Management, GET `/api/v1/admin/secretaries`, GET /api/v1/admin/settings, GET `/api/v1/admin/settlements`, PATCH /api/v1/admin/settings, Query Parameters, Query Parameters (+5 more)
### Community 202 - "Community 202"
Cohesion: 0.15
@@ -1856,7 +1855,7 @@ Nodes (16): آماده‌سازی پروژه ClinicPro برای دیپلوی ر
### Community 304 - "Community 304"
Cohesion: 0.22
Nodes (9): 30. 🟢 `GET` get 🆕, 33. 🔵 `POST` image_clinic, 36. 🟢 `GET` get my rate, 6. کلینیک (Clinic), هدرهای اضافی, هدرهای اضافی, پاسخ‌ها, پاسخ‌ها (+1 more)
Nodes (9): 29. 🟢 `GET` clinic list 🆕, 30. 🟢 `GET` get 🆕, 36. 🟢 `GET` get my rate, 6. کلینیک (Clinic), هدرهای اضافی, پارامترهای Query, پاسخ‌ها, پاسخ‌ها (+1 more)
### Community 306 - "Community 306"
Cohesion: 0.07
@@ -2202,14 +2201,14 @@ Nodes (6): ClaimAmountBoundsTest, ClaimsListNPlusOneTest, ClaimItem, Claim, Doct
Cohesion: 0.33
Nodes (4): initiate(), verify(), PaymentInitResult, PaymentVerifyResult
### Community 399 - "Community 399"
Cohesion: 0.23
Nodes (5): AbstractMigration, Schema, Version20260609130407, Schema, Version20260609132009
### Community 401 - "Community 401"
Cohesion: 0.38
Nodes (5): Rate, RateRepository, Doctor, ManagerRegistry, User
### Community 406 - "Community 406"
Cohesion: 0.23
Nodes (5): AbstractMigration, Schema, Version20260609134112, Schema, Version20260625135132
### Community 418 - "Community 418"
Cohesion: 0.17
Nodes (11): دیپلوی ClinicPro روی Coolify (Docker Compose), رفع اشکال, مراحل دیپلوی, معماری دیپلوی, نکات عملیاتی, چند دامنه فرانت‌اند (مهم), ۱. ساخت Resource در Coolify, ۲. اختصاص دامنه (+3 more)
@@ -2447,8 +2446,8 @@ Cohesion: 0.40
Nodes (4): ساختار فایل‌ها, معماری — تسک ۱۶: ماژول داشبورد دکتر, نمودار جریان, کوئری درآمد سالانه (بر اساس ماه‌های شمسی)
### Community 522 - "Community 522"
Cohesion: 0.47
Nodes (3): CommissionService, Payment, Representation
Cohesion: 0.20
Nodes (7): WalletTransactionRepository, CommissionService, ManagerRegistry, User, Payment, Representation, WalletTransaction
### Community 523 - "Community 523"
Cohesion: 0.43
@@ -2710,10 +2709,6 @@ Nodes (3): نقاط ضعف, نقاط قوت, ۶. تحلیل API Design
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 607 - "Community 607"
Cohesion: 0.24
Nodes (5): WalletTransactionRepository, WalletTransactionsPaginationTest, ManagerRegistry, User, WalletTransaction
### Community 608 - "Community 608"
Cohesion: 0.40
Nodes (5): 37. 🔵 `POST` post, Request Body, مثال Request, هدرهای اضافی, پاسخ‌ها
@@ -2726,10 +2721,6 @@ Nodes (3): بک‌اند, فرانت‌اند, وضعیت فعلی کد (مهم
Cohesion: 0.25
Nodes (4): SmsMessageTemplateRepository, SmsTextResolver, SmsMessageTemplate, ManagerRegistry
### Community 625 - "Community 625"
Cohesion: 0.48
Nodes (3): SmsSettingsRepository, SmsSettings, ManagerRegistry
### Community 631 - "Community 631"
Cohesion: 0.50
Nodes (4): DELETE `/api/v1/doctor/{uuid}`, Errors, Path Parameters, Response `200`
@@ -2778,6 +2769,10 @@ Nodes (3): InvoiceItemRepository, InvoiceItem, ManagerRegistry
Cohesion: 0.40
Nodes (5): ۲.۸ تنظیمات نوبت (Appointment Settings), ۲.۸.۱ برنامه هفتگی (Weekly Schedule), ۲.۸.۲ تعطیلات (Holidays), ۲.۸.۳ لغو تعطیل (Date Override), ۲.۸.۴ الگوریتم محاسبه اسلات‌های خالی
### Community 649 - "Community 649"
Cohesion: 0.50
Nodes (4): GET `/api/v1/admin/payments`, Payment Management, Query Parameters, Response `200`
### Community 650 - "Community 650"
Cohesion: 0.40
Nodes (3): Props, StatTone, TONE
@@ -2788,7 +2783,7 @@ Nodes (3): TaxRateHistoryRepository, ManagerRegistry, TaxRateHistory
### Community 652 - "Community 652"
Cohesion: 0.50
Nodes (4): GET `/api/v1/admin/secretaries`, Query Parameters, Response `200`, Secretary Management
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 653 - "Community 653"
Cohesion: 0.50
@@ -2827,8 +2822,8 @@ Cohesion: 0.50
Nodes (4): ۲.۱۳ نظرات، لایک و امتیازدهی, ۲.۱۳.۱ نظر (Comment), ۲.۱۳.۲ لایک (Like), ۲.۱۳.۳ امتیاز (Rate)
### Community 662 - "Community 662"
Cohesion: 0.50
Nodes (4): GET `/api/v1/admin/settlements`, Query Parameters, Response `200`, Settlement Management
Cohesion: 0.67
Nodes (3): 33. 🔵 `POST` image_clinic, هدرهای اضافی, پاسخ‌ها
### Community 664 - "Community 664"
Cohesion: 0.67
@@ -2838,10 +2833,6 @@ Nodes (3): 42. 🔴 `DELETE` delete, هدرهای اضافی, پاسخ‌ها
Cohesion: 0.67
Nodes (3): 43. 🟢 `GET` get, هدرهای اضافی, پاسخ‌ها
### Community 667 - "Community 667"
Cohesion: 0.67
Nodes (3): 29. 🟢 `GET` clinic list 🆕, پارامترهای Query, پاسخ‌ها
### Community 671 - "Community 671"
Cohesion: 0.67
Nodes (3): 34. 🔵 `POST` image logo, هدرهای اضافی, پاسخ‌ها
@@ -2849,7 +2840,7 @@ Nodes (3): 34. 🔵 `POST` image logo, هدرهای اضافی, پاسخ‌ها
## Knowledge Gaps
- **3533 isolated node(s):** `ALLOWED_ROLES`, `Pricing`, `TenantInsurance`, `CoverageRow`, `Draft` (+3528 more)
These have ≤1 connection - possible missing edges or undocumented components.
- **121 thin communities (<3 nodes) omitted from report** — run `graphify query` to explore isolated nodes.
- **122 thin communities (<3 nodes) omitted from report** — run `graphify query` to explore isolated nodes.
## Suggested Questions
_Questions this graph is uniquely positioned to answer:_
@@ -2858,7 +2849,7 @@ _Questions this graph is uniquely positioned to answer:_
_High betweenness centrality (0.026) - this node is a cross-community bridge._
- **Why does `AppointmentRepository` connect `Community 119` to `Community 53`?**
_High betweenness centrality (0.018) - this node is a cross-community bridge._
- **Why does `Version20260614181657` connect `Community 431` to `Community 399`?**
- **Why does `Version20260614181657` connect `Community 431` to `Community 406`?**
_High betweenness centrality (0.016) - this node is a cross-community bridge._
- **What connects `ALLOWED_ROLES`, `Pricing`, `TenantInsurance` to the rest of the system?**
_3533 weakly-connected nodes found - possible documentation gaps or missing edges._
@@ -0,0 +1 @@
{"nodes": [], "edges": [], "skipped": "data json (not a config/manifest)"}
@@ -0,0 +1 @@
{"nodes": [{"id": "users_hamed_pj_my_pj_clinic_pro_clinicpro_liara_pre_start_sh", "label": "liara_pre_start.sh", "file_type": "code", "source_file": "liara_pre_start.sh", "source_location": "L1", "metadata": {"language": "bash", "kind": "file"}}, {"id": "users_hamed_pj_my_pj_clinic_pro_clinicpro_liara_pre_start_sh__entry", "label": "liara_pre_start.sh script", "file_type": "code", "source_file": "liara_pre_start.sh", "source_location": "L1", "metadata": {"language": "bash", "kind": "bash_entrypoint"}}], "edges": [{"source": "users_hamed_pj_my_pj_clinic_pro_clinicpro_liara_pre_start_sh", "target": "users_hamed_pj_my_pj_clinic_pro_clinicpro_liara_pre_start_sh__entry", "relation": "contains", "confidence": "EXTRACTED", "source_file": "liara_pre_start.sh", "source_location": "L1", "weight": 1.0}]}
File diff suppressed because one or more lines are too long
+1 -1
View File
File diff suppressed because one or more lines are too long
+69 -69
View File
@@ -8142,7 +8142,7 @@
"source_location": "",
"_origin": "ast",
"id": "abstractmigration",
"community": 399,
"community": 406,
"norm_label": "abstractmigration"
},
{
@@ -8322,7 +8322,7 @@
"source_location": "L1",
"_origin": "ast",
"id": "migrations_version20260609132009",
"community": 399,
"community": 625,
"norm_label": "version20260609132009.php"
},
{
@@ -8332,7 +8332,7 @@
"source_location": "L13",
"_origin": "ast",
"id": "migrations_version20260609132009_version20260609132009",
"community": 399,
"community": 625,
"norm_label": "version20260609132009"
},
{
@@ -8342,7 +8342,7 @@
"source_location": "L15",
"_origin": "ast",
"id": "migrations_version20260609132009_version20260609132009_getdescription",
"community": 399,
"community": 625,
"norm_label": ".getdescription()"
},
{
@@ -8352,7 +8352,7 @@
"source_location": "L20",
"_origin": "ast",
"id": "migrations_version20260609132009_version20260609132009_up",
"community": 399,
"community": 625,
"norm_label": ".up()"
},
{
@@ -8362,7 +8362,7 @@
"source_location": "L20",
"_origin": "ast",
"id": "migrations_version20260609132009_php_schema",
"community": 399,
"community": 625,
"norm_label": "schema"
},
{
@@ -8372,7 +8372,7 @@
"source_location": "L27",
"_origin": "ast",
"id": "migrations_version20260609132009_version20260609132009_down",
"community": 399,
"community": 625,
"norm_label": ".down()"
},
{
@@ -11742,7 +11742,7 @@
"source_location": "L1",
"_origin": "ast",
"id": "migrations_version20260625135132",
"community": 649,
"community": 406,
"norm_label": "version20260625135132.php"
},
{
@@ -11752,7 +11752,7 @@
"source_location": "L13",
"_origin": "ast",
"id": "migrations_version20260625135132_version20260625135132",
"community": 649,
"community": 406,
"norm_label": "version20260625135132"
},
{
@@ -11762,7 +11762,7 @@
"source_location": "L15",
"_origin": "ast",
"id": "migrations_version20260625135132_version20260625135132_getdescription",
"community": 649,
"community": 406,
"norm_label": ".getdescription()"
},
{
@@ -11772,7 +11772,7 @@
"source_location": "L20",
"_origin": "ast",
"id": "migrations_version20260625135132_version20260625135132_up",
"community": 649,
"community": 406,
"norm_label": ".up()"
},
{
@@ -11782,7 +11782,7 @@
"source_location": "L20",
"_origin": "ast",
"id": "migrations_version20260625135132_php_schema",
"community": 649,
"community": 406,
"norm_label": "schema"
},
{
@@ -11792,7 +11792,7 @@
"source_location": "L26",
"_origin": "ast",
"id": "migrations_version20260625135132_version20260625135132_down",
"community": 649,
"community": 406,
"norm_label": ".down()"
},
{
@@ -22682,7 +22682,7 @@
"source_location": "L1",
"_origin": "ast",
"id": "repository_siteconfigrepository",
"community": 53,
"community": 607,
"norm_label": "siteconfigrepository.php"
},
{
@@ -22692,7 +22692,7 @@
"source_location": "L9",
"_origin": "ast",
"id": "repository_siteconfigrepository_siteconfigrepository",
"community": 53,
"community": 607,
"norm_label": "siteconfigrepository"
},
{
@@ -22702,7 +22702,7 @@
"source_location": "L40",
"_origin": "ast",
"id": "repository_siteconfigrepository_siteconfigrepository_construct",
"community": 53,
"community": 607,
"norm_label": ".__construct()"
},
{
@@ -22712,7 +22712,7 @@
"source_location": "L40",
"_origin": "ast",
"id": "src_config_repository_siteconfigrepository_php_managerregistry",
"community": 53,
"community": 607,
"norm_label": "managerregistry"
},
{
@@ -22722,7 +22722,7 @@
"source_location": "L45",
"_origin": "ast",
"id": "repository_siteconfigrepository_siteconfigrepository_get",
"community": 53,
"community": 607,
"norm_label": ".get()"
},
{
@@ -22732,7 +22732,7 @@
"source_location": "L54",
"_origin": "ast",
"id": "repository_siteconfigrepository_siteconfigrepository_getall",
"community": 53,
"community": 607,
"norm_label": ".getall()"
},
{
@@ -22742,7 +22742,7 @@
"source_location": "L70",
"_origin": "ast",
"id": "repository_siteconfigrepository_siteconfigrepository_set",
"community": 53,
"community": 607,
"norm_label": ".set()"
},
{
@@ -33022,7 +33022,7 @@
"source_location": "L1",
"_origin": "ast",
"id": "repository_wallettransactionrepository",
"community": 607,
"community": 522,
"norm_label": "wallettransactionrepository.php"
},
{
@@ -33032,7 +33032,7 @@
"source_location": "L10",
"_origin": "ast",
"id": "repository_wallettransactionrepository_wallettransactionrepository",
"community": 607,
"community": 522,
"norm_label": "wallettransactionrepository"
},
{
@@ -33042,7 +33042,7 @@
"source_location": "L12",
"_origin": "ast",
"id": "repository_wallettransactionrepository_wallettransactionrepository_construct",
"community": 607,
"community": 522,
"norm_label": ".__construct()"
},
{
@@ -33052,7 +33052,7 @@
"source_location": "L12",
"_origin": "ast",
"id": "src_settlement_repository_wallettransactionrepository_php_managerregistry",
"community": 607,
"community": 522,
"norm_label": "managerregistry"
},
{
@@ -33062,7 +33062,7 @@
"source_location": "L18",
"_origin": "ast",
"id": "repository_wallettransactionrepository_wallettransactionrepository_findbyuser",
"community": 607,
"community": 522,
"norm_label": ".findbyuser()"
},
{
@@ -33072,7 +33072,7 @@
"source_location": "L18",
"_origin": "ast",
"id": "src_settlement_repository_wallettransactionrepository_php_user",
"community": 607,
"community": 522,
"norm_label": "user"
},
{
@@ -33082,7 +33082,7 @@
"source_location": "L23",
"_origin": "ast",
"id": "repository_wallettransactionrepository_wallettransactionrepository_countbyuser",
"community": 607,
"community": 522,
"norm_label": ".countbyuser()"
},
{
@@ -33092,7 +33092,7 @@
"source_location": "L28",
"_origin": "ast",
"id": "repository_wallettransactionrepository_wallettransactionrepository_save",
"community": 607,
"community": 522,
"norm_label": ".save()"
},
{
@@ -33102,7 +33102,7 @@
"source_location": "L28",
"_origin": "ast",
"id": "wallettransaction",
"community": 607,
"community": 522,
"norm_label": "wallettransaction"
},
{
@@ -33599,7 +33599,7 @@
"label": ".getSubscribedEvents()",
"file_type": "code",
"source_file": "src/Shared/EventSubscriber/ExceptionSubscriber.php",
"source_location": "L123",
"source_location": "L131",
"_origin": "ast",
"id": "eventsubscriber_exceptionsubscriber_exceptionsubscriber_getsubscribedevents",
"community": 204,
@@ -35632,7 +35632,7 @@
"source_location": "L1",
"_origin": "ast",
"id": "repository_smssettingsrepository",
"community": 625,
"community": 53,
"norm_label": "smssettingsrepository.php"
},
{
@@ -35642,7 +35642,7 @@
"source_location": "L9",
"_origin": "ast",
"id": "repository_smssettingsrepository_smssettingsrepository",
"community": 625,
"community": 53,
"norm_label": "smssettingsrepository"
},
{
@@ -35652,7 +35652,7 @@
"source_location": "L11",
"_origin": "ast",
"id": "repository_smssettingsrepository_smssettingsrepository_construct",
"community": 625,
"community": 53,
"norm_label": ".__construct()"
},
{
@@ -35662,7 +35662,7 @@
"source_location": "L11",
"_origin": "ast",
"id": "src_sms_repository_smssettingsrepository_php_managerregistry",
"community": 625,
"community": 53,
"norm_label": "managerregistry"
},
{
@@ -35672,7 +35672,7 @@
"source_location": "L16",
"_origin": "ast",
"id": "repository_smssettingsrepository_smssettingsrepository_findbyentity",
"community": 625,
"community": 53,
"norm_label": ".findbyentity()"
},
{
@@ -35682,7 +35682,7 @@
"source_location": "L16",
"_origin": "ast",
"id": "smssettings",
"community": 625,
"community": 53,
"norm_label": "smssettings"
},
{
@@ -35692,7 +35692,7 @@
"source_location": "L21",
"_origin": "ast",
"id": "repository_smssettingsrepository_smssettingsrepository_save",
"community": 625,
"community": 53,
"norm_label": ".save()"
},
{
@@ -41092,7 +41092,7 @@
"source_location": "L1",
"_origin": "ast",
"id": "settlement_wallettransactionspaginationtest",
"community": 607,
"community": 86,
"norm_label": "wallettransactionspaginationtest.php"
},
{
@@ -41102,7 +41102,7 @@
"source_location": "L12",
"_origin": "ast",
"id": "settlement_wallettransactionspaginationtest_wallettransactionspaginationtest",
"community": 607,
"community": 86,
"norm_label": "wallettransactionspaginationtest"
},
{
@@ -41112,7 +41112,7 @@
"source_location": "L14",
"_origin": "ast",
"id": "settlement_wallettransactionspaginationtest_wallettransactionspaginationtest_testpaginatesandreportstotals",
"community": 607,
"community": 86,
"norm_label": ".testpaginatesandreportstotals()"
},
{
@@ -58372,7 +58372,7 @@
"source_location": "L2643",
"_origin": "ast",
"id": "docs_clinicpro_manual_v2_29_get_clinic_list",
"community": 667,
"community": 304,
"norm_label": "29. \ud83d\udfe2 `get` clinic list \ud83c\udd95"
},
{
@@ -58382,7 +58382,7 @@
"source_location": "L2653",
"_origin": "ast",
"id": "docs_clinicpro_manual_v2_\u067e\u0627\u0631\u0627\u0645\u062a\u0631\u0647\u0627\u06cc_query_2653",
"community": 667,
"community": 304,
"norm_label": "\u067e\u0627\u0631\u0627\u0645\u062a\u0631\u0647\u0627\u06cc query"
},
{
@@ -58392,7 +58392,7 @@
"source_location": "L2664",
"_origin": "ast",
"id": "docs_clinicpro_manual_v2_\u067e\u0627\u0633\u062e_\u0647\u0627_2664",
"community": 667,
"community": 304,
"norm_label": "\u067e\u0627\u0633\u062e\u200c\u0647\u0627"
},
{
@@ -58522,7 +58522,7 @@
"source_location": "L3153",
"_origin": "ast",
"id": "docs_clinicpro_manual_v2_33_post_image_clinic",
"community": 304,
"community": 662,
"norm_label": "33. \ud83d\udd35 `post` image_clinic"
},
{
@@ -58532,7 +58532,7 @@
"source_location": "L3161",
"_origin": "ast",
"id": "docs_clinicpro_manual_v2_\u0647\u062f\u0631\u0647\u0627\u06cc_\u0627\u0636\u0627\u0641\u06cc_3161",
"community": 304,
"community": 662,
"norm_label": "\u0647\u062f\u0631\u0647\u0627\u06cc \u0627\u0636\u0627\u0641\u06cc"
},
{
@@ -58542,7 +58542,7 @@
"source_location": "L3169",
"_origin": "ast",
"id": "docs_clinicpro_manual_v2_\u067e\u0627\u0633\u062e_\u0647\u0627_3169",
"community": 304,
"community": 662,
"norm_label": "\u067e\u0627\u0633\u062e\u200c\u0647\u0627"
},
{
@@ -63212,7 +63212,7 @@
"source_location": "L585",
"_origin": "ast",
"id": "api_admin_payment_management",
"community": 201,
"community": 649,
"norm_label": "payment management"
},
{
@@ -63222,7 +63222,7 @@
"source_location": "L587",
"_origin": "ast",
"id": "api_admin_get_api_v1_admin_payments",
"community": 201,
"community": 649,
"norm_label": "get `/api/v1/admin/payments`"
},
{
@@ -63232,7 +63232,7 @@
"source_location": "L593",
"_origin": "ast",
"id": "api_admin_query_parameters_593",
"community": 201,
"community": 649,
"norm_label": "query parameters"
},
{
@@ -63242,7 +63242,7 @@
"source_location": "L600",
"_origin": "ast",
"id": "api_admin_response_200_600",
"community": 201,
"community": 649,
"norm_label": "response `200`"
},
{
@@ -63252,7 +63252,7 @@
"source_location": "L620",
"_origin": "ast",
"id": "api_admin_settlement_management",
"community": 662,
"community": 201,
"norm_label": "settlement management"
},
{
@@ -63262,7 +63262,7 @@
"source_location": "L622",
"_origin": "ast",
"id": "api_admin_get_api_v1_admin_settlements",
"community": 662,
"community": 201,
"norm_label": "get `/api/v1/admin/settlements`"
},
{
@@ -63272,7 +63272,7 @@
"source_location": "L628",
"_origin": "ast",
"id": "api_admin_query_parameters_628",
"community": 662,
"community": 201,
"norm_label": "query parameters"
},
{
@@ -63282,7 +63282,7 @@
"source_location": "L635",
"_origin": "ast",
"id": "api_admin_response_200_635",
"community": 662,
"community": 201,
"norm_label": "response `200`"
},
{
@@ -63332,7 +63332,7 @@
"source_location": "L696",
"_origin": "ast",
"id": "api_admin_secretary_management",
"community": 652,
"community": 201,
"norm_label": "secretary management"
},
{
@@ -63342,7 +63342,7 @@
"source_location": "L698",
"_origin": "ast",
"id": "api_admin_get_api_v1_admin_secretaries",
"community": 652,
"community": 201,
"norm_label": "get `/api/v1/admin/secretaries`"
},
{
@@ -63352,7 +63352,7 @@
"source_location": "L704",
"_origin": "ast",
"id": "api_admin_query_parameters_704",
"community": 652,
"community": 201,
"norm_label": "query parameters"
},
{
@@ -63362,7 +63362,7 @@
"source_location": "L711",
"_origin": "ast",
"id": "api_admin_response_200_711",
"community": 652,
"community": 201,
"norm_label": "response `200`"
},
{
@@ -63522,7 +63522,7 @@
"source_location": "L904",
"_origin": "ast",
"id": "api_admin_pre_registration_management",
"community": 201,
"community": 652,
"norm_label": "pre-registration management"
},
{
@@ -63532,7 +63532,7 @@
"source_location": "L906",
"_origin": "ast",
"id": "api_admin_get_api_v1_admin_pre_registrations",
"community": 201,
"community": 652,
"norm_label": "get `/api/v1/admin/pre-registrations`"
},
{
@@ -63542,7 +63542,7 @@
"source_location": "L940",
"_origin": "ast",
"id": "api_admin_post_api_v1_admin_pre_registrations_uuid_approve",
"community": 201,
"community": 652,
"norm_label": "post `/api/v1/admin/pre-registrations/{uuid}/approve`"
},
{
@@ -63552,7 +63552,7 @@
"source_location": "L958",
"_origin": "ast",
"id": "api_admin_post_api_v1_admin_pre_registrations_uuid_reject",
"community": 201,
"community": 652,
"norm_label": "post `/api/v1/admin/pre-registrations/{uuid}/reject`"
},
{
@@ -133372,9 +133372,9 @@
"source_file": "src/Kernel.php",
"source_location": "L16",
"weight": 1.0,
"confidence_score": 1.0,
"source": "src_kernel_kernel",
"target": "src_kernel_kernel_writablebase",
"confidence_score": 1.0
"target": "src_kernel_kernel_writablebase"
},
{
"relation": "calls",
@@ -133383,9 +133383,9 @@
"source_file": "src/Kernel.php",
"source_location": "L23",
"weight": 1.0,
"confidence_score": 1.0,
"source": "src_kernel_kernel_getcachedir",
"target": "src_kernel_kernel_writablebase",
"confidence_score": 1.0
"target": "src_kernel_kernel_writablebase"
},
{
"relation": "calls",
@@ -133394,9 +133394,9 @@
"source_file": "src/Kernel.php",
"source_location": "L28",
"weight": 1.0,
"confidence_score": 1.0,
"source": "src_kernel_kernel_getlogdir",
"target": "src_kernel_kernel_writablebase",
"confidence_score": 1.0
"target": "src_kernel_kernel_writablebase"
},
{
"relation": "imports",
@@ -199358,5 +199358,5 @@
}
],
"hyperedges": [],
"built_at_commit": "c71d674d225e8ae32e8813b9f518986f8ce3a576"
"built_at_commit": "97958ecc7d8793c324d112089f763d6f9702f2b9"
}
+6 -6
View File
@@ -1560,8 +1560,8 @@
"semantic_hash": ""
},
"src/Shared/EventSubscriber/ExceptionSubscriber.php": {
"mtime": 1781115497.21734,
"ast_hash": "189094aed1f9c7a3d3f7b16dde6e6ea8",
"mtime": 1782747822.711537,
"ast_hash": "5f93fc4b1ded2b43397437c68599aa0a",
"semantic_hash": ""
},
"src/Shared/EventSubscriber/SecurityHeadersSubscriber.php": {
@@ -3335,8 +3335,8 @@
"semantic_hash": ""
},
"liara.json": {
"mtime": 1782743130.087785,
"ast_hash": "46b9255bc002a7d9606afe36c7fbd95b",
"mtime": 1782743447.3951278,
"ast_hash": "e559256c2690ba25cc7c5ba88db15e40",
"semantic_hash": ""
},
"liara_pre_build.sh": {
@@ -3345,8 +3345,8 @@
"semantic_hash": ""
},
"liara_pre_start.sh": {
"mtime": 1782735576.5106137,
"ast_hash": "549d60504da99414eaa75b1e1b7589ec",
"mtime": 1782747838.5426629,
"ast_hash": "b0c36b61d41c9896352f7d9167b1dd71",
"semantic_hash": ""
},
".claude/prompt/admin-spa-test-suite.md": {
+5 -2
View File
@@ -21,5 +21,8 @@ php bin/console lexik:jwt:generate-keypair --skip-if-exists --no-interaction
php bin/console cache:clear --no-warmup
php bin/console cache:warmup
# Apply pending migrations inside a transaction.
php bin/console doctrine:migrations:migrate --all-or-nothing --no-interaction
# Apply pending migrations. NOT --all-or-nothing: MariaDB auto-commits on DDL
# (CREATE/ALTER TABLE), which discards the outer transaction's savepoints and
# triggers "SAVEPOINT DOCTRINE_x does not exist" (errno 1305). Transactional DDL
# only works on engines like PostgreSQL.
php bin/console doctrine:migrations:migrate --no-interaction
@@ -108,10 +108,18 @@ class ExceptionSubscriber implements EventSubscriberInterface
return;
}
// Generic fallback: never leak stack traces or internal details in API responses
$this->logger->error('Unhandled exception', [
// Generic fallback: never leak stack traces or internal details in API responses.
// The class/message/location go into the log MESSAGE itself so they surface in
// platforms (e.g. Liara) whose default logger only prints the message string.
$this->logger->error(sprintf(
'Unhandled exception: %s: %s @ %s:%d [path=%s]',
$exception::class,
$exception->getMessage(),
$exception->getFile(),
$exception->getLine(),
$event->getRequest()->getPathInfo(),
), [
'exception' => $exception,
'path' => $event->getRequest()->getPathInfo(),
]);
$event->setResponse(new JsonResponse(