From 29881eede0f5a095163db9055eace22cf6c403f5 Mon Sep 17 00:00:00 2001 From: hamed <15238-genius.ha@users.noreply.drupalcode.org> Date: Thu, 30 Jul 2026 12:22:55 +0330 Subject: [PATCH] Add AST JSON file for blog category breadcrumb and filter prompt with detailed nodes and edges --- .../booking-engine-task-00b-service-mode.md | 564 ++++++++ graphify-out/.graphify_labels.json | 8 +- graphify-out/GRAPH_REPORT.md | 106 +- ...61a9597357c51c0690d130678fc09371fba5c.json | 1 + ...1958baf674c845e26104d4e5d9f1e92ce9367.json | 1 + graphify-out/cache/stat-index.json | 2 +- graphify-out/graph.html | 8 +- graphify-out/graph.json | 1282 +++++++++++++++-- graphify-out/manifest.json | 81 +- 9 files changed, 1828 insertions(+), 225 deletions(-) create mode 100644 .claude/prompt/booking-engine-task-00b-service-mode.md create mode 100644 graphify-out/cache/ast/v0.8.44/8886fd414c3128992605fa57a2a61a9597357c51c0690d130678fc09371fba5c.json create mode 100644 graphify-out/cache/ast/v0.8.44/971ea738fd4afba12d4dc73c5791958baf674c845e26104d4e5d9f1e92ce9367.json diff --git a/.claude/prompt/booking-engine-task-00b-service-mode.md b/.claude/prompt/booking-engine-task-00b-service-mode.md new file mode 100644 index 0000000..abe8272 --- /dev/null +++ b/.claude/prompt/booking-engine-task-00b-service-mode.md @@ -0,0 +1,564 @@ +# تسک ۰۰ب — سازگارسازی سایت عمومی با نوبت‌دهی سرویسی + +## پروژه + +`nobat724_front` (سایت عمومی) + +پرامپت همتا (بک‌اند، **باید اول تمام شده باشد**): +`clinicpro/.claude/prompt/booking-engine-task-runner.md` → تسک ۰۰ + +منبع کامل این تسک — چهار فایل، **همه را بخوان**: + +``` +clinicpro/docs/new_feture/taskes/task-00b-nobat724-service-mode/task.md +clinicpro/docs/new_feture/taskes/task-00b-nobat724-service-mode/architecture.md +clinicpro/docs/new_feture/taskes/task-00b-nobat724-service-mode/implementation_notes.md +clinicpro/docs/new_feture/taskes/task-00b-nobat724-service-mode/checklist.md ← وضعیت +``` + +و سه سند حاکم: + +``` +clinicpro/docs/new_feture/taskes/_shared/red-lines.md +clinicpro/docs/new_feture/taskes/_shared/ui-conventions.md +clinicpro/docs/new_feture/taskes/_shared/definition-of-done.md +``` + +--- + +## زمینه + +سایت حالت نوبت‌دهی سرویسی را **می‌شناسد** — `components/appointment/index.js` روش را +per محل تشخیص می‌دهد، `components/appointment/service/index.js` مرحلهٔ انتخاب سرویس را +نشان می‌دهد، و `lib/appointmentSlots.js` پاسخ `appointment-service-slots` را به قالب +اسلات تبدیل می‌کند. ولی سه دسته مشکل دارد: انحراف از تم، محاسبهٔ موازی مدت در فرانت، و +نبود سرویس/مدت در پنل کاربر. + +تسک ۰۰ در `clinicpro` سه endpoint جدید ساخته (`service-reschedule`، `convert-reserve`، +پارامتر `exclude_appointment_uuid`) و دو ستون `service_total_minutes`/`service_buffer_minutes` +اضافه کرده. این تسک سایت را با آن‌ها هم‌گام می‌کند. + +--- + +## مشکل / هدف + +پنج شکاف مشخص: + +| # | شکاف | فایل | +|---|---|---| +| ۱ | چهار رنگ hard-code در مرحلهٔ انتخاب سرویس → دارک‌مود می‌شکند | `components/appointment/service/index.js` | +| ۲ | مدت با `reduce` در فرانت حساب می‌شود، موازی با `total_duration_minutes` بک‌اند | همان فایل | +| ۳ | `adaptServiceSlots` همهٔ زمان‌ها را در یک تب با برچسب ثابت «زمان‌های خالی» می‌ریزد و `end_time` را اشتباه می‌دهد | `lib/appointmentSlots.js` | +| ۴ | پنل کاربر نام سرویس و مدت نوبت را نشان نمی‌دهد | `components/dashboard/userAccount/sidebars/turns/*` | +| ۵ | جابه‌جایی نوبت سرویسی از پنل کاربر وجود ندارد | `.../turns/isTurnsDetails/ButtonData.js` | + +شکاف ۲ مهم‌ترین است: وقتی تسک ۰۴ فرمول را به «زمان تنها / زمان اضافه» عوض کند، سایت +عدد قدیمی نشان می‌دهد و بیمار مدتی می‌بیند که با مدت واقعی نوبتش نمی‌خواند. + +--- + +## معیار پذیرش + +معیار کامل با همهٔ حالت‌های مرزی در `task.md` همان تسک است. خلاصهٔ اجباری: + +- ✅ **موفق:** مرحلهٔ انتخاب سرویس در دارک‌مود درست رندر می‌شود — هیچ متن تیره روی زمینهٔ + تیره، هیچ کارت سفید. +- ✅ **موفق:** مدت نمایش‌داده‌شده از `total_duration_minutes` پاسخ بک‌اند می‌آید؛ اگر بک‌اند + عدد متفاوتی بدهد، UI همان را نشان می‌دهد. +- ✅ **موفق:** پزشکی با دو شیفت (صبح ۹-۱۳، عصر ۱۶-۲۰) در حالت سرویسی → **دو تب** زمانی با + برچسب واقعی هر شیفت. +- ✅ **موفق:** کارت نوبت در پنل کاربر نام سرویس‌ها و مدت را نشان می‌دهد. +- ✅ **موفق:** بیمار از پنل نوبت سرویسی‌اش را جابه‌جا می‌کند و **عددی وارد نمی‌کند** — مدت + را بک‌اند حساب می‌کند. +- ✅ **موفق (⛔ خط سرخ):** رزرو اسلاتی سرتاسر **بیت‌به‌بیت مثل قبل** کار می‌کند و کارت نوبت + اسلاتی در پنل هیچ تغییری نمی‌کند. +- ❌ **خطا:** جابه‌جایی به زمان اشغال‌شده → **پیام فارسی خودِ بک‌اند** نمایش داده می‌شود + (نه «خطای نامشخص») و فهرست زمان‌ها خودکار `refetch` می‌شود. +- ❌ **خطا:** انتخاب صفر سرویس → دکمهٔ ادامه غیرفعال با راهنمای فارسی. +- ⚠️ **مرزی:** پنل کاربری که **فقط** نوبت اسلاتی دارد → بدون هیچ تغییری رندر می‌شود + (شرط `&&` روی فیلدهای سرویسی). +- ⚠️ **مرزی:** محل سرویسی بدون سرویس `bookable` → پیام روشن + پیشنهاد محل دیگر اگر باشد. +- ⚠️ **مرزی:** `total_duration_minutes` در پاسخ نبود (بک‌اند قدیمی) → `fallbackSum` با + `console.warn`، نه صفحهٔ خالی. +- ⚠️ **مرزی:** نوبت سرویسیِ قدیمی بدون `service_items` → نام «—»، بدون کرش. +- ⚠️ **مرزی:** نوبت رزرو (`is_reserve`) در پنل → فقط سرویس‌ها، بدون مدت (زمان ندارد). +- ⚠️ **مرزی:** نوبت ۹۰ دقیقه‌ای با شکاف ۹۰ دقیقه → **یک** تب، نه تب‌های تک‌عضوی + (آستانه = `max(60, durationMin)`). + +--- + +## فایل‌های مرتبط + +| فایل | نقش | +|------|-----| +| `components/appointment/service/index.js` | مرحلهٔ انتخاب سرویس — بازنویسی با توکن تم | +| `components/appointment/index.js` | ارکستراتور مراحل — تشخیص `booking_mode` per محل | +| `components/appointment/date/index.js` | مصرف‌کنندهٔ `adaptServiceSlots` | +| `components/appointment/detail/SubmitData.js` | ارسال `service_item_uuids` در ثبت | +| `lib/appointmentSlots.js` | `adaptSlots` (⛔ قفل) و `adaptServiceSlots` (بازنویسی) | +| `services/response.js` | افزودن `serviceReschedule` و `getServiceSlotsForReschedule` | +| `components/dashboard/userAccount/sidebars/turns/Card.js` | + نام سرویس و مدت | +| `.../turns/isTurnsDetails/DetailLg.js` · `DetailSm.js` | همان | +| `.../turns/isTurnsDetails/ButtonData.js` | + دکمهٔ جابه‌جایی | +| `.../turns/isTurnsDetails/modal/index.js` | مودال موجود — بازاستفاده | +| `mui/index.js` · `tailwind.config.js` · `app/globals.css` | منبع تم و توکن | +| `CLAUDE.md` | + بخش «حالت‌های نوبت‌دهی» | + +--- + +## وضعیت فعلی + +### ۱. رنگ‌های hard-code — `components/appointment/service/index.js` + +```jsx +

۱. انتخاب سرویس

+ +{services.length === 0 ? ( +

+ در حال حاضر سرویسی برای نوبت‌دهی آنلاین تعریف نشده است. +

+) : ( + … + className={`flex items-center justify-between gap-3 p-3 rounded-xl border text-right transition-colors ${ + active + ? "border-[#5559CE] bg-[#5559CE]/5" + : "border-gray-200 bg-white hover:border-[#5559CE]" + }`} +``` + +چهار رنگ ثابت. سایت `darkMode: "class"` دارد و صفحات عمومی با `data-theme` تم عوض +می‌کنند (`app/Providers.js` با `next-themes`) — این کامپوننت در دارک‌مود می‌شکند، در حالی +که بقیهٔ مراحل رزرو نمی‌شکنند. + +### ۲. محاسبهٔ موازی مدت — همان فایل + +```js +const totalMinutes = services + .filter((s) => draft.includes(s.uuid)) + .reduce((sum, s) => sum + (Number(s.duration_minutes) || 0), 0); +``` + +بک‌اند همان عدد را در `total_duration_minutes` پاسخ `appointment-service-slots` می‌دهد. +دو منبع حقیقت. + +### ۳. `adaptServiceSlots` — `lib/appointmentSlots.js` + +```js +// حالت سرویسی: پاسخ appointment-service-slots فقط start_times دارد (همه کافی). +// آن‌ها را در یک session قالب‌بندی می‌کنیم تا مثل حالت اسلاتی رندر شوند. +export function adaptServiceSlots(slotsResponse) { + const starts = + slotsResponse?.data?.start_times ?? slotsResponse?.start_times ?? []; + if (!starts.length) return []; + return [ + { + start_time: starts[0].start_time, + end_time: starts[starts.length - 1].start_time, + label: "زمان‌های خالی", + slots: starts.map((s) => ({ ...s, is_available: true })), + }, + ]; +} +``` + +سه مشکل: همه در یک تب · برچسب ثابت · `end_time` برابر **شروعِ** آخرین اسلات، نه پایان نوبت. + +⛔ تابع `adaptSlots()` بالای همین فایل (حالت اسلاتی) **قفل است** و یک خط هم عوض نمی‌شود: + +```js +export function adaptSlots(slotsResponse) { + const sessions = slotsResponse?.data?.sessions ?? slotsResponse?.sessions ?? []; + return sessions + .filter((session) => Array.isArray(session.slots) && session.slots.length > 0) + .map((session) => ({ … })); +} +``` + +### ۴ و ۵. پنل کاربر + +`components/dashboard/userAccount/sidebars/turns/Card.js` و +`isTurnsDetails/DetailLg.js`/`DetailSm.js` هیچ ارجاعی به `service` یا مدت ندارند. +`ButtonData.js` هیچ مسیر جابه‌جایی ندارد. + +### تشخیص حالت — `components/appointment/index.js:125` (درست، دست‌نخورده بماند) + +```js +// روش نوبت‌دهی و سرویس‌ها per-location هستند: یک پزشک می‌تواند در مطب شخصی +// اسلاتی و در کلینیک سرویسی باشد. +const bookingMode = selectedLocation?.booking_mode === "service" ? "service" : "slot"; +const bookingServices = selectedLocation?.services ?? []; +``` + +و `changeLocation()` که انتخاب‌های وابسته را باطل می‌کند — این رفتار درست است و حفظ می‌شود. + +--- + +## وظایف + +`todo` را از ردیف‌های `checklist.md` همان تسک بساز (بخش‌های ۰ تا ۸)، نه از این هشت وظیفه. +هر ردیف چک‌لیست را همان لحظه `⏳ → 🔄 → ✅` کن. + +### ۱. پیش‌بررسی قرارداد API — پیش از هر خط کد + +سه چیز را تأیید کن. اگر فیلدی نیست، **کد نزن**؛ به تسک ۰۰ برگردان. + +```bash +TOKEN= + +# ۱. appointments/user چه فیلدهایی دارد؟ +curl -s -H "Authorization: Bearer $TOKEN" \ + https://clinic-pro.ddev.site/api/v1/appointments/user | jq '.data[0] | keys' +# باید service_items و service_total_minutes داشته باشد + +# ۲. هر start_times[i] فیلد end_time دارد؟ +curl -s "https://clinic-pro.ddev.site/api/v1/appointment-service-slots?doctor_uuid=…&date=…&service_item_uuids[]=…" \ + | jq '.data.start_times[0], .data.total_duration_minutes, .data.buffer_minutes' + +# ۳. exclude_appointment_uuid کار می‌کند؟ +curl -s "…&exclude_appointment_uuid=" | jq '.data.start_times | length' +``` + +**نحوه تست:** خروجی واقعی هر سه دستور را در گزارش بگذار. ردیف‌های ۱.۱ تا ۱.۵ چک‌لیست +با همین‌ها ✅ می‌شوند. + +--- + +### ۲. بازنویسی `service/index.js` با توکن تم + +**اول رنگ‌های همسایه را ببین** — هدف این است که این کامپوننت از بقیهٔ مراحل رزرو قابل +تشخیص نباشد: + +```bash +grep -n "className" components/appointment/location/index.js | head -30 +grep -n "className" components/appointment/date/index.js | head -30 +``` + +بعد همان الگو را اعمال کن. ساختار DOM و رفتار `toggle` **عوض نمی‌شود** — فقط منبع رنگ. + +```jsx +// نمونه؛ نام دقیق کلاس را از tailwind.config.js و mui/index.js همین پروژه بردار +

۱. انتخاب سرویس

+ +className={active + ? "border-primary bg-primary/5" + : "border-border bg-surface hover:border-primary"} +``` + +اگر پروژه توکن معادل ندارد، **توکن جدید نساز** — همان کاری را بکن که `location/index.js` +می‌کند. اگر دارک‌مود در آن هم شکسته است، این یک مسئلهٔ جداست: ردیف ⚠️ در چک‌لیست ثبت کن +و **دامنه را گسترش نده**. صفحهٔ رزرو در این تسک بازطراحی نمی‌شود. + +**نحوه تست:** سناریوهای ۶.۱ و ۶.۲ چک‌لیست — رزرو سرویسی کامل، یک بار در لایت و یک بار +در دارک (`data-theme`). اسکرین‌شات هر دو حالت در گزارش. + +--- + +### ۳. حذف محاسبهٔ موازی مدت + +مدت از `total_duration_minutes` می‌آید. مسئلهٔ ترتیبی: مرحلهٔ انتخاب سرویس **پیش از** +انتخاب روز است و آن endpoint تاریخ می‌خواهد. راه‌حل انتخاب‌شده (دلیل در +`architecture.md` بخش ۲): فراخوانی با تاریخ امروز فقط برای گرفتن مدت — پاسخ ممکن است +`start_times` خالی داشته باشد ولی `total_duration_minutes` می‌آید. + +```js +const { data } = useServiceDuration(doctorUuid, clinicUuid, draft); // hook جدید + +const minutes = data?.total_duration_minutes ?? (() => { + console.warn('[booking] total_duration_minutes missing — falling back to client sum'); + return fallbackSum(draft, services); +})(); + +// پیش از انتخاب روز +مدت تقریبی: {minutes} دقیقه +// پس از انتخاب روز — از همان پاسخ appointment-service-slots +مدت نوبت: {minutes} دقیقه +``` + +`fallbackSum` موقت است و فقط برای بک‌اند قدیمی. حذفش را در چک‌لیست به‌عنوان ردیف `⏳` با +دلیل و تسک مقصد ثبت کن. + +**نحوه تست:** دو سرویس انتخاب کن و عدد UI را با +`curl … | jq '.data.total_duration_minutes'` مقایسه کن — باید یکی باشند. بعد یک بار +`total_duration_minutes` را از پاسخ حذف کن (mock) و ببین `console.warn` می‌زند و صفحه +خالی نمی‌شود. + +--- + +### ۴. `adaptServiceSlots` شیفت‌آگاه + +```js +export function adaptServiceSlots(slotsResponse) { + const payload = slotsResponse?.data ?? slotsResponse ?? {}; + const starts = payload.start_times ?? []; + if (!starts.length) return []; + + const durationMin = Number(payload.total_duration_minutes) || 0; + // آستانه هرگز کمتر از مدت نوبت — وگرنه نوبت بلند به تب‌های تک‌عضوی می‌شکند + const threshold = Math.max(60, durationMin); + + const groups = []; + let current = null; + + for (const s of starts) { + const gapMin = current + ? (s.start - current.slots[current.slots.length - 1].start) / 60 + : Infinity; + if (!current || gapMin > threshold) { + current = { slots: [] }; + groups.push(current); + } + current.slots.push({ ...s, is_available: true }); + } + + return groups.map((g) => { + const first = g.slots[0]; + const last = g.slots[g.slots.length - 1]; + const endTime = last.end_time ?? addMinutes(last.start_time, durationMin); + return { + start_time: first.start_time, + end_time: endTime, + label: `${first.start_time} - ${endTime}`, // همان قالب حالت اسلاتی + slots: g.slots, + }; + }); +} +``` + +کامنت بنویس که گروه‌بندی **هیوریستیک** است و راه دقیقش endpoint تسک ۰۶ است — تصمیم و +دلیل رد گزینهٔ «گروه‌بندی از بک‌اند» در `architecture.md` بخش ۳ ثبت شده (تغییر قرارداد +endpoint که سه کلاینت مصرفش می‌کنند). + +⛔ `adaptSlots()` را لمس نکن. + +**نحوه تست:** `adaptServiceSlots` تابع خالص است — بهترین کاندید تست واحد. پنج حالت: + +``` +یک شیفت → یک گروه +دو شیفت با شکاف ۳ ساعت → دو گروه با برچسب درست +نوبت ۹۰ دقیقه‌ای با شکاف ۹۰ دقیقه → یک گروه +start_times خالی → [] +end_time از پاسخ می‌آید، نه محاسبه +``` + +و سناریوی دستی ۶.۴: پزشک دو-شیفته در حالت سرویسی → دو تب در UI. + +--- + +### ۵. سرویس و مدت در پنل کاربر + +```jsx +// Card.js — شرط && اجباری است +{turn.service_items?.length > 0 && ( + {turn.service_items.map((s) => s.name).join("، ")} +)} +{turn.service_total_minutes && !turn.is_reserve && ( + {turn.service_total_minutes} دقیقه +)} +``` + +بدون `&&`، کارت **همهٔ** نوبت‌های اسلاتی کرش می‌کند — یعنی کل پنل کاربر می‌شکند، نه یک +خط. نوبت رزرو مدت نمی‌گیرد چون زمان ندارد. نوبت سرویسیِ قدیمی بدون `service_items` → +نام «—». + +همین را در `DetailLg.js` و `DetailSm.js` هم اعمال کن. + +**نحوه تست:** سناریوهای ۶.۵ تا ۶.۷ — پنل کاربری که **فقط** نوبت اسلاتی دارد باید بدون +تغییر رندر شود؛ پنل با نوبت سرویسی سرویس و مدت را نشان دهد؛ هر دو در دارک‌مود پنل +(`class`، نه `data-theme` — دو مکانیزم متفاوت‌اند). + +--- + +### ۶. جابه‌جایی سرویس‌آگاه از پنل + +```js +// services/response.js +serviceReschedule: (uuid, body) => + request.post(`api/v1/appointment/${uuid}/service-reschedule`, body, { requireAuth: true }), + +getServiceSlotsForReschedule: (doctor_uuid, date, service_uuids, exclude_uuid, clinic_uuid) => + request.get( + `api/v1/appointment-service-slots?doctor_uuid=${doctor_uuid}&date=${date}` + + service_uuids.map((u) => `&service_item_uuids[]=${encodeURIComponent(u)}`).join("") + + `&exclude_appointment_uuid=${exclude_uuid}` + clinicQuery(clinic_uuid), + { requireAuth: true } + ), +``` + +`ButtonData.js` دکمهٔ «جابه‌جایی» می‌گیرد که مودال موجود +(`isTurnsDetails/modal/index.js`) را با `components/appointment/date/` باز می‌کند — +**انتخابگر زمان جدید نساز**؛ آن کامپوننت هر دو حالت را از قبل می‌شناسد. + +بیمار **مدت وارد نمی‌کند**: `service-reschedule` فقط `start` می‌گیرد. + +خطا را با پیام خودِ بک‌اند نشان بده: + +```js +catch (err) { + const msg = err?.response?.data?.errors?.[0]?.message ?? 'خطایی رخ داد'; + toast.error(msg); + refetchSlots(); // بعد از خطای تداخل اجباری +} +``` + +`ERR_SLOT_TAKEN` پیام فارسی دقیق دارد؛ «خطای نامشخص» یعنی بیمار همان دکمه را ده بار می‌زند. + +**نحوه تست:** سناریوهای ۶.۸ و ۶.۹ — جابه‌جایی موفق (مدت حفظ می‌شود، بیمار عددی وارد +نکرده) و جابه‌جایی به زمانی که هم‌زمان توسط شخص دیگری گرفته شده (پیام فارسی + `refetch`). +برای دومی، یک نوبت از پنل ادمین روی همان زمان بساز و بعد دکمه را بزن. + +--- + +### ۷. به‌روزرسانی `checklist.md` — دو مخزن جدا + +⚠️ **این تسک دو مخزن git را لمس می‌کند:** + +| مخزن | چه چیزی | +|---|---| +| `nobat724_front` | همهٔ تغییرات کد | +| `clinicpro` | فقط `docs/new_feture/taskes/task-00b-nobat724-service-mode/checklist.md` | + +پس **دو commit** لازم است. فراموش کردن دومی یعنی راهبر تسک بعدی فکر می‌کند ۰۰ب تمام +نشده و دوباره تحویلش می‌دهد. + +```bash +# ۱. کد سایت +cd nobat724_front +git checkout -b feat/booking-service-mode-frontend # اگر روی main هستی +git add -A +git commit -m "$(cat <<'EOF' +feat(booking): align public site with service booking mode + +Theme tokens in service picker, backend-driven duration, shift-aware +slot grouping, service/duration in user panel, service-aware reschedule. +Slot-mode path untouched. + +Task: clinicpro/docs/new_feture/taskes/task-00b-nobat724-service-mode/ + +Co-Authored-By: Claude Opus 5 (1M context) +EOF +)" + +# ۲. چک‌لیست در مخزن clinicpro +cd ../clinicpro +git add docs/new_feture/taskes/task-00b-nobat724-service-mode/checklist.md +git commit -m "$(cat <<'EOF' +docs(booking): mark task 00b checklist complete + +Co-Authored-By: Claude Opus 5 (1M context) +EOF +)" +``` + +**نحوه تست:** `git log --oneline -1` در هر دو مخزن، و +`grep -c '| ⏳ |' clinicpro/docs/new_feture/taskes/task-00b-nobat724-service-mode/checklist.md` +که باید ۰ بدهد (یا فقط ردیف‌های `⏳` با یادداشت دلیل). + +--- + +### ۸. مستندات و گزارش پایانی + +``` +nobat724_front/CLAUDE.md ← بخش «حالت‌های نوبت‌دهی»: slot و service، + per محل تعیین می‌شوند، adaptSlots/adaptServiceSlots + نقطهٔ تفکیک‌اند +clinicpro/docs/api/appointment.md ← یادداشت: گروه‌بندی شیفت در حالت سرویسی + هیوریستیک سمت فرانت است؛ راه دقیقش endpoint تسک ۰۶ +``` + +گزارش پایانی: + +``` +✅ تسک ۰۰ب تمام شد + +پیاده‌سازی + • <فایل‌ها با مسیر> + +تست + • npm run build : بدون خطا + • npm run lint : بدون خطای جدید + • تست واحد adaptServiceSlots: حالت، سبز + • ۱۱ سناریوی دستی : <فهرست با نتیجه> + +خط سرخ + • مسیر اسلاتی دست‌نخورده — adaptSlots عوض نشد؛ سناریوی ۶.۳ سرتاسر تست شد + +کلاینت دیگر + • clinic-pro-tauri: <چه بررسی شد — قرارداد service_item تکی> + +به تعویق افتاد + • fallbackSum — دلیل: تا deploy تسک ۰۰ · تسک مقصد: + +commit سایت: · commit چک‌لیست: + +──────────────────────────────── +🎯 بعدی: تسک ۰۱ — شعبه و اتاق + اجرا کن: /run-prompt clinicpro/.claude/prompt/booking-engine-task-runner.md +``` + +--- + +## نکات مهم + +### ⛔ خط سرخ — مسیر اسلاتی سایت + +`_shared/red-lines.md` حاکم است. در این پروژه یعنی: + +- `adaptSlots()` **یک خط هم** عوض نمی‌شود +- رندر تب‌های شیفت در حالت اسلاتی دست‌نخورده +- کارت نوبت اسلاتی در پنل بدون تغییر (شرط `&&` روی فیلدهای سرویسی) +- سناریوی ۶.۳ (رزرو اسلاتی سرتاسر) **اجباری** است، نه اختیاری + +اگر بعد از تغییرات، رزرو اسلاتی یک پیکسل هم فرق کرد، تغییر برمی‌گردد. + +### دامنه را گسترش نده + +فقط `service/index.js` که خودمان اضافه کردیم و از بقیهٔ مراحل منحرف است بازنویسی می‌شود. +اگر `location/index.js` یا `date/index.js` هم رنگ hard-code دارند و دارک‌مودشان شکسته +است، این یک مسئلهٔ جداست: ردیف `⚠️` در چک‌لیست ثبت کن و بگذار. بازطراحی کل صفحهٔ رزرو +در این تسک نیست. + +### قواعد سایت که رعایت می‌شوند + +از `_shared/ui-conventions.md` بخش `nobat724_front` و `CLAUDE.md` پروژه: + +- تم MUI از `mui/index.js` با `direction: rtl` — **تم جدید نساز** +- Tailwind با `darkMode: "class"`؛ صفحات عمومی `data-theme`، پنل `class` — **هر دو تست شوند** +- **فونت فقط Vazir** از `app/globals.css` با `@font-face` — فونت دیگر اضافه نکن +- فراخوانی API از `services/response.js` → `request.*`؛ برای auth `{ requireAuth: true }` + تا کوکی `access_token` به‌صورت Bearer ضمیمه شود +- داده server-side با `lib/req.js` → `fetchReq(url)` +- کامپوننت‌های موجود `components/appointment/*` توسعه داده می‌شوند، مسیر موازی نه +- تاریخ شمسی با `jalali-moment` +- RTL — `ms-*`/`me-*` نه `ml-*`/`mr-*` +- هر صفحه‌ای که دست خورد، `generateMetadata` و `await params` سالم بماند +- slug پزشک/کلینیک = `uuid` +- شهر از subdomain: server-side `lib/getStateInfo.js` · client-side `useProvince()` + +### وابستگی سخت به تسک ۰۰ + +سه endpoint و دو ستون این تسک را تسک ۰۰ می‌سازد. اگر +`clinicpro/docs/new_feture/taskes/task-00-service-mode-completion/checklist.md` کامل ✅ +نیست، **این تسک شروع نمی‌شود**: + +```bash +grep -c '| ⏳ |\|| 🔄 |' clinicpro/docs/new_feture/taskes/task-00-service-mode-completion/checklist.md +# باید ۰ بدهد +``` + +اگر نداد، پیام بده و بایست: +`/run-prompt clinicpro/.claude/prompt/booking-engine-task-runner.md` + +### cross-repo — بررسی دستی اجباری + +`clinic-pro-tauri/src/service/response.js` هم مصرف‌کنندهٔ همان `/api/v1/...` است. این +تسک قرارداد بک‌اند را عوض نمی‌کند (فقط مصرف می‌کند)، ولی اگر تسک ۰۰ فیلدی را جابه‌جا +کرده باشد، اپ دسکتاپ هم متأثر است. بررسی کن که `service_item` تکی هنوز در پاسخ هست و +گزارش بده — «بررسی شد» بی‌ارزش است، نام فایل و فیلد را بنویس (guidelines §۳). + +### تست خودکار محدود است + +پروژه تست خودکار کمی دارد، پس **یازده سناریوی دستی بخش ۶ چک‌لیست اجباری‌اند**، نه +توصیه. هر ده مورد اول روی موبایل هم تکرار می‌شوند (سناریو ۶.۱۰) — بدون اسکرول افقی. + +`adaptServiceSlots` تابع خالص است و بهترین کاندید تست واحد؛ اگر پروژه runner تست ندارد، +یک فایل ساده در `tests/appointmentSlots.test.js` بساز و در چک‌لیست ثبت کن. diff --git a/graphify-out/.graphify_labels.json b/graphify-out/.graphify_labels.json index af4bbdc..cd90861 100644 --- a/graphify-out/.graphify_labels.json +++ b/graphify-out/.graphify_labels.json @@ -405,5 +405,11 @@ "403": "Community 403", "404": "Community 404", "405": "Community 405", - "406": "Community 406" + "406": "Community 406", + "407": "Community 407", + "408": "Community 408", + "409": "Community 409", + "410": "Community 410", + "411": "Community 411", + "412": "Community 412" } diff --git a/graphify-out/GRAPH_REPORT.md b/graphify-out/GRAPH_REPORT.md index 44cd8ec..aed138e 100644 --- a/graphify-out/GRAPH_REPORT.md +++ b/graphify-out/GRAPH_REPORT.md @@ -1,16 +1,16 @@ -# Graph Report - nobat724_front (2026-07-27) +# Graph Report - nobat724_front (2026-07-30) ## Corpus Check -- 639 files · ~576,045 words +- 642 files · ~582,216 words - Verdict: corpus is large enough that graph structure adds value. ## Summary -- 2422 nodes · 2500 edges · 407 communities (372 shown, 35 thin omitted) +- 2473 nodes · 2548 edges · 413 communities (377 shown, 36 thin omitted) - Extraction: 93% EXTRACTED · 7% INFERRED · 0% AMBIGUOUS · INFERRED: 176 edges (avg confidence: 0.8) - Token cost: 0 input · 0 output ## Graph Freshness -- Built from commit: `19ae08c0` +- Built from commit: `8a24579a` - Run `git rev-parse HEAD` and compare to check if the graph is stale. - Run `graphify update .` after code changes (no API cost). @@ -177,6 +177,12 @@ - [[_COMMUNITY_Community 398|Community 398]] - [[_COMMUNITY_Community 402|Community 402]] - [[_COMMUNITY_Community 403|Community 403]] +- [[_COMMUNITY_Community 407|Community 407]] +- [[_COMMUNITY_Community 408|Community 408]] +- [[_COMMUNITY_Community 409|Community 409]] +- [[_COMMUNITY_Community 410|Community 410]] +- [[_COMMUNITY_Community 411|Community 411]] +- [[_COMMUNITY_Community 412|Community 412]] ## God Nodes (most connected - your core abstractions) 1. `getStateInfo()` - 29 edges @@ -205,7 +211,7 @@ ## Import Cycles - None detected. -## Communities (407 total, 35 thin omitted) +## Communities (413 total, 36 thin omitted) ### Community 0 - "Community 0" Cohesion: 0.05 @@ -224,8 +230,8 @@ Cohesion: 0.23 Nodes (16): getCurrentDomain(), robots(), cityFilterParams(), fetchAllPages(), getBlogUrls(), getCityScope(), getClinicUrls(), getCurrentDomain() (+8 more) ### Community 4 - "Community 4" -Cohesion: 0.06 -Nodes (22): ContentDetail(), About(), ListBime(), Services(), Specialties(), TextDetail(), listTab, AddComment() (+14 more) +Cohesion: 0.05 +Nodes (33): ContentDetail(), About(), ListBime(), Services(), Specialties(), TextDetail(), listTab, AddComment() (+25 more) ### Community 5 - "Community 5" Cohesion: 0.07 @@ -240,8 +246,8 @@ Cohesion: 0.07 Nodes (4): degreeVal, NAME_HONORIFICS, normalizeBlog(), removeTokenHead ### Community 8 - "Community 8" -Cohesion: 0.07 -Nodes (28): devDependencies, babel-plugin-react-compiler, cross-env, eslint, eslint-config-next, @eslint/eslintrc, jsdom, prettier (+20 more) +Cohesion: 0.13 +Nodes (15): devDependencies, babel-plugin-react-compiler, cross-env, eslint, eslint-config-next, @eslint/eslintrc, jsdom, prettier (+7 more) ### Community 9 - "Community 9" Cohesion: 0.07 @@ -324,8 +330,8 @@ Cohesion: 0.12 Nodes (16): دیپلوی nobat724_front روی Liara (پلتفرم Next.js), زمینه, فایل‌های مرتبط, مشکل / هدف, نکات مهم, وضعیت فعلی, وظایف, پروژه (+8 more) ### Community 29 - "Community 29" -Cohesion: 0.08 -Nodes (20): generateMetadata(), Blogs(), generateMetadata(), Clinics(), Appointment(), metadata, Doctors(), generateMetadata() (+12 more) +Cohesion: 0.13 +Nodes (11): generateMetadata(), Blogs(), generateMetadata(), Appointment(), metadata, fetchSiteContext(), getStateInfo(), siteContextCache (+3 more) ### Community 30 - "Community 30" Cohesion: 0.12 @@ -388,8 +394,8 @@ Cohesion: 0.14 Nodes (13): `hours/List.js`, آبجکت اسلات (از `adaptSlots` / API), تأیید و سخت‌سازی غیرفعال‌بودن اسلات‌های گذشته در صفحه‌ی نوبت, زمینه, فایل‌های مرتبط, مشکل / هدف, نکات مهم, وضعیت فعلی (کد واقعی) (+5 more) ### Community 45 - "Community 45" -Cohesion: 0.40 -Nodes (9): generateMetadata(), blogCover(), imageUrl(), domainScopeCityId(), findCityById(), isBlogVisibleOnDomain(), Blog(), getBlog (+1 more) +Cohesion: 0.20 +Nodes (20): generateMetadata(), generateMetadata(), generateMetadata(), DoctorPage(), blogCover(), doctorTitle(), imageUrl(), domainScopeCityId() (+12 more) ### Community 46 - "Community 46" Cohesion: 0.22 @@ -488,8 +494,8 @@ Cohesion: 0.20 Nodes (9): رفع جهت تبدیل تاریخ تولد هنگام ایجاد پروفایل, زمینه, فایل‌های مرتبط, مشکل / هدف, نکات مهم, وضعیت فعلی (کد واقعی), وظایف, پروژه (+1 more) ### Community 70 - "Community 70" -Cohesion: 0.13 -Nodes (13): ClinicsPage(), AutoComplete(), ButtonFilter(), Content(), ModalSearchCity(), AutoSearch(), FilterButton(), SearchBar() (+5 more) +Cohesion: 0.20 +Nodes (7): AutoComplete(), ButtonFilter(), Content(), ModalSearchCity(), AutoSearch(), FilterButton(), SearchBar() ### Community 71 - "Community 71" Cohesion: 0.22 @@ -520,8 +526,8 @@ Cohesion: 0.17 Nodes (11): زمینه, سایت دامنه اختصاصی نماینده سراسری — تشخیص دامنه، فیلتر پزشکان/کلینیک‌ها, فایل‌های مرتبط, مشکل / هدف, نکات مهم, وضعیت فعلی, وظایف, پروژه (+3 more) ### Community 81 - "Community 81" -Cohesion: 0.24 -Nodes (14): generateMetadata(), Detail(), getClinicAddress(), getClinicCity(), getClinicPhone(), getClinicState(), hasClinicContact(), telHref() (+6 more) +Cohesion: 0.07 +Nodes (28): cross-repo — بررسی دستی اجباری, تست خودکار محدود است, تسک ۰۰ب — سازگارسازی سایت عمومی با نوبت‌دهی سرویسی, تشخیص حالت — `components/appointment/index.js:125` (درست، دست‌نخورده بماند), ⛔ خط سرخ — مسیر اسلاتی سایت, دامنه را گسترش نده, زمینه, فایل‌های مرتبط (+20 more) ### Community 82 - "Community 82" Cohesion: 0.17 @@ -532,8 +538,8 @@ Cohesion: 0.24 Nodes (5): Head(), Article(), LatestArticles(), Title(), ItemTitle() ### Community 86 - "Community 86" -Cohesion: 0.16 -Nodes (15): RootLayout(), generateMetadata(), safeJsonLd(), bodyVariants(), buildSpecialtyFaq(), buildSpecialtyIntro(), closingVariants(), openingVariants() (+7 more) +Cohesion: 0.27 +Nodes (10): generateMetadata(), bodyVariants(), buildSpecialtyFaq(), buildSpecialtyIntro(), closingVariants(), openingVariants(), pick(), findSpecialty() (+2 more) ### Community 87 - "Community 87" Cohesion: 0.33 @@ -608,8 +614,8 @@ Cohesion: 0.15 Nodes (12): اصلاح بخش «اطلاعات تماس» صفحه کلینیک, زمینه, فایل‌های مرتبط, مشکل / هدف, نکات مهم, وضعیت فعلی, وظایف, پروژه (+4 more) ### Community 140 - "Community 140" -Cohesion: 0.53 -Nodes (4): Pageguide(), absoluteUrl(), buildBreadcrumbJsonLd(), normalizeBreadcrumb() +Cohesion: 0.36 +Nodes (6): RootLayout(), Pageguide(), absoluteUrl(), buildBreadcrumbJsonLd(), normalizeBreadcrumb(), safeJsonLd() ### Community 354 - "Community 354" Cohesion: 0.11 @@ -632,16 +638,16 @@ Cohesion: 0.19 Nodes (9): Card(), PAYMENT_STATUS, TYPE_LABELS, Head(), listTab, Transactions(), List(), PAYMENT_STATUS (+1 more) ### Community 369 - "Community 369" -Cohesion: 0.33 -Nodes (5): buildDoctorParams(), normalizeDoctorNameQuery(), QueryForDoctorsClinicReq(), QueryForDoctorsReq(), buildSearchUrl() +Cohesion: 0.29 +Nodes (6): Doctors(), buildDoctorParams(), normalizeDoctorNameQuery(), QueryForDoctorsClinicReq(), QueryForDoctorsReq(), buildSearchUrl() ### Community 370 - "Community 370" -Cohesion: 0.29 -Nodes (4): ProvinceContext, ProvinceProvider(), Probe(), useProvince() +Cohesion: 0.25 +Nodes (5): ProvinceContext, ProvinceProvider(), Probe(), useProvince(), SubmitData() ### Community 372 - "Community 372" -Cohesion: 0.22 -Nodes (14): generateMetadata(), DoctorPage(), doctorTitle(), hasRealName(), isNoindexDoctor(), isThinClinic(), isThinDoctor(), isUnclaimedDoctor() (+6 more) +Cohesion: 0.48 +Nodes (6): hasRealName(), isNoindexDoctor(), isThinClinic(), isThinDoctor(), isUnclaimedDoctor(), PLACEHOLDER_NAMES ### Community 373 - "Community 373" Cohesion: 0.12 @@ -683,10 +689,6 @@ Nodes (10): زمینه, فعال‌سازی بلاگ شهر-محور (بعد ا Cohesion: 0.20 Nodes (9): زمینه, ساده‌سازی sitemap با شهرِ موجود در پاسخ + آستانهٔ sitemap-index, نکات مهم, وضعیت فعلی, وظایف, پروژه, ۱. حذف ۳۵ sweep و یکسان‌سازی با الگوی کلینیک, ۲. آستانهٔ sitemap-index (مستقل از backend) (+1 more) -### Community 388 - "Community 388" -Cohesion: 0.36 -Nodes (3): Form(), SubmitData(), ButtonFixed() - ### Community 390 - "Community 390" Cohesion: 0.40 Nodes (3): Allergies(), ItemAllergie(), ModalAddAlergie() @@ -703,37 +705,61 @@ Nodes (3): ModalAddRelatives(), Relatives(), ItemRelatives() Cohesion: 0.40 Nodes (3): ModalAddSurgeries(), Surgeries(), ItemSurgeries() +### Community 395 - "Community 395" +Cohesion: 0.31 +Nodes (3): Content(), Form(), EditField() + ### Community 397 - "Community 397" Cohesion: 0.50 Nodes (3): formatToman(), rialToToman(), Paying() ### Community 402 - "Community 402" -Cohesion: 0.38 -Nodes (4): DoctorsPage(), resolveCityDisplayName(), isRootCity(), ListDoctors() +Cohesion: 0.21 +Nodes (10): ClinicsPage(), DoctorsPage(), resolveCityDisplayName(), buildClinicsIntro(), buildDoctorsIntro(), CLINIC_INTROS(), DOCTOR_INTROS(), pick() (+2 more) ### Community 403 - "Community 403" Cohesion: 0.29 Nodes (6): CARD, lines, mark, OUT, PARAGRAPH, ROOT +### Community 407 - "Community 407" +Cohesion: 0.10 +Nodes (19): زمینه, صفحهٔ بلاگ: بردکرامب دسته‌بندی، فیلتر دسته‌بندی، و اصلاح ستون «مطالب مرتبط», فایل‌های مرتبط, مشکل / هدف, معیار پذیرش, نکات مهم, وضعیت فعلی, وظایف (+11 more) + +### Community 408 - "Community 408" +Cohesion: 0.17 +Nodes (8): Clinics(), generateMetadata(), buildClinicParams(), isMaintenanceError(), isNextRedirectError(), axiosInstance, fetchReq(), getClinicDoctors() + +### Community 409 - "Community 409" +Cohesion: 0.25 +Nodes (8): scripts, build, dev, lint, start, test, test:cov, test:watch + +### Community 410 - "Community 410" +Cohesion: 0.33 +Nodes (5): engines, node, name, private, version + +### Community 411 - "Community 411" +Cohesion: 0.67 +Nodes (3): IDS_WITH_ACTIVE_CHILDREN, isCategorySpecialty(), isIndexableSpecialty() + ## Knowledge Gaps -- **904 isolated node(s):** `metadata`, `fallbackLabels`, `MaterialUISwitch`, `fixedIconData`, `metadata` (+899 more) +- **945 isolated node(s):** `metadata`, `fallbackLabels`, `MaterialUISwitch`, `fixedIconData`, `metadata` (+940 more) These have ≤1 connection - possible missing edges or undocumented components. -- **35 thin communities (<3 nodes) omitted from report** — run `graphify query` to explore isolated nodes. +- **36 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 `imageUrl()` connect `Community 45` to `Community 0`, `Community 4`, `Community 7`, `Community 392`, `Community 81`, `Community 83`, `Community 372`, `Community 55`, `Community 56`, `Community 380`?** +- **Why does `imageUrl()` connect `Community 45` to `Community 0`, `Community 4`, `Community 7`, `Community 392`, `Community 83`, `Community 55`, `Community 56`, `Community 380`?** _High betweenness centrality (0.028) - this node is a cross-community bridge._ -- **Why does `getStateInfo()` connect `Community 29` to `Community 0`, `Community 6`, `Community 72`, `Community 377`, `Community 45`, `Community 14`, `Community 16`, `Community 81`, `Community 402`, `Community 51`, `Community 372`, `Community 86`, `Community 89`?** - _High betweenness centrality (0.023) - this node is a cross-community bridge._ -- **Why does `doctorTitle()` connect `Community 372` to `Community 5`, `Community 7`?** +- **Why does `getStateInfo()` connect `Community 29` to `Community 89`, `Community 0`, `Community 6`, `Community 72`, `Community 140`, `Community 45`, `Community 14`, `Community 16`, `Community 369`, `Community 402`, `Community 51`, `Community 86`, `Community 408`, `Community 377`?** + _High betweenness centrality (0.025) - this node is a cross-community bridge._ +- **Why does `doctorTitle()` connect `Community 45` to `Community 5`, `Community 7`?** _High betweenness centrality (0.012) - this node is a cross-community bridge._ - **Are the 27 inferred relationships involving `getStateInfo()` (e.g. with `generateMetadata()` and `AboutUsPage()`) actually correct?** _`getStateInfo()` has 27 INFERRED edges - model-reasoned connections that need verification._ - **Are the 14 inferred relationships involving `imageUrl()` (e.g. with `generateMetadata()` and `generateMetadata()`) actually correct?** _`imageUrl()` has 14 INFERRED edges - model-reasoned connections that need verification._ - **What connects `metadata`, `fallbackLabels`, `MaterialUISwitch` to the rest of the system?** - _904 weakly-connected nodes found - possible documentation gaps or missing edges._ + _945 weakly-connected nodes found - possible documentation gaps or missing edges._ - **Should `Community 0` be split into smaller, more focused modules?** _Cohesion score 0.05263157894736842 - nodes in this community are weakly interconnected._ \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.8.44/8886fd414c3128992605fa57a2a61a9597357c51c0690d130678fc09371fba5c.json b/graphify-out/cache/ast/v0.8.44/8886fd414c3128992605fa57a2a61a9597357c51c0690d130678fc09371fba5c.json new file mode 100644 index 0000000..2f75585 --- /dev/null +++ b/graphify-out/cache/ast/v0.8.44/8886fd414c3128992605fa57a2a61a9597357c51c0690d130678fc09371fba5c.json @@ -0,0 +1 @@ +{"nodes": [{"id": "users_hamed_pj_my_pj_clinic_pro_nobat724_front_claude_prompt_booking_engine_task_00b_service_mode_md", "label": "booking-engine-task-00b-service-mode.md", "file_type": "document", "source_file": ".claude/prompt/booking-engine-task-00b-service-mode.md", "source_location": "L1"}, {"id": "prompt_booking_engine_task_00b_service_mode_\u062a\u0633\u06a9_\u06f0\u06f0\u0628_\u0633\u0627\u0632\u06af\u0627\u0631\u0633\u0627\u0632\u06cc_\u0633\u0627\u06cc\u062a_\u0639\u0645\u0648\u0645\u06cc_\u0628\u0627_\u0646\u0648\u0628\u062a_\u062f\u0647\u06cc_\u0633\u0631\u0648\u06cc\u0633\u06cc", "label": "\u062a\u0633\u06a9 \u06f0\u06f0\u0628 \u2014 \u0633\u0627\u0632\u06af\u0627\u0631\u0633\u0627\u0632\u06cc \u0633\u0627\u06cc\u062a \u0639\u0645\u0648\u0645\u06cc \u0628\u0627 \u0646\u0648\u0628\u062a\u200c\u062f\u0647\u06cc \u0633\u0631\u0648\u06cc\u0633\u06cc", "file_type": "document", "source_file": ".claude/prompt/booking-engine-task-00b-service-mode.md", "source_location": "L1"}, {"id": "prompt_booking_engine_task_00b_service_mode_\u067e\u0631\u0648\u0698\u0647", "label": "\u067e\u0631\u0648\u0698\u0647", "file_type": "document", "source_file": ".claude/prompt/booking-engine-task-00b-service-mode.md", "source_location": "L3"}, {"id": "prompt_booking_engine_task_00b_service_mode_\u0632\u0645\u06cc\u0646\u0647", "label": "\u0632\u0645\u06cc\u0646\u0647", "file_type": "document", "source_file": ".claude/prompt/booking-engine-task-00b-service-mode.md", "source_location": "L29"}, {"id": "prompt_booking_engine_task_00b_service_mode_\u0645\u0634\u06a9\u0644_\u0647\u062f\u0641", "label": "\u0645\u0634\u06a9\u0644 / \u0647\u062f\u0641", "file_type": "document", "source_file": ".claude/prompt/booking-engine-task-00b-service-mode.md", "source_location": "L43"}, {"id": "prompt_booking_engine_task_00b_service_mode_\u0645\u0639\u06cc\u0627\u0631_\u067e\u0630\u06cc\u0631\u0634", "label": "\u0645\u0639\u06cc\u0627\u0631 \u067e\u0630\u06cc\u0631\u0634", "file_type": "document", "source_file": ".claude/prompt/booking-engine-task-00b-service-mode.md", "source_location": "L60"}, {"id": "prompt_booking_engine_task_00b_service_mode_\u0641\u0627\u06cc\u0644_\u0647\u0627\u06cc_\u0645\u0631\u062a\u0628\u0637", "label": "\u0641\u0627\u06cc\u0644\u200c\u0647\u0627\u06cc \u0645\u0631\u062a\u0628\u0637", "file_type": "document", "source_file": ".claude/prompt/booking-engine-task-00b-service-mode.md", "source_location": "L90"}, {"id": "prompt_booking_engine_task_00b_service_mode_\u0648\u0636\u0639\u06cc\u062a_\u0641\u0639\u0644\u06cc", "label": "\u0648\u0636\u0639\u06cc\u062a \u0641\u0639\u0644\u06cc", "file_type": "document", "source_file": ".claude/prompt/booking-engine-task-00b-service-mode.md", "source_location": "L109"}, {"id": "prompt_booking_engine_task_00b_service_mode_\u06f1_\u0631\u0646\u06af_\u0647\u0627\u06cc_hard_code_components_appointment_service_index_js", "label": "\u06f1. \u0631\u0646\u06af\u200c\u0647\u0627\u06cc hard-code \u2014 `components/appointment/service/index.js`", "file_type": "document", "source_file": ".claude/prompt/booking-engine-task-00b-service-mode.md", "source_location": "L111"}, {"id": "prompt_booking_engine_task_00b_service_mode_\u06f2_\u0645\u062d\u0627\u0633\u0628\u0647_\u0645\u0648\u0627\u0632\u06cc_\u0645\u062f\u062a_\u0647\u0645\u0627\u0646_\u0641\u0627\u06cc\u0644", "label": "\u06f2. \u0645\u062d\u0627\u0633\u0628\u0647\u0654 \u0645\u0648\u0627\u0632\u06cc \u0645\u062f\u062a \u2014 \u0647\u0645\u0627\u0646 \u0641\u0627\u06cc\u0644", "file_type": "document", "source_file": ".claude/prompt/booking-engine-task-00b-service-mode.md", "source_location": "L133"}, {"id": "prompt_booking_engine_task_00b_service_mode_\u06f3_adaptserviceslots_lib_appointmentslots_js", "label": "\u06f3. `adaptServiceSlots` \u2014 `lib/appointmentSlots.js`", "file_type": "document", "source_file": ".claude/prompt/booking-engine-task-00b-service-mode.md", "source_location": "L144"}, {"id": "prompt_booking_engine_task_00b_service_mode_\u06f4_\u0648_\u06f5_\u067e\u0646\u0644_\u06a9\u0627\u0631\u0628\u0631", "label": "\u06f4 \u0648 \u06f5. \u067e\u0646\u0644 \u06a9\u0627\u0631\u0628\u0631", "file_type": "document", "source_file": ".claude/prompt/booking-engine-task-00b-service-mode.md", "source_location": "L177"}, {"id": "prompt_booking_engine_task_00b_service_mode_\u062a\u0634\u062e\u06cc\u0635_\u062d\u0627\u0644\u062a_components_appointment_index_js_125_\u062f\u0631\u0633\u062a_\u062f\u0633\u062a_\u0646\u062e\u0648\u0631\u062f\u0647_\u0628\u0645\u0627\u0646\u062f", "label": "\u062a\u0634\u062e\u06cc\u0635 \u062d\u0627\u0644\u062a \u2014 `components/appointment/index.js:125` (\u062f\u0631\u0633\u062a\u060c \u062f\u0633\u062a\u200c\u0646\u062e\u0648\u0631\u062f\u0647 \u0628\u0645\u0627\u0646\u062f)", "file_type": "document", "source_file": ".claude/prompt/booking-engine-task-00b-service-mode.md", "source_location": "L183"}, {"id": "prompt_booking_engine_task_00b_service_mode_\u0648\u0638\u0627\u06cc\u0641", "label": "\u0648\u0638\u0627\u06cc\u0641", "file_type": "document", "source_file": ".claude/prompt/booking-engine-task-00b-service-mode.md", "source_location": "L196"}, {"id": "prompt_booking_engine_task_00b_service_mode_\u06f1_\u067e\u06cc\u0634_\u0628\u0631\u0631\u0633\u06cc_\u0642\u0631\u0627\u0631\u062f\u0627\u062f_api_\u067e\u06cc\u0634_\u0627\u0632_\u0647\u0631_\u062e\u0637_\u06a9\u062f", "label": "\u06f1. \u067e\u06cc\u0634\u200c\u0628\u0631\u0631\u0633\u06cc \u0642\u0631\u0627\u0631\u062f\u0627\u062f API \u2014 \u067e\u06cc\u0634 \u0627\u0632 \u0647\u0631 \u062e\u0637 \u06a9\u062f", "file_type": "document", "source_file": ".claude/prompt/booking-engine-task-00b-service-mode.md", "source_location": "L201"}, {"id": "prompt_booking_engine_task_00b_service_mode_\u06f2_\u0628\u0627\u0632\u0646\u0648\u06cc\u0633\u06cc_service_index_js_\u0628\u0627_\u062a\u0648\u06a9\u0646_\u062a\u0645", "label": "\u06f2. \u0628\u0627\u0632\u0646\u0648\u06cc\u0633\u06cc `service/index.js` \u0628\u0627 \u062a\u0648\u06a9\u0646 \u062a\u0645", "file_type": "document", "source_file": ".claude/prompt/booking-engine-task-00b-service-mode.md", "source_location": "L226"}, {"id": "prompt_booking_engine_task_00b_service_mode_\u06f3_\u062d\u0630\u0641_\u0645\u062d\u0627\u0633\u0628\u0647_\u0645\u0648\u0627\u0632\u06cc_\u0645\u062f\u062a", "label": "\u06f3. \u062d\u0630\u0641 \u0645\u062d\u0627\u0633\u0628\u0647\u0654 \u0645\u0648\u0627\u0632\u06cc \u0645\u062f\u062a", "file_type": "document", "source_file": ".claude/prompt/booking-engine-task-00b-service-mode.md", "source_location": "L256"}, {"id": "prompt_booking_engine_task_00b_service_mode_\u06f4_adaptserviceslots_\u0634\u06cc\u0641\u062a_\u0622\u06af\u0627\u0647", "label": "\u06f4. `adaptServiceSlots` \u0634\u06cc\u0641\u062a\u200c\u0622\u06af\u0627\u0647", "file_type": "document", "source_file": ".claude/prompt/booking-engine-task-00b-service-mode.md", "source_location": "L287"}, {"id": "prompt_booking_engine_task_00b_service_mode_\u06f5_\u0633\u0631\u0648\u06cc\u0633_\u0648_\u0645\u062f\u062a_\u062f\u0631_\u067e\u0646\u0644_\u06a9\u0627\u0631\u0628\u0631", "label": "\u06f5. \u0633\u0631\u0648\u06cc\u0633 \u0648 \u0645\u062f\u062a \u062f\u0631 \u067e\u0646\u0644 \u06a9\u0627\u0631\u0628\u0631", "file_type": "document", "source_file": ".claude/prompt/booking-engine-task-00b-service-mode.md", "source_location": "L347"}, {"id": "prompt_booking_engine_task_00b_service_mode_\u06f6_\u062c\u0627\u0628\u0647_\u062c\u0627\u06cc\u06cc_\u0633\u0631\u0648\u06cc\u0633_\u0622\u06af\u0627\u0647_\u0627\u0632_\u067e\u0646\u0644", "label": "\u06f6. \u062c\u0627\u0628\u0647\u200c\u062c\u0627\u06cc\u06cc \u0633\u0631\u0648\u06cc\u0633\u200c\u0622\u06af\u0627\u0647 \u0627\u0632 \u067e\u0646\u0644", "file_type": "document", "source_file": ".claude/prompt/booking-engine-task-00b-service-mode.md", "source_location": "L371"}, {"id": "prompt_booking_engine_task_00b_service_mode_\u06f7_\u0628\u0647_\u0631\u0648\u0632\u0631\u0633\u0627\u0646\u06cc_checklist_md_\u062f\u0648_\u0645\u062e\u0632\u0646_\u062c\u062f\u0627", "label": "\u06f7. \u0628\u0647\u200c\u0631\u0648\u0632\u0631\u0633\u0627\u0646\u06cc `checklist.md` \u2014 \u062f\u0648 \u0645\u062e\u0632\u0646 \u062c\u062f\u0627", "file_type": "document", "source_file": ".claude/prompt/booking-engine-task-00b-service-mode.md", "source_location": "L411"}, {"id": "prompt_booking_engine_task_00b_service_mode_\u06f8_\u0645\u0633\u062a\u0646\u062f\u0627\u062a_\u0648_\u06af\u0632\u0627\u0631\u0634_\u067e\u0627\u06cc\u0627\u0646\u06cc", "label": "\u06f8. \u0645\u0633\u062a\u0646\u062f\u0627\u062a \u0648 \u06af\u0632\u0627\u0631\u0634 \u067e\u0627\u06cc\u0627\u0646\u06cc", "file_type": "document", "source_file": ".claude/prompt/booking-engine-task-00b-service-mode.md", "source_location": "L458"}, {"id": "prompt_booking_engine_task_00b_service_mode_\u0646\u06a9\u0627\u062a_\u0645\u0647\u0645", "label": "\u0646\u06a9\u0627\u062a \u0645\u0647\u0645", "file_type": "document", "source_file": ".claude/prompt/booking-engine-task-00b-service-mode.md", "source_location": "L500"}, {"id": "prompt_booking_engine_task_00b_service_mode_\u062e\u0637_\u0633\u0631\u062e_\u0645\u0633\u06cc\u0631_\u0627\u0633\u0644\u0627\u062a\u06cc_\u0633\u0627\u06cc\u062a", "label": "\u26d4 \u062e\u0637 \u0633\u0631\u062e \u2014 \u0645\u0633\u06cc\u0631 \u0627\u0633\u0644\u0627\u062a\u06cc \u0633\u0627\u06cc\u062a", "file_type": "document", "source_file": ".claude/prompt/booking-engine-task-00b-service-mode.md", "source_location": "L502"}, {"id": "prompt_booking_engine_task_00b_service_mode_\u062f\u0627\u0645\u0646\u0647_\u0631\u0627_\u06af\u0633\u062a\u0631\u0634_\u0646\u062f\u0647", "label": "\u062f\u0627\u0645\u0646\u0647 \u0631\u0627 \u06af\u0633\u062a\u0631\u0634 \u0646\u062f\u0647", "file_type": "document", "source_file": ".claude/prompt/booking-engine-task-00b-service-mode.md", "source_location": "L513"}, {"id": "prompt_booking_engine_task_00b_service_mode_\u0642\u0648\u0627\u0639\u062f_\u0633\u0627\u06cc\u062a_\u06a9\u0647_\u0631\u0639\u0627\u06cc\u062a_\u0645\u06cc_\u0634\u0648\u0646\u062f", "label": "\u0642\u0648\u0627\u0639\u062f \u0633\u0627\u06cc\u062a \u06a9\u0647 \u0631\u0639\u0627\u06cc\u062a \u0645\u06cc\u200c\u0634\u0648\u0646\u062f", "file_type": "document", "source_file": ".claude/prompt/booking-engine-task-00b-service-mode.md", "source_location": "L520"}, {"id": "prompt_booking_engine_task_00b_service_mode_\u0648\u0627\u0628\u0633\u062a\u06af\u06cc_\u0633\u062e\u062a_\u0628\u0647_\u062a\u0633\u06a9_\u06f0\u06f0", "label": "\u0648\u0627\u0628\u0633\u062a\u06af\u06cc \u0633\u062e\u062a \u0628\u0647 \u062a\u0633\u06a9 \u06f0\u06f0", "file_type": "document", "source_file": ".claude/prompt/booking-engine-task-00b-service-mode.md", "source_location": "L537"}, {"id": "prompt_booking_engine_task_00b_service_mode_cross_repo_\u0628\u0631\u0631\u0633\u06cc_\u062f\u0633\u062a\u06cc_\u0627\u062c\u0628\u0627\u0631\u06cc", "label": "cross-repo \u2014 \u0628\u0631\u0631\u0633\u06cc \u062f\u0633\u062a\u06cc \u0627\u062c\u0628\u0627\u0631\u06cc", "file_type": "document", "source_file": ".claude/prompt/booking-engine-task-00b-service-mode.md", "source_location": "L551"}, {"id": "prompt_booking_engine_task_00b_service_mode_\u062a\u0633\u062a_\u062e\u0648\u062f\u06a9\u0627\u0631_\u0645\u062d\u062f\u0648\u062f_\u0627\u0633\u062a", "label": "\u062a\u0633\u062a \u062e\u0648\u062f\u06a9\u0627\u0631 \u0645\u062d\u062f\u0648\u062f \u0627\u0633\u062a", "file_type": "document", "source_file": ".claude/prompt/booking-engine-task-00b-service-mode.md", "source_location": "L558"}], "edges": [{"source": "users_hamed_pj_my_pj_clinic_pro_nobat724_front_claude_prompt_booking_engine_task_00b_service_mode_md", "target": "prompt_booking_engine_task_00b_service_mode_\u062a\u0633\u06a9_\u06f0\u06f0\u0628_\u0633\u0627\u0632\u06af\u0627\u0631\u0633\u0627\u0632\u06cc_\u0633\u0627\u06cc\u062a_\u0639\u0645\u0648\u0645\u06cc_\u0628\u0627_\u0646\u0648\u0628\u062a_\u062f\u0647\u06cc_\u0633\u0631\u0648\u06cc\u0633\u06cc", "relation": "contains", "confidence": "EXTRACTED", "source_file": ".claude/prompt/booking-engine-task-00b-service-mode.md", "source_location": "L1", "weight": 1.0}, {"source": "prompt_booking_engine_task_00b_service_mode_\u062a\u0633\u06a9_\u06f0\u06f0\u0628_\u0633\u0627\u0632\u06af\u0627\u0631\u0633\u0627\u0632\u06cc_\u0633\u0627\u06cc\u062a_\u0639\u0645\u0648\u0645\u06cc_\u0628\u0627_\u0646\u0648\u0628\u062a_\u062f\u0647\u06cc_\u0633\u0631\u0648\u06cc\u0633\u06cc", "target": "prompt_booking_engine_task_00b_service_mode_\u067e\u0631\u0648\u0698\u0647", "relation": "contains", "confidence": "EXTRACTED", "source_file": ".claude/prompt/booking-engine-task-00b-service-mode.md", "source_location": "L3", "weight": 1.0}, {"source": "prompt_booking_engine_task_00b_service_mode_\u062a\u0633\u06a9_\u06f0\u06f0\u0628_\u0633\u0627\u0632\u06af\u0627\u0631\u0633\u0627\u0632\u06cc_\u0633\u0627\u06cc\u062a_\u0639\u0645\u0648\u0645\u06cc_\u0628\u0627_\u0646\u0648\u0628\u062a_\u062f\u0647\u06cc_\u0633\u0631\u0648\u06cc\u0633\u06cc", "target": "prompt_booking_engine_task_00b_service_mode_\u0632\u0645\u06cc\u0646\u0647", "relation": "contains", "confidence": "EXTRACTED", "source_file": ".claude/prompt/booking-engine-task-00b-service-mode.md", "source_location": "L29", "weight": 1.0}, {"source": "prompt_booking_engine_task_00b_service_mode_\u062a\u0633\u06a9_\u06f0\u06f0\u0628_\u0633\u0627\u0632\u06af\u0627\u0631\u0633\u0627\u0632\u06cc_\u0633\u0627\u06cc\u062a_\u0639\u0645\u0648\u0645\u06cc_\u0628\u0627_\u0646\u0648\u0628\u062a_\u062f\u0647\u06cc_\u0633\u0631\u0648\u06cc\u0633\u06cc", "target": "prompt_booking_engine_task_00b_service_mode_\u0645\u0634\u06a9\u0644_\u0647\u062f\u0641", "relation": "contains", "confidence": "EXTRACTED", "source_file": ".claude/prompt/booking-engine-task-00b-service-mode.md", "source_location": "L43", "weight": 1.0}, {"source": "prompt_booking_engine_task_00b_service_mode_\u062a\u0633\u06a9_\u06f0\u06f0\u0628_\u0633\u0627\u0632\u06af\u0627\u0631\u0633\u0627\u0632\u06cc_\u0633\u0627\u06cc\u062a_\u0639\u0645\u0648\u0645\u06cc_\u0628\u0627_\u0646\u0648\u0628\u062a_\u062f\u0647\u06cc_\u0633\u0631\u0648\u06cc\u0633\u06cc", "target": "prompt_booking_engine_task_00b_service_mode_\u0645\u0639\u06cc\u0627\u0631_\u067e\u0630\u06cc\u0631\u0634", "relation": "contains", "confidence": "EXTRACTED", "source_file": ".claude/prompt/booking-engine-task-00b-service-mode.md", "source_location": "L60", "weight": 1.0}, {"source": "prompt_booking_engine_task_00b_service_mode_\u062a\u0633\u06a9_\u06f0\u06f0\u0628_\u0633\u0627\u0632\u06af\u0627\u0631\u0633\u0627\u0632\u06cc_\u0633\u0627\u06cc\u062a_\u0639\u0645\u0648\u0645\u06cc_\u0628\u0627_\u0646\u0648\u0628\u062a_\u062f\u0647\u06cc_\u0633\u0631\u0648\u06cc\u0633\u06cc", "target": "prompt_booking_engine_task_00b_service_mode_\u0641\u0627\u06cc\u0644_\u0647\u0627\u06cc_\u0645\u0631\u062a\u0628\u0637", "relation": "contains", "confidence": "EXTRACTED", "source_file": ".claude/prompt/booking-engine-task-00b-service-mode.md", "source_location": "L90", "weight": 1.0}, {"source": "prompt_booking_engine_task_00b_service_mode_\u062a\u0633\u06a9_\u06f0\u06f0\u0628_\u0633\u0627\u0632\u06af\u0627\u0631\u0633\u0627\u0632\u06cc_\u0633\u0627\u06cc\u062a_\u0639\u0645\u0648\u0645\u06cc_\u0628\u0627_\u0646\u0648\u0628\u062a_\u062f\u0647\u06cc_\u0633\u0631\u0648\u06cc\u0633\u06cc", "target": "prompt_booking_engine_task_00b_service_mode_\u0648\u0636\u0639\u06cc\u062a_\u0641\u0639\u0644\u06cc", "relation": "contains", "confidence": "EXTRACTED", "source_file": ".claude/prompt/booking-engine-task-00b-service-mode.md", "source_location": "L109", "weight": 1.0}, {"source": "prompt_booking_engine_task_00b_service_mode_\u0648\u0636\u0639\u06cc\u062a_\u0641\u0639\u0644\u06cc", "target": "prompt_booking_engine_task_00b_service_mode_\u06f1_\u0631\u0646\u06af_\u0647\u0627\u06cc_hard_code_components_appointment_service_index_js", "relation": "contains", "confidence": "EXTRACTED", "source_file": ".claude/prompt/booking-engine-task-00b-service-mode.md", "source_location": "L111", "weight": 1.0}, {"source": "prompt_booking_engine_task_00b_service_mode_\u0648\u0636\u0639\u06cc\u062a_\u0641\u0639\u0644\u06cc", "target": "prompt_booking_engine_task_00b_service_mode_\u06f2_\u0645\u062d\u0627\u0633\u0628\u0647_\u0645\u0648\u0627\u0632\u06cc_\u0645\u062f\u062a_\u0647\u0645\u0627\u0646_\u0641\u0627\u06cc\u0644", "relation": "contains", "confidence": "EXTRACTED", "source_file": ".claude/prompt/booking-engine-task-00b-service-mode.md", "source_location": "L133", "weight": 1.0}, {"source": "prompt_booking_engine_task_00b_service_mode_\u0648\u0636\u0639\u06cc\u062a_\u0641\u0639\u0644\u06cc", "target": "prompt_booking_engine_task_00b_service_mode_\u06f3_adaptserviceslots_lib_appointmentslots_js", "relation": "contains", "confidence": "EXTRACTED", "source_file": ".claude/prompt/booking-engine-task-00b-service-mode.md", "source_location": "L144", "weight": 1.0}, {"source": "prompt_booking_engine_task_00b_service_mode_\u0648\u0636\u0639\u06cc\u062a_\u0641\u0639\u0644\u06cc", "target": "prompt_booking_engine_task_00b_service_mode_\u06f4_\u0648_\u06f5_\u067e\u0646\u0644_\u06a9\u0627\u0631\u0628\u0631", "relation": "contains", "confidence": "EXTRACTED", "source_file": ".claude/prompt/booking-engine-task-00b-service-mode.md", "source_location": "L177", "weight": 1.0}, {"source": "prompt_booking_engine_task_00b_service_mode_\u0648\u0636\u0639\u06cc\u062a_\u0641\u0639\u0644\u06cc", "target": "prompt_booking_engine_task_00b_service_mode_\u062a\u0634\u062e\u06cc\u0635_\u062d\u0627\u0644\u062a_components_appointment_index_js_125_\u062f\u0631\u0633\u062a_\u062f\u0633\u062a_\u0646\u062e\u0648\u0631\u062f\u0647_\u0628\u0645\u0627\u0646\u062f", "relation": "contains", "confidence": "EXTRACTED", "source_file": ".claude/prompt/booking-engine-task-00b-service-mode.md", "source_location": "L183", "weight": 1.0}, {"source": "prompt_booking_engine_task_00b_service_mode_\u062a\u0633\u06a9_\u06f0\u06f0\u0628_\u0633\u0627\u0632\u06af\u0627\u0631\u0633\u0627\u0632\u06cc_\u0633\u0627\u06cc\u062a_\u0639\u0645\u0648\u0645\u06cc_\u0628\u0627_\u0646\u0648\u0628\u062a_\u062f\u0647\u06cc_\u0633\u0631\u0648\u06cc\u0633\u06cc", "target": "prompt_booking_engine_task_00b_service_mode_\u0648\u0638\u0627\u06cc\u0641", "relation": "contains", "confidence": "EXTRACTED", "source_file": ".claude/prompt/booking-engine-task-00b-service-mode.md", "source_location": "L196", "weight": 1.0}, {"source": "prompt_booking_engine_task_00b_service_mode_\u0648\u0638\u0627\u06cc\u0641", "target": "prompt_booking_engine_task_00b_service_mode_\u06f1_\u067e\u06cc\u0634_\u0628\u0631\u0631\u0633\u06cc_\u0642\u0631\u0627\u0631\u062f\u0627\u062f_api_\u067e\u06cc\u0634_\u0627\u0632_\u0647\u0631_\u062e\u0637_\u06a9\u062f", "relation": "contains", "confidence": "EXTRACTED", "source_file": ".claude/prompt/booking-engine-task-00b-service-mode.md", "source_location": "L201", "weight": 1.0}, {"source": "prompt_booking_engine_task_00b_service_mode_\u0648\u0638\u0627\u06cc\u0641", "target": "prompt_booking_engine_task_00b_service_mode_\u06f2_\u0628\u0627\u0632\u0646\u0648\u06cc\u0633\u06cc_service_index_js_\u0628\u0627_\u062a\u0648\u06a9\u0646_\u062a\u0645", "relation": "contains", "confidence": "EXTRACTED", "source_file": ".claude/prompt/booking-engine-task-00b-service-mode.md", "source_location": "L226", "weight": 1.0}, {"source": "prompt_booking_engine_task_00b_service_mode_\u0648\u0638\u0627\u06cc\u0641", "target": "prompt_booking_engine_task_00b_service_mode_\u06f3_\u062d\u0630\u0641_\u0645\u062d\u0627\u0633\u0628\u0647_\u0645\u0648\u0627\u0632\u06cc_\u0645\u062f\u062a", "relation": "contains", "confidence": "EXTRACTED", "source_file": ".claude/prompt/booking-engine-task-00b-service-mode.md", "source_location": "L256", "weight": 1.0}, {"source": "prompt_booking_engine_task_00b_service_mode_\u0648\u0638\u0627\u06cc\u0641", "target": "prompt_booking_engine_task_00b_service_mode_\u06f4_adaptserviceslots_\u0634\u06cc\u0641\u062a_\u0622\u06af\u0627\u0647", "relation": "contains", "confidence": "EXTRACTED", "source_file": ".claude/prompt/booking-engine-task-00b-service-mode.md", "source_location": "L287", "weight": 1.0}, {"source": "prompt_booking_engine_task_00b_service_mode_\u0648\u0638\u0627\u06cc\u0641", "target": "prompt_booking_engine_task_00b_service_mode_\u06f5_\u0633\u0631\u0648\u06cc\u0633_\u0648_\u0645\u062f\u062a_\u062f\u0631_\u067e\u0646\u0644_\u06a9\u0627\u0631\u0628\u0631", "relation": "contains", "confidence": "EXTRACTED", "source_file": ".claude/prompt/booking-engine-task-00b-service-mode.md", "source_location": "L347", "weight": 1.0}, {"source": "prompt_booking_engine_task_00b_service_mode_\u0648\u0638\u0627\u06cc\u0641", "target": "prompt_booking_engine_task_00b_service_mode_\u06f6_\u062c\u0627\u0628\u0647_\u062c\u0627\u06cc\u06cc_\u0633\u0631\u0648\u06cc\u0633_\u0622\u06af\u0627\u0647_\u0627\u0632_\u067e\u0646\u0644", "relation": "contains", "confidence": "EXTRACTED", "source_file": ".claude/prompt/booking-engine-task-00b-service-mode.md", "source_location": "L371", "weight": 1.0}, {"source": "prompt_booking_engine_task_00b_service_mode_\u0648\u0638\u0627\u06cc\u0641", "target": "prompt_booking_engine_task_00b_service_mode_\u06f7_\u0628\u0647_\u0631\u0648\u0632\u0631\u0633\u0627\u0646\u06cc_checklist_md_\u062f\u0648_\u0645\u062e\u0632\u0646_\u062c\u062f\u0627", "relation": "contains", "confidence": "EXTRACTED", "source_file": ".claude/prompt/booking-engine-task-00b-service-mode.md", "source_location": "L411", "weight": 1.0}, {"source": "prompt_booking_engine_task_00b_service_mode_\u0648\u0638\u0627\u06cc\u0641", "target": "prompt_booking_engine_task_00b_service_mode_\u06f8_\u0645\u0633\u062a\u0646\u062f\u0627\u062a_\u0648_\u06af\u0632\u0627\u0631\u0634_\u067e\u0627\u06cc\u0627\u0646\u06cc", "relation": "contains", "confidence": "EXTRACTED", "source_file": ".claude/prompt/booking-engine-task-00b-service-mode.md", "source_location": "L458", "weight": 1.0}, {"source": "prompt_booking_engine_task_00b_service_mode_\u062a\u0633\u06a9_\u06f0\u06f0\u0628_\u0633\u0627\u0632\u06af\u0627\u0631\u0633\u0627\u0632\u06cc_\u0633\u0627\u06cc\u062a_\u0639\u0645\u0648\u0645\u06cc_\u0628\u0627_\u0646\u0648\u0628\u062a_\u062f\u0647\u06cc_\u0633\u0631\u0648\u06cc\u0633\u06cc", "target": "prompt_booking_engine_task_00b_service_mode_\u0646\u06a9\u0627\u062a_\u0645\u0647\u0645", "relation": "contains", "confidence": "EXTRACTED", "source_file": ".claude/prompt/booking-engine-task-00b-service-mode.md", "source_location": "L500", "weight": 1.0}, {"source": "prompt_booking_engine_task_00b_service_mode_\u0646\u06a9\u0627\u062a_\u0645\u0647\u0645", "target": "prompt_booking_engine_task_00b_service_mode_\u062e\u0637_\u0633\u0631\u062e_\u0645\u0633\u06cc\u0631_\u0627\u0633\u0644\u0627\u062a\u06cc_\u0633\u0627\u06cc\u062a", "relation": "contains", "confidence": "EXTRACTED", "source_file": ".claude/prompt/booking-engine-task-00b-service-mode.md", "source_location": "L502", "weight": 1.0}, {"source": "prompt_booking_engine_task_00b_service_mode_\u0646\u06a9\u0627\u062a_\u0645\u0647\u0645", "target": "prompt_booking_engine_task_00b_service_mode_\u062f\u0627\u0645\u0646\u0647_\u0631\u0627_\u06af\u0633\u062a\u0631\u0634_\u0646\u062f\u0647", "relation": "contains", "confidence": "EXTRACTED", "source_file": ".claude/prompt/booking-engine-task-00b-service-mode.md", "source_location": "L513", "weight": 1.0}, {"source": "prompt_booking_engine_task_00b_service_mode_\u0646\u06a9\u0627\u062a_\u0645\u0647\u0645", "target": "prompt_booking_engine_task_00b_service_mode_\u0642\u0648\u0627\u0639\u062f_\u0633\u0627\u06cc\u062a_\u06a9\u0647_\u0631\u0639\u0627\u06cc\u062a_\u0645\u06cc_\u0634\u0648\u0646\u062f", "relation": "contains", "confidence": "EXTRACTED", "source_file": ".claude/prompt/booking-engine-task-00b-service-mode.md", "source_location": "L520", "weight": 1.0}, {"source": "prompt_booking_engine_task_00b_service_mode_\u0646\u06a9\u0627\u062a_\u0645\u0647\u0645", "target": "prompt_booking_engine_task_00b_service_mode_\u0648\u0627\u0628\u0633\u062a\u06af\u06cc_\u0633\u062e\u062a_\u0628\u0647_\u062a\u0633\u06a9_\u06f0\u06f0", "relation": "contains", "confidence": "EXTRACTED", "source_file": ".claude/prompt/booking-engine-task-00b-service-mode.md", "source_location": "L537", "weight": 1.0}, {"source": "prompt_booking_engine_task_00b_service_mode_\u0646\u06a9\u0627\u062a_\u0645\u0647\u0645", "target": "prompt_booking_engine_task_00b_service_mode_cross_repo_\u0628\u0631\u0631\u0633\u06cc_\u062f\u0633\u062a\u06cc_\u0627\u062c\u0628\u0627\u0631\u06cc", "relation": "contains", "confidence": "EXTRACTED", "source_file": ".claude/prompt/booking-engine-task-00b-service-mode.md", "source_location": "L551", "weight": 1.0}, {"source": "prompt_booking_engine_task_00b_service_mode_\u0646\u06a9\u0627\u062a_\u0645\u0647\u0645", "target": "prompt_booking_engine_task_00b_service_mode_\u062a\u0633\u062a_\u062e\u0648\u062f\u06a9\u0627\u0631_\u0645\u062d\u062f\u0648\u062f_\u0627\u0633\u062a", "relation": "contains", "confidence": "EXTRACTED", "source_file": ".claude/prompt/booking-engine-task-00b-service-mode.md", "source_location": "L558", "weight": 1.0}], "input_tokens": 0, "output_tokens": 0} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.8.44/971ea738fd4afba12d4dc73c5791958baf674c845e26104d4e5d9f1e92ce9367.json b/graphify-out/cache/ast/v0.8.44/971ea738fd4afba12d4dc73c5791958baf674c845e26104d4e5d9f1e92ce9367.json new file mode 100644 index 0000000..1a315ef --- /dev/null +++ b/graphify-out/cache/ast/v0.8.44/971ea738fd4afba12d4dc73c5791958baf674c845e26104d4e5d9f1e92ce9367.json @@ -0,0 +1 @@ +{"nodes": [{"id": "users_hamed_pj_my_pj_clinic_pro_nobat724_front_claude_prompt_blog_category_breadcrumb_and_filter_md", "label": "blog-category-breadcrumb-and-filter.md", "file_type": "document", "source_file": ".claude/prompt/blog-category-breadcrumb-and-filter.md", "source_location": "L1"}, {"id": "prompt_blog_category_breadcrumb_and_filter_\u0635\u0641\u062d\u0647_\u0628\u0644\u0627\u06af_\u0628\u0631\u062f\u06a9\u0631\u0627\u0645\u0628_\u062f\u0633\u062a\u0647_\u0628\u0646\u062f\u06cc_\u0641\u06cc\u0644\u062a\u0631_\u062f\u0633\u062a\u0647_\u0628\u0646\u062f\u06cc_\u0648_\u0627\u0635\u0644\u0627\u062d_\u0633\u062a\u0648\u0646_\u0645\u0637\u0627\u0644\u0628_\u0645\u0631\u062a\u0628\u0637", "label": "\u0635\u0641\u062d\u0647\u0654 \u0628\u0644\u0627\u06af: \u0628\u0631\u062f\u06a9\u0631\u0627\u0645\u0628 \u062f\u0633\u062a\u0647\u200c\u0628\u0646\u062f\u06cc\u060c \u0641\u06cc\u0644\u062a\u0631 \u062f\u0633\u062a\u0647\u200c\u0628\u0646\u062f\u06cc\u060c \u0648 \u0627\u0635\u0644\u0627\u062d \u0633\u062a\u0648\u0646 \u00ab\u0645\u0637\u0627\u0644\u0628 \u0645\u0631\u062a\u0628\u0637\u00bb", "file_type": "document", "source_file": ".claude/prompt/blog-category-breadcrumb-and-filter.md", "source_location": "L1"}, {"id": "prompt_blog_category_breadcrumb_and_filter_\u067e\u0631\u0648\u0698\u0647", "label": "\u067e\u0631\u0648\u0698\u0647", "file_type": "document", "source_file": ".claude/prompt/blog-category-breadcrumb-and-filter.md", "source_location": "L3"}, {"id": "prompt_blog_category_breadcrumb_and_filter_\u0632\u0645\u06cc\u0646\u0647", "label": "\u0632\u0645\u06cc\u0646\u0647", "file_type": "document", "source_file": ".claude/prompt/blog-category-breadcrumb-and-filter.md", "source_location": "L12"}, {"id": "prompt_blog_category_breadcrumb_and_filter_\u0645\u0634\u06a9\u0644_\u0647\u062f\u0641", "label": "\u0645\u0634\u06a9\u0644 / \u0647\u062f\u0641", "file_type": "document", "source_file": ".claude/prompt/blog-category-breadcrumb-and-filter.md", "source_location": "L19"}, {"id": "prompt_blog_category_breadcrumb_and_filter_\u06f1_\u0628\u0631\u062f\u06a9\u0631\u0627\u0645\u0628_\u062f\u0633\u062a\u0647_\u0628\u0646\u062f\u06cc_\u0644\u06cc\u0646\u06a9_\u0646\u062f\u0627\u0631\u062f", "label": "\u06f1) \u0628\u0631\u062f\u06a9\u0631\u0627\u0645\u0628 \u062f\u0633\u062a\u0647\u200c\u0628\u0646\u062f\u06cc \u0644\u06cc\u0646\u06a9 \u0646\u062f\u0627\u0631\u062f", "file_type": "document", "source_file": ".claude/prompt/blog-category-breadcrumb-and-filter.md", "source_location": "L21"}, {"id": "prompt_blog_category_breadcrumb_and_filter_\u06f2_\u0641\u06cc\u0644\u062a\u0631_\u062f\u0633\u062a\u0647_\u0628\u0646\u062f\u06cc_\u062f\u0631_blogs_\u06a9\u0627\u0631_\u0646\u0645\u06cc_\u06a9\u0646\u062f", "label": "\u06f2) \u0641\u06cc\u0644\u062a\u0631 \u062f\u0633\u062a\u0647\u200c\u0628\u0646\u062f\u06cc \u062f\u0631 `/blogs` \u06a9\u0627\u0631 \u0646\u0645\u06cc\u200c\u06a9\u0646\u062f", "file_type": "document", "source_file": ".claude/prompt/blog-category-breadcrumb-and-filter.md", "source_location": "L33"}, {"id": "prompt_blog_category_breadcrumb_and_filter_\u06f3_\u0633\u062a\u0648\u0646_\u0645\u0637\u0627\u0644\u0628_\u0645\u0631\u062a\u0628\u0637_\u0628\u0632\u0631\u06af_\u0627\u0633\u062a_\u0648_\u0645\u0631\u062a\u0628\u0637_\u0646\u06cc\u0633\u062a", "label": "\u06f3) \u0633\u062a\u0648\u0646 \u00ab\u0645\u0637\u0627\u0644\u0628 \u0645\u0631\u062a\u0628\u0637\u00bb \u0628\u0632\u0631\u06af \u0627\u0633\u062a \u2014 \u0648 \u0645\u0631\u062a\u0628\u0637 \u0646\u06cc\u0633\u062a", "file_type": "document", "source_file": ".claude/prompt/blog-category-breadcrumb-and-filter.md", "source_location": "L46"}, {"id": "prompt_blog_category_breadcrumb_and_filter_\u06f4_\u0633\u0644\u0633\u0644\u0647_\u0645\u0631\u0627\u062a\u0628_heading_\u0634\u06a9\u0633\u062a\u0647_\u0627\u0633\u062a_\u0641\u0648\u0646\u062a_\u0648", "label": "\u06f4) \u0633\u0644\u0633\u0644\u0647\u200c\u0645\u0631\u0627\u062a\u0628 heading \u0634\u06a9\u0633\u062a\u0647 \u0627\u0633\u062a (\u00ab\u0641\u0648\u0646\u062a \u0648 ...\u00bb)", "file_type": "document", "source_file": ".claude/prompt/blog-category-breadcrumb-and-filter.md", "source_location": "L54"}, {"id": "prompt_blog_category_breadcrumb_and_filter_\u0645\u0639\u06cc\u0627\u0631_\u067e\u0630\u06cc\u0631\u0634", "label": "\u0645\u0639\u06cc\u0627\u0631 \u067e\u0630\u06cc\u0631\u0634", "file_type": "document", "source_file": ".claude/prompt/blog-category-breadcrumb-and-filter.md", "source_location": "L63"}, {"id": "prompt_blog_category_breadcrumb_and_filter_\u0641\u0627\u06cc\u0644_\u0647\u0627\u06cc_\u0645\u0631\u062a\u0628\u0637", "label": "\u0641\u0627\u06cc\u0644\u200c\u0647\u0627\u06cc \u0645\u0631\u062a\u0628\u0637", "file_type": "document", "source_file": ".claude/prompt/blog-category-breadcrumb-and-filter.md", "source_location": "L92"}, {"id": "prompt_blog_category_breadcrumb_and_filter_\u0648\u0636\u0639\u06cc\u062a_\u0641\u0639\u0644\u06cc", "label": "\u0648\u0636\u0639\u06cc\u062a \u0641\u0639\u0644\u06cc", "file_type": "document", "source_file": ".claude/prompt/blog-category-breadcrumb-and-filter.md", "source_location": "L109"}, {"id": "prompt_blog_category_breadcrumb_and_filter_\u0648\u0638\u0627\u06cc\u0641", "label": "\u0648\u0638\u0627\u06cc\u0641", "file_type": "document", "source_file": ".claude/prompt/blog-category-breadcrumb-and-filter.md", "source_location": "L254"}, {"id": "prompt_blog_category_breadcrumb_and_filter_\u06f1_\u0627\u0641\u0632\u0648\u062f\u0646_getblogtagfacets_\u0628\u0647_services_response_js", "label": "\u06f1. \u0627\u0641\u0632\u0648\u062f\u0646 `getBlogTagFacets` \u0628\u0647 `services/response.js`", "file_type": "document", "source_file": ".claude/prompt/blog-category-breadcrumb-and-filter.md", "source_location": "L256"}, {"id": "prompt_blog_category_breadcrumb_and_filter_\u06f2_\u062a\u06af_\u0627\u0646\u062a\u062e\u0627\u0628\u06cc_\u0631\u0627_\u0628\u0647_url_\u0645\u0646\u062a\u0642\u0644_\u06a9\u0646_tag", "label": "\u06f2. \u062a\u06af \u0627\u0646\u062a\u062e\u0627\u0628\u06cc \u0631\u0627 \u0628\u0647 URL \u0645\u0646\u062a\u0642\u0644 \u06a9\u0646 (`?tag=`)", "file_type": "document", "source_file": ".claude/prompt/blog-category-breadcrumb-and-filter.md", "source_location": "L282"}, {"id": "prompt_blog_category_breadcrumb_and_filter_\u06f3_\u0686\u06cc\u067e_\u0647\u0627_\u0627\u0632_endpoint_facet_\u0648_\u0641\u0639\u0627\u0644_\u0628\u0648\u062f\u0646_\u0628\u0631_\u0627\u0633\u0627\u0633_\u0646\u0627\u0645_\u0646\u0647_\u0627\u06cc\u0646\u062f\u06a9\u0633", "label": "\u06f3. \u0686\u06cc\u067e\u200c\u0647\u0627 \u0627\u0632 endpoint facet\u060c \u0648 \u0641\u0639\u0627\u0644\u200c\u0628\u0648\u062f\u0646 \u0628\u0631 \u0627\u0633\u0627\u0633 \u0646\u0627\u0645 \u0646\u0647 \u0627\u06cc\u0646\u062f\u06a9\u0633", "file_type": "document", "source_file": ".claude/prompt/blog-category-breadcrumb-and-filter.md", "source_location": "L355"}, {"id": "prompt_blog_category_breadcrumb_and_filter_\u06f4_\u0628\u0631\u062f\u06a9\u0631\u0627\u0645\u0628_\u0635\u0641\u062d\u0647_\u0645\u0642\u0627\u0644\u0647_\u062f\u0633\u062a\u0647_\u0631\u0627_\u0644\u06cc\u0646\u06a9_\u06a9\u0646_html_json_ld", "label": "\u06f4. \u0628\u0631\u062f\u06a9\u0631\u0627\u0645\u0628 \u0635\u0641\u062d\u0647\u0654 \u0645\u0642\u0627\u0644\u0647: \u062f\u0633\u062a\u0647 \u0631\u0627 \u0644\u06cc\u0646\u06a9 \u06a9\u0646 (HTML + JSON-LD)", "file_type": "document", "source_file": ".claude/prompt/blog-category-breadcrumb-and-filter.md", "source_location": "L433"}, {"id": "prompt_blog_category_breadcrumb_and_filter_\u06f5_\u0645\u0637\u0627\u0644\u0628_\u0645\u0631\u062a\u0628\u0637_\u0647\u0645_\u062f\u0633\u062a\u0647_\u06a9\u0631\u062f\u0646_\u0645\u0647\u0627\u0631_\u0639\u0631\u0636_\u0648_\u0627\u0631\u062a\u0641\u0627\u0639", "label": "\u06f5. \u00ab\u0645\u0637\u0627\u0644\u0628 \u0645\u0631\u062a\u0628\u0637\u00bb: \u0647\u0645\u200c\u062f\u0633\u062a\u0647 \u06a9\u0631\u062f\u0646 + \u0645\u0647\u0627\u0631 \u0639\u0631\u0636 \u0648 \u0627\u0631\u062a\u0641\u0627\u0639", "file_type": "document", "source_file": ".claude/prompt/blog-category-breadcrumb-and-filter.md", "source_location": "L503"}, {"id": "prompt_blog_category_breadcrumb_and_filter_\u06f6_\u0627\u0635\u0644\u0627\u062d_\u0633\u0644\u0633\u0644\u0647_\u0645\u0631\u0627\u062a\u0628_heading", "label": "\u06f6. \u0627\u0635\u0644\u0627\u062d \u0633\u0644\u0633\u0644\u0647\u200c\u0645\u0631\u0627\u062a\u0628 heading", "file_type": "document", "source_file": ".claude/prompt/blog-category-breadcrumb-and-filter.md", "source_location": "L550"}, {"id": "prompt_blog_category_breadcrumb_and_filter_\u0646\u06a9\u0627\u062a_\u0645\u0647\u0645", "label": "\u0646\u06a9\u0627\u062a \u0645\u0647\u0645", "file_type": "document", "source_file": ".claude/prompt/blog-category-breadcrumb-and-filter.md", "source_location": "L567"}], "edges": [{"source": "users_hamed_pj_my_pj_clinic_pro_nobat724_front_claude_prompt_blog_category_breadcrumb_and_filter_md", "target": "prompt_blog_category_breadcrumb_and_filter_\u0635\u0641\u062d\u0647_\u0628\u0644\u0627\u06af_\u0628\u0631\u062f\u06a9\u0631\u0627\u0645\u0628_\u062f\u0633\u062a\u0647_\u0628\u0646\u062f\u06cc_\u0641\u06cc\u0644\u062a\u0631_\u062f\u0633\u062a\u0647_\u0628\u0646\u062f\u06cc_\u0648_\u0627\u0635\u0644\u0627\u062d_\u0633\u062a\u0648\u0646_\u0645\u0637\u0627\u0644\u0628_\u0645\u0631\u062a\u0628\u0637", "relation": "contains", "confidence": "EXTRACTED", "source_file": ".claude/prompt/blog-category-breadcrumb-and-filter.md", "source_location": "L1", "weight": 1.0}, {"source": "prompt_blog_category_breadcrumb_and_filter_\u0635\u0641\u062d\u0647_\u0628\u0644\u0627\u06af_\u0628\u0631\u062f\u06a9\u0631\u0627\u0645\u0628_\u062f\u0633\u062a\u0647_\u0628\u0646\u062f\u06cc_\u0641\u06cc\u0644\u062a\u0631_\u062f\u0633\u062a\u0647_\u0628\u0646\u062f\u06cc_\u0648_\u0627\u0635\u0644\u0627\u062d_\u0633\u062a\u0648\u0646_\u0645\u0637\u0627\u0644\u0628_\u0645\u0631\u062a\u0628\u0637", "target": "prompt_blog_category_breadcrumb_and_filter_\u067e\u0631\u0648\u0698\u0647", "relation": "contains", "confidence": "EXTRACTED", "source_file": ".claude/prompt/blog-category-breadcrumb-and-filter.md", "source_location": "L3", "weight": 1.0}, {"source": "prompt_blog_category_breadcrumb_and_filter_\u0635\u0641\u062d\u0647_\u0628\u0644\u0627\u06af_\u0628\u0631\u062f\u06a9\u0631\u0627\u0645\u0628_\u062f\u0633\u062a\u0647_\u0628\u0646\u062f\u06cc_\u0641\u06cc\u0644\u062a\u0631_\u062f\u0633\u062a\u0647_\u0628\u0646\u062f\u06cc_\u0648_\u0627\u0635\u0644\u0627\u062d_\u0633\u062a\u0648\u0646_\u0645\u0637\u0627\u0644\u0628_\u0645\u0631\u062a\u0628\u0637", "target": "prompt_blog_category_breadcrumb_and_filter_\u0632\u0645\u06cc\u0646\u0647", "relation": "contains", "confidence": "EXTRACTED", "source_file": ".claude/prompt/blog-category-breadcrumb-and-filter.md", "source_location": "L12", "weight": 1.0}, {"source": "prompt_blog_category_breadcrumb_and_filter_\u0635\u0641\u062d\u0647_\u0628\u0644\u0627\u06af_\u0628\u0631\u062f\u06a9\u0631\u0627\u0645\u0628_\u062f\u0633\u062a\u0647_\u0628\u0646\u062f\u06cc_\u0641\u06cc\u0644\u062a\u0631_\u062f\u0633\u062a\u0647_\u0628\u0646\u062f\u06cc_\u0648_\u0627\u0635\u0644\u0627\u062d_\u0633\u062a\u0648\u0646_\u0645\u0637\u0627\u0644\u0628_\u0645\u0631\u062a\u0628\u0637", "target": "prompt_blog_category_breadcrumb_and_filter_\u0645\u0634\u06a9\u0644_\u0647\u062f\u0641", "relation": "contains", "confidence": "EXTRACTED", "source_file": ".claude/prompt/blog-category-breadcrumb-and-filter.md", "source_location": "L19", "weight": 1.0}, {"source": "prompt_blog_category_breadcrumb_and_filter_\u0645\u0634\u06a9\u0644_\u0647\u062f\u0641", "target": "prompt_blog_category_breadcrumb_and_filter_\u06f1_\u0628\u0631\u062f\u06a9\u0631\u0627\u0645\u0628_\u062f\u0633\u062a\u0647_\u0628\u0646\u062f\u06cc_\u0644\u06cc\u0646\u06a9_\u0646\u062f\u0627\u0631\u062f", "relation": "contains", "confidence": "EXTRACTED", "source_file": ".claude/prompt/blog-category-breadcrumb-and-filter.md", "source_location": "L21", "weight": 1.0}, {"source": "prompt_blog_category_breadcrumb_and_filter_\u0645\u0634\u06a9\u0644_\u0647\u062f\u0641", "target": "prompt_blog_category_breadcrumb_and_filter_\u06f2_\u0641\u06cc\u0644\u062a\u0631_\u062f\u0633\u062a\u0647_\u0628\u0646\u062f\u06cc_\u062f\u0631_blogs_\u06a9\u0627\u0631_\u0646\u0645\u06cc_\u06a9\u0646\u062f", "relation": "contains", "confidence": "EXTRACTED", "source_file": ".claude/prompt/blog-category-breadcrumb-and-filter.md", "source_location": "L33", "weight": 1.0}, {"source": "prompt_blog_category_breadcrumb_and_filter_\u0645\u0634\u06a9\u0644_\u0647\u062f\u0641", "target": "prompt_blog_category_breadcrumb_and_filter_\u06f3_\u0633\u062a\u0648\u0646_\u0645\u0637\u0627\u0644\u0628_\u0645\u0631\u062a\u0628\u0637_\u0628\u0632\u0631\u06af_\u0627\u0633\u062a_\u0648_\u0645\u0631\u062a\u0628\u0637_\u0646\u06cc\u0633\u062a", "relation": "contains", "confidence": "EXTRACTED", "source_file": ".claude/prompt/blog-category-breadcrumb-and-filter.md", "source_location": "L46", "weight": 1.0}, {"source": "prompt_blog_category_breadcrumb_and_filter_\u0645\u0634\u06a9\u0644_\u0647\u062f\u0641", "target": "prompt_blog_category_breadcrumb_and_filter_\u06f4_\u0633\u0644\u0633\u0644\u0647_\u0645\u0631\u0627\u062a\u0628_heading_\u0634\u06a9\u0633\u062a\u0647_\u0627\u0633\u062a_\u0641\u0648\u0646\u062a_\u0648", "relation": "contains", "confidence": "EXTRACTED", "source_file": ".claude/prompt/blog-category-breadcrumb-and-filter.md", "source_location": "L54", "weight": 1.0}, {"source": "prompt_blog_category_breadcrumb_and_filter_\u0635\u0641\u062d\u0647_\u0628\u0644\u0627\u06af_\u0628\u0631\u062f\u06a9\u0631\u0627\u0645\u0628_\u062f\u0633\u062a\u0647_\u0628\u0646\u062f\u06cc_\u0641\u06cc\u0644\u062a\u0631_\u062f\u0633\u062a\u0647_\u0628\u0646\u062f\u06cc_\u0648_\u0627\u0635\u0644\u0627\u062d_\u0633\u062a\u0648\u0646_\u0645\u0637\u0627\u0644\u0628_\u0645\u0631\u062a\u0628\u0637", "target": "prompt_blog_category_breadcrumb_and_filter_\u0645\u0639\u06cc\u0627\u0631_\u067e\u0630\u06cc\u0631\u0634", "relation": "contains", "confidence": "EXTRACTED", "source_file": ".claude/prompt/blog-category-breadcrumb-and-filter.md", "source_location": "L63", "weight": 1.0}, {"source": "prompt_blog_category_breadcrumb_and_filter_\u0635\u0641\u062d\u0647_\u0628\u0644\u0627\u06af_\u0628\u0631\u062f\u06a9\u0631\u0627\u0645\u0628_\u062f\u0633\u062a\u0647_\u0628\u0646\u062f\u06cc_\u0641\u06cc\u0644\u062a\u0631_\u062f\u0633\u062a\u0647_\u0628\u0646\u062f\u06cc_\u0648_\u0627\u0635\u0644\u0627\u062d_\u0633\u062a\u0648\u0646_\u0645\u0637\u0627\u0644\u0628_\u0645\u0631\u062a\u0628\u0637", "target": "prompt_blog_category_breadcrumb_and_filter_\u0641\u0627\u06cc\u0644_\u0647\u0627\u06cc_\u0645\u0631\u062a\u0628\u0637", "relation": "contains", "confidence": "EXTRACTED", "source_file": ".claude/prompt/blog-category-breadcrumb-and-filter.md", "source_location": "L92", "weight": 1.0}, {"source": "prompt_blog_category_breadcrumb_and_filter_\u0635\u0641\u062d\u0647_\u0628\u0644\u0627\u06af_\u0628\u0631\u062f\u06a9\u0631\u0627\u0645\u0628_\u062f\u0633\u062a\u0647_\u0628\u0646\u062f\u06cc_\u0641\u06cc\u0644\u062a\u0631_\u062f\u0633\u062a\u0647_\u0628\u0646\u062f\u06cc_\u0648_\u0627\u0635\u0644\u0627\u062d_\u0633\u062a\u0648\u0646_\u0645\u0637\u0627\u0644\u0628_\u0645\u0631\u062a\u0628\u0637", "target": "prompt_blog_category_breadcrumb_and_filter_\u0648\u0636\u0639\u06cc\u062a_\u0641\u0639\u0644\u06cc", "relation": "contains", "confidence": "EXTRACTED", "source_file": ".claude/prompt/blog-category-breadcrumb-and-filter.md", "source_location": "L109", "weight": 1.0}, {"source": "prompt_blog_category_breadcrumb_and_filter_\u0635\u0641\u062d\u0647_\u0628\u0644\u0627\u06af_\u0628\u0631\u062f\u06a9\u0631\u0627\u0645\u0628_\u062f\u0633\u062a\u0647_\u0628\u0646\u062f\u06cc_\u0641\u06cc\u0644\u062a\u0631_\u062f\u0633\u062a\u0647_\u0628\u0646\u062f\u06cc_\u0648_\u0627\u0635\u0644\u0627\u062d_\u0633\u062a\u0648\u0646_\u0645\u0637\u0627\u0644\u0628_\u0645\u0631\u062a\u0628\u0637", "target": "prompt_blog_category_breadcrumb_and_filter_\u0648\u0638\u0627\u06cc\u0641", "relation": "contains", "confidence": "EXTRACTED", "source_file": ".claude/prompt/blog-category-breadcrumb-and-filter.md", "source_location": "L254", "weight": 1.0}, {"source": "prompt_blog_category_breadcrumb_and_filter_\u0648\u0638\u0627\u06cc\u0641", "target": "prompt_blog_category_breadcrumb_and_filter_\u06f1_\u0627\u0641\u0632\u0648\u062f\u0646_getblogtagfacets_\u0628\u0647_services_response_js", "relation": "contains", "confidence": "EXTRACTED", "source_file": ".claude/prompt/blog-category-breadcrumb-and-filter.md", "source_location": "L256", "weight": 1.0}, {"source": "prompt_blog_category_breadcrumb_and_filter_\u0648\u0638\u0627\u06cc\u0641", "target": "prompt_blog_category_breadcrumb_and_filter_\u06f2_\u062a\u06af_\u0627\u0646\u062a\u062e\u0627\u0628\u06cc_\u0631\u0627_\u0628\u0647_url_\u0645\u0646\u062a\u0642\u0644_\u06a9\u0646_tag", "relation": "contains", "confidence": "EXTRACTED", "source_file": ".claude/prompt/blog-category-breadcrumb-and-filter.md", "source_location": "L282", "weight": 1.0}, {"source": "prompt_blog_category_breadcrumb_and_filter_\u0648\u0638\u0627\u06cc\u0641", "target": "prompt_blog_category_breadcrumb_and_filter_\u06f3_\u0686\u06cc\u067e_\u0647\u0627_\u0627\u0632_endpoint_facet_\u0648_\u0641\u0639\u0627\u0644_\u0628\u0648\u062f\u0646_\u0628\u0631_\u0627\u0633\u0627\u0633_\u0646\u0627\u0645_\u0646\u0647_\u0627\u06cc\u0646\u062f\u06a9\u0633", "relation": "contains", "confidence": "EXTRACTED", "source_file": ".claude/prompt/blog-category-breadcrumb-and-filter.md", "source_location": "L355", "weight": 1.0}, {"source": "prompt_blog_category_breadcrumb_and_filter_\u0648\u0638\u0627\u06cc\u0641", "target": "prompt_blog_category_breadcrumb_and_filter_\u06f4_\u0628\u0631\u062f\u06a9\u0631\u0627\u0645\u0628_\u0635\u0641\u062d\u0647_\u0645\u0642\u0627\u0644\u0647_\u062f\u0633\u062a\u0647_\u0631\u0627_\u0644\u06cc\u0646\u06a9_\u06a9\u0646_html_json_ld", "relation": "contains", "confidence": "EXTRACTED", "source_file": ".claude/prompt/blog-category-breadcrumb-and-filter.md", "source_location": "L433", "weight": 1.0}, {"source": "prompt_blog_category_breadcrumb_and_filter_\u0648\u0638\u0627\u06cc\u0641", "target": "prompt_blog_category_breadcrumb_and_filter_\u06f5_\u0645\u0637\u0627\u0644\u0628_\u0645\u0631\u062a\u0628\u0637_\u0647\u0645_\u062f\u0633\u062a\u0647_\u06a9\u0631\u062f\u0646_\u0645\u0647\u0627\u0631_\u0639\u0631\u0636_\u0648_\u0627\u0631\u062a\u0641\u0627\u0639", "relation": "contains", "confidence": "EXTRACTED", "source_file": ".claude/prompt/blog-category-breadcrumb-and-filter.md", "source_location": "L503", "weight": 1.0}, {"source": "prompt_blog_category_breadcrumb_and_filter_\u0648\u0638\u0627\u06cc\u0641", "target": "prompt_blog_category_breadcrumb_and_filter_\u06f6_\u0627\u0635\u0644\u0627\u062d_\u0633\u0644\u0633\u0644\u0647_\u0645\u0631\u0627\u062a\u0628_heading", "relation": "contains", "confidence": "EXTRACTED", "source_file": ".claude/prompt/blog-category-breadcrumb-and-filter.md", "source_location": "L550", "weight": 1.0}, {"source": "prompt_blog_category_breadcrumb_and_filter_\u0635\u0641\u062d\u0647_\u0628\u0644\u0627\u06af_\u0628\u0631\u062f\u06a9\u0631\u0627\u0645\u0628_\u062f\u0633\u062a\u0647_\u0628\u0646\u062f\u06cc_\u0641\u06cc\u0644\u062a\u0631_\u062f\u0633\u062a\u0647_\u0628\u0646\u062f\u06cc_\u0648_\u0627\u0635\u0644\u0627\u062d_\u0633\u062a\u0648\u0646_\u0645\u0637\u0627\u0644\u0628_\u0645\u0631\u062a\u0628\u0637", "target": "prompt_blog_category_breadcrumb_and_filter_\u0646\u06a9\u0627\u062a_\u0645\u0647\u0645", "relation": "contains", "confidence": "EXTRACTED", "source_file": ".claude/prompt/blog-category-breadcrumb-and-filter.md", "source_location": "L567", "weight": 1.0}], "input_tokens": 0, "output_tokens": 0} \ No newline at end of file diff --git a/graphify-out/cache/stat-index.json b/graphify-out/cache/stat-index.json index e109411..57c15b5 100644 --- a/graphify-out/cache/stat-index.json +++ b/graphify-out/cache/stat-index.json @@ -1 +1 @@ -{"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/data/city.json":{"size":51821,"mtime_ns":1783788126997422221,"hash":"4ccb53c29097dc660266a9128272555d17e37bf3de0d8fa6f8b1fd29e94000e6"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/data/doctor_services.json":{"size":46716,"mtime_ns":1783776875723218482,"hash":"69c0d8624eabb28ee1926dd11d83d02a01adf8913f80dede1ad843c21ebc0258"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/data/education.json":{"size":360,"mtime_ns":1783776875723480985,"hash":"440ac7ee3fcce903f6aca0296103712fc17a1e9e86611527e9999c591573a2a2"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/data/progress_detail.json":{"size":519,"mtime_ns":1783776875723711612,"hash":"80fa177614a400037aa8b30941d025013544ef3ee864a7696d732cdac1cc6c3c"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/data/specialties.json":{"size":19004,"mtime_ns":1784823576296524910,"hash":"aa3d1793dcf59b52b3911879d3088885fd6de0704e726fcbf8799374b9c4430c"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/data/state.json":{"size":4364,"mtime_ns":1783776875724286784,"hash":"87ca9a51f21c57083962121c571035a00e774a1a34cf519b0325450f882d04fd"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/jsconfig.json":{"size":72,"mtime_ns":1760953552262982824,"hash":"3c07efb26e59f46bcab477c7b4d1d68958c43ec0cceda5cb735726790af4fe76"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/liara.json":{"size":391,"mtime_ns":1783776875757055002,"hash":"10033b140aad3ee501bd9a5653eb0a1d43fe53aee55877becfca5a5d1b8a14b5"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/package.json":{"size":2330,"mtime_ns":1783788127116684520,"hash":"a9b406df43fab884b03ba208fabbe9166337b0052ace920fa14510ac5c8077a0"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/.claude/prompt/adapt-backend-audit-api.md":{"size":9483,"mtime_ns":1783776875660474487,"hash":"e19cc538d048d969601b941242dd729de7f7dea14a403bbe2ff5e134647aa10d"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/.claude/prompt/appointment-calendar-disabled-dates.md":{"size":9763,"mtime_ns":1781597583936646960,"hash":"e628c04749776a9b8042e5528f915660859a7cdfb6dc12d903cb1b2a73cb24ba"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/.claude/prompt/appointment-detail-fields-fix.md":{"size":4099,"mtime_ns":1783776875660704614,"hash":"2ab9c060be8be2d461b1ffd2995851906d66e25c229735a3219f85e1f8195839"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/.claude/prompt/appointment-required-account-fields.md":{"size":7280,"mtime_ns":1781597583936937752,"hash":"556a7ecaeb0c4bde3e6b682a03fea79fdaf7827c9d62ebb5c9b1cd58c427dc13"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/.claude/prompt/birthday-picker-year-month-day.md":{"size":7704,"mtime_ns":1781597583937172919,"hash":"a588d0d0150fcd8aaef3a41ebdad0404b8fa2c61855d157285aeb9dda04ef3ab"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/.claude/prompt/booking-lock-patient-flow.md":{"size":9588,"mtime_ns":1781597583937571794,"hash":"d78e22adc6d096b775cdcdc129b12347c337cff71afcb2b708c2cbca82486252"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/.claude/prompt/booking-send-representation.md":{"size":5088,"mtime_ns":1783776875661030075,"hash":"be8fa462416ccec3ff0f7e60b9d042def7fc27e7f8c03c577630fbb118e77482"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/.claude/prompt/city-seo-optimization.md":{"size":12088,"mtime_ns":1783776875661529914,"hash":"a0029107f5ad368d237cbf3b7ef28c7b7906794b6fb0da4a00180c0d5789d2d6"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/.claude/prompt/clinic-seo-schema-knowledge-panel.md":{"size":9490,"mtime_ns":1783776875661760957,"hash":"eb138f4534fc1433698377ae9673b1e22b8627dd564124c895efaf3bd58b64fe"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/.claude/prompt/connect-panel-dashboard-to-api.md":{"size":13193,"mtime_ns":1781597583937858961,"hash":"17a0579ff0b02c7d73fbdaaabdf26ae1dc668a0e6ab1fe3ff70a8222630b548f"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/.claude/prompt/currency-toman-display-front.md":{"size":6340,"mtime_ns":1783776875662086127,"hash":"d260ca8d266e49ee94910a03c027d8c2b83461c0a40ca046ba1b6fac591f614f"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/.claude/prompt/dashboard-tabs-real-data.md":{"size":10762,"mtime_ns":1781597583938112795,"hash":"e6cd614d25692aeefc353b2db4362ea2a269d2fe652151f227b6b855d33f5be3"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/.claude/prompt/doctor-poster-redesign.md":{"size":13362,"mtime_ns":1783776875662596923,"hash":"8113bbc0cb9b92135d3a293d761ff889a5f78b9d05d7273c7f8b0736c229c68f"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/.claude/prompt/doctor-seo-schema-knowledge-panel.md":{"size":16103,"mtime_ns":1783776875662939343,"hash":"a1e7d5a4da148b5b13b8800f09d1417ff7a54d20c847b2738624b9d3e72659fc"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/.claude/prompt/fix-appointment-booking-flow.md":{"size":19846,"mtime_ns":1781597583938358921,"hash":"f023a2e60de677580f5eb6ca22c299f10ee2c557be036cb5adcfa8917ef7d6fa"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/.claude/prompt/fix-appointment-payment-flow.md":{"size":12476,"mtime_ns":1781597583938747463,"hash":"18b75a0aa94343da7fe5d77403f73b9e704527a92f8da7db04c627303413ef82"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/.claude/prompt/fix-dashboard-uuid-and-lists.md":{"size":8449,"mtime_ns":1781597583938977130,"hash":"c9171ffaaad4600e4012c4dc7e8d747b8946ba451dfa315605e8ff4928694535"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/.claude/prompt/fix-doctor-free-turn-disabled.md":{"size":7505,"mtime_ns":1783776875663096386,"hash":"01769376a658f7bf4c1c2ad9349b00581d485f9b199f48871b79333430847f0e"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/.claude/prompt/fix-doctor-poster-download-image.md":{"size":8557,"mtime_ns":1783776875663271346,"hash":"11395172e2e3d905b4873294ed9df03919796e3c27396fcfc3816fccf38d456c"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/.claude/prompt/fix-doctors-filter-performance.md":{"size":7565,"mtime_ns":1783776875663481223,"hash":"a2bff95d8ec72493e859cb174fca8469022ee7669f193d889e6e3d2b59bd97b3"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/.claude/prompt/fix-header-logged-state.md":{"size":7287,"mtime_ns":1781597583939167297,"hash":"9fa28b5810446e5d2cf89ccf2f58a9976c4e9ce3975df5a3b32f3c3eb50a0dce"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/.claude/prompt/fix-login-bugs.md":{"size":5993,"mtime_ns":1783776875663674933,"hash":"94add08ebe87780fbd4fccf08ed11be2cb45d55828a81f6cc9bc39c79902c040"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/.claude/prompt/fix-login-session-userinfo.md":{"size":8739,"mtime_ns":1781597583939455089,"hash":"22044e56711732a73f5130b6d38607cd52df0e22fc19c6bd5778544486df932e"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/.claude/prompt/fix-my-appointments-status-filter.md":{"size":6079,"mtime_ns":1781597583939678131,"hash":"cf4be2acf9ffc36974a6f6999cf2cc5259b73be544a3e0bcaf0f589f34943c4d"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/.claude/prompt/fix-payment-gateway-flow.md":{"size":11147,"mtime_ns":1783776875663884643,"hash":"c6e6c55b51cabc086cfb88e97ae4977b2f8587822a38232102bea1d45b94f0ab"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/.claude/prompt/fix-token-storage-xss-headers.md":{"size":11238,"mtime_ns":1783776875664315231,"hash":"88ae04aa6c4de588a6b7fab59d6fc9426d7b1b43c75a1e1e4103fdcf0edfc6df"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/.claude/prompt/liara-deploy.md":{"size":9137,"mtime_ns":1783776875664715776,"hash":"40d115b3bc3a43851f8e317427e23bd857de37f77bb5b2080077c69e774d1a53"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/.claude/prompt/nobat724-root-domain-not-city.md":{"size":8911,"mtime_ns":1783776875664907070,"hash":"7abb24fe0c3e3ea6125318b160cba6c41c57be779a3a96dccc77be825cb2d713"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/.claude/prompt/nobat724-test-suite.md":{"size":19981,"mtime_ns":1783776875665112780,"hash":"76e8926e91c5544fd793ecba45b8b4db9bff5f11593d3ed64a5a8f308ee745e9"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/.claude/prompt/otp-sms-site-name.md":{"size":4341,"mtime_ns":1783776875665298782,"hash":"c4c736e8535fae943d10e3bfc9aa45b546be27aef879ddc7b919caa7790ff2c5"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/.claude/prompt/payment-flow-frontend.md":{"size":6753,"mtime_ns":1783776875665473700,"hash":"6913de88e303725560499adef7c1ce2583e257eef0b083758cb67eab05d46151"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/.claude/prompt/payment-single-flow-frontend.md":{"size":6327,"mtime_ns":1783776875665678285,"hash":"4bf6587d44aa63a0b48c7a22fe7d01cf30be8d2a5385fc3205e3ba4155437411"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/.claude/prompt/profile-birthday-send-direction-fix.md":{"size":3365,"mtime_ns":1781597583939863923,"hash":"66a55129ea309cca03cc872462fd47053c309c64720784e79f21b4efb5ae4ec0"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/.claude/prompt/rating-rich-ui-wiring.md":{"size":9378,"mtime_ns":1781597583940215798,"hash":"add909cd22a22c9352f1cd3a6b4bb2ad6672e7784198164f8dbfda25d2f0f93a"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/.claude/prompt/seo-performance-rendering-audit.md":{"size":15903,"mtime_ns":1783776875666016205,"hash":"10bcf71f9a660ad56f97bb92cb033794f8e65858f761c286191277095231e09a"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/.claude/prompt/specialties-doctor-count-wire.md":{"size":5538,"mtime_ns":1783776875666237915,"hash":"5d9ed62a164217933720bd64bef89e07413a7e82fe92171cf9508b24e0e5d838"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/.claude/prompt/technical-seo-audit-multidomain.md":{"size":19291,"mtime_ns":1783776875666438167,"hash":"d070d13a6d70943eb3b5332a9909bcdc1eff6826610b93156c767087628cb143"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/.claude/prompt/upgrade-next-16.md":{"size":13380,"mtime_ns":1783776875666845004,"hash":"e0f930abf1bac512900eb97733708e398c52df8a5a088d3cd11212546f210eb9"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/.claude/prompt/user-profile-no-404.md":{"size":6562,"mtime_ns":1781597583940472507,"hash":"a5e69f183ea4fdd29b651385b5350ecc1d7c52097b7a4228e7d1be03b98f7c61"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/.claude/prompt/verify-past-slots-disabled.md":{"size":5350,"mtime_ns":1781597583940678257,"hash":"bfc8ebe5dcd533c93c86935a95afbcd9456f3828d6801dc02a4231a52b6b06b9"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/CLAUDE.md":{"size":5513,"mtime_ns":1783776875667984098,"hash":"847a296771bd1672e5a798d5f0451ca074cd45536c02d88cd8c08b3857cc7b27"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/README.md":{"size":23904,"mtime_ns":1783776875668464977,"hash":"c71ff73b6ff7b535887b1f016ed07f863d3ebd283571b91baacccb9fb53f685d"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/.claude/prompt/fix-sitemap-build-fetch-failed.md":{"size":6887,"mtime_ns":1783776875664107229,"hash":"f500d64d164ae77195e7aecbb1ff75b8cec4e1bfceb971ffac3cc46666071630"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/.claude/prompt/city-json-seo-fields.md":{"size":8340,"mtime_ns":1783776875661276994,"hash":"bad09a70d9f8b419ea377acb5fabb95cee6de33307381fc161c99a402018cd59"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/.claude/prompt/global-rep-domain-site.md":{"size":8662,"mtime_ns":1783776875664512733,"hash":"487a2843c238490c773599dc61eb97293f25564481d3dbe6a22462ca7efe3f63"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/.claude/prompt/booking-locations-multi-context.md":{"size":17898,"mtime_ns":1784454676457514423,"hash":"5a640ae2f1045306c492c485b4870b3927fdfa9e841976f650826f8032d31bdf"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/.claude/prompt/doctor-map-claim-modal.md":{"size":8821,"mtime_ns":1783788127105024439,"hash":"e864a07e0303d924362356db9860383bcd5588e9326bc93273371149db286d56"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/.claude/prompt/login-redirect-back.md":{"size":6413,"mtime_ns":1783837957083247998,"hash":"2b374ceb02255315bdf1a363ba1bab456bf1b102f0e0b1889d24eddd686624d1"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/.claude/prompt/seo-critical-fixes-live-audit.md":{"size":40824,"mtime_ns":1784454676458207475,"hash":"4caa7522d92b10a06680a0abe622223f9fb7b4af4382e2a71361e89201d7cd2b"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/.claude/prompt/service-based-online-booking.md":{"size":8939,"mtime_ns":1784143132168577163,"hash":"bd949c885fa616a01383bb98432064e2a42b7453b2fff35fa1406425032becb2"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/.claude/prompt/unclaimed-doctor-public-page.md":{"size":9413,"mtime_ns":1783837109414597500,"hash":"827cc28f12b105562ef4733c1d52971d0e65ac9838e237a638b58b594ba56b0e"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/.claude/prompt/booking-locations-day-aware.md":{"size":10016,"mtime_ns":1784454676457096375,"hash":"2a18730afbf1731b3c93f72eab503ce656889c01f917f2c20f8ac30520de823e"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/.claude/prompt/doctor-profile-booking-state-from-locations.md":{"size":7632,"mtime_ns":1784454676457926512,"hash":"2c2f8817db9d73ec4d45a4b1189b7d9079f4e60eb9f3b607363cba0953430a37"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/.claude/prompt/blog-city-scoping-activate.md":{"size":7272,"mtime_ns":1784454676456663869,"hash":"a05878af813c4f0d7c636ea45d333484d6d44d2ba90beb6a8d38484c29e52ff4"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/.claude/prompt/seo-post-deploy-verification.md":{"size":9114,"mtime_ns":1784454676458400978,"hash":"f0179a58015f443c6aa2cb7a0ca9aa2564cc5f1558f0dddc83606cec51d6aa29"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/.claude/prompt/sitemap-simplify-with-city.md":{"size":7163,"mtime_ns":1784454676458609814,"hash":"14f09b327a892ae0eebdc73eca14679a31d16444b1d5fc7cbb45ce51ce76e4ed"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/.claude/prompt/clinic-contact-info-fix.md":{"size":11493,"mtime_ns":1784465348935298033,"hash":"73987deb26f7baca287527e70fa4533bf57b6cb565f6c79081929245d9e0ec90"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/.claude/prompt/maintenance-mode-client.md":{"size":10230,"mtime_ns":1784484136388959661,"hash":"8bb92466fd996c9ad547772f0534fa16f1954340bcddcb37ac4cc25a59571edd"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/.claude/prompt/nobat724-search-fix-and-seo.md":{"size":13375,"mtime_ns":1784530043061453939,"hash":"e0072b8f3c2ced85ba41f54a0ba8f4611498f095e63bdf539e77ec8ccbd0b9a3"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/.claude/prompt/blog-frontend-sync-and-default-cover.md":{"size":22874,"mtime_ns":1785163532165600426,"hash":"b1953911ff99e318e31213cd2153059deb7caab087c961f65071879ef8064b65"}} \ No newline at end of file +{"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/data/city.json":{"size":51821,"mtime_ns":1783788126997422221,"hash":"4ccb53c29097dc660266a9128272555d17e37bf3de0d8fa6f8b1fd29e94000e6"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/data/doctor_services.json":{"size":46716,"mtime_ns":1783776875723218482,"hash":"69c0d8624eabb28ee1926dd11d83d02a01adf8913f80dede1ad843c21ebc0258"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/data/education.json":{"size":360,"mtime_ns":1783776875723480985,"hash":"440ac7ee3fcce903f6aca0296103712fc17a1e9e86611527e9999c591573a2a2"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/data/progress_detail.json":{"size":519,"mtime_ns":1783776875723711612,"hash":"80fa177614a400037aa8b30941d025013544ef3ee864a7696d732cdac1cc6c3c"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/data/specialties.json":{"size":19004,"mtime_ns":1784823576296524910,"hash":"aa3d1793dcf59b52b3911879d3088885fd6de0704e726fcbf8799374b9c4430c"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/data/state.json":{"size":4364,"mtime_ns":1783776875724286784,"hash":"87ca9a51f21c57083962121c571035a00e774a1a34cf519b0325450f882d04fd"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/jsconfig.json":{"size":72,"mtime_ns":1760953552262982824,"hash":"3c07efb26e59f46bcab477c7b4d1d68958c43ec0cceda5cb735726790af4fe76"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/liara.json":{"size":391,"mtime_ns":1783776875757055002,"hash":"10033b140aad3ee501bd9a5653eb0a1d43fe53aee55877becfca5a5d1b8a14b5"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/package.json":{"size":2330,"mtime_ns":1783788127116684520,"hash":"a9b406df43fab884b03ba208fabbe9166337b0052ace920fa14510ac5c8077a0"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/.claude/prompt/adapt-backend-audit-api.md":{"size":9483,"mtime_ns":1783776875660474487,"hash":"e19cc538d048d969601b941242dd729de7f7dea14a403bbe2ff5e134647aa10d"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/.claude/prompt/appointment-calendar-disabled-dates.md":{"size":9763,"mtime_ns":1781597583936646960,"hash":"e628c04749776a9b8042e5528f915660859a7cdfb6dc12d903cb1b2a73cb24ba"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/.claude/prompt/appointment-detail-fields-fix.md":{"size":4099,"mtime_ns":1783776875660704614,"hash":"2ab9c060be8be2d461b1ffd2995851906d66e25c229735a3219f85e1f8195839"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/.claude/prompt/appointment-required-account-fields.md":{"size":7280,"mtime_ns":1781597583936937752,"hash":"556a7ecaeb0c4bde3e6b682a03fea79fdaf7827c9d62ebb5c9b1cd58c427dc13"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/.claude/prompt/birthday-picker-year-month-day.md":{"size":7704,"mtime_ns":1781597583937172919,"hash":"a588d0d0150fcd8aaef3a41ebdad0404b8fa2c61855d157285aeb9dda04ef3ab"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/.claude/prompt/booking-lock-patient-flow.md":{"size":9588,"mtime_ns":1781597583937571794,"hash":"d78e22adc6d096b775cdcdc129b12347c337cff71afcb2b708c2cbca82486252"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/.claude/prompt/booking-send-representation.md":{"size":5088,"mtime_ns":1783776875661030075,"hash":"be8fa462416ccec3ff0f7e60b9d042def7fc27e7f8c03c577630fbb118e77482"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/.claude/prompt/city-seo-optimization.md":{"size":12088,"mtime_ns":1783776875661529914,"hash":"a0029107f5ad368d237cbf3b7ef28c7b7906794b6fb0da4a00180c0d5789d2d6"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/.claude/prompt/clinic-seo-schema-knowledge-panel.md":{"size":9490,"mtime_ns":1783776875661760957,"hash":"eb138f4534fc1433698377ae9673b1e22b8627dd564124c895efaf3bd58b64fe"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/.claude/prompt/connect-panel-dashboard-to-api.md":{"size":13193,"mtime_ns":1781597583937858961,"hash":"17a0579ff0b02c7d73fbdaaabdf26ae1dc668a0e6ab1fe3ff70a8222630b548f"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/.claude/prompt/currency-toman-display-front.md":{"size":6340,"mtime_ns":1783776875662086127,"hash":"d260ca8d266e49ee94910a03c027d8c2b83461c0a40ca046ba1b6fac591f614f"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/.claude/prompt/dashboard-tabs-real-data.md":{"size":10762,"mtime_ns":1781597583938112795,"hash":"e6cd614d25692aeefc353b2db4362ea2a269d2fe652151f227b6b855d33f5be3"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/.claude/prompt/doctor-poster-redesign.md":{"size":13362,"mtime_ns":1783776875662596923,"hash":"8113bbc0cb9b92135d3a293d761ff889a5f78b9d05d7273c7f8b0736c229c68f"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/.claude/prompt/doctor-seo-schema-knowledge-panel.md":{"size":16103,"mtime_ns":1783776875662939343,"hash":"a1e7d5a4da148b5b13b8800f09d1417ff7a54d20c847b2738624b9d3e72659fc"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/.claude/prompt/fix-appointment-booking-flow.md":{"size":19846,"mtime_ns":1781597583938358921,"hash":"f023a2e60de677580f5eb6ca22c299f10ee2c557be036cb5adcfa8917ef7d6fa"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/.claude/prompt/fix-appointment-payment-flow.md":{"size":12476,"mtime_ns":1781597583938747463,"hash":"18b75a0aa94343da7fe5d77403f73b9e704527a92f8da7db04c627303413ef82"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/.claude/prompt/fix-dashboard-uuid-and-lists.md":{"size":8449,"mtime_ns":1781597583938977130,"hash":"c9171ffaaad4600e4012c4dc7e8d747b8946ba451dfa315605e8ff4928694535"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/.claude/prompt/fix-doctor-free-turn-disabled.md":{"size":7505,"mtime_ns":1783776875663096386,"hash":"01769376a658f7bf4c1c2ad9349b00581d485f9b199f48871b79333430847f0e"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/.claude/prompt/fix-doctor-poster-download-image.md":{"size":8557,"mtime_ns":1783776875663271346,"hash":"11395172e2e3d905b4873294ed9df03919796e3c27396fcfc3816fccf38d456c"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/.claude/prompt/fix-doctors-filter-performance.md":{"size":7565,"mtime_ns":1783776875663481223,"hash":"a2bff95d8ec72493e859cb174fca8469022ee7669f193d889e6e3d2b59bd97b3"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/.claude/prompt/fix-header-logged-state.md":{"size":7287,"mtime_ns":1781597583939167297,"hash":"9fa28b5810446e5d2cf89ccf2f58a9976c4e9ce3975df5a3b32f3c3eb50a0dce"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/.claude/prompt/fix-login-bugs.md":{"size":5993,"mtime_ns":1783776875663674933,"hash":"94add08ebe87780fbd4fccf08ed11be2cb45d55828a81f6cc9bc39c79902c040"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/.claude/prompt/fix-login-session-userinfo.md":{"size":8739,"mtime_ns":1781597583939455089,"hash":"22044e56711732a73f5130b6d38607cd52df0e22fc19c6bd5778544486df932e"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/.claude/prompt/fix-my-appointments-status-filter.md":{"size":6079,"mtime_ns":1781597583939678131,"hash":"cf4be2acf9ffc36974a6f6999cf2cc5259b73be544a3e0bcaf0f589f34943c4d"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/.claude/prompt/fix-payment-gateway-flow.md":{"size":11147,"mtime_ns":1783776875663884643,"hash":"c6e6c55b51cabc086cfb88e97ae4977b2f8587822a38232102bea1d45b94f0ab"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/.claude/prompt/fix-token-storage-xss-headers.md":{"size":11238,"mtime_ns":1783776875664315231,"hash":"88ae04aa6c4de588a6b7fab59d6fc9426d7b1b43c75a1e1e4103fdcf0edfc6df"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/.claude/prompt/liara-deploy.md":{"size":9137,"mtime_ns":1783776875664715776,"hash":"40d115b3bc3a43851f8e317427e23bd857de37f77bb5b2080077c69e774d1a53"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/.claude/prompt/nobat724-root-domain-not-city.md":{"size":8911,"mtime_ns":1783776875664907070,"hash":"7abb24fe0c3e3ea6125318b160cba6c41c57be779a3a96dccc77be825cb2d713"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/.claude/prompt/nobat724-test-suite.md":{"size":19981,"mtime_ns":1783776875665112780,"hash":"76e8926e91c5544fd793ecba45b8b4db9bff5f11593d3ed64a5a8f308ee745e9"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/.claude/prompt/otp-sms-site-name.md":{"size":4341,"mtime_ns":1783776875665298782,"hash":"c4c736e8535fae943d10e3bfc9aa45b546be27aef879ddc7b919caa7790ff2c5"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/.claude/prompt/payment-flow-frontend.md":{"size":6753,"mtime_ns":1783776875665473700,"hash":"6913de88e303725560499adef7c1ce2583e257eef0b083758cb67eab05d46151"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/.claude/prompt/payment-single-flow-frontend.md":{"size":6327,"mtime_ns":1783776875665678285,"hash":"4bf6587d44aa63a0b48c7a22fe7d01cf30be8d2a5385fc3205e3ba4155437411"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/.claude/prompt/profile-birthday-send-direction-fix.md":{"size":3365,"mtime_ns":1781597583939863923,"hash":"66a55129ea309cca03cc872462fd47053c309c64720784e79f21b4efb5ae4ec0"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/.claude/prompt/rating-rich-ui-wiring.md":{"size":9378,"mtime_ns":1781597583940215798,"hash":"add909cd22a22c9352f1cd3a6b4bb2ad6672e7784198164f8dbfda25d2f0f93a"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/.claude/prompt/seo-performance-rendering-audit.md":{"size":15903,"mtime_ns":1783776875666016205,"hash":"10bcf71f9a660ad56f97bb92cb033794f8e65858f761c286191277095231e09a"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/.claude/prompt/specialties-doctor-count-wire.md":{"size":5538,"mtime_ns":1783776875666237915,"hash":"5d9ed62a164217933720bd64bef89e07413a7e82fe92171cf9508b24e0e5d838"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/.claude/prompt/technical-seo-audit-multidomain.md":{"size":19291,"mtime_ns":1783776875666438167,"hash":"d070d13a6d70943eb3b5332a9909bcdc1eff6826610b93156c767087628cb143"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/.claude/prompt/upgrade-next-16.md":{"size":13380,"mtime_ns":1783776875666845004,"hash":"e0f930abf1bac512900eb97733708e398c52df8a5a088d3cd11212546f210eb9"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/.claude/prompt/user-profile-no-404.md":{"size":6562,"mtime_ns":1781597583940472507,"hash":"a5e69f183ea4fdd29b651385b5350ecc1d7c52097b7a4228e7d1be03b98f7c61"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/.claude/prompt/verify-past-slots-disabled.md":{"size":5350,"mtime_ns":1781597583940678257,"hash":"bfc8ebe5dcd533c93c86935a95afbcd9456f3828d6801dc02a4231a52b6b06b9"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/CLAUDE.md":{"size":5513,"mtime_ns":1783776875667984098,"hash":"847a296771bd1672e5a798d5f0451ca074cd45536c02d88cd8c08b3857cc7b27"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/README.md":{"size":23904,"mtime_ns":1783776875668464977,"hash":"c71ff73b6ff7b535887b1f016ed07f863d3ebd283571b91baacccb9fb53f685d"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/.claude/prompt/fix-sitemap-build-fetch-failed.md":{"size":6887,"mtime_ns":1783776875664107229,"hash":"f500d64d164ae77195e7aecbb1ff75b8cec4e1bfceb971ffac3cc46666071630"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/.claude/prompt/city-json-seo-fields.md":{"size":8340,"mtime_ns":1783776875661276994,"hash":"bad09a70d9f8b419ea377acb5fabb95cee6de33307381fc161c99a402018cd59"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/.claude/prompt/global-rep-domain-site.md":{"size":8662,"mtime_ns":1783776875664512733,"hash":"487a2843c238490c773599dc61eb97293f25564481d3dbe6a22462ca7efe3f63"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/.claude/prompt/booking-locations-multi-context.md":{"size":17898,"mtime_ns":1784454676457514423,"hash":"5a640ae2f1045306c492c485b4870b3927fdfa9e841976f650826f8032d31bdf"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/.claude/prompt/doctor-map-claim-modal.md":{"size":8821,"mtime_ns":1783788127105024439,"hash":"e864a07e0303d924362356db9860383bcd5588e9326bc93273371149db286d56"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/.claude/prompt/login-redirect-back.md":{"size":6413,"mtime_ns":1783837957083247998,"hash":"2b374ceb02255315bdf1a363ba1bab456bf1b102f0e0b1889d24eddd686624d1"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/.claude/prompt/seo-critical-fixes-live-audit.md":{"size":40824,"mtime_ns":1784454676458207475,"hash":"4caa7522d92b10a06680a0abe622223f9fb7b4af4382e2a71361e89201d7cd2b"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/.claude/prompt/service-based-online-booking.md":{"size":8939,"mtime_ns":1784143132168577163,"hash":"bd949c885fa616a01383bb98432064e2a42b7453b2fff35fa1406425032becb2"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/.claude/prompt/unclaimed-doctor-public-page.md":{"size":9413,"mtime_ns":1783837109414597500,"hash":"827cc28f12b105562ef4733c1d52971d0e65ac9838e237a638b58b594ba56b0e"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/.claude/prompt/booking-locations-day-aware.md":{"size":10016,"mtime_ns":1784454676457096375,"hash":"2a18730afbf1731b3c93f72eab503ce656889c01f917f2c20f8ac30520de823e"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/.claude/prompt/doctor-profile-booking-state-from-locations.md":{"size":7632,"mtime_ns":1784454676457926512,"hash":"2c2f8817db9d73ec4d45a4b1189b7d9079f4e60eb9f3b607363cba0953430a37"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/.claude/prompt/blog-city-scoping-activate.md":{"size":7272,"mtime_ns":1784454676456663869,"hash":"a05878af813c4f0d7c636ea45d333484d6d44d2ba90beb6a8d38484c29e52ff4"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/.claude/prompt/seo-post-deploy-verification.md":{"size":9114,"mtime_ns":1784454676458400978,"hash":"f0179a58015f443c6aa2cb7a0ca9aa2564cc5f1558f0dddc83606cec51d6aa29"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/.claude/prompt/sitemap-simplify-with-city.md":{"size":7163,"mtime_ns":1784454676458609814,"hash":"14f09b327a892ae0eebdc73eca14679a31d16444b1d5fc7cbb45ce51ce76e4ed"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/.claude/prompt/clinic-contact-info-fix.md":{"size":11493,"mtime_ns":1784465348935298033,"hash":"73987deb26f7baca287527e70fa4533bf57b6cb565f6c79081929245d9e0ec90"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/.claude/prompt/maintenance-mode-client.md":{"size":10230,"mtime_ns":1784484136388959661,"hash":"8bb92466fd996c9ad547772f0534fa16f1954340bcddcb37ac4cc25a59571edd"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/.claude/prompt/nobat724-search-fix-and-seo.md":{"size":13375,"mtime_ns":1784530043061453939,"hash":"e0072b8f3c2ced85ba41f54a0ba8f4611498f095e63bdf539e77ec8ccbd0b9a3"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/.claude/prompt/blog-frontend-sync-and-default-cover.md":{"size":22874,"mtime_ns":1785163532165600426,"hash":"b1953911ff99e318e31213cd2153059deb7caab087c961f65071879ef8064b65"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/.claude/prompt/blog-category-breadcrumb-and-filter.md":{"size":30753,"mtime_ns":1785321252487778504,"hash":"971ea738fd4afba12d4dc73c5791958baf674c845e26104d4e5d9f1e92ce9367"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/.claude/prompt/booking-engine-task-00b-service-mode.md":{"size":27295,"mtime_ns":1785401488260027214,"hash":"8886fd414c3128992605fa57a2a61a9597357c51c0690d130678fc09371fba5c"}} \ No newline at end of file diff --git a/graphify-out/graph.html b/graphify-out/graph.html index 89896e7..be467a7 100644 --- a/graphify-out/graph.html +++ b/graphify-out/graph.html @@ -63,12 +63,12 @@
-
2422 nodes · 2500 edges · 407 communities
+
2473 nodes · 2548 edges · 413 communities