Files
clinicpro/graphify-out/cache/ast/v0.8.44/aad348887a0347a4d348eb228959ef9e44099e2c4e60959d0dc06d976ebe7e16.json
T
hamed c2c6ae4d02 feat(migrations): add national_code_verified flag to users and normalize bank_account representation
- Added a new column `national_code_verified` to the `users` table.
- Normalized the `bank_account` field in the `representations` table from a single object to an array of IBANs with a default `verified` status of false.

feat(ApiIrService): implement identity verification client for api.ir

- Created `ApiIrService` to handle identity verification via api.ir.
- Implemented methods for matching national code with mobile and IBAN with national code and birth date.
- Added error handling and logging for external API requests.
2026-06-25 19:38:47 +03:30

1 line
12 KiB
JSON

{"nodes": [{"id": "users_hamed_pj_my_pj_clinic_pro_clinicpro_docs_admin_ui_user_flow_md", "label": "user-flow.md", "file_type": "document", "source_file": "docs/admin-ui/user-flow.md", "source_location": "L1"}, {"id": "admin_ui_user_flow_admin_panel_user_flow_react", "label": "Admin Panel \u2014 User Flow (React)", "file_type": "document", "source_file": "docs/admin-ui/user-flow.md", "source_location": "L1"}, {"id": "admin_ui_user_flow_1_authentication", "label": "1. Authentication", "file_type": "document", "source_file": "docs/admin-ui/user-flow.md", "source_location": "L5"}, {"id": "admin_ui_user_flow_2_dashboard_\u0635\u0641\u062d\u0647_\u0627\u0635\u0644\u06cc", "label": "2. Dashboard (\u0635\u0641\u062d\u0647 \u0627\u0635\u0644\u06cc)", "file_type": "document", "source_file": "docs/admin-ui/user-flow.md", "source_location": "L23"}, {"id": "admin_ui_user_flow_3_\u0645\u062f\u06cc\u0631\u06cc\u062a_\u06a9\u0627\u0631\u0628\u0631\u0627\u0646_user_management", "label": "3. \u0645\u062f\u06cc\u0631\u06cc\u062a \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 (User Management)", "file_type": "document", "source_file": "docs/admin-ui/user-flow.md", "source_location": "L50"}, {"id": "admin_ui_user_flow_4_\u0645\u062f\u06cc\u0631\u06cc\u062a_\u067e\u0632\u0634\u06a9\u0627\u0646_doctor_management", "label": "4. \u0645\u062f\u06cc\u0631\u06cc\u062a \u067e\u0632\u0634\u06a9\u0627\u0646 (Doctor Management)", "file_type": "document", "source_file": "docs/admin-ui/user-flow.md", "source_location": "L81"}, {"id": "admin_ui_user_flow_5_\u0645\u062f\u06cc\u0631\u06cc\u062a_\u06a9\u0644\u06cc\u0646\u06cc\u06a9_\u0647\u0627_clinic_management", "label": "5. \u0645\u062f\u06cc\u0631\u06cc\u062a \u06a9\u0644\u06cc\u0646\u06cc\u06a9\u200c\u0647\u0627 (Clinic Management)", "file_type": "document", "source_file": "docs/admin-ui/user-flow.md", "source_location": "L114"}, {"id": "admin_ui_user_flow_6_\u0645\u062f\u06cc\u0631\u06cc\u062a_\u0646\u0648\u0628\u062a_\u0647\u0627_appointment_management", "label": "6. \u0645\u062f\u06cc\u0631\u06cc\u062a \u0646\u0648\u0628\u062a\u200c\u0647\u0627 (Appointment Management)", "file_type": "document", "source_file": "docs/admin-ui/user-flow.md", "source_location": "L139"}, {"id": "admin_ui_user_flow_7_\u0645\u062f\u06cc\u0631\u06cc\u062a_\u067e\u0631\u062f\u0627\u062e\u062a_\u0647\u0627_payment_management", "label": "7. \u0645\u062f\u06cc\u0631\u06cc\u062a \u067e\u0631\u062f\u0627\u062e\u062a\u200c\u0647\u0627 (Payment Management)", "file_type": "document", "source_file": "docs/admin-ui/user-flow.md", "source_location": "L178"}, {"id": "admin_ui_user_flow_8_\u0645\u062f\u06cc\u0631\u06cc\u062a_\u062a\u0633\u0648\u06cc\u0647_\u062d\u0633\u0627\u0628_settlement_management", "label": "8. \u0645\u062f\u06cc\u0631\u06cc\u062a \u062a\u0633\u0648\u06cc\u0647\u200c\u062d\u0633\u0627\u0628 (Settlement Management)", "file_type": "document", "source_file": "docs/admin-ui/user-flow.md", "source_location": "L203"}, {"id": "admin_ui_user_flow_9_\u0645\u062f\u06cc\u0631\u06cc\u062a_\u0646\u0645\u0627\u06cc\u0646\u062f\u06af\u0627\u0646_representation_management", "label": "9. \u0645\u062f\u06cc\u0631\u06cc\u062a \u0646\u0645\u0627\u06cc\u0646\u062f\u06af\u0627\u0646 (Representation Management)", "file_type": "document", "source_file": "docs/admin-ui/user-flow.md", "source_location": "L226"}, {"id": "admin_ui_user_flow_10_\u0645\u062f\u06cc\u0631\u06cc\u062a_\u0646\u0638\u0631\u0627\u062a_comment_moderation", "label": "10. \u0645\u062f\u06cc\u0631\u06cc\u062a \u0646\u0638\u0631\u0627\u062a (Comment Moderation)", "file_type": "document", "source_file": "docs/admin-ui/user-flow.md", "source_location": "L250"}, {"id": "admin_ui_user_flow_11_\u0645\u062f\u06cc\u0631\u06cc\u062a_\u0627\u0645\u062a\u06cc\u0627\u0632\u062f\u0647\u06cc_rating_management", "label": "11. \u0645\u062f\u06cc\u0631\u06cc\u062a \u0627\u0645\u062a\u06cc\u0627\u0632\u062f\u0647\u06cc (Rating Management)", "file_type": "document", "source_file": "docs/admin-ui/user-flow.md", "source_location": "L270"}, {"id": "admin_ui_user_flow_12_\u0645\u062f\u06cc\u0631\u06cc\u062a_\u067e\u06cc\u0627\u0645\u06a9_sms_management", "label": "12. \u0645\u062f\u06cc\u0631\u06cc\u062a \u067e\u06cc\u0627\u0645\u06a9 (SMS Management)", "file_type": "document", "source_file": "docs/admin-ui/user-flow.md", "source_location": "L289"}, {"id": "admin_ui_user_flow_13_\u0645\u062f\u06cc\u0631\u06cc\u062a_\u062f\u0633\u062a\u0647_\u0628\u0646\u062f\u06cc_\u0647\u0627_categories", "label": "13. \u0645\u062f\u06cc\u0631\u06cc\u062a \u062f\u0633\u062a\u0647\u200c\u0628\u0646\u062f\u06cc\u200c\u0647\u0627 (Categories)", "file_type": "document", "source_file": "docs/admin-ui/user-flow.md", "source_location": "L318"}, {"id": "admin_ui_user_flow_14_\u0645\u062f\u06cc\u0631\u06cc\u062a_\u0628\u0644\u0627\u06af_blog_management", "label": "14. \u0645\u062f\u06cc\u0631\u06cc\u062a \u0628\u0644\u0627\u06af (Blog Management)", "file_type": "document", "source_file": "docs/admin-ui/user-flow.md", "source_location": "L342"}, {"id": "admin_ui_user_flow_15_\u0645\u062f\u06cc\u0631\u06cc\u062a_\u0645\u0646\u0634\u06cc_\u0647\u0627_secretary_management", "label": "15. \u0645\u062f\u06cc\u0631\u06cc\u062a \u0645\u0646\u0634\u06cc\u200c\u0647\u0627 (Secretary Management)", "file_type": "document", "source_file": "docs/admin-ui/user-flow.md", "source_location": "L364"}, {"id": "admin_ui_user_flow_16_\u0633\u0627\u062e\u062a\u0627\u0631_navigation_sidebar", "label": "16. \u0633\u0627\u062e\u062a\u0627\u0631 Navigation (Sidebar)", "file_type": "document", "source_file": "docs/admin-ui/user-flow.md", "source_location": "L386"}, {"id": "admin_ui_user_flow_17_global_components", "label": "17. Global Components", "file_type": "document", "source_file": "docs/admin-ui/user-flow.md", "source_location": "L408"}, {"id": "admin_ui_user_flow_18_auth_guard_route_protection", "label": "18. Auth Guard & Route Protection", "file_type": "document", "source_file": "docs/admin-ui/user-flow.md", "source_location": "L425"}, {"id": "admin_ui_user_flow_19_state_management_\u067e\u06cc\u0634\u0646\u0647\u0627\u062f\u06cc", "label": "19. State Management \u067e\u06cc\u0634\u0646\u0647\u0627\u062f\u06cc", "file_type": "document", "source_file": "docs/admin-ui/user-flow.md", "source_location": "L439"}], "edges": [{"source": "users_hamed_pj_my_pj_clinic_pro_clinicpro_docs_admin_ui_user_flow_md", "target": "admin_ui_user_flow_admin_panel_user_flow_react", "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/admin-ui/user-flow.md", "source_location": "L1", "weight": 1.0}, {"source": "admin_ui_user_flow_admin_panel_user_flow_react", "target": "admin_ui_user_flow_1_authentication", "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/admin-ui/user-flow.md", "source_location": "L5", "weight": 1.0}, {"source": "admin_ui_user_flow_admin_panel_user_flow_react", "target": "admin_ui_user_flow_2_dashboard_\u0635\u0641\u062d\u0647_\u0627\u0635\u0644\u06cc", "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/admin-ui/user-flow.md", "source_location": "L23", "weight": 1.0}, {"source": "admin_ui_user_flow_admin_panel_user_flow_react", "target": "admin_ui_user_flow_3_\u0645\u062f\u06cc\u0631\u06cc\u062a_\u06a9\u0627\u0631\u0628\u0631\u0627\u0646_user_management", "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/admin-ui/user-flow.md", "source_location": "L50", "weight": 1.0}, {"source": "admin_ui_user_flow_admin_panel_user_flow_react", "target": "admin_ui_user_flow_4_\u0645\u062f\u06cc\u0631\u06cc\u062a_\u067e\u0632\u0634\u06a9\u0627\u0646_doctor_management", "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/admin-ui/user-flow.md", "source_location": "L81", "weight": 1.0}, {"source": "admin_ui_user_flow_admin_panel_user_flow_react", "target": "admin_ui_user_flow_5_\u0645\u062f\u06cc\u0631\u06cc\u062a_\u06a9\u0644\u06cc\u0646\u06cc\u06a9_\u0647\u0627_clinic_management", "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/admin-ui/user-flow.md", "source_location": "L114", "weight": 1.0}, {"source": "admin_ui_user_flow_admin_panel_user_flow_react", "target": "admin_ui_user_flow_6_\u0645\u062f\u06cc\u0631\u06cc\u062a_\u0646\u0648\u0628\u062a_\u0647\u0627_appointment_management", "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/admin-ui/user-flow.md", "source_location": "L139", "weight": 1.0}, {"source": "admin_ui_user_flow_admin_panel_user_flow_react", "target": "admin_ui_user_flow_7_\u0645\u062f\u06cc\u0631\u06cc\u062a_\u067e\u0631\u062f\u0627\u062e\u062a_\u0647\u0627_payment_management", "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/admin-ui/user-flow.md", "source_location": "L178", "weight": 1.0}, {"source": "admin_ui_user_flow_admin_panel_user_flow_react", "target": "admin_ui_user_flow_8_\u0645\u062f\u06cc\u0631\u06cc\u062a_\u062a\u0633\u0648\u06cc\u0647_\u062d\u0633\u0627\u0628_settlement_management", "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/admin-ui/user-flow.md", "source_location": "L203", "weight": 1.0}, {"source": "admin_ui_user_flow_admin_panel_user_flow_react", "target": "admin_ui_user_flow_9_\u0645\u062f\u06cc\u0631\u06cc\u062a_\u0646\u0645\u0627\u06cc\u0646\u062f\u06af\u0627\u0646_representation_management", "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/admin-ui/user-flow.md", "source_location": "L226", "weight": 1.0}, {"source": "admin_ui_user_flow_admin_panel_user_flow_react", "target": "admin_ui_user_flow_10_\u0645\u062f\u06cc\u0631\u06cc\u062a_\u0646\u0638\u0631\u0627\u062a_comment_moderation", "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/admin-ui/user-flow.md", "source_location": "L250", "weight": 1.0}, {"source": "admin_ui_user_flow_admin_panel_user_flow_react", "target": "admin_ui_user_flow_11_\u0645\u062f\u06cc\u0631\u06cc\u062a_\u0627\u0645\u062a\u06cc\u0627\u0632\u062f\u0647\u06cc_rating_management", "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/admin-ui/user-flow.md", "source_location": "L270", "weight": 1.0}, {"source": "admin_ui_user_flow_admin_panel_user_flow_react", "target": "admin_ui_user_flow_12_\u0645\u062f\u06cc\u0631\u06cc\u062a_\u067e\u06cc\u0627\u0645\u06a9_sms_management", "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/admin-ui/user-flow.md", "source_location": "L289", "weight": 1.0}, {"source": "admin_ui_user_flow_admin_panel_user_flow_react", "target": "admin_ui_user_flow_13_\u0645\u062f\u06cc\u0631\u06cc\u062a_\u062f\u0633\u062a\u0647_\u0628\u0646\u062f\u06cc_\u0647\u0627_categories", "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/admin-ui/user-flow.md", "source_location": "L318", "weight": 1.0}, {"source": "admin_ui_user_flow_admin_panel_user_flow_react", "target": "admin_ui_user_flow_14_\u0645\u062f\u06cc\u0631\u06cc\u062a_\u0628\u0644\u0627\u06af_blog_management", "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/admin-ui/user-flow.md", "source_location": "L342", "weight": 1.0}, {"source": "admin_ui_user_flow_admin_panel_user_flow_react", "target": "admin_ui_user_flow_15_\u0645\u062f\u06cc\u0631\u06cc\u062a_\u0645\u0646\u0634\u06cc_\u0647\u0627_secretary_management", "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/admin-ui/user-flow.md", "source_location": "L364", "weight": 1.0}, {"source": "admin_ui_user_flow_admin_panel_user_flow_react", "target": "admin_ui_user_flow_16_\u0633\u0627\u062e\u062a\u0627\u0631_navigation_sidebar", "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/admin-ui/user-flow.md", "source_location": "L386", "weight": 1.0}, {"source": "admin_ui_user_flow_admin_panel_user_flow_react", "target": "admin_ui_user_flow_17_global_components", "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/admin-ui/user-flow.md", "source_location": "L408", "weight": 1.0}, {"source": "admin_ui_user_flow_admin_panel_user_flow_react", "target": "admin_ui_user_flow_18_auth_guard_route_protection", "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/admin-ui/user-flow.md", "source_location": "L425", "weight": 1.0}, {"source": "admin_ui_user_flow_admin_panel_user_flow_react", "target": "admin_ui_user_flow_19_state_management_\u067e\u06cc\u0634\u0646\u0647\u0627\u062f\u06cc", "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/admin-ui/user-flow.md", "source_location": "L439", "weight": 1.0}], "input_tokens": 0, "output_tokens": 0}