Files
clinicpro/graphify-out/cache/ast/v0.8.44/60176b60869538ed763bfd4b0d02c138481811e62482b73c41693ea5393e8460.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
17 KiB
JSON

{"nodes": [{"id": "users_hamed_pj_my_pj_clinic_pro_clinicpro_docs_admin_ui_ui_design_spec_md", "label": "ui-design-spec.md", "file_type": "document", "source_file": "docs/admin-ui/ui-design-spec.md", "source_location": "L1"}, {"id": "admin_ui_ui_design_spec_clinicpro_admin_ui_design_specification", "label": "ClinicPro Admin \u2014 UI Design Specification", "file_type": "document", "source_file": "docs/admin-ui/ui-design-spec.md", "source_location": "L1"}, {"id": "admin_ui_ui_design_spec_1_design_system_\u067e\u0627\u06cc\u0647", "label": "1. Design System \u067e\u0627\u06cc\u0647", "file_type": "document", "source_file": "docs/admin-ui/ui-design-spec.md", "source_location": "L6"}, {"id": "admin_ui_ui_design_spec_\u0631\u0646\u06af_\u0628\u0646\u062f\u06cc_color_palette", "label": "\u0631\u0646\u06af\u200c\u0628\u0646\u062f\u06cc (Color Palette)", "file_type": "document", "source_file": "docs/admin-ui/ui-design-spec.md", "source_location": "L8"}, {"id": "admin_ui_ui_design_spec_\u062a\u0627\u06cc\u067e\u0648\u06af\u0631\u0627\u0641\u06cc", "label": "\u062a\u0627\u06cc\u067e\u0648\u06af\u0631\u0627\u0641\u06cc", "file_type": "document", "source_file": "docs/admin-ui/ui-design-spec.md", "source_location": "L48"}, {"id": "admin_ui_ui_design_spec_spacing_border_radius", "label": "Spacing & Border Radius", "file_type": "document", "source_file": "docs/admin-ui/ui-design-spec.md", "source_location": "L63"}, {"id": "admin_ui_ui_design_spec_2_layout_structure", "label": "2. Layout Structure", "file_type": "document", "source_file": "docs/admin-ui/ui-design-spec.md", "source_location": "L81"}, {"id": "admin_ui_ui_design_spec_3_sidebar", "label": "3. Sidebar", "file_type": "document", "source_file": "docs/admin-ui/ui-design-spec.md", "source_location": "L102"}, {"id": "admin_ui_ui_design_spec_\u062d\u0627\u0644\u062a_\u0628\u0627\u0632_260px", "label": "\u062d\u0627\u0644\u062a \u0628\u0627\u0632 (260px)", "file_type": "document", "source_file": "docs/admin-ui/ui-design-spec.md", "source_location": "L104"}, {"id": "admin_ui_ui_design_spec_\u062d\u0627\u0644\u062a_\u062c\u0645\u0639_\u0634\u062f\u0647_72px_flyout_on_hover", "label": "\u062d\u0627\u0644\u062a \u062c\u0645\u0639\u200c\u0634\u062f\u0647 (72px) \u2014 Flyout on hover", "file_type": "document", "source_file": "docs/admin-ui/ui-design-spec.md", "source_location": "L142"}, {"id": "admin_ui_ui_design_spec_4_topbar", "label": "4. Topbar", "file_type": "document", "source_file": "docs/admin-ui/ui-design-spec.md", "source_location": "L174"}, {"id": "admin_ui_ui_design_spec_5_cards", "label": "5. Cards", "file_type": "document", "source_file": "docs/admin-ui/ui-design-spec.md", "source_location": "L189"}, {"id": "admin_ui_ui_design_spec_stat_card_\u0622\u0645\u0627\u0631_\u062e\u0644\u0627\u0635\u0647", "label": "Stat Card (\u0622\u0645\u0627\u0631 \u062e\u0644\u0627\u0635\u0647)", "file_type": "document", "source_file": "docs/admin-ui/ui-design-spec.md", "source_location": "L191"}, {"id": "admin_ui_ui_design_spec_data_card_\u0645\u062d\u062a\u0648\u0627_\u062c\u062f\u0627\u0648\u0644", "label": "Data Card (\u0645\u062d\u062a\u0648\u0627 / \u062c\u062f\u0627\u0648\u0644)", "file_type": "document", "source_file": "docs/admin-ui/ui-design-spec.md", "source_location": "L202"}, {"id": "admin_ui_ui_design_spec_6_datatable_\u062c\u062f\u0648\u0644_\u062f\u0627\u062f\u0647", "label": "6. DataTable (\u062c\u062f\u0648\u0644 \u062f\u0627\u062f\u0647)", "file_type": "document", "source_file": "docs/admin-ui/ui-design-spec.md", "source_location": "L215"}, {"id": "admin_ui_ui_design_spec_7_status_badges", "label": "7. Status Badges", "file_type": "document", "source_file": "docs/admin-ui/ui-design-spec.md", "source_location": "L240"}, {"id": "admin_ui_ui_design_spec_8_\u0641\u0631\u0645_\u0647\u0627_forms", "label": "8. \u0641\u0631\u0645\u200c\u0647\u0627 (Forms)", "file_type": "document", "source_file": "docs/admin-ui/ui-design-spec.md", "source_location": "L277"}, {"id": "admin_ui_ui_design_spec_input", "label": "Input", "file_type": "document", "source_file": "docs/admin-ui/ui-design-spec.md", "source_location": "L279"}, {"id": "admin_ui_ui_design_spec_select_dropdown", "label": "Select / Dropdown", "file_type": "document", "source_file": "docs/admin-ui/ui-design-spec.md", "source_location": "L296"}, {"id": "admin_ui_ui_design_spec_permission_matrix_\u0645\u0646\u0634\u06cc", "label": "Permission Matrix (\u0645\u0646\u0634\u06cc)", "file_type": "document", "source_file": "docs/admin-ui/ui-design-spec.md", "source_location": "L300"}, {"id": "admin_ui_ui_design_spec_9_\u0646\u0645\u0648\u062f\u0627\u0631\u0647\u0627_charts", "label": "9. \u0646\u0645\u0648\u062f\u0627\u0631\u0647\u0627 (Charts)", "file_type": "document", "source_file": "docs/admin-ui/ui-design-spec.md", "source_location": "L311"}, {"id": "admin_ui_ui_design_spec_\u062f\u0627\u0634\u0628\u0648\u0631\u062f_\u0627\u0635\u0644\u06cc", "label": "\u062f\u0627\u0634\u0628\u0648\u0631\u062f \u0627\u0635\u0644\u06cc", "file_type": "document", "source_file": "docs/admin-ui/ui-design-spec.md", "source_location": "L313"}, {"id": "admin_ui_ui_design_spec_10_modal_dialog", "label": "10. Modal / Dialog", "file_type": "document", "source_file": "docs/admin-ui/ui-design-spec.md", "source_location": "L330"}, {"id": "admin_ui_ui_design_spec_11_toast_notifications", "label": "11. Toast Notifications", "file_type": "document", "source_file": "docs/admin-ui/ui-design-spec.md", "source_location": "L354"}, {"id": "admin_ui_ui_design_spec_12_empty_states_loading", "label": "12. Empty States & Loading", "file_type": "document", "source_file": "docs/admin-ui/ui-design-spec.md", "source_location": "L372"}, {"id": "admin_ui_ui_design_spec_loading_skeleton", "label": "Loading (Skeleton)", "file_type": "document", "source_file": "docs/admin-ui/ui-design-spec.md", "source_location": "L374"}, {"id": "admin_ui_ui_design_spec_empty_state", "label": "Empty State", "file_type": "document", "source_file": "docs/admin-ui/ui-design-spec.md", "source_location": "L384"}, {"id": "admin_ui_ui_design_spec_13_page_header_\u0647\u0631_\u0635\u0641\u062d\u0647", "label": "13. Page Header (\u0647\u0631 \u0635\u0641\u062d\u0647)", "file_type": "document", "source_file": "docs/admin-ui/ui-design-spec.md", "source_location": "L400"}, {"id": "admin_ui_ui_design_spec_14_\u062a\u06a9\u0646\u0648\u0644\u0648\u0698\u06cc_stack", "label": "14. \u062a\u06a9\u0646\u0648\u0644\u0648\u0698\u06cc Stack", "file_type": "document", "source_file": "docs/admin-ui/ui-design-spec.md", "source_location": "L411"}, {"id": "admin_ui_ui_design_spec_15_responsive_breakpoints", "label": "15. Responsive Breakpoints", "file_type": "document", "source_file": "docs/admin-ui/ui-design-spec.md", "source_location": "L435"}, {"id": "admin_ui_ui_design_spec_16_dark_mode_\u0627\u062e\u062a\u06cc\u0627\u0631\u06cc_\u0641\u0627\u0632_\u062f\u0648\u0645", "label": "16. Dark Mode (\u0627\u062e\u062a\u06cc\u0627\u0631\u06cc \u2014 \u0641\u0627\u0632 \u062f\u0648\u0645)", "file_type": "document", "source_file": "docs/admin-ui/ui-design-spec.md", "source_location": "L445"}, {"id": "admin_ui_ui_design_spec_17_\u0646\u0645\u0648\u0646\u0647_\u0631\u0646\u06af_\u0628\u0646\u062f\u06cc_\u0635\u0641\u062d\u0647_\u062f\u0627\u0634\u0628\u0648\u0631\u062f", "label": "17. \u0646\u0645\u0648\u0646\u0647 \u0631\u0646\u06af\u200c\u0628\u0646\u062f\u06cc \u0635\u0641\u062d\u0647 \u062f\u0627\u0634\u0628\u0648\u0631\u062f", "file_type": "document", "source_file": "docs/admin-ui/ui-design-spec.md", "source_location": "L459"}, {"id": "admin_ui_ui_design_spec_\u0645\u0646\u0627\u0628\u0639", "label": "\u0645\u0646\u0627\u0628\u0639", "file_type": "document", "source_file": "docs/admin-ui/ui-design-spec.md", "source_location": "L478"}], "edges": [{"source": "users_hamed_pj_my_pj_clinic_pro_clinicpro_docs_admin_ui_ui_design_spec_md", "target": "admin_ui_ui_design_spec_clinicpro_admin_ui_design_specification", "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/admin-ui/ui-design-spec.md", "source_location": "L1", "weight": 1.0}, {"source": "admin_ui_ui_design_spec_clinicpro_admin_ui_design_specification", "target": "admin_ui_ui_design_spec_1_design_system_\u067e\u0627\u06cc\u0647", "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/admin-ui/ui-design-spec.md", "source_location": "L6", "weight": 1.0}, {"source": "admin_ui_ui_design_spec_1_design_system_\u067e\u0627\u06cc\u0647", "target": "admin_ui_ui_design_spec_\u0631\u0646\u06af_\u0628\u0646\u062f\u06cc_color_palette", "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/admin-ui/ui-design-spec.md", "source_location": "L8", "weight": 1.0}, {"source": "admin_ui_ui_design_spec_1_design_system_\u067e\u0627\u06cc\u0647", "target": "admin_ui_ui_design_spec_\u062a\u0627\u06cc\u067e\u0648\u06af\u0631\u0627\u0641\u06cc", "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/admin-ui/ui-design-spec.md", "source_location": "L48", "weight": 1.0}, {"source": "admin_ui_ui_design_spec_1_design_system_\u067e\u0627\u06cc\u0647", "target": "admin_ui_ui_design_spec_spacing_border_radius", "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/admin-ui/ui-design-spec.md", "source_location": "L63", "weight": 1.0}, {"source": "admin_ui_ui_design_spec_clinicpro_admin_ui_design_specification", "target": "admin_ui_ui_design_spec_2_layout_structure", "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/admin-ui/ui-design-spec.md", "source_location": "L81", "weight": 1.0}, {"source": "admin_ui_ui_design_spec_clinicpro_admin_ui_design_specification", "target": "admin_ui_ui_design_spec_3_sidebar", "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/admin-ui/ui-design-spec.md", "source_location": "L102", "weight": 1.0}, {"source": "admin_ui_ui_design_spec_3_sidebar", "target": "admin_ui_ui_design_spec_\u062d\u0627\u0644\u062a_\u0628\u0627\u0632_260px", "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/admin-ui/ui-design-spec.md", "source_location": "L104", "weight": 1.0}, {"source": "admin_ui_ui_design_spec_3_sidebar", "target": "admin_ui_ui_design_spec_\u062d\u0627\u0644\u062a_\u062c\u0645\u0639_\u0634\u062f\u0647_72px_flyout_on_hover", "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/admin-ui/ui-design-spec.md", "source_location": "L142", "weight": 1.0}, {"source": "admin_ui_ui_design_spec_clinicpro_admin_ui_design_specification", "target": "admin_ui_ui_design_spec_4_topbar", "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/admin-ui/ui-design-spec.md", "source_location": "L174", "weight": 1.0}, {"source": "admin_ui_ui_design_spec_clinicpro_admin_ui_design_specification", "target": "admin_ui_ui_design_spec_5_cards", "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/admin-ui/ui-design-spec.md", "source_location": "L189", "weight": 1.0}, {"source": "admin_ui_ui_design_spec_5_cards", "target": "admin_ui_ui_design_spec_stat_card_\u0622\u0645\u0627\u0631_\u062e\u0644\u0627\u0635\u0647", "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/admin-ui/ui-design-spec.md", "source_location": "L191", "weight": 1.0}, {"source": "admin_ui_ui_design_spec_5_cards", "target": "admin_ui_ui_design_spec_data_card_\u0645\u062d\u062a\u0648\u0627_\u062c\u062f\u0627\u0648\u0644", "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/admin-ui/ui-design-spec.md", "source_location": "L202", "weight": 1.0}, {"source": "admin_ui_ui_design_spec_clinicpro_admin_ui_design_specification", "target": "admin_ui_ui_design_spec_6_datatable_\u062c\u062f\u0648\u0644_\u062f\u0627\u062f\u0647", "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/admin-ui/ui-design-spec.md", "source_location": "L215", "weight": 1.0}, {"source": "admin_ui_ui_design_spec_clinicpro_admin_ui_design_specification", "target": "admin_ui_ui_design_spec_7_status_badges", "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/admin-ui/ui-design-spec.md", "source_location": "L240", "weight": 1.0}, {"source": "admin_ui_ui_design_spec_clinicpro_admin_ui_design_specification", "target": "admin_ui_ui_design_spec_8_\u0641\u0631\u0645_\u0647\u0627_forms", "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/admin-ui/ui-design-spec.md", "source_location": "L277", "weight": 1.0}, {"source": "admin_ui_ui_design_spec_8_\u0641\u0631\u0645_\u0647\u0627_forms", "target": "admin_ui_ui_design_spec_input", "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/admin-ui/ui-design-spec.md", "source_location": "L279", "weight": 1.0}, {"source": "admin_ui_ui_design_spec_8_\u0641\u0631\u0645_\u0647\u0627_forms", "target": "admin_ui_ui_design_spec_select_dropdown", "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/admin-ui/ui-design-spec.md", "source_location": "L296", "weight": 1.0}, {"source": "admin_ui_ui_design_spec_8_\u0641\u0631\u0645_\u0647\u0627_forms", "target": "admin_ui_ui_design_spec_permission_matrix_\u0645\u0646\u0634\u06cc", "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/admin-ui/ui-design-spec.md", "source_location": "L300", "weight": 1.0}, {"source": "admin_ui_ui_design_spec_clinicpro_admin_ui_design_specification", "target": "admin_ui_ui_design_spec_9_\u0646\u0645\u0648\u062f\u0627\u0631\u0647\u0627_charts", "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/admin-ui/ui-design-spec.md", "source_location": "L311", "weight": 1.0}, {"source": "admin_ui_ui_design_spec_9_\u0646\u0645\u0648\u062f\u0627\u0631\u0647\u0627_charts", "target": "admin_ui_ui_design_spec_\u062f\u0627\u0634\u0628\u0648\u0631\u062f_\u0627\u0635\u0644\u06cc", "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/admin-ui/ui-design-spec.md", "source_location": "L313", "weight": 1.0}, {"source": "admin_ui_ui_design_spec_clinicpro_admin_ui_design_specification", "target": "admin_ui_ui_design_spec_10_modal_dialog", "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/admin-ui/ui-design-spec.md", "source_location": "L330", "weight": 1.0}, {"source": "admin_ui_ui_design_spec_clinicpro_admin_ui_design_specification", "target": "admin_ui_ui_design_spec_11_toast_notifications", "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/admin-ui/ui-design-spec.md", "source_location": "L354", "weight": 1.0}, {"source": "admin_ui_ui_design_spec_clinicpro_admin_ui_design_specification", "target": "admin_ui_ui_design_spec_12_empty_states_loading", "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/admin-ui/ui-design-spec.md", "source_location": "L372", "weight": 1.0}, {"source": "admin_ui_ui_design_spec_12_empty_states_loading", "target": "admin_ui_ui_design_spec_loading_skeleton", "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/admin-ui/ui-design-spec.md", "source_location": "L374", "weight": 1.0}, {"source": "admin_ui_ui_design_spec_12_empty_states_loading", "target": "admin_ui_ui_design_spec_empty_state", "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/admin-ui/ui-design-spec.md", "source_location": "L384", "weight": 1.0}, {"source": "admin_ui_ui_design_spec_clinicpro_admin_ui_design_specification", "target": "admin_ui_ui_design_spec_13_page_header_\u0647\u0631_\u0635\u0641\u062d\u0647", "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/admin-ui/ui-design-spec.md", "source_location": "L400", "weight": 1.0}, {"source": "admin_ui_ui_design_spec_clinicpro_admin_ui_design_specification", "target": "admin_ui_ui_design_spec_14_\u062a\u06a9\u0646\u0648\u0644\u0648\u0698\u06cc_stack", "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/admin-ui/ui-design-spec.md", "source_location": "L411", "weight": 1.0}, {"source": "admin_ui_ui_design_spec_clinicpro_admin_ui_design_specification", "target": "admin_ui_ui_design_spec_15_responsive_breakpoints", "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/admin-ui/ui-design-spec.md", "source_location": "L435", "weight": 1.0}, {"source": "admin_ui_ui_design_spec_clinicpro_admin_ui_design_specification", "target": "admin_ui_ui_design_spec_16_dark_mode_\u0627\u062e\u062a\u06cc\u0627\u0631\u06cc_\u0641\u0627\u0632_\u062f\u0648\u0645", "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/admin-ui/ui-design-spec.md", "source_location": "L445", "weight": 1.0}, {"source": "admin_ui_ui_design_spec_clinicpro_admin_ui_design_specification", "target": "admin_ui_ui_design_spec_17_\u0646\u0645\u0648\u0646\u0647_\u0631\u0646\u06af_\u0628\u0646\u062f\u06cc_\u0635\u0641\u062d\u0647_\u062f\u0627\u0634\u0628\u0648\u0631\u062f", "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/admin-ui/ui-design-spec.md", "source_location": "L459", "weight": 1.0}, {"source": "admin_ui_ui_design_spec_clinicpro_admin_ui_design_specification", "target": "admin_ui_ui_design_spec_\u0645\u0646\u0627\u0628\u0639", "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/admin-ui/ui-design-spec.md", "source_location": "L478", "weight": 1.0}], "input_tokens": 0, "output_tokens": 0}