- DoctorClaimController: ALTCHA CaptchaGuard on /claim (dev no-op via ALTCHA_ENABLED=false); optional `mobile` field must match the logged-in user's number (422 ERR_CONFLICT_001 on mismatch) - DoctorController::delete: now IS_AUTHENTICATED_FULLY — admin (any) or the owner of a claimed profile (IDOR-guarded); FK appointment guard kept - DoctorDetailPage address map: MapController calls map.invalidateSize() before flyTo (fixes needing to pick a city twice on a freshly-mounted map); geocode retries once (nominatim empty/429 on first hit) - tests: mobile mismatch, owner-delete allowed + others 403, unclaimed not deletable by random user - docs: doctor-claim.md (mobile+captcha), doctor.md (delete permission) Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
1 line
8.2 KiB
JSON
1 line
8.2 KiB
JSON
{"nodes": [{"id": "users_hamed_pj_my_pj_clinic_pro_clinicpro_docs_api_doctor_claim_md", "label": "doctor-claim.md", "file_type": "document", "source_file": "docs/api/doctor-claim.md", "source_location": "L1"}, {"id": "api_doctor_claim_doctor_profile_claim_api_\u062a\u0635\u0627\u062d\u0628_\u067e\u0631\u0648\u0641\u0627\u06cc\u0644_\u067e\u0632\u0634\u06a9_\u0627\u06cc\u0645\u067e\u0648\u0631\u062a_\u0634\u062f\u0647", "label": "Doctor Profile Claim API (\u062a\u0635\u0627\u062d\u0628 \u067e\u0631\u0648\u0641\u0627\u06cc\u0644 \u067e\u0632\u0634\u06a9 \u0627\u06cc\u0645\u067e\u0648\u0631\u062a\u200c\u0634\u062f\u0647)", "file_type": "document", "source_file": "docs/api/doctor-claim.md", "source_location": "L1"}, {"id": "api_doctor_claim_\u0686\u0631\u062e\u0647_\u0648\u0636\u0639\u06cc\u062a", "label": "\u0686\u0631\u062e\u0647\u0654 \u0648\u0636\u0639\u06cc\u062a", "file_type": "document", "source_file": "docs/api/doctor-claim.md", "source_location": "L12"}, {"id": "api_doctor_claim_get_api_v1_doctor_uuid_claim_info", "label": "GET `/api/v1/doctor/{uuid}/claim-info`", "file_type": "document", "source_file": "docs/api/doctor-claim.md", "source_location": "L25"}, {"id": "api_doctor_claim_response_200", "label": "Response `200`", "file_type": "document", "source_file": "docs/api/doctor-claim.md", "source_location": "L29"}, {"id": "api_doctor_claim_post_api_v1_doctor_uuid_claim", "label": "POST `/api/v1/doctor/{uuid}/claim`", "file_type": "document", "source_file": "docs/api/doctor-claim.md", "source_location": "L40"}, {"id": "api_doctor_claim_request", "label": "Request", "file_type": "document", "source_file": "docs/api/doctor-claim.md", "source_location": "L46"}, {"id": "api_doctor_claim_\u0645\u0631\u0627\u062d\u0644_\u0633\u0631\u0648\u0631_\u0627\u062a\u0645\u06cc\u06a9_\u0636\u062f_race", "label": "\u0645\u0631\u0627\u062d\u0644 \u0633\u0631\u0648\u0631 (\u0627\u062a\u0645\u06cc\u06a9/\u0636\u062f race)", "file_type": "document", "source_file": "docs/api/doctor-claim.md", "source_location": "L66"}, {"id": "api_doctor_claim_response_200_78", "label": "Response `200`", "file_type": "document", "source_file": "docs/api/doctor-claim.md", "source_location": "L78"}, {"id": "api_doctor_claim_errors", "label": "Errors", "file_type": "document", "source_file": "docs/api/doctor-claim.md", "source_location": "L90"}, {"id": "api_doctor_claim_post_api_v1_admin_doctors_uuid_transfer", "label": "POST `/api/v1/admin/doctors/{uuid}/transfer`", "file_type": "document", "source_file": "docs/api/doctor-claim.md", "source_location": "L105"}, {"id": "api_doctor_claim_get_api_v1_admin_doctor_claims", "label": "GET `/api/v1/admin/doctor-claims`", "file_type": "document", "source_file": "docs/api/doctor-claim.md", "source_location": "L113"}, {"id": "api_doctor_claim_response_200_paginated", "label": "Response `200` (paginated)", "file_type": "document", "source_file": "docs/api/doctor-claim.md", "source_location": "L122"}, {"id": "api_doctor_claim_env_\u0647\u0627\u06cc_\u0645\u0631\u062a\u0628\u0637", "label": "env \u0647\u0627\u06cc \u0645\u0631\u062a\u0628\u0637", "file_type": "document", "source_file": "docs/api/doctor-claim.md", "source_location": "L146"}, {"id": "api_doctor_claim_\u062a\u0633\u062a_\u0647\u0627", "label": "\u062a\u0633\u062a\u200c\u0647\u0627", "file_type": "document", "source_file": "docs/api/doctor-claim.md", "source_location": "L153"}], "edges": [{"source": "users_hamed_pj_my_pj_clinic_pro_clinicpro_docs_api_doctor_claim_md", "target": "api_doctor_claim_doctor_profile_claim_api_\u062a\u0635\u0627\u062d\u0628_\u067e\u0631\u0648\u0641\u0627\u06cc\u0644_\u067e\u0632\u0634\u06a9_\u0627\u06cc\u0645\u067e\u0648\u0631\u062a_\u0634\u062f\u0647", "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/api/doctor-claim.md", "source_location": "L1", "weight": 1.0}, {"source": "api_doctor_claim_doctor_profile_claim_api_\u062a\u0635\u0627\u062d\u0628_\u067e\u0631\u0648\u0641\u0627\u06cc\u0644_\u067e\u0632\u0634\u06a9_\u0627\u06cc\u0645\u067e\u0648\u0631\u062a_\u0634\u062f\u0647", "target": "api_doctor_claim_\u0686\u0631\u062e\u0647_\u0648\u0636\u0639\u06cc\u062a", "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/api/doctor-claim.md", "source_location": "L12", "weight": 1.0}, {"source": "api_doctor_claim_doctor_profile_claim_api_\u062a\u0635\u0627\u062d\u0628_\u067e\u0631\u0648\u0641\u0627\u06cc\u0644_\u067e\u0632\u0634\u06a9_\u0627\u06cc\u0645\u067e\u0648\u0631\u062a_\u0634\u062f\u0647", "target": "api_doctor_claim_get_api_v1_doctor_uuid_claim_info", "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/api/doctor-claim.md", "source_location": "L25", "weight": 1.0}, {"source": "api_doctor_claim_get_api_v1_doctor_uuid_claim_info", "target": "api_doctor_claim_response_200", "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/api/doctor-claim.md", "source_location": "L29", "weight": 1.0}, {"source": "api_doctor_claim_doctor_profile_claim_api_\u062a\u0635\u0627\u062d\u0628_\u067e\u0631\u0648\u0641\u0627\u06cc\u0644_\u067e\u0632\u0634\u06a9_\u0627\u06cc\u0645\u067e\u0648\u0631\u062a_\u0634\u062f\u0647", "target": "api_doctor_claim_post_api_v1_doctor_uuid_claim", "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/api/doctor-claim.md", "source_location": "L40", "weight": 1.0}, {"source": "api_doctor_claim_post_api_v1_doctor_uuid_claim", "target": "api_doctor_claim_request", "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/api/doctor-claim.md", "source_location": "L46", "weight": 1.0}, {"source": "api_doctor_claim_post_api_v1_doctor_uuid_claim", "target": "api_doctor_claim_\u0645\u0631\u0627\u062d\u0644_\u0633\u0631\u0648\u0631_\u0627\u062a\u0645\u06cc\u06a9_\u0636\u062f_race", "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/api/doctor-claim.md", "source_location": "L66", "weight": 1.0}, {"source": "api_doctor_claim_post_api_v1_doctor_uuid_claim", "target": "api_doctor_claim_response_200_78", "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/api/doctor-claim.md", "source_location": "L78", "weight": 1.0}, {"source": "api_doctor_claim_post_api_v1_doctor_uuid_claim", "target": "api_doctor_claim_errors", "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/api/doctor-claim.md", "source_location": "L90", "weight": 1.0}, {"source": "api_doctor_claim_doctor_profile_claim_api_\u062a\u0635\u0627\u062d\u0628_\u067e\u0631\u0648\u0641\u0627\u06cc\u0644_\u067e\u0632\u0634\u06a9_\u0627\u06cc\u0645\u067e\u0648\u0631\u062a_\u0634\u062f\u0647", "target": "api_doctor_claim_post_api_v1_admin_doctors_uuid_transfer", "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/api/doctor-claim.md", "source_location": "L105", "weight": 1.0}, {"source": "api_doctor_claim_doctor_profile_claim_api_\u062a\u0635\u0627\u062d\u0628_\u067e\u0631\u0648\u0641\u0627\u06cc\u0644_\u067e\u0632\u0634\u06a9_\u0627\u06cc\u0645\u067e\u0648\u0631\u062a_\u0634\u062f\u0647", "target": "api_doctor_claim_get_api_v1_admin_doctor_claims", "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/api/doctor-claim.md", "source_location": "L113", "weight": 1.0}, {"source": "api_doctor_claim_get_api_v1_admin_doctor_claims", "target": "api_doctor_claim_response_200_paginated", "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/api/doctor-claim.md", "source_location": "L122", "weight": 1.0}, {"source": "api_doctor_claim_doctor_profile_claim_api_\u062a\u0635\u0627\u062d\u0628_\u067e\u0631\u0648\u0641\u0627\u06cc\u0644_\u067e\u0632\u0634\u06a9_\u0627\u06cc\u0645\u067e\u0648\u0631\u062a_\u0634\u062f\u0647", "target": "api_doctor_claim_env_\u0647\u0627\u06cc_\u0645\u0631\u062a\u0628\u0637", "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/api/doctor-claim.md", "source_location": "L146", "weight": 1.0}, {"source": "api_doctor_claim_doctor_profile_claim_api_\u062a\u0635\u0627\u062d\u0628_\u067e\u0631\u0648\u0641\u0627\u06cc\u0644_\u067e\u0632\u0634\u06a9_\u0627\u06cc\u0645\u067e\u0648\u0631\u062a_\u0634\u062f\u0647", "target": "api_doctor_claim_\u062a\u0633\u062a_\u0647\u0627", "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/api/doctor-claim.md", "source_location": "L153", "weight": 1.0}], "input_tokens": 0, "output_tokens": 0} |