Add AST JSON representation for insurance API documentation

This commit is contained in:
hamed
2026-06-28 22:13:12 +03:30
parent 8705b88270
commit a153bded9b
138 changed files with 13520 additions and 3429 deletions
@@ -0,0 +1,192 @@
# بازنویسی متن استارت‌اپی و رفع نمایش موبایل صفحه فرود (Landing)
## پروژه
`clinicpro` — صفحه فرود عمومی روت `/` (سرو شده توسط `HomeController`). این صفحه Twig خام + CSS دستی است (نه React، نه پنل ادمین).
## زمینه
صفحه `https://clinic-pro.ddev.site/` یک landing بازاریابی کامل و self-contained است. دو ایراد دارد:
1. **متن‌ها استارت‌اپی نیستند** — لحن فعلی توصیفی/خنثی است؛ کاربر متن جذاب‌تر، قلاب‌دار (hook) و محصول-محور می‌خواهد. ارقام/ادعاها هم باید قوی‌تر و باورپذیر بمانند.
2. **نمایش موبایل درست نیست** — هدر روی گوشی شلوغ می‌شود (برند + دو دکمه + همبرگر کنار هم سرریز می‌کند)، منوی موبایل با inline-style شکننده باز می‌شود و با کلیک روی لینک بسته نمی‌شود، و بین breakpoint ۱۰۰۰px و ۶۴۰px هیچ نقطه میانی تبلت وجود ندارد.
## مشکل / هدف
- همه متن‌های فارسی صفحه را به لحن **استارت‌اپی، کوتاه، قلاب‌دار و محصول-محور** بازنویسی کن (همان معنا، همان RTL، همان جایگاه‌ها — فقط متن داخل تگ‌ها عوض شود).
- نمایش موبایل را **واقعاً درست** کن: هدر بدون سرریز، منوی موبایل تمیز و قابل‌بستن، و یک breakpoint میانی تبلت اضافه شود.
## فایل‌های مرتبط
| فایل | نقش |
|------|-----|
| `clinicpro/templates/public/home.html.twig` | کل HTML صفحه + JS inline منو/اسکرول (تک‌فایل، extends نمی‌کند) |
| `clinicpro/assets/home/styles.css` | تمام استایل صفحه، شامل `@media (max-width:1000px)` و `@media (max-width:640px)` |
| `clinicpro/src/Shared/Controller/HomeController.php` | فقط `return $this->render('public/home.html.twig')`**نیازی به تغییر ندارد** |
| `clinicpro/assets/home/index.js` | فقط `import './styles.css'` — تغییر نمی‌کند |
> توجه: این صفحه ربطی به پنل ادمین React یا API ندارد. فقط Twig + CSS. نیازی به migration، docs/api، یا BaseController نیست.
---
## وظیفه ۱ — بازنویسی استارت‌اپی همه متن‌ها
متن‌ها را در `home.html.twig` بازنویسی کن. **جایگاه/کلاس‌ها/تعداد آیتم‌ها ثابت بماند**؛ فقط متن داخل تگ عوض شود. لحن: کوتاه، قاطع، با فعل عمل، منفعت‌محور (نه فهرست امکانات خشک). اعداد فارسی بمانند.
### وضعیت فعلی (نمونه‌هایی که باید استارت‌اپی شوند)
```html
<!-- Hero — خط ۴۸ تا ۵۲ -->
<h1 class="reveal">نوبت، پرونده و حساب مطب،<br/>همه یک‌جا</h1>
<p class="reveal d1">کلینیک پرو کارهای روزمره‌ی مطب را سر و سامان می‌دهد؛ از نوبت‌دهی و پرونده‌ی بیمار تا فاکتور و گزارش مالی. دیگر خبری از دفتر نوبت و کاغذبازی نیست.</p>
<button class="btn btn-coral" id="openRegModal2">ثبت نام دکتر / کلینیک</button>
<a href="#contact" class="btn btn-blue">تماس با ما</a>
```
```html
<!-- Feature columns — خط ۱۴۲ تا ۱۶۹ (۴ ستون) -->
<h3>پرونده‌ی بیمار</h3>
<p>سابقه، نسخه و آزمایش هر بیمار جای خودش است و هر وقت لازم شد، چند ثانیه‌ای پیدایش می‌کنید.</p>
<!-- ... نوبت‌دهی آنلاین / حساب و کتاب / +۵۰۰ مطب -->
```
```html
<!-- Why icon row — خط ۱۸۱ تا ۲۰۳ -->
<h3>راه‌اندازی با شما</h3> ... <h3>پشتیبانی همیشگی</h3> ... <h3>متناسب با مطب ایرانی</h3> ... <h3>گزارش‌گیری دقیق</h3>
```
```html
<!-- Devices — خط ۲۱۲ تا ۲۱۳ -->
<h2>هرجا باشید،<br/>مطب دست‌تان است</h2>
<p>روی گوشی، تبلت یا کامپیوتر بازش کنید؛ اطلاعات خودش هماهنگ می‌ماند ...</p>
```
### راهنمای بازنویسی (نمونه لحن استارت‌اپی — می‌توانی بهترش کنی)
- **Hero H1:** قلاب کوتاه و بلندپروازانه. مثال: `مطب‌تان را هوشمند اداره کنید` یا `کل مطب، توی جیب شما` (دو خطی با `<br/>` مثل الان).
- **Hero P:** یک جمله منفعت‌محور + یک جمله «خداحافظ کاغذبازی». کوتاه و پانچی.
- **Feature cards:** تیتر فعل‌محور («پرونده‌ای که گم نمی‌شود»)، توضیح ۱ خطی با نتیجه ملموس.
- **Why band:** روی اعتماد و سرعت راه‌اندازی مانور بده («در کمتر از یک روز راه می‌افتید»).
- **CTAها و eyebrowها** (مثل `نرم‌افزار دسکتاپ`، `هر تخصص، روال خودش`): کوتاه و دعوت‌کننده.
### نکات
- **همه‌ی** بخش‌های متنی صفحه را پوشش بده: nav، hero، feature columns، why band، devices، specialties (`پزشک عمومی`/`دندان‌پزشک`/`متخصص پوست`/`متخصص اطفال` و دو tick هرکدام)، app/desktop CTA (`کاملاً ایمن`/`نصب آسان`/`آپدیت رایگان`)، modal ثبت‌نام (`دکتر هستم`/...)، footer.
- اعداد و ادعاها را **باورپذیر** نگه‌دار (`+۵۰۰ مطب`, `۹۵٪ رضایت` می‌توانند بمانند یا کمی پانچی‌تر شوند، اما اغراق بی‌پایه نکن).
- آدرس/تلفن/ایمیل footer (`۰۷۴۹۱۰۱۲۱۷۸`، `info@clinic-pro.ir`، آدرس یاسوج) **دست‌نخورده** بماند.
- لینک‌ها و `href`ها (`#hero`, `#features`, `/admin`, action مودال) عوض نشوند.
---
## وظیفه ۲ — رفع نمایش موبایل
### مشکل ۲٫۱ — سرریز هدر روی گوشی
در `home.html.twig` خط ۳۳ تا ۳۹، `nav-right` همزمان همبرگر + دکمه «ثبت نام» + دکمه «ورود به پنل» را نشان می‌دهد. روی گوشی باریک (<۴۲۰px) کنار برند سرریز می‌کند.
**وضعیت فعلی:**
```html
<div class="nav-right">
<button class="nav-burger nav-toggle" id="navToggle" aria-label="منو">...</button>
<button class="btn btn-ghost" id="openRegModal" style="font-size:13px;padding:8px 20px">ثبت نام</button>
<a href="/admin" class="btn btn-blue" style="...">ورود به پنل</a>
</div>
```
**راه‌حل:** در `styles.css` داخل `@media (max-width:640px)` دکمه «ثبت نام» را مخفی کن (داخل منوی موبایل در دسترس می‌ماند) و فقط «ورود به پنل» + همبرگر بماند؛ یا هر دو دکمه ghost/blue را جمع‌وجور کن. مثال:
```css
@media (max-width: 640px) {
.nav-right #openRegModal { display: none; } /* در منوی موبایل می‌آید */
.nav-right { gap: 10px; }
.brand small { display: none; } /* «مدیریت مطب» را جا باز کن */
}
```
### مشکل ۲٫۲ — منوی موبایل با inline-style شکننده باز می‌شود و بسته نمی‌شود
در `home.html.twig` خط ۷۵۶ تا ۷۷۲، توگل منو با ست‌کردن مستقیم `navLinks.style.*` کار می‌کند (position/background/... دستی). این روش:
- با کلیک روی آیتم منو بسته نمی‌شود،
- دکمه‌های ثبت‌نام/ورود را شامل نمی‌شود،
- شکننده است.
**وضعیت فعلی:**
```js
var navToggle = document.getElementById('navToggle');
var navLinks = document.getElementById('navLinks');
if (navToggle)
navToggle.addEventListener('click', function () {
var open = navLinks.style.display === 'flex';
navLinks.style.display = open ? '' : 'flex';
if (!open) {
navLinks.style.position = 'absolute';
navLinks.style.top = '84px';
navLinks.style.insetInline = '0';
navLinks.style.flexDirection = 'column';
navLinks.style.background = '#fff';
navLinks.style.padding = '20px 32px';
navLinks.style.gap = '18px';
navLinks.style.boxShadow = '0 16px 30px oklch(0.4 0.08 285 / 0.1)';
}
});
```
**راه‌حل پیشنهادی:** منطق را به یک کلاس CSS منتقل کن (به‌جای inline-style) و با toggle کلاس کنترل کن؛ با کلیک روی هر لینک منو بسته شود.
JS تمیزتر:
```js
var navToggle = document.getElementById('navToggle');
var navLinks = document.getElementById('navLinks');
if (navToggle) {
navToggle.addEventListener('click', function () {
navLinks.classList.toggle('open');
});
navLinks.addEventListener('click', function (e) {
if (e.target.tagName === 'A') navLinks.classList.remove('open');
});
}
```
CSS متناظر در `styles.css` داخل `@media (max-width:640px)` (پنل dropdown زیر هدر):
```css
@media (max-width: 640px) {
.nav-links { display: none; }
.nav-links.open {
display: flex;
position: absolute;
top: 84px; /* ارتفاع هدر */
inset-inline: 0;
flex-direction: column;
gap: 18px;
background: #fff;
padding: 20px 32px;
box-shadow: 0 16px 30px oklch(0.4 0.08 285 / 0.1);
}
}
```
> اگر می‌خواهی دکمه «ثبت نام» مخفی‌شده (مشکل ۲٫۱) هم در منوی موبایل بیاید، یک لینک «ثبت نام» داخل `#navLinks` فقط برای موبایل اضافه کن یا با CSS در `.nav-links.open` نمایش بده.
### مشکل ۲٫۳ — نبودِ breakpoint میانی تبلت
الان فقط `max-width:1000px` و `max-width:640px` هست؛ بین ~۶۴۱px تا ۱۰۰۰px (تبلت پرتره) چیدمان جا می‌افتد ولی فاصله/پدینگ بهینه نیست. یک breakpoint میانی **اختیاری اما توصیه‌شده** اضافه کن (مثلاً `@media (max-width:768px)`) که grid چهارستونی feature/icon/specs را به ۲ ستون نگه دارد و پدینگ سکشن‌ها را کم کند تا پرش ناگهانی ۱۰۰۰→۶۴۰ نرم شود.
### نکات موبایل
- `clamp()` روی H1/H2 از قبل هست؛ آن را به‌هم نزن.
- بعد از تغییر CSS، build لازم است: `ddev exec yarn dev` (یا `yarn watch`). خطای `lightningcss.linux-arm64-gnu.node` در ddev پیش‌زمینه‌ای و بی‌اهمیت است؛ مانع build نیست.
- `art-chip`ها در ۶۴۰px از قبل `display:none` شده‌اند — دست نزن.
- در ۶۴۰px مطمئن شو `overflow-x: hidden` بدنه (خط ۴۴) همچنان جلوی اسکرول افقی را می‌گیرد؛ SVGها با `max-width:100%` مقیاس می‌شوند.
---
## تست نهایی
1. `ddev exec yarn dev` بدون خطای JS/TS.
2. `https://clinic-pro.ddev.site/` را در عرض موبایل (~۳۷۵px) باز کن: هدر سرریز نکند، همبرگر منوی dropdown تمیز باز/بسته کند، کلیک روی لینک منو را ببندد.
3. متن‌ها استارت‌اپی و فارسی صحیح، RTL سالم، بدون شکستن layout.
4. عرض دسکتاپ بدون رگرسیون.
+34
View File
@@ -102,6 +102,7 @@ h1,h2,h3,h4 { color: var(--ink); font-weight: 700; line-height: 1.3; }
.nav-burger { width: 40px; height: 40px; border-radius: 10px; background: var(--blue); color: #fff; display: grid; place-items: center; border: none; cursor: pointer; }
.nav-burger svg { width: 20px; height: 20px; }
.nav-toggle { display: none; }
.nav-reg-mobile { display: none; }
/* ===================== Hero ===================== */
.hero { position: relative; padding: 70px 0 120px; overflow: hidden; }
@@ -266,9 +267,42 @@ h1,h2,h3,h4 { color: var(--ink); font-weight: 700; line-height: 1.3; }
.icon-grid, .specs-grid { grid-template-columns: 1fr 1fr; gap: 40px 26px; }
.footer-grid { grid-template-columns: 1fr 1fr; }
}
@media (max-width: 768px) {
.wrap { padding-inline: 24px; }
.hero { padding: 50px 0 64px; }
.icons { padding: 60px 0 64px; }
.specs { padding: 56px 0 72px; }
.appcta { padding: 24px 0 80px; }
.devices { padding: 30px 0 64px; }
.specs-head { margin-bottom: 40px; }
}
@media (max-width: 640px) {
.wrap { padding-inline: 20px; }
.nav { height: 64px; gap: 12px; }
html { scroll-padding-top: 72px; }
.brand small { display: none; }
.brand b { font-size: 22px; }
.nav-right { gap: 10px; }
.nav-right #openRegModal { display: none; }
.nav-links { display: none; }
.nav-links.open {
display: flex;
position: absolute;
top: 64px;
inset-inline: 0;
flex-direction: column;
align-items: flex-start;
gap: 16px;
background: #fff;
padding: 22px 24px;
box-shadow: 0 16px 30px oklch(0.4 0.08 285 / 0.1);
border-top: 1px solid var(--line-soft);
}
.nav-links.open .nav-reg-mobile {
display: block;
color: var(--coral);
font-weight: 700;
}
.nav-toggle { display: grid; }
.nav-ico.search { display: none; }
.fcols-grid { grid-template-columns: 1fr; text-align: center; }
+30 -1
View File
@@ -540,6 +540,7 @@
"538": "Community 538",
"539": "Community 539",
"540": "Community 540",
"541": "Community 541",
"542": "Community 542",
"543": "Community 543",
"544": "Community 544",
@@ -570,7 +571,12 @@
"569": "Community 569",
"570": "Community 570",
"571": "Community 571",
"572": "Community 572",
"573": "Community 573",
"574": "Community 574",
"575": "Community 575",
"576": "Community 576",
"577": "Community 577",
"578": "Community 578",
"579": "Community 579",
"580": "Community 580",
@@ -586,6 +592,10 @@
"590": "Community 590",
"591": "Community 591",
"592": "Community 592",
"593": "Community 593",
"594": "Community 594",
"595": "Community 595",
"596": "Community 596",
"597": "Community 597",
"598": "Community 598",
"599": "Community 599",
@@ -595,6 +605,10 @@
"603": "Community 603",
"604": "Community 604",
"605": "Community 605",
"606": "Community 606",
"607": "Community 607",
"608": "Community 608",
"609": "Community 609",
"610": "Community 610",
"611": "Community 611",
"612": "Community 612",
@@ -615,5 +629,20 @@
"627": "Community 627",
"628": "Community 628",
"629": "Community 629",
"630": "Community 630"
"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",
"642": "Community 642",
"643": "Community 643",
"644": "Community 644",
"645": "Community 645"
}
+249 -163
View File
@@ -1,16 +1,16 @@
# Graph Report - clinicpro (2026-06-25)
# Graph Report - clinicpro (2026-06-28)
## Corpus Check
- 582 files · ~424,686 words
- 627 files · ~428,854 words
- Verdict: corpus is large enough that graph structure adds value.
## Summary
- 7729 nodes · 10592 edges · 617 communities (511 shown, 106 thin omitted)
- Extraction: 98% EXTRACTED · 2% INFERRED · 0% AMBIGUOUS · INFERRED: 254 edges (avg confidence: 0.8)
- 8086 nodes · 11149 edges · 646 communities (524 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: `c2c6ae4d`
- Built from commit: `8705b882`
- Run `git rev-parse HEAD` and compare to check if the graph is stale.
- Run `graphify update .` after code changes (no API cost).
@@ -556,6 +556,7 @@
- [[_COMMUNITY_Community 538|Community 538]]
- [[_COMMUNITY_Community 539|Community 539]]
- [[_COMMUNITY_Community 540|Community 540]]
- [[_COMMUNITY_Community 541|Community 541]]
- [[_COMMUNITY_Community 542|Community 542]]
- [[_COMMUNITY_Community 543|Community 543]]
- [[_COMMUNITY_Community 544|Community 544]]
@@ -578,17 +579,24 @@
- [[_COMMUNITY_Community 561|Community 561]]
- [[_COMMUNITY_Community 562|Community 562]]
- [[_COMMUNITY_Community 563|Community 563]]
- [[_COMMUNITY_Community 565|Community 565]]
- [[_COMMUNITY_Community 566|Community 566]]
- [[_COMMUNITY_Community 567|Community 567]]
- [[_COMMUNITY_Community 568|Community 568]]
- [[_COMMUNITY_Community 569|Community 569]]
- [[_COMMUNITY_Community 570|Community 570]]
- [[_COMMUNITY_Community 571|Community 571]]
- [[_COMMUNITY_Community 572|Community 572]]
- [[_COMMUNITY_Community 573|Community 573]]
- [[_COMMUNITY_Community 574|Community 574]]
- [[_COMMUNITY_Community 575|Community 575]]
- [[_COMMUNITY_Community 576|Community 576]]
- [[_COMMUNITY_Community 577|Community 577]]
- [[_COMMUNITY_Community 578|Community 578]]
- [[_COMMUNITY_Community 579|Community 579]]
- [[_COMMUNITY_Community 580|Community 580]]
- [[_COMMUNITY_Community 581|Community 581]]
- [[_COMMUNITY_Community 583|Community 583]]
- [[_COMMUNITY_Community 584|Community 584]]
- [[_COMMUNITY_Community 585|Community 585]]
- [[_COMMUNITY_Community 586|Community 586]]
@@ -598,6 +606,10 @@
- [[_COMMUNITY_Community 590|Community 590]]
- [[_COMMUNITY_Community 591|Community 591]]
- [[_COMMUNITY_Community 592|Community 592]]
- [[_COMMUNITY_Community 593|Community 593]]
- [[_COMMUNITY_Community 594|Community 594]]
- [[_COMMUNITY_Community 595|Community 595]]
- [[_COMMUNITY_Community 596|Community 596]]
- [[_COMMUNITY_Community 597|Community 597]]
- [[_COMMUNITY_Community 598|Community 598]]
- [[_COMMUNITY_Community 599|Community 599]]
@@ -607,6 +619,10 @@
- [[_COMMUNITY_Community 603|Community 603]]
- [[_COMMUNITY_Community 604|Community 604]]
- [[_COMMUNITY_Community 605|Community 605]]
- [[_COMMUNITY_Community 606|Community 606]]
- [[_COMMUNITY_Community 607|Community 607]]
- [[_COMMUNITY_Community 608|Community 608]]
- [[_COMMUNITY_Community 609|Community 609]]
- [[_COMMUNITY_Community 610|Community 610]]
- [[_COMMUNITY_Community 611|Community 611]]
- [[_COMMUNITY_Community 612|Community 612]]
@@ -617,18 +633,32 @@
- [[_COMMUNITY_Community 619|Community 619]]
- [[_COMMUNITY_Community 620|Community 620]]
- [[_COMMUNITY_Community 621|Community 621]]
- [[_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]]
- [[_COMMUNITY_Community 642|Community 642]]
- [[_COMMUNITY_Community 643|Community 643]]
## God Nodes (most connected - your core abstractions)
1. `BaseController` - 74 edges
2. `UserProfile` - 52 edges
3. `api` - 50 edges
4. `Clinic` - 50 edges
5. `Doctor` - 48 edges
6. `useAuthStore` - 41 edges
7. `ApiResponse` - 40 edges
8. `formatDate()` - 38 edges
9. `formatRial()` - 35 edges
10. `AdminApiController` - 35 edges
2. `ApiTestCase` - 68 edges
3. `UserProfile` - 52 edges
4. `api` - 50 edges
5. `Clinic` - 50 edges
6. `Doctor` - 48 edges
7. `useAuthStore` - 41 edges
8. `ApiResponse` - 40 edges
9. `formatDate()` - 38 edges
10. `formatRial()` - 35 edges
## Surprising Connections (you probably didn't know these)
- `ServiceTariffModal()` --calls--> `formatNumber()` [EXTRACTED]
@@ -645,23 +675,23 @@
## Import Cycles
- None detected.
## Communities (617 total, 106 thin omitted)
## Communities (646 total, 122 thin omitted)
### Community 0 - "Community 0"
Cohesion: 0.05
Nodes (40): ALLOWED_ROLES, PrivateRoute(), PublicRoute(), RoleRoute(), queryClient, toastStyle, AddForm, addSchema (+32 more)
Nodes (41): ALLOWED_ROLES, PrivateRoute(), PublicRoute(), RoleRoute(), queryClient, toastStyle, FormData, schema (+33 more)
### Community 1 - "Community 1"
Cohesion: 0.03
Nodes (42): iranMobileOptionalSchema, AddressData, AddrForm, addrSchema, AVATAR_COLORS, BookingMeta, CityOpt, DateOverrideData (+34 more)
Nodes (41): AddressData, AddrForm, addrSchema, AVATAR_COLORS, BookingMeta, CityOpt, DateOverrideData, DEFAULT_BOOKING_META (+33 more)
### Community 2 - "Community 2"
Cohesion: 0.05
Nodes (43): FreeVisitPrice(), Pricing, api, ApiResponse, getToken(), refreshOnce(), request(), formatDateTime() (+35 more)
Nodes (47): FreeVisitPrice(), Pricing, usePaymentConfig(), api, ApiResponse, getToken(), refreshOnce(), request() (+39 more)
### Community 3 - "Community 3"
Cohesion: 0.04
Nodes (72): PaginatedResponse, formatDate(), maskMobile(), ALL_STATUSES, STATUS_FILTERS, FILTERS, Breakdown, SOURCE_LABEL (+64 more)
Nodes (48): PaginatedResponse, formatDate(), maskMobile(), STATUS_FILTERS, FILTERS, Breakdown, SOURCE_LABEL, Summary (+40 more)
### Community 4 - "Community 4"
Cohesion: 0.06
@@ -672,16 +702,16 @@ Cohesion: 0.07
Nodes (3): UserProfile, self, User
### Community 6 - "Community 6"
Cohesion: 0.09
Nodes (15): SettlementController, SettlementRepository, WalletTransactionRepository, CommissionService, Settlement, JsonResponse, Request, User (+7 more)
Cohesion: 0.12
Nodes (12): SettlementController, SettlementRepository, WalletTransactionRepository, Settlement, JsonResponse, Request, User, ManagerRegistry (+4 more)
### Community 7 - "Community 7"
Cohesion: 0.07
Nodes (5): Clinic, Collection, Doctor, self, User
### Community 8 - "Community 8"
Cohesion: 0.09
Nodes (26): useSubscription(), AdminLayout(), avatarBg(), buildSections(), HUES, Props, ROLE_LABELS, Section (+18 more)
Cohesion: 0.13
Nodes (18): useSubscription(), AdminLayout(), avatarBg(), buildSections(), HUES, Props, ROLE_LABELS, Section (+10 more)
### Community 9 - "Community 9"
Cohesion: 0.04
@@ -692,40 +722,40 @@ Cohesion: 0.04
Nodes (46): Clinic Address Management, Clinic API, DELETE `/api/v1/admin/clinic/{clinicUuid}/doctor/{doctorUuid}`, `DELETE /api/v1/clinic/{clinicUuid}/address/{addressUuid}`, Errors, Errors, Errors, Errors (+38 more)
### Community 11 - "Community 11"
Cohesion: 0.12
Nodes (9): Claim, ClaimItem, DebtRow, InsuranceOption, KIND_LABEL, STATUS_FILTERS, STATUS_META, PersianDatePicker() (+1 more)
Cohesion: 0.08
Nodes (15): Claim, ClaimItem, DebtRow, InsuranceOption, KIND_LABEL, STATUS_FILTERS, STATUS_META, IbanItem (+7 more)
### Community 12 - "Community 12"
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.06
Nodes (26): iranMobileSchema, isValidIranMobile(), sanitizeMobileInput(), toEnglishDigits(), ClinicAddress, ClinicDoctorItem, ClinicInvitation, EditForm (+18 more)
Cohesion: 0.05
Nodes (30): iranMobileOptionalSchema, iranMobileSchema, isValidIranMobile(), sanitizeMobileInput(), toEnglishDigits(), ClinicAddress, ClinicDoctorItem, ClinicInvitation (+22 more)
### Community 14 - "Community 14"
Cohesion: 0.10
Nodes (12): AppointmentSettingsController, DateOverride, Holiday, DateOverrideRepository, HolidayRepository, JsonResponse, Request, User (+4 more)
Cohesion: 0.15
Nodes (8): AppointmentSettingsController, Holiday, HolidayRepository, JsonResponse, Request, User, Doctor, ManagerRegistry
### Community 15 - "Community 15"
Cohesion: 0.10
Nodes (13): PaymentController, MockGateway, SepGateway, JsonResponse, Payment, PaymentGatewayInterface, Request, Response (+5 more)
### Community 16 - "Community 16"
Cohesion: 0.07
Nodes (7): PatientSession, SmsWallet, Appointment, Collection, PatientRecord, self, SessionService
Cohesion: 0.09
Nodes (6): PatientSession, 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
Nodes (38): API, API, API, API, API, Route, Route, Route (+30 more)
### Community 19 - "Community 19"
Cohesion: 0.06
Nodes (27): Contract, InsuranceOption, KIND_LABEL, FormData, schema, Contract, CoverageRow, fieldLabel (+19 more)
Cohesion: 0.07
Nodes (32): Contract, InsuranceOption, KIND_LABEL, calcFinalPrice(), EMPTY_RECORDS, EMPTY_SESSIONS, fileNumber(), getPatientName() (+24 more)
### Community 20 - "Community 20"
Cohesion: 0.15
@@ -733,11 +763,11 @@ Nodes (3): AdminApiController, JsonResponse, Request
### Community 21 - "Community 21"
Cohesion: 0.06
Nodes (29): formatNumber(), ClinicDetailPage(), AdminCharts, AdminDashboard(), AdminRecent, AdminStats, APPT_CLS, APPT_COLOR (+21 more)
Nodes (31): formatNumber(), ClinicDetailPage(), AdminCharts, AdminDashboard(), AdminRecent, AdminStats, APPT_CLS, APPT_COLOR (+23 more)
### Community 22 - "Community 22"
Cohesion: 0.11
Nodes (14): RatingController, Like, Rate, LikeRepository, RateRepository, JsonResponse, Request, User (+6 more)
Cohesion: 0.09
Nodes (15): RatingController, Like, Rate, CommentListNPlusOneTest, LikeRepository, RateRepository, JsonResponse, Request (+7 more)
### Community 23 - "Community 23"
Cohesion: 0.05
@@ -752,12 +782,12 @@ Cohesion: 0.05
Nodes (39): Appointment API, Error Responses, Errors, Errors, Errors, Errors, Errors, Errors (+31 more)
### Community 26 - "Community 26"
Cohesion: 0.23
Cohesion: 0.24
Nodes (4): InsuranceController, JsonResponse, Request, User
### Community 27 - "Community 27"
Cohesion: 0.06
Nodes (35): 55. 🟢 `GET` all tag, 56. 🟢 `GET` supplementary_insurance, 57. 🟢 `GET` categories list, 58. 🟢 `GET` all state, 59. 🟢 `GET` all city, 60. 🟢 `GET` all specially doctor, 62. 🟡 `PATCH` patch, 63. 🔴 `DELETE` DELETE (+27 more)
Cohesion: 0.05
Nodes (40): 55. 🟢 `GET` all tag, 56. 🟢 `GET` supplementary_insurance, 57. 🟢 `GET` categories list, 58. 🟢 `GET` all state, 59. 🟢 `GET` all city, 60. 🟢 `GET` all specially doctor, 61. 🔵 `POST` post, 62. 🟡 `PATCH` patch (+32 more)
### Community 28 - "Community 28"
Cohesion: 0.09
@@ -768,8 +798,8 @@ Cohesion: 0.06
Nodes (33): DELETE `/api/v1/admin/city/{id}`, DELETE `/api/v1/admin/province/{id}`, Errors, Errors, Errors, Errors, GET `/api/v1/admin/cities`, GET `/api/v1/admin/provinces` (+25 more)
### Community 30 - "Community 30"
Cohesion: 0.09
Nodes (14): BillingCalculatorTest, BillingCalculator, Money, BillingCalculator, InvoiceService, PatientService, CoverageRule, ShareBreakdown (+6 more)
Cohesion: 0.08
Nodes (15): BillingCalculatorTest, BillingCalculator, Money, BillingCalculator, InvoiceService, PatientService, ErrorCodesTest, CoverageRule (+7 more)
### Community 31 - "Community 31"
Cohesion: 0.06
@@ -785,11 +815,11 @@ Nodes (20): CoverageRow, Draft, KIND, TenantInsurance, ServiceTariffModal(), Tar
### Community 34 - "Community 34"
Cohesion: 0.06
Nodes (33): require, doctrine/doctrine-bundle, doctrine/doctrine-migrations-bundle, doctrine/orm, ext-ctype, ext-iconv, lexik/jwt-authentication-bundle, nelmio/api-doc-bundle (+25 more)
Nodes (34): require, doctrine/doctrine-bundle, doctrine/doctrine-migrations-bundle, doctrine/orm, ext-ctype, ext-iconv, lexik/jwt-authentication-bundle, nelmio/api-doc-bundle (+26 more)
### Community 35 - "Community 35"
Cohesion: 0.06
Nodes (31): Errors, Errors, Errors, Errors, Errors, Errors, Errors, FinancialBreakdown (لاگ مالی) (+23 more)
Nodes (32): Errors, Errors, Errors, Errors, Errors, Errors, Errors, FinancialBreakdown (لاگ مالی) (+24 more)
### Community 36 - "Community 36"
Cohesion: 0.06
@@ -812,8 +842,8 @@ Cohesion: 0.09
Nodes (4): User, PasswordAuthenticatedUserInterface, self, UserInterface
### Community 41 - "Community 41"
Cohesion: 0.07
Nodes (20): CityForm, citySchema, InsuranceForm, insuranceSchema, LogoUploadField(), ProvinceForm, provinceSchema, ServiceForm (+12 more)
Cohesion: 0.04
Nodes (53): ALL_STATUSES, AppointmentDetailPage(), CityForm, citySchema, InsuranceForm, insuranceSchema, ProvinceForm, provinceSchema (+45 more)
### Community 42 - "Community 42"
Cohesion: 0.07
@@ -860,8 +890,8 @@ Cohesion: 0.07
Nodes (26): الزامات UI, باگ‌فیکس صفحه نوبت‌ها, باگ ۱ — کرش تقویم, باگ ۲ — روز هفته در DateNavigator, باگ ۳ — پیام «slot نیست», باگ ۴ — نوبت جدید: نام اجباری + find-or-create patient, باگ ۵ — patient_mobile نشان می‌دهد موبایل پزشک, باگ ۶ — نوبت‌های رزرو شده در نمایش زمانبندی (+18 more)
### Community 53 - "Community 53"
Cohesion: 0.11
Nodes (11): ClaimItem, DoctorInsurance, ClaimItemRepository, DoctorInsuranceRepository, PreRegistrationRepository, SiteConfigRepository, ServiceEntityRepository, ManagerRegistry (+3 more)
Cohesion: 0.09
Nodes (13): ClaimItemRepository, InvoiceRepository, PreRegistrationRepository, SessionServiceRepository, SiteConfigRepository, ServiceEntityRepository, ManagerRegistry, ManagerRegistry (+5 more)
### Community 54 - "Community 54"
Cohesion: 0.10
@@ -881,7 +911,7 @@ Nodes (24): Blog API, DELETE `/api/v1/blog/{uuid}`, Errors, Errors, Errors, Erro
### Community 58 - "Community 58"
Cohesion: 0.28
Nodes (4): Blog, QueryBuilder, BlogRepository, ManagerRegistry
Nodes (4): Blog, BlogRepository, ManagerRegistry, QueryBuilder
### Community 59 - "Community 59"
Cohesion: 0.22
@@ -911,6 +941,10 @@ Nodes (7): SmsWalletController, SmsSettingsRepository, SmsSettings, JsonResponse
Cohesion: 0.08
Nodes (24): 2. کاربر (User), 4. 🔵 `POST` verify code, 5. 🔵 `POST` send code, 6. 🔵 `POST` register, 7. 🔴 `DELETE` delete user, 8. 🟡 `PATCH` patch, 9. 🟢 `GET` list secretary, Request Body (+16 more)
### Community 66 - "Community 66"
Cohesion: 0.07
Nodes (4): ClinicStaff, SmsWallet, AppointmentExpiryService, self
### Community 67 - "Community 67"
Cohesion: 0.11
Nodes (4): Invoice, Collection, InvoiceItem, self
@@ -940,7 +974,7 @@ Cohesion: 0.09
Nodes (21): DELETE `/api/v1/user-profile/{uuid}`, Errors, Errors, Errors, Errors, Errors, GET `/api/v1/user-profile/{uuid}`, PATCH `/api/v1/user-profile/{uuid}` (+13 more)
### Community 75 - "Community 75"
Cohesion: 0.23
Cohesion: 0.24
Nodes (6): DoctorController, Doctor, DoctorAddress, JsonResponse, Request, User
### Community 76 - "Community 76"
@@ -960,8 +994,8 @@ Cohesion: 0.09
Nodes (22): dependencies, @ckeditor/ckeditor5-build-classic, @ckeditor/ckeditor5-react, @fontsource/vazirmatn, @heroicons/react, @hookform/resolvers, jalaali-js, leaflet (+14 more)
### Community 82 - "Community 82"
Cohesion: 0.12
Nodes (5): KavehNegarProvider, RanginehProvider, SmsService, SendSmsMessage, SmsProviderInterface
Cohesion: 0.08
Nodes (9): KavehNegarProvider, RanginehProvider, SmsLogRepository, OtpService, SmsService, SmsLog, ManagerRegistry, SendSmsMessage (+1 more)
### Community 83 - "Community 83"
Cohesion: 0.09
@@ -976,8 +1010,8 @@ Cohesion: 0.10
Nodes (21): devDependencies, @babel/core, @babel/preset-env, @babel/preset-react, @babel/preset-typescript, core-js, @hotwired/stimulus, postcss (+13 more)
### Community 86 - "Community 86"
Cohesion: 0.15
Nodes (17): calcFinalPrice(), EMPTY_RECORDS, EMPTY_SESSIONS, fileNumber(), getPatientName(), getPatientPhone(), InsurancePricing, MyPatientsPageInner() (+9 more)
Cohesion: 0.08
Nodes (13): AppointmentExpiryServiceTest, LowTierFixesTest, SendCodeMobileRateLimitTest, ClaimsListPaginationTest, ServiceItemStaffOwnershipTest, EntityManagerInterface, KernelBrowser, CommentPaginationTest (+5 more)
### Community 87 - "Community 87"
Cohesion: 0.10
@@ -992,8 +1026,8 @@ Cohesion: 0.10
Nodes (20): IDهای واقعی lookup tables, Seed واقعی دیتا — پاک‌سازی و ایجاد ۱۰۰ دکتر به ازای هر شهر, استان‌ها (provinces.id), بخش A — پاک‌سازی (به ترتیب FK), بخش B — کلینیک نمونه کامل (تبریز), بخش C — دکتر نمونه کامل (تبریز), بخش D — ۱۰۰ دکتر برای هر شهر (bulk generation), بیمه‌ها (insurances.id) (+12 more)
### Community 90 - "Community 90"
Cohesion: 0.21
Nodes (6): DoctorSecretaryRepository, Clinic, Doctor, DoctorSecretary, ManagerRegistry, User
Cohesion: 0.19
Nodes (7): DoctorSecretaryRepository, Clinic, Doctor, DoctorSecretary, ManagerRegistry, QueryBuilder, User
### Community 91 - "Community 91"
Cohesion: 0.10
@@ -1048,8 +1082,8 @@ Cohesion: 0.35
Nodes (5): PatientController, JsonResponse, PatientSession, Request, User
### Community 104 - "Community 104"
Cohesion: 0.18
Nodes (6): TagController, TagRepository, JsonResponse, Request, ManagerRegistry, Tag
Cohesion: 0.35
Nodes (3): TagController, JsonResponse, Request
### Community 105 - "Community 105"
Cohesion: 0.11
@@ -1272,12 +1306,12 @@ 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.17
Nodes (6): SmsController, SmsTemplateRepository, SmsTemplate, JsonResponse, Request, ManagerRegistry
Cohesion: 0.29
Nodes (3): SmsController, JsonResponse, Request
### Community 165 - "Community 165"
Cohesion: 0.13
@@ -1292,8 +1326,8 @@ Cohesion: 0.13
Nodes (14): select listها, select بیمه در فرم مراجعه, تعداد خدمت, زمینه, صفحه‌ی insurance-pricing (دو بخش هم‌پوشان), نکات مهم, وضعیت فعلی, وظایف (+6 more)
### Community 168 - "Community 168"
Cohesion: 0.21
Nodes (4): SmsLogRepository, OtpService, SmsLog, ManagerRegistry
Cohesion: 0.10
Nodes (20): api.ir (استعلام هویت — Shahkar / IbanMatch), اتصال به دیتابیس‌های مستقل (الزامی), اسرار (الزامی — قبل از اولین دیپلوی), امنیت و منابع, بررسی سلامت, دامنه‌ها و CORS, دیپلوی‌های بعدی, راهنمای دیپلوی ClinicPro (Coolify + Docker Compose) (+12 more)
### Community 170 - "Community 170"
Cohesion: 0.13
@@ -1344,8 +1378,8 @@ Cohesion: 0.23
Nodes (3): WeeklySchedule, Doctor, self
### Community 182 - "Community 182"
Cohesion: 0.06
Nodes (30): usePaymentConfig(), emptyFeatures(), FEATURE_KEYS, FEATURE_LABELS, PeriodForm, periodSchema, PLAN_DISPLAY, PlanForm (+22 more)
Cohesion: 0.15
Nodes (11): emptyFeatures(), FEATURE_KEYS, FEATURE_LABELS, PeriodForm, periodSchema, PLAN_DISPLAY, PlanForm, planSchema (+3 more)
### Community 183 - "Community 183"
Cohesion: 0.14
@@ -1415,13 +1449,9 @@ Nodes (13): Endpoint ها, GET /api/v1/service-items/{sectionUuid}, GET /api/v1/
Cohesion: 0.14
Nodes (13): Endpoint ها, PATCH /api/v1/secretary/{uuid}, POST /api/v1/secretary, تسک ۱۴: ماژول منشی, توضیح, زمان تخمینی, ساختار JSON, سیستم مجوزها — Resource-Based Permissions (مقیاس‌پذیر) (+5 more)
### Community 200 - "Community 200"
Cohesion: 0.43
Nodes (3): AbstractMigration, Schema, Version20260622184409
### Community 201 - "Community 201"
Cohesion: 0.15
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)
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)
### Community 202 - "Community 202"
Cohesion: 0.15
@@ -1436,16 +1466,16 @@ Cohesion: 0.21
Nodes (6): AuthenticationException, ExceptionSubscriber, SecurityHeadersSubscriber, EventSubscriberInterface, ExceptionEvent, ResponseEvent
### Community 205 - "Community 205"
Cohesion: 0.26
Nodes (7): Command, CancelExpiredAppointmentsCommand, SeedSmsMessageTemplatesCommand, InputInterface, OutputInterface, InputInterface, OutputInterface
Cohesion: 0.16
Nodes (10): Command, CancelExpiredAppointmentsCommand, CreateAdminCommand, SeedSmsMessageTemplatesCommand, InputInterface, OutputInterface, InputInterface, OutputInterface (+2 more)
### Community 206 - "Community 206"
Cohesion: 0.35
Nodes (6): DashboardController, Clinic, DoctorSecretary, JsonResponse, Request, User
### Community 207 - "Community 207"
Cohesion: 0.15
Nodes (13): ۲. مدل داده و موجودیت‌ها, ۲.۱ کاربر (User), ۲.۱۰ پرداخت (Payment Types), ۲.۱۰.۱ پرداخت نوبت, ۲.۱۰.۲ پرداخت اشتراک, ۲.۱۱ پروفایل بیمار (Profile), ۲.۱۲ وبلاگ (Blog), ۲.۳ دکتر (Doctor) (+5 more)
Cohesion: 0.07
Nodes (30): ۲. مدل داده و موجودیت‌ها, ۲.۱ کاربر (User), ۲.۱۰ پرداخت (Payment Types), ۲.۱۰.۱ پرداخت نوبت, ۲.۱۰.۲ پرداخت اشتراک, ۲.۱۱ پروفایل بیمار (Profile), ۲.۱۲ وبلاگ (Blog), ۲.۱۳ نظرات، لایک و امتیازدهی (+22 more)
### Community 208 - "Community 208"
Cohesion: 0.23
@@ -1496,7 +1526,7 @@ Cohesion: 0.23
Nodes (4): PatientSessionRepository, ManagerRegistry, PatientRecord, PatientSession
### Community 224 - "Community 224"
Cohesion: 0.27
Cohesion: 0.24
Nodes (5): PaymentRepository, Appointment, ManagerRegistry, Payment, User
### Community 225 - "Community 225"
@@ -1512,8 +1542,8 @@ Cohesion: 0.30
Nodes (6): AbstractAuthenticator, Passport, PasswordAuthenticator, Request, Response, TokenInterface
### Community 228 - "Community 228"
Cohesion: 0.06
Nodes (33): DELETE `/api/v1/admin/insurance/{id}`, DELETE `/api/v1/billing/tenant-insurances/{uuid}`, DELETE `/api/v1/insurance/{id}`, EntityInsurancePricing — قیمت‌گذاری ویزیت بر اساس بیمه, Errors, Errors, GET `/api/v1/admin/insurances`, GET `/api/v1/billing/tenant-insurances` (+25 more)
Cohesion: 0.17
Nodes (11): DELETE `/api/v1/admin/insurance/{id}`, DELETE `/api/v1/insurance/{id}`, EntityInsurancePricing — قیمت‌گذاری ویزیت بر اساس بیمه, GET `/api/v1/insurance/{id}`, GET `/api/v1/insurance-pricing`, Insurance API, Response `200`, Response `200` (+3 more)
### Community 229 - "Community 229"
Cohesion: 0.15
@@ -1536,8 +1566,8 @@ Cohesion: 0.21
Nodes (3): SmsWalletTransaction, Payment, SmsWallet
### Community 235 - "Community 235"
Cohesion: 0.13
Nodes (12): AdminUserDetail, AVATAR_COLORS, EditForm, editSchema, GENDER_LABELS, getPrimaryRole(), MARITAL_LABELS, MEDICAL_SECTIONS (+4 more)
Cohesion: 0.08
Nodes (21): formatDateTime(), toDate(), SessionRow(), FormValues, schema, Settings, TaxHistoryRow, SettlementDetailPage() (+13 more)
### Community 236 - "Community 236"
Cohesion: 0.17
@@ -1560,7 +1590,7 @@ Cohesion: 0.17
Nodes (11): ذخیره و نمایش صحیح تاریخ تولد در پروفایل (Unix), زمینه, فایل‌های مرتبط, مشکل / هدف, نکات مهم, وضعیت فعلی (کد واقعی), وظایف, پروژه (+3 more)
### Community 241 - "Community 241"
Cohesion: 0.32
Cohesion: 0.29
Nodes (4): CommentRepository, Comment, Doctor, ManagerRegistry
### Community 242 - "Community 242"
@@ -1612,8 +1642,8 @@ Cohesion: 0.18
Nodes (11): 1. 🔵 `POST` refresh token, 1. احراز هویت (Authentication), 2. 🟢 `GET` X-CSRF-Token, 3. 🟢 `GET` user info 🆕, Request Body, بخش دوم — مستند کامل API, خطاهای عمومی, فهرست مطالب (+3 more)
### Community 255 - "Community 255"
Cohesion: 0.18
Nodes (11): GET /api/v1/doctors/{id}, GET /api/v1/doctors/{id}/insurances, GET /api/v1/representations/{id}, GET /oauth/userinfo — اطلاعات کاربر (سازگار با دروپال), POST /api/v1/representations/{id}/bank-accounts, POST /oauth/token — تجدید توکن (Refresh), POST /oauth/token — ورود به سیستم, Task-02: احراز هویت (Authentication) (+3 more)
Cohesion: 0.11
Nodes (19): GET /api/v1/appointment-settings/slots — دریافت اسلات‌های خالی, GET /api/v1/categories/cities — شهرها, GET /api/v1/categories/states — استان‌ها, GET /api/v1/doctors/{id}, GET /api/v1/doctors/{id}/insurances, GET /api/v1/representations/{id}, GET /oauth/userinfo — اطلاعات کاربر (سازگار با دروپال), POST /api/v1/appointment-settings/holidays — ثبت تعطیلی (فقط ادمین) (+11 more)
### Community 256 - "Community 256"
Cohesion: 0.29
@@ -1684,20 +1714,20 @@ 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.28
Nodes (5): Authentication, ClinicPro — API Documentation Index, Error Code Reference, Modules, Standard Response Envelope
Cohesion: 0.14
Nodes (11): Appointment Settings API, Available Locations, Errors, `GET /api/v1/appointment-settings/available-locations/{doctorUuid}`, Response `200`, Slot Calculation Logic (Reference), Authentication, ClinicPro — API Documentation Index (+3 more)
### Community 275 - "Community 275"
Cohesion: 0.47
Nodes (4): MyAppointmentsController, JsonResponse, Request, User
Cohesion: 0.38
Nodes (5): MyAppointmentsController, Doctor, JsonResponse, Request, User
### Community 276 - "Community 276"
Cohesion: 0.20
Nodes (9): Architecture Audit — ClinicPro Symfony 7 Migration, Architecture Score (بعد از اصلاحات), Architecture Violations, Executive Summary, Final Verdict (بعد از اصلاحات), Missing Requirements (کامل), اصلاحات اعمال‌شده (بعد از Audit), دلیل تصمیم (+1 more)
### Community 277 - "Community 277"
Cohesion: 0.20
Nodes (9): بخش اول — مستند محصول (PRD), فهرست کلی, کلینیک پرو — مستند جامع فنی و API, ۵. فهرست مشکلات شناسایی‌شده و اصلاحات لازم, ۶. پیوست, ۶.۱ دیاگرام وضعیت نوبت, ۶.۲ جریان کمیسیون, ۶.۳ بررسی محدودیت منشی (+1 more)
Cohesion: 0.08
Nodes (23): GET /api/v1/sms/balance — موجودی حساب پیامک, POST /api/v1/sms/queue — افزودن به صف, بخش اول — مستند محصول (PRD), ثبت‌نام دکتر — از طریق نماینده, ثبت‌نام دکتر — از طریق کلینیک, ثبت‌نام دکتر — مستقل, فهرست کلی, کلینیک پرو — مستند جامع فنی و API (+15 more)
### Community 279 - "Community 279"
Cohesion: 0.20
@@ -1716,8 +1746,8 @@ Cohesion: 0.20
Nodes (10): SiteConfig key:, SmsSettings: `id`, `entityType`, `entityId`, `reminderEnabled` (bool=false),, SmsWallet: `id`, `entityType`, `entityId`, `balanceRials` (INT=0), `createdAt`, `updatedAt`., SmsWalletController endpoints:, SmsWalletService:, SmsWalletTransaction: `id`, `uuid`, `wallet` (FK→SmsWallet ON DELETE CASCADE),, TASK-14: پنل پیامکی (SMS Panel), تغییر PaymentController callback برای sms_wallet: (+2 more)
### Community 283 - "Community 283"
Cohesion: 0.29
Nodes (3): ClaimRepository, Claim, ManagerRegistry
Cohesion: 0.23
Nodes (4): ClaimRepository, Claim, ManagerRegistry, QueryBuilder
### Community 284 - "Community 284"
Cohesion: 0.36
@@ -1760,8 +1790,8 @@ Cohesion: 0.20
Nodes (9): AdminApiController — dashboardCharts با بازه زمانی, DashboardController — اضافه کردن from/to, date range selector component:, تغییر Backend, تغییر Frontend — DashboardPage.tsx, فایل‌هایی که تغییر می‌کنند, معماری — تسک ۱۶: داشبورد هوشمند, نصب dependency: (+1 more)
### Community 294 - "Community 294"
Cohesion: 0.27
Nodes (9): JALALI_MONTHS, jalaliFirstWeekday(), jalaliToGregorian(), navBtnStyle, PersianCalendar(), pf, Props, toJalali() (+1 more)
Cohesion: 0.24
Nodes (10): gridItemStyle, JALALI_MONTHS, jalaliFirstWeekday(), jalaliToGregorian(), navBtnStyle, PersianCalendar(), pf, Props (+2 more)
### Community 295 - "Community 295"
Cohesion: 0.33
@@ -1791,13 +1821,17 @@ Nodes (3): PreRegistrationController, JsonResponse, Request
Cohesion: 0.36
Nodes (4): SiteConfigController, JsonResponse, Request, User
### Community 302 - "Community 302"
Cohesion: 0.12
Nodes (16): تست (اجباری — بعد از تغییرات), زمینه, سخت‌سازی و بازبینی Production استک Docker برای Coolify (MariaDB/Redis مستقل), فایل‌های مرتبط, ⚠️ قانون شماره ۱ — اول مستندات، بعد کد, نکات مهم, وضعیت فعلی پروژه (واقعی — بررسی شده), وظایف (+8 more)
### Community 303 - "Community 303"
Cohesion: 0.28
Nodes (4): imgJson(), mobile(), ri(), uuid()
Cohesion: 0.12
Nodes (16): آماده‌سازی پروژه ClinicPro برای دیپلوی روی Coolify با Docker Compose, زمینه, فایل‌های مرتبط, نکات مهم (محدودیت‌ها و edge caseها), هدف, وظایف, ۱. ساخت `Dockerfile` چندمرحله‌ای, ۱۰. ساخت راهنمای `docs/deploy/coolify.md` (+8 more)
### Community 304 - "Community 304"
Cohesion: 0.04
Nodes (46): 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 (+38 more)
Nodes (50): 29. 🟢 `GET` clinic list 🆕, 30. 🟢 `GET` get 🆕, 33. 🔵 `POST` image_clinic, 34. 🔵 `POST` image logo, 35. 🟡 `PATCH` patch, 36. 🟢 `GET` get my rate, 38. 🟢 `GET` Unapproved comments, 39. 🟡 `PATCH` Comment confirmation (+42 more)
### Community 306 - "Community 306"
Cohesion: 0.33
@@ -1848,8 +1882,8 @@ Cohesion: 0.36
Nodes (3): TariffRepository, ManagerRegistry, Tariff
### Community 318 - "Community 318"
Cohesion: 0.36
Nodes (3): TenantServiceCoverageRepository, ManagerRegistry, TenantServiceCoverage
Cohesion: 0.12
Nodes (6): ServiceItemDeleteCleanupTest, ServiceCoverageNPlusOneTest, TenantServiceCoverageRepository, TenantInsuranceCleanupService, ManagerRegistry, TenantServiceCoverage
### Community 319 - "Community 319"
Cohesion: 0.39
@@ -1900,8 +1934,8 @@ Cohesion: 0.22
Nodes (8): Query های جدید, بیماران منحصربه‌فرد در بازه, درآمد بر اساس روز (از patient_sessions), فروش اشتراک بر اساس پنل (admin), نوبت‌ها بر اساس روز (admin chart), نکات مهم, هیچ migration لازم نیست, پایگاه داده — تسک ۱۶: داشبورد هوشمند
### Community 333 - "Community 333"
Cohesion: 0.06
Nodes (32): DELETE `/api/v1/clinic-pro/doctor-address/{id}`, DELETE `/api/v1/doctor/{uuid}`, Doctor API, Errors, Errors, Errors, Errors, Errors (+24 more)
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`
### Community 334 - "Community 334"
Cohesion: 0.25
@@ -1912,12 +1946,12 @@ Cohesion: 0.25
Nodes (8): Maintainability, Observability, Performance, Reliability, Scalability, Security, Testability, ۲. تحلیل معماری فعلی
### Community 336 - "Community 336"
Cohesion: 0.25
Nodes (8): ثبت‌نام دکتر — از طریق نماینده, ثبت‌نام دکتر — از طریق کلینیک, ثبت‌نام دکتر — مستقل, ۱. معرفی محصول, ۱.۱ نقش‌های سیستم, ۱.۲ فلوهای عملیاتی اصلی, ۱.۳ پلن‌های اشتراک, ۱.۴ سیستم پیامک
Cohesion: 0.12
Nodes (16): بازبینی کامل بک‌اند ClinicPro (معماری/امنیت/Performance/کیفیت/DevOps) — تسک‌به‌تسک با تست, باگ‌کلاس‌های شناخته‌شده در همین کدبیس (به‌عنوان seed برای Backlog), خروجی هر تسک, زمینه, شرط پایان + گزارش نهایی, قوانین اجرا (الزامی), محیط و دستورات تست (همه داخل ddev), نمونه ابعاد بررسی برای ساخت Backlog (هر کدام به تسک‌های کوچک بشکن) (+8 more)
### Community 337 - "Community 337"
Cohesion: 0.25
Nodes (8): ۲.۲ انواع دسته‌بندی (Category Types), ۲.۲.۱ تگ (Tag), ۲.۲.۲ استان (State), ۲.۲.۳ شهر (City), ۲.۲.۴ بیمه پایه (Basic Insurance), ۲.۲.۵ بیمه مکمل (Supplementary Insurance), ۲.۲.۶ تخصص دکتر (Doctor Specialty), ۲.۲.۷ خدمات دکتر (Doctor Services)
Cohesion: 0.12
Nodes (15): ClaimsPage.tsx — بدون صفحه‌بندی، فقط `data.data.data`, RepresentationSettlementPage.tsx — بدون صفحه‌بندی, تطبیق Admin SPA با تغییرات API برنچ `backend-audit`, جدول کامل تغییرات API (همه‌ی endpointهای تغییریافته), زمینه, فایل‌های مرتبط, نکات مهم, وضعیت فعلی (کد واقعی) (+7 more)
### Community 338 - "Community 338"
Cohesion: 0.39
@@ -1928,8 +1962,8 @@ Cohesion: 0.43
Nodes (5): BeforeInstallPromptEvent, usePwaInstall(), PwaInstallBanner(), detectIOS(), PwaLoginCard()
### Community 341 - "Community 341"
Cohesion: 0.40
Nodes (5): optionalDependencies, lightningcss-darwin-arm64, lightningcss-linux-arm64-gnu, @tailwindcss/oxide-darwin-arm64, @tailwindcss/oxide-linux-arm64-gnu
Cohesion: 0.12
Nodes (15): بازنویسی متن استارت‌اپی و رفع نمایش موبایل صفحه فرود (Landing), تست نهایی, راهنمای بازنویسی (نمونه لحن استارت‌اپی — می‌توانی بهترش کنی), زمینه, فایل‌های مرتبط, مشکل / هدف, مشکل ۲٫۱ — سرریز هدر روی گوشی, مشکل ۲٫۲ — منوی موبایل با inline-style شکننده باز می‌شود و بسته نمی‌شود (+7 more)
### Community 342 - "Community 342"
Cohesion: 0.25
@@ -1960,8 +1994,8 @@ Cohesion: 0.39
Nodes (3): ProvinceRepository, ManagerRegistry, Province
### Community 349 - "Community 349"
Cohesion: 0.36
Nodes (3): EntityInsurancePricing, EntityInsurancePricingRepository, ManagerRegistry
Cohesion: 0.22
Nodes (4): EntityInsurancePricing, TenantInsuranceCleanupTest, EntityInsurancePricingRepository, ManagerRegistry
### Community 350 - "Community 350"
Cohesion: 0.43
@@ -2028,8 +2062,8 @@ Cohesion: 0.29
Nodes (7): Dashboard, GET `/api/v1/admin/dashboard/charts`, GET `/api/v1/admin/dashboard/recent`, GET `/api/v1/admin/dashboard/stats`, Response `200`, Response `200`, Response `200`
### Community 368 - "Community 368"
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)
Cohesion: 0.21
Nodes (5): DateOverrideOwnershipTest, DateOverride, DateOverrideRepository, Doctor, ManagerRegistry
### Community 369 - "Community 369"
Cohesion: 0.29
@@ -2040,8 +2074,8 @@ Cohesion: 0.29
Nodes (7): Authentication, Authorization, Input Validation, Logging Security, Rate Limiting, Secrets Management, ۷. تحلیل امنیت
### Community 371 - "Community 371"
Cohesion: 0.39
Nodes (4): FinancialBreakdown, FinancialBreakdownRepository, ManagerRegistry, Payment
Cohesion: 0.15
Nodes (6): UniqueConstraintsTest, FinancialBreakdown, FinancialBreakdownRepository, FinancialBreakdownIntegrityTest, ManagerRegistry, Payment
### Community 374 - "Community 374"
Cohesion: 0.29
@@ -2072,8 +2106,8 @@ Cohesion: 0.43
Nodes (3): InvoiceItemRepository, InvoiceItem, ManagerRegistry
### Community 381 - "Community 381"
Cohesion: 0.43
Nodes (3): InvoiceRepository, Invoice, ManagerRegistry
Cohesion: 0.13
Nodes (14): جدا کردن MariaDB و Redis از docker-compose به Resourceهای مستقل Coolify, زمینه, فایل‌های مرتبط, قوانین Coolify (از داکیومنت‌ها — رعایت اجباری), نکات مهم, هدف, وضعیت فعلی, وظایف (+6 more)
### Community 382 - "Community 382"
Cohesion: 0.29
@@ -2132,13 +2166,21 @@ Cohesion: 0.33
Nodes (6): Refactoring Plan, فاز ۰ — مستندسازی (۳ تا ۵ روز، قبل از هر کدنویسی), فاز ۱ — زیرساخت پایه (task-01), فاز ۲ — پیاده‌سازی ماژول‌ها (به ترتیب dependency), فاز ۳ — بهینه‌سازی (بعد از پیاده‌سازی), فاز ۴ — آماده‌سازی تولید
### Community 397 - "Community 397"
Cohesion: 0.33
Nodes (6): GET /api/v1/sms/balance — موجودی حساب پیامک, POST /api/v1/sms/queue — افزودن به صف, ۴. سیستم حساب و صف پیامک, ۴.۱ حساب پیامک (SMS Account), ۴.۲ صف پیامک (SMS Queue), ۴.۳ API پیامک
Cohesion: 0.21
Nodes (6): ClaimAmountBoundsTest, ClaimsListNPlusOneTest, ClaimItem, Claim, Doctor, User
### Community 398 - "Community 398"
Cohesion: 0.33
Nodes (4): initiate(), verify(), PaymentInitResult, PaymentVerifyResult
### Community 399 - "Community 399"
Cohesion: 0.23
Nodes (5): AbstractMigration, Schema, Version20260609130407, Schema, Version20260610110921
### Community 418 - "Community 418"
Cohesion: 0.17
Nodes (11): دیپلوی ClinicPro روی Coolify (Docker Compose), رفع اشکال, مراحل دیپلوی, معماری دیپلوی, نکات عملیاتی, چند دامنه فرانت‌اند (مهم), ۱. ساخت Resource در Coolify, ۲. اختصاص دامنه (+3 more)
### Community 458 - "Community 458"
Cohesion: 0.47
Nodes (6): formatPersianDate(), gToJ(), jFirstDayOfWeek(), PersianDateInput(), todayGregorian(), toPersianNums()
@@ -2160,8 +2202,8 @@ Cohesion: 0.33
Nodes (6): سناریوهای چند-context, قانون انتخاب context:, مفاهیم کلیدی معماری Multi-Context (مهم — قبل از پیاده‌سازی بخوان), مفهوم `available_contexts`, مفهوم `db_key`, مفهوم `db_uuid`
### Community 463 - "Community 463"
Cohesion: 0.53
Nodes (3): SessionServiceRepository, ManagerRegistry, SessionService
Cohesion: 0.20
Nodes (8): AdminUser, ChangeRoleModal(), getPrimaryRole(), HUES_LIST, ROLE_META, ROLE_TABS, RoleBadge(), UserStats
### Community 466 - "Community 466"
Cohesion: 0.33
@@ -2231,10 +2273,6 @@ Nodes (3): TaxRateHistoryRepository, ManagerRegistry, TaxRateHistory
Cohesion: 0.40
Nodes (5): Errors, PATCH `/api/v1/doctor/{uuid}`, Path Parameters, Request Body (`application/json`), Response `200`
### Community 484 - "Community 484"
Cohesion: 0.40
Nodes (5): 61. 🔵 `POST` post, Request Body, مثال Request, هدرهای اضافی, پاسخ‌ها
### Community 485 - "Community 485"
Cohesion: 0.50
Nodes (4): Error Codes, POST `/api/v1/pre-registration`, Request Body, Response `200`
@@ -2260,8 +2298,8 @@ Cohesion: 0.40
Nodes (5): 32. 🔵 `POST` post, Request Body, مثال Request, هدرهای اضافی, پاسخ‌ها
### Community 493 - "Community 493"
Cohesion: 0.40
Nodes (5): 35. 🟡 `PATCH` patch, Request Body, مثال Request, هدرهای اضافی, پاسخ‌ها
Cohesion: 0.20
Nodes (9): Backend Audit Backlog — ClinicPro, ☐ CRITICAL, ✅ DONE (committed on backend-audit), ☐ EPICS (design debt — cross-repo, defer; do NOT quick-fix), ☐ HIGH, ☐ LOW, ☐ MEDIUM, Progress (this audit session) (+1 more)
### Community 494 - "Community 494"
Cohesion: 0.50
@@ -2276,8 +2314,8 @@ Cohesion: 0.50
Nodes (4): Errors, POST `/api/v1/user/send-code`, Request Body, Response `200`
### Community 497 - "Community 497"
Cohesion: 0.40
Nodes (5): ۲.۸ تنظیمات نوبت (Appointment Settings), ۲.۸.۱ برنامه هفتگی (Weekly Schedule), ۲.۸.۲ تعطیلات (Holidays), ۲.۸.۳ لغو تعطیل (Date Override), ۲.۸.۴ الگوریتم محاسبه اسلات‌های خالی
Cohesion: 0.53
Nodes (3): SlotUniquenessTest, Appointment, Doctor
### Community 498 - "Community 498"
Cohesion: 0.25
@@ -2364,16 +2402,16 @@ Cohesion: 0.40
Nodes (4): ساختار فایل‌ها, معماری — تسک ۱۶: ماژول داشبورد دکتر, نمودار جریان, کوئری درآمد سالانه (بر اساس ماه‌های شمسی)
### Community 522 - "Community 522"
Cohesion: 0.40
Nodes (3): Props, StatTone, TONE
Cohesion: 0.47
Nodes (3): CommissionService, Payment, Representation
### Community 523 - "Community 523"
Cohesion: 0.50
Nodes (4): GET `/api/v1/admin/payments`, Payment Management, Query Parameters, Response `200`
Cohesion: 0.43
Nodes (3): SmsTemplateRepository, SmsTemplate, ManagerRegistry
### Community 524 - "Community 524"
Cohesion: 0.50
Nodes (4): GET `/api/v1/admin/pre-registrations`, POST `/api/v1/admin/pre-registrations/{uuid}/approve`, POST `/api/v1/admin/pre-registrations/{uuid}/reject`, Pre-Registration Management
Cohesion: 0.39
Nodes (3): TagRepository, ManagerRegistry, Tag
### Community 525 - "Community 525"
Cohesion: 0.50
@@ -2515,10 +2553,6 @@ Nodes (4): GET /api/v1/sms/wallet/balance, GET /api/v1/sms/wallet/logs, POST /ap
Cohesion: 0.67
Nodes (3): BaseKernel, MicroKernelTrait, Kernel
### Community 562 - "Community 562"
Cohesion: 0.50
Nodes (4): extra, symfony, allow-contrib, require
### Community 563 - "Community 563"
Cohesion: 0.67
Nodes (3): submit(), Claim, ClaimSubmissionResult
@@ -2547,21 +2581,9 @@ Nodes (4): با ۱,۰۰۰,۰۰۰ کاربر — نیاز به Refactoring اسا
Cohesion: 0.50
Nodes (4): ریسک‌های بحرانی, ریسک‌های عملیاتی, ریسک‌های مهم, ۱۰. ریسک‌های شناسایی‌شده
### Community 575 - "Community 575"
Cohesion: 0.50
Nodes (4): 44. 🟢 `GET` list comment, هدرهای اضافی, پارامترهای Query, پاسخ‌ها
### Community 578 - "Community 578"
Cohesion: 0.50
Nodes (4): GET /api/v1/appointment-settings/slots — دریافت اسلات‌های خالی, POST /api/v1/appointment-settings/holidays — ثبت تعطیلی (فقط ادمین), POST /api/v1/appointment-settings/overrides — ثبت Override توسط دکتر, Task-09: API تنظیمات نوبت
### Community 579 - "Community 579"
Cohesion: 0.50
Nodes (4): GET /api/v1/categories/cities — شهرها, GET /api/v1/categories/states — استان‌ها, Task-08: API دسته‌بندی‌ها, سایر Endpoint های دسته‌بندی — الزامی
### Community 580 - "Community 580"
Cohesion: 0.50
Nodes (4): ۲.۱۳ نظرات، لایک و امتیازدهی, ۲.۱۳.۱ نظر (Comment), ۲.۱۳.۲ لایک (Like), ۲.۱۳.۳ امتیاز (Rate)
### Community 572 - "Community 572"
Cohesion: 0.48
Nodes (3): DoctorInsuranceRepository, DoctorInsurance, ManagerRegistry
### Community 581 - "Community 581"
Cohesion: 0.50
@@ -2599,6 +2621,14 @@ Nodes (3): Entity: Secretary, ساختار فایل‌ها, معماری — ت
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
### Community 596 - "Community 596"
Cohesion: 0.40
Nodes (5): Errors, PATCH `/api/v1/clinic-pro/doctor-address/{id}`, Path Parameters, Request Body, Response `200`
### Community 597 - "Community 597"
Cohesion: 0.67
Nodes (3): DELETE `/api/v1/sms/template/{uuid}`, Errors, Response `200`
@@ -2627,29 +2657,85 @@ Nodes (3): ماژول‌های شناسایی‌شده در PRD, موارد پو
Cohesion: 0.67
Nodes (3): نقاط ضعف, نقاط قوت, ۶. تحلیل API Design
### Community 606 - "Community 606"
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.40
Nodes (5): Errors, Path Parameters, POST `/api/v1/like/{commentUuid}`, Request Body (`application/json`), Response `200`
### Community 608 - "Community 608"
Cohesion: 0.40
Nodes (5): 37. 🔵 `POST` post, Request Body, مثال Request, هدرهای اضافی, پاسخ‌ها
### Community 612 - "Community 612"
Cohesion: 0.67
Nodes (3): بک‌اند, فرانت‌اند, وضعیت فعلی کد (مهم — قبل از تغییر بخوان)
### Community 613 - "Community 613"
Cohesion: 0.50
Nodes (4): GET `/api/v1/admin/secretaries`, Query Parameters, Response `200`, Secretary Management
### Community 625 - "Community 625"
Cohesion: 0.50
Nodes (4): GET `/api/v1/admin/settlements`, Query Parameters, Response `200`, Settlement Management
### Community 631 - "Community 631"
Cohesion: 0.50
Nodes (4): DELETE `/api/v1/doctor/{uuid}`, Errors, Path Parameters, Response `200`
### Community 632 - "Community 632"
Cohesion: 0.50
Nodes (4): Errors, POST `/api/v1/doctor`, Request Body (`application/json`), Response `201`
### Community 633 - "Community 633"
Cohesion: 0.50
Nodes (4): Errors, GET `/api/v1/doctor/{uuid}`, Path Parameters, Response `200`
### Community 634 - "Community 634"
Cohesion: 0.50
Nodes (4): Errors, GET `/api/v1/admin/insurances`, Query Parameters, Response `200`
### Community 635 - "Community 635"
Cohesion: 0.50
Nodes (4): Errors, PATCH `/api/v1/admin/insurance/{id}`, Path Parameters, Response `200`
### Community 638 - "Community 638"
Cohesion: 0.67
Nodes (3): GET `/api/v1/clinic-pro/doctor-addresses/{doctorId}`, Path Parameters, Response `200`
### Community 639 - "Community 639"
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 640 - "Community 640"
Cohesion: 0.67
Nodes (3): GET `/api/v1/insurances`, Query Parameters, Response `200`
### Community 641 - "Community 641"
Cohesion: 0.67
Nodes (3): POST `/api/v1/admin/insurance/{id}/upload-logo`, Request, Response `200`
## Knowledge Gaps
- **3334 isolated node(s):** `ALLOWED_ROLES`, `Pricing`, `TenantInsurance`, `CoverageRow`, `Draft` (+3329 more)
- **3448 isolated node(s):** `ALLOWED_ROLES`, `Pricing`, `TenantInsurance`, `CoverageRow`, `Draft` (+3443 more)
These have ≤1 connection - possible missing edges or undocumented components.
- **106 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:_
- **Why does `BaseController` connect `Community 108` to `Community 6`, `Community 138`, `Community 139`, `Community 14`, `Community 15`, `Community 275`, `Community 20`, `Community 22`, `Community 26`, `Community 164`, `Community 295`, `Community 300`, `Community 301`, `Community 175`, `Community 176`, `Community 177`, `Community 306`, `Community 59`, `Community 63`, `Community 64`, `Community 70`, `Community 71`, `Community 75`, `Community 206`, `Community 230`, `Community 103`, `Community 104`, `Community 107`, `Community 109`, `Community 121`, `Community 122`, `Community 251`, `Community 252`?**
_High betweenness centrality (0.029) - 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 200`?**
_High betweenness centrality (0.017) - this node is a cross-community bridge._
_High betweenness centrality (0.030) - this node is a cross-community bridge._
- **Why does `Version20260614181657` connect `Community 431` to `Community 399`?**
_High betweenness centrality (0.019) - this node is a cross-community bridge._
- **Why does `Version20260625150304` connect `Community 457` to `Community 399`?**
_High betweenness centrality (0.019) - this node is a cross-community bridge._
- **What connects `ALLOWED_ROLES`, `Pricing`, `TenantInsurance` to the rest of the system?**
_3334 weakly-connected nodes found - possible documentation gaps or missing edges._
_3448 weakly-connected nodes found - possible documentation gaps or missing edges._
- **Should `Community 0` be split into smaller, more focused modules?**
_Cohesion score 0.052597402597402594 - nodes in this community are weakly interconnected._
_Cohesion score 0.04850964348334307 - nodes in this community are weakly interconnected._
- **Should `Community 1` be split into smaller, more focused modules?**
_Cohesion score 0.02857142857142857 - nodes in this community are weakly interconnected._
_Cohesion score 0.028985507246376812 - nodes in this community are weakly interconnected._
- **Should `Community 2` be split into smaller, more focused modules?**
_Cohesion score 0.054354178842782 - nodes in this community are weakly interconnected._
_Cohesion score 0.04951923076923077 - nodes in this community are weakly interconnected._
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -0,0 +1 @@
{"nodes": [{"id": "users_hamed_pj_my_pj_clinic_pro_clinicpro_src_category_controller_categorycontroller_php", "label": "CategoryController.php", "file_type": "code", "source_file": "src/Category/Controller/CategoryController.php", "source_location": "L1"}, {"id": "controller_categorycontroller_categorycontroller", "label": "CategoryController", "file_type": "code", "source_file": "src/Category/Controller/CategoryController.php", "source_location": "L19"}, {"id": "basecontroller", "label": "BaseController", "file_type": "code", "source_file": "", "source_location": ""}, {"id": "controller_categorycontroller_categorycontroller_legacylist", "label": ".legacyList()", "file_type": "code", "source_file": "src/Category/Controller/CategoryController.php", "source_location": "L22"}, {"id": "jsonresponse", "label": "JsonResponse", "file_type": "code", "source_file": "src/Category/Controller/CategoryController.php", "source_location": "L22"}], "edges": [{"source": "users_hamed_pj_my_pj_clinic_pro_clinicpro_src_category_controller_categorycontroller_php", "target": "basecontroller", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "src/Category/Controller/CategoryController.php", "source_location": "L5", "weight": 1.0}, {"source": "users_hamed_pj_my_pj_clinic_pro_clinicpro_src_category_controller_categorycontroller_php", "target": "errorcodes", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "src/Category/Controller/CategoryController.php", "source_location": "L6", "weight": 1.0}, {"source": "users_hamed_pj_my_pj_clinic_pro_clinicpro_src_category_controller_categorycontroller_php", "target": "jsonresponse", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "src/Category/Controller/CategoryController.php", "source_location": "L7", "weight": 1.0}, {"source": "users_hamed_pj_my_pj_clinic_pro_clinicpro_src_category_controller_categorycontroller_php", "target": "route", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "src/Category/Controller/CategoryController.php", "source_location": "L8", "weight": 1.0}, {"source": "users_hamed_pj_my_pj_clinic_pro_clinicpro_src_category_controller_categorycontroller_php", "target": "attributes", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "src/Category/Controller/CategoryController.php", "source_location": "L9", "weight": 1.0}, {"source": "users_hamed_pj_my_pj_clinic_pro_clinicpro_src_category_controller_categorycontroller_php", "target": "controller_categorycontroller_categorycontroller", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/Category/Controller/CategoryController.php", "source_location": "L19", "weight": 1.0}, {"source": "controller_categorycontroller_categorycontroller", "target": "basecontroller", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "src/Category/Controller/CategoryController.php", "source_location": "L20", "weight": 1.0}, {"source": "controller_categorycontroller_categorycontroller", "target": "controller_categorycontroller_categorycontroller_legacylist", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/Category/Controller/CategoryController.php", "source_location": "L22", "weight": 1.0}, {"source": "controller_categorycontroller_categorycontroller_legacylist", "target": "jsonresponse", "relation": "references", "confidence": "EXTRACTED", "source_file": "src/Category/Controller/CategoryController.php", "source_location": "L22", "weight": 1.0, "context": "return_type"}], "raw_calls": [{"caller_nid": "controller_categorycontroller_categorycontroller_legacylist", "callee": "error", "is_member_call": true, "source_file": "/Users/hamed/pj/my_pj/clinic_pro/clinicpro/src/Category/Controller/CategoryController.php", "source_location": "L37", "receiver": null}, {"caller_nid": "controller_categorycontroller_categorycontroller_legacylist", "callee": "error", "is_member_call": true, "source_file": "/Users/hamed/pj/my_pj/clinic_pro/clinicpro/src/Category/Controller/CategoryController.php", "source_location": "L40", "receiver": null}, {"caller_nid": "controller_categorycontroller_categorycontroller_legacylist", "callee": "sprintf", "is_member_call": false, "source_file": "/Users/hamed/pj/my_pj/clinic_pro/clinicpro/src/Category/Controller/CategoryController.php", "source_location": "L42", "receiver": null}]}
File diff suppressed because one or more lines are too long
@@ -0,0 +1 @@
{"nodes": [{"id": "users_hamed_pj_my_pj_clinic_pro_clinicpro_migrations_version20260628153855_php", "label": "Version20260628153855.php", "file_type": "code", "source_file": "migrations/Version20260628153855.php", "source_location": "L1"}, {"id": "migrations_version20260628153855_version20260628153855", "label": "Version20260628153855", "file_type": "code", "source_file": "migrations/Version20260628153855.php", "source_location": "L13"}, {"id": "abstractmigration", "label": "AbstractMigration", "file_type": "code", "source_file": "", "source_location": ""}, {"id": "migrations_version20260628153855_version20260628153855_getdescription", "label": ".getDescription()", "file_type": "code", "source_file": "migrations/Version20260628153855.php", "source_location": "L15"}, {"id": "migrations_version20260628153855_version20260628153855_up", "label": ".up()", "file_type": "code", "source_file": "migrations/Version20260628153855.php", "source_location": "L20"}, {"id": "schema", "label": "Schema", "file_type": "code", "source_file": "migrations/Version20260628153855.php", "source_location": "L20"}, {"id": "migrations_version20260628153855_version20260628153855_down", "label": ".down()", "file_type": "code", "source_file": "migrations/Version20260628153855.php", "source_location": "L27"}], "edges": [{"source": "users_hamed_pj_my_pj_clinic_pro_clinicpro_migrations_version20260628153855_php", "target": "schema", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "migrations/Version20260628153855.php", "source_location": "L7", "weight": 1.0}, {"source": "users_hamed_pj_my_pj_clinic_pro_clinicpro_migrations_version20260628153855_php", "target": "abstractmigration", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "migrations/Version20260628153855.php", "source_location": "L8", "weight": 1.0}, {"source": "users_hamed_pj_my_pj_clinic_pro_clinicpro_migrations_version20260628153855_php", "target": "migrations_version20260628153855_version20260628153855", "relation": "contains", "confidence": "EXTRACTED", "source_file": "migrations/Version20260628153855.php", "source_location": "L13", "weight": 1.0}, {"source": "migrations_version20260628153855_version20260628153855", "target": "abstractmigration", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "migrations/Version20260628153855.php", "source_location": "L13", "weight": 1.0}, {"source": "migrations_version20260628153855_version20260628153855", "target": "migrations_version20260628153855_version20260628153855_getdescription", "relation": "method", "confidence": "EXTRACTED", "source_file": "migrations/Version20260628153855.php", "source_location": "L15", "weight": 1.0}, {"source": "migrations_version20260628153855_version20260628153855", "target": "migrations_version20260628153855_version20260628153855_up", "relation": "method", "confidence": "EXTRACTED", "source_file": "migrations/Version20260628153855.php", "source_location": "L20", "weight": 1.0}, {"source": "migrations_version20260628153855_version20260628153855_up", "target": "schema", "relation": "references", "confidence": "EXTRACTED", "source_file": "migrations/Version20260628153855.php", "source_location": "L20", "weight": 1.0, "context": "parameter_type"}, {"source": "migrations_version20260628153855_version20260628153855", "target": "migrations_version20260628153855_version20260628153855_down", "relation": "method", "confidence": "EXTRACTED", "source_file": "migrations/Version20260628153855.php", "source_location": "L27", "weight": 1.0}, {"source": "migrations_version20260628153855_version20260628153855_down", "target": "schema", "relation": "references", "confidence": "EXTRACTED", "source_file": "migrations/Version20260628153855.php", "source_location": "L27", "weight": 1.0, "context": "parameter_type"}], "raw_calls": [{"caller_nid": "migrations_version20260628153855_version20260628153855_up", "callee": "addSql", "is_member_call": true, "source_file": "/Users/hamed/pj/my_pj/clinic_pro/clinicpro/migrations/Version20260628153855.php", "source_location": "L23", "receiver": null}, {"caller_nid": "migrations_version20260628153855_version20260628153855_up", "callee": "addSql", "is_member_call": true, "source_file": "/Users/hamed/pj/my_pj/clinic_pro/clinicpro/migrations/Version20260628153855.php", "source_location": "L24", "receiver": null}, {"caller_nid": "migrations_version20260628153855_version20260628153855_down", "callee": "addSql", "is_member_call": true, "source_file": "/Users/hamed/pj/my_pj/clinic_pro/clinicpro/migrations/Version20260628153855.php", "source_location": "L30", "receiver": null}, {"caller_nid": "migrations_version20260628153855_version20260628153855_down", "callee": "addSql", "is_member_call": true, "source_file": "/Users/hamed/pj/my_pj/clinic_pro/clinicpro/migrations/Version20260628153855.php", "source_location": "L31", "receiver": null}]}
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -0,0 +1 @@
{"nodes": [{"id": "users_hamed_pj_my_pj_clinic_pro_clinicpro_src_shared_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": "L103"}], "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": "L103", "weight": 1.0}], "raw_calls": []}
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -0,0 +1 @@
{"nodes": [{"id": "users_hamed_pj_my_pj_clinic_pro_clinicpro_docker_entrypoint_sh", "label": "entrypoint.sh", "file_type": "code", "source_file": "docker/entrypoint.sh", "source_location": "L1", "metadata": {"language": "bash", "kind": "file"}}, {"id": "users_hamed_pj_my_pj_clinic_pro_clinicpro_docker_entrypoint_sh__entry", "label": "entrypoint.sh script", "file_type": "code", "source_file": "docker/entrypoint.sh", "source_location": "L1", "metadata": {"language": "bash", "kind": "bash_entrypoint"}}], "edges": [{"source": "users_hamed_pj_my_pj_clinic_pro_clinicpro_docker_entrypoint_sh", "target": "users_hamed_pj_my_pj_clinic_pro_clinicpro_docker_entrypoint_sh__entry", "relation": "contains", "confidence": "EXTRACTED", "source_file": "docker/entrypoint.sh", "source_location": "L1", "weight": 1.0}]}
File diff suppressed because one or more lines are too long
@@ -0,0 +1 @@
{"nodes": [{"id": "users_hamed_pj_my_pj_clinic_pro_clinicpro_src_payment_gateway_mockgateway_php", "label": "MockGateway.php", "file_type": "code", "source_file": "src/Payment/Gateway/MockGateway.php", "source_location": "L1"}, {"id": "gateway_mockgateway_mockgateway", "label": "MockGateway", "file_type": "code", "source_file": "src/Payment/Gateway/MockGateway.php", "source_location": "L5"}, {"id": "paymentgatewayinterface", "label": "PaymentGatewayInterface", "file_type": "code", "source_file": "", "source_location": ""}, {"id": "gateway_mockgateway_mockgateway_getname", "label": ".getName()", "file_type": "code", "source_file": "src/Payment/Gateway/MockGateway.php", "source_location": "L7"}, {"id": "gateway_mockgateway_mockgateway_initiate", "label": ".initiate()", "file_type": "code", "source_file": "src/Payment/Gateway/MockGateway.php", "source_location": "L9"}, {"id": "paymentinitresult", "label": "PaymentInitResult", "file_type": "code", "source_file": "src/Payment/Gateway/MockGateway.php", "source_location": "L9"}, {"id": "gateway_mockgateway_mockgateway_verify", "label": ".verify()", "file_type": "code", "source_file": "src/Payment/Gateway/MockGateway.php", "source_location": "L15"}, {"id": "paymentverifyresult", "label": "PaymentVerifyResult", "file_type": "code", "source_file": "src/Payment/Gateway/MockGateway.php", "source_location": "L15"}], "edges": [{"source": "users_hamed_pj_my_pj_clinic_pro_clinicpro_src_payment_gateway_mockgateway_php", "target": "gateway_mockgateway_mockgateway", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/Payment/Gateway/MockGateway.php", "source_location": "L5", "weight": 1.0}, {"source": "gateway_mockgateway_mockgateway", "target": "paymentgatewayinterface", "relation": "implements", "confidence": "EXTRACTED", "source_file": "src/Payment/Gateway/MockGateway.php", "source_location": "L5", "weight": 1.0}, {"source": "gateway_mockgateway_mockgateway", "target": "gateway_mockgateway_mockgateway_getname", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/Payment/Gateway/MockGateway.php", "source_location": "L7", "weight": 1.0}, {"source": "gateway_mockgateway_mockgateway", "target": "gateway_mockgateway_mockgateway_initiate", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/Payment/Gateway/MockGateway.php", "source_location": "L9", "weight": 1.0}, {"source": "gateway_mockgateway_mockgateway_initiate", "target": "paymentinitresult", "relation": "references", "confidence": "EXTRACTED", "source_file": "src/Payment/Gateway/MockGateway.php", "source_location": "L9", "weight": 1.0, "context": "return_type"}, {"source": "gateway_mockgateway_mockgateway", "target": "gateway_mockgateway_mockgateway_verify", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/Payment/Gateway/MockGateway.php", "source_location": "L15", "weight": 1.0}, {"source": "gateway_mockgateway_mockgateway_verify", "target": "paymentverifyresult", "relation": "references", "confidence": "EXTRACTED", "source_file": "src/Payment/Gateway/MockGateway.php", "source_location": "L15", "weight": 1.0, "context": "return_type"}], "raw_calls": []}
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -0,0 +1 @@
{"nodes": [{"id": "users_hamed_pj_my_pj_clinic_pro_clinicpro_docs_audit_backlog_md", "label": "audit-backlog.md", "file_type": "document", "source_file": "docs/audit-backlog.md", "source_location": "L1"}, {"id": "docs_audit_backlog_backend_audit_backlog_clinicpro", "label": "Backend Audit Backlog \u2014 ClinicPro", "file_type": "document", "source_file": "docs/audit-backlog.md", "source_location": "L1"}, {"id": "docs_audit_backlog_done_committed_on_backend_audit", "label": "\u2705 DONE (committed on backend-audit)", "file_type": "document", "source_file": "docs/audit-backlog.md", "source_location": "L12"}, {"id": "docs_audit_backlog_critical", "label": "\u2610 CRITICAL", "file_type": "document", "source_file": "docs/audit-backlog.md", "source_location": "L30"}, {"id": "docs_audit_backlog_high", "label": "\u2610 HIGH", "file_type": "document", "source_file": "docs/audit-backlog.md", "source_location": "L36"}, {"id": "docs_audit_backlog_medium", "label": "\u2610 MEDIUM", "file_type": "document", "source_file": "docs/audit-backlog.md", "source_location": "L53"}, {"id": "docs_audit_backlog_low", "label": "\u2610 LOW", "file_type": "document", "source_file": "docs/audit-backlog.md", "source_location": "L81"}, {"id": "docs_audit_backlog_epics_design_debt_cross_repo_defer_do_not_quick_fix", "label": "\u2610 EPICS (design debt \u2014 cross-repo, defer; do NOT quick-fix)", "file_type": "document", "source_file": "docs/audit-backlog.md", "source_location": "L102"}, {"id": "docs_audit_backlog_tallies", "label": "Tallies", "file_type": "document", "source_file": "docs/audit-backlog.md", "source_location": "L115"}, {"id": "docs_audit_backlog_progress_this_audit_session", "label": "Progress (this audit session)", "file_type": "document", "source_file": "docs/audit-backlog.md", "source_location": "L119"}], "edges": [{"source": "users_hamed_pj_my_pj_clinic_pro_clinicpro_docs_audit_backlog_md", "target": "docs_audit_backlog_backend_audit_backlog_clinicpro", "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/audit-backlog.md", "source_location": "L1", "weight": 1.0}, {"source": "docs_audit_backlog_backend_audit_backlog_clinicpro", "target": "docs_audit_backlog_done_committed_on_backend_audit", "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/audit-backlog.md", "source_location": "L12", "weight": 1.0}, {"source": "docs_audit_backlog_backend_audit_backlog_clinicpro", "target": "docs_audit_backlog_critical", "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/audit-backlog.md", "source_location": "L30", "weight": 1.0}, {"source": "docs_audit_backlog_backend_audit_backlog_clinicpro", "target": "docs_audit_backlog_high", "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/audit-backlog.md", "source_location": "L36", "weight": 1.0}, {"source": "docs_audit_backlog_backend_audit_backlog_clinicpro", "target": "docs_audit_backlog_medium", "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/audit-backlog.md", "source_location": "L53", "weight": 1.0}, {"source": "docs_audit_backlog_backend_audit_backlog_clinicpro", "target": "docs_audit_backlog_low", "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/audit-backlog.md", "source_location": "L81", "weight": 1.0}, {"source": "docs_audit_backlog_backend_audit_backlog_clinicpro", "target": "docs_audit_backlog_epics_design_debt_cross_repo_defer_do_not_quick_fix", "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/audit-backlog.md", "source_location": "L102", "weight": 1.0}, {"source": "docs_audit_backlog_backend_audit_backlog_clinicpro", "target": "docs_audit_backlog_tallies", "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/audit-backlog.md", "source_location": "L115", "weight": 1.0}, {"source": "docs_audit_backlog_backend_audit_backlog_clinicpro", "target": "docs_audit_backlog_progress_this_audit_session", "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/audit-backlog.md", "source_location": "L119", "weight": 1.0}], "input_tokens": 0, "output_tokens": 0}
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -0,0 +1 @@
{"nodes": [{"id": "users_hamed_pj_my_pj_clinic_pro_clinicpro_src_config_entity_siteconfig_php", "label": "SiteConfig.php", "file_type": "code", "source_file": "src/Config/Entity/SiteConfig.php", "source_location": "L1"}, {"id": "entity_siteconfig_siteconfig", "label": "SiteConfig", "file_type": "code", "source_file": "src/Config/Entity/SiteConfig.php", "source_location": "L8"}, {"id": "entity_siteconfig_siteconfig_construct", "label": ".__construct()", "file_type": "code", "source_file": "src/Config/Entity/SiteConfig.php", "source_location": "L22"}, {"id": "entity_siteconfig_siteconfig_getkey", "label": ".getKey()", "file_type": "code", "source_file": "src/Config/Entity/SiteConfig.php", "source_location": "L29"}, {"id": "entity_siteconfig_siteconfig_getvalue", "label": ".getValue()", "file_type": "code", "source_file": "src/Config/Entity/SiteConfig.php", "source_location": "L30"}, {"id": "entity_siteconfig_siteconfig_setvalue", "label": ".setValue()", "file_type": "code", "source_file": "src/Config/Entity/SiteConfig.php", "source_location": "L32"}, {"id": "self", "label": "self", "file_type": "code", "source_file": "src/Config/Entity/SiteConfig.php", "source_location": "L32"}], "edges": [{"source": "users_hamed_pj_my_pj_clinic_pro_clinicpro_src_config_entity_siteconfig_php", "target": "mapping", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "src/Config/Entity/SiteConfig.php", "source_location": "L5", "weight": 1.0}, {"source": "users_hamed_pj_my_pj_clinic_pro_clinicpro_src_config_entity_siteconfig_php", "target": "siteconfigrepository", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "src/Config/Entity/SiteConfig.php", "source_location": "L7", "weight": 1.0}, {"source": "users_hamed_pj_my_pj_clinic_pro_clinicpro_src_config_entity_siteconfig_php", "target": "entity_siteconfig_siteconfig", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/Config/Entity/SiteConfig.php", "source_location": "L8", "weight": 1.0}, {"source": "entity_siteconfig_siteconfig", "target": "entity_siteconfig_siteconfig_construct", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/Config/Entity/SiteConfig.php", "source_location": "L22", "weight": 1.0}, {"source": "entity_siteconfig_siteconfig", "target": "entity_siteconfig_siteconfig_getkey", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/Config/Entity/SiteConfig.php", "source_location": "L29", "weight": 1.0}, {"source": "entity_siteconfig_siteconfig", "target": "entity_siteconfig_siteconfig_getvalue", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/Config/Entity/SiteConfig.php", "source_location": "L30", "weight": 1.0}, {"source": "entity_siteconfig_siteconfig", "target": "entity_siteconfig_siteconfig_setvalue", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/Config/Entity/SiteConfig.php", "source_location": "L32", "weight": 1.0}, {"source": "entity_siteconfig_siteconfig_setvalue", "target": "self", "relation": "references", "confidence": "EXTRACTED", "source_file": "src/Config/Entity/SiteConfig.php", "source_location": "L32", "weight": 1.0, "context": "return_type"}], "raw_calls": [{"caller_nid": "entity_siteconfig_siteconfig_construct", "callee": "time", "is_member_call": false, "source_file": "/Users/hamed/pj/my_pj/clinic_pro/clinicpro/src/Config/Entity/SiteConfig.php", "source_location": "L26", "receiver": null}, {"caller_nid": "entity_siteconfig_siteconfig_setvalue", "callee": "time", "is_member_call": false, "source_file": "/Users/hamed/pj/my_pj/clinic_pro/clinicpro/src/Config/Entity/SiteConfig.php", "source_location": "L35", "receiver": null}]}
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -0,0 +1 @@
{"nodes": [{"id": "users_hamed_pj_my_pj_clinic_pro_clinicpro_src_sms_entity_smslog_php", "label": "SmsLog.php", "file_type": "code", "source_file": "src/Sms/Entity/SmsLog.php", "source_location": "L1"}, {"id": "entity_smslog_smslog", "label": "SmsLog", "file_type": "code", "source_file": "src/Sms/Entity/SmsLog.php", "source_location": "L9"}, {"id": "entity_smslog_smslog_construct", "label": ".__construct()", "file_type": "code", "source_file": "src/Sms/Entity/SmsLog.php", "source_location": "L63"}, {"id": "entity_smslog_smslog_settemplateuuid", "label": ".setTemplateUuid()", "file_type": "code", "source_file": "src/Sms/Entity/SmsLog.php", "source_location": "L74"}, {"id": "self", "label": "self", "file_type": "code", "source_file": "src/Sms/Entity/SmsLog.php", "source_location": "L74"}, {"id": "entity_smslog_smslog_gettag", "label": ".getTag()", "file_type": "code", "source_file": "src/Sms/Entity/SmsLog.php", "source_location": "L75"}, {"id": "entity_smslog_smslog_settag", "label": ".setTag()", "file_type": "code", "source_file": "src/Sms/Entity/SmsLog.php", "source_location": "L76"}, {"id": "entity_smslog_smslog_toarray", "label": ".toArray()", "file_type": "code", "source_file": "src/Sms/Entity/SmsLog.php", "source_location": "L78"}], "edges": [{"source": "users_hamed_pj_my_pj_clinic_pro_clinicpro_src_sms_entity_smslog_php", "target": "mapping", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "src/Sms/Entity/SmsLog.php", "source_location": "L5", "weight": 1.0}, {"source": "users_hamed_pj_my_pj_clinic_pro_clinicpro_src_sms_entity_smslog_php", "target": "smslogrepository", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "src/Sms/Entity/SmsLog.php", "source_location": "L6", "weight": 1.0}, {"source": "users_hamed_pj_my_pj_clinic_pro_clinicpro_src_sms_entity_smslog_php", "target": "uuid", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "src/Sms/Entity/SmsLog.php", "source_location": "L7", "weight": 1.0}, {"source": "users_hamed_pj_my_pj_clinic_pro_clinicpro_src_sms_entity_smslog_php", "target": "entity_smslog_smslog", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/Sms/Entity/SmsLog.php", "source_location": "L9", "weight": 1.0}, {"source": "entity_smslog_smslog", "target": "entity_smslog_smslog_construct", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/Sms/Entity/SmsLog.php", "source_location": "L63", "weight": 1.0}, {"source": "entity_smslog_smslog", "target": "entity_smslog_smslog_settemplateuuid", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/Sms/Entity/SmsLog.php", "source_location": "L74", "weight": 1.0}, {"source": "entity_smslog_smslog_settemplateuuid", "target": "self", "relation": "references", "confidence": "EXTRACTED", "source_file": "src/Sms/Entity/SmsLog.php", "source_location": "L74", "weight": 1.0, "context": "return_type"}, {"source": "entity_smslog_smslog", "target": "entity_smslog_smslog_gettag", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/Sms/Entity/SmsLog.php", "source_location": "L75", "weight": 1.0}, {"source": "entity_smslog_smslog", "target": "entity_smslog_smslog_settag", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/Sms/Entity/SmsLog.php", "source_location": "L76", "weight": 1.0}, {"source": "entity_smslog_smslog_settag", "target": "self", "relation": "references", "confidence": "EXTRACTED", "source_file": "src/Sms/Entity/SmsLog.php", "source_location": "L76", "weight": 1.0, "context": "return_type"}, {"source": "entity_smslog_smslog", "target": "entity_smslog_smslog_toarray", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/Sms/Entity/SmsLog.php", "source_location": "L78", "weight": 1.0}], "raw_calls": [{"caller_nid": "entity_smslog_smslog_construct", "callee": "toRfc4122", "is_member_call": true, "source_file": "/Users/hamed/pj/my_pj/clinic_pro/clinicpro/src/Sms/Entity/SmsLog.php", "source_location": "L65", "receiver": null}, {"caller_nid": "entity_smslog_smslog_construct", "callee": "Uuid", "is_member_call": false, "source_file": "/Users/hamed/pj/my_pj/clinic_pro/clinicpro/src/Sms/Entity/SmsLog.php", "source_location": "L65", "receiver": null}, {"caller_nid": "entity_smslog_smslog_construct", "callee": "time", "is_member_call": false, "source_file": "/Users/hamed/pj/my_pj/clinic_pro/clinicpro/src/Sms/Entity/SmsLog.php", "source_location": "L71", "receiver": null}]}
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -0,0 +1 @@
{"nodes": [{"id": "users_hamed_pj_my_pj_clinic_pro_clinicpro_tests_doctrine_object_manager_php", "label": "doctrine_object_manager.php", "file_type": "code", "source_file": "tests/doctrine_object_manager.php", "source_location": "L1"}], "edges": [{"source": "users_hamed_pj_my_pj_clinic_pro_clinicpro_tests_doctrine_object_manager_php", "target": "kernel", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/doctrine_object_manager.php", "source_location": "L6", "weight": 1.0}, {"source": "users_hamed_pj_my_pj_clinic_pro_clinicpro_tests_doctrine_object_manager_php", "target": "dotenv", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/doctrine_object_manager.php", "source_location": "L7", "weight": 1.0}], "raw_calls": []}
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -0,0 +1 @@
{"nodes": [{"id": "users_hamed_pj_my_pj_clinic_pro_clinicpro_config_reference_php", "label": "reference.php", "file_type": "code", "source_file": "config/reference.php", "source_location": "L1"}, {"id": "config_reference_app", "label": "App", "file_type": "code", "source_file": "config/reference.php", "source_location": "L1563"}, {"id": "config_reference_app_config", "label": ".config()", "file_type": "code", "source_file": "config/reference.php", "source_location": "L1570"}, {"id": "config_reference_routes", "label": "Routes", "file_type": "code", "source_file": "config/reference.php", "source_location": "L1643"}, {"id": "config_reference_routes_config", "label": ".config()", "file_type": "code", "source_file": "config/reference.php", "source_location": "L1650"}], "edges": [{"source": "users_hamed_pj_my_pj_clinic_pro_clinicpro_config_reference_php", "target": "paramconfigurator", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "config/reference.php", "source_location": "L7", "weight": 1.0}, {"source": "users_hamed_pj_my_pj_clinic_pro_clinicpro_config_reference_php", "target": "config_reference_app", "relation": "contains", "confidence": "EXTRACTED", "source_file": "config/reference.php", "source_location": "L1563", "weight": 1.0}, {"source": "config_reference_app", "target": "config_reference_app_config", "relation": "method", "confidence": "EXTRACTED", "source_file": "config/reference.php", "source_location": "L1570", "weight": 1.0}, {"source": "users_hamed_pj_my_pj_clinic_pro_clinicpro_config_reference_php", "target": "config_reference_routes", "relation": "contains", "confidence": "EXTRACTED", "source_file": "config/reference.php", "source_location": "L1643", "weight": 1.0}, {"source": "config_reference_routes", "target": "config_reference_routes_config", "relation": "method", "confidence": "EXTRACTED", "source_file": "config/reference.php", "source_location": "L1650", "weight": 1.0}], "raw_calls": [{"caller_nid": "config_reference_app_config", "callee": "AppReference", "is_member_call": false, "source_file": "/Users/hamed/pj/my_pj/clinic_pro/clinicpro/config/reference.php", "source_location": "L1573", "receiver": null}]}
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -0,0 +1 @@
{"nodes": [{"id": "users_hamed_pj_my_pj_clinic_pro_clinicpro_migrations_version20260628153625_php", "label": "Version20260628153625.php", "file_type": "code", "source_file": "migrations/Version20260628153625.php", "source_location": "L1"}, {"id": "migrations_version20260628153625_version20260628153625", "label": "Version20260628153625", "file_type": "code", "source_file": "migrations/Version20260628153625.php", "source_location": "L13"}, {"id": "abstractmigration", "label": "AbstractMigration", "file_type": "code", "source_file": "", "source_location": ""}, {"id": "migrations_version20260628153625_version20260628153625_getdescription", "label": ".getDescription()", "file_type": "code", "source_file": "migrations/Version20260628153625.php", "source_location": "L15"}, {"id": "migrations_version20260628153625_version20260628153625_up", "label": ".up()", "file_type": "code", "source_file": "migrations/Version20260628153625.php", "source_location": "L20"}, {"id": "schema", "label": "Schema", "file_type": "code", "source_file": "migrations/Version20260628153625.php", "source_location": "L20"}, {"id": "migrations_version20260628153625_version20260628153625_down", "label": ".down()", "file_type": "code", "source_file": "migrations/Version20260628153625.php", "source_location": "L26"}], "edges": [{"source": "users_hamed_pj_my_pj_clinic_pro_clinicpro_migrations_version20260628153625_php", "target": "schema", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "migrations/Version20260628153625.php", "source_location": "L7", "weight": 1.0}, {"source": "users_hamed_pj_my_pj_clinic_pro_clinicpro_migrations_version20260628153625_php", "target": "abstractmigration", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "migrations/Version20260628153625.php", "source_location": "L8", "weight": 1.0}, {"source": "users_hamed_pj_my_pj_clinic_pro_clinicpro_migrations_version20260628153625_php", "target": "migrations_version20260628153625_version20260628153625", "relation": "contains", "confidence": "EXTRACTED", "source_file": "migrations/Version20260628153625.php", "source_location": "L13", "weight": 1.0}, {"source": "migrations_version20260628153625_version20260628153625", "target": "abstractmigration", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "migrations/Version20260628153625.php", "source_location": "L13", "weight": 1.0}, {"source": "migrations_version20260628153625_version20260628153625", "target": "migrations_version20260628153625_version20260628153625_getdescription", "relation": "method", "confidence": "EXTRACTED", "source_file": "migrations/Version20260628153625.php", "source_location": "L15", "weight": 1.0}, {"source": "migrations_version20260628153625_version20260628153625", "target": "migrations_version20260628153625_version20260628153625_up", "relation": "method", "confidence": "EXTRACTED", "source_file": "migrations/Version20260628153625.php", "source_location": "L20", "weight": 1.0}, {"source": "migrations_version20260628153625_version20260628153625_up", "target": "schema", "relation": "references", "confidence": "EXTRACTED", "source_file": "migrations/Version20260628153625.php", "source_location": "L20", "weight": 1.0, "context": "parameter_type"}, {"source": "migrations_version20260628153625_version20260628153625", "target": "migrations_version20260628153625_version20260628153625_down", "relation": "method", "confidence": "EXTRACTED", "source_file": "migrations/Version20260628153625.php", "source_location": "L26", "weight": 1.0}, {"source": "migrations_version20260628153625_version20260628153625_down", "target": "schema", "relation": "references", "confidence": "EXTRACTED", "source_file": "migrations/Version20260628153625.php", "source_location": "L26", "weight": 1.0, "context": "parameter_type"}], "raw_calls": [{"caller_nid": "migrations_version20260628153625_version20260628153625_up", "callee": "addSql", "is_member_call": true, "source_file": "/Users/hamed/pj/my_pj/clinic_pro/clinicpro/migrations/Version20260628153625.php", "source_location": "L23", "receiver": null}, {"caller_nid": "migrations_version20260628153625_version20260628153625_down", "callee": "addSql", "is_member_call": true, "source_file": "/Users/hamed/pj/my_pj/clinic_pro/clinicpro/migrations/Version20260628153625.php", "source_location": "L29", "receiver": null}]}
File diff suppressed because one or more lines are too long
@@ -0,0 +1 @@
{"nodes": [{"id": "users_hamed_pj_my_pj_clinic_pro_clinicpro_docker_healthcheck_sh", "label": "healthcheck.sh", "file_type": "code", "source_file": "docker/healthcheck.sh", "source_location": "L1", "metadata": {"language": "bash", "kind": "file"}}, {"id": "users_hamed_pj_my_pj_clinic_pro_clinicpro_docker_healthcheck_sh__entry", "label": "healthcheck.sh script", "file_type": "code", "source_file": "docker/healthcheck.sh", "source_location": "L1", "metadata": {"language": "bash", "kind": "bash_entrypoint"}}], "edges": [{"source": "users_hamed_pj_my_pj_clinic_pro_clinicpro_docker_healthcheck_sh", "target": "users_hamed_pj_my_pj_clinic_pro_clinicpro_docker_healthcheck_sh__entry", "relation": "contains", "confidence": "EXTRACTED", "source_file": "docker/healthcheck.sh", "source_location": "L1", "weight": 1.0}]}
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long

Some files were not shown because too many files have changed in this diff Show More