graphify add

This commit is contained in:
javad committed 2026-10-09 17:18:17 +03:30
1 parent f19d8ee6a7
commit 91768be145
20 files changed
+21700 -1

No files matched your search

+999
View File
@@ -0,0 +1,999 @@
{
"communities": {
"0": [
"abstractbaseuser",
"admin_panel_models",
"admin_panel_models_articletype",
"admin_panel_models_cachetable",
"admin_panel_models_cachetable_str",
"admin_panel_models_phonenumber",
"admin_panel_models_phonenumber_str",
"admin_panel_models_product",
"admin_panel_models_product_meta",
"admin_panel_models_product_str",
"admin_panel_models_productstockhistory",
"admin_panel_models_productstockhistory_meta",
"admin_panel_models_productstockhistory_str",
"admin_panel_models_rationale_97",
"admin_panel_models_storeroomowner",
"admin_panel_models_storetransferrequest",
"admin_panel_models_storetransferrequest_clean",
"admin_panel_models_storetransferrequest_meta",
"admin_panel_models_storetransferrequest_status",
"admin_panel_models_storetransferrequest_str",
"admin_panel_models_userprofile",
"admin_panel_models_userprofile_str",
"admin_panel_models_visitqueue",
"admin_panel_services",
"admin_panel_services_approve_transfer_request",
"admin_panel_services_cancel_transfer_request",
"admin_panel_services_check_source_store_permission",
"admin_panel_services_check_target_store_permission",
"admin_panel_services_create_transfer_request",
"admin_panel_services_get_product_current_stock",
"admin_panel_services_rationale_160",
"admin_panel_services_rationale_187",
"admin_panel_services_rationale_20",
"admin_panel_services_rationale_30",
"admin_panel_services_rationale_40",
"admin_panel_services_rationale_64",
"admin_panel_services_rationale_99",
"admin_panel_services_reject_transfer_request",
"admin_panel_views_process_transfer_action",
"admin_panel_views_rationale_1320",
"atomic",
"django_contrib_auth",
"django_contrib_auth_models",
"django_core_exceptions",
"django_db_models",
"django_dispatch",
"django_utils_translation",
"typing"
],
"1": [
"admin_panel_context_processor",
"admin_panel_context_processor_dashboxdata",
"admin_panel_management_commands_send_daily_report",
"admin_panel_management_commands_send_daily_report_command",
"admin_panel_management_commands_send_daily_report_command_handle",
"admin_panel_management_commands_send_daily_report_py_basecommand",
"admin_panel_models_article",
"admin_panel_models_article_meta",
"admin_panel_models_customer",
"admin_panel_models_customer_delete",
"admin_panel_models_customer_meta",
"admin_panel_models_customer_str",
"admin_panel_models_factor",
"admin_panel_models_factor_delete",
"admin_panel_models_factor_meta",
"admin_panel_models_factoriteam",
"admin_panel_models_sarresid",
"admin_panel_templatetags_custom_tags",
"admin_panel_templatetags_custom_tags_has_group",
"admin_panel_templatetags_custom_tags_tojalali",
"admin_panel_templatetags_remove_q_p",
"admin_panel_templatetags_remove_q_p_rationale_7",
"admin_panel_templatetags_remove_q_p_remove_query_param",
"admin_panel_views_customerhesabdariadd",
"admin_panel_views_customersadd",
"admin_panel_views_newfactor",
"check_finance",
"check_finance_check_financial_discrepancy",
"csv",
"datetime",
"django",
"django_core_asgi",
"django_core_wsgi",
"django_db_models_functions",
"django_utils",
"filter",
"ghost_hunter",
"ghost_hunter_run_360_audit",
"khatibi_asgi",
"khatibi_asgi_rationale_1",
"khatibi_wsgi",
"khatibi_wsgi_rationale_1",
"os",
"persiantools_jdatetime",
"reconciliation_tool",
"reconciliation_tool_run_audit",
"requests"
],
"2": [
"admin_panel_management_commands_gt_esh",
"admin_panel_management_commands_gt_esh_command",
"admin_panel_management_commands_gt_esh_command_add_arguments",
"admin_panel_management_commands_gt_esh_command_execute_by_immediate_chunks",
"admin_panel_management_commands_gt_esh_command_execute_hybrid_migration",
"admin_panel_management_commands_gt_esh_command_handle",
"admin_panel_management_commands_gt_esh_command_process_single_chunk",
"admin_panel_management_commands_gt_esh_py_basecommand",
"admin_panel_management_commands_gt_esh_rationale_115",
"admin_panel_management_commands_gt_esh_rationale_123",
"admin_panel_management_commands_gt_esh_rationale_89",
"admin_panel_management_commands_sqlite_db_backup",
"admin_panel_management_commands_sqlite_db_backup_command",
"admin_panel_management_commands_sqlite_db_backup_command_cleanup_resources",
"admin_panel_management_commands_sqlite_db_backup_command_handle",
"admin_panel_management_commands_sqlite_db_backup_command_handle_critical_failure",
"admin_panel_management_commands_sqlite_db_backup_command_handle_progress_callback",
"admin_panel_management_commands_sqlite_db_backup_command_init",
"admin_panel_management_commands_sqlite_db_backup_command_signal_handler",
"admin_panel_management_commands_sqlite_db_backup_py_basecommand",
"admin_panel_management_commands_sqlite_db_backup_rationale_158",
"admin_panel_management_commands_sqlite_db_backup_rationale_30",
"boto3",
"botocore_config",
"botocore_exceptions",
"contextlib",
"django_core_management_base",
"fcntl",
"khatibi_production_settings",
"khatibi_settings",
"khatibi_settings_rationale_1",
"logging",
"pathlib",
"shutil",
"signal",
"sqlite3",
"time"
],
"3": [
"admin_panel_migrations_0004_factor_paytype",
"admin_panel_migrations_0004_factor_paytype_migration",
"admin_panel_migrations_0013_alter_factor_options",
"admin_panel_migrations_0013_alter_factor_options_migration",
"admin_panel_migrations_0014_auto_20220123_1348",
"admin_panel_migrations_0014_auto_20220123_1348_migration",
"admin_panel_migrations_0017_factoriteam_garantyesh",
"admin_panel_migrations_0017_factoriteam_garantyesh_migration",
"admin_panel_migrations_0020_auto_20220126_1532",
"admin_panel_migrations_0020_auto_20220126_1532_migration",
"admin_panel_migrations_0021_alter_article_type",
"admin_panel_migrations_0021_alter_article_type_migration",
"admin_panel_migrations_0022_article_typepy",
"admin_panel_migrations_0022_article_typepy_migration",
"admin_panel_migrations_0023_alter_article_typepy",
"admin_panel_migrations_0023_alter_article_typepy_migration",
"admin_panel_migrations_0027_alter_action_nazar",
"admin_panel_migrations_0027_alter_action_nazar_migration",
"admin_panel_migrations_0029_alter_article_options",
"admin_panel_migrations_0029_alter_article_options_migration",
"admin_panel_migrations_0034_alter_article_sarresid",
"admin_panel_migrations_0034_alter_article_sarresid_migration",
"admin_panel_migrations_0035_alter_article_sarresid",
"admin_panel_migrations_0035_alter_article_sarresid_migration",
"admin_panel_migrations_0037_sarresid_sarresiddt",
"admin_panel_migrations_0037_sarresid_sarresiddt_migration",
"admin_panel_migrations_0040_customer_laghv_bazdid",
"admin_panel_migrations_0040_customer_laghv_bazdid_migration",
"admin_panel_migrations_0047_alter_productinstore_movement_type",
"admin_panel_migrations_0047_alter_productinstore_movement_type_migration",
"admin_panel_migrations_0055_action_nextnazardt",
"admin_panel_migrations_0055_action_nextnazardt_migration",
"django_db"
],
"4": [
"admin_panel_templates_admin_panel_customeridbackup_html",
"admin_panel_templates_admin_panel_customeridbackup_html_all_products",
"admin_panel_templates_admin_panel_customeridbackup_html_buildorderlist",
"admin_panel_templates_admin_panel_customeridbackup_html_orderlist",
"admin_panel_templates_admin_panel_customeridfactorbackup_html",
"admin_panel_templates_admin_panel_customeridfactorbackup_html_js",
"admin_panel_templates_admin_panel_customernewbackup_html",
"admin_panel_urls_customer",
"admin_panel_urls_customeredit",
"admin_panel_urls_newfactor",
"api_endpoint_panel_customer_del",
"api_endpoint_panel_productmojodi",
"concept_category",
"concept_client_side_form_logic",
"concept_customer",
"concept_factor",
"concept_permission",
"concept_product",
"concept_productcategory",
"concept_user",
"django_concepts_csrf_token",
"django_contrib_staticfiles_templatetags_static",
"django_template_filter_tojalali",
"django_template_tag_custom_tags",
"django_template_tags_custom_tags",
"django_template_tags_static",
"django_url_admin_panel_customeredit",
"django_url_admin_panel_customerfactors",
"django_url_admin_panel_newfactor",
"django_url_admin_panel_productsjson",
"js_library_pdatepicker",
"panel_urls_productmojodi"
],
"5": [
"admin_panel_views",
"admin_panel_views_actionjson",
"admin_panel_views_api_check_status_inquiry",
"admin_panel_views_customerjson",
"admin_panel_views_customers",
"admin_panel_views_p_login",
"admin_panel_views_p_logout",
"admin_panel_views_parse_cheque_result_html",
"admin_panel_views_rationale_2852",
"admin_panel_views_run_cbi_sayad_inquiry_logic",
"admin_panel_views_solve_base64_captcha",
"asgiref_sync",
"asyncio",
"base64",
"csrf_exempt",
"cv2",
"ddddocr",
"django_contrib_auth_decorators",
"django_core_paginator",
"django_urls_base",
"django_views_decorators_csrf",
"django_views_decorators_http",
"json",
"numpy",
"persiantools",
"playwright_async_api",
"re"
],
"6": [
"admin_panel_views_addsarresid",
"admin_panel_views_bedehi",
"admin_panel_views_bedehikhadamat",
"admin_panel_views_bedehinasb",
"admin_panel_views_customerdel",
"admin_panel_views_customerssearch",
"admin_panel_views_entezar",
"admin_panel_views_factordel",
"admin_panel_views_financial_dashboard",
"admin_panel_views_hesabdari",
"admin_panel_views_hesabdari_checkpass",
"admin_panel_views_hesabdari_checkpassfail",
"admin_panel_views_hesabdari_residnashone",
"admin_panel_views_pardakhtnesiye",
"admin_panel_views_passcheck",
"admin_panel_views_productdel",
"admin_panel_views_rationale_395",
"admin_panel_views_report",
"admin_panel_views_report_debtors_no_vosol",
"admin_panel_views_rezayat",
"admin_panel_views_rezayatedit",
"admin_panel_views_sarresidh",
"admin_panel_views_update_check_info",
"login_required",
"permission_required",
"require_post"
],
"7": [
"admin_panel_templates_admin_panel_base",
"admin_panel_templates_admin_panel_basehesabdari",
"admin_panel_templates_admin_panel_basestore",
"admin_panel_templates_admin_panel_customerfactorbackup",
"concept_django_custom_tags",
"concept_url_admin_panel_actionlistusertoday",
"concept_url_admin_panel_bedehi",
"concept_url_admin_panel_customers",
"concept_url_admin_panel_entezar",
"concept_url_admin_panel_hesabdari",
"concept_url_admin_panel_hesabdari_residnashone",
"concept_url_admin_panel_index",
"concept_url_admin_panel_operations",
"concept_url_admin_panel_p_logout",
"concept_url_admin_panel_productadd",
"concept_url_admin_panel_rezayat",
"concept_url_admin_panel_store",
"concept_url_admin_panel_store_transfers",
"concept_url_admin_panel_stores",
"concept_url_panel_customer_factor_del",
"static_admin_panel_bulma_min_css",
"static_admin_panel_datatables_datatables_min_js",
"static_admin_panel_kamadatepicker_min_js",
"static_admin_panel_persian-datepicker_min_js",
"static_admin_panel_style_css"
],
"8": [
"admin_panel_migrations_0001_initial",
"admin_panel_migrations_0001_initial_migration",
"admin_panel_migrations_0007_productinstore_factor",
"admin_panel_migrations_0007_productinstore_factor_migration",
"admin_panel_migrations_0008_storeroom_user",
"admin_panel_migrations_0008_storeroom_user_migration",
"admin_panel_migrations_0018_alter_factoriteam_product",
"admin_panel_migrations_0018_alter_factoriteam_product_migration",
"admin_panel_migrations_0019_article_articletype",
"admin_panel_migrations_0019_article_articletype_migration",
"admin_panel_migrations_0024_action",
"admin_panel_migrations_0024_action_migration",
"admin_panel_migrations_0036_sarresid",
"admin_panel_migrations_0036_sarresid_migration",
"admin_panel_migrations_0038_auto_20240213_1735",
"admin_panel_migrations_0038_auto_20240213_1735_migration",
"admin_panel_migrations_0042_article_user",
"admin_panel_migrations_0042_article_user_migration",
"admin_panel_migrations_0046_auto_20260624_1818",
"admin_panel_migrations_0046_auto_20260624_1818_migration",
"admin_panel_migrations_0054_auto_20260715_2250",
"admin_panel_migrations_0054_auto_20260715_2250_migration",
"django_db_models_deletion"
],
"9": [
"admin_panel_migrations_0011_storeroom_user",
"admin_panel_migrations_0011_storeroom_user_migration",
"admin_panel_migrations_0012_visitqueue_user",
"admin_panel_migrations_0012_visitqueue_user_migration",
"admin_panel_migrations_0015_auto_20220124_0858",
"admin_panel_migrations_0015_auto_20220124_0858_migration",
"admin_panel_migrations_0016_factor_user",
"admin_panel_migrations_0016_factor_user_migration",
"admin_panel_migrations_0026_auto_20220209_1924",
"admin_panel_migrations_0026_auto_20220209_1924_migration",
"admin_panel_migrations_0043_sarresid_user",
"admin_panel_migrations_0043_sarresid_user_migration",
"admin_panel_migrations_0045_auto_20260610_1421",
"admin_panel_migrations_0045_auto_20260610_1421_migration",
"admin_panel_migrations_0050_storetransferrequest",
"admin_panel_migrations_0050_storetransferrequest_migration",
"admin_panel_migrations_0051_auto_20260705_1356",
"admin_panel_migrations_0051_auto_20260705_1356_migration",
"admin_panel_migrations_0052_storeroomowner",
"admin_panel_migrations_0052_storeroomowner_migration",
"admin_panel_migrations_0053_storeroom_owners",
"admin_panel_migrations_0053_storeroom_owners_migration",
"django_conf"
],
"10": [
"admin_panel_templates_admin_panel_login",
"admin_panel_templates_admin_panel_storebk1",
"django_csrf_token",
"django_custom_tags",
"django_static_files",
"django_url_admin_panel_newstore",
"django_url_admin_panel_operations",
"django_url_admin_panel_p_login",
"django_url_admin_panel_store",
"form_field_password",
"form_field_storename",
"form_field_username",
"javascript_kamadatepicker",
"product_property_mojodi",
"product_property_product_name",
"static_admin_panel_bulma-rtl_min_css",
"template_variable_message",
"template_variable_productsum",
"template_variable_s_id"
],
"11": [
"admin_panel_models_productcategory",
"admin_panel_models_productcategory_str",
"admin_panel_models_productinstore",
"admin_panel_models_productinstore_delete",
"admin_panel_models_productinstore_meta",
"admin_panel_models_productinstore_movementtype",
"admin_panel_models_productinstore_save",
"admin_panel_models_productinstore_str",
"admin_panel_views_customer",
"admin_panel_views_customerfactor",
"admin_panel_views_customernew",
"admin_panel_views_customernew2",
"admin_panel_views_operationproduct",
"admin_panel_views_operations",
"admin_panel_views_productadd",
"admin_panel_views_productedit",
"admin_panel_views_store"
],
"12": [
"admin_panel_templates_admin_panel_bedehbk",
"admin_panel_templates_admin_panel_customeraction",
"admin_panel_templates_admin_panel_customeractioninc_html",
"admin_panel_templates_admin_panel_customersbk_html",
"admin_panel_url_customernew",
"admin_panel_urls_customernew",
"admin_panel_urls_customernewaction",
"concept_action_model",
"concept_datatables",
"concept_jquery",
"django_template_tag_static",
"django_template_tag_url",
"library_bulma",
"library_datatables",
"library_pdatepicker"
],
"13": [
"admin_models_user",
"admin_panel_models_action",
"admin_panel_views_actionlist",
"admin_panel_views_actionlistall",
"admin_panel_views_actionlisttoday",
"admin_panel_views_actionlistuser",
"admin_panel_views_actionlistusertoday",
"admin_panel_views_customeraction",
"admin_panel_views_customereditaction",
"admin_panel_views_customernazar",
"admin_panel_views_customernewaction",
"admin_panel_views_rezayat_dashboard"
],
"14": [
"admin_panel_templates_admin_panel_bedehi_html",
"admin_panel_templates_admin_panel_hesabdaricheckpass_html",
"admin_panel_urls_passcheck",
"concept_all_sarresid",
"django_context_variable_mandehesabkp",
"django_templatetags_tojalali",
"django_urls_admin_panel_bedehi",
"django_urls_admin_panel_bedehikhadamat",
"django_urls_admin_panel_bedehinasb",
"django_urls_admin_panel_customer",
"javascript_jquery"
],
"15": [
"admin_admin",
"admin_panel_admin",
"admin_panel_admin_rationale_54",
"admin_panel_admin_rationale_75",
"admin_panel_admin_storeroomadmin",
"admin_panel_admin_storeroomadmin_get_owners_count",
"admin_panel_admin_storeroomownerinline",
"admin_panel_admin_storetransferrequestadmin",
"django_contrib",
"register"
],
"16": [
"admin_models",
"admin_models_customer",
"admin_models_factor",
"admin_models_factoriteam",
"admin_models_phonenumber",
"admin_models_product",
"admin_models_productcategory",
"admin_models_productinstore",
"admin_models_storeroom",
"admin_models_visitqueue"
],
"17": [
"admin_panel_templates_admin_panel_customerbase",
"admin_panel_templates_admin_panel_customerid",
"admin_panel_views_customer_delete",
"admin_panel_views_customeredit",
"admin_panel_views_customerhesabdari",
"admin_panel_views_productsjson",
"concept_url_admin_panel_newfactor",
"django_contrib_auth_models_permission",
"django_templatetags_static",
"javascript_pdatepicker"
],
"18": [
"admin_panel_data_customer",
"admin_panel_data_factor",
"admin_panel_data_sarresid",
"admin_panel_templates_admin_panel_hesabdaricheckpassfail_html",
"admin_panel_url_pardakhtnesiye",
"admin_panel_url_passcheck",
"django_permission_viewreportmali",
"javascript_library_jquery",
"javascript_library_pdatepicker"
],
"19": [
"admin_panel_models_storeroom",
"admin_panel_models_storeroom_meta",
"admin_panel_models_storeroom_str",
"admin_panel_views_newoperation",
"admin_panel_views_newstore",
"admin_panel_views_productmojodi",
"admin_panel_views_rationale_1281",
"admin_panel_views_store_transfers",
"admin_panel_views_stores"
],
"20": [
"admin_panel_views_customerfactors",
"admin_panel_views_inventoryexception",
"admin_panel_views_newfactor2",
"admin_panel_views_parse_jalali_date",
"admin_panel_views_parse_timestamp",
"admin_panel_views_rationale_39",
"admin_panel_views_rationale_53",
"admin_panel_views_rationale_65",
"exception"
],
"21": [
"copilot_chat",
"github_copilot_instructions",
"github_copilot_instructions_graphify",
"graphify-out_graph_json",
"graphify-out_graph_report_md",
"graphify-out_wiki_index_md",
"graphify_explain",
"graphify_path",
"graphify_query"
],
"22": [
"admin_panel_templates_admin_panel_hesabdariresidnashode",
"admin_panel_urls_pardakhtnesiye",
"django_permissions_admin_panel_viewreportmali",
"lib_jquery",
"lib_pdatepicker",
"templatetags_custom_tags",
"templatetags_custom_tags_tocurrency",
"templatetags_custom_tags_tojalali"
],
"23": [
"admin_panel_views_api_check_sabt_inquiry",
"admin_panel_views_inventory_movements_report",
"admin_panel_views_operation",
"admin_panel_views_rationale_2875",
"admin_panel_views_rationale_313",
"admin_panel_views_rationale_43",
"admin_panel_views_run_bpi_cheque_inquiry_logic",
"admin_panel_views_safe_int"
],
"24": [
"admin_apps",
"admin_apps_adminconfig",
"admin_apps_py_appconfig",
"admin_panel_apps",
"admin_panel_apps_adminpanelconfig",
"admin_panel_apps_py_appconfig",
"django_apps"
],
"25": [
"admin_panel_migrations_0002_auto_20220114_1616",
"admin_panel_migrations_0002_auto_20220114_1616_migration",
"admin_panel_migrations_0003_auto_20220115_1401",
"admin_panel_migrations_0003_auto_20220115_1401_migration",
"admin_panel_migrations_0031_article_sarresid",
"admin_panel_migrations_0031_article_sarresid_migration",
"django_utils_timezone"
],
"26": [
"entrypoint",
"entrypoint_sh__entry",
"manage",
"manage_main",
"manage_rationale_2",
"manage_rationale_8",
"sys"
],
"27": [
"admin_init",
"admin_urls",
"admin_views",
"admin_views_index",
"django_http",
"django_shortcuts"
],
"28": [
"admin_panel_init",
"admin_panel_urls",
"django_conf_urls_static",
"django_urls",
"khatibi_urls",
"khatibi_urls_rationale_1"
],
"29": [
"admin_panel_templates_admin_panel_entezar_html",
"concept_customer_data",
"concept_kamadatepicker",
"django_templatetags_custom_tags",
"django_templatetags_custom_tags_tojalali"
],
"30": [
"admin_panel_migrations_0056_auto_20260731_1824",
"admin_panel_migrations_0056_auto_20260731_1824_migration",
"django_core_validators"
],
"31": [
"admin_panel_templates_admin_panel_customersbk_html_createcs",
"admin_panel_templates_admin_panel_customersbk_html_openrow",
"concept_customer_modal_ui"
],
"32": [
"admin_panel_tests",
"admin_tests",
"django_test"
],
"33": [
"concept_articl_model",
"concept_customer_model",
"django_context_variable_articls"
],
"34": [
"admin_panel_migrations_0005_auto_20220121_2054",
"admin_panel_migrations_0005_auto_20220121_2054_migration"
],
"35": [
"admin_panel_migrations_0006_auto_20220121_2100",
"admin_panel_migrations_0006_auto_20220121_2100_migration"
],
"36": [
"admin_panel_migrations_0009_remove_storeroom_user",
"admin_panel_migrations_0009_remove_storeroom_user_migration"
],
"37": [
"admin_panel_migrations_0010_auto_20220122_1546",
"admin_panel_migrations_0010_auto_20220122_1546_migration"
],
"38": [
"admin_panel_migrations_0025_action_actiontype",
"admin_panel_migrations_0025_action_actiontype_migration"
],
"39": [
"admin_panel_migrations_0028_action_grade",
"admin_panel_migrations_0028_action_grade_migration"
],
"40": [
"admin_panel_migrations_0030_auto_20220414_1047",
"admin_panel_migrations_0030_auto_20220414_1047_migration"
],
"41": [
"admin_panel_migrations_0032_article_paystatus",
"admin_panel_migrations_0032_article_paystatus_migration"
],
"42": [
"admin_panel_migrations_0033_article_nahvepardakht",
"admin_panel_migrations_0033_article_nahvepardakht_migration"
],
"43": [
"admin_panel_migrations_0039_customer_last_bazdid_dt",
"admin_panel_migrations_0039_customer_last_bazdid_dt_migration"
],
"44": [
"admin_panel_migrations_0041_auto_20240216_1607",
"admin_panel_migrations_0041_auto_20240216_1607_migration"
],
"45": [
"admin_panel_migrations_0044_sarresid_desc",
"admin_panel_migrations_0044_sarresid_desc_migration"
],
"46": [
"admin_panel_migrations_0048_alter_productinstore_options",
"admin_panel_migrations_0048_alter_productinstore_options_migration"
],
"47": [
"admin_panel_migrations_0049_alter_productinstore_options",
"admin_panel_migrations_0049_alter_productinstore_options_migration"
],
"48": [
"gemini",
"gemini_graphify"
],
"49": [
"admin_migrations_init"
],
"50": [
"admin_panel_customer_action_inc"
],
"51": [
"admin_panel_customer_base_new"
],
"52": [
"admin_panel_customer_customernazarinc"
],
"53": [
"admin_panel_customer_factor"
],
"54": [
"admin_panel_customer_hesabdari"
],
"55": [
"admin_panel_customer_id_factor"
],
"56": [
"admin_panel_customer_nazar"
],
"57": [
"admin_panel_management_commands_init"
],
"58": [
"admin_panel_management_init"
],
"59": [
"admin_panel_migrations_init"
],
"60": [
"admin_panel_templates_admin_panel_actionlist"
],
"61": [
"admin_panel_templates_admin_panel_base_html"
],
"62": [
"admin_panel_templates_admin_panel_customerNew"
],
"63": [
"admin_panel_templates_admin_panel_customerNew2"
],
"64": [
"admin_panel_templates_admin_panel_customerRezayat"
],
"65": [
"admin_panel_templates_admin_panel_customerRezayatinc"
],
"66": [
"admin_panel_templates_admin_panel_customerSarresid"
],
"67": [
"admin_panel_templates_admin_panel_customerbasenew_html"
],
"68": [
"admin_panel_templates_admin_panel_customers"
],
"69": [
"admin_panel_templates_admin_panel_entezarbk"
],
"70": [
"admin_panel_templates_admin_panel_financial_dashboard"
],
"71": [
"admin_panel_templates_admin_panel_hesabdari"
],
"72": [
"admin_panel_templates_admin_panel_index"
],
"73": [
"admin_panel_templates_admin_panel_newOperation"
],
"74": [
"admin_panel_templates_admin_panel_operations"
],
"75": [
"admin_panel_templates_admin_panel_operationsbk"
],
"76": [
"admin_panel_templates_admin_panel_report"
],
"77": [
"admin_panel_templates_admin_panel_report_debtors_no_vosol"
],
"78": [
"admin_panel_templates_admin_panel_report_inventory_movements"
],
"79": [
"admin_panel_templates_admin_panel_report_rezayat"
],
"80": [
"admin_panel_templates_admin_panel_reportchecknesiye"
],
"81": [
"admin_panel_templates_admin_panel_rezayat"
],
"82": [
"admin_panel_templates_admin_panel_store"
],
"83": [
"admin_panel_templates_admin_panel_store_transfers"
],
"84": [
"admin_panel_templates_admin_panel_stores"
],
"85": [
"admin_panel_templatetags_custom_tags_tocurrency"
],
"86": [
"admin_panel_templatetags_init"
],
"87": [
"admin_panel_urls_newstore"
],
"88": [
"admin_panel_urls_processtransferaction"
],
"89": [
"admin_panel_urls_rezayatedit"
],
"90": [
"khatibi_init"
],
"91": [
"requirements2_txt"
],
"92": [
"requirements_txt"
]
},
"cohesion": {
"0": 0.0673758865248227,
"1": 0.07123034227567067,
"2": 0.06606606606606606,
"3": 0.06060606060606061,
"4": 0.06653225806451613,
"5": 0.08262108262108261,
"6": 0.12923076923076923,
"7": 0.08333333333333333,
"8": 0.08695652173913043,
"9": 0.08695652173913043,
"10": 0.1111111111111111,
"11": 0.14705882352941177,
"12": 0.1523809523809524,
"13": 0.3181818181818182,
"14": 0.2,
"15": 0.2222222222222222,
"16": 0.2,
"17": 0.2,
"18": 0.2222222222222222,
"19": 0.2222222222222222,
"20": 0.2222222222222222,
"21": 0.2222222222222222,
"22": 0.32142857142857145,
"23": 0.25,
"24": 0.2857142857142857,
"25": 0.2857142857142857,
"26": 0.2857142857142857,
"27": 0.3333333333333333,
"28": 0.4666666666666667,
"29": 0.4,
"30": 0.6666666666666666,
"31": 0.6666666666666666,
"32": 0.6666666666666666,
"33": 0.6666666666666666,
"34": 1.0,
"35": 1.0,
"36": 1.0,
"37": 1.0,
"38": 1.0,
"39": 1.0,
"40": 1.0,
"41": 1.0,
"42": 1.0,
"43": 1.0,
"44": 1.0,
"45": 1.0,
"46": 1.0,
"47": 1.0,
"48": 1.0,
"49": 1.0,
"50": 1.0,
"51": 1.0,
"52": 1.0,
"53": 1.0,
"54": 1.0,
"55": 1.0,
"56": 1.0,
"57": 1.0,
"58": 1.0,
"59": 1.0,
"60": 1.0,
"61": 1.0,
"62": 1.0,
"63": 1.0,
"64": 1.0,
"65": 1.0,
"66": 1.0,
"67": 1.0,
"68": 1.0,
"69": 1.0,
"70": 1.0,
"71": 1.0,
"72": 1.0,
"73": 1.0,
"74": 1.0,
"75": 1.0,
"76": 1.0,
"77": 1.0,
"78": 1.0,
"79": 1.0,
"80": 1.0,
"81": 1.0,
"82": 1.0,
"83": 1.0,
"84": 1.0,
"85": 1.0,
"86": 1.0,
"87": 1.0,
"88": 1.0,
"89": 1.0,
"90": 1.0,
"91": 1.0,
"92": 1.0
},
"gods": [
{
"id": "admin_panel_models_storeroom",
"label": "StoreRoom",
"degree": 25
},
{
"id": "admin_panel_models_productinstore",
"label": "ProductInStore",
"degree": 23
},
{
"id": "admin_models_user",
"label": "User",
"degree": 21
},
{
"id": "admin_panel_models_action",
"label": "Action",
"degree": 20
},
{
"id": "admin_panel_models_product",
"label": "Product",
"degree": 18
},
{
"id": "admin_panel_models_storetransferrequest",
"label": "StoreTransferRequest",
"degree": 15
},
{
"id": "admin_panel_models_article",
"label": "Article",
"degree": 15
},
{
"id": "admin_panel_templates_admin_panel_customeridbackup_html",
"label": "Customer ID Backup/New Factor Template",
"degree": 15
},
{
"id": "admin_panel_models_productcategory",
"label": "ProductCategory",
"degree": 14
},
{
"id": "admin_panel_models_customer",
"label": "Customer",
"degree": 14
}
],
"surprises": [
{
"source": "VisitQueue",
"target": "User",
"source_files": [
"admin_panel/models.py",
"admin/models.py"
],
"confidence": "INFERRED",
"relation": "uses",
"why": "inferred connection - not explicitly stated in source; connects across different repos/directories; bridges separate communities; peripheral node `VisitQueue` unexpectedly reaches hub `User`"
},
{
"source": "Factor",
"target": "User",
"source_files": [
"admin_panel/models.py",
"admin/models.py"
],
"confidence": "INFERRED",
"relation": "uses",
"why": "inferred connection - not explicitly stated in source; connects across different repos/directories; bridges separate communities"
},
{
"source": "StoreRoom",
"target": "User",
"source_files": [
"admin_panel/models.py",
"admin/models.py"
],
"confidence": "INFERRED",
"relation": "uses",
"why": "inferred connection - not explicitly stated in source; connects across different repos/directories; bridges separate communities"
},
{
"source": "StoreRoomOwner",
"target": "User",
"source_files": [
"admin_panel/models.py",
"admin/models.py"
],
"confidence": "INFERRED",
"relation": "uses",
"why": "inferred connection - not explicitly stated in source; connects across different repos/directories; bridges separate communities"
},
{
"source": "StoreTransferRequest",
"target": "User",
"source_files": [
"admin_panel/models.py",
"admin/models.py"
],
"confidence": "INFERRED",
"relation": "uses",
"why": "inferred connection - not explicitly stated in source; connects across different repos/directories; bridges separate communities"
}
],
"tokens": {
"input": 76900,
"output": 126792
}
}
+1
View File
@@ -0,0 +1 @@
{"0": "User Action Views", "1": "Inventory and Product Models", "2": "Daily Reporting Command", "3": "Customer Admin Templates", "4": "Database Schema Migrations", "5": "Admin Panel URLs", "6": "Database Backup Command", "7": "Initial Database Migrations", "8": "User Relation Migrations", "9": "Financial and Accounting Views", "10": "Invoice Management Logic", "11": "Django Admin Configuration", "12": "Core Application Models", "13": "Resource Cleanup Command", "14": "Django App Configurations", "15": "Timezone-related Migrations", "16": "Application Entrypoint Scripts", "17": "Core Admin App", "18": "Project URL Configuration", "19": "Graphify Tooling", "20": "Data Validation Migration", "21": "Application Tests", "22": "Database Schema Migration", "23": "Database Schema Migration", "24": "Remove StoreRoom User Relation", "25": "Database Schema Migration", "26": "Add Action Type Field", "27": "Add Action Grade Field", "28": "Database Schema Migration", "29": "Add Article Payment Status", "30": "Add Article Payment Method", "31": "Add Customer Last Visit", "32": "Database Schema Migration", "33": "Add Sarresid Description", "34": "Update ProductInStore Options", "35": "Update ProductInStore Options", "36": "AI Tooling Documentation", "37": "Admin Migrations Package", "38": "Customer Action Partial", "39": "New Customer Base Template", "40": "Customer Feedback Partial", "41": "Customer Invoice Detail", "42": "Customer Accounting Template", "43": "Customer Invoice List", "44": "Customer Feedback Page", "45": "Management Commands Package", "46": "Management Package", "47": "Admin Panel Migrations Package", "48": "Action List Template", "49": "New Customer Invoice Page", "50": "New Customer Invoice V2", "51": "Customer Satisfaction List", "52": "Customer Satisfaction Partial", "53": "Customer Debt Management", "54": "Customer List Page", "55": "Customer List Backup Template", "56": "Waiting List Backup Template", "57": "Financial Dashboard", "58": "Accounting Main View", "59": "Admin Panel Index Page", "60": "New Inventory Operation", "61": "Inventory Operations List", "62": "Operations Backup Template", "63": "Financial Report Template", "64": "Debt Collection Dashboard", "65": "Inventory Movement Report", "66": "Customer Satisfaction Dashboard", "67": "Check and Credit Report", "68": "Satisfaction List Template", "69": "Store Inventory Template", "70": "Store Transfers Template", "71": "Stores List Template", "72": "Template Tags Package", "73": "Customer Detail URL", "74": "New Store URL", "75": "Process Transfer URL", "76": "Edit Satisfaction URL", "77": "Main Project Package", "78": "Extended Requirements File", "79": "Project Requirements File"}
+1
View File
@@ -0,0 +1 @@
{"0": "dc38416453f219cd", "1": "17677da135e176af", "2": "a173e495d86da278", "3": "2ac4a8f7fd725f39", "4": "7cd0b8c5a73aaae2", "5": "0666b74f90562078", "6": "c3f18528373c1e6e", "7": "1aa60a8e7dec6306", "8": "0ecf8267dd379fc7", "9": "110a96d098e68da1", "10": "019e40911d267493", "11": "3cc770d8cc99f8ae", "12": "d8399135bcf129db", "13": "dbfbf8557361f5ea", "14": "1cdbbc0afb5b81e2", "15": "a19c211702401a5b", "16": "a9087ce814efe96b", "17": "28ebb54ffa686f35", "18": "2db67510f080898c", "19": "8c2d0656a6e54e1f", "20": "cfbcf8cef78c5757", "21": "37de28eabfcc656a", "22": "6886ad7a5751faca", "23": "9fdcab2ed5d20e49", "24": "a1a1f3c1cdff72cf", "25": "2f1621907db6f86f", "26": "9cc7a507cfecd8fb", "27": "edb619bf5ac0fc49", "28": "8cb6b3db3aadb973", "29": "d5c0f5f6714c9991", "30": "9948fb8b548535ed", "31": "52502a4c1ef75ce6", "32": "8d20e5c1bce8916d", "33": "90e57f26f669372d", "34": "bf60a8731033e467", "35": "6cef5bc37e710e62", "36": "66ed76491a412a72", "37": "e67668b62ee6c62c", "38": "68aee39cd24db354", "39": "09b7297ea62919f2", "40": "054401d27ffaa4b2", "41": "dace81c1995fb321", "42": "19e301aeace95bb2", "43": "d6fd0cec4634a0b0", "44": "0230d355a6dabb54", "45": "5cebbb5528321795", "46": "536fe28d24c361f5", "47": "b08bdc2712cb0f12", "48": "6ce8444f504022cc", "49": "d8e34a3b3eb43ee0", "50": "056b8d6b5072289b", "51": "171c34c74a95481b", "52": "73e9eca6f2ca1c9b", "53": "dcc2230ae751c29a", "54": "2f5417a69eb1d15e", "55": "864760002345205a", "56": "d55cb638532fdfeb", "57": "06cae4389208269f", "58": "e9c0a7be255e9b26", "59": "455b4ca39e55ecb0", "60": "8105c55538c34081", "61": "74304670b54c018f", "62": "a27f876eabb044b2", "63": "73f74dd7a40776d6", "64": "29d433d164b99f89", "65": "3f44aa48aa05d597", "66": "ca8a7efba0a3e579", "67": "5cc770af9d184d77", "68": "2d31fa723128b164", "69": "9d814c2520329846", "70": "f97d1a5c3a066598", "71": "14f84a6e4cd311d6", "72": "0bf6f9d0aeab4fd8", "73": "f16cb34aa8bf540c", "74": "8b491bb3ff0649dd", "75": "638812cee15d1b9b", "76": "3dd16d68928a479c", "77": "72dad91d66d471ce", "78": "353a9d09eaae47ea", "79": "2d29260874184e4a"}
+1
View File
@@ -0,0 +1 @@
D:\Projects\khatibi
+1
View File
@@ -0,0 +1 @@
{"output_tokens": 126792}
+214
View File
@@ -0,0 +1,214 @@
# Graph Report - khatibi (2026-10-09)
## Corpus Check
- cluster-only mode — file stats not available
## Summary
- 548 nodes · 887 edges · 80 communities (14 shown, 66 thin omitted)
- Extraction: 85% EXTRACTED · 15% INFERRED · 0% AMBIGUOUS · INFERRED: 131 edges (avg confidence: 0.92)
- Token cost: 2,543 input · 5,433 output
## Graph Freshness
- Built from commit: `f19d8ee6`
- Run `git rev-parse HEAD` and compare to check if the graph is stale.
- Run `graphify update .` after code changes (no API cost).
## Community Hubs (Navigation)
- User Action Views
- Inventory and Product Models
- Daily Reporting Command
- Customer Admin Templates
- Database Schema Migrations
- Admin Panel URLs
- Database Backup Command
- Initial Database Migrations
- User Relation Migrations
- Financial and Accounting Views
- Invoice Management Logic
- Django Admin Configuration
- Core Application Models
- Resource Cleanup Command
- Django App Configurations
- Timezone-related Migrations
- Application Entrypoint Scripts
- Graphify Tooling
- Data Validation Migration
- Database Schema Migration
- Database Schema Migration
- Remove StoreRoom User Relation
- Database Schema Migration
- Add Action Type Field
- Add Action Grade Field
- Database Schema Migration
- Add Article Payment Status
- Add Article Payment Method
- Add Customer Last Visit
- Database Schema Migration
- Add Sarresid Description
- Update ProductInStore Options
- Update ProductInStore Options
- AI Tooling Documentation
- Customer Action Partial
- New Customer Base Template
- Customer Feedback Partial
- Customer Invoice Detail
- Customer Accounting Template
- Customer Invoice List
- Customer Feedback Page
- Action List Template
- New Customer Invoice Page
- New Customer Invoice V2
- Customer Satisfaction List
- Customer Satisfaction Partial
- Customer Debt Management
- Customer List Page
- Financial Dashboard
- Accounting Main View
- New Inventory Operation
- Inventory Operations List
- Operations Backup Template
- Financial Report Template
- Debt Collection Dashboard
- Inventory Movement Report
- Customer Satisfaction Dashboard
- Check and Credit Report
- Satisfaction List Template
- Store Inventory Template
- Store Transfers Template
- Stores List Template
- Extended Requirements File
- Project Requirements File
## God Nodes (most connected - your core abstractions)
1. `StoreRoom` - 25 edges
2. `ProductInStore` - 23 edges
3. `User` - 21 edges
4. `Action` - 20 edges
5. `Product` - 18 edges
6. `StoreTransferRequest` - 15 edges
7. `Article` - 15 edges
8. `ProductCategory` - 14 edges
9. `Customer` - 13 edges
10. `approve_transfer_request()` - 12 edges
## Surprising Connections (you probably didn't know these)
- `VisitQueue` --uses--> `User` [INFERRED]
admin_panel/models.py → admin/models.py
- `Factor` --uses--> `User` [INFERRED]
admin_panel/models.py → admin/models.py
- `StoreRoom` --uses--> `User` [INFERRED]
admin_panel/models.py → admin/models.py
- `StoreRoomOwner` --uses--> `User` [INFERRED]
admin_panel/models.py → admin/models.py
- `StoreTransferRequest` --uses--> `User` [INFERRED]
admin_panel/models.py → admin/models.py
## Import Cycles
- None detected.
## Hyperedges (group relationships)
- **Customer Satisfaction & Collection** — admin_panel_templates_admin_panel_report_rezayat, admin_panel_templates_admin_panel_report_debtors_no_vosol, admin_panel_customer_customernazarinc [EXTRACTED 0.90]
- **Customer Management Flow** — admin_panel_customer_base_new, admin_panel_customer_action_inc, admin_panel_customer_id_factor, admin_panel_customer_hesabdari [EXTRACTED 1.00]
- **Financial & Debt Management** — admin_panel_templates_admin_panel_financial_dashboard, admin_panel_templates_admin_panel_hesabdari [EXTRACTED 1.00]
- **Inventory Management System** — admin_panel_templates_admin_panel_store, admin_panel_templates_admin_panel_store_transfers, admin_panel_templates_admin_panel_report_inventory_movements, admin_panel_templates_admin_panel_operationsbk [EXTRACTED 1.00]
- **Login Form** — admin_panel_templates_admin_panel_login, django_url_admin_panel_p_login, django_csrf_token, form_field_username, form_field_password [EXTRACTED]
- **New Store Form** — admin_panel_templates_admin_panel_storebk1, django_url_admin_panel_newstore, django_csrf_token, form_field_storename [EXTRACTED]
- **Store Inventory Display** — admin_panel_templates_admin_panel_storebk1, template_variable_productsum, product_property_product_name, product_property_mojodi [EXTRACTED]
- **Customer Lifecycle Management** — admin_panel_templates_admin_panel_customers [INFERRED 0.85]
- **Customer Interaction Lifecycle** — admin_panel_templates_admin_panel_customers, admin_panel_templates_admin_panel_customerNew, admin_panel_templates_admin_panel_customerRezayat [INFERRED 0.85]
- **Financial & Debt Management Flow** — admin_panel_templates_admin_panel_customerSarresid, admin_panel_templates_admin_panel_hesabdari, admin_panel_templates_admin_panel_financial_dashboard [INFERRED 0.90]
- **Settle Due Payment Flow** — admin_panel_templates_admin_panel_hesabdaricheckpassfail_html, admin_panel_url_passcheck, admin_panel_url_pardakhtnesiye [INFERRED 0.90]
- **Accounting and Billing Flow** — admin_panel_templates_admin_panel_basehesabdari, admin_panel_templates_admin_panel_bedehi, admin_panel_templates_admin_panel_hesabdariheckpass, concept_url_admin_panel_hesabdari, concept_url_admin_panel_bedehi, concept_url_admin_panel_pardakhtnesiye [INFERRED]
- **Check Clearing Flow** — admin_panel_templates_admin_panel_hesabdariresidnashode, admin_panel_views_passcheck [INFERRED]
- **Customer Management Flow** — admin_panel_templates_admin_panel_customerbase, admin_panel_templates_admin_panel_customerbasenew, admin_panel_templates_admin_panel_customeraction, admin_panel_templates_admin_panel_customerid, admin_panel_templates_admin_panel_customeridfactorbackup, concept_url_admin_panel_customers, concept_url_admin_panel_customeredit, concept_url_admin_panel_newfactor [INFERRED]
- **Nesiye Payment Flow** — admin_panel_templates_admin_panel_hesabdariresidnashode, admin_panel_urls_pardakhtnesiye [INFERRED]
- **Store and Inventory Management Flow** — admin_panel_templates_admin_panel_basestore, concept_url_admin_panel_stores, concept_url_admin_panel_productadd, concept_url_admin_panel_operations, concept_url_admin_panel_store_transfers, concept_url_admin_panel_productsjson, concept_url_panel_productmojodi [INFERRED]
## Communities (80 total, 66 thin omitted)
### Community 0 - "User Action Views"
Cohesion: 0.05
Nodes (57): User, Action, ProductCategory, ActionJson(), ActionList(), ActionListAll(), ActionListToday(), ActionListUser() (+49 more)
### Community 1 - "Inventory and Product Models"
Cohesion: 0.06
Nodes (30): ArticleType, CacheTable, PhoneNumber, Product, Meta, ProductInStore, Meta, MovementType (+22 more)
### Community 2 - "Daily Reporting Command"
Cohesion: 0.08
Nodes (15): Command, Article, Meta, Customer, Meta, Sarresid, toJalali(), remove_query_param() (+7 more)
### Community 3 - "Customer Admin Templates"
Cohesion: 0.08
Nodes (22): admin_panel/base.html, admin_panel/templates/admin_panel/customerActionInc.html, admin_panel/templates/admin_panel/customerBaseNew.html, Django Custom Tags: custom_tags, URL: admin_panel:bedehi, URL: admin_panel:bedehiKhadamat, URL: admin_panel:bedehiNasb, URL: admin_panel:customer (+14 more)
### Community 4 - "Database Schema Migrations"
Cohesion: 0.06
Nodes (16): Migration, Migration, Migration, Migration, Migration, Migration, Migration, Migration (+8 more)
### Community 5 - "Admin Panel URLs"
Cohesion: 0.06
Nodes (30): URL: admin_panel:ActionListUserToday, URL: admin_panel:entezar, URL: admin_panel:hesabdari, URL: admin_panel:hesabdari_residnashone, URL: admin_panel:index, URL: admin_panel:p_logout, URL: admin_panel:rezayat, URL: admin_panel:stores (+22 more)
### Community 7 - "Initial Database Migrations"
Cohesion: 0.09
Nodes (11): Migration, Migration, Migration, Migration, Migration, Migration, Migration, Migration (+3 more)
### Community 8 - "User Relation Migrations"
Cohesion: 0.09
Nodes (11): Migration, Migration, Migration, Migration, Migration, Migration, Migration, Migration (+3 more)
### Community 9 - "Financial and Accounting Views"
Cohesion: 0.10
Nodes (20): Customer Data Object, Factor Data Object, Sarresid Data Object, admin_panel.ViewReportMali, base.html, toCurrency, admin_panel:customerNew URL, admin_panel:pardakhtNesiye URL (+12 more)
### Community 10 - "Invoice Management Logic"
Cohesion: 0.17
Nodes (8): Factor, Meta, FactorIteam, InventoryException, newFactor(), newFactor2(), _parse_jalali_date(), _parse_timestamp()
### Community 11 - "Django Admin Configuration"
Cohesion: 0.22
Nodes (3): StoreRoomAdmin, StoreRoomOwnerInline, StoreTransferRequestAdmin
### Community 12 - "Core Application Models"
Cohesion: 0.20
Nodes (9): Customer, Factor, FactorIteam, PhoneNumber, Product, ProductCategory, ProductInStore, StoreRoom (+1 more)
### Community 15 - "Timezone-related Migrations"
Cohesion: 0.29
Nodes (3): Migration, Migration, Migration
### Community 19 - "Graphify Tooling"
Cohesion: 0.33
Nodes (5): graphify tool, graphify explain, graphify path, graphify query, graphify
## Ambiguous Edges - Review These
- `admin_panel/base.html` → `admin_panel/templates/admin_panel/baseHesabdari.html` [AMBIGUOUS]
admin_panel/templates/admin_panel/baseHesabdari.html · relation: conceptually_related_to
## Knowledge Gaps
- **84 isolated node(s):** `base.html`, `toCurrency`, `Customer Data Object`, `Factor Data Object`, `admin_panel:customerNew URL` (+79 more)
These have ≤1 connection - possible missing edges or undocumented components. (Counts symbols only; 276 node(s) total have ≤1 connection when file, concept and rationale nodes are included.)
- **66 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 `passCheck()` connect `Financial and Accounting Views` to `User Action Views`, `Daily Reporting Command`?**
_High betweenness centrality (0.208) - this node is a cross-community bridge._
- **Are the 20 inferred relationships involving `StoreRoom` (e.g. with `User` and `approve_transfer_request()`) actually correct?**
_`StoreRoom` has 20 INFERRED edges - model-reasoned connections that need verification._
- **What connects `base.html`, `toCurrency`, `Customer Data Object` to the rest of the system?**
_84 weakly-connected nodes found - possible documentation gaps or missing edges._
- **Should `User Action Views` be split into smaller, more focused modules?**
_Cohesion score 0.053728949478749 - nodes in this community are weakly interconnected._
- **Why does `admin_panel/base.html` connect `Customer Admin Templates` to `Financial and Accounting Views`, `Admin Panel URLs`?**
_High betweenness centrality (0.194) - this node is a cross-community bridge._
- **Are the 14 inferred relationships involving `ProductInStore` (e.g. with `Command` and `approve_transfer_request()`) actually correct?**
_`ProductInStore` has 14 INFERRED edges - model-reasoned connections that need verification._
### Low-confidence Hints
_AMBIGUOUS edges — the extractor was unsure. Verify before acting on these._
- **What is the exact relationship between `admin_panel/base.html` and `admin_panel/templates/admin_panel/baseHesabdari.html`?**
_Edge tagged AMBIGUOUS (relation: conceptually_related_to) - confidence is low._
+360
View File
@@ -0,0 +1,360 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>graphify - graphify-out/graph.html</title>
<script src="https://unpkg.com/vis-network@9.1.6/standalone/umd/vis-network.min.js"
integrity="sha384-Ux6phic9PEHJ38YtrijhkzyJ8yQlH8i/+buBR8s3mAZOJrP1gwyvAcIYl3GWtpX1"
crossorigin="anonymous"></script>
<style>
* { box-sizing: border-box; margin: 0; padding: 0; }
body { background: #0f0f1a; color: #e0e0e0; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif; display: flex; height: 100vh; overflow: hidden; }
#graph { flex: 1; }
#sidebar { width: 280px; background: #1a1a2e; border-left: 1px solid #2a2a4e; display: flex; flex-direction: column; overflow: hidden; }
#search-wrap { padding: 12px; border-bottom: 1px solid #2a2a4e; }
#search { width: 100%; background: #0f0f1a; border: 1px solid #3a3a5e; color: #e0e0e0; padding: 7px 10px; border-radius: 6px; font-size: 13px; outline: none; }
#search:focus { border-color: #4E79A7; }
#search-results { max-height: 140px; overflow-y: auto; padding: 4px 12px; border-bottom: 1px solid #2a2a4e; display: none; }
.search-item { padding: 4px 6px; cursor: pointer; border-radius: 4px; font-size: 12px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.search-item:hover { background: #2a2a4e; }
#info-panel { padding: 14px; border-bottom: 1px solid #2a2a4e; min-height: 140px; }
#info-panel h3 { font-size: 13px; color: #aaa; margin-bottom: 8px; text-transform: uppercase; letter-spacing: 0.05em; }
#info-content { font-size: 13px; color: #ccc; line-height: 1.6; }
#info-content .field { margin-bottom: 5px; }
#info-content .field b { color: #e0e0e0; }
#info-content .empty { color: #555; font-style: italic; }
.neighbor-link { display: block; padding: 2px 6px; margin: 2px 0; border-radius: 3px; cursor: pointer; font-size: 12px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; border-left: 3px solid #333; }
.neighbor-link:hover { background: #2a2a4e; }
#neighbors-list { max-height: 160px; overflow-y: auto; margin-top: 4px; }
#legend-wrap { flex: 1; overflow-y: auto; padding: 12px; }
#legend-wrap h3 { font-size: 13px; color: #aaa; margin-bottom: 10px; text-transform: uppercase; letter-spacing: 0.05em; }
.legend-item { display: flex; align-items: center; gap: 8px; padding: 4px 0; cursor: pointer; border-radius: 4px; font-size: 12px; }
.legend-item:hover { background: #2a2a4e; padding-left: 4px; }
.legend-item.dimmed { opacity: 0.35; }
.legend-dot { width: 12px; height: 12px; border-radius: 50%; flex-shrink: 0; }
.legend-label { flex: 1; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.legend-count { color: #666; font-size: 11px; }
#stats { padding: 10px 14px; border-top: 1px solid #2a2a4e; font-size: 11px; color: #555; }
#legend-controls { display: flex; align-items: center; gap: 8px; margin-bottom: 8px; padding: 4px 0; }
#legend-controls label { display: flex; align-items: center; gap: 6px; cursor: pointer; font-size: 12px; color: #aaa; user-select: none; }
#legend-controls label:hover { color: #e0e0e0; }
.legend-cb, #select-all-cb { appearance: none; -webkit-appearance: none; width: 14px; height: 14px; border: 1.5px solid #3a3a5e; border-radius: 3px; background: #0f0f1a; cursor: pointer; position: relative; flex-shrink: 0; }
.legend-cb:checked, #select-all-cb:checked { background: #4E79A7; border-color: #4E79A7; }
.legend-cb:checked::after, #select-all-cb:checked::after { content: ''; position: absolute; left: 3.5px; top: 1px; width: 4px; height: 7px; border: solid #fff; border-width: 0 2px 2px 0; transform: rotate(45deg); }
#select-all-cb:indeterminate { background: #4E79A7; border-color: #4E79A7; }
#select-all-cb:indeterminate::after { content: ''; position: absolute; left: 2px; top: 5px; width: 8px; height: 2px; background: #fff; border: none; transform: none; }
</style>
</head>
<body>
<div id="graph"></div>
<div id="sidebar">
<div id="search-wrap">
<input id="search" type="text" placeholder="Search nodes..." autocomplete="off">
<div id="search-results"></div>
</div>
<div id="info-panel">
<h3>Node Info</h3>
<div id="info-content"><span class="empty">Click a node to inspect it</span></div>
</div>
<div id="legend-wrap">
<h3>Communities</h3>
<div id="legend-controls">
<label><input type="checkbox" id="select-all-cb" checked onchange="toggleAllCommunities(!this.checked)">Select All</label>
</div>
<div id="legend"></div>
</div>
<div id="stats">548 nodes &middot; 887 edges &middot; 80 communities</div>
</div>
<script>
const RAW_NODES = [{"id": "admin_models_user", "label": "User", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 15.5, "font": {"size": 12, "color": "#ffffff"}, "title": "User", "community": 0, "community_name": "User Action Views", "source_file": "admin/models.py", "file_type": "code", "degree": 21}, {"id": "admin_panel_models_action", "label": "Action", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 15.2, "font": {"size": 12, "color": "#ffffff"}, "title": "Action", "community": 0, "community_name": "User Action Views", "source_file": "admin_panel/models.py", "file_type": "code", "degree": 20}, {"id": "admin_panel_models_productcategory", "label": "ProductCategory", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 13.7, "font": {"size": 0, "color": "#ffffff"}, "title": "ProductCategory", "community": 0, "community_name": "User Action Views", "source_file": "admin_panel/models.py", "file_type": "code", "degree": 14}, {"id": "admin_panel_models_articletype", "label": "ArticleType", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 10.3, "font": {"size": 0, "color": "#ffffff"}, "title": "ArticleType", "community": 1, "community_name": "Inventory and Product Models", "source_file": "admin_panel/models.py", "file_type": "code", "degree": 1}, {"id": "admin_panel_models_cachetable", "label": "CacheTable", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "CacheTable", "community": 1, "community_name": "Inventory and Product Models", "source_file": "admin_panel/models.py", "file_type": "code", "degree": 2}, {"id": "admin_panel_models_phonenumber", "label": "PhoneNumber", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "PhoneNumber", "community": 1, "community_name": "Inventory and Product Models", "source_file": "admin_panel/models.py", "file_type": "code", "degree": 2}, {"id": "admin_panel_models_productstockhistory", "label": "ProductStockHistory", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": "ProductStockHistory", "community": 1, "community_name": "Inventory and Product Models", "source_file": "admin_panel/models.py", "file_type": "code", "degree": 3}, {"id": "admin_panel_models_productstockhistory_meta", "label": "Meta", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 10.3, "font": {"size": 0, "color": "#ffffff"}, "title": "Meta", "community": 1, "community_name": "Inventory and Product Models", "source_file": "admin_panel/models.py", "file_type": "code", "degree": 1}, {"id": "admin_panel_models_storeroomowner", "label": "StoreRoomOwner", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": "StoreRoomOwner", "community": 1, "community_name": "Inventory and Product Models", "source_file": "admin_panel/models.py", "file_type": "code", "degree": 3}, {"id": "admin_panel_models_userprofile", "label": "UserProfile", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": "UserProfile", "community": 1, "community_name": "Inventory and Product Models", "source_file": "admin_panel/models.py", "file_type": "code", "degree": 3}, {"id": "admin_panel_models_visitqueue", "label": "VisitQueue", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "VisitQueue", "community": 1, "community_name": "Inventory and Product Models", "source_file": "admin_panel/models.py", "file_type": "code", "degree": 2}, {"id": "admin_panel_models_product", "label": "Product", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 14.7, "font": {"size": 12, "color": "#ffffff"}, "title": "Product", "community": 1, "community_name": "Inventory and Product Models", "source_file": "admin_panel/models.py", "file_type": "code", "degree": 18}, {"id": "admin_panel_models_product_meta", "label": "Meta", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 10.3, "Line truncated
const RAW_EDGES = [{"from": "admin_models", "to": "admin_models_user", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "admin_panel_models_action", "to": "admin_models_user", "label": "uses", "title": "uses [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "admin_panel_models_factor", "to": "admin_models_user", "label": "uses", "title": "uses [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "admin_panel_models_storeroom", "to": "admin_models_user", "label": "uses", "title": "uses [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "admin_panel_models_storeroomowner", "to": "admin_models_user", "label": "uses", "title": "uses [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "admin_panel_models_storetransferrequest", "to": "admin_models_user", "label": "uses", "title": "uses [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "admin_panel_models_userprofile", "to": "admin_models_user", "label": "uses", "title": "uses [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "admin_panel_models_visitqueue", "to": "admin_models_user", "label": "uses", "title": "uses [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "admin_panel_views_actionlist", "to": "admin_models_user", "label": "uses", "title": "uses [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "admin_panel_views_actionlistall", "to": "admin_models_user", "label": "uses", "title": "uses [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "admin_panel_views_actionlisttoday", "to": "admin_models_user", "label": "uses", "title": "uses [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "admin_panel_views_actionlistuser", "to": "admin_models_user", "label": "uses", "title": "uses [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "admin_panel_views_actionlistusertoday", "to": "admin_models_user", "label": "uses", "title": "uses [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "admin_panel_views_customeraction", "to": "admin_models_user", "label": "uses", "title": "uses [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "admin_panel_views_customereditaction", "to": "admin_models_user", "label": "uses", "title": "uses [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "admin_panel_views_customernazar", "to": "admin_models_user", "label": "uses", "title": "uses [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "admin_panel_views_customernewaction", "to": "admin_models_user", "label": "uses", "title": "uses [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "admin_panel_views_inventory_movements_report", "to": "admin_models_user", "label": "uses", "title": "uses [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "admin_panel_views_newfactor", "to": "admin_models_user", "label": "uses", "title": "uses [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "admin_panel_views_report", "to": "admin_models_user", "label": "uses", "title": "uses [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "admin_panel_views_rezayat_dashboard", "to": "admin_models_user", "label": "uses", "title": "uses [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "admin_panel_management_commands_send_daily_report", "to": "admin_panel_models_action", "label": "imports", "title": "imports [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "admin_panel_management_commands_send_daily_report_command", "to": "admin_panel_models_action", "label": "uses", "title": "uses [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "admin_panel_models", "to": "admin_panel_models_action", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "admin_panel_views", "to": "admin_panel_models_action", "label": "imports", "title": "imports [EXTRACTED]", "dashes":Line truncated
const LEGEND = [{"cid": 0, "color": "#4E79A7", "label": "User Action Views", "count": 87}, {"cid": 1, "color": "#F28E2B", "label": "Inventory and Product Models", "count": 60}, {"cid": 2, "color": "#E15759", "label": "Daily Reporting Command", "count": 45}, {"cid": 3, "color": "#76B7B2", "label": "Customer Admin Templates", "count": 34}, {"cid": 4, "color": "#59A14F", "label": "Database Schema Migrations", "count": 33}, {"cid": 5, "color": "#EDC948", "label": "Admin Panel URLs", "count": 33}, {"cid": 6, "color": "#B07AA1", "label": "Database Backup Command", "count": 27}, {"cid": 7, "color": "#FF9DA7", "label": "Initial Database Migrations", "count": 23}, {"cid": 8, "color": "#9C755F", "label": "User Relation Migrations", "count": 23}, {"cid": 9, "color": "#BAB0AC", "label": "Financial and Accounting Views", "count": 22}, {"cid": 10, "color": "#4E79A7", "label": "Invoice Management Logic", "count": 13}, {"cid": 11, "color": "#F28E2B", "label": "Django Admin Configuration", "count": 10}, {"cid": 12, "color": "#E15759", "label": "Core Application Models", "count": 10}, {"cid": 13, "color": "#76B7B2", "label": "Resource Cleanup Command", "count": 10}, {"cid": 14, "color": "#59A14F", "label": "Django App Configurations", "count": 7}, {"cid": 15, "color": "#EDC948", "label": "Timezone-related Migrations", "count": 7}, {"cid": 16, "color": "#B07AA1", "label": "Application Entrypoint Scripts", "count": 7}, {"cid": 17, "color": "#FF9DA7", "label": "Core Admin App", "count": 6}, {"cid": 18, "color": "#9C755F", "label": "Project URL Configuration", "count": 6}, {"cid": 19, "color": "#BAB0AC", "label": "Graphify Tooling", "count": 6}, {"cid": 20, "color": "#4E79A7", "label": "Data Validation Migration", "count": 3}, {"cid": 21, "color": "#F28E2B", "label": "Application Tests", "count": 3}, {"cid": 22, "color": "#E15759", "label": "Database Schema Migration", "count": 2}, {"cid": 23, "color": "#76B7B2", "label": "Database Schema Migration", "count": 2}, {"cid": 24, "color": "#59A14F", "label": "Remove StoreRoom User Relation", "count": 2}, {"cid": 25, "color": "#EDC948", "label": "Database Schema Migration", "count": 2}, {"cid": 26, "color": "#B07AA1", "label": "Add Action Type Field", "count": 2}, {"cid": 27, "color": "#FF9DA7", "label": "Add Action Grade Field", "count": 2}, {"cid": 28, "color": "#9C755F", "label": "Database Schema Migration", "count": 2}, {"cid": 29, "color": "#BAB0AC", "label": "Add Article Payment Status", "count": 2}, {"cid": 30, "color": "#4E79A7", "label": "Add Article Payment Method", "count": 2}, {"cid": 31, "color": "#F28E2B", "label": "Add Customer Last Visit", "count": 2}, {"cid": 32, "color": "#E15759", "label": "Database Schema Migration", "count": 2}, {"cid": 33, "color": "#76B7B2", "label": "Add Sarresid Description", "count": 2}, {"cid": 34, "color": "#59A14F", "label": "Update ProductInStore Options", "count": 2}, {"cid": 35, "color": "#EDC948", "label": "Update ProductInStore Options", "count": 2}, {"cid": 36, "color": "#B07AA1", "label": "AI Tooling Documentation", "count": 2}, {"cid": 37, "color": "#FF9DA7", "label": "Admin Migrations Package", "count": 1}, {"cid": 38, "color": "#9C755F", "label": "Customer Action Partial", "count": 1}, {"cid": 39, "color": "#BAB0AC", "label": "New Customer Base Template", "count": 1}, {"cid": 40, "color": "#4E79A7", "label": "Customer Feedback Partial", "count": 1}, {"cid": 41, "color": "#F28E2B", "label": "Customer Invoice Detail", "count": 1}, {"cid": 42, "color": "#E15759", "label": "Customer Accounting Template", "count": 1}, {"cid": 43, "color": "#76B7B2", "label": "Customer Invoice List", "count": 1}, {"cid": 44, "color": "#59A14F", "label": "Customer Feedback Page", "count": 1}, {"cid": 45, "color": "#EDC948", "label": "Management Commands Package", "count": 1}, {"cid": 46, "color": "#B07AA1", "label": "Management Package", "count": 1}, {"cid": 47, "color": "#FF9DA7", "label": "Admin Panel Migrations Package", "count": 1}, {"cid": 48, "color": "#9C755F", "label": "Action List Template", "count": 1}, {"cid": 49, "color": "#BAB0AC", "label": "New Customer Invoice Page", "count": 1}, {"cid": 50, "color": "#4E79A7", "label": "New Customer Invoice V2", "count": 1}, {"cid": 51, "color": "#F28E2B", "label": "Customer Satisfaction List", "count": 1}, {"cid": 52, "color": "#E15759", "label": "Customer Satisfaction Partial", "count": 1}, {"cid": 53, "color": "#76B7B2", "label": "Customer Debt Management", "count": 1}, {"cid": 54, "color": "#59A14F", "label": "Customer List Page", "count": 1}, {"cid": 55, "color": "#EDC948", "label": "Customer List Backup Template", "count": 1}, {"cid": 56, "color": "#B07AA1", "label": "Waiting List Backup Template", "count": 1}, {"cid": 57, "color": "#FF9DA7", "label": "Financial Dashboard", "count": 1}, {"cid": 58, "color": "#9C755F", "label": "Accounting Main View", "count": 1}, {"cid": 59, "color": "#BAB0AC", "label": "Admin Panel Index Page", "count": 1}, {"cid": 60, "color": "#4E79A7", "label": "New Inventory Line truncated
// HTML-escape helper — prevents XSS when injecting graph data into innerHTML
function esc(s) {
return String(s).replace(/&/g,'&amp;').replace(/</g,'&lt;').replace(/>/g,'&gt;').replace(/"/g,'&quot;').replace(/'/g,'&#39;');
}
// Build vis datasets
const nodesDS = new vis.DataSet(RAW_NODES.map((n, i) => ({
id: n.id, label: n.label, color: n.color, size: n.size,
font: n.font, title: n.title,
// Fermat/golden-angle spiral seed positions (#3699): spreading nodes out
// before physics runs keeps avoidOverlap from computing near-zero-distance
// repulsion that blows the BarnesHut recursion into a stack overflow on large
// graphs. `i` is the map index — physics still settles small graphs identically.
x: 30 * Math.sqrt(i) * Math.cos(i * 2.4),
y: 30 * Math.sqrt(i) * Math.sin(i * 2.4),
community: n.community, community_name: n.community_name,
source_file: n.source_file, file_type: n.file_type, degree: n.degree,
member_count: n.member_count,
})));
const edgesDS = new vis.DataSet(RAW_EDGES.map((e, i) => ({
id: i, from: e.from, to: e.to,
label: '',
title: e.title,
dashes: e.dashes,
width: e.width,
color: e.color,
arrows: { to: { enabled: true, scaleFactor: 0.5 } },
})));
const container = document.getElementById('graph');
const network = new vis.Network(container, { nodes: nodesDS, edges: edgesDS }, {
physics: {
enabled: true,
solver: 'forceAtlas2Based',
forceAtlas2Based: {
gravitationalConstant: -60,
centralGravity: 0.005,
springLength: 120,
springConstant: 0.08,
damping: 0.4,
avoidOverlap: 0.8,
},
stabilization: { iterations: 200, fit: true },
},
interaction: {
hover: true,
tooltipDelay: 100,
hideEdgesOnDrag: true,
navigationButtons: false,
keyboard: false,
},
nodes: { shape: 'dot', borderWidth: 1.5 },
edges: { smooth: { type: 'continuous', roundness: 0.2 }, selectionWidth: 3 },
});
network.once('stabilizationIterationsDone', () => {
network.setOptions({ physics: { enabled: false } });
});
function showInfo(nodeId) {
const n = nodesDS.get(nodeId);
if (!n) return;
const neighborIds = network.getConnectedNodes(nodeId);
const neighborItems = neighborIds.map(nid => {
const nb = nodesDS.get(nid);
const color = nb ? nb.color.background : '#555';
return `<span class="neighbor-link" style="border-left-color:${esc(color)}" data-nid="${esc(nid)}">${esc(nb ? nb.label : nid)}</span>`;
}).join('');
const isMetaNode = !n.file_type && !n.source_file;
let html = `<div class="field"><b>${esc(n.label)}</b></div>`;
if (!isMetaNode) {
html += `<div class="field">Type: ${esc(n.file_type || 'unknown')}</div>`;
}
html += `<div class="field">Community: ${esc(n.community_name || '')}</div>`;
if (!isMetaNode) {
html += `<div class="field">Source: ${esc(n.source_file || '-')}</div>`;
} else if (n.member_count !== undefined && n.member_count !== null) {
html += `<div class="field">Members: ${esc(n.member_count)}</div>`;
}
html += `<div class="field">Degree: ${n.degree}</div>`;
if (neighborIds.length) {
html += `<div class="field" style="margin-top:8px;color:#aaa;font-size:11px">Neighbors (${neighborIds.length})</div><div id="neighbors-list">${neighborItems}</div>`;
}
document.getElementById('info-content').innerHTML = html;
}
function focusNode(nodeId) {
network.focus(nodeId, { scale: 1.4, animation: true });
network.selectNodes([nodeId]);
showInfo(nodeId);
}
// Neighbor links use a data attribute + one delegated listener rather than an
// inline onclick. A node id/label sourced from a document or a scraped URL
// (graphify add) can contain a double-quote; dropping the stringified id
// unescaped into a quoted onclick both broke every link and allowed a hostile
// source to inject an event handler into the local report (stored XSS, #1838).
// esc() on data-nid keeps the value inside the attribute; the listener reads it
// back verbatim. Bound to document so it survives the innerHTML rebuild that
// recreates #neighbors-list on each showInfo().
document.addEventListener('click', e => {
const el = e.target.closest('.neighbor-link');
if (el && el.dataset.nid !== undefined) focusNode(el.dataset.nid);
});
// Track hovered node — hover detection is more reliable than click params
let hoveredNodeId = null;
network.on('hoverNode', params => {
hoveredNodeId = params.node;
container.style.cursor = 'pointer';
});
network.on('blurNode', () => {
hoveredNodeId = null;
container.style.cursor = 'default';
});
container.addEventListener('click', () => {
if (hoveredNodeId !== null) {
showInfo(hoveredNodeId);
network.selectNodes([hoveredNodeId]);
}
});
network.on('click', params => {
if (params.nodes.length > 0) {
showInfo(params.nodes[0]);
} else if (hoveredNodeId === null) {
document.getElementById('info-content').innerHTML = '<span class="empty">Click a node to inspect it</span>';
}
});
const searchInput = document.getElementById('search');
const searchResults = document.getElementById('search-results');
searchInput.addEventListener('input', () => {
const q = searchInput.value.toLowerCase().trim();
searchResults.innerHTML = '';
if (!q) { searchResults.style.display = 'none'; return; }
const matches = RAW_NODES.filter(n => n.label.toLowerCase().includes(q)).slice(0, 20);
if (!matches.length) { searchResults.style.display = 'none'; return; }
searchResults.style.display = 'block';
matches.forEach(n => {
const el = document.createElement('div');
el.className = 'search-item';
el.textContent = n.label;
el.style.borderLeft = `3px solid ${n.color.background}`;
el.style.paddingLeft = '8px';
el.onclick = () => {
network.focus(n.id, { scale: 1.5, animation: true });
network.selectNodes([n.id]);
showInfo(n.id);
searchResults.style.display = 'none';
searchInput.value = '';
};
searchResults.appendChild(el);
});
});
document.addEventListener('click', e => {
if (!searchResults.contains(e.target) && e.target !== searchInput)
searchResults.style.display = 'none';
});
const hiddenCommunities = new Set();
const selectAllCb = document.getElementById('select-all-cb');
function updateSelectAllState() {
const total = LEGEND.length;
const hidden = hiddenCommunities.size;
selectAllCb.checked = hidden === 0;
selectAllCb.indeterminate = hidden > 0 && hidden < total;
}
function toggleAllCommunities(hide) {
document.querySelectorAll('.legend-item').forEach(item => {
hide ? item.classList.add('dimmed') : item.classList.remove('dimmed');
});
document.querySelectorAll('.legend-cb').forEach(cb => {
cb.checked = !hide;
});
LEGEND.forEach(c => {
if (hide) hiddenCommunities.add(c.cid); else hiddenCommunities.delete(c.cid);
});
const updates = RAW_NODES.map(n => ({ id: n.id, hidden: hide }));
nodesDS.update(updates);
updateSelectAllState();
}
const legendEl = document.getElementById('legend');
LEGEND.forEach(c => {
const item = document.createElement('div');
item.className = 'legend-item';
const cb = document.createElement('input');
cb.type = 'checkbox';
cb.className = 'legend-cb';
cb.checked = true;
cb.addEventListener('change', (e) => {
e.stopPropagation();
if (cb.checked) {
hiddenCommunities.delete(c.cid);
item.classList.remove('dimmed');
} else {
hiddenCommunities.add(c.cid);
item.classList.add('dimmed');
}
const updates = RAW_NODES
.filter(n => n.community === c.cid)
.map(n => ({ id: n.id, hidden: !cb.checked }));
nodesDS.update(updates);
updateSelectAllState();
});
item.innerHTML = `<div class="legend-dot" style="background:${c.color}"></div>
<span class="legend-label">${c.label}</span>
<span class="legend-count">${c.count}</span>`;
item.prepend(cb);
item.onclick = (e) => {
if (e.target === cb) return;
cb.checked = !cb.checked;
cb.dispatchEvent(new Event('change'));
};
legendEl.appendChild(item);
});
</script>
<script>
// Render hyperedges as shaded regions
const hyperedges = [{"id": "customer_retention_flow", "label": "Customer Satisfaction & Collection", "nodes": ["admin_panel_templates_admin_panel_report_rezayat", "admin_panel_templates_admin_panel_report_debtors_no_vosol", "admin_panel_customer_customernazarinc"], "relation": "participate_in", "confidence": "EXTRACTED", "confidence_score": 0.9}, {"id": "customer_management_flow", "label": "Customer Management Flow", "nodes": ["admin_panel_customer_base_new", "admin_panel_customer_action_inc", "admin_panel_customer_id_factor", "admin_panel_customer_hesabdari"], "relation": "participate_in", "confidence": "EXTRACTED", "confidence_score": 1.0}, {"id": "financial_management_flow", "label": "Financial & Debt Management", "nodes": ["admin_panel_templates_admin_panel_financial_dashboard", "admin_panel_templates_admin_panel_hesabdari"], "relation": "participate_in", "confidence": "EXTRACTED", "confidence_score": 1.0}, {"id": "inventory_management_flow", "label": "Inventory Management System", "nodes": ["admin_panel_templates_admin_panel_store", "admin_panel_templates_admin_panel_store_transfers", "admin_panel_templates_admin_panel_report_inventory_movements", "admin_panel_templates_admin_panel_operationsbk"], "relation": "participate_in", "confidence": "EXTRACTED", "confidence_score": 1.0}, {"id": "login_form", "label": "Login Form", "nodes": ["admin_panel_templates_admin_panel_login", "django_url_admin_panel_p_login", "django_csrf_token", "form_field_username", "form_field_password"], "relation": "form", "confidence": "EXTRACTED", "source_file": "admin_panel/templates/admin_panel/login.html"}, {"id": "new_store_form", "label": "New Store Form", "nodes": ["admin_panel_templates_admin_panel_storebk1", "django_url_admin_panel_newstore", "django_csrf_token", "form_field_storename"], "relation": "form", "confidence": "EXTRACTED", "source_file": "admin_panel/templates/admin_panel/storeBK1.html"}, {"id": "store_inventory_display", "label": "Store Inventory Display", "nodes": ["admin_panel_templates_admin_panel_storebk1", "template_variable_productsum", "product_property_product_name", "product_property_mojodi"], "relation": "participate_in", "confidence": "EXTRACTED", "source_file": "admin_panel/templates/admin_panel/storeBK1.html"}, {"id": "customer_interaction_flow", "label": "Customer Lifecycle Management", "nodes": ["admin_panel_templates_admin_panel_customers"], "relation": "participate_in", "confidence": "INFERRED", "confidence_score": 0.85}, {"id": "customer_lifecycle_management", "label": "Customer Interaction Lifecycle", "nodes": ["admin_panel_templates_admin_panel_customers", "admin_panel_templates_admin_panel_customerNew", "admin_panel_templates_admin_panel_customerRezayat"], "relation": "form", "confidence": "INFERRED", "confidence_score": 0.85, "source_file": "admin_panel/templates/admin_panel/customers.html"}, {"id": "financial_management_flow", "label": "Financial & Debt Management Flow", "nodes": ["admin_panel_templates_admin_panel_customerSarresid", "admin_panel_templates_admin_panel_hesabdari", "admin_panel_templates_admin_panel_financial_dashboard"], "relation": "participate_in", "confidence": "INFERRED", "confidence_score": 0.9, "source_file": "admin_panel/templates/admin_panel/financial_dashboard.html"}, {"id": "settle_due_payment_flow", "label": "Settle Due Payment Flow", "nodes": ["admin_panel_templates_admin_panel_hesabdaricheckpassfail_html", "admin_panel_url_passcheck", "admin_panel_url_pardakhtnesiye"], "relation": "participate_in", "confidence": "INFERRED", "confidence_score": 0.9, "source_file": "admin_panel/templates/admin_panel/hesabdariCheckPassFail.html"}, {"id": "accounting_flow", "label": "Accounting and Billing Flow", "nodes": ["admin_panel_templates_admin_panel_basehesabdari", "admin_panel_templates_admin_panel_bedehi", "admin_panel_templates_admin_panel_hesabdariheckpass", "concept_url_admin_panel_hesabdari", "concept_url_admin_panel_bedehi", "concept_url_admin_panel_pardakhtnesiye"], "relation": "participate_in", "confidence": "INFERRED", "source_file": "admin_panel/templates/admin_panel/baseHesabdari.html"}, {"id": "check_clearing_flow", "label": "Check Clearing Flow", "nodes": ["admin_panel_templates_admin_panel_hesabdariresidnashode", "admin_panel_views_passcheck"], "relation": "participate_in", "confidence": "INFERRED", "source_file": "admin_panel/templates/admin_panel/hesabdariResidNashode.html"}, {"id": "customer_management_flow", "label": "Customer Management Flow", "nodes": ["admin_panel_templates_admin_panel_customerbase", "admin_panel_templates_admin_panel_customerbasenew", "admin_panel_templates_admin_panel_customeraction", "admin_panel_templates_admin_panel_customerid", "admin_panel_templates_admin_panel_customeridfactorbackup", "concept_url_admin_panel_customers", "concept_url_admin_panel_customeredit", "concept_url_admin_panel_newfactor"], "relation": "participate_in", "confidence": "INFERRED", "source_file": "admin_panel/templates/admin_panel/customerBase.html"}, {"Line truncated
// afterDrawing passes ctx already transformed to network coordinate space.
// Draw node positions raw — no manual pan/zoom/DPR math needed.
// Andrew's monotone chain. Returns the hull in counter-clockwise order, which
// is what the perimeter must be traced in. Collinear and duplicate points
// collapse to the extremes, so degenerate member sets render as a segment
// rather than a zero-area crossed path.
function convexHull(pts) {
const p = pts.slice().sort((a, b) => (a.x - b.x) || (a.y - b.y));
if (p.length < 3) return p;
const cross = (o, a, b) => (a.x - o.x) * (b.y - o.y) - (a.y - o.y) * (b.x - o.x);
const build = seq => {
const out = [];
for (const q of seq) {
while (out.length >= 2 && cross(out[out.length - 2], out[out.length - 1], q) <= 0) out.pop();
out.push(q);
}
out.pop();
return out;
};
const hull = build(p).concat(build(p.slice().reverse()));
return hull.length >= 3 ? hull : p;
}
network.on('afterDrawing', function(ctx) {
hyperedges.forEach(h => {
const positions = h.nodes
.map(nid => network.getPositions([nid])[nid])
.filter(p => p !== undefined);
if (positions.length < 2) return;
ctx.save();
ctx.globalAlpha = 0.12;
ctx.fillStyle = '#6366f1';
ctx.strokeStyle = '#6366f1';
ctx.lineWidth = 2;
ctx.beginPath();
// Centroid and expanded hull in network coordinates.
// The perimeter must follow hull order, not h.nodes order: tracing the
// raw member order self-intersects whenever the layout does not happen
// to place members in angular order, filling as crossed wedges.
const cx = positions.reduce((s, p) => s + p.x, 0) / positions.length;
const cy = positions.reduce((s, p) => s + p.y, 0) / positions.length;
const hull = convexHull(positions);
const expanded = hull.map(p => ({
x: cx + (p.x - cx) * 1.15,
y: cy + (p.y - cy) * 1.15
}));
ctx.moveTo(expanded[0].x, expanded[0].y);
expanded.slice(1).forEach(p => ctx.lineTo(p.x, p.y));
ctx.closePath();
ctx.fill();
ctx.globalAlpha = 0.4;
ctx.stroke();
// Label
ctx.globalAlpha = 0.8;
ctx.fillStyle = '#4f46e5';
ctx.font = 'bold 11px sans-serif';
ctx.textAlign = 'center';
ctx.fillText(h.label, cx, cy - 5);
ctx.restore();
});
});
</script>
</body>
</html>
File diff suppressed because it is too large. Load diff
+890
View File
@@ -0,0 +1,890 @@
{
".gemini/settings.json": {
"mtime": 1791551505.4245954,
"seen": 1791552045.91651,
"ast_hash": "5381fe51a877fa6d2641ad3a87ae7ee1",
"semantic_hash": "5381fe51a877fa6d2641ad3a87ae7ee1"
},
".opencode/opencode.json": {
"mtime": 1791551506.0350895,
"seen": 1791552045.91651,
"ast_hash": "f2ae21510d07365eb2bce8159272c7a0",
"semantic_hash": "f2ae21510d07365eb2bce8159272c7a0"
},
"admin/__init__.py": {
"mtime": 1650778147.0,
"seen": 1791552045.91651,
"ast_hash": "d41d8cd98f00b204e9800998ecf8427e",
"semantic_hash": "d41d8cd98f00b204e9800998ecf8427e"
},
"admin/admin.py": {
"mtime": 1650778147.0,
"seen": 1791552045.91651,
"ast_hash": "ef4c241c5311eee11a93e9366f492a72",
"semantic_hash": "ef4c241c5311eee11a93e9366f492a72"
},
"admin/apps.py": {
"mtime": 1650778147.0,
"seen": 1791552045.91651,
"ast_hash": "8b3d9eda5e9ce46986255783cb994a6c",
"semantic_hash": "8b3d9eda5e9ce46986255783cb994a6c"
},
"admin/migrations/__init__.py": {
"mtime": 1650778147.0,
"seen": 1791552045.91651,
"ast_hash": "d41d8cd98f00b204e9800998ecf8427e",
"semantic_hash": "d41d8cd98f00b204e9800998ecf8427e"
},
"admin/models.py": {
"mtime": 1650778147.0,
"seen": 1791552045.91651,
"ast_hash": "335dbbbd9bec5b785bb826dbf6ccc8c9",
"semantic_hash": "335dbbbd9bec5b785bb826dbf6ccc8c9"
},
"admin/tests.py": {
"mtime": 1650778147.0,
"seen": 1791552045.91651,
"ast_hash": "e08f0582500f6562bf0a931ef9503b39",
"semantic_hash": "e08f0582500f6562bf0a931ef9503b39"
},
"admin/urls.py": {
"mtime": 1650778147.0,
"seen": 1791552045.91651,
"ast_hash": "9fab312930c17e4fb8e2293ef4cf1f1b",
"semantic_hash": "9fab312930c17e4fb8e2293ef4cf1f1b"
},
"admin/views.py": {
"mtime": 1650778147.0,
"seen": 1791552045.91651,
"ast_hash": "65e892f735b878955bb7face4f3a15f7",
"semantic_hash": "65e892f735b878955bb7face4f3a15f7"
},
"admin_panel/__init__.py": {
"mtime": 1650778147.0,
"seen": 1791552045.91651,
"ast_hash": "d41d8cd98f00b204e9800998ecf8427e",
"semantic_hash": "d41d8cd98f00b204e9800998ecf8427e"
},
"admin_panel/admin.py": {
"mtime": 1783247518.769521,
"seen": 1791552045.91651,
"ast_hash": "9bf27d273cdeaf40f7f82d818318fa28",
"semantic_hash": "9bf27d273cdeaf40f7f82d818318fa28"
},
"admin_panel/apps.py": {
"mtime": 1650778147.0,
"seen": 1791552045.91651,
"ast_hash": "7b45752661a9c60826cd3b3cb648f7b9",
"semantic_hash": "7b45752661a9c60826cd3b3cb648f7b9"
},
"admin_panel/context_processor.py": {
"mtime": 1785506207.060478,
"seen": 1791552045.91651,
"ast_hash": "a9bc61278ecd5950347b24fd8438583b",
"semantic_hash": "a9bc61278ecd5950347b24fd8438583b"
},
"admin_panel/management/__init__.py": {
"mtime": 1782242229.7079034,
"seen": 1791552045.91651,
"ast_hash": "d41d8cd98f00b204e9800998ecf8427e",
"semantic_hash": "d41d8cd98f00b204e9800998ecf8427e"
},
"admin_panel/management/commands/__init__.py": {
"mtime": 1782242229.7079034,
"seen": 1791552045.91651,
"ast_hash": "d41d8cd98f00b204e9800998ecf8427e",
"semantic_hash": "d41d8cd98f00b204e9800998ecf8427e"
},
"admin_panel/management/commands/gt_esh.py": {
"mtime": 1782311882.9799201,
"seen": 1791552045.91651,
"ast_hash": "a93adc1bf01ae69281bc8736f254f7cc",
"semantic_hash": "a93adc1bf01ae69281bc8736f254f7cc"
},
"admin_panel/management/commands/send_daily_report.py": {
"mtime": 1787309060.0288901,
"seen": 1791552045.91651,
"ast_hash": "acb098dbb2d4f61659f7d291b8ababbb",
"semantic_hash": "acb098dbb2d4f61659f7d291b8ababbb"
},
"admin_panel/management/commands/sqlite_db_backup.py": {
"mtime": 1782242044.4963484,
"seen": 1791552045.91651,
"ast_hash": "03685ea937f847e6665a40f6cf482121",
"semantic_hash": "03685ea937f847e6665a40f6cf482121"
},
"admin_panel/migrations/0001_initial.py": {
"mtime": 1650778147.0,
"seen": 1791552045.91651,
"ast_hash": "5ee5874f5ba128bb012c8b3eb7a00915",
"semantic_hash": "5ee5874f5ba128bb012c8b3eb7a00915"
},
"admin_panel/migrations/0002_auto_20220114_1616.py": {
"mtime": 1650778147.0,
"seen": 1791552045.91651,
"ast_hash": "5086374174d36b7a4a14b6d75f51bb33",
"semantic_hash": "5086374174d36b7a4a14b6d75f51bb33"
},
"admin_panel/migrations/0003_auto_20220115_1401.py": {
"mtime": 1650778147.0,
"seen": 1791552045.91651,
"ast_hash": "0574a9ab80ed8668f0254c3bf7d84d02",
"semantic_hash": "0574a9ab80ed8668f0254c3bf7d84d02"
},
"admin_panel/migrations/0004_factor_paytype.py": {
"mtime": 1650778147.0,
"seen": 1791552045.91651,
"ast_hash": "34e4ef38eb7384fef97781003c6bdb0b",
"semantic_hash": "34e4ef38eb7384fef97781003c6bdb0b"
},
"admin_panel/migrations/0005_auto_20220121_2054.py": {
"mtime": 1650778147.0,
"seen": 1791552045.91651,
"ast_hash": "bb1cbeecc3832ba9940dd171c794739f",
"semantic_hash": "bb1cbeecc3832ba9940dd171c794739f"
},
"admin_panel/migrations/0006_auto_20220121_2100.py": {
"mtime": 1650778147.0,
"seen": 1791552045.91651,
"ast_hash": "486a3056059cd8cb5fe3dae35d3f2369",
"semantic_hash": "486a3056059cd8cb5fe3dae35d3f2369"
},
"admin_panel/migrations/0007_productinstore_factor.py": {
"mtime": 1650778147.0,
"seen": 1791552045.91651,
"ast_hash": "f3fec01eca2e30f20bb5048788e0dfe9",
"semantic_hash": "f3fec01eca2e30f20bb5048788e0dfe9"
},
"admin_panel/migrations/0008_storeroom_user.py": {
"mtime": 1650778147.0,
"seen": 1791552045.91651,
"ast_hash": "d0f91fb7d0fda45e7b55c2c518e94d5a",
"semantic_hash": "d0f91fb7d0fda45e7b55c2c518e94d5a"
},
"admin_panel/migrations/0009_remove_storeroom_user.py": {
"mtime": 1650778147.0,
"seen": 1791552045.91651,
"ast_hash": "4c22c87bea29138e1b1c1a9718743af3",
"semantic_hash": "4c22c87bea29138e1b1c1a9718743af3"
},
"admin_panel/migrations/0010_auto_20220122_1546.py": {
"mtime": 1650778147.0,
"seen": 1791552045.91651,
"ast_hash": "5b0929503f30d4bbc07681a98b218883",
"semantic_hash": "5b0929503f30d4bbc07681a98b218883"
},
"admin_panel/migrations/0011_storeroom_user.py": {
"mtime": 1650778147.0,
"seen": 1791552045.91651,
"ast_hash": "80fa2b4783e9eb67d94fad0cc7f7a3e0",
"semantic_hash": "80fa2b4783e9eb67d94fad0cc7f7a3e0"
},
"admin_panel/migrations/0012_visitqueue_user.py": {
"mtime": 1650778147.0,
"seen": 1791552045.91651,
"ast_hash": "063c36f0c675ca74d6c4ab47fc3a2460",
"semantic_hash": "063c36f0c675ca74d6c4ab47fc3a2460"
},
"admin_panel/migrations/0013_alter_factor_options.py": {
"mtime": 1650778147.0,
"seen": 1791552045.91651,
"ast_hash": "a1a9cbb07d67c2a85e2f3bb3321ffcb6",
"semantic_hash": "a1a9cbb07d67c2a85e2f3bb3321ffcb6"
},
"admin_panel/migrations/0014_auto_20220123_1348.py": {
"mtime": 1650778147.0,
"seen": 1791552045.91651,
"ast_hash": "5f562d5f34b9a225af1bc212060598b4",
"semantic_hash": "5f562d5f34b9a225af1bc212060598b4"
},
"admin_panel/migrations/0015_auto_20220124_0858.py": {
"mtime": 1650778147.0,
"seen": 1791552045.91651,
"ast_hash": "7969fac0b9f3bcfe374252f63162a044",
"semantic_hash": "7969fac0b9f3bcfe374252f63162a044"
},
"admin_panel/migrations/0016_factor_user.py": {
"mtime": 1650778147.0,
"seen": 1791552045.91651,
"ast_hash": "ea959dd744b9d8b2386b8ea254365213",
"semantic_hash": "ea959dd744b9d8b2386b8ea254365213"
},
"admin_panel/migrations/0017_factoriteam_garantyesh.py": {
"mtime": 1650778147.0,
"seen": 1791552045.91651,
"ast_hash": "03245dcb79b9acb25c6942241342e167",
"semantic_hash": "03245dcb79b9acb25c6942241342e167"
},
"admin_panel/migrations/0018_alter_factoriteam_product.py": {
"mtime": 1650778147.0,
"seen": 1791552045.91651,
"ast_hash": "af05fba320620794d19ce1435b0cb94f",
"semantic_hash": "af05fba320620794d19ce1435b0cb94f"
},
"admin_panel/migrations/0019_article_articletype.py": {
"mtime": 1650778147.0,
"seen": 1791552045.91651,
"ast_hash": "bffe3cbec0759137d8b9659ef0ac7917",
"semantic_hash": "bffe3cbec0759137d8b9659ef0ac7917"
},
"admin_panel/migrations/0020_auto_20220126_1532.py": {
"mtime": 1650778147.0,
"seen": 1791552045.91651,
"ast_hash": "de0476b4f325083fb85f72e0b2b07f6e",
"semantic_hash": "de0476b4f325083fb85f72e0b2b07f6e"
},
"admin_panel/migrations/0021_alter_article_type.py": {
"mtime": 1650778147.0,
"seen": 1791552045.91651,
"ast_hash": "7def7b4625409c8afadb454d59f711b1",
"semantic_hash": "7def7b4625409c8afadb454d59f711b1"
},
"admin_panel/migrations/0022_article_typepy.py": {
"mtime": 1650778147.0,
"seen": 1791552045.91651,
"ast_hash": "534616af969f58abb7a691a42bb5d89c",
"semantic_hash": "534616af969f58abb7a691a42bb5d89c"
},
"admin_panel/migrations/0023_alter_article_typepy.py": {
"mtime": 1650778147.0,
"seen": 1791552045.91651,
"ast_hash": "bf5f29a0c95c00db2f327bcfd59ef3e2",
"semantic_hash": "bf5f29a0c95c00db2f327bcfd59ef3e2"
},
"admin_panel/migrations/0024_action.py": {
"mtime": 1650778147.0,
"seen": 1791552045.91651,
"ast_hash": "bdf1314341fe7f3fdc5f30a2a814a85b",
"semantic_hash": "bdf1314341fe7f3fdc5f30a2a814a85b"
},
"admin_panel/migrations/0025_action_actiontype.py": {
"mtime": 1650778147.0,
"seen": 1791552045.91651,
"ast_hash": "4c0e586b80b058330e63e484d0030806",
"semantic_hash": "4c0e586b80b058330e63e484d0030806"
},
"admin_panel/migrations/0026_auto_20220209_1924.py": {
"mtime": 1650778147.0,
"seen": 1791552045.91651,
"ast_hash": "cdebac520a0ca63caa1f96a50f23eb8b",
"semantic_hash": "cdebac520a0ca63caa1f96a50f23eb8b"
},
"admin_panel/migrations/0027_alter_action_nazar.py": {
"mtime": 1650778147.0,
"seen": 1791552045.91651,
"ast_hash": "a2b02bc693f8f79bbcc8550de42821a4",
"semantic_hash": "a2b02bc693f8f79bbcc8550de42821a4"
},
"admin_panel/migrations/0028_action_grade.py": {
"mtime": 1650778147.0,
"seen": 1791552045.91651,
"ast_hash": "e415b68bd27ef19db2c95d7cde690023",
"semantic_hash": "e415b68bd27ef19db2c95d7cde690023"
},
"admin_panel/migrations/0029_alter_article_options.py": {
"mtime": 1650778147.0,
"seen": 1791552045.91651,
"ast_hash": "85e0849c5e61b965e1828fd77996690f",
"semantic_hash": "85e0849c5e61b965e1828fd77996690f"
},
"admin_panel/migrations/0030_auto_20220414_1047.py": {
"mtime": 1650778147.0,
"seen": 1791552045.91651,
"ast_hash": "e4a28feae47beb437db5275ca1003c51",
"semantic_hash": "e4a28feae47beb437db5275ca1003c51"
},
"admin_panel/migrations/0031_article_sarresid.py": {
"mtime": 1650778147.0,
"seen": 1791552045.91651,
"ast_hash": "a036c6a51657a842e0e309db26cf5c30",
"semantic_hash": "a036c6a51657a842e0e309db26cf5c30"
},
"admin_panel/migrations/0032_article_paystatus.py": {
"mtime": 1650778147.0,
"seen": 1791552045.91651,
"ast_hash": "1e9cc1508976669c79784d9ecdacaa5c",
"semantic_hash": "1e9cc1508976669c79784d9ecdacaa5c"
},
"admin_panel/migrations/0033_article_nahvepardakht.py": {
"mtime": 1650778147.0,
"seen": 1791552045.91651,
"ast_hash": "a171b5d3d41e024eec96060a7553023c",
"semantic_hash": "a171b5d3d41e024eec96060a7553023c"
},
"admin_panel/migrations/0034_alter_article_sarresid.py": {
"mtime": 1650778147.0,
"seen": 1791552045.91651,
"ast_hash": "f8b4c19246ffd432671dc645b5f7a27e",
"semantic_hash": "f8b4c19246ffd432671dc645b5f7a27e"
},
"admin_panel/migrations/0035_alter_article_sarresid.py": {
"mtime": 1650778147.0,
"seen": 1791552045.91651,
"ast_hash": "5fc7aaa82f013ed17435c8f712433aeb",
"semantic_hash": "5fc7aaa82f013ed17435c8f712433aeb"
},
"admin_panel/migrations/0036_sarresid.py": {
"mtime": 1650778147.0,
"seen": 1791552045.91651,
"ast_hash": "41190a4c3a8a42368b9e68be15e59da9",
"semantic_hash": "41190a4c3a8a42368b9e68be15e59da9"
},
"admin_panel/migrations/0037_sarresid_sarresiddt.py": {
"mtime": 1650778147.0,
"seen": 1791552045.91651,
"ast_hash": "74ce86a53b5317423def533f08e40041",
"semantic_hash": "74ce86a53b5317423def533f08e40041"
},
"admin_panel/migrations/0038_auto_20240213_1735.py": {
"mtime": 1707833116.0,
"seen": 1791552045.91651,
"ast_hash": "1f436c242cd8233cf36b46a344712893",
"semantic_hash": "1f436c242cd8233cf36b46a344712893"
},
"admin_panel/migrations/0039_customer_last_bazdid_dt.py": {
"mtime": 1708021379.0,
"seen": 1791552045.91651,
"ast_hash": "cdbf72bdc29027c67ec6f579dbfd87a5",
"semantic_hash": "cdbf72bdc29027c67ec6f579dbfd87a5"
},
"admin_panel/migrations/0040_customer_laghv_bazdid.py": {
"mtime": 1708086290.0,
"seen": 1791552045.91651,
"ast_hash": "f240e539790c8266e8e6436de3f7ba8e",
"semantic_hash": "f240e539790c8266e8e6436de3f7ba8e"
},
"admin_panel/migrations/0041_auto_20240216_1607.py": {
"mtime": 1708087066.0,
"seen": 1791552045.91651,
"ast_hash": "0e18ee1383cce3042f8d951170a4206c",
"semantic_hash": "0e18ee1383cce3042f8d951170a4206c"
},
"admin_panel/migrations/0042_article_user.py": {
"mtime": 1708097636.0,
"seen": 1791552045.91651,
"ast_hash": "9c1401cdcc3e57cd7fd94bc02b4f5712",
"semantic_hash": "9c1401cdcc3e57cd7fd94bc02b4f5712"
},
"admin_panel/migrations/0043_sarresid_user.py": {
"mtime": 1712324765.0,
"seen": 1791552045.91651,
"ast_hash": "854ae72ac9682f257391fddaafd8df18",
"semantic_hash": "854ae72ac9682f257391fddaafd8df18"
},
"admin_panel/migrations/0044_sarresid_desc.py": {
"mtime": 1731443780.0,
"seen": 1791552045.91651,
"ast_hash": "a016eaa6fc679bf509d831b1a970b625",
"semantic_hash": "a016eaa6fc679bf509d831b1a970b625"
},
"admin_panel/migrations/0045_auto_20260610_1421.py": {
"mtime": 1781088666.153017,
"seen": 1791552045.91651,
"ast_hash": "4ef65d5c188e0cdfe6ada14be13a5289",
"semantic_hash": "4ef65d5c188e0cdfe6ada14be13a5289"
},
"admin_panel/migrations/0046_auto_20260624_1818.py": {
"mtime": 1782312515.2476697,
"seen": 1791552045.91651,
"ast_hash": "5ca2702b20a1a595e8f70d0febce437b",
"semantic_hash": "5ca2702b20a1a595e8f70d0febce437b"
},
"admin_panel/migrations/0047_alter_productinstore_movement_type.py": {
"mtime": 1782400614.7357888,
"seen": 1791552045.91651,
"ast_hash": "dc43c8e6b4e1e070f12746a3ce7b48eb",
"semantic_hash": "dc43c8e6b4e1e070f12746a3ce7b48eb"
},
"admin_panel/migrations/0048_alter_productinstore_options.py": {
"mtime": 1783073642.7854881,
"seen": 1791552045.91651,
"ast_hash": "1ef983920121630add36d9d681b13aee",
"semantic_hash": "1ef983920121630add36d9d681b13aee"
},
"admin_panel/migrations/0049_alter_productinstore_options.py": {
"mtime": 1783075090.874336,
"seen": 1791552045.91651,
"ast_hash": "6535f13daa18a07d6bbf04101b371d9c",
"semantic_hash": "6535f13daa18a07d6bbf04101b371d9c"
},
"admin_panel/migrations/0050_storetransferrequest.py": {
"mtime": 1783081448.2086937,
"seen": 1791552045.91651,
"ast_hash": "479c29e8beb5388215e2dc24751686d1",
"semantic_hash": "479c29e8beb5388215e2dc24751686d1"
},
"admin_panel/migrations/0051_auto_20260705_1356.py": {
"mtime": 1783247162.7750995,
"seen": 1791552045.91651,
"ast_hash": "ce9e0ca56be568fae0613e79298666f2",
"semantic_hash": "ce9e0ca56be568fae0613e79298666f2"
},
"admin_panel/migrations/0052_storeroomowner.py": {
"mtime": 1783247323.7533815,
"seen": 1791552045.91651,
"ast_hash": "cd1a8e4784e4f21b50c5200da2677199",
"semantic_hash": "cd1a8e4784e4f21b50c5200da2677199"
},
"admin_panel/migrations/0053_storeroom_owners.py": {
"mtime": 1783247371.5792572,
"seen": 1791552045.91651,
"ast_hash": "4015f9c7449f85884f89b31d3af39894",
"semantic_hash": "4015f9c7449f85884f89b31d3af39894"
},
"admin_panel/migrations/0054_auto_20260715_2250.py": {
"mtime": 1784143234.375771,
"seen": 1791552045.91651,
"ast_hash": "9ee31b1cc86ea3ac5db8e3bb7ad38aad",
"semantic_hash": "9ee31b1cc86ea3ac5db8e3bb7ad38aad"
},
"admin_panel/migrations/0055_action_nextnazardt.py": {
"mtime": 1784916401.6852713,
"seen": 1791552045.91651,
"ast_hash": "6dfed65de7902632cb291defd05914ee",
"semantic_hash": "6dfed65de7902632cb291defd05914ee"
},
"admin_panel/migrations/0056_auto_20260731_1824.py": {
"mtime": 1785509644.1099384,
"seen": 1791552045.91651,
"ast_hash": "c08ef1beaff253c2e43eccb981073c1f",
"semantic_hash": "c08ef1beaff253c2e43eccb981073c1f"
},
"admin_panel/migrations/__init__.py": {
"mtime": 1650778147.0,
"seen": 1791552045.91651,
"ast_hash": "d41d8cd98f00b204e9800998ecf8427e",
"semantic_hash": "d41d8cd98f00b204e9800998ecf8427e"
},
"admin_panel/models.py": {
"mtime": 1785509631.4338894,
"seen": 1791552045.91651,
"ast_hash": "1b4254486bf126b24e73d7a1fc930007",
"semantic_hash": "1b4254486bf126b24e73d7a1fc930007"
},
"admin_panel/services.py": {
"mtime": 1786864057.7585652,
"seen": 1791552045.91651,
"ast_hash": "164f88ca79dff2643a1c38f5974126be",
"semantic_hash": "164f88ca79dff2643a1c38f5974126be"
},
"admin_panel/templatetags/__init__.py": {
"mtime": 1650778147.0,
"seen": 1791552045.91651,
"ast_hash": "d41d8cd98f00b204e9800998ecf8427e",
"semantic_hash": "d41d8cd98f00b204e9800998ecf8427e"
},
"admin_panel/templatetags/custom_tags.py": {
"mtime": 1783251836.4148617,
"seen": 1791552045.91651,
"ast_hash": "8d8c826e168cec5bb68a21c8457380ba",
"semantic_hash": "8d8c826e168cec5bb68a21c8457380ba"
},
"admin_panel/templatetags/remove_q_p.py": {
"mtime": 1683307703.0,
"seen": 1791552045.91651,
"ast_hash": "6ac789d61f86b1a27bc215d2a77761c6",
"semantic_hash": "6ac789d61f86b1a27bc215d2a77761c6"
},
"admin_panel/tests.py": {
"mtime": 1650778147.0,
"seen": 1791552045.91651,
"ast_hash": "e08f0582500f6562bf0a931ef9503b39",
"semantic_hash": "e08f0582500f6562bf0a931ef9503b39"
},
"admin_panel/urls.py": {
"mtime": 1787302652.4618616,
"seen": 1791552045.91651,
"ast_hash": "d550a6f4bbfd8ec74f8ef482ee7f1cff",
"semantic_hash": "d550a6f4bbfd8ec74f8ef482ee7f1cff"
},
"admin_panel/views.py": {
"mtime": 1787304201.392812,
"seen": 1791552045.91651,
"ast_hash": "40c436a0d14e9ca9dd798fd6ffc2ba7b",
"semantic_hash": "40c436a0d14e9ca9dd798fd6ffc2ba7b"
},
"check_finance.py": {
"mtime": 1786878923.269553,
"seen": 1791552045.91651,
"ast_hash": "75f1e60011aa238abef8ba028761d97f",
"semantic_hash": "75f1e60011aa238abef8ba028761d97f"
},
"entrypoint.sh": {
"mtime": 1782246266.1269526,
"seen": 1791552045.91651,
"ast_hash": "f06f9179baa5071b374895438cc05176",
"semantic_hash": "f06f9179baa5071b374895438cc05176"
},
"ghost_hunter.py": {
"mtime": 1786881510.522436,
"seen": 1791552045.91651,
"ast_hash": "51f0a2e2323df5d9e444aad5a2883ee5",
"semantic_hash": "51f0a2e2323df5d9e444aad5a2883ee5"
},
"khatibi/__init__.py": {
"mtime": 1650778147.0,
"seen": 1791552045.91651,
"ast_hash": "d41d8cd98f00b204e9800998ecf8427e",
"semantic_hash": "d41d8cd98f00b204e9800998ecf8427e"
},
"khatibi/asgi.py": {
"mtime": 1650778147.0,
"seen": 1791552045.91651,
"ast_hash": "b4e49af22c6a30c16299cb82ab55df6d",
"semantic_hash": "b4e49af22c6a30c16299cb82ab55df6d"
},
"khatibi/production_settings.py": {
"mtime": 1782245208.734714,
"seen": 1791552045.91651,
"ast_hash": "73a68e0d30f37dc4fbdad316c02b5fc4",
"semantic_hash": "73a68e0d30f37dc4fbdad316c02b5fc4"
},
"khatibi/settings.py": {
"mtime": 1782309009.7845018,
"seen": 1791552045.91651,
"ast_hash": "bf91e375449195bc3d958a6c51266d7f",
"semantic_hash": "bf91e375449195bc3d958a6c51266d7f"
},
"khatibi/urls.py": {
"mtime": 1650778147.0,
"seen": 1791552045.91651,
"ast_hash": "c84a36287ab919a7c7af7665f7f74fe7",
"semantic_hash": "c84a36287ab919a7c7af7665f7f74fe7"
},
"khatibi/wsgi.py": {
"mtime": 1708013917.0,
"seen": 1791552045.91651,
"ast_hash": "3201b17eab76f3e248ee368647070e4c",
"semantic_hash": "3201b17eab76f3e248ee368647070e4c"
},
"manage.py": {
"mtime": 1708013913.0,
"seen": 1791552045.91651,
"ast_hash": "f2880415f68590c74305913ff0f025f3",
"semantic_hash": "f2880415f68590c74305913ff0f025f3"
},
"reconciliation_tool.py": {
"mtime": 1786880527.1578598,
"seen": 1791552045.91651,
"ast_hash": "29c3e16d73d00a9f3f09692194be3b18",
"semantic_hash": "29c3e16d73d00a9f3f09692194be3b18"
},
".github/copilot-instructions.md": {
"mtime": 1791551555.5196745,
"seen": 1791553187.9024515,
"ast_hash": "2b23503628bf2ec71d067a85ca8948ab",
"semantic_hash": "2b23503628bf2ec71d067a85ca8948ab"
},
"GEMINI.md": {
"mtime": 1791551505.4181063,
"seen": 1791552251.327148,
"ast_hash": "82efb97a359f5c7290bf2513d14686be",
"semantic_hash": "82efb97a359f5c7290bf2513d14686be"
},
"admin_panel/templates/admin_panel/ActionList.html": {
"mtime": 1650778147.0,
"seen": 1791552251.327148,
"ast_hash": "4ba55e04b37e585d96f0d628c695d228",
"semantic_hash": "4ba55e04b37e585d96f0d628c695d228"
},
"admin_panel/templates/admin_panel/base.html": {
"mtime": 1787305605.0913658,
"seen": 1791552251.327148,
"ast_hash": "3062a4756b2649b3b24a52e5972163d2",
"semantic_hash": "3062a4756b2649b3b24a52e5972163d2"
},
"admin_panel/templates/admin_panel/baseHesabdari.html": {
"mtime": 1703841590.0,
"seen": 1791553187.9024515,
"ast_hash": "47b9ea8bc69fc1731d0dbe267f1ed433",
"semantic_hash": ""
},
"admin_panel/templates/admin_panel/baseStore.html": {
"mtime": 1783083554.0144844,
"seen": 1791553187.9024515,
"ast_hash": "d2fe6f58a7303c1874ebe08af1e50564",
"semantic_hash": ""
},
"admin_panel/templates/admin_panel/bedehi.html": {
"mtime": 1703843184.0,
"seen": 1791553187.9024515,
"ast_hash": "642f82c9f9c217c83acb79185b9439da",
"semantic_hash": "642f82c9f9c217c83acb79185b9439da"
},
"admin_panel/templates/admin_panel/bedehiBK.html": {
"mtime": 1650778147.0,
"seen": 1791553187.9024515,
"ast_hash": "9f714287989d56c19bc1fc28a08cd89d",
"semantic_hash": "9f714287989d56c19bc1fc28a08cd89d"
},
"admin_panel/templates/admin_panel/customerAction.html": {
"mtime": 1784913239.8701046,
"seen": 1791553187.9024515,
"ast_hash": "bb1af41ef956a5e2f30b1266c70a30ee",
"semantic_hash": "bb1af41ef956a5e2f30b1266c70a30ee"
},
"admin_panel/templates/admin_panel/customerActionInc.html": {
"mtime": 1784913846.5075295,
"seen": 1791552251.327148,
"ast_hash": "3232cbf82efe94504f69735791ca5cf4",
"semantic_hash": "3232cbf82efe94504f69735791ca5cf4"
},
"admin_panel/templates/admin_panel/customerBase.html": {
"mtime": 1650778147.0,
"seen": 1791553187.9024515,
"ast_hash": "2724fa49985d8c8fa76ddf5c31b64054",
"semantic_hash": ""
},
"admin_panel/templates/admin_panel/customerBaseNew.html": {
"mtime": 1786558511.2232144,
"seen": 1791552251.327148,
"ast_hash": "1684b269805012f620bcd90f90572203",
"semantic_hash": "1684b269805012f620bcd90f90572203"
},
"admin_panel/templates/admin_panel/customerFactor.html": {
"mtime": 1782399903.8791773,
"seen": 1791552251.327148,
"ast_hash": "23cc139c4d246a9640220cc1f42a1bd1",
"semantic_hash": "23cc139c4d246a9640220cc1f42a1bd1"
},
"admin_panel/templates/admin_panel/customerFactorBackup.html": {
"mtime": 1650778147.0,
"seen": 1791553187.9034579,
"ast_hash": "ff7615faae4df99564cf85d3212a93da",
"semantic_hash": ""
},
"admin_panel/templates/admin_panel/customerHesabDari.html": {
"mtime": 1708533891.0,
"seen": 1791552251.327148,
"ast_hash": "2d7c82b08780f0915a1dc145db522cd5",
"semantic_hash": "2d7c82b08780f0915a1dc145db522cd5"
},
"admin_panel/templates/admin_panel/customerID.html": {
"mtime": 1650778147.0,
"seen": 1791553187.9034579,
"ast_hash": "52739e2559c60cad69fb7efaf65e2dd3",
"semantic_hash": ""
},
"admin_panel/templates/admin_panel/customerIDBackup.html": {
"mtime": 1650778147.0,
"seen": 1791553187.9034579,
"ast_hash": "c6646ddb883c9f85033d9e9d3fb54af2",
"semantic_hash": ""
},
"admin_panel/templates/admin_panel/customerIDFactor.html": {
"mtime": 1784392254.4440935,
"seen": 1791552251.327148,
"ast_hash": "2c0c3fb300c440860d3f1dd8a6181af1",
"semantic_hash": "2c0c3fb300c440860d3f1dd8a6181af1"
},
"admin_panel/templates/admin_panel/customerIDFactorBackup.html": {
"mtime": 1650778147.0,
"seen": 1791553187.9034579,
"ast_hash": "d04aff45b81af659d92173536cbc224f",
"semantic_hash": "d04aff45b81af659d92173536cbc224f"
},
"admin_panel/templates/admin_panel/customerNew.html": {
"mtime": 1650778147.0,
"seen": 1791552251.327148,
"ast_hash": "6eec9291fd4f6bce96e553f9e7352e44",
"semantic_hash": "6eec9291fd4f6bce96e553f9e7352e44"
},
"admin_panel/templates/admin_panel/customerNew2.html": {
"mtime": 1712320283.0,
"seen": 1791552251.327148,
"ast_hash": "47fa6edfc3228d414f22e1a8f3ae4a7a",
"semantic_hash": "47fa6edfc3228d414f22e1a8f3ae4a7a"
},
"admin_panel/templates/admin_panel/customerNewBackup.html": {
"mtime": 1650778147.0,
"seen": 1791553187.9034579,
"ast_hash": "6f281fc25edb4c2822b6a058e4049655",
"semantic_hash": "6f281fc25edb4c2822b6a058e4049655"
},
"admin_panel/templates/admin_panel/customerRezayat.html": {
"mtime": 1650778147.0,
"seen": 1791552251.327148,
"ast_hash": "4e954f6dd0f4ed95656c457fd4399cdd",
"semantic_hash": "4e954f6dd0f4ed95656c457fd4399cdd"
},
"admin_panel/templates/admin_panel/customerRezayatinc.html": {
"mtime": 1784916750.5503716,
"seen": 1791552251.327148,
"ast_hash": "033adb9aa1873c64ac7bf495cdef7cf5",
"semantic_hash": "033adb9aa1873c64ac7bf495cdef7cf5"
},
"admin_panel/templates/admin_panel/customerSarresid.html": {
"mtime": 1786557950.072763,
"seen": 1791552251.327148,
"ast_hash": "dd92347d0f721008570850177989b927",
"semantic_hash": "dd92347d0f721008570850177989b927"
},
"admin_panel/templates/admin_panel/customer/customerNazarInc.html": {
"mtime": 1707672379.0,
"seen": 1791552251.327148,
"ast_hash": "7687f61651a191ba38a3a7fbc0fa4eea",
"semantic_hash": "7687f61651a191ba38a3a7fbc0fa4eea"
},
"admin_panel/templates/admin_panel/customer/nazar.html": {
"mtime": 1707669675.0,
"seen": 1791552251.327148,
"ast_hash": "1cb1e5086a0f291b86437f03af835407",
"semantic_hash": "1cb1e5086a0f291b86437f03af835407"
},
"admin_panel/templates/admin_panel/customers.html": {
"mtime": 1784142973.2160225,
"seen": 1791552251.327148,
"ast_hash": "77809af7284de3bdacce2e6bb27dccf5",
"semantic_hash": "77809af7284de3bdacce2e6bb27dccf5"
},
"admin_panel/templates/admin_panel/customersBK.html": {
"mtime": 1650778147.0,
"seen": 1791553187.904458,
"ast_hash": "c3912ead765eb7b5ada5634b70ebc644",
"semantic_hash": "c3912ead765eb7b5ada5634b70ebc644"
},
"admin_panel/templates/admin_panel/entezar.html": {
"mtime": 1708088349.0,
"seen": 1791553187.904458,
"ast_hash": "808fd766dd0d0abec11bfcccd57dcee2",
"semantic_hash": "808fd766dd0d0abec11bfcccd57dcee2"
},
"admin_panel/templates/admin_panel/entezarBK.html": {
"mtime": 1650778147.0,
"seen": 1791553187.904458,
"ast_hash": "09796b3916f635c6bc2a5aa3d2df108f",
"semantic_hash": ""
},
"admin_panel/templates/admin_panel/financial_dashboard.html": {
"mtime": 1786882219.7287638,
"seen": 1791552251.327148,
"ast_hash": "d0782d6533e6b105ff1cd837d3b73108",
"semantic_hash": "d0782d6533e6b105ff1cd837d3b73108"
},
"admin_panel/templates/admin_panel/hesabdari.html": {
"mtime": 1786553421.551038,
"seen": 1791552251.327148,
"ast_hash": "9a44f015176e20e333a42321701b3575",
"semantic_hash": "9a44f015176e20e333a42321701b3575"
},
"admin_panel/templates/admin_panel/hesabdariCheckPass.html": {
"mtime": 1707470201.0,
"seen": 1791553187.905458,
"ast_hash": "4f41af8d09e60f2eb1b4db77c5a2ec11",
"semantic_hash": "4f41af8d09e60f2eb1b4db77c5a2ec11"
},
"admin_panel/templates/admin_panel/hesabdariCheckPassFail.html": {
"mtime": 1707470341.0,
"seen": 1791553187.905458,
"ast_hash": "c83c6a1ab4af819947dda04360ba42b4",
"semantic_hash": "c83c6a1ab4af819947dda04360ba42b4"
},
"admin_panel/templates/admin_panel/hesabdariResidNashode.html": {
"mtime": 1703840323.0,
"seen": 1791553187.905458,
"ast_hash": "fec700cfae2a2f99fc20d8e1d4f20aab",
"semantic_hash": "fec700cfae2a2f99fc20d8e1d4f20aab"
},
"admin_panel/templates/admin_panel/index.html": {
"mtime": 1650778147.0,
"seen": 1791553187.905458,
"ast_hash": "ead4632d75560f5fc6ab13c6fe0bd33c",
"semantic_hash": ""
},
"admin_panel/templates/admin_panel/login.html": {
"mtime": 1650778147.0,
"seen": 1791553187.905458,
"ast_hash": "297f4c4a04f98fa223796ca4482dfbbe",
"semantic_hash": "297f4c4a04f98fa223796ca4482dfbbe"
},
"admin_panel/templates/admin_panel/newOperation.html": {
"mtime": 1783251875.7455926,
"seen": 1791552251.327148,
"ast_hash": "9fd1d5148c0121c47d07e4e1346a32ff",
"semantic_hash": "9fd1d5148c0121c47d07e4e1346a32ff"
},
"admin_panel/templates/admin_panel/operations.html": {
"mtime": 1782127647.8900125,
"seen": 1791552251.327148,
"ast_hash": "3199582c3342413eeb8b8a5cf5fb879a",
"semantic_hash": "3199582c3342413eeb8b8a5cf5fb879a"
},
"admin_panel/templates/admin_panel/operationsBK.html": {
"mtime": 1650778147.0,
"seen": 1791552251.327148,
"ast_hash": "fa2ab834231c3ff3f7500431b74978f4",
"semantic_hash": "fa2ab834231c3ff3f7500431b74978f4"
},
"admin_panel/templates/admin_panel/report.html": {
"mtime": 1712328717.0,
"seen": 1791552251.327148,
"ast_hash": "cc8bbc00a3ec2bf85b67b42d8d48a6aa",
"semantic_hash": "cc8bbc00a3ec2bf85b67b42d8d48a6aa"
},
"admin_panel/templates/admin_panel/reportCheckNesiye.html": {
"mtime": 1712328596.0,
"seen": 1791552251.327148,
"ast_hash": "213c083816f68261bbc926124e6c67ad",
"semantic_hash": "213c083816f68261bbc926124e6c67ad"
},
"admin_panel/templates/admin_panel/report_debtors_no_vosol.html": {
"mtime": 1787304395.4691105,
"seen": 1791552251.327148,
"ast_hash": "fef97825343ad1b8acda81df48a9540e",
"semantic_hash": "fef97825343ad1b8acda81df48a9540e"
},
"admin_panel/templates/admin_panel/report_inventory_movements.html": {
"mtime": 1782459887.7241113,
"seen": 1791552251.327148,
"ast_hash": "6b1591c8e2d96ca73e38c55be001cbd4",
"semantic_hash": "6b1591c8e2d96ca73e38c55be001cbd4"
},
"admin_panel/templates/admin_panel/report_rezayat.html": {
"mtime": 1784918413.9920633,
"seen": 1791552251.327148,
"ast_hash": "96e967c44debbabf2ee8c630cd371a23",
"semantic_hash": "96e967c44debbabf2ee8c630cd371a23"
},
"admin_panel/templates/admin_panel/rezayat.html": {
"mtime": 1650778147.0,
"seen": 1791552476.826179,
"ast_hash": "df2df73cb519f7915d7f656e46ced406",
"semantic_hash": "df2df73cb519f7915d7f656e46ced406"
},
"admin_panel/templates/admin_panel/store.html": {
"mtime": 1783252370.4796727,
"seen": 1791552251.327148,
"ast_hash": "95e5186068796e24b2635441089dacb5",
"semantic_hash": "95e5186068796e24b2635441089dacb5"
},
"admin_panel/templates/admin_panel/storeBK1.html": {
"mtime": 1650778147.0,
"seen": 1791553187.906458,
"ast_hash": "79e507d05c12c39715fc90cf0d8b891d",
"semantic_hash": "79e507d05c12c39715fc90cf0d8b891d"
},
"admin_panel/templates/admin_panel/store_transfers.html": {
"mtime": 1783083492.176341,
"seen": 1791552251.327148,
"ast_hash": "9a02fb0648ea6d8cc7ff73647c173a46",
"semantic_hash": "9a02fb0648ea6d8cc7ff73647c173a46"
},
"admin_panel/templates/admin_panel/stores.html": {
"mtime": 1650778147.0,
"seen": 1791552251.327148,
"ast_hash": "40dcac5b8cdbaf25efa63e4a9680d4ad",
"semantic_hash": "40dcac5b8cdbaf25efa63e4a9680d4ad"
},
"requirements.txt": {
"mtime": 1787308505.3543158,
"seen": 1791552251.327148,
"ast_hash": "4988f4d0e1372076211a9b5ae632ab2d",
"semantic_hash": "4988f4d0e1372076211a9b5ae632ab2d"
},
"requirements2.txt": {
"mtime": 1654964543.0,
"seen": 1791552476.826179,
"ast_hash": "b68cf8783499ded7f16a7da13f974f7b",
"semantic_hash": "b68cf8783499ded7f16a7da13f974f7b"
}
}