Add migration to include site_name column in cities table
This commit is contained in:
@@ -370,6 +370,7 @@ function ProvincesTab() {
|
||||
|
||||
const citySchema = z.object({
|
||||
name: z.string().min(1, 'نام الزامی است'),
|
||||
site_name: z.string().optional(),
|
||||
province_id: z.number().nullable().optional(),
|
||||
weight: z.string().optional(),
|
||||
status: z.string().optional(),
|
||||
@@ -436,6 +437,7 @@ function CitiesTab() {
|
||||
status: parseInt(d.status ?? '1'),
|
||||
province_id: d.province_id ?? null,
|
||||
representation_id: d.representation_id ?? null,
|
||||
...(d.site_name?.trim() && { site_name: d.site_name.trim() }),
|
||||
...(d.contact_phone?.trim() && { contact_phone: d.contact_phone.trim() }),
|
||||
...(d.email?.trim() && { email: d.email.trim() }),
|
||||
...(d.description?.trim() && { description: d.description.trim() }),
|
||||
@@ -467,6 +469,7 @@ function CitiesTab() {
|
||||
setEditTarget(c);
|
||||
reset({
|
||||
name: c.name, weight: String(c.weight), status: String(c.status),
|
||||
site_name: c.site_name ?? '',
|
||||
province_id: c.province_id ?? null,
|
||||
representation_id: c.representation_id ?? null,
|
||||
contact_phone: c.contact_phone ?? '',
|
||||
@@ -482,6 +485,7 @@ function CitiesTab() {
|
||||
const columns: Column<City>[] = [
|
||||
{ key: 'id', sortable: true, header: 'شناسه', render: (c) => <span className="muted" style={{ fontFamily: 'monospace', fontSize: 12 }}>{c.id}</span> },
|
||||
{ key: 'name', header: 'نام', render: (c) => <b>{c.name}</b> },
|
||||
{ key: 'site_name', header: 'نام سایت', render: (c) => c.site_name ? <span>{c.site_name}</span> : <span className="muted">—</span> },
|
||||
{ key: 'province_id', header: 'استان', render: (c) => c.province_id ? <span className="chip">{provinceMap[c.province_id] ?? `#${c.province_id}`}</span> : <span className="muted">—</span> },
|
||||
{ key: 'representation_id', header: 'نماینده', render: (c) => c.representation_id ? <span className="muted" style={{ fontSize: 12 }}>{representationMap[c.representation_id] ?? `#${c.representation_id}`}</span> : <span className="muted">—</span> },
|
||||
{ key: 'domain', header: 'دامنه', render: (c) => c.domain ? <span className="muted" style={{ fontFamily: 'monospace', fontSize: 12 }}>{c.domain}</span> : <span className="muted">—</span> },
|
||||
@@ -511,6 +515,10 @@ function CitiesTab() {
|
||||
<input {...register('name')} className="input" placeholder="نام شهر" />
|
||||
{errors.name && <p className="err-text">{errors.name.message}</p>}
|
||||
</div>
|
||||
<div className="form-row" style={{ marginTop: 12 }}>
|
||||
<label>نام سایت</label>
|
||||
<input {...register('site_name')} className="input" placeholder="مثال: یزد نوبت" />
|
||||
</div>
|
||||
<div style={{ display: 'grid', gridTemplateColumns: '1fr 1fr', gap: 12, marginTop: 12 }}>
|
||||
<div className="form-row">
|
||||
<label>استان</label>
|
||||
|
||||
@@ -230,6 +230,7 @@ export interface City {
|
||||
id: number;
|
||||
uuid: string;
|
||||
name: string;
|
||||
site_name?: string | null;
|
||||
status: number;
|
||||
weight: number;
|
||||
province_id: number | null;
|
||||
|
||||
+32
-23
@@ -3,6 +3,7 @@
|
||||
"id": 129,
|
||||
"uuid": "7bfba4b5-646b-11f1-84d7-f26ca1845824",
|
||||
"name": "اراک",
|
||||
"site_name": "اراک نوبت",
|
||||
"status": 1,
|
||||
"weight": 0,
|
||||
"province_id": 28,
|
||||
@@ -26,6 +27,7 @@
|
||||
"id": 103,
|
||||
"uuid": "7bfb6d65-646b-11f1-84d7-f26ca1845824",
|
||||
"name": "اردبیل",
|
||||
"site_name": "اردبیل نوبت",
|
||||
"status": 1,
|
||||
"weight": 0,
|
||||
"province_id": 3,
|
||||
@@ -49,6 +51,7 @@
|
||||
"id": 102,
|
||||
"uuid": "7bfb6ac3-646b-11f1-84d7-f26ca1845824",
|
||||
"name": "ارومیه",
|
||||
"site_name": "ارومیه نوبت",
|
||||
"status": 1,
|
||||
"weight": 0,
|
||||
"province_id": 2,
|
||||
@@ -72,6 +75,7 @@
|
||||
"id": 104,
|
||||
"uuid": "7bfb6f78-646b-11f1-84d7-f26ca1845824",
|
||||
"name": "اصفهان",
|
||||
"site_name": "اصفهان نوبت",
|
||||
"status": 1,
|
||||
"weight": 0,
|
||||
"province_id": 4,
|
||||
@@ -95,6 +99,7 @@
|
||||
"id": 113,
|
||||
"uuid": "7bfb8171-646b-11f1-84d7-f26ca1845824",
|
||||
"name": "اهواز",
|
||||
"site_name": "اهواز نوبت",
|
||||
"status": 1,
|
||||
"weight": 0,
|
||||
"province_id": 13,
|
||||
@@ -118,6 +123,7 @@
|
||||
"id": 106,
|
||||
"uuid": "7bfb738a-646b-11f1-84d7-f26ca1845824",
|
||||
"name": "ایلام",
|
||||
"site_name": "ایلام نوبت",
|
||||
"status": 1,
|
||||
"weight": 0,
|
||||
"province_id": 6,
|
||||
@@ -141,6 +147,7 @@
|
||||
"id": 112,
|
||||
"uuid": "7bfb7f73-646b-11f1-84d7-f26ca1845824",
|
||||
"name": "بجنورد",
|
||||
"site_name": "بجنورد نوبت",
|
||||
"status": 1,
|
||||
"weight": 0,
|
||||
"province_id": 12,
|
||||
@@ -164,6 +171,7 @@
|
||||
"id": 130,
|
||||
"uuid": "7bfba6b9-646b-11f1-84d7-f26ca1845824",
|
||||
"name": "بندرعباس",
|
||||
"site_name": "بندرعباس نوبت",
|
||||
"status": 1,
|
||||
"weight": 0,
|
||||
"province_id": 29,
|
||||
@@ -187,6 +195,7 @@
|
||||
"id": 107,
|
||||
"uuid": "7bfb7583-646b-11f1-84d7-f26ca1845824",
|
||||
"name": "بوشهر",
|
||||
"site_name": "بوشهر نوبت",
|
||||
"status": 1,
|
||||
"weight": 0,
|
||||
"province_id": 7,
|
||||
@@ -210,6 +219,7 @@
|
||||
"id": 110,
|
||||
"uuid": "7bfb7b9b-646b-11f1-84d7-f26ca1845824",
|
||||
"name": "بیرجند",
|
||||
"site_name": "بیرجند نوبت",
|
||||
"status": 1,
|
||||
"weight": 0,
|
||||
"province_id": 10,
|
||||
@@ -233,6 +243,7 @@
|
||||
"id": 101,
|
||||
"uuid": "7bfb684b-646b-11f1-84d7-f26ca1845824",
|
||||
"name": "تبریز",
|
||||
"site_name": "تبریز نوبت",
|
||||
"status": 1,
|
||||
"weight": 0,
|
||||
"province_id": 1,
|
||||
@@ -256,6 +267,7 @@
|
||||
"id": 108,
|
||||
"uuid": "7bfb777e-646b-11f1-84d7-f26ca1845824",
|
||||
"name": "تهران",
|
||||
"site_name": "تهران نوبت",
|
||||
"status": 1,
|
||||
"weight": 0,
|
||||
"province_id": 8,
|
||||
@@ -279,6 +291,7 @@
|
||||
"id": 127,
|
||||
"uuid": "7bfba0b0-646b-11f1-84d7-f26ca1845824",
|
||||
"name": "خرمآباد",
|
||||
"site_name": "خرمآباد نوبت",
|
||||
"status": 1,
|
||||
"weight": 0,
|
||||
"province_id": 26,
|
||||
@@ -302,6 +315,7 @@
|
||||
"id": 126,
|
||||
"uuid": "7bfb9ea9-646b-11f1-84d7-f26ca1845824",
|
||||
"name": "رشت",
|
||||
"site_name": "رشت نوبت",
|
||||
"status": 1,
|
||||
"weight": 0,
|
||||
"province_id": 25,
|
||||
@@ -325,6 +339,7 @@
|
||||
"id": 116,
|
||||
"uuid": "7bfb88eb-646b-11f1-84d7-f26ca1845824",
|
||||
"name": "زاهدان",
|
||||
"site_name": "زاهدان نوبت",
|
||||
"status": 1,
|
||||
"weight": 0,
|
||||
"province_id": 16,
|
||||
@@ -348,6 +363,7 @@
|
||||
"id": 114,
|
||||
"uuid": "7bfb8454-646b-11f1-84d7-f26ca1845824",
|
||||
"name": "زنجان",
|
||||
"site_name": "زنجان نوبت",
|
||||
"status": 1,
|
||||
"weight": 0,
|
||||
"province_id": 14,
|
||||
@@ -371,6 +387,7 @@
|
||||
"id": 128,
|
||||
"uuid": "7bfba2b0-646b-11f1-84d7-f26ca1845824",
|
||||
"name": "ساری",
|
||||
"site_name": "ساری نوبت",
|
||||
"status": 1,
|
||||
"weight": 0,
|
||||
"province_id": 27,
|
||||
@@ -394,6 +411,7 @@
|
||||
"id": 115,
|
||||
"uuid": "7bfb8666-646b-11f1-84d7-f26ca1845824",
|
||||
"name": "سمنان",
|
||||
"site_name": "سمنان نوبت",
|
||||
"status": 1,
|
||||
"weight": 0,
|
||||
"province_id": 15,
|
||||
@@ -417,6 +435,7 @@
|
||||
"id": 120,
|
||||
"uuid": "7bfb90fb-646b-11f1-84d7-f26ca1845824",
|
||||
"name": "سنندج",
|
||||
"site_name": "سنندج نوبت",
|
||||
"status": 1,
|
||||
"weight": 0,
|
||||
"province_id": 20,
|
||||
@@ -440,6 +459,7 @@
|
||||
"id": 109,
|
||||
"uuid": "7bfb797f-646b-11f1-84d7-f26ca1845824",
|
||||
"name": "شهرکرد",
|
||||
"site_name": "شهرکرد نوبت",
|
||||
"status": 1,
|
||||
"weight": 0,
|
||||
"province_id": 9,
|
||||
@@ -463,6 +483,7 @@
|
||||
"id": 117,
|
||||
"uuid": "7bfb8b02-646b-11f1-84d7-f26ca1845824",
|
||||
"name": "شیراز",
|
||||
"site_name": "شیراز نوبت",
|
||||
"status": 1,
|
||||
"weight": 0,
|
||||
"province_id": 17,
|
||||
@@ -486,6 +507,7 @@
|
||||
"id": 118,
|
||||
"uuid": "7bfb8d02-646b-11f1-84d7-f26ca1845824",
|
||||
"name": "قزوین",
|
||||
"site_name": "قزوین نوبت",
|
||||
"status": 1,
|
||||
"weight": 0,
|
||||
"province_id": 18,
|
||||
@@ -509,6 +531,7 @@
|
||||
"id": 119,
|
||||
"uuid": "7bfb8efd-646b-11f1-84d7-f26ca1845824",
|
||||
"name": "قم",
|
||||
"site_name": "قم نوبت",
|
||||
"status": 1,
|
||||
"weight": 0,
|
||||
"province_id": 19,
|
||||
@@ -532,6 +555,7 @@
|
||||
"id": 105,
|
||||
"uuid": "7bfb718c-646b-11f1-84d7-f26ca1845824",
|
||||
"name": "کرج",
|
||||
"site_name": "کرج نوبت",
|
||||
"status": 1,
|
||||
"weight": 0,
|
||||
"province_id": 5,
|
||||
@@ -555,6 +579,7 @@
|
||||
"id": 121,
|
||||
"uuid": "7bfb93e4-646b-11f1-84d7-f26ca1845824",
|
||||
"name": "کرمان",
|
||||
"site_name": "کرمان نوبت",
|
||||
"status": 1,
|
||||
"weight": 0,
|
||||
"province_id": 21,
|
||||
@@ -578,6 +603,7 @@
|
||||
"id": 122,
|
||||
"uuid": "7bfb9685-646b-11f1-84d7-f26ca1845824",
|
||||
"name": "کرمانشاه",
|
||||
"site_name": "کرمانشاه نوبت",
|
||||
"status": 1,
|
||||
"weight": 0,
|
||||
"province_id": 22,
|
||||
@@ -597,33 +623,11 @@
|
||||
},
|
||||
"logo_url": null
|
||||
},
|
||||
{
|
||||
"id": 124,
|
||||
"uuid": "7bfb9ab1-646b-11f1-84d7-f26ca1845824",
|
||||
"name": "گچساران",
|
||||
"status": 1,
|
||||
"weight": 0,
|
||||
"province_id": 23,
|
||||
"province_name": "کهگیلویه و بویراحمد",
|
||||
"representation_id": null,
|
||||
"contact_phone": "+98 074 33333333",
|
||||
"email": "nobat724@gmail.com",
|
||||
"description": "یاسوج نوبت، سامانه نوبتدهی آنلاین پزشکی در کهگیلویه و بویراحمد. دسترسی به پزشکان متخصص و مراکز درمانی. یاسوج نوبت باعث کاهش اتلاف وقت و هزینه میشود.",
|
||||
"slogan": "نوبتدهی پزشکان یاسوج، بدون اتلاف وقت و هزینه",
|
||||
"domain": "yasuj-nobat.ir",
|
||||
"keywords": "نوبت پزشک یاسوج, مراکز درمانی کهگیلویه و بویراحمد, متخصصین یاسوج, کلینیکهای یاسوج, درمانگاههای یاسوج",
|
||||
"footer_description": "یاسوج نوبت، سامانه جامع نوبتدهی پزشکی در استان کهگیلویه و بویراحمد. رزرو نوبت از پزشکان و مراکز درمانی یاسوج بدون نیاز به مراجعه حضوری.",
|
||||
"social_media": {
|
||||
"instagram": "yasuj_nobat",
|
||||
"telegram": "yasuj_nobat",
|
||||
"whatsapp": "989120000022"
|
||||
},
|
||||
"logo_url": null
|
||||
},
|
||||
{
|
||||
"id": 125,
|
||||
"uuid": "7bfb9cb5-646b-11f1-84d7-f26ca1845824",
|
||||
"name": "گرگان",
|
||||
"site_name": "گرگان نوبت",
|
||||
"status": 1,
|
||||
"weight": 0,
|
||||
"province_id": 24,
|
||||
@@ -647,6 +651,7 @@
|
||||
"id": 111,
|
||||
"uuid": "7bfb7d86-646b-11f1-84d7-f26ca1845824",
|
||||
"name": "مشهد",
|
||||
"site_name": "مشهد نوبت",
|
||||
"status": 1,
|
||||
"weight": 0,
|
||||
"province_id": 11,
|
||||
@@ -670,6 +675,7 @@
|
||||
"id": 600,
|
||||
"uuid": "7bfbad3c-646b-11f1-84d7-f26ca1845824",
|
||||
"name": "نوبت 724",
|
||||
"site_name": "نوبت 724 نوبت",
|
||||
"status": 1,
|
||||
"weight": 0,
|
||||
"province_id": null,
|
||||
@@ -693,6 +699,7 @@
|
||||
"id": 131,
|
||||
"uuid": "7bfba8b7-646b-11f1-84d7-f26ca1845824",
|
||||
"name": "همدان",
|
||||
"site_name": "همدان نوبت",
|
||||
"status": 1,
|
||||
"weight": 0,
|
||||
"province_id": 30,
|
||||
@@ -716,6 +723,7 @@
|
||||
"id": 123,
|
||||
"uuid": "7bfb989e-646b-11f1-84d7-f26ca1845824",
|
||||
"name": "یاسوج",
|
||||
"site_name": "یاسوج نوبت",
|
||||
"status": 1,
|
||||
"weight": 0,
|
||||
"province_id": 23,
|
||||
@@ -739,6 +747,7 @@
|
||||
"id": 132,
|
||||
"uuid": "7bfbaacd-646b-11f1-84d7-f26ca1845824",
|
||||
"name": "یزد",
|
||||
"site_name": "یزد نوبت",
|
||||
"status": 1,
|
||||
"weight": 0,
|
||||
"province_id": 100,
|
||||
|
||||
@@ -177,6 +177,7 @@ Create a new city.
|
||||
```json
|
||||
{
|
||||
"name": "تهران",
|
||||
"site_name": "تهران نوبت",
|
||||
"province_id": 1,
|
||||
"status": "active",
|
||||
"weight": 1
|
||||
@@ -186,9 +187,11 @@ Create a new city.
|
||||
| Field | Type | Required | Description |
|
||||
|-------|------|----------|-------------|
|
||||
| `name` | string | ✅ | City name |
|
||||
| `site_name` | string | ❌ | Public site name shown on the city's booking website (e.g. `"یزد نوبت"`) |
|
||||
| `province_id` | integer | ❌ | Parent province ID |
|
||||
| `status` | string | ❌ | `"active"` or `"inactive"` |
|
||||
| `weight` | integer | ❌ | Sort weight |
|
||||
| `contact_phone`, `email`, `description`, `slogan`, `domain`, `keywords`, `footer_description`, `social_media`, `logo_url` | mixed | ❌ | SEO / branding fields returned in the city object |
|
||||
|
||||
### Response `201`
|
||||
City object.
|
||||
|
||||
@@ -637,7 +637,6 @@
|
||||
"635": "Community 635",
|
||||
"636": "Community 636",
|
||||
"637": "Community 637",
|
||||
"638": "Community 638",
|
||||
"639": "Community 639",
|
||||
"640": "Community 640",
|
||||
"641": "Community 641",
|
||||
@@ -651,13 +650,11 @@
|
||||
"649": "Community 649",
|
||||
"650": "Community 650",
|
||||
"651": "Community 651",
|
||||
"652": "Community 652",
|
||||
"653": "Community 653",
|
||||
"654": "Community 654",
|
||||
"655": "Community 655",
|
||||
"656": "Community 656",
|
||||
"657": "Community 657",
|
||||
"658": "Community 658",
|
||||
"659": "Community 659",
|
||||
"660": "Community 660",
|
||||
"661": "Community 661",
|
||||
@@ -672,10 +669,7 @@
|
||||
"670": "Community 670",
|
||||
"671": "Community 671",
|
||||
"672": "Community 672",
|
||||
"673": "Community 673",
|
||||
"674": "Community 674",
|
||||
"675": "Community 675",
|
||||
"676": "Community 676",
|
||||
"677": "Community 677",
|
||||
"678": "Community 678",
|
||||
"679": "Community 679"
|
||||
|
||||
+93
-115
@@ -1,16 +1,16 @@
|
||||
# Graph Report - clinicpro (2026-07-01)
|
||||
# Graph Report - clinicpro (2026-07-02)
|
||||
|
||||
## Corpus Check
|
||||
- 672 files · ~472,879 words
|
||||
- 673 files · ~473,180 words
|
||||
- Verdict: corpus is large enough that graph structure adds value.
|
||||
|
||||
## Summary
|
||||
- 8457 nodes · 11652 edges · 680 communities (547 shown, 133 thin omitted)
|
||||
- 8465 nodes · 11664 edges · 674 communities (543 shown, 131 thin omitted)
|
||||
- Extraction: 98% EXTRACTED · 2% INFERRED · 0% AMBIGUOUS · INFERRED: 265 edges (avg confidence: 0.8)
|
||||
- Token cost: 0 input · 0 output
|
||||
|
||||
## Graph Freshness
|
||||
- Built from commit: `a31e8b43`
|
||||
- Built from commit: `a7d5d17b`
|
||||
- Run `git rev-parse HEAD` and compare to check if the graph is stale.
|
||||
- Run `graphify update .` after code changes (no API cost).
|
||||
|
||||
@@ -641,7 +641,6 @@
|
||||
- [[_COMMUNITY_Community 635|Community 635]]
|
||||
- [[_COMMUNITY_Community 636|Community 636]]
|
||||
- [[_COMMUNITY_Community 637|Community 637]]
|
||||
- [[_COMMUNITY_Community 638|Community 638]]
|
||||
- [[_COMMUNITY_Community 639|Community 639]]
|
||||
- [[_COMMUNITY_Community 640|Community 640]]
|
||||
- [[_COMMUNITY_Community 641|Community 641]]
|
||||
@@ -653,13 +652,11 @@
|
||||
- [[_COMMUNITY_Community 649|Community 649]]
|
||||
- [[_COMMUNITY_Community 650|Community 650]]
|
||||
- [[_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]]
|
||||
- [[_COMMUNITY_Community 659|Community 659]]
|
||||
- [[_COMMUNITY_Community 660|Community 660]]
|
||||
- [[_COMMUNITY_Community 661|Community 661]]
|
||||
@@ -673,10 +670,7 @@
|
||||
- [[_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]]
|
||||
@@ -698,33 +692,33 @@
|
||||
assets/admin/components/ServiceTariffModal.tsx → assets/admin/lib/utils.ts
|
||||
- `PersianDatePicker()` --calls--> `formatDate()` [EXTRACTED]
|
||||
assets/admin/components/ui/PersianDatePicker.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
|
||||
- `NewAppointmentModal()` --calls--> `useAuthStore` [EXTRACTED]
|
||||
assets/admin/pages/AppointmentsPage.tsx → assets/admin/stores/authStore.ts
|
||||
- `LogoUploadField()` --calls--> `useAuthStore` [EXTRACTED]
|
||||
assets/admin/pages/CategoriesPage.tsx → assets/admin/stores/authStore.ts
|
||||
|
||||
## Import Cycles
|
||||
- None detected.
|
||||
|
||||
## Communities (680 total, 133 thin omitted)
|
||||
## Communities (674 total, 131 thin omitted)
|
||||
|
||||
### Community 0 - "Community 0"
|
||||
Cohesion: 0.05
|
||||
Nodes (37): ALLOWED_ROLES, PrivateRoute(), PublicRoute(), RoleRoute(), queryClient, toastStyle, AddForm, addSchema (+29 more)
|
||||
Nodes (40): ALLOWED_ROLES, PrivateRoute(), PublicRoute(), RoleRoute(), queryClient, toastStyle, AddForm, addSchema (+32 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 (26): get, PaymentConfig, PaymentGatewayInfo, api, ApiError, getToken(), refreshOnce(), request() (+18 more)
|
||||
Cohesion: 0.08
|
||||
Nodes (23): get, PaymentConfig, PaymentGatewayInfo, api, ApiError, getToken(), refreshOnce(), request() (+15 more)
|
||||
|
||||
### Community 3 - "Community 3"
|
||||
Cohesion: 0.03
|
||||
Nodes (80): ApiResponse, PaginatedResponse, formatDate(), ALL_STATUSES, AppointmentDetailPage(), STATUS_FILTERS, FILTERS, Breakdown (+72 more)
|
||||
Cohesion: 0.05
|
||||
Nodes (42): ApiResponse, PaginatedResponse, formatDate(), STATUS_FILTERS, FILTERS, Breakdown, SOURCE_LABEL, Summary (+34 more)
|
||||
|
||||
### Community 4 - "Community 4"
|
||||
Cohesion: 0.06
|
||||
@@ -755,28 +749,28 @@ Cohesion: 0.04
|
||||
Nodes (46): Clinic Address Management, Clinic API, DELETE `/api/v1/admin/clinic/{clinicUuid}/doctor/{doctorUuid}`, `DELETE /api/v1/clinic/{clinicUuid}/address/{addressUuid}`, Errors, Errors, Errors, Errors (+38 more)
|
||||
|
||||
### Community 11 - "Community 11"
|
||||
Cohesion: 0.33
|
||||
Nodes (4): BlogController, JsonResponse, Request, User
|
||||
Cohesion: 0.05
|
||||
Nodes (48): usePaymentConfig(), ALL_STATUSES, SmsPage(), STATUS_LOG_META, Tab, TAG_FILTER_OPTIONS, TAG_LABELS, TemplateFormData (+40 more)
|
||||
|
||||
### Community 12 - "Community 12"
|
||||
Cohesion: 0.05
|
||||
Nodes (44): Clinic Doctor Invitation API, DELETE `/api/v1/admin/clinic/invitation/{invUuid}`, Errors, Errors, Errors, Errors, Errors, Errors (+36 more)
|
||||
|
||||
### Community 13 - "Community 13"
|
||||
Cohesion: 0.06
|
||||
Nodes (35): FreeVisitPrice(), Pricing, usePaymentConfig(), formatDateTime(), formatRial(), InsurancePricingPage(), LogsPage(), FinancialSummary (+27 more)
|
||||
Cohesion: 0.07
|
||||
Nodes (25): FreeVisitPrice(), Pricing, formatDateTime(), formatRial(), AppointmentDetailPage(), InsurancePricingPage(), FinancialSummary, MonthlyEntry (+17 more)
|
||||
|
||||
### Community 14 - "Community 14"
|
||||
Cohesion: 0.15
|
||||
Nodes (8): AppointmentSettingsController, Holiday, HolidayRepository, JsonResponse, Request, User, Doctor, ManagerRegistry
|
||||
|
||||
### Community 15 - "Community 15"
|
||||
Cohesion: 0.07
|
||||
Nodes (16): PaymentController, MellatGateway, MockGateway, SepGateway, JsonResponse, Payment, PaymentGatewayInterface, Request (+8 more)
|
||||
Cohesion: 0.09
|
||||
Nodes (13): PaymentController, MockGateway, SepGateway, JsonResponse, Payment, PaymentGatewayInterface, Request, Response (+5 more)
|
||||
|
||||
### Community 16 - "Community 16"
|
||||
Cohesion: 0.07
|
||||
Nodes (7): PatientSession, SmsWallet, Appointment, Collection, PatientRecord, self, SessionService
|
||||
Cohesion: 0.09
|
||||
Nodes (6): PatientSession, Appointment, Collection, PatientRecord, self, SessionService
|
||||
|
||||
### Community 17 - "Community 17"
|
||||
Cohesion: 0.05
|
||||
@@ -791,16 +785,16 @@ Cohesion: 0.20
|
||||
Nodes (8): AdminUser, ChangeRoleModal(), getPrimaryRole(), HUES_LIST, ROLE_META, ROLE_TABS, RoleBadge(), UserStats
|
||||
|
||||
### Community 20 - "Community 20"
|
||||
Cohesion: 0.15
|
||||
Cohesion: 0.14
|
||||
Nodes (3): AdminApiController, JsonResponse, Request
|
||||
|
||||
### Community 21 - "Community 21"
|
||||
Cohesion: 0.05
|
||||
Nodes (37): formatNumber(), ClinicDetailPage(), AdminCharts, AdminDashboard(), AdminRecent, AdminStats, APPT_CLS, APPT_COLOR (+29 more)
|
||||
Nodes (34): formatNumber(), ClinicDetailPage(), AdminCharts, AdminDashboard(), AdminRecent, AdminStats, APPT_CLS, APPT_COLOR (+26 more)
|
||||
|
||||
### Community 22 - "Community 22"
|
||||
Cohesion: 0.15
|
||||
Nodes (9): RatingController, Like, LikeRepository, JsonResponse, Request, User, Comment, ManagerRegistry (+1 more)
|
||||
Cohesion: 0.29
|
||||
Nodes (4): RatingController, JsonResponse, Request, User
|
||||
|
||||
### Community 23 - "Community 23"
|
||||
Cohesion: 0.05
|
||||
@@ -819,8 +813,8 @@ Cohesion: 0.15
|
||||
Nodes (7): InsuranceController, EntityInsurancePricing, EntityInsurancePricingRepository, JsonResponse, Request, User, ManagerRegistry
|
||||
|
||||
### Community 27 - "Community 27"
|
||||
Cohesion: 0.05
|
||||
Nodes (40): 55. 🟢 `GET` all tag, 56. 🟢 `GET` supplementary_insurance, 57. 🟢 `GET` categories list, 58. 🟢 `GET` all state, 59. 🟢 `GET` all city, 60. 🟢 `GET` all specially doctor, 61. 🔵 `POST` post, 62. 🟡 `PATCH` patch (+32 more)
|
||||
Cohesion: 0.06
|
||||
Nodes (35): 55. 🟢 `GET` all tag, 56. 🟢 `GET` supplementary_insurance, 57. 🟢 `GET` categories list, 58. 🟢 `GET` all state, 59. 🟢 `GET` all city, 60. 🟢 `GET` all specially doctor, 61. 🔵 `POST` post, 63. 🔴 `DELETE` DELETE (+27 more)
|
||||
|
||||
### Community 28 - "Community 28"
|
||||
Cohesion: 0.09
|
||||
@@ -843,8 +837,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.04
|
||||
Nodes (39): CoverageRow, Draft, KIND, TenantInsurance, ServiceTariffModal(), TariffResponse, TariffRow, Contract (+31 more)
|
||||
|
||||
### Community 34 - "Community 34"
|
||||
Cohesion: 0.06
|
||||
@@ -875,8 +869,8 @@ Cohesion: 0.09
|
||||
Nodes (4): User, PasswordAuthenticatedUserInterface, self, UserInterface
|
||||
|
||||
### Community 41 - "Community 41"
|
||||
Cohesion: 0.05
|
||||
Nodes (29): Contract, InsuranceOption, KIND_LABEL, CityForm, citySchema, ImportError, InsuranceForm, insuranceSchema (+21 more)
|
||||
Cohesion: 0.06
|
||||
Nodes (23): CityForm, citySchema, ImportError, InsuranceForm, insuranceSchema, LogoUploadField(), ProvinceForm, provinceSchema (+15 more)
|
||||
|
||||
### Community 42 - "Community 42"
|
||||
Cohesion: 0.07
|
||||
@@ -923,8 +917,8 @@ Cohesion: 0.07
|
||||
Nodes (26): الزامات UI, باگفیکس صفحه نوبتها, باگ ۱ — کرش تقویم, باگ ۲ — روز هفته در DateNavigator, باگ ۳ — پیام «slot نیست», باگ ۴ — نوبت جدید: نام اجباری + find-or-create patient, باگ ۵ — patient_mobile نشان میدهد موبایل پزشک, باگ ۶ — نوبتهای رزرو شده در نمایش زمانبندی (+18 more)
|
||||
|
||||
### Community 53 - "Community 53"
|
||||
Cohesion: 0.09
|
||||
Nodes (12): AppLogRepository, ClaimItemRepository, PreRegistrationRepository, SiteConfigRepository, TaxRateHistoryRepository, ServiceEntityRepository, ManagerRegistry, ManagerRegistry (+4 more)
|
||||
Cohesion: 0.08
|
||||
Nodes (17): AppLogRepository, ClaimItemRepository, InvoiceItemRepository, PreRegistrationRepository, SessionServiceRepository, UserActiveContextRepository, ServiceEntityRepository, ManagerRegistry (+9 more)
|
||||
|
||||
### Community 54 - "Community 54"
|
||||
Cohesion: 0.10
|
||||
@@ -943,8 +937,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
|
||||
@@ -1040,7 +1034,7 @@ Nodes (29): devDependencies, @babel/core, @babel/preset-env, @babel/preset-react
|
||||
|
||||
### Community 86 - "Community 86"
|
||||
Cohesion: 0.06
|
||||
Nodes (15): AppointmentExpiryServiceTest, LowTierFixesTest, SendCodeMobileRateLimitTest, ClaimsListPaginationTest, ServiceItemDeleteCleanupTest, ServiceItemStaffOwnershipTest, EntityManagerInterface, KernelBrowser (+7 more)
|
||||
Nodes (15): AppointmentExpiryServiceTest, LowTierFixesTest, SendCodeMobileRateLimitTest, ClaimsListPaginationTest, ServiceItemStaffOwnershipTest, EntityManagerInterface, KernelBrowser, CommentPaginationTest (+7 more)
|
||||
|
||||
### Community 87 - "Community 87"
|
||||
Cohesion: 0.10
|
||||
@@ -1127,8 +1121,8 @@ Cohesion: 0.32
|
||||
Nodes (6): AppointmentController, Appointment, Doctor, JsonResponse, Request, User
|
||||
|
||||
### Community 108 - "Community 108"
|
||||
Cohesion: 0.12
|
||||
Nodes (12): AbstractController, AdminController, BaseController, CategoryController, CategoryImportController, HomeController, Response, JsonResponse (+4 more)
|
||||
Cohesion: 0.18
|
||||
Nodes (7): BaseController, CategoryController, CategoryImportController, JsonResponse, JsonResponse, Request, JsonResponse
|
||||
|
||||
### Community 109 - "Community 109"
|
||||
Cohesion: 0.29
|
||||
@@ -1328,7 +1322,7 @@ Nodes (15): Date Overrides, DELETE `/api/v1/appointment-settings/date-override/{
|
||||
|
||||
### Community 161 - "Community 161"
|
||||
Cohesion: 0.24
|
||||
Nodes (5): ClaimsListNPlusOneTest, ClaimItem, ClaimService, Claim, Invoice
|
||||
Nodes (7): ClaimSubmitterInterface, ClaimService, ManualClaimSubmitter, Claim, Invoice, Claim, ClaimSubmissionResult
|
||||
|
||||
### Community 162 - "Community 162"
|
||||
Cohesion: 0.13
|
||||
@@ -1406,6 +1400,10 @@ Nodes (3): PatientRecord, Collection, User
|
||||
Cohesion: 0.23
|
||||
Nodes (3): WeeklySchedule, Doctor, self
|
||||
|
||||
### Community 182 - "Community 182"
|
||||
Cohesion: 0.07
|
||||
Nodes (5): SmsSettings, SmsWallet, LogPruneService, AppointmentExpiryService, self
|
||||
|
||||
### Community 183 - "Community 183"
|
||||
Cohesion: 0.14
|
||||
Nodes (13): `UserDetailPage.tsx` — فقط user query, زمینه, فایلهای مرتبط, قرارداد پروفایل (`UserProfile.toArray`), مشکل / هدف, نمایش پروفایل کاربر در صفحهی جزئیات کاربرِ پنل ادمین, نکات مهم, وضعیت فعلی (کد واقعی) (+5 more)
|
||||
@@ -1475,12 +1473,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/representations`, 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 +1489,8 @@ Cohesion: 0.21
|
||||
Nodes (6): AuthenticationException, ExceptionSubscriber, SecurityHeadersSubscriber, EventSubscriberInterface, ExceptionEvent, ResponseEvent
|
||||
|
||||
### Community 205 - "Community 205"
|
||||
Cohesion: 0.07
|
||||
Nodes (20): Command, CancelExpiredAppointmentsCommand, CreateAdminCommand, PruneLogsCommand, SeedCategoriesCommand, SeedSmsMessageTemplatesCommand, SmsMessageTemplateRepository, SmsTextResolver (+12 more)
|
||||
Cohesion: 0.10
|
||||
Nodes (16): Command, CancelExpiredAppointmentsCommand, CreateAdminCommand, PruneLogsCommand, SeedCategoriesCommand, SeedSmsMessageTemplatesCommand, InputInterface, OutputInterface (+8 more)
|
||||
|
||||
### Community 206 - "Community 206"
|
||||
Cohesion: 0.35
|
||||
@@ -1567,8 +1565,8 @@ Cohesion: 0.30
|
||||
Nodes (6): AbstractAuthenticator, Passport, PasswordAuthenticator, Request, Response, TokenInterface
|
||||
|
||||
### Community 228 - "Community 228"
|
||||
Cohesion: 0.04
|
||||
Nodes (47): Bulk import / export, DELETE `/api/v1/admin/insurance/{id}`, DELETE `/api/v1/billing/tenant-insurances/{uuid}`, DELETE `/api/v1/insurance/{id}`, EntityInsurancePricing — قیمتگذاری ویزیت بر اساس بیمه, Errors, Errors, Errors (+39 more)
|
||||
Cohesion: 0.05
|
||||
Nodes (43): Bulk import / export, DELETE `/api/v1/admin/insurance/{id}`, DELETE `/api/v1/billing/tenant-insurances/{uuid}`, DELETE `/api/v1/insurance/{id}`, EntityInsurancePricing — قیمتگذاری ویزیت بر اساس بیمه, Errors, Errors, Errors (+35 more)
|
||||
|
||||
### Community 229 - "Community 229"
|
||||
Cohesion: 0.15
|
||||
@@ -1703,8 +1701,8 @@ Cohesion: 0.33
|
||||
Nodes (4): RepresentationRepository, ManagerRegistry, Representation, User
|
||||
|
||||
### Community 265 - "Community 265"
|
||||
Cohesion: 0.08
|
||||
Nodes (27): calcFinalPrice(), EMPTY_RECORDS, EMPTY_SESSIONS, fileNumber(), getPatientName(), getPatientPhone(), InsurancePricing, MyPatientsPageInner() (+19 more)
|
||||
Cohesion: 0.15
|
||||
Nodes (17): calcFinalPrice(), EMPTY_RECORDS, EMPTY_SESSIONS, fileNumber(), getPatientName(), getPatientPhone(), InsurancePricing, MyPatientsPageInner() (+9 more)
|
||||
|
||||
### Community 266 - "Community 266"
|
||||
Cohesion: 0.33
|
||||
@@ -1819,8 +1817,8 @@ Cohesion: 0.24
|
||||
Nodes (10): gridItemStyle, JALALI_MONTHS, jalaliFirstWeekday(), jalaliToGregorian(), navBtnStyle, PersianCalendar(), pf, Props (+2 more)
|
||||
|
||||
### Community 295 - "Community 295"
|
||||
Cohesion: 0.57
|
||||
Nodes (3): SeoController, Request, Response
|
||||
Cohesion: 0.22
|
||||
Nodes (8): AbstractController, AdminController, HomeController, SeoController, Response, Response, Request, Response
|
||||
|
||||
### Community 296 - "Community 296"
|
||||
Cohesion: 0.22
|
||||
@@ -1856,7 +1854,7 @@ Nodes (16): آمادهسازی پروژه ClinicPro برای دیپلوی ر
|
||||
|
||||
### Community 304 - "Community 304"
|
||||
Cohesion: 0.22
|
||||
Nodes (9): 29. 🟢 `GET` clinic list 🆕, 30. 🟢 `GET` get 🆕, 36. 🟢 `GET` get my rate, 6. کلینیک (Clinic), هدرهای اضافی, پارامترهای Query, پاسخها, پاسخها (+1 more)
|
||||
Nodes (9): 30. 🟢 `GET` get 🆕, 33. 🔵 `POST` image_clinic, 36. 🟢 `GET` get my rate, 6. کلینیک (Clinic), هدرهای اضافی, هدرهای اضافی, پاسخها, پاسخها (+1 more)
|
||||
|
||||
### Community 306 - "Community 306"
|
||||
Cohesion: 0.07
|
||||
@@ -1955,8 +1953,8 @@ Cohesion: 0.22
|
||||
Nodes (8): Query های جدید, بیماران منحصربهفرد در بازه, درآمد بر اساس روز (از patient_sessions), فروش اشتراک بر اساس پنل (admin), نوبتها بر اساس روز (admin chart), نکات مهم, هیچ migration لازم نیست, پایگاه داده — تسک ۱۶: داشبورد هوشمند
|
||||
|
||||
### Community 333 - "Community 333"
|
||||
Cohesion: 0.25
|
||||
Nodes (7): DELETE `/api/v1/clinic-pro/doctor-address/{id}`, Doctor API, Errors, GET `/api/v1/doctors`, Query Parameters, Response `200`, Response `200`
|
||||
Cohesion: 0.05
|
||||
Nodes (39): DELETE `/api/v1/clinic-pro/doctor-address/{id}`, DELETE `/api/v1/doctor/{uuid}`, Doctor API, Errors, Errors, Errors, Errors, Errors (+31 more)
|
||||
|
||||
### Community 334 - "Community 334"
|
||||
Cohesion: 0.25
|
||||
@@ -2019,8 +2017,8 @@ Cohesion: 0.43
|
||||
Nodes (3): SmsWalletRepository, ManagerRegistry, SmsWallet
|
||||
|
||||
### Community 351 - "Community 351"
|
||||
Cohesion: 0.50
|
||||
Nodes (4): UserActiveContextRepository, ManagerRegistry, User, UserActiveContext
|
||||
Cohesion: 0.26
|
||||
Nodes (3): MellatGateway, PaymentInitResult, PaymentVerifyResult
|
||||
|
||||
### Community 352 - "Community 352"
|
||||
Cohesion: 0.36
|
||||
@@ -2187,16 +2185,16 @@ Cohesion: 0.33
|
||||
Nodes (6): Refactoring Plan, فاز ۰ — مستندسازی (۳ تا ۵ روز، قبل از هر کدنویسی), فاز ۱ — زیرساخت پایه (task-01), فاز ۲ — پیادهسازی ماژولها (به ترتیب dependency), فاز ۳ — بهینهسازی (بعد از پیادهسازی), فاز ۴ — آمادهسازی تولید
|
||||
|
||||
### Community 397 - "Community 397"
|
||||
Cohesion: 0.36
|
||||
Nodes (4): ClaimAmountBoundsTest, Claim, Doctor, User
|
||||
Cohesion: 0.21
|
||||
Nodes (6): ClaimAmountBoundsTest, ClaimsListNPlusOneTest, ClaimItem, Claim, Doctor, User
|
||||
|
||||
### Community 398 - "Community 398"
|
||||
Cohesion: 0.29
|
||||
Nodes (4): initiate(), verify(), PaymentInitResult, PaymentVerifyResult
|
||||
|
||||
### Community 399 - "Community 399"
|
||||
### Community 404 - "Community 404"
|
||||
Cohesion: 0.23
|
||||
Nodes (5): AbstractMigration, Schema, Version20260609130407, Schema, Version20260619121047
|
||||
Nodes (5): AbstractMigration, Schema, Version20260609133334, Schema, Version20260619062912
|
||||
|
||||
### Community 405 - "Community 405"
|
||||
Cohesion: 0.47
|
||||
@@ -2210,13 +2208,17 @@ Nodes (3): SmsService, SendSmsMessage, SmsProviderInterface
|
||||
Cohesion: 0.17
|
||||
Nodes (11): دیپلوی ClinicPro روی Coolify (Docker Compose), رفع اشکال, مراحل دیپلوی, معماری دیپلوی, نکات عملیاتی, چند دامنه فرانتاند (مهم), ۱. ساخت Resource در Coolify, ۲. اختصاص دامنه (+3 more)
|
||||
|
||||
### Community 439 - "Community 439"
|
||||
Cohesion: 0.33
|
||||
Nodes (5): Like, LikeRepository, Comment, ManagerRegistry, User
|
||||
|
||||
### Community 440 - "Community 440"
|
||||
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.05
|
||||
Nodes (34): cn(), iranMobileOptionalSchema, iranMobileSchema, isValidIranMobile(), maskMobile(), sanitizeMobileInput(), toDate(), toEnglishDigits() (+26 more)
|
||||
Cohesion: 0.06
|
||||
Nodes (31): cn(), iranMobileOptionalSchema, iranMobileSchema, isValidIranMobile(), maskMobile(), sanitizeMobileInput(), toDate(), toEnglishDigits() (+23 more)
|
||||
|
||||
### Community 456 - "Community 456"
|
||||
Cohesion: 0.38
|
||||
@@ -2447,8 +2449,8 @@ Cohesion: 0.12
|
||||
Nodes (16): دیپلوی ClinicPro (Symfony) روی لیارا با پلتفرم PHP (بدون داکر), زمینه, فایلهای مرتبط, مشکل / هدف, نکات مهم, وضعیت فعلی (کد واقعی), وظایف, پروژه (+8 more)
|
||||
|
||||
### Community 525 - "Community 525"
|
||||
Cohesion: 0.53
|
||||
Nodes (3): SessionServiceRepository, ManagerRegistry, SessionService
|
||||
Cohesion: 0.25
|
||||
Nodes (4): SmsMessageTemplateRepository, SmsTextResolver, SmsMessageTemplate, ManagerRegistry
|
||||
|
||||
### Community 526 - "Community 526"
|
||||
Cohesion: 0.50
|
||||
@@ -2487,32 +2489,20 @@ Cohesion: 0.50
|
||||
Nodes (4): Errors, GET `/api/v1/representation/{uuid}`, Path Parameters, Response `200`
|
||||
|
||||
### Community 536 - "Community 536"
|
||||
Cohesion: 0.50
|
||||
Nodes (4): Errors, POST `/file/upload/clinic_pro/doctor/field_image`, Request, Response `200`
|
||||
|
||||
### Community 537 - "Community 537"
|
||||
Cohesion: 0.50
|
||||
Nodes (4): Errors, POST `/api/v1/clinic-pro/doctor-address`, Request Body, Response `201`
|
||||
|
||||
### Community 538 - "Community 538"
|
||||
Cohesion: 0.50
|
||||
Nodes (4): Errors, Path Parameters, POST `/api/v1/clinic-pro/doctor-address/from-clinic/{clinicUuid}`, Response `201`
|
||||
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 539 - "Community 539"
|
||||
Cohesion: 0.67
|
||||
Nodes (3): Errors, GET `/api/v1/notification-mobile/{target}`, Response `200`
|
||||
|
||||
### Community 540 - "Community 540"
|
||||
Cohesion: 0.43
|
||||
Nodes (3): InvoiceItemRepository, InvoiceItem, ManagerRegistry
|
||||
|
||||
### Community 542 - "Community 542"
|
||||
Cohesion: 0.15
|
||||
Nodes (11): emptyFeatures(), FEATURE_KEYS, FEATURE_LABELS, PeriodForm, periodSchema, PLAN_DISPLAY, PlanForm, planSchema (+3 more)
|
||||
|
||||
### Community 543 - "Community 543"
|
||||
Cohesion: 0.50
|
||||
Nodes (4): Errors, PATCH `/api/v1/insurance/{id}`, Request Body, Response `200`
|
||||
Cohesion: 0.53
|
||||
Nodes (3): TaxRateHistoryRepository, ManagerRegistry, TaxRateHistory
|
||||
|
||||
### Community 544 - "Community 544"
|
||||
Cohesion: 0.15
|
||||
@@ -2660,15 +2650,15 @@ Nodes (5): Errors, GET `/api/v1/clinic/my-doctor/{doctorUuid}`, Path Parameters,
|
||||
|
||||
### Community 596 - "Community 596"
|
||||
Cohesion: 0.40
|
||||
Nodes (5): Errors, PATCH `/api/v1/clinic-pro/doctor-address/{id}`, Path Parameters, Request Body, Response `200`
|
||||
Nodes (5): GET `/api/v1/admin/comments`, GET `/api/v1/admin/rates`, Query Parameters, Query Parameters, Rating & Comment Management
|
||||
|
||||
### Community 597 - "Community 597"
|
||||
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.53
|
||||
Nodes (4): ClaimSubmitterInterface, ManualClaimSubmitter, Claim, ClaimSubmissionResult
|
||||
Cohesion: 0.40
|
||||
Nodes (5): 62. 🟡 `PATCH` patch, Request Body, مثال Request, هدرهای اضافی, پاسخها
|
||||
|
||||
### Community 599 - "Community 599"
|
||||
Cohesion: 0.67
|
||||
@@ -2707,20 +2697,20 @@ Cohesion: 0.67
|
||||
Nodes (3): بکاند, فرانتاند, وضعیت فعلی کد (مهم — قبل از تغییر بخوان)
|
||||
|
||||
### Community 618 - "Community 618"
|
||||
Cohesion: 0.12
|
||||
Nodes (6): ServiceCoverageNPlusOneTest, TenantInsuranceCleanupTest, TenantServiceCoverageRepository, TenantInsuranceCleanupService, ManagerRegistry, TenantServiceCoverage
|
||||
Cohesion: 0.10
|
||||
Nodes (7): ServiceItemDeleteCleanupTest, ServiceCoverageNPlusOneTest, TenantInsuranceCleanupTest, TenantServiceCoverageRepository, TenantInsuranceCleanupService, ManagerRegistry, TenantServiceCoverage
|
||||
|
||||
### Community 631 - "Community 631"
|
||||
Cohesion: 0.50
|
||||
Nodes (4): DELETE `/api/v1/doctor/{uuid}`, Errors, Path Parameters, Response `200`
|
||||
Cohesion: 0.40
|
||||
Nodes (3): Props, StatTone, TONE
|
||||
|
||||
### Community 632 - "Community 632"
|
||||
Cohesion: 0.50
|
||||
Nodes (4): Errors, POST `/api/v1/doctor`, Request Body (`application/json`), Response `201`
|
||||
Nodes (4): Errors, GET `/api/v1/admin/insurances`, Query Parameters, Response `200`
|
||||
|
||||
### Community 633 - "Community 633"
|
||||
Cohesion: 0.50
|
||||
Nodes (4): Errors, GET `/api/v1/doctor/{uuid}`, Path Parameters, Response `200`
|
||||
Nodes (4): Errors, POST `/api/v1/insurance/`, Request Body (`application/json`), Response `201`
|
||||
|
||||
### Community 634 - "Community 634"
|
||||
Cohesion: 0.25
|
||||
@@ -2730,9 +2720,9 @@ Nodes (8): ۲.۲ انواع دستهبندی (Category Types), ۲.۲.۱ تگ
|
||||
Cohesion: 0.43
|
||||
Nodes (5): BeforeInstallPromptEvent, usePwaInstall(), PwaInstallBanner(), detectIOS(), PwaLoginCard()
|
||||
|
||||
### Community 638 - "Community 638"
|
||||
### Community 636 - "Community 636"
|
||||
Cohesion: 0.67
|
||||
Nodes (3): GET `/api/v1/clinic-pro/doctor-addresses/{doctorId}`, Path Parameters, Response `200`
|
||||
Nodes (3): 29. 🟢 `GET` clinic list 🆕, پارامترهای Query, پاسخها
|
||||
|
||||
### Community 639 - "Community 639"
|
||||
Cohesion: 0.33
|
||||
@@ -2754,10 +2744,6 @@ Nodes (5): 31. 🟡 `PATCH` patch, Request Body, مثال Request, هدرهای
|
||||
Cohesion: 0.40
|
||||
Nodes (5): 32. 🔵 `POST` post, Request Body, مثال Request, هدرهای اضافی, پاسخها
|
||||
|
||||
### Community 652 - "Community 652"
|
||||
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 653 - "Community 653"
|
||||
Cohesion: 0.50
|
||||
Nodes (4): 38. 🟢 `GET` Unapproved comments, هدرهای اضافی, پارامترهای Query, پاسخها
|
||||
@@ -2778,10 +2764,6 @@ Nodes (5): ۲.۸ تنظیمات نوبت (Appointment Settings), ۲.۸.۱ برن
|
||||
Cohesion: 0.50
|
||||
Nodes (4): GET `/api/v1/admin/payments`, Payment Management, Query Parameters, Response `200`
|
||||
|
||||
### Community 658 - "Community 658"
|
||||
Cohesion: 0.50
|
||||
Nodes (4): GET `/api/v1/admin/representations`, Query Parameters, Representation Management, Response `200`
|
||||
|
||||
### Community 659 - "Community 659"
|
||||
Cohesion: 0.50
|
||||
Nodes (4): GET `/api/v1/admin/secretaries`, Query Parameters, Response `200`, Secretary Management
|
||||
@@ -2826,10 +2808,6 @@ Nodes (4): GET `/api/v1/admin/settlements`, Query Parameters, Response `200`, Se
|
||||
Cohesion: 0.67
|
||||
Nodes (3): 34. 🔵 `POST` image logo, هدرهای اضافی, پاسخها
|
||||
|
||||
### Community 676 - "Community 676"
|
||||
Cohesion: 0.67
|
||||
Nodes (3): 33. 🔵 `POST` image_clinic, هدرهای اضافی, پاسخها
|
||||
|
||||
### Community 677 - "Community 677"
|
||||
Cohesion: 0.67
|
||||
Nodes (3): 42. 🔴 `DELETE` delete, هدرهای اضافی, پاسخها
|
||||
@@ -2841,22 +2819,22 @@ Nodes (3): 43. 🟢 `GET` get, هدرهای اضافی, پاسخها
|
||||
## Knowledge Gaps
|
||||
- **3644 isolated node(s):** `ALLOWED_ROLES`, `Pricing`, `TenantInsurance`, `CoverageRow`, `Draft` (+3639 more)
|
||||
These have ≤1 connection - possible missing edges or undocumented components.
|
||||
- **133 thin communities (<3 nodes) omitted from report** — run `graphify query` to explore isolated nodes.
|
||||
- **131 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 11`, `Community 139`, `Community 14`, `Community 15`, `Community 275`, `Community 20`, `Community 22`, `Community 26`, `Community 164`, `Community 300`, `Community 301`, `Community 175`, `Community 176`, `Community 177`, `Community 59`, `Community 63`, `Community 64`, `Community 70`, `Community 71`, `Community 75`, `Community 206`, `Community 352`, `Community 230`, `Community 103`, `Community 104`, `Community 107`, `Community 491`, `Community 109`, `Community 121`, `Community 122`, `Community 252`?**
|
||||
_High betweenness centrality (0.031) - this node is a cross-community bridge._
|
||||
- **Why does `BaseController` connect `Community 108` to `Community 6`, `Community 138`, `Community 139`, `Community 14`, `Community 15`, `Community 275`, `Community 20`, `Community 22`, `Community 26`, `Community 164`, `Community 295`, `Community 300`, `Community 301`, `Community 175`, `Community 176`, `Community 177`, `Community 58`, `Community 59`, `Community 63`, `Community 64`, `Community 70`, `Community 71`, `Community 75`, `Community 206`, `Community 352`, `Community 230`, `Community 103`, `Community 104`, `Community 107`, `Community 491`, `Community 109`, `Community 121`, `Community 122`, `Community 252`?**
|
||||
_High betweenness centrality (0.030) - this node is a cross-community bridge._
|
||||
- **Why does `AppointmentRepository` connect `Community 119` to `Community 53`?**
|
||||
_High betweenness centrality (0.021) - this node is a cross-community bridge._
|
||||
- **Why does `Version20260614181657` connect `Community 431` to `Community 399`?**
|
||||
_High betweenness centrality (0.022) - this node is a cross-community bridge._
|
||||
- **Why does `Version20260614181657` connect `Community 431` to `Community 404`?**
|
||||
_High betweenness centrality (0.015) - this node is a cross-community bridge._
|
||||
- **What connects `ALLOWED_ROLES`, `Pricing`, `TenantInsurance` to the rest of the system?**
|
||||
_3644 weakly-connected nodes found - possible documentation gaps or missing edges._
|
||||
- **Should `Community 0` be split into smaller, more focused modules?**
|
||||
_Cohesion score 0.054426705370101594 - nodes in this community are weakly interconnected._
|
||||
_Cohesion score 0.05137844611528822 - 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.06565656565656566 - nodes in this community are weakly interconnected._
|
||||
_Cohesion score 0.07692307692307693 - nodes in this community are weakly interconnected._
|
||||
graphify-out/cache/ast/v0.8.44/2d3311a9342c690139154fabd01bcf942f32b1533612dbdf7de677ee04dc34db.json
Vendored
+1
@@ -0,0 +1 @@
|
||||
{"nodes": [{"id": "users_hamed_pj_my_pj_clinic_pro_clinicpro_migrations_version20260702063537_php", "label": "Version20260702063537.php", "file_type": "code", "source_file": "migrations/Version20260702063537.php", "source_location": "L1"}, {"id": "migrations_version20260702063537_version20260702063537", "label": "Version20260702063537", "file_type": "code", "source_file": "migrations/Version20260702063537.php", "source_location": "L13"}, {"id": "abstractmigration", "label": "AbstractMigration", "file_type": "code", "source_file": "", "source_location": ""}, {"id": "migrations_version20260702063537_version20260702063537_getdescription", "label": ".getDescription()", "file_type": "code", "source_file": "migrations/Version20260702063537.php", "source_location": "L15"}, {"id": "migrations_version20260702063537_version20260702063537_up", "label": ".up()", "file_type": "code", "source_file": "migrations/Version20260702063537.php", "source_location": "L20"}, {"id": "schema", "label": "Schema", "file_type": "code", "source_file": "migrations/Version20260702063537.php", "source_location": "L20"}, {"id": "migrations_version20260702063537_version20260702063537_down", "label": ".down()", "file_type": "code", "source_file": "migrations/Version20260702063537.php", "source_location": "L25"}], "edges": [{"source": "users_hamed_pj_my_pj_clinic_pro_clinicpro_migrations_version20260702063537_php", "target": "schema", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "migrations/Version20260702063537.php", "source_location": "L7", "weight": 1.0}, {"source": "users_hamed_pj_my_pj_clinic_pro_clinicpro_migrations_version20260702063537_php", "target": "abstractmigration", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "migrations/Version20260702063537.php", "source_location": "L8", "weight": 1.0}, {"source": "users_hamed_pj_my_pj_clinic_pro_clinicpro_migrations_version20260702063537_php", "target": "migrations_version20260702063537_version20260702063537", "relation": "contains", "confidence": "EXTRACTED", "source_file": "migrations/Version20260702063537.php", "source_location": "L13", "weight": 1.0}, {"source": "migrations_version20260702063537_version20260702063537", "target": "abstractmigration", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "migrations/Version20260702063537.php", "source_location": "L13", "weight": 1.0}, {"source": "migrations_version20260702063537_version20260702063537", "target": "migrations_version20260702063537_version20260702063537_getdescription", "relation": "method", "confidence": "EXTRACTED", "source_file": "migrations/Version20260702063537.php", "source_location": "L15", "weight": 1.0}, {"source": "migrations_version20260702063537_version20260702063537", "target": "migrations_version20260702063537_version20260702063537_up", "relation": "method", "confidence": "EXTRACTED", "source_file": "migrations/Version20260702063537.php", "source_location": "L20", "weight": 1.0}, {"source": "migrations_version20260702063537_version20260702063537_up", "target": "schema", "relation": "references", "confidence": "EXTRACTED", "source_file": "migrations/Version20260702063537.php", "source_location": "L20", "weight": 1.0, "context": "parameter_type"}, {"source": "migrations_version20260702063537_version20260702063537", "target": "migrations_version20260702063537_version20260702063537_down", "relation": "method", "confidence": "EXTRACTED", "source_file": "migrations/Version20260702063537.php", "source_location": "L25", "weight": 1.0}, {"source": "migrations_version20260702063537_version20260702063537_down", "target": "schema", "relation": "references", "confidence": "EXTRACTED", "source_file": "migrations/Version20260702063537.php", "source_location": "L25", "weight": 1.0, "context": "parameter_type"}], "raw_calls": [{"caller_nid": "migrations_version20260702063537_version20260702063537_up", "callee": "addSql", "is_member_call": true, "source_file": "/Users/hamed/pj/my_pj/clinic_pro/clinicpro/migrations/Version20260702063537.php", "source_location": "L22", "receiver": null}, {"caller_nid": "migrations_version20260702063537_version20260702063537_down", "callee": "addSql", "is_member_call": true, "source_file": "/Users/hamed/pj/my_pj/clinic_pro/clinicpro/migrations/Version20260702063537.php", "source_location": "L27", "receiver": null}]}
|
||||
graphify-out/cache/ast/v0.8.44/5a4563ead44413333e95d55d324869fcf814f64abe4f17cd9aea1437a1443576.json
Vendored
+1
@@ -0,0 +1 @@
|
||||
{"nodes": [], "edges": [], "skipped": "data json (non-object root)"}
|
||||
graphify-out/cache/ast/v0.8.44/7b56b3429cfc36bc155e5848b12d8412ecaff681183a32df088ec93e6cfc2146.json
Vendored
+1
File diff suppressed because one or more lines are too long
graphify-out/cache/ast/v0.8.44/8205579cbcd4886a442a305170806aa819b520469c57f79de5cdb76b6d611a76.json
Vendored
+1
File diff suppressed because one or more lines are too long
graphify-out/cache/ast/v0.8.44/87707d98ee67a674c5e81583b81f493c6c213d6f937f50b001533b334b1ee3a3.json
Vendored
+1
File diff suppressed because one or more lines are too long
graphify-out/cache/ast/v0.8.44/932a44a4ab3a500433da4f1d7f2be16eb6f50420871c62a73f8c8f2ca3fbb624.json
Vendored
+1
File diff suppressed because one or more lines are too long
graphify-out/cache/ast/v0.8.44/ab2fe5f2a37d5018a85f0391923ddfb058682c2107c85c2ecc9b60f24cbe0433.json
Vendored
+1
File diff suppressed because one or more lines are too long
graphify-out/cache/ast/v0.8.44/d40b9b6f40bafd777652c6777ef5a90a7839b8d451cd38bbb8a04119c4b6d44c.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
+851
-646
File diff suppressed because it is too large
Load Diff
+28
-23
@@ -190,8 +190,8 @@
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"assets/admin/pages/CategoriesPage.tsx": {
|
||||
"mtime": 1782844707.7293186,
|
||||
"ast_hash": "a5dab31477ec4359b88f76d40bcb35bf",
|
||||
"mtime": 1782974127.331514,
|
||||
"ast_hash": "43d7e427a556469e4374224c4e665117",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"assets/admin/pages/ClaimsPage.tsx": {
|
||||
@@ -400,8 +400,8 @@
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"assets/admin/types/index.ts": {
|
||||
"mtime": 1782750264.645306,
|
||||
"ast_hash": "61c032545f706815210d6f66b080bdae",
|
||||
"mtime": 1782974093.73864,
|
||||
"ast_hash": "976545bf4ab31428db0fe23c17c23b5f",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"assets/app.js": {
|
||||
@@ -1180,8 +1180,8 @@
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"src/Doctor/Controller/DoctorController.php": {
|
||||
"mtime": 1782728407.195775,
|
||||
"ast_hash": "5a7f22cf91ac6726ce3427c88eea1a82",
|
||||
"mtime": 1782931944.4072063,
|
||||
"ast_hash": "2dd80d4ed9ec5a18474c17d7697cfee8",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"src/Doctor/Entity/Doctor.php": {
|
||||
@@ -1295,13 +1295,13 @@
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"src/Location/Controller/LocationController.php": {
|
||||
"mtime": 1782844299.834749,
|
||||
"ast_hash": "6a1296178827cdc99c6775db563c41f0",
|
||||
"mtime": 1782974061.7243073,
|
||||
"ast_hash": "eeba5749c527b2712549c2dda539e368",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"src/Location/Entity/City.php": {
|
||||
"mtime": 1781089230.145856,
|
||||
"ast_hash": "a74133b8e50f52660ee00586b6d630db",
|
||||
"mtime": 1782974046.9918911,
|
||||
"ast_hash": "b37a5c9d79443b32709a30a3decffd30",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"src/Location/Entity/Province.php": {
|
||||
@@ -2185,8 +2185,8 @@
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"README.MD": {
|
||||
"mtime": 1782845053.6544068,
|
||||
"ast_hash": "57c7558eea01b735b714575a461ee751",
|
||||
"mtime": 1782933937.9090674,
|
||||
"ast_hash": "1da6a3afea0f626c55b6f7c1ff126b65",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"TEST_USERS.md": {
|
||||
@@ -2240,7 +2240,7 @@
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"config/packages/nelmio_cors.yaml": {
|
||||
"mtime": 1781009943.585995,
|
||||
"mtime": 1782933581.6906326,
|
||||
"ast_hash": "c552214796d17d0d2a94154346b2afa8",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
@@ -2300,7 +2300,7 @@
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"config/services.yaml": {
|
||||
"mtime": 1782902861.3039489,
|
||||
"mtime": 1782932864.251077,
|
||||
"ast_hash": "0cd5b457c6df19eb90acd03c130bd713",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
@@ -2340,7 +2340,7 @@
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"docs/api/admin.md": {
|
||||
"mtime": 1782930000.5470378,
|
||||
"mtime": 1782932869.818139,
|
||||
"ast_hash": "27318238aa2741292c79a491870ba31b",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
@@ -2395,8 +2395,8 @@
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"docs/api/doctor.md": {
|
||||
"mtime": 1782728407.108632,
|
||||
"ast_hash": "6dedc0cdfc171e0f7c31fb29647cb27b",
|
||||
"mtime": 1782932001.1570988,
|
||||
"ast_hash": "166c5a9c884b17c23a53d9cb592266f4",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"docs/api/insurance.md": {
|
||||
@@ -2405,8 +2405,8 @@
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"docs/api/location.md": {
|
||||
"mtime": 1782844893.6796494,
|
||||
"ast_hash": "bd93b9cdb9c60259814f49193b6cab77",
|
||||
"mtime": 1782974277.4647317,
|
||||
"ast_hash": "237d13c1f44f23001d6e9ab287b80898",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"docs/api/patient.md": {
|
||||
@@ -3430,8 +3430,8 @@
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"data/seed/cities.json": {
|
||||
"mtime": 1782843868.7730389,
|
||||
"ast_hash": "2baadcc7287ed58538b074906b531efc",
|
||||
"mtime": 1782973838.4322407,
|
||||
"ast_hash": "089a1a2c29c7dafdc0f279e72c23f556",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"data/seed/doctor_services.json": {
|
||||
@@ -3455,8 +3455,8 @@
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"src/Category/Service/CategoryImporter.php": {
|
||||
"mtime": 1782843813.8434396,
|
||||
"ast_hash": "47a348a1a7cf97da5de81caad5f026d9",
|
||||
"mtime": 1782974082.771482,
|
||||
"ast_hash": "daaeddb090469fda67b5bdf08c52cacb",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
".claude/prompt/production-fixes-cors-payment-gateways.md": {
|
||||
@@ -3503,5 +3503,10 @@
|
||||
"mtime": 1782929788.2918966,
|
||||
"ast_hash": "7d306f9d2eba4693cd01ff21f2eda173",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"migrations/Version20260702063537.php": {
|
||||
"mtime": 1782974183.0364032,
|
||||
"ast_hash": "dc5d90afffa97b8150bcacba60846c8d",
|
||||
"semantic_hash": ""
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,29 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace DoctrineMigrations;
|
||||
|
||||
use Doctrine\DBAL\Schema\Schema;
|
||||
use Doctrine\Migrations\AbstractMigration;
|
||||
|
||||
/**
|
||||
* Auto-generated Migration: Please modify to your needs!
|
||||
*/
|
||||
final class Version20260702063537 extends AbstractMigration
|
||||
{
|
||||
public function getDescription(): string
|
||||
{
|
||||
return 'Add site_name column to cities';
|
||||
}
|
||||
|
||||
public function up(Schema $schema): void
|
||||
{
|
||||
$this->addSql('ALTER TABLE cities ADD site_name VARCHAR(255) DEFAULT NULL AFTER name');
|
||||
}
|
||||
|
||||
public function down(Schema $schema): void
|
||||
{
|
||||
$this->addSql('ALTER TABLE cities DROP site_name');
|
||||
}
|
||||
}
|
||||
@@ -142,6 +142,7 @@ class CategoryImporter
|
||||
$row['logo_url'] = self::optStr($raw['logo_url'] ?? null);
|
||||
break;
|
||||
case 'cities':
|
||||
$row['site_name'] = self::optStr($raw['site_name'] ?? null);
|
||||
$row['province_id'] = self::nullableId($raw['province_id'] ?? null, $add, 'province_id');
|
||||
$row['representation_id'] = self::nullableId($raw['representation_id'] ?? null, $add, 'representation_id');
|
||||
$row['contact_phone'] = self::optStr($raw['contact_phone'] ?? null);
|
||||
|
||||
@@ -223,6 +223,7 @@ class LocationController extends BaseController
|
||||
if (isset($data['weight'])) $city->setWeight((int) $data['weight']);
|
||||
if (array_key_exists('representation_id', $data))
|
||||
$city->setRepresentationId($data['representation_id'] !== null ? (int) $data['representation_id'] : null);
|
||||
if (array_key_exists('site_name', $data)) $city->setSiteName($data['site_name']);
|
||||
if (array_key_exists('contact_phone', $data)) $city->setContactPhone($data['contact_phone']);
|
||||
if (array_key_exists('email', $data)) $city->setEmail($data['email']);
|
||||
if (array_key_exists('description', $data)) $city->setDescription($data['description']);
|
||||
|
||||
@@ -24,6 +24,9 @@ class City
|
||||
#[ORM\Column(type: 'string', length: 255)]
|
||||
private string $name;
|
||||
|
||||
#[ORM\Column(name: 'site_name', type: 'string', length: 255, nullable: true)]
|
||||
private ?string $siteName = null;
|
||||
|
||||
#[ORM\Column(type: 'smallint')]
|
||||
private int $status = 1;
|
||||
|
||||
@@ -74,6 +77,7 @@ class City
|
||||
public function getId(): ?int { return $this->id; }
|
||||
public function getUuid(): string { return $this->uuid; }
|
||||
public function getName(): string { return $this->name; }
|
||||
public function getSiteName(): ?string { return $this->siteName; }
|
||||
public function getStatus(): int { return $this->status; }
|
||||
public function getWeight(): int { return $this->weight; }
|
||||
public function getProvince(): ?Province { return $this->province; }
|
||||
@@ -89,6 +93,7 @@ class City
|
||||
public function getLogoUrl(): ?string { return $this->logoUrl; }
|
||||
|
||||
public function setName(string $v): self { $this->name = $v; return $this; }
|
||||
public function setSiteName(?string $v): self { $this->siteName = $v; return $this; }
|
||||
public function setStatus(int $v): self { $this->status = $v; return $this; }
|
||||
public function setWeight(int $v): self { $this->weight = $v; return $this; }
|
||||
public function setProvince(?Province $v): self { $this->province = $v; return $this; }
|
||||
@@ -109,6 +114,7 @@ class City
|
||||
'id' => $this->id,
|
||||
'uuid' => $this->uuid,
|
||||
'name' => $this->name,
|
||||
'site_name' => $this->siteName,
|
||||
'status' => $this->status,
|
||||
'weight' => $this->weight,
|
||||
'province_id' => $this->province?->getId(),
|
||||
|
||||
Reference in New Issue
Block a user