Add JSON files for Payment Gateway Interface and API documentation updates
- Created a new JSON file for the PaymentGatewayInterface.php, detailing its methods and return types. - Added a JSON file for payment.md, documenting various API endpoints and their parameters, responses, and errors. - Introduced a JSON file for fix-admin-modal-and-calendar.md, outlining issues and solutions related to admin modal and calendar functionalities.
This commit is contained in:
@@ -0,0 +1,157 @@
|
||||
# ریسپانسیو کردن پنل ادمین برای موبایل (iPhone 8 / ۳۷۵px)
|
||||
|
||||
## پروژه
|
||||
|
||||
`clinicpro` (admin frontend — React 19 + `assets/admin/styles.css`)
|
||||
|
||||
## زمینه
|
||||
|
||||
پنل `/admin` روی صفحههای کوچک (مثل iPhone 8 عرض ۳۷۵px) بههم میریزد و افقی اسکرول میشود. زیرساخت ریسپانسیو **تا حدی هست** (viewport meta درست است، drawer سایدبار + scrim در `@media (max-width: 860px)`، `.settings-grid`/`.stat-grid` در media collapse میشوند)، ولی **بیاثر شده** چون در بیشتر صفحهها `grid-template-columns` بهصورت **inline `style={{}}`** روی المانها نوشته شده و **inline style بر قوانین `@media` در CSS اولویت دارد** → گریدها روی موبایل جمع نمیشوند و از عرض صفحه بیرون میزنند.
|
||||
|
||||
نمونهٔ واقعی: `PaymentsPage.tsx` → `<div className="stat-grid" style={{ gridTemplateColumns: 'repeat(4,1fr)' }}>`؛ روی ۳۷۵px میشود ۴ ستون ۹۰pxای که overflow میدهد. `.stat-grid` در CSS در `@media (max-width:560px)` به `1fr 1fr` میرود ولی inline آن را باطل میکند.
|
||||
|
||||
## مشکل / هدف
|
||||
|
||||
پنل ادمین روی ۳۷۵px بدون اسکرول افقی و خوانا شود:
|
||||
1. گریدهای inline ثابت که media را میشکنند اصلاح شوند (بهترین راه: `repeat(auto-fit, minmax(...))` که بدون media خودکار جمع میشود، یا حذف inline و واگذاری به CSS).
|
||||
2. breakpoint منوی موبایل (hamburger) با drawer یکسان شود.
|
||||
3. جدولها و محتوای عریض داخل کانتینر اسکرولشونده باشند، نه کل صفحه.
|
||||
4. گارد سراسری ضد-overflow افقی.
|
||||
|
||||
## فایلهای مرتبط
|
||||
|
||||
| فایل | نقش |
|
||||
|------|-----|
|
||||
| `clinicpro/assets/admin/styles.css` | `.stat-grid` auto-fit، breakpoint drawer، گارد overflow، paddingهای موبایل |
|
||||
| `clinicpro/assets/admin/components/layout/Topbar.tsx` | هماهنگی breakpoint hamburger با CSS |
|
||||
| صفحههای با گرید inline (لیست پایین) | حذف/ریسپانسیو کردن `gridTemplateColumns` inline |
|
||||
|
||||
**صفحهها/کامپوننتهای دارای `gridTemplateColumns` inline** (`grep -rn "gridTemplateColumns:" assets/admin`):
|
||||
`PaymentsPage`, `DoctorsPage`, `StaffPage`, `FinancialReportPage`, `RepresentationFinancePage`, `RepresentationSettlementPage`, `DashboardPage` (چند مورد)، `ClinicDetailPage` (`1fr 300px`)، `DoctorDetailPage` (`1fr 1fr auto`)، `AppointmentsPage` (`1fr auto`)، `SettingsPage` (`1fr auto`)، `ServiceTariffModal` (`150px 1fr auto`)، `DashboardPage` ردیف `160px 1fr 52px`. (`PersianCalendar` گریدهای `repeat(7,1fr)`/`repeat(3,1fr)` داخل popover کوچکاند و مشکلساز نیستند — دست نزن.)
|
||||
|
||||
## وضعیت فعلی
|
||||
|
||||
### CSS (`assets/admin/styles.css`)
|
||||
|
||||
```css
|
||||
:root { --sidebar-w: 252px; }
|
||||
.main { flex: 1; min-width: 0; margin-right: var(--sidebar-w); }
|
||||
|
||||
.stat-grid { /* base بدون grid-template-columns صریح؟ inlineها آن را ست میکنند */ }
|
||||
|
||||
.scrim { display: none; }
|
||||
@media (max-width: 1080px) {
|
||||
.stat-grid { grid-template-columns: repeat(3, 1fr); }
|
||||
.dash-main, .dash-3 { grid-template-columns: 1fr; }
|
||||
}
|
||||
@media (max-width: 860px) { /* ← drawer فقط تا 860 */
|
||||
.main { margin-right: 0 !important; }
|
||||
.sidebar { transform: translateX(100%); box-shadow: var(--shadow-lg); }
|
||||
.app[data-mobile-open="true"] .sidebar { transform: translateX(0); width: var(--sidebar-w); }
|
||||
.app[data-mobile-open="true"] .scrim { display: block; position: fixed; inset: 0; /* ... */ }
|
||||
.topbar-search { display: none; }
|
||||
.grid-2 { grid-template-columns: 1fr; }
|
||||
}
|
||||
@media (max-width: 560px) { .stat-grid { grid-template-columns: 1fr 1fr; } }
|
||||
```
|
||||
|
||||
### Topbar breakpoint (ناهماهنگ با CSS)
|
||||
|
||||
```tsx
|
||||
// assets/admin/components/layout/Topbar.tsx:26
|
||||
onClick={typeof window !== 'undefined' && window.innerWidth < 1024 ? onMobileMenuOpen : toggleSidebar}
|
||||
```
|
||||
`< 1024` منوی موبایل را باز میکند، ولی drawer CSS فقط `≤ 860` است → در بازهٔ ۸۶۱–۱۰۲۳ hamburger «باز» میکند اما سایدبار حالت drawer ندارد (منطقهٔ خراب).
|
||||
|
||||
### نمونهٔ گرید inline (تکرارشده در ۲۰ فایل)
|
||||
|
||||
```tsx
|
||||
<div className="stat-grid" style={{ gridTemplateColumns: 'repeat(4,1fr)' }}> // PaymentsPage:116
|
||||
<div className="stat-grid" style={{ gridTemplateColumns: 'repeat(5,1fr)' }}> // DoctorsPage:212
|
||||
<div style={{ display: 'grid', gridTemplateColumns: '1fr 300px', gap: 'var(--gap)' }}> // ClinicDetailPage:784
|
||||
```
|
||||
|
||||
## وظایف
|
||||
|
||||
### ۱. `.stat-grid` را ذاتاً ریسپانسیو کن (CSS)
|
||||
|
||||
در `styles.css` به `.stat-grid` یک base با `auto-fit` بده تا **بدون نیاز به media و بدون تأثیرپذیری از تعداد ستون** خودش جمع شود:
|
||||
|
||||
```css
|
||||
.stat-grid {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
|
||||
gap: var(--gap);
|
||||
}
|
||||
```
|
||||
و قوانین media مربوط به `.stat-grid` (خطوط ۷۰۴ و ۷۲۰ فعلی) را **حذف** کن (دیگر لازم نیستند؛ auto-fit همه را پوشش میدهد).
|
||||
|
||||
### ۲. حذف `gridTemplateColumns` inline از stat-gridها
|
||||
|
||||
در همهٔ صفحههایی که `<div className="stat-grid" style={{ gridTemplateColumns: 'repeat(N,1fr)', ... }}>` دارند، فقط **کلید `gridTemplateColumns` را از inline style حذف کن** (بقیهٔ propها مثل `marginBottom` بمانند). با تسک ۱، خودکار ریسپانسیو میشوند.
|
||||
|
||||
فایلها: `PaymentsPage`, `DoctorsPage`, `StaffPage`, `FinancialReportPage`, `RepresentationFinancePage`, `RepresentationSettlementPage`, `DashboardPage` (خطوط ۹۵۰/۱۰۵۶/۱۰۷۲).
|
||||
|
||||
مثال:
|
||||
```tsx
|
||||
// قبل
|
||||
<div className="stat-grid" style={{ gridTemplateColumns: 'repeat(4,1fr)' }}>
|
||||
// بعد
|
||||
<div className="stat-grid">
|
||||
// اگر propهای دیگری بود:
|
||||
<div className="stat-grid" style={{ marginBottom: 'var(--gap)' }}>
|
||||
```
|
||||
|
||||
### ۳. لایههای دو/سهستونهٔ inline → ریسپانسیو
|
||||
|
||||
برای گریدهای غیرِ stat که ستون ثابت دارند و باید روی موبایل عمودی شوند، بهجای inline از کلاس ریسپانسیو استفاده کن. یک کلاس عمومی در CSS اضافه کن:
|
||||
|
||||
```css
|
||||
/* لایهٔ دوستونه که زیر ۸۶۰ عمودی میشود */
|
||||
.split-2 { display: grid; grid-template-columns: 1fr minmax(0, 320px); gap: var(--gap); align-items: start; }
|
||||
@media (max-width: 860px) { .split-2 { grid-template-columns: 1fr; } }
|
||||
|
||||
/* ردیف فیلد + اکشن که زیر ۶۰۰ عمودی میشود */
|
||||
.form-row { display: grid; grid-template-columns: 1fr auto; gap: 12px; align-items: end; }
|
||||
@media (max-width: 600px) { .form-row { grid-template-columns: 1fr; } }
|
||||
```
|
||||
|
||||
سپس:
|
||||
- `ClinicDetailPage:784` (`1fr 300px`) → `className="split-2"` (حذف inline grid).
|
||||
- `DoctorDetailPage:1107` (`1fr 1fr auto`) و `AppointmentsPage:409` (`1fr auto`) و `SettingsPage:431` (`1fr auto`) و `ServiceTariffModal:95` (`150px 1fr auto`) → از `form-row` استفاده کن یا اگر ساختار خاص است، همان inline را با wrap در media نگهدار ولی مطمئن شو زیر ۶۰۰ تکستون میشود. (برای المانهای inline که کلاسگذاری سخت است، میتوانی `gridTemplateColumns` را با `repeat(auto-fit, minmax(140px, 1fr))` جایگزین کنی تا خودکار بشکند.)
|
||||
- `DashboardPage:119` (`160px 1fr 52px`) و `DashboardPage:514` (`quick-grid` `repeat(3,1fr)`): `quick-grid` را هم مثل stat به auto-fit ببر؛ ردیف ۱۶۰px را زیر ۵۶۰ به `1fr auto` یا wrap تبدیل کن.
|
||||
|
||||
### ۴. هماهنگی breakpoint منوی موبایل
|
||||
|
||||
drawer را با hamburger یکسان کن. **سریعترین راه:** در `styles.css` بلوک `@media (max-width: 860px)` را به `@media (max-width: 1024px)` تغییر بده (drawer/scrim/main-margin/topbar-search همگی زیر ۱۰۲۴). این با `window.innerWidth < 1024` در `Topbar` همخوان میشود و منطقهٔ خرابِ ۸۶۱–۱۰۲۳ رفع میشود.
|
||||
|
||||
> اگر ترجیح میدهی سایدبار روی تبلت بماند، بهجای آن `1024` در `Topbar.tsx` را به `860` تغییر بده. یکی از دو راه — نه هر دو. (توصیه: drawer تا ۱۰۲۴.)
|
||||
|
||||
### ۵. گارد سراسری ضد-overflow افقی + padding موبایل
|
||||
|
||||
در `styles.css`:
|
||||
```css
|
||||
html, body { max-width: 100%; overflow-x: hidden; }
|
||||
.main { min-width: 0; } /* اجازهٔ کوچکشدن flex child */
|
||||
|
||||
@media (max-width: 560px) {
|
||||
.page, .main > * { padding-left: 12px; padding-right: 12px; } /* اگر padding بزرگتری دارند */
|
||||
.page-head, .toolbar { flex-wrap: wrap; gap: 10px; } /* هدر/تولبار در چند خط */
|
||||
}
|
||||
```
|
||||
(کلاسهای واقعی padding صفحه را از `styles.css` پیدا کن — اگر نام `.page`/`.content` فرق دارد، همان را هدف بگیر.)
|
||||
|
||||
### ۶. جدولها داخل کانتینر اسکرولشونده
|
||||
|
||||
هر `<table>` عریض باید داخل `.table-wrap` (که `overflow-x: auto` دارد) باشد تا فقط جدول اسکرول شود نه کل صفحه. فایلهای دارای `<table>` بدون wrap را بررسی و در صورت نبودِ wrapper، دور جدول `<div className="table-wrap">` بگذار:
|
||||
`PreRegistrationsPage`, `UsersPage`, `ClinicsPage`, `RepresentationFinancePage`, `AppointmentsPage`, `RepresentationSettlementPage`, `AdminSubscriptionPage`, `DoctorsPage`, `SmsWalletPage`, `RepresentationProfilePage`. (اگر از کامپوننت `DataTable` مشترک استفاده میکنند و آن خودش wrap دارد، نیازی نیست — اول بررسی کن.)
|
||||
|
||||
## نکات مهم
|
||||
|
||||
- **چرا inline بد است:** `style={{gridTemplateColumns}}` روی المان، specificity بالاتر از هر `@media` در stylesheet دارد؛ پس یا حذف شود یا خودش `auto-fit`/ریسپانسیو باشد. این هستهٔ باگ است.
|
||||
- `auto-fit + minmax` بهترین انتخاب برای stat/quick گریدهاست: بدون media، با هر تعداد کارت، روی هر عرض درست جمع میشود.
|
||||
- **RTL**: از `padding-inline`/`margin-inline` و رفتار موجود پیروی کن؛ چیزی که RTL را بشکند اضافه نکن.
|
||||
- کلاس CSS جدید فقط در حد `.split-2`/`.form-row` (یا معادل)؛ کتابخانهٔ CSS جدید نصب نکن.
|
||||
- بعد از تغییر: `ddev exec yarn dev` و `ddev exec npx tsc --noEmit` بدون خطا؛ سپس در DevTools با عرض **375px (iPhone 8)** این صفحهها را چک کن: Dashboard، Payments، Doctors، Appointments، Settings، یک Detail (Clinic/Doctor) — نباید اسکرول افقی داشته باشند و کارتها/جدولها باید درست بچینند.
|
||||
- تغییر فقط frontend/CSS است؛ backend و docs تغییری ندارند.
|
||||
- اینها فایلهای `.tsx`/CSS پنلاند؛ اگر جای دیگری هم `gridTemplateColumns` inline ثابت دیدی که overflow میدهد، همان الگو را اعمال کن.
|
||||
@@ -207,7 +207,7 @@ function PlansTab() {
|
||||
{plan.periods.length === 0 ? (
|
||||
<div style={{ padding: '20px 16px', color: 'var(--text-3)', fontSize: 13 }}>هنوز دورهای تعریف نشده</div>
|
||||
) : (
|
||||
<table style={{ width: '100%', borderCollapse: 'collapse', fontSize: 13 }}>
|
||||
<div className="table-wrap"><table style={{ width: '100%', borderCollapse: 'collapse', fontSize: 13 }}>
|
||||
<thead>
|
||||
<tr style={{ borderBottom: '1px solid var(--border)' }}>
|
||||
<th style={{ textAlign: 'right', padding: '8px 16px', color: 'var(--text-3)', fontWeight: 500 }}>دوره</th>
|
||||
@@ -239,7 +239,7 @@ function PlansTab() {
|
||||
</tr>
|
||||
))}
|
||||
</tbody>
|
||||
</table>
|
||||
</table></div>
|
||||
)}
|
||||
</div>
|
||||
))}
|
||||
@@ -382,7 +382,7 @@ function ReportTab() {
|
||||
<div className="card-pad" style={{ color: 'var(--text-3)', textAlign: 'center', padding: '40px 0' }}>هیچ اشتراکی ثبت نشده</div>
|
||||
) : (
|
||||
<>
|
||||
<table style={{ width: '100%', borderCollapse: 'collapse', fontSize: 13 }}>
|
||||
<div className="table-wrap"><table style={{ width: '100%', borderCollapse: 'collapse', fontSize: 13 }}>
|
||||
<thead>
|
||||
<tr style={{ borderBottom: '1px solid var(--border)' }}>
|
||||
<th style={{ textAlign: 'right', padding: '10px 16px', color: 'var(--text-3)', fontWeight: 500 }}>نوع</th>
|
||||
@@ -416,7 +416,7 @@ function ReportTab() {
|
||||
</tr>
|
||||
))}
|
||||
</tbody>
|
||||
</table>
|
||||
</table></div>
|
||||
<div style={{ padding: '12px 16px' }}>
|
||||
<Pagination page={page} total={total} limit={limit} onPageChange={setPage} />
|
||||
</div>
|
||||
|
||||
@@ -199,7 +199,7 @@ function TableView({
|
||||
|
||||
return (
|
||||
<div style={{ overflowX: 'auto' }}>
|
||||
<table style={{ width: '100%', borderCollapse: 'collapse', fontSize: 13 }}>
|
||||
<div className="table-wrap"><table style={{ width: '100%', borderCollapse: 'collapse', fontSize: 13 }}>
|
||||
<thead>
|
||||
<tr style={{ borderBottom: '1px solid var(--border)', background: 'var(--surface-2)' }}>
|
||||
<th style={th}>ردیف</th>
|
||||
@@ -241,7 +241,7 @@ function TableView({
|
||||
</tr>
|
||||
))}
|
||||
</tbody>
|
||||
</table>
|
||||
</table></div>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
@@ -781,7 +781,7 @@ export default function ClinicDetailPage() {
|
||||
</div>
|
||||
|
||||
{/* ── Main grid ── */}
|
||||
<div style={{ display: 'grid', gridTemplateColumns: '1fr 300px', gap: 'var(--gap)', alignItems: 'start' }}>
|
||||
<div className="split-2">
|
||||
|
||||
{/* Left column */}
|
||||
<div style={{ display: 'flex', flexDirection: 'column', gap: 'var(--gap)' }}>
|
||||
|
||||
@@ -135,7 +135,7 @@ export default function ClinicsPage() {
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<table className="t">
|
||||
<div className="table-wrap"><table className="t">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>کلینیک</th>
|
||||
@@ -237,7 +237,7 @@ export default function ClinicsPage() {
|
||||
);
|
||||
})}
|
||||
</tbody>
|
||||
</table>
|
||||
</table></div>
|
||||
|
||||
<Pagination page={page} total={total} limit={limit} onPageChange={setPage} />
|
||||
</div>
|
||||
|
||||
@@ -511,7 +511,7 @@ function AdminDashboard() {
|
||||
<div className="grid-2" style={{ marginBottom: 'var(--gap)' }}>
|
||||
<div className="card card-pad">
|
||||
<div className="card-title-row"><h3 style={{ fontSize: 16 }}>دسترسی سریع</h3></div>
|
||||
<div className="quick-grid" style={{ gridTemplateColumns: 'repeat(3,1fr)' }}>
|
||||
<div className="quick-grid">
|
||||
{quickActions.map(a => (
|
||||
<Link key={a.to} to={a.to} className="quick">
|
||||
<span className="qi" style={{ background: a.bg, color: a.color }}>
|
||||
@@ -947,7 +947,7 @@ function SecretaryDashboard() {
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div className="stat-grid" style={{ gridTemplateColumns: 'repeat(2, 1fr)' }}>
|
||||
<div className="stat-grid">
|
||||
{kpiCards.map(c => (
|
||||
<div key={c.label} className="stat">
|
||||
<div className="ico" style={{ background: c.bg, color: c.color }}>
|
||||
@@ -1053,7 +1053,7 @@ function RepresentationDashboard() {
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<div className="stat-grid" style={{ gridTemplateColumns: 'repeat(4, 1fr)' }}>
|
||||
<div className="stat-grid">
|
||||
{apptCards.map(c => (
|
||||
<div key={c.label} className="stat">
|
||||
<div className="ico" style={{ background: c.bg, color: c.color }}>
|
||||
@@ -1069,7 +1069,7 @@ function RepresentationDashboard() {
|
||||
<div className="card-title-row" style={{ marginBottom: 12 }}>
|
||||
<h3 style={{ fontSize: 16 }}>درآمد نماینده</h3>
|
||||
</div>
|
||||
<div className="stat-grid" style={{ gridTemplateColumns: 'repeat(4, 1fr)' }}>
|
||||
<div className="stat-grid">
|
||||
{incomeCards.map(c => (
|
||||
<div key={c.label} className="stat" style={{ background: 'var(--surface-3)' }}>
|
||||
<div className="lbl">{c.label}</div>
|
||||
|
||||
@@ -1104,7 +1104,7 @@ function SessionEditor({ session, onChange, onRemove, addresses }: {
|
||||
<div style={{ border: '1px solid var(--border)', borderRadius: 'var(--r)', background: 'var(--surface)', overflow: 'hidden' }}>
|
||||
|
||||
{/* Time inputs */}
|
||||
<div style={{ padding: '14px 16px 12px', display: 'grid', gridTemplateColumns: '1fr 1fr auto', gap: 12, alignItems: 'end' }}>
|
||||
<div style={{ padding: '14px 16px 12px', display: 'grid', gridTemplateColumns: 'repeat(auto-fit, minmax(140px, 1fr))', gap: 12, alignItems: 'end' }}>
|
||||
<div>
|
||||
<div style={{ fontSize: 12, color: 'var(--text-2)', marginBottom: 5 }}>از ساعت</div>
|
||||
<TimeSelect value={session.start_time} onChange={v => upd('start_time', v)} />
|
||||
|
||||
@@ -209,7 +209,7 @@ export default function DoctorsPage() {
|
||||
</div>
|
||||
|
||||
{/* KPI cards */}
|
||||
<div className="stat-grid" style={{ gridTemplateColumns: 'repeat(5,1fr)' }}>
|
||||
<div className="stat-grid">
|
||||
{kpiCards.map((c) => (
|
||||
<div key={c.label} className="stat">
|
||||
<div className="ico" style={{ background: c.bg, color: c.color }}>
|
||||
|
||||
@@ -93,7 +93,7 @@ export default function FinancialReportPage() {
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div className="stat-grid" style={{ gridTemplateColumns: 'repeat(5,1fr)', marginBottom: 'var(--gap)' }}>
|
||||
<div className="stat-grid" style={{ marginBottom: 'var(--gap)' }}>
|
||||
{cards.map((c) => (
|
||||
<div key={c.label} className="stat" style={{ background: c.bg }}>
|
||||
<div className="stat-label">{c.label}</div>
|
||||
|
||||
@@ -113,7 +113,7 @@ export default function PaymentsPage() {
|
||||
</div>
|
||||
|
||||
{/* Stat cards */}
|
||||
<div className="stat-grid" style={{ gridTemplateColumns: 'repeat(4,1fr)' }}>
|
||||
<div className="stat-grid">
|
||||
{statCards.map((c) => (
|
||||
<div key={c.label} className="stat">
|
||||
<div className="ico" style={{ background: c.bg, color: c.color }}>
|
||||
|
||||
@@ -98,7 +98,7 @@ export default function PreRegistrationsPage() {
|
||||
</div>
|
||||
|
||||
<div className="card" style={{ padding: 0, overflow: 'hidden' }}>
|
||||
<table className="t">
|
||||
<div className="table-wrap"><table className="t">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>نام</th>
|
||||
@@ -186,7 +186,7 @@ export default function PreRegistrationsPage() {
|
||||
);
|
||||
})}
|
||||
</tbody>
|
||||
</table>
|
||||
</table></div>
|
||||
</div>
|
||||
|
||||
<Pagination page={page} total={total} limit={limit} onPageChange={setPage} />
|
||||
|
||||
@@ -104,7 +104,7 @@ export default function RepresentationFinancePage() {
|
||||
</div>
|
||||
|
||||
{/* کارتهای خلاصه */}
|
||||
<div className="stat-grid" style={{ gridTemplateColumns: 'repeat(4, 1fr)', marginBottom: 'var(--gap)' }}>
|
||||
<div className="stat-grid" style={{ marginBottom: 'var(--gap)' }}>
|
||||
{cards.map(c => (
|
||||
<div key={c.label} className="stat">
|
||||
<div className="ico" style={{ background: c.bg, color: c.color }}>
|
||||
@@ -129,7 +129,7 @@ export default function RepresentationFinancePage() {
|
||||
</div>
|
||||
|
||||
<div style={{ overflowX: 'auto' }}>
|
||||
<table className="tbl tbl-zebra" style={{ width: '100%', minWidth: 720 }}>
|
||||
<div className="table-wrap"><table className="tbl tbl-zebra" style={{ width: '100%', minWidth: 720 }}>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>پزشک</th>
|
||||
@@ -174,7 +174,7 @@ export default function RepresentationFinancePage() {
|
||||
</tr>
|
||||
))}
|
||||
</tbody>
|
||||
</table>
|
||||
</table></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
@@ -146,7 +146,7 @@ export default function RepresentationProfilePage() {
|
||||
</div>
|
||||
|
||||
<div style={{ overflowX: 'auto' }}>
|
||||
<table className="tbl" style={{ width: '100%' }}>
|
||||
<div className="table-wrap"><table className="tbl" style={{ width: '100%' }}>
|
||||
<thead><tr><th>شماره شبا</th><th>بانک</th><th>صاحب حساب</th><th>وضعیت</th><th></th></tr></thead>
|
||||
<tbody>
|
||||
{ibans.length === 0 && (
|
||||
@@ -166,7 +166,7 @@ export default function RepresentationProfilePage() {
|
||||
</tr>
|
||||
))}
|
||||
</tbody>
|
||||
</table>
|
||||
</table></div>
|
||||
</div>
|
||||
|
||||
{!verified && (
|
||||
|
||||
@@ -103,7 +103,7 @@ export default function RepresentationSettlementPage() {
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div className="stat-grid" style={{ gridTemplateColumns: 'repeat(3, 1fr)' }}>
|
||||
<div className="stat-grid">
|
||||
{cards.map(c => (
|
||||
<div key={c.label} className="stat" style={{ background: 'var(--surface-3)' }}>
|
||||
<div className="lbl">{c.label}</div>
|
||||
@@ -151,7 +151,7 @@ export default function RepresentationSettlementPage() {
|
||||
<h3 style={{ fontSize: 16 }}>درخواستهای قبلی</h3>
|
||||
</div>
|
||||
<div style={{ overflowX: 'auto' }}>
|
||||
<table className="tbl" style={{ width: '100%' }}>
|
||||
<div className="table-wrap"><table className="tbl" style={{ width: '100%' }}>
|
||||
<thead><tr><th>مبلغ</th><th>وضعیت</th><th>توضیح مدیر</th><th>تاریخ</th></tr></thead>
|
||||
<tbody>
|
||||
{settlements.length === 0 && (
|
||||
@@ -166,7 +166,7 @@ export default function RepresentationSettlementPage() {
|
||||
</tr>
|
||||
))}
|
||||
</tbody>
|
||||
</table>
|
||||
</table></div>
|
||||
</div>
|
||||
<Pagination page={page} total={settlementsTotal} limit={limit} onPageChange={setPage} />
|
||||
</div>
|
||||
|
||||
@@ -427,7 +427,7 @@ function SmsWalletPageInner() {
|
||||
</div>
|
||||
) : (
|
||||
<>
|
||||
<table style={{ width: '100%', borderCollapse: 'collapse', fontSize: 13 }}>
|
||||
<div className="table-wrap"><table style={{ width: '100%', borderCollapse: 'collapse', fontSize: 13 }}>
|
||||
<thead>
|
||||
<tr style={{ background: 'oklch(0.97 0.01 256)', borderBottom: '1px solid var(--border)' }}>
|
||||
<th style={{ textAlign: 'right', padding: '10px 16px', fontWeight: 600, color: 'var(--text-2)' }}>نوع</th>
|
||||
@@ -469,7 +469,7 @@ function SmsWalletPageInner() {
|
||||
</tr>
|
||||
))}
|
||||
</tbody>
|
||||
</table>
|
||||
</table></div>
|
||||
<div style={{ padding: '12px 16px' }}>
|
||||
<Pagination page={logPage} total={total} limit={20} onPageChange={setLogPage} />
|
||||
</div>
|
||||
|
||||
@@ -168,7 +168,7 @@ export default function StaffPage() {
|
||||
|
||||
{/* KPI bar */}
|
||||
{!isLoading && (
|
||||
<div className="stat-grid" style={{ marginBottom: 16, gridTemplateColumns: 'repeat(3, 1fr)' }}>
|
||||
<div className="stat-grid" style={{ marginBottom: 16 }}>
|
||||
<div className="card card-pad" style={{ textAlign: 'center' }}>
|
||||
<div style={{ fontSize: 28, fontWeight: 800, color: 'var(--text-1)' }}>{total}</div>
|
||||
<div style={{ fontSize: 13, color: 'var(--text-3)', marginTop: 2 }}>کل پرسنل</div>
|
||||
|
||||
+17
-5
@@ -466,7 +466,7 @@ body {
|
||||
.stat .lbl { color: var(--text-2); font-size: 13px; font-weight: 500; }
|
||||
.stat .val { font-size: 26px; font-weight: 800; letter-spacing: -.5px; margin: 4px 0 2px; color: var(--text); }
|
||||
.stat .hint { font-size: 11.5px; color: var(--text-3); }
|
||||
.stat-grid { display: grid; grid-template-columns: repeat(6, 1fr); gap: var(--gap); margin-bottom: var(--gap); }
|
||||
.stat-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: var(--gap); margin-bottom: var(--gap); }
|
||||
.trend { display: inline-flex; align-items: center; gap: 3px; font-size: 12px; font-weight: 700; padding: 2px 8px; border-radius: 99px; }
|
||||
.trend.up { color: var(--success); background: var(--success-bg); }
|
||||
.trend.down { color: var(--danger); background: var(--danger-bg); }
|
||||
@@ -674,7 +674,7 @@ table.t tbody tr:last-child td { border-bottom: none; }
|
||||
.timeline-item .tl-body time { font-size: 11px; color: var(--text-3); }
|
||||
.tl-connector { width: 1px; background: var(--border); flex-shrink: 0; margin: 0 4px; }
|
||||
|
||||
.quick-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
|
||||
.quick-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(140px, 1fr)); gap: 12px; }
|
||||
.quick {
|
||||
display: flex; flex-direction: column; align-items: center; gap: 10px; padding: 20px 12px;
|
||||
border: 1px solid var(--border); border-radius: var(--r); background: var(--surface-2);
|
||||
@@ -699,13 +699,19 @@ table.t tbody tr:last-child td { border-bottom: none; }
|
||||
.avatar.lg { width: 104px; height: 104px; font-size: 34px; border-radius: 22px; }
|
||||
|
||||
/* ── Responsive ──────────────────────────────────────────────── */
|
||||
/* گارد ضد-overflow افقی سراسری */
|
||||
html, body { max-width: 100%; overflow-x: hidden; }
|
||||
|
||||
/* لایههای ریسپانسیو مشترک */
|
||||
.split-2 { display: grid; grid-template-columns: 1fr minmax(0, 320px); gap: var(--gap); align-items: start; }
|
||||
.form-row { display: grid; grid-template-columns: 1fr auto; gap: 12px; align-items: end; }
|
||||
|
||||
.scrim { display: none; }
|
||||
@media (max-width: 1080px) {
|
||||
.stat-grid { grid-template-columns: repeat(3, 1fr); }
|
||||
.dash-main { grid-template-columns: 1fr; }
|
||||
.dash-3 { grid-template-columns: 1fr; }
|
||||
}
|
||||
@media (max-width: 860px) {
|
||||
@media (max-width: 1024px) {
|
||||
.main { margin-right: 0 !important; }
|
||||
.sidebar { transform: translateX(100%); box-shadow: var(--shadow-lg); }
|
||||
.app[data-mobile-open="true"] .sidebar { transform: translateX(0); width: var(--sidebar-w); }
|
||||
@@ -716,8 +722,14 @@ table.t tbody tr:last-child td { border-bottom: none; }
|
||||
.topbar-search { display: none; }
|
||||
.grid-2 { grid-template-columns: 1fr; }
|
||||
}
|
||||
@media (max-width: 860px) {
|
||||
.split-2 { grid-template-columns: 1fr; }
|
||||
}
|
||||
@media (max-width: 600px) {
|
||||
.form-row { grid-template-columns: 1fr; }
|
||||
}
|
||||
@media (max-width: 560px) {
|
||||
.stat-grid { grid-template-columns: 1fr 1fr; }
|
||||
.page-head, .toolbar { flex-wrap: wrap; }
|
||||
}
|
||||
|
||||
/* صفحه سرویسهای کلینیک */
|
||||
|
||||
@@ -653,6 +653,8 @@
|
||||
"651": "Community 651",
|
||||
"652": "Community 652",
|
||||
"653": "Community 653",
|
||||
"654": "Community 654",
|
||||
"655": "Community 655",
|
||||
"656": "Community 656",
|
||||
"657": "Community 657",
|
||||
"658": "Community 658",
|
||||
@@ -661,6 +663,8 @@
|
||||
"661": "Community 661",
|
||||
"662": "Community 662",
|
||||
"663": "Community 663",
|
||||
"664": "Community 664",
|
||||
"665": "Community 665",
|
||||
"666": "Community 666",
|
||||
"667": "Community 667",
|
||||
"668": "Community 668",
|
||||
@@ -668,7 +672,23 @@
|
||||
"670": "Community 670",
|
||||
"671": "Community 671",
|
||||
"672": "Community 672",
|
||||
"673": "Community 673",
|
||||
"674": "Community 674",
|
||||
"675": "Community 675",
|
||||
"676": "Community 676",
|
||||
"679": "Community 679"
|
||||
"677": "Community 677",
|
||||
"678": "Community 678",
|
||||
"679": "Community 679",
|
||||
"680": "Community 680",
|
||||
"681": "Community 681",
|
||||
"682": "Community 682",
|
||||
"683": "Community 683",
|
||||
"684": "Community 684",
|
||||
"685": "Community 685",
|
||||
"686": "Community 686",
|
||||
"687": "Community 687",
|
||||
"688": "Community 688",
|
||||
"689": "Community 689",
|
||||
"690": "Community 690",
|
||||
"691": "Community 691"
|
||||
}
|
||||
|
||||
+203
-119
@@ -1,16 +1,16 @@
|
||||
# Graph Report - clinicpro (2026-07-02)
|
||||
|
||||
## Corpus Check
|
||||
- 674 files · ~473,936 words
|
||||
- 692 files · ~493,676 words
|
||||
- Verdict: corpus is large enough that graph structure adds value.
|
||||
|
||||
## Summary
|
||||
- 8487 nodes · 11688 edges · 672 communities (543 shown, 129 thin omitted)
|
||||
- Extraction: 98% EXTRACTED · 2% INFERRED · 0% AMBIGUOUS · INFERRED: 265 edges (avg confidence: 0.8)
|
||||
- 8775 nodes · 12110 edges · 692 communities (559 shown, 133 thin omitted)
|
||||
- Extraction: 98% EXTRACTED · 2% INFERRED · 0% AMBIGUOUS · INFERRED: 269 edges (avg confidence: 0.8)
|
||||
- Token cost: 0 input · 0 output
|
||||
|
||||
## Graph Freshness
|
||||
- Built from commit: `6d594822`
|
||||
- Built from commit: `1804b421`
|
||||
- Run `git rev-parse HEAD` and compare to check if the graph is stale.
|
||||
- Run `graphify update .` after code changes (no API cost).
|
||||
|
||||
@@ -655,6 +655,8 @@
|
||||
- [[_COMMUNITY_Community 651|Community 651]]
|
||||
- [[_COMMUNITY_Community 652|Community 652]]
|
||||
- [[_COMMUNITY_Community 653|Community 653]]
|
||||
- [[_COMMUNITY_Community 654|Community 654]]
|
||||
- [[_COMMUNITY_Community 655|Community 655]]
|
||||
- [[_COMMUNITY_Community 656|Community 656]]
|
||||
- [[_COMMUNITY_Community 657|Community 657]]
|
||||
- [[_COMMUNITY_Community 658|Community 658]]
|
||||
@@ -663,15 +665,33 @@
|
||||
- [[_COMMUNITY_Community 661|Community 661]]
|
||||
- [[_COMMUNITY_Community 662|Community 662]]
|
||||
- [[_COMMUNITY_Community 663|Community 663]]
|
||||
- [[_COMMUNITY_Community 664|Community 664]]
|
||||
- [[_COMMUNITY_Community 665|Community 665]]
|
||||
- [[_COMMUNITY_Community 666|Community 666]]
|
||||
- [[_COMMUNITY_Community 667|Community 667]]
|
||||
- [[_COMMUNITY_Community 668|Community 668]]
|
||||
- [[_COMMUNITY_Community 669|Community 669]]
|
||||
- [[_COMMUNITY_Community 671|Community 671]]
|
||||
- [[_COMMUNITY_Community 672|Community 672]]
|
||||
- [[_COMMUNITY_Community 673|Community 673]]
|
||||
- [[_COMMUNITY_Community 674|Community 674]]
|
||||
- [[_COMMUNITY_Community 675|Community 675]]
|
||||
- [[_COMMUNITY_Community 676|Community 676]]
|
||||
- [[_COMMUNITY_Community 677|Community 677]]
|
||||
- [[_COMMUNITY_Community 678|Community 678]]
|
||||
- [[_COMMUNITY_Community 679|Community 679]]
|
||||
- [[_COMMUNITY_Community 680|Community 680]]
|
||||
- [[_COMMUNITY_Community 681|Community 681]]
|
||||
- [[_COMMUNITY_Community 682|Community 682]]
|
||||
- [[_COMMUNITY_Community 683|Community 683]]
|
||||
- [[_COMMUNITY_Community 684|Community 684]]
|
||||
- [[_COMMUNITY_Community 685|Community 685]]
|
||||
- [[_COMMUNITY_Community 686|Community 686]]
|
||||
- [[_COMMUNITY_Community 687|Community 687]]
|
||||
- [[_COMMUNITY_Community 688|Community 688]]
|
||||
- [[_COMMUNITY_Community 689|Community 689]]
|
||||
- [[_COMMUNITY_Community 690|Community 690]]
|
||||
- [[_COMMUNITY_Community 691|Community 691]]
|
||||
|
||||
## God Nodes (most connected - your core abstractions)
|
||||
1. `BaseController` - 76 edges
|
||||
@@ -682,61 +702,61 @@
|
||||
6. `Doctor` - 48 edges
|
||||
7. `useAuthStore` - 43 edges
|
||||
8. `ApiResponse` - 41 edges
|
||||
9. `formatDate()` - 39 edges
|
||||
10. `AdminApiController` - 37 edges
|
||||
9. `AdminApiController` - 40 edges
|
||||
10. `formatDate()` - 39 edges
|
||||
|
||||
## Surprising Connections (you probably didn't know these)
|
||||
- `ServiceTariffModal()` --calls--> `formatNumber()` [EXTRACTED]
|
||||
assets/admin/components/ServiceTariffModal.tsx → assets/admin/lib/utils.ts
|
||||
- `Pagination()` --calls--> `formatNumber()` [EXTRACTED]
|
||||
assets/admin/components/ui/Pagination.tsx → assets/admin/lib/utils.ts
|
||||
- `MyFinancialPage()` --calls--> `formatRial()` [EXTRACTED]
|
||||
assets/admin/pages/MyFinancialPage.tsx → assets/admin/lib/utils.ts
|
||||
- `SettlementsPage()` --calls--> `formatRial()` [EXTRACTED]
|
||||
assets/admin/pages/SettlementsPage.tsx → assets/admin/lib/utils.ts
|
||||
- `LogsPage()` --calls--> `formatDateTime()` [EXTRACTED]
|
||||
assets/admin/pages/LogsPage.tsx → assets/admin/lib/utils.ts
|
||||
- `SmsPage()` --calls--> `formatDateTime()` [EXTRACTED]
|
||||
assets/admin/pages/SmsPage.tsx → assets/admin/lib/utils.ts
|
||||
|
||||
## Import Cycles
|
||||
- None detected.
|
||||
|
||||
## Communities (672 total, 129 thin omitted)
|
||||
## Communities (692 total, 133 thin omitted)
|
||||
|
||||
### Community 0 - "Community 0"
|
||||
Cohesion: 0.05
|
||||
Nodes (48): ALLOWED_ROLES, PrivateRoute(), PublicRoute(), RoleRoute(), queryClient, toastStyle, get, BeforeInstallPromptEvent (+40 more)
|
||||
Nodes (41): ALLOWED_ROLES, PrivateRoute(), PublicRoute(), RoleRoute(), queryClient, toastStyle, AddForm, addSchema (+33 more)
|
||||
|
||||
### Community 1 - "Community 1"
|
||||
Cohesion: 0.03
|
||||
Nodes (41): AddressData, AddrForm, addrSchema, AVATAR_COLORS, BookingMeta, CityOpt, DateOverrideData, DEFAULT_BOOKING_META (+33 more)
|
||||
|
||||
### Community 2 - "Community 2"
|
||||
Cohesion: 0.07
|
||||
Nodes (27): usePaymentConfig(), emptyFeatures(), FEATURE_KEYS, FEATURE_LABELS, PeriodForm, periodSchema, PLAN_DISPLAY, PlanForm (+19 more)
|
||||
Cohesion: 0.11
|
||||
Nodes (19): PaymentConfig, PaymentGatewayInfo, usePaymentConfig(), ApiResponse, ChargeForm, chargeSchema, EMPTY_LOGS, POST_VISIT_VARS (+11 more)
|
||||
|
||||
### Community 3 - "Community 3"
|
||||
Cohesion: 0.04
|
||||
Nodes (71): PaginatedResponse, AddForm, addSchema, ClinicsPage(), HUES_LIST, FILTERS, Breakdown, SOURCE_LABEL (+63 more)
|
||||
Cohesion: 0.06
|
||||
Nodes (35): PaginatedResponse, STATUS_FILTERS, FILTERS, Breakdown, SOURCE_LABEL, Summary, LEVEL_FILTER_OPTIONS, LEVEL_META (+27 more)
|
||||
|
||||
### Community 4 - "Community 4"
|
||||
Cohesion: 0.06
|
||||
Nodes (8): DoctorService, Doctor, DoctorServiceRepository, Collection, self, User, WeeklySchedule, ManagerRegistry
|
||||
Cohesion: 0.05
|
||||
Nodes (11): DoctorServiceController, DoctorService, Doctor, DoctorServiceRepository, Collection, self, User, WeeklySchedule (+3 more)
|
||||
|
||||
### Community 5 - "Community 5"
|
||||
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.07
|
||||
Nodes (27): Contract, InsuranceOption, KIND_LABEL, AdminLayout(), Topbar(), DEGREE_OPTIONS, DoctorFormPage(), FormValues (+19 more)
|
||||
Cohesion: 0.08
|
||||
Nodes (27): useSubscription(), AdminLayout(), avatarBg(), buildSections(), HUES, Props, ROLE_LABELS, Section (+19 more)
|
||||
|
||||
### Community 9 - "Community 9"
|
||||
Cohesion: 0.04
|
||||
@@ -755,20 +775,20 @@ 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.05
|
||||
Nodes (35): PaymentConfig, PaymentGatewayInfo, api, ApiError, ApiResponse, getToken(), refreshOnce(), request() (+27 more)
|
||||
Cohesion: 0.06
|
||||
Nodes (26): get, api, ApiError, getToken(), refreshOnce(), request(), { refreshMock, logoutMock }, replaceMock (+18 more)
|
||||
|
||||
### Community 14 - "Community 14"
|
||||
Cohesion: 0.15
|
||||
Nodes (8): AppointmentSettingsController, Holiday, HolidayRepository, JsonResponse, Request, User, Doctor, ManagerRegistry
|
||||
|
||||
### Community 15 - "Community 15"
|
||||
Cohesion: 0.21
|
||||
Nodes (6): PaymentController, JsonResponse, Payment, Request, Response, User
|
||||
Cohesion: 0.25
|
||||
Nodes (7): PaymentController, Appointment, JsonResponse, Payment, Request, Response, User
|
||||
|
||||
### Community 16 - "Community 16"
|
||||
Cohesion: 0.06
|
||||
Nodes (8): PatientSession, SmsWallet, AppLog, Appointment, Collection, PatientRecord, self, SessionService
|
||||
Cohesion: 0.09
|
||||
Nodes (6): PatientSession, Appointment, Collection, PatientRecord, self, SessionService
|
||||
|
||||
### Community 17 - "Community 17"
|
||||
Cohesion: 0.05
|
||||
@@ -779,20 +799,20 @@ Cohesion: 0.05
|
||||
Nodes (38): API, API, API, API, API, Route, Route, Route (+30 more)
|
||||
|
||||
### Community 19 - "Community 19"
|
||||
Cohesion: 0.06
|
||||
Nodes (21): CityForm, citySchema, ImportError, InsuranceForm, insuranceSchema, LogoUploadField(), ProvinceForm, provinceSchema (+13 more)
|
||||
Cohesion: 0.03
|
||||
Nodes (56): ALL_STATUSES, CityForm, citySchema, ImportError, InsuranceForm, insuranceSchema, LogoUploadField(), ProvinceForm (+48 more)
|
||||
|
||||
### Community 20 - "Community 20"
|
||||
Cohesion: 0.05
|
||||
Nodes (13): AdminApiController, RepresentationActionController, DateTimeInterface, InputValidator, JalaliDateService, SlotCalculatorService, JsonResponse, Request (+5 more)
|
||||
Cohesion: 0.13
|
||||
Nodes (3): AdminApiController, JsonResponse, Request
|
||||
|
||||
### Community 21 - "Community 21"
|
||||
Cohesion: 0.04
|
||||
Nodes (46): formatNumber(), ClinicAddress, ClinicDetailPage(), ClinicDoctorItem, ClinicInvitation, EditForm, editSchema, HUES_LIST (+38 more)
|
||||
Nodes (45): formatNumber(), ClinicAddress, ClinicDetailPage(), ClinicDoctorItem, ClinicInvitation, EditForm, editSchema, HUES_LIST (+37 more)
|
||||
|
||||
### Community 22 - "Community 22"
|
||||
Cohesion: 0.11
|
||||
Nodes (14): RatingController, Like, Rate, LikeRepository, RateRepository, JsonResponse, Request, User (+6 more)
|
||||
Cohesion: 0.15
|
||||
Nodes (9): RatingController, Like, LikeRepository, JsonResponse, Request, User, Comment, ManagerRegistry (+1 more)
|
||||
|
||||
### Community 23 - "Community 23"
|
||||
Cohesion: 0.05
|
||||
@@ -823,8 +843,8 @@ Cohesion: 0.06
|
||||
Nodes (35): Bulk import / export, DELETE `/api/v1/admin/city/{id}`, DELETE `/api/v1/admin/province/{id}`, Errors, Errors, Errors, Errors, GET `/api/v1/admin/cities` (+27 more)
|
||||
|
||||
### Community 30 - "Community 30"
|
||||
Cohesion: 0.08
|
||||
Nodes (15): BillingCalculatorTest, BillingCalculator, Money, BillingCalculator, InvoiceService, PatientService, ErrorCodesTest, CoverageRule (+7 more)
|
||||
Cohesion: 0.06
|
||||
Nodes (19): BillingCalculatorTest, BillingCalculator, GatewayFactory, MellatGateway, Money, MellatGatewayTest, SepGateway, BillingCalculator (+11 more)
|
||||
|
||||
### Community 31 - "Community 31"
|
||||
Cohesion: 0.06
|
||||
@@ -835,8 +855,8 @@ Cohesion: 0.06
|
||||
Nodes (32): 10. Modal / Dialog, 11. Toast Notifications, 12. Empty States & Loading, 13. Page Header (هر صفحه), 14. تکنولوژی Stack, 15. Responsive Breakpoints, 16. Dark Mode (اختیاری — فاز دوم), 17. نمونه رنگبندی صفحه داشبورد (+24 more)
|
||||
|
||||
### Community 33 - "Community 33"
|
||||
Cohesion: 0.08
|
||||
Nodes (20): CoverageRow, Draft, KIND, TenantInsurance, ServiceTariffModal(), TariffResponse, TariffRow, EMPTY_ITEMS (+12 more)
|
||||
Cohesion: 0.06
|
||||
Nodes (27): CoverageRow, Draft, KIND, TenantInsurance, ServiceTariffModal(), TariffResponse, TariffRow, EMPTY_ITEMS (+19 more)
|
||||
|
||||
### Community 34 - "Community 34"
|
||||
Cohesion: 0.06
|
||||
@@ -883,8 +903,8 @@ Cohesion: 0.12
|
||||
Nodes (3): Blog, self, User
|
||||
|
||||
### Community 45 - "Community 45"
|
||||
Cohesion: 0.07
|
||||
Nodes (27): Errors, Errors, Errors, Errors, GET `/api/v1/my/payments`, GET `/api/v1/payment/callback/{gateway}`, GET `/api/v1/payment/config`, GET `/api/v1/payment/{uuid}` (+19 more)
|
||||
Cohesion: 0.06
|
||||
Nodes (36): Errors, Errors, Errors, Errors, GET `/api/v1/my/payments`, GET `/api/v1/payment/callback/{gateway}`, GET `/api/v1/payment/config`, GET `/api/v1/payment/order/{appointmentUuid}` (+28 more)
|
||||
|
||||
### Community 46 - "Community 46"
|
||||
Cohesion: 0.07
|
||||
@@ -916,7 +936,7 @@ Nodes (26): الزامات UI, باگفیکس صفحه نوبتها, با
|
||||
|
||||
### Community 53 - "Community 53"
|
||||
Cohesion: 0.10
|
||||
Nodes (13): AppLogRepository, ClaimItemRepository, DoctorInsuranceRepository, PreRegistrationRepository, SessionServiceRepository, ServiceEntityRepository, ManagerRegistry, ManagerRegistry (+5 more)
|
||||
Nodes (13): AppLogRepository, ClaimItemRepository, ClinicStaffRepository, PreRegistrationRepository, SessionServiceRepository, ServiceEntityRepository, ManagerRegistry, ManagerRegistry (+5 more)
|
||||
|
||||
### Community 54 - "Community 54"
|
||||
Cohesion: 0.10
|
||||
@@ -935,8 +955,8 @@ Cohesion: 0.08
|
||||
Nodes (24): Blog API, DELETE `/api/v1/blog/{uuid}`, Errors, Errors, Errors, Errors, Errors, GET `/api/v1/blog/{slug}` (+16 more)
|
||||
|
||||
### Community 58 - "Community 58"
|
||||
Cohesion: 0.28
|
||||
Nodes (4): Blog, BlogRepository, ManagerRegistry, QueryBuilder
|
||||
Cohesion: 0.15
|
||||
Nodes (8): Blog, BlogController, BlogRepository, JsonResponse, Request, User, ManagerRegistry, QueryBuilder
|
||||
|
||||
### Community 59 - "Community 59"
|
||||
Cohesion: 0.22
|
||||
@@ -959,13 +979,17 @@ Cohesion: 0.22
|
||||
Nodes (5): AuthController, RateLimiterFactory, JsonResponse, Request, User
|
||||
|
||||
### Community 64 - "Community 64"
|
||||
Cohesion: 0.32
|
||||
Nodes (4): SmsWalletController, JsonResponse, Request, User
|
||||
Cohesion: 0.19
|
||||
Nodes (7): SmsWalletController, SmsSettingsRepository, SmsSettings, JsonResponse, Request, User, ManagerRegistry
|
||||
|
||||
### Community 65 - "Community 65"
|
||||
Cohesion: 0.08
|
||||
Nodes (24): 2. کاربر (User), 4. 🔵 `POST` verify code, 5. 🔵 `POST` send code, 6. 🔵 `POST` register, 7. 🔴 `DELETE` delete user, 8. 🟡 `PATCH` patch, 9. 🟢 `GET` list secretary, Request Body (+16 more)
|
||||
|
||||
### Community 66 - "Community 66"
|
||||
Cohesion: 0.06
|
||||
Nodes (6): ClinicStaff, SmsWallet, AppLog, LogPruneService, AppointmentExpiryService, self
|
||||
|
||||
### Community 67 - "Community 67"
|
||||
Cohesion: 0.11
|
||||
Nodes (4): Invoice, Collection, InvoiceItem, self
|
||||
@@ -983,8 +1007,8 @@ Cohesion: 0.15
|
||||
Nodes (12): رفع بهمریختگی کامل پنل ادمین روی iPhone 8 (Safari/Chrome iOS), زمینه, فایلهای مرتبط, مشکل / هدف, نکات مهم, وضعیت فعلی, وظایف, پروژه (+4 more)
|
||||
|
||||
### Community 71 - "Community 71"
|
||||
Cohesion: 0.08
|
||||
Nodes (14): Claim, ClaimItem, DebtRow, InsuranceOption, KIND_LABEL, STATUS_FILTERS, STATUS_META, EMPTY (+6 more)
|
||||
Cohesion: 0.07
|
||||
Nodes (21): Contract, InsuranceOption, KIND_LABEL, Claim, ClaimItem, DebtRow, InsuranceOption, KIND_LABEL (+13 more)
|
||||
|
||||
### Community 72 - "Community 72"
|
||||
Cohesion: 0.09
|
||||
@@ -1003,8 +1027,8 @@ Cohesion: 0.16
|
||||
Nodes (5): DoctorSecretary, Clinic, Doctor, self, User
|
||||
|
||||
### Community 77 - "Community 77"
|
||||
Cohesion: 0.20
|
||||
Nodes (8): AdminUser, ChangeRoleModal(), getPrimaryRole(), HUES_LIST, ROLE_META, ROLE_TABS, RoleBadge(), UserStats
|
||||
Cohesion: 0.24
|
||||
Nodes (5): RepresentationActionController, JsonResponse, Representation, Request, User
|
||||
|
||||
### Community 78 - "Community 78"
|
||||
Cohesion: 0.12
|
||||
@@ -1032,7 +1056,7 @@ Nodes (30): devDependencies, @babel/core, @babel/preset-env, @babel/preset-react
|
||||
|
||||
### Community 86 - "Community 86"
|
||||
Cohesion: 0.07
|
||||
Nodes (13): AppointmentExpiryServiceTest, LowTierFixesTest, SendCodeMobileRateLimitTest, ClaimsListPaginationTest, ServiceItemStaffOwnershipTest, KernelBrowser, CommentPaginationTest, SecretaryListNPlusOneTest (+5 more)
|
||||
Nodes (13): AppointmentExpiryServiceTest, LowTierFixesTest, SendCodeMobileRateLimitTest, ClaimsListPaginationTest, ServiceItemStaffOwnershipTest, KernelBrowser, CommentPaginationTest, SettlementListPaginationTest (+5 more)
|
||||
|
||||
### Community 87 - "Community 87"
|
||||
Cohesion: 0.10
|
||||
@@ -1099,8 +1123,8 @@ Cohesion: 0.10
|
||||
Nodes (20): Bulk import / export, DELETE `/api/v1/admin/tag/{id}`, Errors, Errors, Errors, Errors, GET `/api/v1/admin/tags`, GET `/api/v1/tags` (+12 more)
|
||||
|
||||
### Community 103 - "Community 103"
|
||||
Cohesion: 0.33
|
||||
Nodes (4): BlogController, JsonResponse, Request, User
|
||||
Cohesion: 0.11
|
||||
Nodes (18): `AdminApiController::paymentDetail` — الان فقط GET, `MellatGateway.php` — الگوی موجود REST/SOAP (پس از کار sandbox), `PaymentGatewayInterface.php`, `PaymentManager.php` — الگوی log و transaction, برگشت/استرداد وجه ملت از پنل ادمین (bpReversalRequest / bpRefundRequest), زمینه, فایلهای مرتبط, نکات مهم (+10 more)
|
||||
|
||||
### Community 104 - "Community 104"
|
||||
Cohesion: 0.18
|
||||
@@ -1119,8 +1143,8 @@ Cohesion: 0.32
|
||||
Nodes (6): AppointmentController, Appointment, Doctor, JsonResponse, Request, User
|
||||
|
||||
### Community 108 - "Community 108"
|
||||
Cohesion: 0.18
|
||||
Nodes (7): BaseController, CategoryController, SmsMessageController, JsonResponse, JsonResponse, JsonResponse, Request
|
||||
Cohesion: 0.13
|
||||
Nodes (10): BaseController, CategoryController, CategoryImportController, SmsMessageController, JsonResponse, JsonResponse, Request, JsonResponse (+2 more)
|
||||
|
||||
### Community 109 - "Community 109"
|
||||
Cohesion: 0.29
|
||||
@@ -1175,8 +1199,8 @@ Cohesion: 0.26
|
||||
Nodes (4): LocationController, City, JsonResponse, Request
|
||||
|
||||
### Community 122 - "Community 122"
|
||||
Cohesion: 0.06
|
||||
Nodes (27): DashboardController, HealthController, MyAppointmentsController, RepresentationController, SubscriptionController, EntityManagerInterface, ClinicInvitationService, Doctor (+19 more)
|
||||
Cohesion: 0.26
|
||||
Nodes (4): SubscriptionController, JsonResponse, Request, User
|
||||
|
||||
### Community 123 - "Community 123"
|
||||
Cohesion: 0.12
|
||||
@@ -1379,8 +1403,8 @@ Cohesion: 0.35
|
||||
Nodes (5): PatientController, JsonResponse, PatientSession, Request, User
|
||||
|
||||
### Community 176 - "Community 176"
|
||||
Cohesion: 0.33
|
||||
Nodes (5): SecretaryController, DoctorSecretary, JsonResponse, Request, User
|
||||
Cohesion: 0.09
|
||||
Nodes (13): SecretaryController, SmsLogRepository, OtpService, PaymentManager, SmsLog, Payment, PaymentInitResult, PaymentRefundResult (+5 more)
|
||||
|
||||
### Community 177 - "Community 177"
|
||||
Cohesion: 0.36
|
||||
@@ -1471,12 +1495,12 @@ Cohesion: 0.14
|
||||
Nodes (13): Endpoint ها, PATCH /api/v1/secretary/{uuid}, POST /api/v1/secretary, تسک ۱۴: ماژول منشی, توضیح, زمان تخمینی, ساختار JSON, سیستم مجوزها — Resource-Based Permissions (مقیاسپذیر) (+5 more)
|
||||
|
||||
### Community 201 - "Community 201"
|
||||
Cohesion: 0.20
|
||||
Nodes (10): Admin API, Clinic Invitation Management, GET `/api/v1/admin/comments`, GET `/api/v1/admin/rates`, GET /api/v1/admin/settings, PATCH /api/v1/admin/settings, Query Parameters, Query Parameters (+2 more)
|
||||
Cohesion: 0.15
|
||||
Nodes (13): Admin API, Clinic Invitation Management, GET `/api/v1/admin/pre-registrations`, GET `/api/v1/admin/secretaries`, GET /api/v1/admin/settings, PATCH /api/v1/admin/settings, POST `/api/v1/admin/pre-registrations/{uuid}/approve`, POST `/api/v1/admin/pre-registrations/{uuid}/reject` (+5 more)
|
||||
|
||||
### Community 202 - "Community 202"
|
||||
Cohesion: 0.10
|
||||
Nodes (19): Appointment Settings API, Available Locations, DELETE `/api/v1/appointment-settings/holidays/{uuid}`, Errors, Errors, `GET /api/v1/appointment-settings/available-locations/{doctorUuid}`, GET `/api/v1/appointment-settings/holidays/list/{doctorUuid}`, GET `/api/v1/appointment-settings/holidays/{uuid}` (+11 more)
|
||||
Cohesion: 0.15
|
||||
Nodes (13): DELETE `/api/v1/appointment-settings/holidays/{uuid}`, Errors, GET `/api/v1/appointment-settings/holidays/list/{doctorUuid}`, GET `/api/v1/appointment-settings/holidays/{uuid}`, Holidays, PATCH `/api/v1/appointment-settings/holidays/{uuid}`, POST `/api/v1/appointment-settings/holidays`, Request Body (+5 more)
|
||||
|
||||
### Community 203 - "Community 203"
|
||||
Cohesion: 0.15
|
||||
@@ -1491,8 +1515,8 @@ Cohesion: 0.07
|
||||
Nodes (20): Command, CancelExpiredAppointmentsCommand, CreateAdminCommand, PruneLogsCommand, SeedCategoriesCommand, SeedSmsMessageTemplatesCommand, SmsMessageTemplateRepository, SmsTextResolver (+12 more)
|
||||
|
||||
### Community 206 - "Community 206"
|
||||
Cohesion: 0.26
|
||||
Nodes (3): MellatGateway, PaymentInitResult, PaymentVerifyResult
|
||||
Cohesion: 0.21
|
||||
Nodes (5): MellatGateway, SoapClient, PaymentInitResult, PaymentRefundResult, PaymentVerifyResult
|
||||
|
||||
### Community 207 - "Community 207"
|
||||
Cohesion: 0.15
|
||||
@@ -1547,7 +1571,7 @@ Cohesion: 0.23
|
||||
Nodes (4): PatientSessionRepository, ManagerRegistry, PatientRecord, PatientSession
|
||||
|
||||
### Community 224 - "Community 224"
|
||||
Cohesion: 0.24
|
||||
Cohesion: 0.23
|
||||
Nodes (5): PaymentRepository, Appointment, ManagerRegistry, Payment, User
|
||||
|
||||
### Community 225 - "Community 225"
|
||||
@@ -1559,8 +1583,8 @@ Cohesion: 0.15
|
||||
Nodes (12): Callback Mellat, frontend_address, Idempotency, درگاههای واقعی پروژه (از کد Drupal), شرط ایجاد پرداخت, قیمت از Config (نه Request), مجوزها, نکات پیادهسازی — تسک ۱۵: ماژول پرداخت (+4 more)
|
||||
|
||||
### Community 227 - "Community 227"
|
||||
Cohesion: 0.36
|
||||
Nodes (4): SiteConfigController, JsonResponse, Request, User
|
||||
Cohesion: 0.17
|
||||
Nodes (7): HealthController, SiteConfigController, EntityManagerInterface, JsonResponse, Request, User, JsonResponse
|
||||
|
||||
### Community 228 - "Community 228"
|
||||
Cohesion: 0.04
|
||||
@@ -1623,7 +1647,7 @@ Cohesion: 0.26
|
||||
Nodes (4): PatientRecordRepository, ManagerRegistry, PatientRecord, User
|
||||
|
||||
### Community 244 - "Community 244"
|
||||
Cohesion: 0.32
|
||||
Cohesion: 0.29
|
||||
Nodes (3): SubscriptionService, ClinicSubscription, Payment
|
||||
|
||||
### Community 245 - "Community 245"
|
||||
@@ -1651,16 +1675,16 @@ Cohesion: 0.18
|
||||
Nodes (11): Appointment Management, Error Responses, GET `/api/v1/admin/appointments`, GET `/api/v1/admin/appointments/today-stats`, POST `/api/v1/admin/appointment`, Query Parameters, Query Parameters, Request Body (+3 more)
|
||||
|
||||
### Community 251 - "Community 251"
|
||||
Cohesion: 0.21
|
||||
Nodes (4): SmsLogRepository, OtpService, SmsLog, ManagerRegistry
|
||||
Cohesion: 0.11
|
||||
Nodes (18): `GatewayFactory.php` — `resolve()` در حالت test_mode همیشه Mock میدهد, `MellatGateway.php` (خطوط کلیدی), `SecurityHeadersSubscriber.php` (خط ۴۴), اطلاعات sandbox (banktest.ir), تست (e2e روی ddev), زمینه, فایلهای مرتبط, فعالسازی درگاه sandbox بانک ملت (banktest.ir) — موقت (+10 more)
|
||||
|
||||
### Community 252 - "Community 252"
|
||||
Cohesion: 0.45
|
||||
Nodes (4): NotificationMobileController, JsonResponse, Request, User
|
||||
|
||||
### Community 253 - "Community 253"
|
||||
Cohesion: 0.36
|
||||
Nodes (3): DoctorServiceController, JsonResponse, Request
|
||||
Cohesion: 0.11
|
||||
Nodes (17): CSS (`assets/admin/styles.css`), Topbar breakpoint (ناهماهنگ با CSS), ریسپانسیو کردن پنل ادمین برای موبایل (iPhone 8 / ۳۷۵px), زمینه, فایلهای مرتبط, مشکل / هدف, نمونهٔ گرید inline (تکرارشده در ۲۰ فایل), نکات مهم (+9 more)
|
||||
|
||||
### Community 254 - "Community 254"
|
||||
Cohesion: 0.18
|
||||
@@ -1739,7 +1763,7 @@ Cohesion: 0.18
|
||||
Nodes (10): Endpoint های موجود که تغییر میکنند, GET /api/v1/admin/dashboard/charts?from=UNIX&to=UNIX, GET /api/v1/dashboard/clinic, GET /api/v1/dashboard/doctor, تسک ۱۶: داشبورد هوشمند — چارت + فیلتر زمانی, توضیح, زمان تخمینی, فیلتر بازه زمانی (+2 more)
|
||||
|
||||
### Community 274 - "Community 274"
|
||||
Cohesion: 0.20
|
||||
Cohesion: 0.21
|
||||
Nodes (5): Authentication, ClinicPro — API Documentation Index, Error Code Reference, Modules, Standard Response Envelope
|
||||
|
||||
### Community 275 - "Community 275"
|
||||
@@ -1856,7 +1880,7 @@ Nodes (16): آمادهسازی پروژه ClinicPro برای دیپلوی ر
|
||||
|
||||
### Community 304 - "Community 304"
|
||||
Cohesion: 0.22
|
||||
Nodes (9): 30. 🟢 `GET` get 🆕, 33. 🔵 `POST` image_clinic, 43. 🟢 `GET` get, 6. کلینیک (Clinic), هدرهای اضافی, هدرهای اضافی, پاسخها, پاسخها (+1 more)
|
||||
Nodes (9): 29. 🟢 `GET` clinic list 🆕, 30. 🟢 `GET` get 🆕, 36. 🟢 `GET` get my rate, 6. کلینیک (Clinic), هدرهای اضافی, پارامترهای Query, پاسخها, پاسخها (+1 more)
|
||||
|
||||
### Community 306 - "Community 306"
|
||||
Cohesion: 0.07
|
||||
@@ -1883,8 +1907,8 @@ Cohesion: 0.22
|
||||
Nodes (8): [HIGH] BUG-3 — ساخت نماینده با شماره موبایلِ نامعتبر (بدون اعتبارسنجی فرمت), [MEDIUM] BUG-1 — ۵۰۰ روی ساخت بلاگ با تایپ اشتباهِ body ✅ رفع شد, [MEDIUM] BUG-2 — کد ملی نامعتبر بدون اعتبارسنجی سمت سرور ذخیره میشود, باگها, توصیهها, خلاصه, مواردی که تست شدند و **سالم** بودند (شواهد مثبت), گزارش باگ — ممیزی ۱۴۰۵/۰۳/۳۰ (2026-06-20)
|
||||
|
||||
### Community 312 - "Community 312"
|
||||
Cohesion: 0.36
|
||||
Nodes (3): ClinicSubscriptionRepository, ClinicSubscription, ManagerRegistry
|
||||
Cohesion: 0.27
|
||||
Nodes (4): ClinicSubscriptionRepository, ClinicSubscription, ManagerRegistry, Payment
|
||||
|
||||
### Community 313 - "Community 313"
|
||||
Cohesion: 0.36
|
||||
@@ -2015,12 +2039,12 @@ Cohesion: 0.43
|
||||
Nodes (3): SmsWalletRepository, ManagerRegistry, SmsWallet
|
||||
|
||||
### Community 351 - "Community 351"
|
||||
Cohesion: 0.22
|
||||
Nodes (4): MockGateway, PaymentGatewayInterface, PaymentInitResult, PaymentVerifyResult
|
||||
Cohesion: 0.18
|
||||
Nodes (5): MockGateway, PaymentGatewayInterface, PaymentInitResult, PaymentRefundResult, PaymentVerifyResult
|
||||
|
||||
### Community 352 - "Community 352"
|
||||
Cohesion: 0.27
|
||||
Nodes (3): SepGateway, PaymentInitResult, PaymentVerifyResult
|
||||
Cohesion: 0.21
|
||||
Nodes (4): SepGateway, PaymentInitResult, PaymentRefundResult, PaymentVerifyResult
|
||||
|
||||
### Community 354 - "Community 354"
|
||||
Cohesion: 0.36
|
||||
@@ -2095,8 +2119,8 @@ Cohesion: 0.15
|
||||
Nodes (6): UniqueConstraintsTest, FinancialBreakdown, FinancialBreakdownRepository, FinancialBreakdownIntegrityTest, ManagerRegistry, Payment
|
||||
|
||||
### Community 372 - "Community 372"
|
||||
Cohesion: 0.50
|
||||
Nodes (4): Errors, PATCH `/api/v1/insurance/{id}`, Request Body, Response `200`
|
||||
Cohesion: 0.11
|
||||
Nodes (17): `PaymentManager::handleAppointmentConfirmation` (فقط پیامک بیمار), الگوی تگها (SmsLog), الگوی قالبها (SmsMessageTemplate::DEFAULTS), زمینه, فایلهای مرتبط, مشکل / هدف, مقادیر در دسترس, نکات مهم (+9 more)
|
||||
|
||||
### Community 374 - "Community 374"
|
||||
Cohesion: 0.29
|
||||
@@ -2191,24 +2215,28 @@ Cohesion: 0.21
|
||||
Nodes (6): ClaimAmountBoundsTest, ClaimsListNPlusOneTest, ClaimItem, Claim, Doctor, User
|
||||
|
||||
### Community 398 - "Community 398"
|
||||
Cohesion: 0.29
|
||||
Nodes (4): initiate(), verify(), PaymentInitResult, PaymentVerifyResult
|
||||
Cohesion: 0.22
|
||||
Nodes (7): initiate(), refund(), reverse(), verify(), PaymentInitResult, PaymentRefundResult, PaymentVerifyResult
|
||||
|
||||
### Community 399 - "Community 399"
|
||||
Cohesion: 0.23
|
||||
Nodes (5): AbstractMigration, Schema, Version20260609130407, Schema, Version20260614182950
|
||||
|
||||
### Community 405 - "Community 405"
|
||||
Cohesion: 0.48
|
||||
Nodes (3): SmsSettingsRepository, SmsSettings, ManagerRegistry
|
||||
Cohesion: 0.11
|
||||
Nodes (17): بازطراحی معماری پرداخت — سرویسمحور، امن، توسعهپذیر (Backend), تست دستی (ddev، در حالت `payment_test_mode=1`), خروجی نهایی (طبق spec — در گزارش اجرا ارائه شود), زمینه, فایلهای مرتبط, مشکل / هدف, نکات مهم, وضعیت فعلی (+9 more)
|
||||
|
||||
### Community 407 - "Community 407"
|
||||
Cohesion: 0.18
|
||||
Nodes (4): RanginehProvider, SmsService, SendSmsMessage, SmsProviderInterface
|
||||
Cohesion: 0.36
|
||||
Nodes (3): SmsService, SendSmsMessage, SmsProviderInterface
|
||||
|
||||
### Community 418 - "Community 418"
|
||||
Cohesion: 0.17
|
||||
Nodes (11): دیپلوی ClinicPro روی Coolify (Docker Compose), رفع اشکال, مراحل دیپلوی, معماری دیپلوی, نکات عملیاتی, چند دامنه فرانتاند (مهم), ۱. ساخت Resource در Coolify, ۲. اختصاص دامنه (+3 more)
|
||||
|
||||
### Community 421 - "Community 421"
|
||||
Cohesion: 0.23
|
||||
Nodes (5): AbstractMigration, Schema, Version20260609132009, Schema, Version20260610140853
|
||||
### Community 432 - "Community 432"
|
||||
Cohesion: 0.12
|
||||
Nodes (16): backend (آماده — فقط annotation/doc ناقص), افزودن فیلد «تاریخ شروع فعالیت» (سال تجربه) در پنل ادمین با تقویم شمسی, زمینه, فایلهای مرتبط, فرم ساخت پزشک — `DoctorFormPage.tsx` (خط ~282), فرم ویرایش پزشک — `DoctorDetailPage.tsx` (وضعیت فعلی، بدون فیلد تاریخ), مشکل / هدف, نکات مهم (+8 more)
|
||||
|
||||
### Community 439 - "Community 439"
|
||||
Cohesion: 0.40
|
||||
@@ -2219,8 +2247,8 @@ Cohesion: 0.11
|
||||
Nodes (18): [F10] راهنمای کهنه در `CLAUDE.md`: endpoint `categorys/{bundle}` منتقل شده, [F11] داشبورد دکتر `GET /api/v1/dashboard/doctor` همیشه 500 (فیلد ناموجود در DQL) — ✅ رفع شد, [F1] phpstan: مقایسهٔ همیشهدرست در محاسبهٔ estimated SMS — ✅ رفع شد, [F2] تستهای PHPUnit به API خارجی Kavenegar درخواست واقعی میزنند, [F3] دیتابیس تست seed نشده — فقط کاربر ادمین وجود دارد, [F4] اسکریپت seeder `create_test_users.php` وجود ندارد, [F5] ادمین با JWT معتبر به `/api/doc` (Swagger UI) دسترسی ندارد (401), [F6] ناسازگاری کدهای خطا بین دامنهها (+10 more)
|
||||
|
||||
### Community 452 - "Community 452"
|
||||
Cohesion: 0.07
|
||||
Nodes (38): FreeVisitPrice(), Pricing, cn(), formatDate(), formatDateTime(), formatRial(), iranMobileOptionalSchema, iranMobileSchema (+30 more)
|
||||
Cohesion: 0.06
|
||||
Nodes (45): FreeVisitPrice(), Pricing, cn(), formatDate(), formatDateTime(), formatRial(), iranMobileOptionalSchema, iranMobileSchema (+37 more)
|
||||
|
||||
### Community 456 - "Community 456"
|
||||
Cohesion: 0.40
|
||||
@@ -2311,8 +2339,8 @@ Cohesion: 0.40
|
||||
Nodes (5): Errors, Notes, POST `/api/v1/notification-mobile/request-otp`, Request Body, Response `200`
|
||||
|
||||
### Community 482 - "Community 482"
|
||||
Cohesion: 0.24
|
||||
Nodes (4): RepositoryClassMappingTest, KernelTestCase, LoggerInterface, DbLoggerTest
|
||||
Cohesion: 0.38
|
||||
Nodes (3): RepositoryClassMappingTest, KernelTestCase, DbLoggerTest
|
||||
|
||||
### Community 483 - "Community 483"
|
||||
Cohesion: 0.40
|
||||
@@ -2335,8 +2363,8 @@ Cohesion: 0.40
|
||||
Nodes (5): Admin Endpoints, GET /api/v1/admin/sms/settings/review, GET /api/v1/admin/sms/wallet-report, POST /api/v1/admin/sms/settings/{id}/approve, POST /api/v1/admin/sms/settings/{id}/reject
|
||||
|
||||
### Community 491 - "Community 491"
|
||||
Cohesion: 0.43
|
||||
Nodes (3): CategoryImportController, JsonResponse, Request
|
||||
Cohesion: 0.12
|
||||
Nodes (15): `Modal.tsx` (بدون Portal), `PersianCalendar.tsx` (buttonها بدون `type`) — نمونهها, باگ ۱ — علت, باگ ۲ — علت, رفع دو باگ Modal و تقویم شمسی در پنل ادمین, زمینه, فایلهای مرتبط, مشکل / هدف (+7 more)
|
||||
|
||||
### Community 493 - "Community 493"
|
||||
Cohesion: 0.20
|
||||
@@ -2486,6 +2514,10 @@ Nodes (4): Errors, POST `/api/v1/user/verify-code`, Request Body, Response `200`
|
||||
Cohesion: 0.50
|
||||
Nodes (4): Errors, GET `/api/v1/representation/{uuid}`, Path Parameters, Response `200`
|
||||
|
||||
### Community 536 - "Community 536"
|
||||
Cohesion: 0.12
|
||||
Nodes (15): `MellatGateway.php` — ثابتها و مسیر prod فعلی (POST خام), آنچه نباید تغییر کند, بردن درگاه ملت روی محیط واقعی (production) با SOAP native, زمینه, فایلهای مرتبط, نکات مهم (چکلیست عملیاتی prod), وضعیت فعلی, وظایف (+7 more)
|
||||
|
||||
### Community 537 - "Community 537"
|
||||
Cohesion: 0.40
|
||||
Nodes (3): Props, StatTone, TONE
|
||||
@@ -2654,10 +2686,6 @@ Nodes (5): Errors, PATCH `/api/v1/clinic-pro/doctor-address/{id}`, Path Paramete
|
||||
Cohesion: 0.20
|
||||
Nodes (10): Configuration, DELETE `/api/v1/sms/template/{uuid}`, Errors, Errors, GET `/api/v1/admin/sms/templates`, GET `/api/v1/sms/template/{uuid}`, Response `200`, Response `200` (+2 more)
|
||||
|
||||
### Community 598 - "Community 598"
|
||||
Cohesion: 0.50
|
||||
Nodes (4): GET `/api/v1/admin/pre-registrations`, POST `/api/v1/admin/pre-registrations/{uuid}/approve`, POST `/api/v1/admin/pre-registrations/{uuid}/reject`, Pre-Registration Management
|
||||
|
||||
### Community 599 - "Community 599"
|
||||
Cohesion: 0.67
|
||||
Nodes (3): Errors, POST `/api/v1/sms/template/{uuid}/submit`, Response `200`
|
||||
@@ -2687,8 +2715,8 @@ Cohesion: 0.25
|
||||
Nodes (8): ثبتنام دکتر — از طریق نماینده, ثبتنام دکتر — از طریق کلینیک, ثبتنام دکتر — مستقل, ۱. معرفی محصول, ۱.۱ نقشهای سیستم, ۱.۲ فلوهای عملیاتی اصلی, ۱.۳ پلنهای اشتراک, ۱.۴ سیستم پیامک
|
||||
|
||||
### Community 607 - "Community 607"
|
||||
Cohesion: 0.39
|
||||
Nodes (3): ClinicStaffRepository, ClinicStaff, ManagerRegistry
|
||||
Cohesion: 0.35
|
||||
Nodes (5): RepresentationController, JsonResponse, Representation, Request, User
|
||||
|
||||
### Community 612 - "Community 612"
|
||||
Cohesion: 0.67
|
||||
@@ -2738,25 +2766,33 @@ Nodes (6): GET /api/v1/sms/balance — موجودی حساب پیامک, POST /a
|
||||
Cohesion: 0.50
|
||||
Nodes (4): Errors, POST `/api/v1/clinic-pro/doctor-address`, Request Body, Response `201`
|
||||
|
||||
### Community 641 - "Community 641"
|
||||
Cohesion: 0.15
|
||||
Nodes (11): emptyFeatures(), FEATURE_KEYS, FEATURE_LABELS, PeriodForm, periodSchema, PLAN_DISPLAY, PlanForm, planSchema (+3 more)
|
||||
|
||||
### Community 646 - "Community 646"
|
||||
Cohesion: 0.40
|
||||
Nodes (5): 35. 🟡 `PATCH` patch, Request Body, مثال Request, هدرهای اضافی, پاسخها
|
||||
|
||||
### Community 647 - "Community 647"
|
||||
Cohesion: 0.14
|
||||
Nodes (13): اصلاح فیلتر شهر/استان در لیست عمومی پزشکان (`GET /api/v1/doctors`), زمینه, فایلهای مرتبط, مشکل / هدف, نکات مهم, وضعیت فعلی, وظایف, پروژه (+5 more)
|
||||
|
||||
### Community 648 - "Community 648"
|
||||
Cohesion: 0.40
|
||||
Nodes (5): 41. 🟡 `PATCH` patch, Request Body, مثال Request, هدرهای اضافی, پاسخها
|
||||
|
||||
### Community 649 - "Community 649"
|
||||
Cohesion: 0.67
|
||||
Nodes (3): 29. 🟢 `GET` clinic list 🆕, پارامترهای Query, پاسخها
|
||||
Cohesion: 0.14
|
||||
Nodes (13): زمینه, فایلهای مرتبط, مشکل / هدف, نکات مهم, وضعیت فعلی (flow جدا در SmsWallet — باید حذف شود), وظایف, پروژه, یکسانسازی کامل پرداخت به یک Flow واحد + entry ریدایرکت خالص (Backend + Admin) (+5 more)
|
||||
|
||||
### Community 650 - "Community 650"
|
||||
Cohesion: 0.67
|
||||
Nodes (3): 34. 🔵 `POST` image logo, هدرهای اضافی, پاسخها
|
||||
|
||||
### Community 651 - "Community 651"
|
||||
Cohesion: 0.67
|
||||
Nodes (3): 36. 🟢 `GET` get my rate, هدرهای اضافی, پاسخها
|
||||
Cohesion: 0.14
|
||||
Nodes (13): زمینه, فایلهای مرتبط, قیمت هر پیامک در تنظیمات + رفع تنظیمات ارسال پیامک کیفپول, مشکل / هدف, نکات مهم, وضعیت فعلی, وظایف, پروژه (+5 more)
|
||||
|
||||
### Community 652 - "Community 652"
|
||||
Cohesion: 0.50
|
||||
@@ -2766,21 +2802,29 @@ Nodes (4): Errors, Path Parameters, POST `/api/v1/clinic-pro/doctor-address/from
|
||||
Cohesion: 0.67
|
||||
Nodes (3): 42. 🔴 `DELETE` delete, هدرهای اضافی, پاسخها
|
||||
|
||||
### Community 654 - "Community 654"
|
||||
Cohesion: 0.35
|
||||
Nodes (6): DashboardController, Clinic, DoctorSecretary, JsonResponse, Request, User
|
||||
|
||||
### Community 655 - "Community 655"
|
||||
Cohesion: 0.38
|
||||
Nodes (5): MyAppointmentsController, Doctor, JsonResponse, Request, User
|
||||
|
||||
### Community 656 - "Community 656"
|
||||
Cohesion: 0.40
|
||||
Nodes (5): ۲.۸ تنظیمات نوبت (Appointment Settings), ۲.۸.۱ برنامه هفتگی (Weekly Schedule), ۲.۸.۲ تعطیلات (Holidays), ۲.۸.۳ لغو تعطیل (Date Override), ۲.۸.۴ الگوریتم محاسبه اسلاتهای خالی
|
||||
|
||||
### Community 657 - "Community 657"
|
||||
Cohesion: 0.50
|
||||
Nodes (4): GET `/api/v1/admin/payments`, Payment Management, Query Parameters, Response `200`
|
||||
Cohesion: 0.20
|
||||
Nodes (10): Errors (payment refund/reverse/detail), GET `/api/v1/admin/payments`, GET `/api/v1/admin/payments/{uuid}`, Payment Management, POST `/api/v1/admin/payments/{uuid}/refund`, POST `/api/v1/admin/payments/{uuid}/reverse`, Query Parameters, Query Parameters (تکمیل) (+2 more)
|
||||
|
||||
### Community 658 - "Community 658"
|
||||
Cohesion: 0.67
|
||||
Nodes (3): GET `/api/v1/clinic-pro/doctor-addresses/{doctorId}`, Path Parameters, Response `200`
|
||||
|
||||
### Community 659 - "Community 659"
|
||||
Cohesion: 0.50
|
||||
Nodes (4): GET `/api/v1/admin/secretaries`, Query Parameters, Response `200`, Secretary Management
|
||||
Cohesion: 0.31
|
||||
Nodes (4): ClinicInvitationService, Clinic, ClinicDoctorInvitation, User
|
||||
|
||||
### Community 661 - "Community 661"
|
||||
Cohesion: 0.40
|
||||
@@ -2790,6 +2834,10 @@ Nodes (5): 37. 🔵 `POST` post, Request Body, مثال Request, هدرهای ا
|
||||
Cohesion: 0.29
|
||||
Nodes (7): Application Logs, DELETE `/api/v1/admin/logs`, GET `/api/v1/admin/logs`, Log Retention, Query Parameters, Response `200`, Response `200`
|
||||
|
||||
### Community 665 - "Community 665"
|
||||
Cohesion: 0.38
|
||||
Nodes (5): Rate, RateRepository, Doctor, ManagerRegistry, User
|
||||
|
||||
### Community 666 - "Community 666"
|
||||
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 تنظیمات نوبت
|
||||
@@ -2806,6 +2854,10 @@ Nodes (4): ۲.۱۳ نظرات، لایک و امتیازدهی, ۲.۱۳.۱ نظ
|
||||
Cohesion: 0.50
|
||||
Nodes (4): GET `/api/v1/admin/settlements`, Query Parameters, Response `200`, Settlement Management
|
||||
|
||||
### Community 674 - "Community 674"
|
||||
Cohesion: 0.47
|
||||
Nodes (3): CommissionService, Payment, Representation
|
||||
|
||||
### Community 675 - "Community 675"
|
||||
Cohesion: 0.50
|
||||
Nodes (4): 39. 🟡 `PATCH` Comment confirmation, مثال Request, هدرهای اضافی, پاسخها
|
||||
@@ -2814,25 +2866,57 @@ Nodes (4): 39. 🟡 `PATCH` Comment confirmation, مثال Request, هدرهای
|
||||
Cohesion: 0.50
|
||||
Nodes (4): 40. 🔵 `POST` post, مثال Request, هدرهای اضافی, پاسخها
|
||||
|
||||
### Community 677 - "Community 677"
|
||||
Cohesion: 0.43
|
||||
Nodes (5): BeforeInstallPromptEvent, usePwaInstall(), PwaInstallBanner(), detectIOS(), PwaLoginCard()
|
||||
|
||||
### Community 678 - "Community 678"
|
||||
Cohesion: 0.29
|
||||
Nodes (6): Appointment Settings API, Available Locations, Errors, `GET /api/v1/appointment-settings/available-locations/{doctorUuid}`, Response `200`, Slot Calculation Logic (Reference)
|
||||
|
||||
### Community 681 - "Community 681"
|
||||
Cohesion: 0.48
|
||||
Nodes (3): DoctorInsuranceRepository, DoctorInsurance, ManagerRegistry
|
||||
|
||||
### Community 684 - "Community 684"
|
||||
Cohesion: 0.53
|
||||
Nodes (3): PaymentLog, PaymentLogRepository, ManagerRegistry
|
||||
|
||||
### Community 686 - "Community 686"
|
||||
Cohesion: 0.40
|
||||
Nodes (5): GET `/api/v1/admin/comments`, GET `/api/v1/admin/rates`, Query Parameters, Query Parameters, Rating & Comment Management
|
||||
|
||||
### Community 687 - "Community 687"
|
||||
Cohesion: 0.50
|
||||
Nodes (4): Errors, PATCH `/api/v1/admin/insurance/{id}`, Path Parameters, Response `200`
|
||||
|
||||
### Community 689 - "Community 689"
|
||||
Cohesion: 0.67
|
||||
Nodes (3): 33. 🔵 `POST` image_clinic, هدرهای اضافی, پاسخها
|
||||
|
||||
### Community 690 - "Community 690"
|
||||
Cohesion: 0.67
|
||||
Nodes (3): 43. 🟢 `GET` get, هدرهای اضافی, پاسخها
|
||||
|
||||
## Knowledge Gaps
|
||||
- **3656 isolated node(s):** `ALLOWED_ROLES`, `Pricing`, `TenantInsurance`, `CoverageRow`, `Draft` (+3651 more)
|
||||
- **3812 isolated node(s):** `ALLOWED_ROLES`, `Pricing`, `TenantInsurance`, `CoverageRow`, `Draft` (+3807 more)
|
||||
These have ≤1 connection - possible missing edges or undocumented components.
|
||||
- **129 thin communities (<3 nodes) omitted from report** — run `graphify query` to explore isolated nodes.
|
||||
- **133 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 20`, `Community 22`, `Community 26`, `Community 164`, `Community 295`, `Community 169`, `Community 300`, `Community 175`, `Community 176`, `Community 177`, `Community 59`, `Community 63`, `Community 64`, `Community 75`, `Community 227`, `Community 230`, `Community 103`, `Community 104`, `Community 107`, `Community 491`, `Community 109`, `Community 121`, `Community 122`, `Community 252`, `Community 253`?**
|
||||
_High betweenness centrality (0.032) - this node is a cross-community bridge._
|
||||
- **Why does `BaseController` connect `Community 108` to `Community 4`, `Community 6`, `Community 138`, `Community 139`, `Community 14`, `Community 654`, `Community 655`, `Community 15`, `Community 20`, `Community 22`, `Community 26`, `Community 164`, `Community 295`, `Community 169`, `Community 300`, `Community 175`, `Community 176`, `Community 177`, `Community 58`, `Community 59`, `Community 63`, `Community 64`, `Community 75`, `Community 77`, `Community 607`, `Community 227`, `Community 230`, `Community 104`, `Community 107`, `Community 109`, `Community 121`, `Community 122`, `Community 252`?**
|
||||
_High betweenness centrality (0.044) - this node is a cross-community bridge._
|
||||
- **Why does `AppointmentRepository` connect `Community 119` to `Community 53`?**
|
||||
_High betweenness centrality (0.019) - this node is a cross-community bridge._
|
||||
- **Why does `Version20260614181657` connect `Community 431` to `Community 421`?**
|
||||
_High betweenness centrality (0.016) - this node is a cross-community bridge._
|
||||
- **Why does `Version20260614181657` connect `Community 431` to `Community 399`?**
|
||||
_High betweenness centrality (0.015) - this node is a cross-community bridge._
|
||||
- **What connects `ALLOWED_ROLES`, `Pricing`, `TenantInsurance` to the rest of the system?**
|
||||
_3656 weakly-connected nodes found - possible documentation gaps or missing edges._
|
||||
_3812 weakly-connected nodes found - possible documentation gaps or missing edges._
|
||||
- **Should `Community 0` be split into smaller, more focused modules?**
|
||||
_Cohesion score 0.05004389815627744 - nodes in this community are weakly interconnected._
|
||||
_Cohesion score 0.049678550555230856 - nodes in this community are weakly interconnected._
|
||||
- **Should `Community 1` be split into smaller, more focused modules?**
|
||||
_Cohesion score 0.028985507246376812 - nodes in this community are weakly interconnected._
|
||||
- **Should `Community 2` be split into smaller, more focused modules?**
|
||||
_Cohesion score 0.0659536541889483 - nodes in this community are weakly interconnected._
|
||||
_Cohesion score 0.10507246376811594 - nodes in this community are weakly interconnected._
|
||||
graphify-out/cache/ast/v0.8.44/062541c7937a458a5c0aa4245699f9b6c5343cdc7551aebf36af5e3c1ca95b2e.json
Vendored
+1
File diff suppressed because one or more lines are too long
graphify-out/cache/ast/v0.8.44/06bcfbcd017b77e4ad6f855cc6f3184bf863fe3f29641fca8c4a8d4f48bf6be8.json
Vendored
+1
File diff suppressed because one or more lines are too long
graphify-out/cache/ast/v0.8.44/0f62f04627bb90caea61226780ba29857fe914f5c9d2beaefc1fd17659d0af30.json
Vendored
+1
@@ -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": "L67"}, {"id": "entity_smslog_smslog_settemplateuuid", "label": ".setTemplateUuid()", "file_type": "code", "source_file": "src/Sms/Entity/SmsLog.php", "source_location": "L78"}, {"id": "self", "label": "self", "file_type": "code", "source_file": "src/Sms/Entity/SmsLog.php", "source_location": "L78"}, {"id": "entity_smslog_smslog_gettag", "label": ".getTag()", "file_type": "code", "source_file": "src/Sms/Entity/SmsLog.php", "source_location": "L79"}, {"id": "entity_smslog_smslog_settag", "label": ".setTag()", "file_type": "code", "source_file": "src/Sms/Entity/SmsLog.php", "source_location": "L80"}, {"id": "entity_smslog_smslog_toarray", "label": ".toArray()", "file_type": "code", "source_file": "src/Sms/Entity/SmsLog.php", "source_location": "L82"}], "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": "L67", "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": "L78", "weight": 1.0}, {"source": "entity_smslog_smslog_settemplateuuid", "target": "self", "relation": "references", "confidence": "EXTRACTED", "source_file": "src/Sms/Entity/SmsLog.php", "source_location": "L78", "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": "L79", "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": "L80", "weight": 1.0}, {"source": "entity_smslog_smslog_settag", "target": "self", "relation": "references", "confidence": "EXTRACTED", "source_file": "src/Sms/Entity/SmsLog.php", "source_location": "L80", "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": "L82", "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": "L69", "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": "L69", "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": "L75", "receiver": null}]}
|
||||
graphify-out/cache/ast/v0.8.44/14cb8d07e807806c11ce8602cae3bcd05b3d639dd8698c78f262136fced58b37.json
Vendored
+1
@@ -0,0 +1 @@
|
||||
{"nodes": [{"id": "users_hamed_pj_my_pj_clinic_pro_clinicpro_src_payment_entity_paymentlog_php", "label": "PaymentLog.php", "file_type": "code", "source_file": "src/Payment/Entity/PaymentLog.php", "source_location": "L1"}, {"id": "entity_paymentlog_paymentlog", "label": "PaymentLog", "file_type": "code", "source_file": "src/Payment/Entity/PaymentLog.php", "source_location": "L12"}, {"id": "entity_paymentlog_paymentlog_construct", "label": ".__construct()", "file_type": "code", "source_file": "src/Payment/Entity/PaymentLog.php", "source_location": "L52"}, {"id": "entity_paymentlog_paymentlog_getid", "label": ".getId()", "file_type": "code", "source_file": "src/Payment/Entity/PaymentLog.php", "source_location": "L71"}, {"id": "entity_paymentlog_paymentlog_getpaymentid", "label": ".getPaymentId()", "file_type": "code", "source_file": "src/Payment/Entity/PaymentLog.php", "source_location": "L72"}, {"id": "entity_paymentlog_paymentlog_getaction", "label": ".getAction()", "file_type": "code", "source_file": "src/Payment/Entity/PaymentLog.php", "source_location": "L73"}, {"id": "entity_paymentlog_paymentlog_getresult", "label": ".getResult()", "file_type": "code", "source_file": "src/Payment/Entity/PaymentLog.php", "source_location": "L74"}], "edges": [{"source": "users_hamed_pj_my_pj_clinic_pro_clinicpro_src_payment_entity_paymentlog_php", "target": "paymentlogrepository", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "src/Payment/Entity/PaymentLog.php", "source_location": "L5", "weight": 1.0}, {"source": "users_hamed_pj_my_pj_clinic_pro_clinicpro_src_payment_entity_paymentlog_php", "target": "mapping", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "src/Payment/Entity/PaymentLog.php", "source_location": "L6", "weight": 1.0}, {"source": "users_hamed_pj_my_pj_clinic_pro_clinicpro_src_payment_entity_paymentlog_php", "target": "entity_paymentlog_paymentlog", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/Payment/Entity/PaymentLog.php", "source_location": "L12", "weight": 1.0}, {"source": "entity_paymentlog_paymentlog", "target": "entity_paymentlog_paymentlog_construct", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/Payment/Entity/PaymentLog.php", "source_location": "L52", "weight": 1.0}, {"source": "entity_paymentlog_paymentlog", "target": "entity_paymentlog_paymentlog_getid", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/Payment/Entity/PaymentLog.php", "source_location": "L71", "weight": 1.0}, {"source": "entity_paymentlog_paymentlog", "target": "entity_paymentlog_paymentlog_getpaymentid", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/Payment/Entity/PaymentLog.php", "source_location": "L72", "weight": 1.0}, {"source": "entity_paymentlog_paymentlog", "target": "entity_paymentlog_paymentlog_getaction", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/Payment/Entity/PaymentLog.php", "source_location": "L73", "weight": 1.0}, {"source": "entity_paymentlog_paymentlog", "target": "entity_paymentlog_paymentlog_getresult", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/Payment/Entity/PaymentLog.php", "source_location": "L74", "weight": 1.0}], "raw_calls": [{"caller_nid": "entity_paymentlog_paymentlog_construct", "callee": "time", "is_member_call": false, "source_file": "/Users/hamed/pj/my_pj/clinic_pro/clinicpro/src/Payment/Entity/PaymentLog.php", "source_location": "L68", "receiver": null}]}
|
||||
graphify-out/cache/ast/v0.8.44/16f20ad212e905030ddb53ae8899b9b185eee3bf094ef7782437156a83808f2e.json
Vendored
+1
File diff suppressed because one or more lines are too long
graphify-out/cache/ast/v0.8.44/181ff34438c057f8cf22ecb7fa36577841e11a22a389e97e2378d690653be005.json
Vendored
+1
File diff suppressed because one or more lines are too long
graphify-out/cache/ast/v0.8.44/20a9aa5073921db55a58ae43c1ce9eb00ce03b3a015c9602feeb8f14fd26eaf4.json
Vendored
+1
File diff suppressed because one or more lines are too long
graphify-out/cache/ast/v0.8.44/27f46add59adb93c8cd116b68842d81d0f8b6be0d1561342d06080d11de1faef.json
Vendored
+1
File diff suppressed because one or more lines are too long
graphify-out/cache/ast/v0.8.44/2bc320c00a5049780d14735c7ff72b376159b6535e94c3993ae15d43ad72e548.json
Vendored
+1
@@ -0,0 +1 @@
|
||||
{"nodes": [{"id": "users_hamed_pj_my_pj_clinic_pro_clinicpro_src_payment_gateway_paymentrefundresult_php", "label": "PaymentRefundResult.php", "file_type": "code", "source_file": "src/Payment/Gateway/PaymentRefundResult.php", "source_location": "L1"}, {"id": "gateway_paymentrefundresult_paymentrefundresult", "label": "PaymentRefundResult", "file_type": "code", "source_file": "src/Payment/Gateway/PaymentRefundResult.php", "source_location": "L5"}, {"id": "gateway_paymentrefundresult_paymentrefundresult_construct", "label": ".__construct()", "file_type": "code", "source_file": "src/Payment/Gateway/PaymentRefundResult.php", "source_location": "L7"}], "edges": [{"source": "users_hamed_pj_my_pj_clinic_pro_clinicpro_src_payment_gateway_paymentrefundresult_php", "target": "gateway_paymentrefundresult_paymentrefundresult", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/Payment/Gateway/PaymentRefundResult.php", "source_location": "L5", "weight": 1.0}, {"source": "gateway_paymentrefundresult_paymentrefundresult", "target": "gateway_paymentrefundresult_paymentrefundresult_construct", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/Payment/Gateway/PaymentRefundResult.php", "source_location": "L7", "weight": 1.0}], "raw_calls": []}
|
||||
graphify-out/cache/ast/v0.8.44/33090af8ff81ab614643f32d50168398e06a64b6e748e0bceb5e94c79b3373d7.json
Vendored
+1
File diff suppressed because one or more lines are too long
graphify-out/cache/ast/v0.8.44/35afc379ea4fd60f420b77b555e2cd8e37d266caadc996e551312e8348750a32.json
Vendored
+1
File diff suppressed because one or more lines are too long
graphify-out/cache/ast/v0.8.44/46964086d05dde76b1c0e3bc7f3dae8eab8aa1ac6d9ae609abfb3396eae5aa6d.json
Vendored
+1
File diff suppressed because one or more lines are too long
graphify-out/cache/ast/v0.8.44/4e04a45a73afaa8b4a0c80552519e5cd1dbc641f1b9dbe8e2d70bdb974c37111.json
Vendored
+1
File diff suppressed because one or more lines are too long
graphify-out/cache/ast/v0.8.44/4e11a4de7119bceffd73258b7e865d7019ccbcbf5787fcc02fdd06a293c38f88.json
Vendored
+1
File diff suppressed because one or more lines are too long
graphify-out/cache/ast/v0.8.44/57bef1c36673ed6135d976b61ae551e590fb757e403fcfce8475ad4950ffabe6.json
Vendored
+1
File diff suppressed because one or more lines are too long
graphify-out/cache/ast/v0.8.44/587b83007d7a8d0ac0d45c6a3c8108d3e0dde9568168144061e182fa1f7767c7.json
Vendored
+1
File diff suppressed because one or more lines are too long
graphify-out/cache/ast/v0.8.44/67b67fd5299c1e912359d94dce4c88d5742e2ee324d699fd12333e1a225bcf7e.json
Vendored
+1
File diff suppressed because one or more lines are too long
graphify-out/cache/ast/v0.8.44/6a54958abae2be938e6d6eb88e8005aeb8796d35b70e04630d66ab6ae5da2279.json
Vendored
+1
File diff suppressed because one or more lines are too long
graphify-out/cache/ast/v0.8.44/7562c1a0460eb6831ccd6e2ff396ed01256672933fc480a9454dfd202efd0d55.json
Vendored
+1
File diff suppressed because one or more lines are too long
graphify-out/cache/ast/v0.8.44/79ddf5f1ee1b38138385106d78b195971374a41970f58f405a53990462819c0d.json
Vendored
+1
File diff suppressed because one or more lines are too long
graphify-out/cache/ast/v0.8.44/821f2b858cff251eebc74ac92b4b9263c24dbaffaa34e05b03b2324186bbeb08.json
Vendored
+1
@@ -0,0 +1 @@
|
||||
{"nodes": [{"id": "users_hamed_pj_my_pj_clinic_pro_clinicpro_migrations_version20260702115209_php", "label": "Version20260702115209.php", "file_type": "code", "source_file": "migrations/Version20260702115209.php", "source_location": "L1"}, {"id": "migrations_version20260702115209_version20260702115209", "label": "Version20260702115209", "file_type": "code", "source_file": "migrations/Version20260702115209.php", "source_location": "L13"}, {"id": "abstractmigration", "label": "AbstractMigration", "file_type": "code", "source_file": "", "source_location": ""}, {"id": "migrations_version20260702115209_version20260702115209_getdescription", "label": ".getDescription()", "file_type": "code", "source_file": "migrations/Version20260702115209.php", "source_location": "L15"}, {"id": "migrations_version20260702115209_version20260702115209_up", "label": ".up()", "file_type": "code", "source_file": "migrations/Version20260702115209.php", "source_location": "L20"}, {"id": "schema", "label": "Schema", "file_type": "code", "source_file": "migrations/Version20260702115209.php", "source_location": "L20"}, {"id": "migrations_version20260702115209_version20260702115209_down", "label": ".down()", "file_type": "code", "source_file": "migrations/Version20260702115209.php", "source_location": "L25"}], "edges": [{"source": "users_hamed_pj_my_pj_clinic_pro_clinicpro_migrations_version20260702115209_php", "target": "schema", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "migrations/Version20260702115209.php", "source_location": "L7", "weight": 1.0}, {"source": "users_hamed_pj_my_pj_clinic_pro_clinicpro_migrations_version20260702115209_php", "target": "abstractmigration", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "migrations/Version20260702115209.php", "source_location": "L8", "weight": 1.0}, {"source": "users_hamed_pj_my_pj_clinic_pro_clinicpro_migrations_version20260702115209_php", "target": "migrations_version20260702115209_version20260702115209", "relation": "contains", "confidence": "EXTRACTED", "source_file": "migrations/Version20260702115209.php", "source_location": "L13", "weight": 1.0}, {"source": "migrations_version20260702115209_version20260702115209", "target": "abstractmigration", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "migrations/Version20260702115209.php", "source_location": "L13", "weight": 1.0}, {"source": "migrations_version20260702115209_version20260702115209", "target": "migrations_version20260702115209_version20260702115209_getdescription", "relation": "method", "confidence": "EXTRACTED", "source_file": "migrations/Version20260702115209.php", "source_location": "L15", "weight": 1.0}, {"source": "migrations_version20260702115209_version20260702115209", "target": "migrations_version20260702115209_version20260702115209_up", "relation": "method", "confidence": "EXTRACTED", "source_file": "migrations/Version20260702115209.php", "source_location": "L20", "weight": 1.0}, {"source": "migrations_version20260702115209_version20260702115209_up", "target": "schema", "relation": "references", "confidence": "EXTRACTED", "source_file": "migrations/Version20260702115209.php", "source_location": "L20", "weight": 1.0, "context": "parameter_type"}, {"source": "migrations_version20260702115209_version20260702115209", "target": "migrations_version20260702115209_version20260702115209_down", "relation": "method", "confidence": "EXTRACTED", "source_file": "migrations/Version20260702115209.php", "source_location": "L25", "weight": 1.0}, {"source": "migrations_version20260702115209_version20260702115209_down", "target": "schema", "relation": "references", "confidence": "EXTRACTED", "source_file": "migrations/Version20260702115209.php", "source_location": "L25", "weight": 1.0, "context": "parameter_type"}], "raw_calls": [{"caller_nid": "migrations_version20260702115209_version20260702115209_up", "callee": "addSql", "is_member_call": true, "source_file": "/Users/hamed/pj/my_pj/clinic_pro/clinicpro/migrations/Version20260702115209.php", "source_location": "L22", "receiver": null}, {"caller_nid": "migrations_version20260702115209_version20260702115209_down", "callee": "addSql", "is_member_call": true, "source_file": "/Users/hamed/pj/my_pj/clinic_pro/clinicpro/migrations/Version20260702115209.php", "source_location": "L27", "receiver": null}]}
|
||||
graphify-out/cache/ast/v0.8.44/852ccdcc3659967ca4aab8059adec237b69e5fb8416d951b052cdf7eb647f9a2.json
Vendored
+1
File diff suppressed because one or more lines are too long
graphify-out/cache/ast/v0.8.44/8835569ef8d009ecd2d9fd2bee19f9c51a1b4bbc22f1d5478215d0c6b4c64088.json
Vendored
+1
File diff suppressed because one or more lines are too long
graphify-out/cache/ast/v0.8.44/8d1eeb4f42518a2b78f43c69a4ca775076d5684e0f466217c27ae75d34ec39c5.json
Vendored
+1
File diff suppressed because one or more lines are too long
graphify-out/cache/ast/v0.8.44/93c2ba36b25d898a701cdff25d37e0236e866cd1a358394172a3f572ffecd87e.json
Vendored
+1
File diff suppressed because one or more lines are too long
graphify-out/cache/ast/v0.8.44/94d88c7055fe1be78f52d3dcc56078b62bbad4a24a1d7c5ffad6f86e9d5e2c7e.json
Vendored
+1
File diff suppressed because one or more lines are too long
graphify-out/cache/ast/v0.8.44/994517b626d00af208e8a11857bf7e1b74ef2d445d00f0711825d412642909cf.json
Vendored
+1
File diff suppressed because one or more lines are too long
graphify-out/cache/ast/v0.8.44/9ae4872e0ca49d602b246c6c04e97dc6476a3fbbc4bf29c43dee8cca84e8307e.json
Vendored
+1
File diff suppressed because one or more lines are too long
graphify-out/cache/ast/v0.8.44/9ed706e8bc8927f07b698e380435a552f2eea674ac5bd78116de26f7891edc93.json
Vendored
+1
File diff suppressed because one or more lines are too long
graphify-out/cache/ast/v0.8.44/a896e096957d2149b5ca9e1d416e1c7f609f4b274bc4a911df9bf199755c6157.json
Vendored
+1
File diff suppressed because one or more lines are too long
graphify-out/cache/ast/v0.8.44/af47e04758a2a47c3122a567c79aaf3a2638c5c09e2d21308a91b966b1cfe8aa.json
Vendored
+1
File diff suppressed because one or more lines are too long
graphify-out/cache/ast/v0.8.44/cba39cdd0c017cb66792a6c4707e1cd9f060c8c03e9f7b16878a0ddae96a616d.json
Vendored
+1
File diff suppressed because one or more lines are too long
graphify-out/cache/ast/v0.8.44/cbb79a9bd90c62fcd753606137f8d384a1cdbb47164c4879400c93919dae09bc.json
Vendored
+1
File diff suppressed because one or more lines are too long
graphify-out/cache/ast/v0.8.44/de2aec27fbadc4dd88f1587822b349985073b32d1c9f09f54642f3d56a21fffa.json
Vendored
+1
File diff suppressed because one or more lines are too long
graphify-out/cache/ast/v0.8.44/e474570a753b56888f8fa5458cf7eeafcf7e4ff390429a5f6612bada28f9b401.json
Vendored
+1
@@ -0,0 +1 @@
|
||||
{"nodes": [{"id": "users_hamed_pj_my_pj_clinic_pro_clinicpro_src_payment_gateway_paymentinitresult_php", "label": "PaymentInitResult.php", "file_type": "code", "source_file": "src/Payment/Gateway/PaymentInitResult.php", "source_location": "L1"}, {"id": "gateway_paymentinitresult_paymentinitresult", "label": "PaymentInitResult", "file_type": "code", "source_file": "src/Payment/Gateway/PaymentInitResult.php", "source_location": "L5"}, {"id": "gateway_paymentinitresult_paymentinitresult_construct", "label": ".__construct()", "file_type": "code", "source_file": "src/Payment/Gateway/PaymentInitResult.php", "source_location": "L11"}], "edges": [{"source": "users_hamed_pj_my_pj_clinic_pro_clinicpro_src_payment_gateway_paymentinitresult_php", "target": "gateway_paymentinitresult_paymentinitresult", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/Payment/Gateway/PaymentInitResult.php", "source_location": "L5", "weight": 1.0}, {"source": "gateway_paymentinitresult_paymentinitresult", "target": "gateway_paymentinitresult_paymentinitresult_construct", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/Payment/Gateway/PaymentInitResult.php", "source_location": "L11", "weight": 1.0}], "raw_calls": []}
|
||||
graphify-out/cache/ast/v0.8.44/e55052916115c1c67bcbd5ee1f39be8454ab3eb77d82902f271f52433da4951d.json
Vendored
+1
File diff suppressed because one or more lines are too long
graphify-out/cache/ast/v0.8.44/f26e537b012e10faaac23f291ccc341345bb2512c3c4496c4bffea3308086eba.json
Vendored
+1
File diff suppressed because one or more lines are too long
graphify-out/cache/ast/v0.8.44/f2ac3a77ebe11da45b93f24513955f734586b01d2f18cdca5d0849e927df88f7.json
Vendored
+1
File diff suppressed because one or more lines are too long
graphify-out/cache/ast/v0.8.44/f8e7f5bb986225beb28c2d175a78cb1c2dafdc8b99a60779bc1e04834ad1dff0.json
Vendored
+1
File diff suppressed because one or more lines are too long
graphify-out/cache/ast/v0.8.44/fb3512aff2ebfdbe34c6d5eab4e67dfd5c90fa6dbbf0cec8bd23eac0c2e51734.json
Vendored
+1
@@ -0,0 +1 @@
|
||||
{"nodes": [{"id": "users_hamed_pj_my_pj_clinic_pro_clinicpro_src_payment_gateway_paymentgatewayinterface_php", "label": "PaymentGatewayInterface.php", "file_type": "code", "source_file": "src/Payment/Gateway/PaymentGatewayInterface.php", "source_location": "L1"}, {"id": "gateway_paymentgatewayinterface_getname", "label": "getName()", "file_type": "code", "source_file": "src/Payment/Gateway/PaymentGatewayInterface.php", "source_location": "L7"}, {"id": "gateway_paymentgatewayinterface_isconfigured", "label": "isConfigured()", "file_type": "code", "source_file": "src/Payment/Gateway/PaymentGatewayInterface.php", "source_location": "L12"}, {"id": "gateway_paymentgatewayinterface_initiate", "label": "initiate()", "file_type": "code", "source_file": "src/Payment/Gateway/PaymentGatewayInterface.php", "source_location": "L17"}, {"id": "paymentinitresult", "label": "PaymentInitResult", "file_type": "code", "source_file": "src/Payment/Gateway/PaymentGatewayInterface.php", "source_location": "L17"}, {"id": "gateway_paymentgatewayinterface_verify", "label": "verify()", "file_type": "code", "source_file": "src/Payment/Gateway/PaymentGatewayInterface.php", "source_location": "L22"}, {"id": "paymentverifyresult", "label": "PaymentVerifyResult", "file_type": "code", "source_file": "src/Payment/Gateway/PaymentGatewayInterface.php", "source_location": "L22"}, {"id": "gateway_paymentgatewayinterface_refund", "label": "refund()", "file_type": "code", "source_file": "src/Payment/Gateway/PaymentGatewayInterface.php", "source_location": "L27"}, {"id": "paymentrefundresult", "label": "PaymentRefundResult", "file_type": "code", "source_file": "src/Payment/Gateway/PaymentGatewayInterface.php", "source_location": "L27"}, {"id": "gateway_paymentgatewayinterface_reverse", "label": "reverse()", "file_type": "code", "source_file": "src/Payment/Gateway/PaymentGatewayInterface.php", "source_location": "L32"}], "edges": [{"source": "users_hamed_pj_my_pj_clinic_pro_clinicpro_src_payment_gateway_paymentgatewayinterface_php", "target": "gateway_paymentgatewayinterface_getname", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/Payment/Gateway/PaymentGatewayInterface.php", "source_location": "L7", "weight": 1.0}, {"source": "users_hamed_pj_my_pj_clinic_pro_clinicpro_src_payment_gateway_paymentgatewayinterface_php", "target": "gateway_paymentgatewayinterface_isconfigured", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/Payment/Gateway/PaymentGatewayInterface.php", "source_location": "L12", "weight": 1.0}, {"source": "users_hamed_pj_my_pj_clinic_pro_clinicpro_src_payment_gateway_paymentgatewayinterface_php", "target": "gateway_paymentgatewayinterface_initiate", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/Payment/Gateway/PaymentGatewayInterface.php", "source_location": "L17", "weight": 1.0}, {"source": "gateway_paymentgatewayinterface_initiate", "target": "paymentinitresult", "relation": "references", "confidence": "EXTRACTED", "source_file": "src/Payment/Gateway/PaymentGatewayInterface.php", "source_location": "L17", "weight": 1.0, "context": "return_type"}, {"source": "users_hamed_pj_my_pj_clinic_pro_clinicpro_src_payment_gateway_paymentgatewayinterface_php", "target": "gateway_paymentgatewayinterface_verify", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/Payment/Gateway/PaymentGatewayInterface.php", "source_location": "L22", "weight": 1.0}, {"source": "gateway_paymentgatewayinterface_verify", "target": "paymentverifyresult", "relation": "references", "confidence": "EXTRACTED", "source_file": "src/Payment/Gateway/PaymentGatewayInterface.php", "source_location": "L22", "weight": 1.0, "context": "return_type"}, {"source": "users_hamed_pj_my_pj_clinic_pro_clinicpro_src_payment_gateway_paymentgatewayinterface_php", "target": "gateway_paymentgatewayinterface_refund", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/Payment/Gateway/PaymentGatewayInterface.php", "source_location": "L27", "weight": 1.0}, {"source": "gateway_paymentgatewayinterface_refund", "target": "paymentrefundresult", "relation": "references", "confidence": "EXTRACTED", "source_file": "src/Payment/Gateway/PaymentGatewayInterface.php", "source_location": "L27", "weight": 1.0, "context": "return_type"}, {"source": "users_hamed_pj_my_pj_clinic_pro_clinicpro_src_payment_gateway_paymentgatewayinterface_php", "target": "gateway_paymentgatewayinterface_reverse", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/Payment/Gateway/PaymentGatewayInterface.php", "source_location": "L32", "weight": 1.0}, {"source": "gateway_paymentgatewayinterface_reverse", "target": "paymentrefundresult", "relation": "references", "confidence": "EXTRACTED", "source_file": "src/Payment/Gateway/PaymentGatewayInterface.php", "source_location": "L32", "weight": 1.0, "context": "return_type"}], "raw_calls": []}
|
||||
graphify-out/cache/ast/v0.8.44/fd1674b078ae8f40b12cd99ad4060af738193c73629de43afdd2ef75b4d12b2b.json
Vendored
+1
File diff suppressed because one or more lines are too long
graphify-out/cache/ast/v0.8.44/fe83975f003f964e3ae9fc1ac9c0b5354ce8cf02fe51ef3dfaee6b3a766a2452.json
Vendored
+1
File diff suppressed because one or more lines are too long
Vendored
+1
-1
File diff suppressed because one or more lines are too long
+9004
-1745
File diff suppressed because it is too large
Load Diff
+188
-98
@@ -70,8 +70,8 @@
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"assets/admin/components/ui/Modal.tsx": {
|
||||
"mtime": 1781106752.1961486,
|
||||
"ast_hash": "f465bb8cc877c22477bd42184b57bce0",
|
||||
"mtime": 1782979832.1321452,
|
||||
"ast_hash": "577f5b6a650443b72262fd70e3704d4c",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"assets/admin/components/ui/NotificationMobileCard.tsx": {
|
||||
@@ -90,8 +90,8 @@
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"assets/admin/components/ui/PersianCalendar.tsx": {
|
||||
"mtime": 1782404799.2521334,
|
||||
"ast_hash": "1b9e2f3b55c381a175b659ba43503239",
|
||||
"mtime": 1782979864.1043193,
|
||||
"ast_hash": "d65b0ac6c2fc4451315d73ea8a669196",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"assets/admin/components/ui/PersianDateInput.tsx": {
|
||||
@@ -165,18 +165,18 @@
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"assets/admin/pages/AdminSubscriptionPage.tsx": {
|
||||
"mtime": 1782259093.510682,
|
||||
"ast_hash": "fee412655919a9a2d8759048f1912aa7",
|
||||
"mtime": 1783014651.0181222,
|
||||
"ast_hash": "f2502ed4238124e7d9b86857593bebdf",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"assets/admin/pages/AppointmentDetailPage.tsx": {
|
||||
"mtime": 1781281676.685875,
|
||||
"ast_hash": "56ef1e5cd55740f981751ae118275b04",
|
||||
"mtime": 1782992372.1432073,
|
||||
"ast_hash": "9cf58f2636dd09e245edd9e28d1829fe",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"assets/admin/pages/AppointmentsPage.tsx": {
|
||||
"mtime": 1782364900.2562063,
|
||||
"ast_hash": "eb797b50af9ce789b366056daf66d79e",
|
||||
"mtime": 1783014651.0018947,
|
||||
"ast_hash": "9b2a650e0f7b884341399dfac438ee0a",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"assets/admin/pages/BlogFormPage.tsx": {
|
||||
@@ -200,8 +200,8 @@
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"assets/admin/pages/ClinicDetailPage.tsx": {
|
||||
"mtime": 1782367864.110122,
|
||||
"ast_hash": "d8e7bd41d05e02e95fc588d1b855491e",
|
||||
"mtime": 1783014566.3569148,
|
||||
"ast_hash": "0b9752fdf176101b09568cd96adfab58",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"assets/admin/pages/ClinicFormPage.tsx": {
|
||||
@@ -215,8 +215,8 @@
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"assets/admin/pages/ClinicsPage.tsx": {
|
||||
"mtime": 1781869963.5032022,
|
||||
"ast_hash": "48738dd7d6e256367b405da8510820e9",
|
||||
"mtime": 1783014650.9975634,
|
||||
"ast_hash": "9821e090ed254341b6e0a94b1e30da7d",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"assets/admin/pages/CommentsPage.tsx": {
|
||||
@@ -225,18 +225,18 @@
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"assets/admin/pages/DashboardPage.tsx": {
|
||||
"mtime": 1782304698.5288823,
|
||||
"ast_hash": "697de789809cf2c5963152244a82f6b4",
|
||||
"mtime": 1783014538.7834437,
|
||||
"ast_hash": "7fda4f20c50443ec72ea00a7d92816e3",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"assets/admin/pages/DoctorDetailPage.tsx": {
|
||||
"mtime": 1782366852.7153738,
|
||||
"ast_hash": "bdf631e69362e11a2d0a54d08764407d",
|
||||
"mtime": 1783014580.2052991,
|
||||
"ast_hash": "56eb0dfe4c7bf715ac61c245d05ba36f",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"assets/admin/pages/DoctorFormPage.tsx": {
|
||||
"mtime": 1781869880.8183048,
|
||||
"ast_hash": "dd670a1ca1acbe444ddf081d51468076",
|
||||
"mtime": 1782978917.310526,
|
||||
"ast_hash": "37975f566f63aa8efbfb69e0b25b3ec5",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"assets/admin/pages/DoctorProfilePage.tsx": {
|
||||
@@ -245,13 +245,13 @@
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"assets/admin/pages/DoctorsPage.tsx": {
|
||||
"mtime": 1782291104.7572682,
|
||||
"ast_hash": "a90156fa17945bddd6d5e89a36131e22",
|
||||
"mtime": 1783014538.7828207,
|
||||
"ast_hash": "6cf2c963ef00401631e8d519b5f9b0ed",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"assets/admin/pages/FinancialReportPage.tsx": {
|
||||
"mtime": 1782293469.8242764,
|
||||
"ast_hash": "96f9755045ce008d3d34fe35f8cab334",
|
||||
"mtime": 1783014538.788071,
|
||||
"ast_hash": "471bacb2480d911d8659e3adb72de194",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"assets/admin/pages/InsurancePricingPage.tsx": {
|
||||
@@ -290,18 +290,18 @@
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"assets/admin/pages/PaymentDetailPage.tsx": {
|
||||
"mtime": 1781110095.4394236,
|
||||
"ast_hash": "e702057d20244a2229622f52fd7638a6",
|
||||
"mtime": 1783010796.4325852,
|
||||
"ast_hash": "5e996e7b610a7826f35206b3e18f2c70",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"assets/admin/pages/PaymentsPage.tsx": {
|
||||
"mtime": 1781819421.7654989,
|
||||
"ast_hash": "359060c2497105b85c71f466eeaff53a",
|
||||
"mtime": 1783014538.78235,
|
||||
"ast_hash": "0e2cad0f531169ccd722cc7efded481a",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"assets/admin/pages/PreRegistrationsPage.tsx": {
|
||||
"mtime": 1781252529.8164945,
|
||||
"ast_hash": "6187f3752f5278f0fc9d583a20c9b5b3",
|
||||
"mtime": 1783014651.0085008,
|
||||
"ast_hash": "54355562c5a5c8b1a5affd1c3427dfed",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"assets/admin/pages/RatingsPage.tsx": {
|
||||
@@ -315,18 +315,18 @@
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"assets/admin/pages/RepresentationFinancePage.tsx": {
|
||||
"mtime": 1782318800.574076,
|
||||
"ast_hash": "dad16f2ba84938aca1d449d8e1c83eb4",
|
||||
"mtime": 1783014651.0118818,
|
||||
"ast_hash": "f0fd004929edc44e4d939a706bd5809c",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"assets/admin/pages/RepresentationProfilePage.tsx": {
|
||||
"mtime": 1782404861.8782403,
|
||||
"ast_hash": "96667fc83e8615220f4cac2d1f48d3a2",
|
||||
"mtime": 1783014651.021187,
|
||||
"ast_hash": "d934c8007e2f9ad68fd8de59192331c4",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"assets/admin/pages/RepresentationSettlementPage.tsx": {
|
||||
"mtime": 1782728407.0997715,
|
||||
"ast_hash": "a32a0e43ff05aa409ebf2fa0c5f6a4f4",
|
||||
"mtime": 1783014651.0150015,
|
||||
"ast_hash": "87c76a7946e4fd7ffd9ce47c4e355287",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"assets/admin/pages/RepresentationsPage.tsx": {
|
||||
@@ -345,8 +345,8 @@
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"assets/admin/pages/SettingsPage.tsx": {
|
||||
"mtime": 1782975327.2297547,
|
||||
"ast_hash": "b20c69938bd37c5db0e5b66a1ba3080f",
|
||||
"mtime": 1783010796.4329321,
|
||||
"ast_hash": "e70d4f6c19b088d4c8bb6bdd57b32bdb",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"assets/admin/pages/SettlementDetailPage.tsx": {
|
||||
@@ -365,18 +365,18 @@
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"assets/admin/pages/SmsWalletPage.tsx": {
|
||||
"mtime": 1782253591.7398412,
|
||||
"ast_hash": "13bdc0b62d3ff40dc92a3a8eb6084929",
|
||||
"mtime": 1783014651.0052793,
|
||||
"ast_hash": "6a10dbd574fe40dd0a7978dffd88db66",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"assets/admin/pages/StaffPage.tsx": {
|
||||
"mtime": 1781516938.5586853,
|
||||
"ast_hash": "e0485bd57fd3439640a73b0fee25f6d6",
|
||||
"mtime": 1783014538.7917976,
|
||||
"ast_hash": "197932193ce83f478062e74bff2883af",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"assets/admin/pages/SubscriptionPage.tsx": {
|
||||
"mtime": 1782897125.5820823,
|
||||
"ast_hash": "edb160fc9e85f915400426c76610e8c4",
|
||||
"mtime": 1782997913.0032132,
|
||||
"ast_hash": "275eb20d0aafcd6fa5f35c0c74dbe8f5",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"assets/admin/pages/UserDetailPage.tsx": {
|
||||
@@ -400,8 +400,8 @@
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"assets/admin/types/index.ts": {
|
||||
"mtime": 1782974093.73864,
|
||||
"ast_hash": "976545bf4ab31428db0fe23c17c23b5f",
|
||||
"mtime": 1783010796.4332225,
|
||||
"ast_hash": "e7305bcff435adaa9df6a2c42a992924",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"assets/app.js": {
|
||||
@@ -810,8 +810,8 @@
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"src/Admin/Controller/AdminApiController.php": {
|
||||
"mtime": 1782929751.8803875,
|
||||
"ast_hash": "8e5c78db08130ce9f65763e3306cc291",
|
||||
"mtime": 1783010796.434586,
|
||||
"ast_hash": "dd608da59b6af600e7a755b63ad0973a",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"src/Admin/Controller/AdminController.php": {
|
||||
@@ -1150,8 +1150,8 @@
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"src/Config/Controller/SiteConfigController.php": {
|
||||
"mtime": 1782974471.6251059,
|
||||
"ast_hash": "6bec4d13bccff8d60ceee16d65e6c71c",
|
||||
"mtime": 1783010796.4351387,
|
||||
"ast_hash": "e4424874defd966d41c4445dbd629806",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"src/Config/Entity/SiteConfig.php": {
|
||||
@@ -1180,8 +1180,8 @@
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"src/Doctor/Controller/DoctorController.php": {
|
||||
"mtime": 1782931944.4072063,
|
||||
"ast_hash": "2dd80d4ed9ec5a18474c17d7697cfee8",
|
||||
"mtime": 1782978998.6554778,
|
||||
"ast_hash": "86fbb75fbf607a364e8b98bcf921076a",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"src/Doctor/Entity/Doctor.php": {
|
||||
@@ -1200,8 +1200,8 @@
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"src/Doctor/Repository/DoctorRepository.php": {
|
||||
"mtime": 1782728407.1963685,
|
||||
"ast_hash": "e45b9dfd55967b2bb5082c25d947293b",
|
||||
"mtime": 1782977943.3100293,
|
||||
"ast_hash": "8107334c65e7a5db72bfe6f94875b463",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"src/DoctorService/Controller/DoctorServiceController.php": {
|
||||
@@ -1360,33 +1360,33 @@
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"src/Payment/Controller/PaymentController.php": {
|
||||
"mtime": 1782974625.5218852,
|
||||
"ast_hash": "1d84377c36b7d689201bc5324a2a0731",
|
||||
"mtime": 1783011733.758226,
|
||||
"ast_hash": "a4dbad9ee7aa5df9aed3acf2d7f89ba9",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"src/Payment/Entity/Payment.php": {
|
||||
"mtime": 1782728407.1985424,
|
||||
"ast_hash": "e51a6e6ba0e8ee390d56474f58c6a660",
|
||||
"mtime": 1782995955.1895328,
|
||||
"ast_hash": "561a43f66c1fbbb5ea39ff0aa407f442",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"src/Payment/Gateway/MellatGateway.php": {
|
||||
"mtime": 1782896964.9076507,
|
||||
"ast_hash": "67b1f4180e7bc36425229c9a9c1f2fa7",
|
||||
"mtime": 1783010796.4370883,
|
||||
"ast_hash": "8cd5f8a90d5b00606c4d2f0d26832d8c",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"src/Payment/Gateway/MockGateway.php": {
|
||||
"mtime": 1782896968.6033201,
|
||||
"ast_hash": "69fbe77ed2ae3a608171039dc1c70b97",
|
||||
"mtime": 1783010796.4373336,
|
||||
"ast_hash": "974465e34e29020de2ddc3d9bd70a7d5",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"src/Payment/Gateway/PaymentGatewayInterface.php": {
|
||||
"mtime": 1782896961.142725,
|
||||
"ast_hash": "bb1e00f14c34dbf92e95c97d374655b4",
|
||||
"mtime": 1783010796.4378414,
|
||||
"ast_hash": "94f2c47ea97cae77f3864f71dd3d2bea",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"src/Payment/Gateway/PaymentInitResult.php": {
|
||||
"mtime": 1781012933.0592759,
|
||||
"ast_hash": "8c38c1536f6bf6bd0bac079ed8dd5939",
|
||||
"mtime": 1782981352.8312612,
|
||||
"ast_hash": "35dd5ee58868eef69c83373c48424cc0",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"src/Payment/Gateway/PaymentVerifyResult.php": {
|
||||
@@ -1395,13 +1395,13 @@
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"src/Payment/Gateway/SepGateway.php": {
|
||||
"mtime": 1782896967.2453976,
|
||||
"ast_hash": "3f729de2819cf3691231152b3f40924a",
|
||||
"mtime": 1783010796.4384458,
|
||||
"ast_hash": "92c36f974c3d975325585523c06607af",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"src/Payment/Repository/PaymentRepository.php": {
|
||||
"mtime": 1782728407.1991549,
|
||||
"ast_hash": "28807b35e2c83ddd917bb2914cc71175",
|
||||
"mtime": 1782993112.2747712,
|
||||
"ast_hash": "838b2371c0a6c992371ef9ee13dffcb7",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"src/Payment/Service/CircuitBreakerService.php": {
|
||||
@@ -1445,8 +1445,8 @@
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"src/Representation/Controller/RepresentationActionController.php": {
|
||||
"mtime": 1782728407.200476,
|
||||
"ast_hash": "2e713e442ac0f71bcf2aebc00324d126",
|
||||
"mtime": 1782979010.2578533,
|
||||
"ast_hash": "7468f7a2aaa928ef0150fa745267e765",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"src/Representation/Controller/RepresentationController.php": {
|
||||
@@ -1565,8 +1565,8 @@
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"src/Shared/EventSubscriber/SecurityHeadersSubscriber.php": {
|
||||
"mtime": 1782728407.2032897,
|
||||
"ast_hash": "57d66396929ab5b7823859143ec1f563",
|
||||
"mtime": 1783010796.4408703,
|
||||
"ast_hash": "80fd13b7873c9e2bbdef6781f80e30ab",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"src/Shared/Exception/AppException.php": {
|
||||
@@ -1610,18 +1610,18 @@
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"src/Sms/Controller/SmsWalletController.php": {
|
||||
"mtime": 1782894791.5387394,
|
||||
"ast_hash": "6cf62fad0a8d8cfb3831f09c44a2d49c",
|
||||
"mtime": 1782998941.568915,
|
||||
"ast_hash": "50516e1d7620ba2aa7e98573777e7d8d",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"src/Sms/Entity/SmsLog.php": {
|
||||
"mtime": 1782902823.9580002,
|
||||
"ast_hash": "42a038068db64c9b94f3ab6f99a51cd8",
|
||||
"mtime": 1783012949.94825,
|
||||
"ast_hash": "38a0149a5bffac7b9079a0628ee8a268",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"src/Sms/Entity/SmsMessageTemplate.php": {
|
||||
"mtime": 1782902828.6619399,
|
||||
"ast_hash": "0c8f32c4fab56c8d392dfe11c937c9a3",
|
||||
"mtime": 1783013406.3586075,
|
||||
"ast_hash": "d61835bd817a3c614ac1f7ec4190cff2",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"src/Sms/Entity/SmsSettings.php": {
|
||||
@@ -1765,8 +1765,8 @@
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"src/Subscription/Repository/ClinicSubscriptionRepository.php": {
|
||||
"mtime": 1781516938.5827265,
|
||||
"ast_hash": "1dd25115699856a6c151e036c5bfddc0",
|
||||
"mtime": 1783010796.4415107,
|
||||
"ast_hash": "fe446782e41ca4566bc642ee87621b8f",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"src/Subscription/Repository/SubscriptionPeriodRepository.php": {
|
||||
@@ -1780,8 +1780,8 @@
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"src/Subscription/Service/SubscriptionService.php": {
|
||||
"mtime": 1781516938.5831344,
|
||||
"ast_hash": "991a261d858c934c4010e2cae9e59990",
|
||||
"mtime": 1783010796.4419346,
|
||||
"ast_hash": "df1c35a147116e7a52139e23bf0024c5",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"src/Tag/Controller/TagController.php": {
|
||||
@@ -2260,8 +2260,8 @@
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"config/packages/security.yaml": {
|
||||
"mtime": 1781799523.4107985,
|
||||
"ast_hash": "16c94112d88bc80b57a49c1157059a2f",
|
||||
"mtime": 1782995001.0929694,
|
||||
"ast_hash": "3b126684770e87f7fef6545e099751fa",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"config/packages/twig.yaml": {
|
||||
@@ -2300,8 +2300,8 @@
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"config/services.yaml": {
|
||||
"mtime": 1782932864.251077,
|
||||
"ast_hash": "0cd5b457c6df19eb90acd03c130bd713",
|
||||
"mtime": 1782993263.0293136,
|
||||
"ast_hash": "27502355f3182447d5ff05d58ae0f27b",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"docs/Architecture_Audit.md": {
|
||||
@@ -2340,8 +2340,8 @@
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"docs/api/admin.md": {
|
||||
"mtime": 1782974658.9906943,
|
||||
"ast_hash": "5715227d2011fce8439a74c3d3324e20",
|
||||
"mtime": 1783010796.4335458,
|
||||
"ast_hash": "9ea60f062cfff03f17720e9931e1c262",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"docs/api/appointment-settings.md": {
|
||||
@@ -2395,8 +2395,8 @@
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"docs/api/doctor.md": {
|
||||
"mtime": 1782932001.1570988,
|
||||
"ast_hash": "166c5a9c884b17c23a53d9cb592266f4",
|
||||
"mtime": 1782979047.5438921,
|
||||
"ast_hash": "7f95fa1394ef1d84899929b5f2cf4d64",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"docs/api/insurance.md": {
|
||||
@@ -2415,8 +2415,8 @@
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"docs/api/payment.md": {
|
||||
"mtime": 1782974640.9762948,
|
||||
"ast_hash": "fc916697880a8f302f4766d0a071c679",
|
||||
"mtime": 1783011804.9949813,
|
||||
"ast_hash": "b4e46fcd33854944ea5b9e80172cb47f",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"docs/api/rating.md": {
|
||||
@@ -2425,8 +2425,8 @@
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"docs/api/representation.md": {
|
||||
"mtime": 1782728407.1112525,
|
||||
"ast_hash": "3f525b4581e326a353afc4a563f19fca",
|
||||
"mtime": 1782979067.5559928,
|
||||
"ast_hash": "0766b25592e2868c3e87d4e38958fa2e",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"docs/api/secretary.md": {
|
||||
@@ -2440,8 +2440,8 @@
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"docs/api/sms.md": {
|
||||
"mtime": 1782902976.009701,
|
||||
"ast_hash": "2654051c73dddf1e702d686ef5790a47",
|
||||
"mtime": 1783013072.0409873,
|
||||
"ast_hash": "fa27f7d1bb6c3241447f844133a400f5",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"docs/api/specialty.md": {
|
||||
@@ -3513,5 +3513,95 @@
|
||||
"mtime": 1782975691.9747198,
|
||||
"ast_hash": "9583fb5ebc728ab1014038ac44d1d09a",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"migrations/Version20260702115209.php": {
|
||||
"mtime": 1782993164.6661437,
|
||||
"ast_hash": "06a43da36c756d541b846d3ad023d282",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"src/Payment/Entity/PaymentLog.php": {
|
||||
"mtime": 1783010796.4357238,
|
||||
"ast_hash": "8137c4d61aaf49f4661783c8e8779e33",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"src/Payment/Gateway/GatewayFactory.php": {
|
||||
"mtime": 1783010796.4360023,
|
||||
"ast_hash": "c19dd16e34ac9af1f5364c4d96c5ecaa",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"src/Payment/Gateway/PaymentRefundResult.php": {
|
||||
"mtime": 1783010796.4381082,
|
||||
"ast_hash": "4e563c218cb33c5511a0618ca6b5d286",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"src/Payment/Repository/PaymentLogRepository.php": {
|
||||
"mtime": 1782993118.7011945,
|
||||
"ast_hash": "ea6eb55c4920775d5071457c5006f08d",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"src/Payment/Service/PaymentManager.php": {
|
||||
"mtime": 1783012974.905455,
|
||||
"ast_hash": "c968b32943ddf0363ac01fc8e6c9eb31",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"tests/Payment/MellatGatewayTest.php": {
|
||||
"mtime": 1782984645.104304,
|
||||
"ast_hash": "60cc79a004e9384bd2e1763d72bad268",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
".claude/prompt/admin-mobile-responsive.md": {
|
||||
"mtime": 1783014366.933033,
|
||||
"ast_hash": "70b0ba957159b75ea688cf026fdf5ac7",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
".claude/prompt/admin-payment-refund-reversal.md": {
|
||||
"mtime": 1783010796.4317427,
|
||||
"ast_hash": "ae73437b6945d08f135ac1667d110417",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
".claude/prompt/doctor-appointment-notification-sms.md": {
|
||||
"mtime": 1783012880.3920286,
|
||||
"ast_hash": "da92d8d2215f4951b4672a2b93384fe6",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
".claude/prompt/doctor-experience-activity-date.md": {
|
||||
"mtime": 1782978755.9218872,
|
||||
"ast_hash": "378ff8eadaf7125d500f5e5afd89589e",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
".claude/prompt/fix-admin-modal-and-calendar.md": {
|
||||
"mtime": 1782979774.5608149,
|
||||
"ast_hash": "d382433480e97dd3ee0725afc1eeb764",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
".claude/prompt/fix-doctors-list-location-filter.md": {
|
||||
"mtime": 1782977589.9465406,
|
||||
"ast_hash": "bc323ba27f13267d0e7c7b7d8ebff915",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
".claude/prompt/mellat-production-soap.md": {
|
||||
"mtime": 1783010796.4320023,
|
||||
"ast_hash": "a14fa3dbbfcb2977e894f9b31287a363",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
".claude/prompt/mellat-sandbox-gateway.md": {
|
||||
"mtime": 1783010796.4322934,
|
||||
"ast_hash": "b4ff14e1ad3d9409092022a9eed15121",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
".claude/prompt/payment-flow-architecture.md": {
|
||||
"mtime": 1782992901.1053152,
|
||||
"ast_hash": "33e12cf7ccecbb8af5ecbf2fe736fa96",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
".claude/prompt/payment-single-flow-consolidation.md": {
|
||||
"mtime": 1782994765.4802427,
|
||||
"ast_hash": "1bd99b26cca55aac8a662fbacf4e2292",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
".claude/prompt/sms-price-and-wallet-settings.md": {
|
||||
"mtime": 1782998857.27679,
|
||||
"ast_hash": "6884dbc77045e3a46508c1ea7b0b8206",
|
||||
"semantic_hash": ""
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user