This commit is contained in:
javad committed 2026-10-11 19:04:20 +03:30
1 parent 1dea3509a7
commit e3a6d1f9d4
42 files changed
+33086 -15779

No files matched your search

File diff suppressed because it is too large. Load diff
+169 -138
View File
@@ -1,142 +1,173 @@
{
"0": "views/store.py",
"1": "project_tree.py",
"2": "sqlite_db_backup.py",
"3": "django_db",
"4": "Customer ID Backup/New Factor Template",
"5": "views/customers.py",
"6": "cheque_inquiry.py",
"7": "admin_panel/templates/admin_panel/baseHesabdari.html",
"8": "django_db_models_deletion",
"9": "0051_auto_20260705_1356.py",
"10": "admin_panel/storeBK1.html",
"11": "ViewSmokeTests",
"12": "admin_panel/templates/admin_panel/customerAction.html",
"13": "User",
"14": "run_all",
"15": "admin_panel/admin.py",
"16": "stock_in",
"17": "admin_panel/templates/admin_panel/bedehi.html",
"18": "hesabdariCheckPassFail.html",
"19": "Reference guide",
"20": "normalize_mobile",
"21": "graphify",
"22": "hesabdariResidNashode.html",
"23": "0017_factoriteam_garantyesh.py",
"24": "scanner.py",
"25": "0002_auto_20220114_1616.py",
"26": "SMSResult",
"27": "Rip'n Fast. Fewer Tokens. Better Code.",
"28": "models/sms.py",
"29": "admin_panel/templates/admin_panel/baseStore.html",
"30": "views/finance.py",
"31": "Customer Modals UI",
"32": "views/factors.py",
"33": "0034_alter_article_sarresid.py",
"34": "views/sms.py",
"35": "0035_alter_article_sarresid.py",
"36": "django_db_models",
"37": "0010_auto_20220122_1546.py",
"38": "0040_customer_laghv_bazdid.py",
"39": "test_sms.py",
"40": "0048_alter_productinstore_options.py",
"41": "0032_article_paystatus.py",
"42": "0033_article_nahvepardakht.py",
"43": "make_customer",
"44": "sms0098.py",
"45": "0044_sarresid_desc.py",
"46": "models/__init__.py",
"47": "make_user",
"48": "GEMINI.md",
"49": "admin/migrations/__init__.py",
"50": "Customer Action Include",
"51": "New Customer Base Template",
"52": "Customer Feedback Partial",
"53": "Customer Factor Detail",
"54": "Customer Accounting Template",
"55": "Customer Factor List",
"56": "Customer Feedback Page",
"57": "commands/__init__.py",
"58": "management/__init__.py",
"59": "admin_panel/migrations/__init__.py",
"60": "Action List Template",
"61": "base.html",
"62": "Customer New Factor",
"63": "Customer New Factor V2",
"64": "Customer Satisfaction List",
"65": "Customer Satisfaction Partial",
"66": "Customer Check/Debt Management",
"67": "admin_panel/templates/admin_panel/customerBaseNew.html",
"68": "Customer List",
"69": "admin_panel/templates/admin_panel/entezarBK.html",
"70": "Financial Dashboard",
"71": "Accounting Main View",
"72": "admin_panel/templates/admin_panel/index.html",
"73": "New Inventory Operation",
"74": "Inventory Operations List",
"75": "Operations Backup Template",
"76": "Financial Report Template",
"77": "Debt Collection Dashboard",
"78": "Inventory Movement Report",
"79": "Customer Satisfaction Dashboard",
"80": "Check and Credit Report Template",
"81": "Satisfaction List Template",
"82": "Store Inventory Template",
"83": "Store Transfers Template",
"84": "Stores List Template",
"85": "toCurrency",
"86": "templatetags/__init__.py",
"87": "URL: newStore",
"88": "URL: process_transfer_action",
"89": "URL: rezayatEdit",
"90": "khatibi/__init__.py",
"91": "Extended Requirements File",
"92": "Requirements File",
"93": "django_shortcuts",
"94": "resolve_recipients",
"95": "factories.py",
"96": "write_tree",
"97": "TemplatesPageUITests",
"0": "views/sms.py",
"1": "run_all",
"2": "django_db",
"3": "views/store.py",
"4": "ModelsPackageContractTests",
"5": "PhoneCleanupTests",
"6": ".load",
"7": "models/sms.py",
"8": "logging",
"9": "views/customers.py",
"10": "django_db_models_deletion",
"11": "make_customer",
"12": "customer_phone_entries",
"13": "EventTriggerTests",
"14": "views/finance.py",
"15": "SMSResult",
"16": "sms0098ws.py",
"17": "Admin Panel Customization",
"18": "User",
"19": "django_conf",
"20": "test_customers.py",
"21": "phones.py",
"22": "Login Template Forms",
"23": "cheque_inquiry.py",
"24": "factories.py",
"25": "Rip'n Fast. Fewer Tokens. Better Code.",
"26": "views/factors.py",
"27": "to_local",
"28": "make_user",
"29": "QueueReviewTests",
"30": "NoticeMechanismTests",
"31": "enqueue.py",
"32": "enqueue_sms",
"33": "PanelTestCase",
"34": "ProductInStore",
"35": "admin_panel/templates/admin_panel/baseHesabdari.html",
"36": "Reference guide",
"37": "Factor Creation UI",
"38": "admin_panel/templates/admin_panel/bedehi.html",
"39": "project_tree.py",
"40": "CustomerSmsHistoryTests",
"41": "TemplatesPageUITests",
"42": "SMS Integration Docs",
"43": "timing_for",
"44": "django_shortcuts",
"45": "stock_in",
"46": "admin_panel/templates/admin_panel/customerAction.html",
"47": "parts_count",
"48": "write_tree",
"49": "CustomerInfoCardUITests",
"50": "Customer",
"51": "Phone Cleanup Guide",
"52": "SmsReportTests",
"53": "manage.py",
"54": "Agent Operating Guidelines",
"55": "SMSDeliveryCommandTests",
"56": "BehinSMSProvider",
"57": "test_sms.py",
"58": "Financial Data Objects",
"59": "Hybrid Migration Command",
"60": "بازمحاسبهٔ «آخرین بازدید» مشتریان",
"61": "Resource Cleanup Handler",
"62": "SMS Timing Migration",
"63": "Articl Model",
"64": "customerIDFactorBackup.html",
"65": "test_factors.py",
"66": "os",
"67": "Graphify Tooling Docs",
"68": "django_urls",
"69": "0063_alter_smsqueue_status.py",
"70": "SMS Template Seeding",
"71": "admin_panel/entezar.html",
"72": "customerNewBackup.html",
"73": "hesabdariResidNashode.html",
"74": "0070_sms_types_seven.py",
"75": "Endpoint Smoke Tests",
"76": "Timezone Migration History",
"77": "models/__init__.py",
"78": "UrlContractTests",
"79": "Brand Scrubbing Migration",
"80": "SMS Dedup Migration",
"81": "Installation Guide",
"82": "Project Honesty Contract",
"83": "Flow Control Migration",
"84": "Permission Label Migration",
"85": "stop.sh",
"86": "Output Format Specs",
"87": "Performance Benchmarks",
"88": "SMS Integration Overview",
"89": "System Cache Table",
"90": "Customer Modal UI",
"91": "SentQueueProtectionTests",
"92": "Infrastructure Services",
"93": "Agent Setup Guide",
"94": "First Use Guide",
"95": "0056_auto_20260731_1824.py",
"96": "0009_remove_storeroom_user.py",
"97": "PhoneEntry",
"98": "reconciliation_tool.py",
"99": "ModelsPackageContractTests",
"100": "django_conf",
"99": "announcements.py",
"100": "pathlib",
"101": "Command",
"102": "UrlContractTests",
"103": "customerIDFactorBackup.html",
"104": "system.py",
"105": "BehinSMSProvider",
"106": "test_customers.py",
"107": "tests/__init__.py",
"108": "Command",
"109": "Command",
"110": "0061_sms_timing_and_primary.py",
"111": "bale/providers.py",
"112": "os",
"113": "Command",
"114": "0058_seed_sms_templates.py",
"115": "test_factors.py",
"116": "Customer",
"117": "customerNewBackup.html",
"118": "0059_sms_flow_control.py",
"119": "0060_sms_permission_label.py",
"120": "datetime",
"121": "0008_storeroom_user.py",
"122": "0013_alter_factor_options.py",
"123": "0018_alter_factoriteam_product.py",
"124": "0020_auto_20220126_1532.py",
"125": "0022_article_typepy.py",
"126": "0025_action_actiontype.py",
"127": "0028_action_grade.py",
"128": "0030_auto_20220414_1047.py",
"129": "0036_sarresid.py",
"130": "0037_sarresid_sarresiddt.py",
"131": "0039_customer_last_bazdid_dt.py",
"132": "0041_auto_20240216_1607.py",
"133": "0047_alter_productinstore_movement_type.py",
"134": "0049_alter_productinstore_options.py",
"135": "0057_sms.py",
"136": "admin_panel/sms/__init__.py",
"137": "bale/__init__.py",
"138": "integrations/__init__.py",
"139": "integrations/sms/__init__.py"
"102": "0064_sms_webservice_delivery.py",
"103": "0040_customer_laghv_bazdid.py",
"104": "0068_auto_20261010_1305.py",
"105": "0069_smstemplate_auto_send.py",
"106": "0047_alter_productinstore_movement_type.py",
"107": "Command",
"108": "SMS Domain Logic",
"109": "Customer Communication Partials",
"110": "SMS Template Management",
"111": "Documentation and Graphing",
"112": "Admin Migration Package",
"113": "bale/providers.py",
"114": "Customer Action Templates",
"115": "Customer Feedback Components",
"116": "Customer Invoice Details",
"117": "Accounting Document Templates",
"118": "Customer Invoice List",
"119": "Customer Feedback Interface",
"120": "Custom Management Commands",
"121": "Django Management Package",
"122": "Admin Panel Migrations",
"123": "Action List Interface",
"124": "Base HTML Layout",
"125": "New Invoice Creation",
"126": "Customer Satisfaction Records",
"127": "Satisfaction UI Components",
"128": "Debt and Credit Management",
"129": "Customer Base Layout",
"130": "Waiting List Template",
"131": "Financial Dashboard",
"132": "Accounting Main View",
"133": "Admin Dashboard Index",
"134": "Inventory Entry Form",
"135": "Inventory Operations History",
"136": "Operations Backup View",
"137": "Financial Reporting",
"138": "Debt Collection Interface",
"139": "Inventory Movement Analytics",
"140": "Satisfaction Analytics Dashboard",
"141": "Credit Status Reports",
"142": "Satisfaction List View",
"143": "SMS Queue Management",
"144": "Store Inventory View",
"145": "Store Transfer Interface",
"146": "Store Directory Template",
"147": "Currency Formatting Utility",
"148": "Django Template Tags",
"149": "Store Creation Endpoint",
"150": "Transfer Processing Endpoint",
"151": "Satisfaction Edit Endpoint",
"152": "Customer Deletion Endpoint",
"154": "Django Permissions System",
"155": "Static Asset Management",
"156": "Data Cleanup Documentation",
"157": "Bale Integration Package",
"158": "External Integrations",
"159": "SMS Integration Module",
"160": "Khatibi Custom Module",
"161": "Project Dependencies",
"162": "Test Suite Package",
"164": "QueueStatsTests",
"166": "sms_settings",
"167": "Command",
"168": "0071_sms_settings_permission.py",
"169": "index",
"172": "0017_factoriteam_garantyesh.py",
"173": "0028_action_grade.py",
"174": "0034_alter_article_sarresid.py",
"175": "0039_customer_last_bazdid_dt.py"
}
+1 -1
View File
@@ -1 +1 @@
{"0": "5ff8a72726a083db", "1": "219b01f43ec5f76d", "2": "edab4be6f8bf260c", "3": "70018840272ab80e", "4": "d36df3c85181f806", "5": "9eb1daeea9dda6c2", "6": "076144c85b2925b4", "7": "0928f3aa4e597117", "8": "0e080dc901d1f670", "9": "a00d0684d05c01a4", "10": "9701f1591d8fda6e", "11": "5290f7a7558a9c3e", "12": "e6a8282720eded0c", "13": "05119fe8608a0cbd", "14": "903ab35120e04b54", "15": "91b75fb079f9c02c", "16": "c12f70f2136b1a97", "17": "06959e26b0aedfb2", "18": "90146abe85d9419f", "19": "21f888d34b160f31", "20": "bc287e5355564fe6", "21": "0f632fc57e9feeb0", "22": "af89b22ae0662d6d", "23": "a800ecffc01fc9d5", "24": "955593b6e631a7a7", "25": "a19c211702401a5b", "26": "e72a0ec031902754", "27": "c9e7bf6ac46f263c", "28": "1a67e40fab1eeadd", "29": "3f3a4eb6e6b2f4d6", "30": "389c17cd386d28f2", "31": "03f8896e9b60ca96", "32": "40771cc7fa5ee930", "33": "c02bc9595eaedd36", "34": "d76e40111efda56a", "35": "7714d721fe893ef5", "36": "466b12915e08a4f0", "37": "2f1621907db6f86f", "38": "ef8221c5fdeee7f8", "39": "a890d0d5da72d758", "40": "bf60a8731033e467", "41": "d5c0f5f6714c9991", "42": "9948fb8b548535ed", "43": "61882165e32527ce", "44": "f1310e6117296d59", "45": "90e57f26f669372d", "46": "95f91e2eaf52002c", "47": "32e693b104a691c2", "48": "66ed76491a412a72", "49": "e67668b62ee6c62c", "50": "68aee39cd24db354", "51": "09b7297ea62919f2", "52": "054401d27ffaa4b2", "53": "dace81c1995fb321", "54": "19e301aeace95bb2", "55": "d6fd0cec4634a0b0", "56": "0230d355a6dabb54", "57": "5cebbb5528321795", "58": "536fe28d24c361f5", "59": "b08bdc2712cb0f12", "60": "6ce8444f504022cc", "61": "8021f52559633383", "62": "d8e34a3b3eb43ee0", "63": "056b8d6b5072289b", "64": "171c34c74a95481b", "65": "73e9eca6f2ca1c9b", "66": "dcc2230ae751c29a", "67": "2a617b932f5d92b2", "68": "2f5417a69eb1d15e", "69": "d55cb638532fdfeb", "70": "06cae4389208269f", "71": "e9c0a7be255e9b26", "72": "455b4ca39e55ecb0", "73": "8105c55538c34081", "74": "74304670b54c018f", "75": "a27f876eabb044b2", "76": "73f74dd7a40776d6", "77": "29d433d164b99f89", "78": "3f44aa48aa05d597", "79": "ca8a7efba0a3e579", "80": "5cc770af9d184d77", "81": "2d31fa723128b164", "82": "9d814c2520329846", "83": "f97d1a5c3a066598", "84": "14f84a6e4cd311d6", "85": "3a592d27b1f4ccc9", "86": "0bf6f9d0aeab4fd8", "87": "8b491bb3ff0649dd", "88": "638812cee15d1b9b", "89": "3dd16d68928a479c", "90": "72dad91d66d471ce", "91": "353a9d09eaae47ea", "92": "2d29260874184e4a", "93": "00d4d9fc79267971", "94": "8fedb8424b4f7d54", "95": "c7ce06d5e4e87224", "96": "9d46bbe4641a8543", "97": "68b25e60cbe5368c", "98": "8f5a6aa62c618b5f", "99": "33819123dbb4d454", "100": "e8d32595704b722a", "101": "e4fcae6cb365fba9", "102": "32ed40052fe2c3f8", "103": "8ff365aee1c1a767", "104": "c5743041b2101132", "105": "891ec2c014046f05", "106": "0c4707ef57c917a2", "107": "43bbf35b96423d46", "108": "88f880da5a61f9dc", "109": "dbfbf8557361f5ea", "110": "6e90b41fbd82c265", "111": "118bde95524551e0", "112": "b85898490162caed", "113": "d55977ec0e3ae213", "114": "df7ea8ce3fa52be3", "115": "460dadaff123e841", "116": "4faac8c35fa8b703", "117": "aea8fc3ff351253f", "118": "bda9be183e0f933e", "119": "63526d01888c4f22", "120": "329e844b7c9edf2d", "121": "37d2f4398ee065c5", "122": "49438bf9f08f11ff", "123": "b9687fc2d4953aed", "124": "6288b9f165b037f4", "125": "f97753a176d20dae", "126": "9cc7a507cfecd8fb", "127": "edb619bf5ac0fc49", "128": "8cb6b3db3aadb973", "129": "c9638aef2c5c82d8", "130": "c6b3f6e0a15a6a0b", "131": "52502a4c1ef75ce6", "132": "8d20e5c1bce8916d", "133": "b5ce3fce9192f8b8", "134": "6cef5bc37e710e62", "135": "0098e532f53735f2", "136": "b738c5aefe939cff", "137": "a9bf69b3d550abef", "138": "b039e1c69c8fb7b9", "139": "60029bf0948fc02a"}
{"0": "41d4c54b2ed9be31", "1": "b3e9db47e46c8950", "2": "c23f6f22b3532a57", "3": "44c42f7cbafe0d72", "4": "a480b4d6afdb4d1b", "5": "a8d6a179fdf0eb6f", "6": "3bd1354c22863397", "7": "88c19438cd72b3dd", "8": "15ca8060fedfc22d", "9": "274a49fd42c1a00e", "10": "58991daa10bb40c9", "11": "892dbef1deee47a9", "12": "f30060e6c2359aa4", "13": "96ec15fbcfe2d27a", "14": "05fc19ac0daa7b6c", "15": "7fe7625f0e064fdb", "16": "60b1fcd46cba604e", "17": "9eec9953ee3ca67f", "18": "dd5464972fce7e01", "19": "1f155e80fa7aa135", "20": "5c5477821216359a", "21": "13d087c92ddf57ef", "22": "9701f1591d8fda6e", "23": "7cd46ce4c8fb3ca4", "24": "d0b49ec6ae8ee7a4", "25": "75866dc8db907971", "26": "c578cf70cb6202fa", "27": "5c3fd3713dd960e8", "28": "1f2e16b5709d3936", "29": "1e9c1fa6fabde0d3", "30": "627dae19704f40f5", "31": "a5bd616f03cdbec3", "32": "ba49af147f38b69e", "33": "509eeabd8a23e031", "34": "f5248661c2005b5a", "35": "e091859c108d6145", "36": "4e9567703b727de7", "37": "d36df3c85181f806", "38": "b9fa892721272dc1", "39": "219b01f43ec5f76d", "40": "89444f5d51189c99", "41": "8c2e4ed6cd161bf3", "42": "bbd8a9066e48dada", "43": "781d0380d9314204", "44": "159d7e82897e35fc", "45": "0827f8a8bc343f88", "46": "a2f2be073f6f5bb9", "47": "8fd5a6f3cd5970b9", "48": "9d46bbe4641a8543", "49": "7bc001888a685a2a", "50": "dc8e4b85d8dd63ea", "51": "afc6d855b9fc1b76", "52": "11d769da5f6dd93e", "53": "3ec6277e63307488", "54": "34401beb9f60ebfd", "55": "054037b18f80b80c", "56": "330644cc56a0e06c", "57": "a3022e2d8c68315c", "58": "90146abe85d9419f", "59": "88f880da5a61f9dc", "60": "69bb788e4cabbf39", "61": "dbfbf8557361f5ea", "62": "6e90b41fbd82c265", "63": "bf2566d91998d2e4", "64": "8ff365aee1c1a767", "65": "120dc3cc659bbc4a", "66": "41c8f6c33d904f01", "67": "0f632fc57e9feeb0", "68": "2db67510f080898c", "69": "84208a7b8507da66", "70": "df7ea8ce3fa52be3", "71": "7db54a3d7ae0017c", "72": "aea8fc3ff351253f", "73": "af89b22ae0662d6d", "74": "a534e43d03671a7c", "75": "5290f7a7558a9c3e", "76": "a19c211702401a5b", "77": "7f4cbca34cc36f61", "78": "0f4a56d55e3925dc", "79": "da683f642f8c61ac", "80": "40313433c93b7054", "81": "81af0a28b68936d9", "82": "25287261c3d1c44b", "83": "bda9be183e0f933e", "84": "63526d01888c4f22", "85": "827420b645a55301", "86": "694a38d63caf7217", "87": "f220eaa4fac26e3e", "88": "d78c8e21a45613e9", "89": "c5743041b2101132", "90": "03f8896e9b60ca96", "91": "a06651e191a4aa22", "92": "4bfa64a1cd8c6a47", "93": "057eae5a523d2004", "94": "5de74655cbc56e06", "95": "cfbcf8cef78c5757", "96": "a1a1f3c1cdff72cf", "97": "72fca8ce97e3eeee", "98": "2ae07d5b9790c230", "99": "4793efd518dcb021", "100": "1b94d53a14e88aa3", "101": "35aa0fc2a0626f70", "102": "cb48fd8d430ac66e", "103": "ef8221c5fdeee7f8", "104": "9144923ab31b52a3", "105": "a2eea51406c7d4fc", "106": "b5ce3fce9192f8b8", "107": "7508d3e84c588617", "108": "b738c5aefe939cff", "109": "d2001d7d283134ac", "110": "6b8e6100893a6b6a", "111": "66ed76491a412a72", "112": "e67668b62ee6c62c", "113": "7b932cfef527d130", "114": "68aee39cd24db354", "115": "054401d27ffaa4b2", "116": "dace81c1995fb321", "117": "19e301aeace95bb2", "118": "d6fd0cec4634a0b0", "119": "0230d355a6dabb54", "120": "5cebbb5528321795", "121": "536fe28d24c361f5", "122": "b08bdc2712cb0f12", "123": "6ce8444f504022cc", "124": "8021f52559633383", "125": "d8e34a3b3eb43ee0", "126": "171c34c74a95481b", "127": "73e9eca6f2ca1c9b", "128": "dcc2230ae751c29a", "129": "2a617b932f5d92b2", "130": "d55cb638532fdfeb", "131": "06cae4389208269f", "132": "e9c0a7be255e9b26", "133": "455b4ca39e55ecb0", "134": "8105c55538c34081", "135": "74304670b54c018f", "136": "a27f876eabb044b2", "137": "73f74dd7a40776d6", "138": "29d433d164b99f89", "139": "3f44aa48aa05d597", "140": "ca8a7efba0a3e579", "141": "5cc770af9d184d77", "142": "2d31fa723128b164", "143": "be720fc0071f0c3d", "144": "9d814c2520329846", "145": "f97d1a5c3a066598", "146": "14f84a6e4cd311d6", "147": "3a592d27b1f4ccc9", "148": "0bf6f9d0aeab4fd8", "149": "8b491bb3ff0649dd", "150": "638812cee15d1b9b", "151": "3dd16d68928a479c", "152": "03a0ee43e18f7934", "154": "435331945d6aad17", "155": "968e1a135dc062b7", "156": "d1a987a548e55a76", "157": "a9bf69b3d550abef", "158": "b039e1c69c8fb7b9", "159": "60029bf0948fc02a", "160": "72dad91d66d471ce", "161": "353a9d09eaae47ea", "162": "43bbf35b96423d46", "164": "825ba1cf2cfa5500", "166": "9fee6d982ee873a6", "167": "ce80aac5f4c439da", "168": "1abe2e7b0bcbeca9", "169": "ce5f237abed01c9e", "172": "a800ecffc01fc9d5", "173": "edb619bf5ac0fc49", "174": "c02bc9595eaedd36", "175": "52502a4c1ef75ce6"}
+1 -1
View File
@@ -1 +1 @@
{"output_tokens": 126792}
{"output_tokens": 201}
+449 -311
View File
@@ -1,183 +1,213 @@
# Graph Report - khatibi (2026-10-10)
# Graph Report - khatibi (2026-10-11)
## Corpus Check
- 160 files · ~127,728 words
- 182 files · ~145,325 words
- Verdict: corpus is large enough that graph structure adds value.
- Unclassified: 7 file(s) not represented in the graph (top: (none) 4, .env 2, .csv 1)
- Unclassified: 8 file(s) not represented in the graph (top: (none) 5, .env 2, .csv 1)
## Summary
- 1280 nodes · 2237 edges · 140 communities (47 shown, 93 thin omitted)
- Extraction: 94% EXTRACTED · 6% INFERRED · 0% AMBIGUOUS · INFERRED: 131 edges (avg confidence: 0.87)
- 1684 nodes · 3008 edges · 171 communities (74 shown, 97 thin omitted)
- Extraction: 95% EXTRACTED · 5% INFERRED · 0% AMBIGUOUS · INFERRED: 151 edges (avg confidence: 0.89)
- Token cost: 0 input · 0 output
## Graph Freshness
- Built from commit: `250cdbab`
- Built from commit: `1dea3509`
- 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)
- views/store.py
- project_tree.py
- django_db
- Customer ID Backup/New Factor Template
- views/customers.py
- cheque_inquiry.py
- admin_panel/templates/admin_panel/baseHesabdari.html
- django_db_models_deletion
- 0051_auto_20260705_1356.py
- admin_panel/storeBK1.html
- ViewSmokeTests
- admin_panel/templates/admin_panel/customerAction.html
- User
- run_all
- admin_panel/admin.py
- stock_in
- admin_panel/templates/admin_panel/bedehi.html
- hesabdariCheckPassFail.html
- Reference guide
- normalize_mobile
- graphify
- hesabdariResidNashode.html
- 0017_factoriteam_garantyesh.py
- scanner.py
- 0002_auto_20220114_1616.py
- SMSResult
- Rip'n Fast. Fewer Tokens. Better Code.
- models/sms.py
- admin_panel/templates/admin_panel/baseStore.html
- views/finance.py
- Customer Modals UI
- views/factors.py
- 0034_alter_article_sarresid.py
- views/sms.py
- 0035_alter_article_sarresid.py
- django_db_models
- 0010_auto_20220122_1546.py
- 0040_customer_laghv_bazdid.py
- test_sms.py
- 0048_alter_productinstore_options.py
- 0032_article_paystatus.py
- 0033_article_nahvepardakht.py
- run_all
- django_db
- views/store.py
- ModelsPackageContractTests
- PhoneCleanupTests
- .load
- models/sms.py
- logging
- views/customers.py
- django_db_models_deletion
- make_customer
- sms0098.py
- 0044_sarresid_desc.py
- models/__init__.py
- customer_phone_entries
- EventTriggerTests
- views/finance.py
- SMSResult
- sms0098ws.py
- Admin Panel Customization
- User
- django_conf
- test_customers.py
- phones.py
- Login Template Forms
- cheque_inquiry.py
- factories.py
- Rip'n Fast. Fewer Tokens. Better Code.
- views/factors.py
- to_local
- make_user
- GEMINI.md
- Customer Action Include
- New Customer Base Template
- Customer Feedback Partial
- Customer Factor Detail
- Customer Accounting Template
- Customer Factor List
- Customer Feedback Page
- Action List Template
- base.html
- Customer New Factor
- Customer New Factor V2
- Customer Satisfaction List
- Customer Satisfaction Partial
- Customer Check/Debt Management
- admin_panel/templates/admin_panel/customerBaseNew.html
- Customer List
- QueueReviewTests
- NoticeMechanismTests
- enqueue.py
- enqueue_sms
- PanelTestCase
- ProductInStore
- admin_panel/templates/admin_panel/baseHesabdari.html
- Reference guide
- Factor Creation UI
- admin_panel/templates/admin_panel/bedehi.html
- project_tree.py
- CustomerSmsHistoryTests
- TemplatesPageUITests
- SMS Integration Docs
- timing_for
- django_shortcuts
- stock_in
- admin_panel/templates/admin_panel/customerAction.html
- parts_count
- write_tree
- CustomerInfoCardUITests
- Customer
- Phone Cleanup Guide
- SmsReportTests
- manage.py
- Agent Operating Guidelines
- SMSDeliveryCommandTests
- BehinSMSProvider
- test_sms.py
- Financial Data Objects
- Hybrid Migration Command
- بازمحاسبهٔ «آخرین بازدید» مشتریان
- Resource Cleanup Handler
- SMS Timing Migration
- Articl Model
- customerIDFactorBackup.html
- test_factors.py
- os
- Graphify Tooling Docs
- 0063_alter_smsqueue_status.py
- SMS Template Seeding
- admin_panel/entezar.html
- customerNewBackup.html
- hesabdariResidNashode.html
- 0070_sms_types_seven.py
- Endpoint Smoke Tests
- Timezone Migration History
- models/__init__.py
- UrlContractTests
- Brand Scrubbing Migration
- SMS Dedup Migration
- Installation Guide
- Project Honesty Contract
- Flow Control Migration
- Permission Label Migration
- stop.sh
- Output Format Specs
- Performance Benchmarks
- SMS Integration Overview
- System Cache Table
- Customer Modal UI
- SentQueueProtectionTests
- Infrastructure Services
- Agent Setup Guide
- First Use Guide
- 0056_auto_20260731_1824.py
- 0009_remove_storeroom_user.py
- PhoneEntry
- reconciliation_tool.py
- announcements.py
- Command
- 0064_sms_webservice_delivery.py
- 0040_customer_laghv_bazdid.py
- 0068_auto_20261010_1305.py
- 0069_smstemplate_auto_send.py
- 0047_alter_productinstore_movement_type.py
- Command
- Customer Communication Partials
- SMS Template Management
- Documentation and Graphing
- bale/providers.py
- Customer Action Templates
- Customer Feedback Components
- Customer Invoice Details
- Accounting Document Templates
- Customer Invoice List
- Customer Feedback Interface
- Action List Interface
- Base HTML Layout
- New Invoice Creation
- Customer Satisfaction Records
- Satisfaction UI Components
- Debt and Credit Management
- Customer Base Layout
- 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 Template
- Satisfaction List Template
- Store Inventory Template
- Store Transfers Template
- Stores List Template
- toCurrency
- Extended Requirements File
- Requirements File
- django_shortcuts
- resolve_recipients
- factories.py
- write_tree
- TemplatesPageUITests
- reconciliation_tool.py
- ModelsPackageContractTests
- django_conf
- Inventory Entry Form
- Inventory Operations History
- Operations Backup View
- Financial Reporting
- Debt Collection Interface
- Inventory Movement Analytics
- Satisfaction Analytics Dashboard
- Credit Status Reports
- Satisfaction List View
- SMS Queue Management
- Store Inventory View
- Store Transfer Interface
- Store Directory Template
- Currency Formatting Utility
- Data Cleanup Documentation
- Project Dependencies
- QueueStatsTests
- sms_settings
- Command
- UrlContractTests
- customerIDFactorBackup.html
- system.py
- BehinSMSProvider
- test_customers.py
- Command
- Command
- 0061_sms_timing_and_primary.py
- bale/providers.py
- Command
- 0058_seed_sms_templates.py
- Customer
- customerNewBackup.html
- 0059_sms_flow_control.py
- 0060_sms_permission_label.py
- 0008_storeroom_user.py
- 0013_alter_factor_options.py
- 0018_alter_factoriteam_product.py
- 0020_auto_20220126_1532.py
- 0022_article_typepy.py
- 0025_action_actiontype.py
- 0071_sms_settings_permission.py
- index
- 0017_factoriteam_garantyesh.py
- 0028_action_grade.py
- 0030_auto_20220414_1047.py
- 0036_sarresid.py
- 0037_sarresid_sarresiddt.py
- 0034_alter_article_sarresid.py
- 0039_customer_last_bazdid_dt.py
- 0041_auto_20240216_1607.py
- 0047_alter_productinstore_movement_type.py
- 0049_alter_productinstore_options.py
- 0057_sms.py
## God Nodes (most connected - your core abstractions)
1. `make_customer()` - 37 edges
2. `make_user()` - 24 edges
3. `Rip'n Fast. Fewer Tokens. Better Code.` - 23 edges
4. `User` - 22 edges
5. `create_transfer_request()` - 22 edges
6. `enqueue_sms()` - 21 edges
7. `SMSResult` - 20 edges
8. `normalize_mobile()` - 20 edges
9. `SMSProvider` - 19 edges
10. `Reference guide` - 18 edges
1. `make_customer()` - 70 edges
2. `make_user()` - 28 edges
3. `run_all()` - 24 edges
4. `enqueue_sms()` - 23 edges
5. `SMSResult` - 23 edges
6. `Rip'n Fast. Fewer Tokens. Better Code.` - 23 edges
7. `User` - 22 edges
8. `create_transfer_request()` - 22 edges
9. `normalize_mobile()` - 22 edges
10. `SMSProvider` - 21 edges
## Surprising Connections (you probably didn't know these)
- `نکته‌های مهم` --references--> `Action` [INFERRED]
recalc_last_bazdid.md → admin_panel/models/actions.py
- `SMS Templates UI` --semantically_similar_to--> `SMS Templates UI Screenshot` [EXTRACTED] [semantically similar]
admin_panel/templates/admin_panel/sms_templates.html → screencapture-localhost-8000-panel-sms-templates-2026-10-09-23_01_18.png
- `check_financial_discrepancy()` --uses--> `Customer` [INFERRED]
check_finance.py → admin/models.py
- `run_360_audit()` --uses--> `Customer` [INFERRED]
ghost_hunter.py → admin/models.py
- ``nest=` is a max, so it cannot tell a long function from a tangled one` --references--> `index()` [INFERRED]
ripwire - README.md → admin/views.py
- `VisitQueue` --uses--> `User` [INFERRED]
admin_panel/models/actions.py → admin/models.py
- `StoreTransferRequest` --uses--> `User` [INFERRED]
admin_panel/models/store.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]
- **Customer Management Flow** — 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]
- **Graphify Output Artifacts** — graphify-out_graph_json, graphify-out_wiki_index_md, graphify-out_graph_report_md [EXTRACTED 1.00]
- **Graphify Subcommands** — graphify_query, graphify_path, graphify_explain [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]
- **SMS Management System** — admin_panel_templates_admin_panel_sms_settings_html, admin_panel_templates_admin_panel_sms_templates_html, admin_panel_templates_admin_panel_sms_queue_html, sms_worker, sms_delivery [EXTRACTED 1.00]
- **Bedehi Report Navigation** — django_urls_admin_panel_bedehi, django_urls_admin_panel_bedehikhadamat, django_urls_admin_panel_bedehinasb [EXTRACTED]
- **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 List Page** — admin_panel_templates_admin_panel_entezar_html, concept_customer_data, concept_url_admin_panel_customers [INFERRED 0.80]
- **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]
- **New Factor Creation Flow** — admin_panel_templates_admin_panel_customernewbackup_html, admin_panel_urls_newfactor, concept_client_side_form_logic, concept_customer, concept_category [INFERRED 0.85]
- **Customer Management UI Flow** — admin_panel_templates_admin_panel_customersbk_html, admin_panel_templates_admin_panel_customersbk_html_createcs, admin_panel_templates_admin_panel_customersbk_html_openrow, concept_customer_modal_ui [INFERRED 0.90]
- **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]
@@ -192,223 +222,331 @@
- **New Factor Creation Flow** — admin_panel_templates_admin_panel_customeridbackup_html, django_url_admin_panel_productsjson, api_endpoint_panel_productmojodi, admin_panel_templates_admin_panel_customeridbackup_html_orderlist, admin_panel_templates_admin_panel_customeridbackup_html_buildorderlist, django_url_admin_panel_newfactor [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 [INFERRED]
## Communities (140 total, 93 thin omitted)
## Communities (171 total, 97 thin omitted)
### Community 0 - "views/store.py"
Cohesion: 0.07
Nodes (26): StoreTransferRequest, Meta, Status, approve_transfer_request(), cancel_transfer_request(), _check_source_store_permission(), _check_target_store_permission(), create_transfer_request() (+18 more)
### Community 0 - "views/sms.py"
Cohesion: 0.14
Nodes (14): _approve(), customer_sms_history(), _customer_url(), _notice(), sms_customer_toggle(), sms_primary_toggle(), sms_queue(), sms_queue_approve() (+6 more)
### Community 1 - "project_tree.py"
Cohesion: 0.21
Nodes (6): is_excluded_file(), main(), non_negative_integer(), parse_args(), sorted_entries(), warn()
### Community 3 - "django_db"
Cohesion: 0.07
Nodes (14): Migration, Migration, Migration, Migration, Migration, Migration, Migration, Migration (+6 more)
### Community 4 - "Customer ID Backup/New Factor Template"
Cohesion: 0.15
Nodes (4): Customer ID Backup/New Factor Template, all_products (JS variable), buildOrderList (JS function), orderList (JS variable)
### Community 5 - "views/customers.py"
Cohesion: 0.13
Nodes (16): customer_toggle_map(), customer(), customerDel(), customerEdit(), customerFactor(), customerFactors(), customerHesabdari(), customerHesabdariAdd() (+8 more)
### Community 6 - "cheque_inquiry.py"
Cohesion: 0.17
Nodes (6): api_check_sabt_inquiry(), api_check_status_inquiry(), parse_cheque_result_html(), run_bpi_cheque_inquiry_logic(), run_cbi_sayad_inquiry_logic(), solve_base64_captcha()
### Community 7 - "admin_panel/templates/admin_panel/baseHesabdari.html"
Cohesion: 0.13
Nodes (14): URL: admin_panel:ActionListUserToday, URL: admin_panel:bedehi, 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 (+6 more)
### Community 8 - "django_db_models_deletion"
### Community 1 - "run_all"
Cohesion: 0.06
Nodes (15): Migration, Migration, Migration, Migration, Migration, Migration, Migration, Migration (+7 more)
Nodes (9): Command, run_all(), apply_timing(), activate_sms(), AutoSendTests, ColdStartTests, ConsoleEncodingTests, ScannerTests (+1 more)
### Community 10 - "admin_panel/storeBK1.html"
### Community 2 - "django_db"
Cohesion: 0.04
Nodes (24): Migration, Migration, Migration, Migration, Migration, Migration, Migration, Migration (+16 more)
### Community 3 - "views/store.py"
Cohesion: 0.07
Nodes (26): Product, Meta, StoreTransferRequest, Meta, Status, approve_transfer_request(), cancel_transfer_request(), _check_source_store_permission() (+18 more)
### Community 4 - "ModelsPackageContractTests"
Cohesion: 0.07
Nodes (5): AdminConfig, AdminPanelConfig, make_std_streams_unicode_safe(), configure_sqlite_connection(), ModelsPackageContractTests
### Community 5 - "PhoneCleanupTests"
Cohesion: 0.09
Nodes (9): Command, Migration, scrub_legacy_phones(), _append_note(), clean_all(), clean_customer(), clean_legacy_cell(), _numeric_tokens() (+1 more)
### Community 6 - ".load"
Cohesion: 0.06
Nodes (9): 12. Supported languages and formats, Languages, HttpProviderRobustnessTests, RuleTests, SettingsPanelTests, TestMessageSettingsTests, WorkerTests, ZeroZeroNinetyEightLinkTests (+1 more)
### Community 7 - "models/sms.py"
Cohesion: 0.06
Nodes (15): CustomerSMSSetting, Meta, SMSDedup, Meta, SMSLog, Meta, SMSProviderConfig, Meta (+7 more)
### Community 8 - "logging"
Cohesion: 0.09
Nodes (3): get_provider_class(), get_sms_provider(), reset_sms_provider()
### Community 9 - "views/customers.py"
Cohesion: 0.09
Nodes (18): normalize_primary_values(), customer_toggle_map(), notify_welcome(), customer(), customerDel(), customerEdit(), customerFactor(), customerFactors() (+10 more)
### Community 10 - "django_db_models_deletion"
Cohesion: 0.08
Nodes (12): Migration, Migration, Migration, Migration, Migration, Migration, Migration, Migration (+4 more)
### Community 11 - "make_customer"
Cohesion: 0.14
Nodes (3): make_customer(), EmptyQueueTests, PrimaryNumberPanelTests
### Community 12 - "customer_phone_entries"
Cohesion: 0.13
Nodes (5): customer_phone_entries(), _iter_sources(), resolve_recipients(), mark_primary(), RecipientTests
### Community 14 - "views/finance.py"
Cohesion: 0.18
Nodes (19): Article, Meta, notify_payment_thanks(), addSarresid(), bedehi(), bedehiKhadamat(), bedehiNasb(), financial_dashboard() (+11 more)
### Community 15 - "SMSResult"
Cohesion: 0.13
Nodes (7): SMSProvider, SMSResult, webotp_message(), console_write(), ConsoleSMSProvider, HTTPSMSProvider, _FailingProvider
### Community 16 - "sms0098ws.py"
Cohesion: 0.10
Nodes (7): classify_delivery(), DeliveryCode, describe_send_code(), _as_text(), ZeroZeroNinetyEightWebServiceProvider, place_voip_call(), VoipCallResult
### Community 17 - "Admin Panel Customization"
Cohesion: 0.12
Nodes (10): CustomerSMSSettingAdmin, SMSLogAdmin, SMSProviderConfigAdmin, SMSProviderConfigForm, Meta, SMSQueueAdmin, SMSTemplateAdmin, StoreRoomAdmin (+2 more)
### Community 18 - "User"
Cohesion: 0.16
Nodes (17): User, Action, VisitQueue, UserProfile, notify_visit_scheduled(), ActionList(), ActionListAll(), ActionListToday() (+9 more)
### Community 19 - "django_conf"
Cohesion: 0.09
Nodes (11): Migration, Migration, Migration, Migration, Migration, Migration, Migration, Migration (+3 more)
### Community 20 - "test_customers.py"
Cohesion: 0.11
Nodes (4): login_superuser(), CustomerCrudTests, CustomerDeleteGuardTests, InactiveCustomerHiddenTests
### Community 21 - "phones.py"
Cohesion: 0.18
Nodes (6): primary_phones(), resolved_recipients(), save_primary_normalized(), stored_primary_normalized(), usable_entries(), primary_phones()
### Community 22 - "Login Template Forms"
Cohesion: 0.11
Nodes (17): 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 (+9 more)
### Community 12 - "admin_panel/templates/admin_panel/customerAction.html"
Cohesion: 0.13
Nodes (13): admin_panel/templates/admin_panel/customerActionInc.html, admin_panel:customerNew, admin_panel:customerNewAction URL, Action Data Model, Articl Model, Customer Model, DataTables Library, jQuery (+5 more)
### Community 23 - "cheque_inquiry.py"
Cohesion: 0.19
Nodes (6): api_check_sabt_inquiry(), api_check_status_inquiry(), parse_cheque_result_html(), run_bpi_cheque_inquiry_logic(), run_cbi_sayad_inquiry_logic(), solve_base64_captcha()
### Community 13 - "User"
Cohesion: 0.07
Nodes (30): User, Action, VisitQueue, Factor, Meta, FactorIteam, Product, Meta (+22 more)
### Community 14 - "run_all"
Cohesion: 0.05
Nodes (9): run_all(), activate_sms(), ColdStartTests, ConsoleEncodingTests, HttpProviderRobustnessTests, NormalizeTests, ScannerTests, WorkerTests (+1 more)
### Community 15 - "admin_panel/admin.py"
Cohesion: 0.09
Nodes (10): CustomerSMSSettingAdmin, SMSLogAdmin, SMSProviderConfigAdmin, SMSProviderConfigForm, Meta, SMSQueueAdmin, SMSTemplateAdmin, StoreRoomAdmin (+2 more)
### Community 16 - "stock_in"
Cohesion: 0.11
Nodes (11): Customer, Factor, FactorIteam, Product, ProductInStore, StoreRoom, VisitQueue, Command (+3 more)
### Community 17 - "admin_panel/templates/admin_panel/bedehi.html"
Cohesion: 0.12
Nodes (11): admin_panel:pardakhtNesiye, /panel/passCheck/, all_sarresid, URL: admin_panel:newFactor, mandehesabKP, admin_panel.ViewReportMali, toJalali, admin_panel:bedehi (+3 more)
### Community 18 - "hesabdariCheckPassFail.html"
Cohesion: 0.20
Nodes (9): Customer Data Object, Factor Data Object, Sarresid Data Object, admin_panel:customerNew URL, admin_panel:pardakhtNesiye URL, /panel/passCheck/ URL, admin_panel.ViewReportMali Permission, jQuery JS Library (+1 more)
### Community 19 - "Reference guide"
Cohesion: 0.07
Nodes (27): 10. Quality evaluation, 11. Agent integration, 12. Supported languages and formats, 13. Performance, 14. Known limits, 15. Documentation, 16. Improvement, 17. License (+19 more)
### Community 20 - "normalize_mobile"
Cohesion: 0.09
Nodes (12): customer_phone_entries(), _iter_sources(), normalize_primary_values(), PhoneEntry, primary_phones(), resolved_recipients(), save_primary_normalized(), stored_primary_normalized() (+4 more)
### Community 21 - "graphify"
Cohesion: 0.22
Nodes (8): Copilot Chat, graphify, graphify-out/graph.json, graphify-out/GRAPH_REPORT.md, graphify-out/wiki/index.md, graphify explain, graphify path, graphify query
### Community 22 - "hesabdariResidNashode.html"
Cohesion: 0.47
Nodes (5): jQuery, pDatepicker JS Library, custom_tags, toCurrency, toJalali
### Community 24 - "scanner.py"
Cohesion: 0.13
Nodes (12): enqueue_sms(), _aware(), _Budget, scan_cheque_due(), scan_cheque_registration(), scan_debt_due(), scan_nesiye_due(), scan_survey() (+4 more)
### Community 25 - "0002_auto_20220114_1616.py"
Cohesion: 0.29
Nodes (3): Migration, Migration, Migration
### Community 26 - "SMSResult"
Cohesion: 0.13
Nodes (8): SMSDeliveryResult, SMSProvider, SMSResult, webotp_message(), console_write(), ConsoleSMSProvider, HTTPSMSProvider, _FailingProvider
### Community 27 - "Rip'n Fast. Fewer Tokens. Better Code."
Cohesion: 0.05
Nodes (42): index(), 1. Codebase Navigation & Analysis (Ripwire vs. Graphify), 2. Dynamic Help, Self-Correction & Staleness, 3. Git Operations & Safety, 4. Development Server Lifecycle, 5. Environment, Frontend & PWA Safety, 6. End-to-End Browser Tests (Playwright), Project Operating & Agent Guidelines (+34 more)
### Community 28 - "models/sms.py"
Cohesion: 0.08
Nodes (12): CustomerSMSSetting, Meta, SMSLog, Meta, SMSProviderConfig, Meta, SMSQueue, Meta (+4 more)
### Community 29 - "admin_panel/templates/admin_panel/baseStore.html"
Cohesion: 0.13
Nodes (12): admin_panel/base.html, Customer Data Structure, Django Custom Tags: custom_tags, kamaDatepicker Library, URL: admin_panel:customers, URL: admin_panel:operations, URL: admin_panel:productAdd, URL: admin_panel:store (+4 more)
### Community 30 - "views/finance.py"
Cohesion: 0.20
Nodes (18): Article, Meta, addSarresid(), bedehi(), bedehiKhadamat(), bedehiNasb(), financial_dashboard(), hesabdari() (+10 more)
### Community 31 - "Customer Modals UI"
Cohesion: 0.67
Nodes (3): createCS click handler, openRow click handler, Customer Modals UI
### Community 32 - "views/factors.py"
Cohesion: 0.16
Nodes (6): FactorDel(), newFactor2(), InventoryException, _parse_jalali_date(), _parse_timestamp(), _safe_int()
### Community 34 - "views/sms.py"
Cohesion: 0.17
Nodes (12): parse_scan_since(), resolve_recipients_test(), _sample_context(), sms_customer_toggle(), sms_primary_toggle(), sms_queue(), sms_queue_retry(), sms_send_custom() (+4 more)
### Community 36 - "django_db_models"
Cohesion: 0.15
Nodes (3): get_provider_class(), get_sms_provider(), reset_sms_provider()
### Community 39 - "test_sms.py"
Cohesion: 0.14
Nodes (4): apply_timing(), current_timing_value(), timing_for(), TimingsTests
### Community 43 - "make_customer"
Cohesion: 0.15
Nodes (6): PhoneNumber, make_customer(), PanelTestCase, PrimaryNumberPanelTests, RuleTests, WelcomeTriggerTests
### Community 44 - "sms0098.py"
Cohesion: 0.15
Nodes (5): _clean(), to_local(), _configured_codes(), _response_code(), ZeroZeroNinetyEightSMSProvider
### Community 46 - "models/__init__.py"
Cohesion: 0.15
Nodes (5): format_amount(), format_jalali(), render_template(), _SafeDict, is_sms_enabled()
### Community 93 - "django_shortcuts"
Cohesion: 0.13
Nodes (3): Migration, ArticleType, Sarresid
### Community 94 - "resolve_recipients"
Cohesion: 0.20
Nodes (3): resolve_recipients(), mark_primary(), RecipientTests
### Community 95 - "factories.py"
### Community 24 - "factories.py"
Cohesion: 0.27
Nodes (5): ProductCategory, make_category(), make_product(), make_store(), _next()
### Community 96 - "write_tree"
### Community 25 - "Rip'n Fast. Fewer Tokens. Better Code."
Cohesion: 0.11
Nodes (18): Against the leading graph-database code-context MCP server, Better Code: It automates the review judgments nobody has time to make — every lens from published research, Documentation, Graph-Ranked Retrieval: It finds the right files more often than the alternatives, If it works on your codebase, tell us what it got wrong, Improve it with your agent, Licence, Quickstart (+10 more)
### Community 26 - "views/factors.py"
Cohesion: 0.19
Nodes (6): notify_factor_survey(), newFactor2(), InventoryException, _parse_jalali_date(), _parse_timestamp(), _safe_int()
### Community 27 - "to_local"
Cohesion: 0.17
Nodes (4): to_local(), _configured_codes(), _response_code(), ZeroZeroNinetyEightSMSProvider
### Community 30 - "NoticeMechanismTests"
Cohesion: 0.17
Nodes (3): dashBoxData(), resolve(), NoticeMechanismTests
### Community 31 - "enqueue.py"
Cohesion: 0.15
Nodes (6): format_amount(), format_jalali(), render_template(), _SafeDict, is_sms_enabled(), _sample_context()
### Community 32 - "enqueue_sms"
Cohesion: 0.21
Nodes (7): enqueue_sms(), _aware(), _Budget, scan_cheque_funding(), scan_nesiye_due(), scan_visit(), _template()
### Community 33 - "PanelTestCase"
Cohesion: 0.17
Nodes (5): PhoneNumber, DeletedStaysDeletedTests, EnqueueIdempotencyTests, PanelTestCase, WelcomeTriggerTests
### Community 34 - "ProductInStore"
Cohesion: 0.14
Nodes (8): Factor, Meta, FactorIteam, ProductInStore, Meta, MovementType, FactorDel(), newFactor()
### Community 35 - "admin_panel/templates/admin_panel/baseHesabdari.html"
Cohesion: 0.07
Nodes (27): Base Template, Customer Base Template, New Customer Base Template, Create Factor View, Customer List View, Django Custom Tags: custom_tags, URL: admin_panel:ActionListUserToday, URL: admin_panel:bedehi (+19 more)
### Community 36 - "Reference guide"
Cohesion: 0.14
Nodes (14): 10. Quality evaluation, 11. Agent integration, 13. Performance, 14. Known limits, 15. Documentation, 16. Improvement, 17. License, 1. Purpose and function (+6 more)
### Community 37 - "Factor Creation UI"
Cohesion: 0.15
Nodes (4): Customer ID Backup/New Factor Template, all_products (JS variable), buildOrderList (JS function), orderList (JS variable)
### Community 38 - "admin_panel/templates/admin_panel/bedehi.html"
Cohesion: 0.16
Nodes (10): admin_panel:pardakhtNesiye, /panel/passCheck/, all_sarresid, mandehesabKP, admin_panel.ViewReportMali, toJalali, admin_panel:bedehi, admin_panel:bedehiKhadamat (+2 more)
### Community 39 - "project_tree.py"
Cohesion: 0.21
Nodes (6): is_excluded_file(), main(), non_negative_integer(), parse_args(), sorted_entries(), warn()
### Community 40 - "CustomerSmsHistoryTests"
Cohesion: 0.15
Nodes (3): customer_phones(), toJalaliDT(), CustomerSmsHistoryTests
### Community 42 - "SMS Integration Docs"
Cohesion: 0.15
Nodes (12): **جدول کدهای خطای لینک ارتباطی**, **جدول کدهای خطای وب‌سرویس و وضعیت‌های دلیوری**, **راهنمای استفاده از Web Service**, **راهنمای استفاده از لینک ارتباطی (URL GET)**, **راهنمای استفاده از لینک ارتباطی و وب‌سرویس سامانه پیامک (0098vip.com و 0098sms.com)**, **فهرست مطالب**, **مقدمات اتصال**, **نمونه کدهای پیاده‌سازی** (+4 more)
### Community 43 - "timing_for"
Cohesion: 0.12
Nodes (6): current_timing_value(), timing_for(), sms_template_edit(), sms_templates(), _templates_redirect(), TimingsTests
### Community 45 - "stock_in"
Cohesion: 0.25
Nodes (6): Product, ProductInStore, StoreRoom, current_stock(), stock_in(), ProductInStoreMathTests
### Community 46 - "admin_panel/templates/admin_panel/customerAction.html"
Cohesion: 0.16
Nodes (10): admin_panel/templates/admin_panel/customerActionInc.html, admin_panel:customerNew, admin_panel:customerNewAction URL, Action Data Model, DataTables Library, jQuery, Django 'url' template tag, Bulma CSS (+2 more)
### Community 47 - "parts_count"
Cohesion: 0.16
Nodes (6): describe(), detect_encoding(), encoded_length(), is_gsm7(), parts_count(), SmsPartsTests
### Community 48 - "write_tree"
Cohesion: 0.21
Nodes (6): Counts, format_header(), generate_snapshot(), normalized_path(), write_tree(), visit()
### Community 98 - "reconciliation_tool.py"
Cohesion: 0.19
Nodes (4): remove_query_param(), check_financial_discrepancy(), run_360_audit(), run_audit()
### Community 50 - "Customer"
Cohesion: 0.16
Nodes (6): Customer, Factor, FactorIteam, VisitQueue, Command, NewFactor2ViewTests
### Community 99 - "ModelsPackageContractTests"
Cohesion: 0.05
Nodes (15): AdminConfig, AdminPanelConfig, make_std_streams_unicode_safe(), configure_sqlite_connection(), entrypoint.sh script, main(), run.sh script, start_service() (+7 more)
### Community 51 - "Phone Cleanup Guide"
Cohesion: 0.17
Nodes (11): اجرا روی سرور اصلی (production), اجرای دستور, اصلاح دستی شماره‌های قدیمی مشتریان, راه جایگزین: مهاجرت (migration), قاعدهٔ پاک‌سازی, مشاهدهٔ نتیجه, نکته‌ها, چرا؟ (+3 more)
### Community 100 - "django_conf"
### Community 53 - "manage.py"
Cohesion: 0.22
Nodes (4): AnnouncementRejected, place_announcement_call(), place_voip_call(), VoipCallResult
Nodes (5): entrypoint.sh script, main(), run.sh script, start_service(), usage()
### Community 103 - "customerIDFactorBackup.html"
### Community 54 - "Agent Operating Guidelines"
Cohesion: 0.18
Nodes (8): Client-side script in customerIDFactorBackup.html, URL: admin_panel:customerEdit, Customer Data, Factor Data Model, Product Data Model, Product Category Data Model, User Data Model, URL: /panel/productMojodi/
Nodes (8): 1. Codebase Navigation & Analysis (Ripwire vs. Graphify), 2. Dynamic Help, Self-Correction & Staleness, 3. Git Operations & Safety, 4. Development Server Lifecycle, 5. Environment, Frontend & PWA Safety, 6. End-to-End Browser Tests (Playwright), Project Operating & Agent Guidelines, Routing Gate & Pipeline
### Community 110 - "0061_sms_timing_and_primary.py"
### Community 57 - "test_sms.py"
Cohesion: 0.17
Nodes (4): to_display(), _clean(), normalize_mobile(), NormalizeTests
### Community 58 - "Financial Data Objects"
Cohesion: 0.20
Nodes (9): Customer Data Object, Factor Data Object, Sarresid Data Object, admin_panel:customerNew URL, admin_panel:pardakhtNesiye URL, /panel/passCheck/ URL, admin_panel.ViewReportMali Permission, jQuery JS Library (+1 more)
### Community 60 - "بازمحاسبهٔ «آخرین بازدید» مشتریان"
Cohesion: 0.18
Nodes (10): اجرا روی production, بازمحاسبهٔ «آخرین بازدید» مشتریان, بررسی صحت داده (SQL، پیش از اجرا), دستور, دقیقاً چه می‌کند؟, نمونهٔ خروجی, نکته‌های مهم, گزینه‌ها (+2 more)
### Community 62 - "SMS Timing Migration"
Cohesion: 0.22
Nodes (4): backfill_primary_phones(), Migration, _normalize(), normalize_template_timing()
### Community 111 - "bale/providers.py"
Cohesion: 0.31
Nodes (4): BaleBotProvider, ConsoleBaleProvider, get_bale_provider(), NotificationResult
### Community 63 - "Articl Model"
Cohesion: 0.67
Nodes (3): Articl Model, Customer Model, articls
### Community 116 - "Customer"
Cohesion: 0.29
Nodes (3): Customer, Meta, PhoneNumber
### Community 64 - "customerIDFactorBackup.html"
Cohesion: 0.18
Nodes (8): Client-side script in customerIDFactorBackup.html, URL: admin_panel:customerEdit, Customer Data, Factor Data Model, Product Data Model, Product Category Data Model, User Data Model, URL: /panel/productMojodi/
### Community 117 - "customerNewBackup.html"
### Community 67 - "Graphify Tooling Docs"
Cohesion: 0.22
Nodes (8): Copilot Chat, graphify, graphify-out/graph.json, graphify-out/GRAPH_REPORT.md, graphify-out/wiki/index.md, graphify explain, graphify path, graphify query
### Community 71 - "admin_panel/entezar.html"
Cohesion: 0.40
Nodes (4): Customer Data Structure, kamaDatepicker Library, custom_tags, toJalali filter
### Community 72 - "customerNewBackup.html"
Cohesion: 0.29
Nodes (6): admin_panel:newFactor URL, Category Data, Client-side Form Logic, CSRF Token, custom_tags, static
### Community 73 - "hesabdariResidNashode.html"
Cohesion: 0.47
Nodes (5): jQuery, pDatepicker JS Library, custom_tags, toCurrency, toJalali
### Community 76 - "Timezone Migration History"
Cohesion: 0.29
Nodes (3): Migration, Migration, Migration
### Community 77 - "models/__init__.py"
Cohesion: 0.08
Nodes (9): Customer, Meta, PhoneNumber, ProductCategory, ProductStockHistory, Meta, StoreRoom, Meta (+1 more)
### Community 81 - "Installation Guide"
Cohesion: 0.40
Nodes (5): 3.1 Install a prebuilt binary, 3.2 Build from source, 3.3 Install the agent skills, 3.4 Register the MCP server (optional), 3. Installation
### Community 82 - "Project Honesty Contract"
Cohesion: 0.40
Nodes (5): In the numbers, In the output, In the tests, The honesty contract, What it misses, and what to run next
### Community 85 - "stop.sh"
Cohesion: 0.73
Nodes (5): is_our_process(), say(), stop.sh script, stop_pid(), windows_cleanup()
### Community 86 - "Output Format Specs"
Cohesion: 0.50
Nodes (4): 6.1 Output example, 6.2 Exit codes, 6.3 JSON output, 6. Output format
### Community 87 - "Performance Benchmarks"
Cohesion: 0.50
Nodes (4): Against other tools, Measured, What it saves you, in tokens, Where its own cycles go — hardware counters, per scope
### Community 88 - "SMS Integration Overview"
Cohesion: 0.67
Nodes (3): SMS Gateway Integration Guide, SMS Settings UI, Python Dependencies
### Community 90 - "Customer Modal UI"
Cohesion: 0.67
Nodes (3): createCS click handler, openRow click handler, Customer Modals UI
### Community 92 - "Infrastructure Services"
Cohesion: 0.67
Nodes (3): Docker Infrastructure, SMS Delivery Tracker, SMS Worker Service
### Community 93 - "Agent Setup Guide"
Cohesion: 0.67
Nodes (3): 1. (Optional) Register the MCP server, 2. Install the skills, Set it up in your coding agent
### Community 94 - "First Use Guide"
Cohesion: 0.67
Nodes (3): 4.1 Make the first map, 4.2 Use the common commands, 4. First use
### Community 98 - "reconciliation_tool.py"
Cohesion: 0.24
Nodes (3): remove_query_param(), run_360_audit(), run_audit()
### Community 113 - "bale/providers.py"
Cohesion: 0.36
Nodes (4): BaleBotProvider, ConsoleBaleProvider, get_bale_provider(), NotificationResult
### Community 166 - "sms_settings"
Cohesion: 0.33
Nodes (4): parse_jalali_date(), parse_scan_since(), resolve_recipients_test(), sms_settings()
### Community 169 - "index"
Cohesion: 0.67
Nodes (3): index(), `nest=` is a max, so it cannot tell a long function from a tangled one, The quality panel
## Ambiguous Edges - Review These
- `admin_panel/base.html` → `admin_panel/templates/admin_panel/baseHesabdari.html` [AMBIGUOUS]
- `admin_panel/templates/admin_panel/baseHesabdari.html` → `Base Template` [AMBIGUOUS]
admin_panel/templates/admin_panel/baseHesabdari.html · relation: conceptually_related_to
## Knowledge Gaps
- **110 isolated node(s):** `DataTables Library`, `Customer Data Object`, `Factor Data Object`, `admin_panel:pardakhtNesiye URL`, `/panel/passCheck/ URL` (+105 more)
These have ≤1 connection - possible missing edges or undocumented components. (Counts symbols only; 575 node(s) total have ≤1 connection when file, concept and rationale nodes are included.)
- **93 thin communities (<3 nodes) omitted from report** — run `graphify query` to explore isolated nodes.
- **118 isolated node(s):** `base.html`, `toCurrency`, `DataTables Library`, `Customer Data Object`, `Factor Data Object` (+113 more)
These have ≤1 connection - possible missing edges or undocumented components. (Counts symbols only; 738 node(s) total have ≤1 connection when file, concept and rationale nodes are included.)
- **97 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 `SMSProviderConfig` connect `models/sms.py` to `scanner.py`?**
_High betweenness centrality (0.031) - this node is a cross-community bridge._
- **Why does `Rip'n Fast. Fewer Tokens. Better Code.` connect `Rip'n Fast. Fewer Tokens. Better Code.` to `Reference guide`, `.load`, `index`, `Project Honesty Contract`, `Agent Operating Guidelines`, `Performance Benchmarks`, `Agent Setup Guide`?**
_High betweenness centrality (0.046) - this node is a cross-community bridge._
- **Are the 2 inferred relationships involving `make_customer()` (e.g. with `Customer` and `PhoneNumber`) actually correct?**
_`make_customer()` has 2 INFERRED edges - model-reasoned connections that need verification._
- **What connects `DataTables Library`, `Customer Data Object`, `Factor Data Object` to the rest of the system?**
_110 weakly-connected nodes found - possible documentation gaps or missing edges._
- **Should `views/store.py` be split into smaller, more focused modules?**
_Cohesion score 0.06540825285338016 - nodes in this community are weakly interconnected._
- **Why does `Languages` connect `Rip'n Fast. Fewer Tokens. Better Code.` to `scanner.py`?**
_High betweenness centrality (0.026) - this node is a cross-community bridge._
- **Should `django_db` be split into smaller, more focused modules?**
_Cohesion score 0.06896551724137931 - nodes in this community are weakly interconnected._
- **What connects `base.html`, `toCurrency`, `DataTables Library` to the rest of the system?**
_118 weakly-connected nodes found - possible documentation gaps or missing edges._
- **Should `views/sms.py` be split into smaller, more focused modules?**
_Cohesion score 0.1425287356321839 - nodes in this community are weakly interconnected._
- **Why does `Languages` connect `.load` to `Rip'n Fast. Fewer Tokens. Better Code.`?**
_High betweenness centrality (0.044) - this node is a cross-community bridge._
- **Should `run_all` be split into smaller, more focused modules?**
_Cohesion score 0.05552617662612375 - nodes in this community are weakly interconnected._
### 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`?**
- **What is the exact relationship between `admin_panel/templates/admin_panel/baseHesabdari.html` and `Base Template`?**
_Edge tagged AMBIGUOUS (relation: conceptually_related_to) - confidence is low._
+5 -5
View File
@@ -63,12 +63,12 @@
</div>
<div id="legend"></div>
</div>
<div id="stats">1280 nodes &middot; 2237 edges &middot; 140 communities</div>
<div id="stats">1684 nodes &middot; 3008 edges &middot; 171 communities</div>
</div>
<script>
const RAW_NODES = [{"id": "admin_panel_models_store_storetransferrequest", "label": "StoreTransferRequest", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 13.8, "font": {"size": 0, "color": "#ffffff"}, "title": "StoreTransferRequest", "community": 0, "community_name": "views/store.py", "source_file": "admin_panel/models/store.py", "file_type": "code", "degree": 10}, {"id": "admin_panel_models_store_storetransferrequest_meta", "label": "Meta", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.4, "font": {"size": 0, "color": "#ffffff"}, "title": "Meta", "community": 0, "community_name": "views/store.py", "source_file": "admin_panel/models/store.py", "file_type": "code", "degree": 1}, {"id": "admin_panel_models_store_storetransferrequest_status", "label": "Status", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.4, "font": {"size": 0, "color": "#ffffff"}, "title": "Status", "community": 0, "community_name": "views/store.py", "source_file": "admin_panel/models/store.py", "file_type": "code", "degree": 1}, {"id": "tests_test_inventory_productinstoremathtests", "label": "ProductInStoreMathTests", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 13.4, "font": {"size": 0, "color": "#ffffff"}, "title": "ProductInStoreMathTests", "community": 0, "community_name": "views/store.py", "source_file": "tests/test_inventory.py", "file_type": "code", "degree": 9}, {"id": "tests_test_inventory_transferworkflowtests", "label": "TransferWorkflowTests", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 14.9, "font": {"size": 12, "color": "#ffffff"}, "title": "TransferWorkflowTests", "community": 0, "community_name": "views/store.py", "source_file": "tests/test_inventory.py", "file_type": "code", "degree": 13}, {"id": "integrations_announcements_announcementrejected", "label": "AnnouncementRejected", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 11.5, "font": {"size": 0, "color": "#ffffff"}, "title": "AnnouncementRejected", "community": 100, "community_name": "django_conf", "source_file": "integrations/announcements.py", "file_type": "code", "degree": 4}, {"id": "integrations_voip_voipcallresult", "label": "VoipCallResult", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": "VoipCallResult", "community": 100, "community_name": "django_conf", "source_file": "integrations/voip.py", "file_type": "code", "degree": 2}, {"id": "admin_panel_management_commands_sms_worker_command", "label": "Command", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 13.8, "font": {"size": 0, "color": "#ffffff"}, "title": "Command", "community": 101, "community_name": "Command", "source_file": "admin_panel/management/commands/sms_worker.py", "file_type": "code", "degree": 10}, {"id": "tests_test_urls_contract_urlcontracttests", "label": "UrlContractTests", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 12.3, "font": {"size": 0, "color": "#ffffff"}, "title": "UrlContractTests", "community": 102, "community_name": "UrlContractTests", "source_file": "tests/test_urls_contract.py", "file_type": "code", "degree": 6}, {"id": "admin_panel_models_system_cachetable", "label": "CacheTable", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": "CacheTable", "community": 104, "community_name": "system.py", "source_file": "admin_panel/models/system.py", "file_type": "code", "degree": 2}, {"id": "integrations_sms_behin_behinsmsprovider", "label": "BehinSMSProvider", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 13.8, "font": {"size": 0, "color": "#ffffff"}, "title": "BehinSMSProvider", "community": 105, "community_name": "BehinSMSProvider", "source_file": "integrations/sms/behin.py", "file_type": "code", "degree": 10}, {"id": "tests_test_customers_customercrudtests", "label": "CustomerCrudTests", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 12.7, "font": {"size": 0, "color": "#ffffff"}, "title": "CustomerCrudTests", "community": 106, "community_name": "test_customers.py", "source_file": "tests/test_customers.py", "file_type": "code", "degreLine truncated
const RAW_EDGES = [{"from": "admin_panel_services_approve_transfer_request", "to": "admin_panel_models_store_storetransferrequest", "label": "references", "title": "references [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "admin_panel_services_cancel_transfer_request", "to": "admin_panel_models_store_storetransferrequest", "label": "references", "title": "references [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "admin_panel_services_create_transfer_request", "to": "admin_panel_models_store_storetransferrequest", "label": "references", "title": "references [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "admin_panel_services_reject_transfer_request", "to": "admin_panel_models_store_storetransferrequest", "label": "references", "title": "references [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "admin_panel_models_store", "to": "admin_panel_models_store_storetransferrequest", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "admin_panel_models_store_storetransferrequest", "to": "admin_panel_models_store_storetransferrequest_meta", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "admin_panel_models_store_storetransferrequest", "to": "admin_panel_models_store_storetransferrequest_status", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "admin_panel_models_store_storetransferrequest", "to": "admin_panel_models_store_storetransferrequest_str", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "admin_panel_models_store_storetransferrequest", "to": "admin_panel_models_store_storetransferrequest_clean", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "admin_panel_models_store_storetransferrequest", "to": "admin_models_user", "label": "uses", "title": "uses [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "tests_test_inventory", "to": "tests_test_inventory_productinstoremathtests", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_inventory_productinstoremathtests", "to": "tests_test_inventory_py_testcase", "label": "inherits", "title": "inherits [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_inventory_productinstoremathtests", "to": "tests_test_inventory_productinstoremathtests_setup", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_inventory_productinstoremathtests", "to": "tests_test_inventory_productinstoremathtests_test_initial_in_records_history_and_stock", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_inventory_productinstoremathtests", "to": "tests_test_inventory_productinstoremathtests_test_multiple_movements_accumulate_correctly", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_inventory_productinstoremathtests", "to": "tests_test_inventory_productinstoremathtests_test_editing_a_row_updates_stock_and_history", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_inventory_productinstoremathtests", "to": "tests_test_inventory_productinstoremathtests_test_deleting_a_row_creates_history_and_reduces_stock", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_inventory_productinstoremathtests", "to": "tests_test_inventory_productinstoremathtests_test_garbage_numeric_values_are_coerced_to_zero", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_inventory_productinstoremathtests", "to": "admin_models_productinstore", "label": "uses", "title": "uses [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "tests_test_inventory", "to": "tests_test_inventory_transferworkflowtests", "label": "contains", "tLine truncated
const LEGEND = [{"cid": 0, "color": "#4E79A7", "label": "views/store.py", "count": 68}, {"cid": 1, "color": "#F28E2B", "label": "project_tree.py", "count": 14}, {"cid": 2, "color": "#E15759", "label": "sqlite_db_backup.py", "count": 11}, {"cid": 3, "color": "#76B7B2", "label": "django_db", "count": 29}, {"cid": 4, "color": "#59A14F", "label": "Customer ID Backup/New Factor Template", "count": 14}, {"cid": 5, "color": "#EDC948", "label": "views/customers.py", "count": 26}, {"cid": 6, "color": "#B07AA1", "label": "cheque_inquiry.py", "count": 21}, {"cid": 7, "color": "#FF9DA7", "label": "admin_panel/templates/admin_panel/baseHesabdari.html", "count": 15}, {"cid": 8, "color": "#9C755F", "label": "django_db_models_deletion", "count": 31}, {"cid": 9, "color": "#BAB0AC", "label": "0051_auto_20260705_1356.py", "count": 2}, {"cid": 10, "color": "#4E79A7", "label": "admin_panel/storeBK1.html", "count": 19}, {"cid": 11, "color": "#F28E2B", "label": "ViewSmokeTests", "count": 8}, {"cid": 12, "color": "#E15759", "label": "admin_panel/templates/admin_panel/customerAction.html", "count": 17}, {"cid": 13, "color": "#76B7B2", "label": "User", "count": 48}, {"cid": 14, "color": "#59A14F", "label": "run_all", "count": 64}, {"cid": 15, "color": "#EDC948", "label": "admin_panel/admin.py", "count": 28}, {"cid": 16, "color": "#B07AA1", "label": "stock_in", "count": 24}, {"cid": 17, "color": "#FF9DA7", "label": "admin_panel/templates/admin_panel/bedehi.html", "count": 20}, {"cid": 18, "color": "#9C755F", "label": "hesabdariCheckPassFail.html", "count": 10}, {"cid": 19, "color": "#BAB0AC", "label": "Reference guide", "count": 27}, {"cid": 20, "color": "#4E79A7", "label": "normalize_mobile", "count": 34}, {"cid": 21, "color": "#F28E2B", "label": "graphify", "count": 9}, {"cid": 22, "color": "#E15759", "label": "hesabdariResidNashode.html", "count": 6}, {"cid": 23, "color": "#76B7B2", "label": "0017_factoriteam_garantyesh.py", "count": 2}, {"cid": 24, "color": "#59A14F", "label": "scanner.py", "count": 32}, {"cid": 25, "color": "#EDC948", "label": "0002_auto_20220114_1616.py", "count": 7}, {"cid": 26, "color": "#B07AA1", "label": "SMSResult", "count": 30}, {"cid": 27, "color": "#FF9DA7", "label": "Rip&#x27;n Fast. Fewer Tokens. Better Code.", "count": 44}, {"cid": 28, "color": "#9C755F", "label": "models/sms.py", "count": 26}, {"cid": 29, "color": "#BAB0AC", "label": "admin_panel/templates/admin_panel/baseStore.html", "count": 15}, {"cid": 30, "color": "#4E79A7", "label": "views/finance.py", "count": 24}, {"cid": 31, "color": "#F28E2B", "label": "Customer Modals UI", "count": 3}, {"cid": 32, "color": "#E15759", "label": "views/factors.py", "count": 22}, {"cid": 33, "color": "#76B7B2", "label": "0034_alter_article_sarresid.py", "count": 2}, {"cid": 34, "color": "#59A14F", "label": "views/sms.py", "count": 22}, {"cid": 35, "color": "#EDC948", "label": "0035_alter_article_sarresid.py", "count": 2}, {"cid": 36, "color": "#B07AA1", "label": "django_db_models", "count": 20}, {"cid": 37, "color": "#FF9DA7", "label": "0010_auto_20220122_1546.py", "count": 2}, {"cid": 38, "color": "#9C755F", "label": "0040_customer_laghv_bazdid.py", "count": 2}, {"cid": 39, "color": "#BAB0AC", "label": "test_sms.py", "count": 20}, {"cid": 40, "color": "#4E79A7", "label": "0048_alter_productinstore_options.py", "count": 2}, {"cid": 41, "color": "#F28E2B", "label": "0032_article_paystatus.py", "count": 2}, {"cid": 42, "color": "#E15759", "label": "0033_article_nahvepardakht.py", "count": 2}, {"cid": 43, "color": "#76B7B2", "label": "make_customer", "count": 19}, {"cid": 44, "color": "#59A14F", "label": "sms0098.py", "count": 19}, {"cid": 45, "color": "#EDC948", "label": "0044_sarresid_desc.py", "count": 2}, {"cid": 46, "color": "#B07AA1", "label": "models/__init__.py", "count": 18}, {"cid": 47, "color": "#FF9DA7", "label": "make_user", "count": 17}, {"cid": 48, "color": "#9C755F", "label": "GEMINI.md", "count": 2}, {"cid": 49, "color": "#BAB0AC", "label": "admin/migrations/__init__.py", "count": 1}, {"cid": 50, "color": "#4E79A7", "label": "Customer Action Include", "count": 1}, {"cid": 51, "color": "#F28E2B", "label": "New Customer Base Template", "count": 1}, {"cid": 52, "color": "#E15759", "label": "Customer Feedback Partial", "count": 1}, {"cid": 53, "color": "#76B7B2", "label": "Customer Factor Detail", "count": 1}, {"cid": 54, "color": "#59A14F", "label": "Customer Accounting Template", "count": 1}, {"cid": 55, "color": "#EDC948", "label": "Customer Factor List", "count": 1}, {"cid": 56, "color": "#B07AA1", "label": "Customer Feedback Page", "count": 1}, {"cid": 57, "color": "#FF9DA7", "label": "commands/__init__.py", "count": 1}, {"cid": 58, "color": "#9C755F", "label": "management/__init__.py", "count": 1}, {"cid": 59, "color": "#BAB0AC", "label": "admin_panel/migrations/__init__.py", "count": 1}, {"cid": 60, "color": "#4E79A7", "label": "Action List Template", "count": 1}, {"cid": 61, "color": "#F28E2B", "label": "base.html", "count": 1}, {"cid": 62,Line truncated
const RAW_NODES = [{"id": "admin_panel_management_commands_sms_scan_command", "label": "Command", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 12.4, "font": {"size": 0, "color": "#ffffff"}, "title": "Command", "community": 1, "community_name": "run_all", "source_file": "admin_panel/management/commands/sms_scan.py", "file_type": "code", "degree": 7}, {"id": "tests_test_sms_autosendtests", "label": "AutoSendTests", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 14.0, "font": {"size": 0, "color": "#ffffff"}, "title": "AutoSendTests", "community": 1, "community_name": "run_all", "source_file": "tests/test_sms.py", "file_type": "code", "degree": 12}, {"id": "tests_test_sms_coldstarttests", "label": "ColdStartTests", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 14.0, "font": {"size": 0, "color": "#ffffff"}, "title": "ColdStartTests", "community": 1, "community_name": "run_all", "source_file": "tests/test_sms.py", "file_type": "code", "degree": 12}, {"id": "tests_test_sms_consoleencodingtests", "label": "ConsoleEncodingTests", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 13.4, "font": {"size": 0, "color": "#ffffff"}, "title": "ConsoleEncodingTests", "community": 1, "community_name": "run_all", "source_file": "tests/test_sms.py", "file_type": "code", "degree": 10}, {"id": "tests_test_sms_scannertests", "label": "ScannerTests", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 15.1, "font": {"size": 12, "color": "#ffffff"}, "title": "ScannerTests", "community": 1, "community_name": "run_all", "source_file": "tests/test_sms.py", "file_type": "code", "degree": 15}, {"id": "admin_panel_migrations_0001_initial_migration", "label": "Migration", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.3, "font": {"size": 0, "color": "#ffffff"}, "title": "Migration", "community": 10, "community_name": "django_db_models_deletion", "source_file": "admin_panel/migrations/0001_initial.py", "file_type": "code", "degree": 1}, {"id": "admin_panel_migrations_0007_productinstore_factor_migration", "label": "Migration", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.3, "font": {"size": 0, "color": "#ffffff"}, "title": "Migration", "community": 10, "community_name": "django_db_models_deletion", "source_file": "admin_panel/migrations/0007_productinstore_factor.py", "file_type": "code", "degree": 1}, {"id": "admin_panel_migrations_0008_storeroom_user_migration", "label": "Migration", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.3, "font": {"size": 0, "color": "#ffffff"}, "title": "Migration", "community": 10, "community_name": "django_db_models_deletion", "source_file": "admin_panel/migrations/0008_storeroom_user.py", "file_type": "code", "degree": 1}, {"id": "admin_panel_migrations_0018_alter_factoriteam_product_migration", "label": "Migration", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.3, "font": {"size": 0, "color": "#ffffff"}, "title": "Migration", "community": 10, "community_name": "django_db_models_deletion", "source_file": "admin_panel/migrations/0018_alter_factoriteam_product.py", "file_type": "code", "degree": 1}, {"id": "admin_panel_migrations_0019_article_articletype_migration", "label": "Migration", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.3, "font": {"size": 0, "color": "#ffffff"}, "title": "Migration", "community": 10, "community_name": "django_db_models_deletion", "source_file": "admin_panel/migrations/0019_article_articletype.py", "file_type": "code", "degree": 1}, {"id": "admin_panel_migrations_0036_sarresid_migration", "label": "Migration", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.3, "font": {"size": 0, "color": "#ffffff"}, "title": "Migration", "community": 10, "community_name": "django_db_models_deletion", "source_file": "admin_panel/migrations/0036_sarresid.py", "file_type": "code", "degree": 1}, {"id": "admin_panel_migrations_0038_auto_20240213_1735_migration", "label": "Migration", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.3, "font": {"size": 0, "color": "#ffffff"}, "title": "Migration", "community": 10, "community_name": "django_db_models_deletLine truncated
const RAW_EDGES = [{"from": "admin_panel_management_commands_sms_scan", "to": "admin_panel_management_commands_sms_scan_command", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "admin_panel_management_commands_sms_scan_command", "to": "admin_panel_management_commands_sms_scan_py_basecommand", "label": "inherits", "title": "inherits [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "admin_panel_management_commands_sms_scan_command", "to": "admin_panel_management_commands_sms_scan_command_init", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "admin_panel_management_commands_sms_scan_command", "to": "admin_panel_management_commands_sms_scan_command_add_arguments", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "admin_panel_management_commands_sms_scan_command", "to": "admin_panel_management_commands_sms_scan_command_handle", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "admin_panel_management_commands_sms_scan_command", "to": "admin_panel_management_commands_sms_scan_command_handle_signal", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "admin_panel_management_commands_sms_scan_command", "to": "admin_panel_management_commands_sms_scan_command_emit", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_sms", "to": "tests_test_sms_autosendtests", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_sms_autosendtests", "to": "tests_test_sms_paneltestcase", "label": "inherits", "title": "inherits [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_sms_autosendtests", "to": "tests_test_sms_autosendtests_overdue_visit_customer", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_sms_autosendtests", "to": "tests_test_sms_autosendtests_test_default_is_pending_so_manager_must_approve", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_sms_autosendtests", "to": "tests_test_sms_autosendtests_test_auto_send_enqueues_approved_without_manager", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_sms_autosendtests", "to": "tests_test_sms_autosendtests_test_auto_send_does_not_bypass_opt_out_or_disabled", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_sms_autosendtests", "to": "tests_test_sms_autosendtests_test_welcome_auto_send_skips_approval_on_customer_creation", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_sms_autosendtests", "to": "tests_test_sms_autosendtests_test_template_edit_persists_auto_send", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_sms_autosendtests", "to": "tests_test_sms_autosendtests_test_templates_page_shows_auto_send_switch", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_sms_rationale_1069", "to": "tests_test_sms_autosendtests", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_sms_autosendtests", "to": "admin_models_phonenumber", "label": "uses", "title": "uses [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "tests_test_sms_autosendtests", "to": "admin_models_customer", "label": "uses", "title": "uses [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "tests_test_sms", "to": "tests_test_sms_coldstarttests", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_sms_coldstarttests", "to": "tests_test_sms_py_testcase", "label": "inherits", "Line truncated
const LEGEND = [{"cid": 0, "color": "#4E79A7", "label": "views/sms.py", "count": 30}, {"cid": 1, "color": "#F28E2B", "label": "run_all", "count": 62}, {"cid": 2, "color": "#E15759", "label": "django_db", "count": 49}, {"cid": 3, "color": "#76B7B2", "label": "views/store.py", "count": 63}, {"cid": 4, "color": "#59A14F", "label": "ModelsPackageContractTests", "count": 28}, {"cid": 5, "color": "#EDC948", "label": "PhoneCleanupTests", "count": 33}, {"cid": 6, "color": "#B07AA1", "label": ".load", "count": 61}, {"cid": 7, "color": "#FF9DA7", "label": "models/sms.py", "count": 32}, {"cid": 8, "color": "#9C755F", "label": "logging", "count": 34}, {"cid": 9, "color": "#BAB0AC", "label": "views/customers.py", "count": 34}, {"cid": 10, "color": "#4E79A7", "label": "django_db_models_deletion", "count": 25}, {"cid": 11, "color": "#F28E2B", "label": "make_customer", "count": 20}, {"cid": 12, "color": "#E15759", "label": "customer_phone_entries", "count": 23}, {"cid": 13, "color": "#76B7B2", "label": "EventTriggerTests", "count": 22}, {"cid": 14, "color": "#59A14F", "label": "views/finance.py", "count": 26}, {"cid": 15, "color": "#EDC948", "label": "SMSResult", "count": 31}, {"cid": 16, "color": "#B07AA1", "label": "sms0098ws.py", "count": 29}, {"cid": 17, "color": "#FF9DA7", "label": "Admin Panel Customization", "count": 22}, {"cid": 18, "color": "#9C755F", "label": "User", "count": 25}, {"cid": 19, "color": "#BAB0AC", "label": "django_conf", "count": 23}, {"cid": 20, "color": "#4E79A7", "label": "test_customers.py", "count": 21}, {"cid": 21, "color": "#F28E2B", "label": "phones.py", "count": 14}, {"cid": 22, "color": "#E15759", "label": "Login Template Forms", "count": 19}, {"cid": 23, "color": "#76B7B2", "label": "cheque_inquiry.py", "count": 19}, {"cid": 24, "color": "#59A14F", "label": "factories.py", "count": 14}, {"cid": 25, "color": "#EDC948", "label": "Rip&#x27;n Fast. Fewer Tokens. Better Code.", "count": 18}, {"cid": 26, "color": "#B07AA1", "label": "views/factors.py", "count": 20}, {"cid": 27, "color": "#FF9DA7", "label": "to_local", "count": 16}, {"cid": 28, "color": "#9C755F", "label": "make_user", "count": 23}, {"cid": 29, "color": "#BAB0AC", "label": "QueueReviewTests", "count": 9}, {"cid": 30, "color": "#4E79A7", "label": "NoticeMechanismTests", "count": 16}, {"cid": 31, "color": "#F28E2B", "label": "enqueue.py", "count": 17}, {"cid": 32, "color": "#E15759", "label": "enqueue_sms", "count": 18}, {"cid": 33, "color": "#76B7B2", "label": "PanelTestCase", "count": 13}, {"cid": 34, "color": "#59A14F", "label": "ProductInStore", "count": 16}, {"cid": 35, "color": "#EDC948", "label": "admin_panel/templates/admin_panel/baseHesabdari.html", "count": 31}, {"cid": 36, "color": "#B07AA1", "label": "Reference guide", "count": 14}, {"cid": 37, "color": "#FF9DA7", "label": "Factor Creation UI", "count": 14}, {"cid": 38, "color": "#9C755F", "label": "admin_panel/templates/admin_panel/bedehi.html", "count": 14}, {"cid": 39, "color": "#BAB0AC", "label": "project_tree.py", "count": 14}, {"cid": 40, "color": "#4E79A7", "label": "CustomerSmsHistoryTests", "count": 24}, {"cid": 41, "color": "#F28E2B", "label": "TemplatesPageUITests", "count": 14}, {"cid": 42, "color": "#E15759", "label": "SMS Integration Docs", "count": 13}, {"cid": 43, "color": "#76B7B2", "label": "timing_for", "count": 20}, {"cid": 44, "color": "#59A14F", "label": "django_shortcuts", "count": 12}, {"cid": 45, "color": "#EDC948", "label": "stock_in", "count": 14}, {"cid": 46, "color": "#B07AA1", "label": "admin_panel/templates/admin_panel/customerAction.html", "count": 14}, {"cid": 47, "color": "#FF9DA7", "label": "parts_count", "count": 22}, {"cid": 48, "color": "#9C755F", "label": "write_tree", "count": 14}, {"cid": 49, "color": "#BAB0AC", "label": "CustomerInfoCardUITests", "count": 12}, {"cid": 50, "color": "#4E79A7", "label": "Customer", "count": 14}, {"cid": 51, "color": "#F28E2B", "label": "Phone Cleanup Guide", "count": 12}, {"cid": 52, "color": "#E15759", "label": "SmsReportTests", "count": 17}, {"cid": 53, "color": "#76B7B2", "label": "manage.py", "count": 11}, {"cid": 54, "color": "#59A14F", "label": "Agent Operating Guidelines", "count": 11}, {"cid": 55, "color": "#EDC948", "label": "SMSDeliveryCommandTests", "count": 10}, {"cid": 56, "color": "#B07AA1", "label": "BehinSMSProvider", "count": 8}, {"cid": 57, "color": "#FF9DA7", "label": "test_sms.py", "count": 16}, {"cid": 58, "color": "#9C755F", "label": "Financial Data Objects", "count": 10}, {"cid": 59, "color": "#BAB0AC", "label": "Hybrid Migration Command", "count": 10}, {"cid": 60, "color": "#4E79A7", "label": "\u0628\u0627\u0632\u0645\u062d\u0627\u0633\u0628\u0647\u0654 \u00ab\u0622\u062e\u0631\u06cc\u0646 \u0628\u0627\u0632\u062f\u06cc\u062f\u00bb \u0645\u0634\u062a\u0631\u06cc\u0627\u0646", "count": 11}, {"cid": 61, "color": "#F28E2B", "label": "Resource Cleanup Handler", "count": 10}, {"cid": 62, "color": "#E15759", "label": "SMS Timing Migration", "count": 10}, {"cid": 63, "color": "#Line truncated
// HTML-escape helper — prevents XSS when injecting graph data into innerHTML
function esc(s) {
@@ -293,7 +293,7 @@ LEGEND.forEach(c => {
</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": "graphify_output_artifacts", "label": "Graphify Output Artifacts", "nodes": ["graphify-out_graph_json", "graphify-out_wiki_index_md", "graphify-out_graph_report_md"], "relation": "form", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": ".github/copilot-instructions.md"}, {"id": "graphify_subcommands", "label": "Graphify Subcommands", "nodes": ["graphify_query", "graphify_path", "graphify_explain"], "relation": "form", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": ".github/copilot-instructions.md"}, {"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": "bedehi_report_navigation", "label": "Bedehi Report Navigation", "nodes": ["django_urls_admin_panel_bedehi", "django_urls_admin_panel_bedehikhadamat", "django_urls_admin_panel_bedehinasb"], "relation": "participate_in", "confidence": "EXTRACTED", "source_file": "admin_panel/templates/admin_panel/bedehi.html"}, {"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_list_page", "label": "Customer List Page", "nodes": ["admin_panel_templates_admin_panel_entezar_html", "concept_customer_data", "concept_url_admin_panel_customers"], "relation": "form", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "admin_panel/templates/admin_panel/entezar.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": "new_factor_creation_flow", "label": "New Factor Creation Flow", "nodes": ["admin_panel_templates_admin_panel_customernewbackup_html", "admin_panel_urls_newfactor", "concept_client_side_form_logic", "concept_customer", "concept_category"], "relation": "participate_in", "confidence": "INFERRED", "confidence_score": 0.85, "source_file": "admin_panel/templates/admin_panel/customerNewBackup.html"}, {"id": "customer_management_ui_flow", "label": "Customer Management UI Flow", "nodes": ["admin_panel_templates_admin_panel_customersbk_html", "admin_panel_templates_admin_panel_customersbk_html_createcs", "admin_panel_templates_admin_panel_customersbk_html_openrow", "concept_customer_modal_ui"], "relation": "participate_in", "confidence": "INFERRED", "confidence_score": 0.9, "source_file": "admin_panel/templates/admin_panel/customersBK.html"}, {"id": "financial_management_flow", "label": "Financial & Debt Management Flow", "nodes": ["adLine truncated
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_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": "graphify_output_artifacts", "label": "Graphify Output Artifacts", "nodes": ["graphify-out_graph_json", "graphify-out_wiki_index_md", "graphify-out_graph_report_md"], "relation": "form", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": ".github/copilot-instructions.md"}, {"id": "graphify_subcommands", "label": "Graphify Subcommands", "nodes": ["graphify_query", "graphify_path", "graphify_explain"], "relation": "form", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": ".github/copilot-instructions.md"}, {"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": "sms_management_system", "label": "SMS Management System", "nodes": ["admin_panel_templates_admin_panel_sms_settings_html", "admin_panel_templates_admin_panel_sms_templates_html", "admin_panel_templates_admin_panel_sms_queue_html", "sms_worker", "sms_delivery"], "relation": "participate_in", "confidence": "EXTRACTED", "confidence_score": 1.0}, {"id": "bedehi_report_navigation", "label": "Bedehi Report Navigation", "nodes": ["django_urls_admin_panel_bedehi", "django_urls_admin_panel_bedehikhadamat", "django_urls_admin_panel_bedehinasb"], "relation": "participate_in", "confidence": "EXTRACTED", "source_file": "admin_panel/templates/admin_panel/bedehi.html"}, {"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_list_page", "label": "Customer List Page", "nodes": ["admin_panel_templates_admin_panel_entezar_html", "concept_customer_data", "concept_url_admin_panel_customers"], "relation": "form", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "admin_panel/templates/admin_panel/entezar.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": "new_factor_creation_flow", "label": "New Factor Creation Flow", "nodes": ["admin_panel_templates_admin_panel_customernewbackup_html", "admin_panel_urls_newfactor", "concept_client_side_form_logic", "concept_customer", "concept_category"], "relation": "participate_in", "confidence": "INFERRED", "confidence_score": 0.85, "source_file": "admin_panel/templates/admin_panel/customerNewBackup.html"}, {"id": "customer_management_ui_flow", "label": "Customer Management UI Flow", "nodes": ["admin_panel_templates_admin_panel_customersbk_html", "admin_panel_templates_admin_panel_customersbk_html_createcs", "admin_panel_templates_admin_panel_customersbk_html_openrow", "concept_customer_modal_ui"], "relation": "participate_in", "confidence": "INFERRED", "confidence_score": 0.9, "source_file": "admin_panel/templates/admin_panel/customersBK.html"}, {"id": "financial_management_flow", "label": "Financial & Debt Management Flow", "nodes": ["admin_panel_templates_admin_panel_customerSarresid", "admin_panelLine truncated
// afterDrawing passes ctx already transformed to network coordinate space.
// Draw node positions raw — no manual pan/zoom/DPR math needed.
+27452 -13833
View File
File diff suppressed because it is too large. Load diff
+342 -186
View File
@@ -66,22 +66,22 @@
"semantic_hash": "d41d8cd98f00b204e9800998ecf8427e"
},
"admin_panel/admin.py": {
"mtime": 1791567672.622296,
"seen": 1791614104.8488438,
"ast_hash": "79e7d7e10f67c3ba818373d384f4ad17",
"semantic_hash": ""
"mtime": 1791627073.834386,
"seen": 1791702801.2978444,
"ast_hash": "bf3715ab483bd7eda55aa56913ae347e",
"semantic_hash": "bf3715ab483bd7eda55aa56913ae347e"
},
"admin_panel/apps.py": {
"mtime": 1791570183.2597606,
"seen": 1791614104.8488438,
"seen": 1791702801.2978444,
"ast_hash": "d0b73aeac890b520b7d1f8796b59ae21",
"semantic_hash": ""
"semantic_hash": "d0b73aeac890b520b7d1f8796b59ae21"
},
"admin_panel/context_processor.py": {
"mtime": 1785506207.060478,
"seen": 1791552045.91651,
"ast_hash": "a9bc61278ecd5950347b24fd8438583b",
"semantic_hash": "a9bc61278ecd5950347b24fd8438583b"
"mtime": 1791618283.1369228,
"seen": 1791702801.2978444,
"ast_hash": "8d915c82c3a2690e90d3367fd34cf383",
"semantic_hash": "8d915c82c3a2690e90d3367fd34cf383"
},
"admin_panel/management/__init__.py": {
"mtime": 1782242229.7079034,
@@ -468,10 +468,10 @@
"semantic_hash": "d41d8cd98f00b204e9800998ecf8427e"
},
"admin_panel/templatetags/custom_tags.py": {
"mtime": 1783251836.4148617,
"seen": 1791552045.91651,
"ast_hash": "8d8c826e168cec5bb68a21c8457380ba",
"semantic_hash": "8d8c826e168cec5bb68a21c8457380ba"
"mtime": 1791641617.9080276,
"seen": 1791702801.3156137,
"ast_hash": "849cd0b0dc695c9b16de2f5af51d1166",
"semantic_hash": "849cd0b0dc695c9b16de2f5af51d1166"
},
"admin_panel/templatetags/remove_q_p.py": {
"mtime": 1683307703.0,
@@ -486,9 +486,9 @@
"semantic_hash": "e08f0582500f6562bf0a931ef9503b39"
},
"admin_panel/urls.py": {
"mtime": 1791564580.742213,
"seen": 1791614104.8488438,
"ast_hash": "c17170a3be54ce7a173bf4d215864538",
"mtime": 1791717588.9114156,
"seen": 1791720362.5829337,
"ast_hash": "5b14236a71f471fee84008cb051566b9",
"semantic_hash": ""
},
"check_finance.py": {
@@ -499,9 +499,9 @@
},
"entrypoint.sh": {
"mtime": 1791564734.2804396,
"seen": 1791614104.8488438,
"seen": 1791702801.3178282,
"ast_hash": "5efb2100271785fa69a864bc6a89edb8",
"semantic_hash": ""
"semantic_hash": "5efb2100271785fa69a864bc6a89edb8"
},
"ghost_hunter.py": {
"mtime": 1786881510.522436,
@@ -529,9 +529,9 @@
},
"khatibi/settings.py": {
"mtime": 1791564345.9580202,
"seen": 1791614104.8488438,
"seen": 1791702801.3183815,
"ast_hash": "b3f5a8c5895df16b918fc132147d8859",
"semantic_hash": ""
"semantic_hash": "b3f5a8c5895df16b918fc132147d8859"
},
"khatibi/urls.py": {
"mtime": 1650778147.0,
@@ -576,9 +576,9 @@
"semantic_hash": "4ba55e04b37e585d96f0d628c695d228"
},
"admin_panel/templates/admin_panel/base.html": {
"mtime": 1791564697.854277,
"seen": 1791614104.8488438,
"ast_hash": "d6fd88c25741fd4b8173ade946f7c26c",
"mtime": 1791719559.991003,
"seen": 1791720362.5829337,
"ast_hash": "2a59c1f5b13d05f75c5dd56b20c228ce",
"semantic_hash": ""
},
"admin_panel/templates/admin_panel/baseHesabdari.html": {
@@ -618,15 +618,15 @@
"semantic_hash": "3232cbf82efe94504f69735791ca5cf4"
},
"admin_panel/templates/admin_panel/customerBase.html": {
"mtime": 1650778147.0,
"seen": 1791553187.9024515,
"ast_hash": "2724fa49985d8c8fa76ddf5c31b64054",
"semantic_hash": "2724fa49985d8c8fa76ddf5c31b64054"
"mtime": 1791712775.7233438,
"seen": 1791714098.633808,
"ast_hash": "2fe76f54223135513e31b95e40fe5891",
"semantic_hash": ""
},
"admin_panel/templates/admin_panel/customerBaseNew.html": {
"mtime": 1791567422.453766,
"seen": 1791614104.8488438,
"ast_hash": "2059fbc03889c7641f43a77f2ca66974",
"mtime": 1791712756.7746606,
"seen": 1791714098.633808,
"ast_hash": "488e036cf11d96e273c6dcd04544598e",
"semantic_hash": ""
},
"admin_panel/templates/admin_panel/customerFactor.html": {
@@ -679,9 +679,9 @@
},
"admin_panel/templates/admin_panel/customerNew2.html": {
"mtime": 1791564687.384954,
"seen": 1791614104.8488438,
"seen": 1791702836.3239095,
"ast_hash": "5ebe9f703b4f229f55a6658064b609ef",
"semantic_hash": ""
"semantic_hash": "5ebe9f703b4f229f55a6658064b609ef"
},
"admin_panel/templates/admin_panel/customerNewBackup.html": {
"mtime": 1650778147.0,
@@ -720,10 +720,10 @@
"semantic_hash": "1cb1e5086a0f291b86437f03af835407"
},
"admin_panel/templates/admin_panel/customers.html": {
"mtime": 1791564720.7973502,
"seen": 1791614104.8488438,
"ast_hash": "fb4b36a0b24edde3fae32542d675449e",
"semantic_hash": ""
"mtime": 1791626647.6043096,
"seen": 1791702836.3239095,
"ast_hash": "4364f20bb55d32a42d903202afdf736d",
"semantic_hash": "4364f20bb55d32a42d903202afdf736d"
},
"admin_panel/templates/admin_panel/customersBK.html": {
"mtime": 1650778147.0,
@@ -865,9 +865,9 @@
},
"requirements.txt": {
"mtime": 1791564743.1777852,
"seen": 1791614104.8488438,
"seen": 1791702801.3208632,
"ast_hash": "41f5e0e5a503cf2eddb6bafb3aff3214",
"semantic_hash": ""
"semantic_hash": "41f5e0e5a503cf2eddb6bafb3aff3214"
},
"requirements2.txt": {
"mtime": 1654964543.0,
@@ -877,9 +877,9 @@
},
"admin_panel/models/__init__.py": {
"mtime": 1791564332.991965,
"seen": 1791614104.8488438,
"seen": 1791702801.313386,
"ast_hash": "7cd6b8258d07f9d1a4f668a95b1c9c58",
"semantic_hash": ""
"semantic_hash": "7cd6b8258d07f9d1a4f668a95b1c9c58"
},
"admin_panel/models/actions.py": {
"mtime": 1791557666.0745652,
@@ -888,10 +888,10 @@
"semantic_hash": "8213389e796cad243cdb758fc78076a5"
},
"admin_panel/models/customers.py": {
"mtime": 1791567220.2646446,
"seen": 1791614104.8488438,
"ast_hash": "c9623b3b8f8b1e4b03f2113919ef3608",
"semantic_hash": ""
"mtime": 1791621708.4566169,
"seen": 1791702801.313386,
"ast_hash": "b70fa9395bb5cacb452b84cf0a794efe",
"semantic_hash": "b70fa9395bb5cacb452b84cf0a794efe"
},
"admin_panel/models/factors.py": {
"mtime": 1791557664.8430376,
@@ -931,21 +931,21 @@
},
"admin_panel/views/__init__.py": {
"mtime": 1791564503.1344602,
"seen": 1791614104.8488438,
"seen": 1791702801.3156137,
"ast_hash": "88b45aececacd04d8f8faadaa295524b",
"semantic_hash": ""
"semantic_hash": "88b45aececacd04d8f8faadaa295524b"
},
"admin_panel/views/_helpers.py": {
"mtime": 1791568674.700356,
"seen": 1791614104.8488438,
"seen": 1791702801.3156137,
"ast_hash": "4412599acacb9e21ffa7a2d2748d9484",
"semantic_hash": ""
"semantic_hash": "4412599acacb9e21ffa7a2d2748d9484"
},
"admin_panel/views/actions.py": {
"mtime": 1791557931.7421222,
"seen": 1791560671.8564537,
"ast_hash": "4a96fd10db79b691fa606e5d521d776b",
"semantic_hash": "4a96fd10db79b691fa606e5d521d776b"
"mtime": 1791708825.7957535,
"seen": 1791710591.5772536,
"ast_hash": "e0f571ab730d0c1de7a17c8e908f161d",
"semantic_hash": ""
},
"admin_panel/views/auth.py": {
"mtime": 1791557771.327603,
@@ -960,22 +960,22 @@
"semantic_hash": "364f4190f934261a082c189d8f44d29c"
},
"admin_panel/views/customers.py": {
"mtime": 1791568689.7329805,
"seen": 1791614104.8488438,
"ast_hash": "10f28fbc7076400ec0074172cc0471ea",
"mtime": 1791711853.5219991,
"seen": 1791714098.633808,
"ast_hash": "43945c8ffdbde356447635b1203b9566",
"semantic_hash": ""
},
"admin_panel/views/factors.py": {
"mtime": 1791557824.3959832,
"seen": 1791560671.8564537,
"ast_hash": "4edb8f009937a4d52ae4355c15950797",
"semantic_hash": "4edb8f009937a4d52ae4355c15950797"
"mtime": 1791710085.8869143,
"seen": 1791710591.5772536,
"ast_hash": "d47aa24b93c787acf8f385e0765bdbeb",
"semantic_hash": ""
},
"admin_panel/views/finance.py": {
"mtime": 1791557914.4702559,
"seen": 1791560671.8564537,
"ast_hash": "6d192f725bec56cac50f8ab1a3f7529a",
"semantic_hash": "6d192f725bec56cac50f8ab1a3f7529a"
"mtime": 1791713964.8948607,
"seen": 1791714098.633808,
"ast_hash": "d199e23a302ef9eee93c9abf459bc511",
"semantic_hash": ""
},
"admin_panel/views/store.py": {
"mtime": 1791557842.9065113,
@@ -996,16 +996,16 @@
"semantic_hash": "d41d8cd98f00b204e9800998ecf8427e"
},
"tests/factories.py": {
"mtime": 1791558395.0672476,
"seen": 1791560671.8564537,
"ast_hash": "50fd151eba01ea60af0eca0412c6769c",
"semantic_hash": "50fd151eba01ea60af0eca0412c6769c"
"mtime": 1791615046.5393274,
"seen": 1791702801.3202996,
"ast_hash": "44b675e6955ee776b91f3f3bbdbb1fc0",
"semantic_hash": "44b675e6955ee776b91f3f3bbdbb1fc0"
},
"tests/test_customers.py": {
"mtime": 1791558470.3088942,
"seen": 1791560671.8564537,
"ast_hash": "59649733efa1edadc23835a27f68bbba",
"semantic_hash": "59649733efa1edadc23835a27f68bbba"
"mtime": 1791713632.3402467,
"seen": 1791714098.633808,
"ast_hash": "cf9df1225c3c9d7b101ab3b2e2db8f76",
"semantic_hash": ""
},
"tests/test_factors.py": {
"mtime": 1791558462.1194556,
@@ -1026,15 +1026,15 @@
"semantic_hash": "55662ec48c0ef4b683a87b94808b91b0"
},
"tests/test_urls_contract.py": {
"mtime": 1791564827.3614242,
"seen": 1791614104.8488438,
"ast_hash": "c500c49133546f55ce37a11fe374a5dc",
"mtime": 1791718031.9609113,
"seen": 1791720362.5829337,
"ast_hash": "e02361bf950d2549018c1b19fad366bb",
"semantic_hash": ""
},
"tests/test_view_smoke.py": {
"mtime": 1791567549.952807,
"seen": 1791614104.8488438,
"ast_hash": "1f375dcb28dd39eb1d7ca203cac2b8d9",
"mtime": 1791718041.2553785,
"seen": 1791720362.5829337,
"ast_hash": "527f0f3fcffdddd54cf8db80ed21ce2b",
"semantic_hash": ""
},
"AGENTS.md": {
@@ -1051,254 +1051,410 @@
},
"admin_panel/management/commands/sms_scan.py": {
"mtime": 1791564935.0555663,
"seen": 1791614104.8488438,
"seen": 1791702801.2988422,
"ast_hash": "ed3caa947399bcd9d8d7785c0400c81e",
"semantic_hash": ""
"semantic_hash": "ed3caa947399bcd9d8d7785c0400c81e"
},
"admin_panel/management/commands/sms_worker.py": {
"mtime": 1791570227.772429,
"seen": 1791614104.8488438,
"ast_hash": "b632f000bc231f91c876a57819e94d4c",
"semantic_hash": ""
"mtime": 1791617008.8882565,
"seen": 1791702801.2988422,
"ast_hash": "fe7d671672a25ef84c428955640bb136",
"semantic_hash": "fe7d671672a25ef84c428955640bb136"
},
"admin_panel/migrations/0057_sms.py": {
"mtime": 1791564769.8150086,
"seen": 1791614104.8488438,
"seen": 1791702801.3128505,
"ast_hash": "48769309cf799b598f1511a37865c665",
"semantic_hash": ""
"semantic_hash": "48769309cf799b598f1511a37865c665"
},
"admin_panel/migrations/0058_seed_sms_templates.py": {
"mtime": 1791564787.7929118,
"seen": 1791614104.8488438,
"ast_hash": "8e42b8ea8b81ab4b3662cb70075e055b",
"semantic_hash": ""
"mtime": 1791618477.6292322,
"seen": 1791702801.3128505,
"ast_hash": "644789822fa1fab80f29f0ef995b95aa",
"semantic_hash": "644789822fa1fab80f29f0ef995b95aa"
},
"admin_panel/migrations/0059_sms_flow_control.py": {
"mtime": 1791565703.6785793,
"seen": 1791614104.8488438,
"seen": 1791702801.3128505,
"ast_hash": "d44f0ff09baf2be5dfee52a09abb2326",
"semantic_hash": ""
"semantic_hash": "d44f0ff09baf2be5dfee52a09abb2326"
},
"admin_panel/migrations/0060_sms_permission_label.py": {
"mtime": 1791566229.439728,
"seen": 1791614104.8488438,
"seen": 1791702801.3128505,
"ast_hash": "6c11511c7b690a0fcb7ca5fae64c512c",
"semantic_hash": ""
"semantic_hash": "6c11511c7b690a0fcb7ca5fae64c512c"
},
"admin_panel/migrations/0061_sms_timing_and_primary.py": {
"mtime": 1791567453.636376,
"seen": 1791614104.8488438,
"seen": 1791702801.3128505,
"ast_hash": "f389c45783e25be977e01db9175b96cd",
"semantic_hash": ""
"semantic_hash": "f389c45783e25be977e01db9175b96cd"
},
"admin_panel/migrations/0062_sms_link_provider.py": {
"mtime": 1791571832.394663,
"seen": 1791614104.8488438,
"seen": 1791702801.3128505,
"ast_hash": "be04ce55506d075f0afe266cadeda08e",
"semantic_hash": ""
"semantic_hash": "be04ce55506d075f0afe266cadeda08e"
},
"admin_panel/models/sms.py": {
"mtime": 1791571800.3552737,
"seen": 1791614104.8488438,
"ast_hash": "e8e1edef3b27bd220a755b3519f168aa",
"mtime": 1791719506.0225618,
"seen": 1791720362.5829337,
"ast_hash": "8e4bb3e917888a16e675f3f139207b1b",
"semantic_hash": ""
},
"admin_panel/signals.py": {
"mtime": 1791564587.418286,
"seen": 1791614104.8488438,
"seen": 1791702801.3150773,
"ast_hash": "2eace8c40bf29514679f1113c3d28fdb",
"semantic_hash": ""
"semantic_hash": "2eace8c40bf29514679f1113c3d28fdb"
},
"admin_panel/sms/__init__.py": {
"mtime": 1791564397.2313416,
"seen": 1791614104.8488438,
"seen": 1791702801.3150773,
"ast_hash": "22f7602ea6f852c9a1cf8a71a40c7f5c",
"semantic_hash": ""
"semantic_hash": "22f7602ea6f852c9a1cf8a71a40c7f5c"
},
"admin_panel/sms/enqueue.py": {
"mtime": 1791564422.1932628,
"seen": 1791614104.8488438,
"ast_hash": "f3b793473bbf7f4d0f699966fc778610",
"semantic_hash": ""
"mtime": 1791626998.7211082,
"seen": 1791702801.3150773,
"ast_hash": "7d00e585643244a5e694427047972c74",
"semantic_hash": "7d00e585643244a5e694427047972c74"
},
"admin_panel/sms/phones.py": {
"mtime": 1791567752.8740702,
"seen": 1791614104.8488438,
"seen": 1791702801.3150773,
"ast_hash": "e7a2f0d3b2ccfbc3e37351f134c0a3c8",
"semantic_hash": ""
"semantic_hash": "e7a2f0d3b2ccfbc3e37351f134c0a3c8"
},
"admin_panel/sms/recipients.py": {
"mtime": 1791567203.9483874,
"seen": 1791614104.8488438,
"seen": 1791702801.3150773,
"ast_hash": "19bd0d12c9932809424ddcc58d9d5ccd",
"semantic_hash": ""
"semantic_hash": "19bd0d12c9932809424ddcc58d9d5ccd"
},
"admin_panel/sms/render.py": {
"mtime": 1791564403.1354272,
"seen": 1791614104.8488438,
"seen": 1791702801.3150773,
"ast_hash": "9b82ac87329178259ffa6929b1f0bd94",
"semantic_hash": ""
"semantic_hash": "9b82ac87329178259ffa6929b1f0bd94"
},
"admin_panel/sms/rules.py": {
"mtime": 1791564642.983444,
"seen": 1791614104.8488438,
"ast_hash": "fc8fcea92189cc20de4dc722f309150f",
"mtime": 1791708897.995327,
"seen": 1791710591.5772536,
"ast_hash": "ec604f627bcc4534ae16da8503f64085",
"semantic_hash": ""
},
"admin_panel/sms/scanner.py": {
"mtime": 1791567251.4876964,
"seen": 1791614104.8488438,
"ast_hash": "24a6409edcdd755c353092a56d12af15",
"mtime": 1791708785.8918655,
"seen": 1791710591.5772536,
"ast_hash": "e9d675f9673e33de929cd9c06fe7de41",
"semantic_hash": ""
},
"admin_panel/sms/timing.py": {
"mtime": 1791567400.39615,
"seen": 1791614104.8488438,
"ast_hash": "675024399edacf343357c3481471fa19",
"mtime": 1791708745.8135014,
"seen": 1791710591.5772536,
"ast_hash": "4819c52781b07b14c5c19f66a89bea9c",
"semantic_hash": ""
},
"admin_panel/views/sms.py": {
"mtime": 1791568027.236827,
"seen": 1791614104.8488438,
"ast_hash": "dc0f5c6b03f46965c52d60a70661a882",
"mtime": 1791720558.729439,
"seen": 1791721256.78409,
"ast_hash": "c0041541c95e34dd74b4d5439a701f73",
"semantic_hash": ""
},
"integrations/__init__.py": {
"mtime": 1788591142.756229,
"seen": 1791614104.8488438,
"seen": 1791702801.3178282,
"ast_hash": "d41d8cd98f00b204e9800998ecf8427e",
"semantic_hash": ""
"semantic_hash": "d41d8cd98f00b204e9800998ecf8427e"
},
"integrations/announcements.py": {
"mtime": 1790610911.1591492,
"seen": 1791614104.8488438,
"seen": 1791702801.3178282,
"ast_hash": "4addf10259bf16babf4b6ad98fe822bb",
"semantic_hash": ""
"semantic_hash": "4addf10259bf16babf4b6ad98fe822bb"
},
"integrations/bale/__init__.py": {
"mtime": 1788597944.5804,
"seen": 1791614104.8488438,
"seen": 1791702801.3178282,
"ast_hash": "d41d8cd98f00b204e9800998ecf8427e",
"semantic_hash": ""
"semantic_hash": "d41d8cd98f00b204e9800998ecf8427e"
},
"integrations/bale/providers.py": {
"mtime": 1791366465.5345488,
"seen": 1791614104.8488438,
"seen": 1791702801.3178282,
"ast_hash": "f2ccd57a80e8e97b1ab8be7325b1f27a",
"semantic_hash": ""
"semantic_hash": "f2ccd57a80e8e97b1ab8be7325b1f27a"
},
"integrations/sms/__init__.py": {
"mtime": 1788591146.1142309,
"seen": 1791614104.8488438,
"seen": 1791702801.3178282,
"ast_hash": "d41d8cd98f00b204e9800998ecf8427e",
"semantic_hash": ""
"semantic_hash": "d41d8cd98f00b204e9800998ecf8427e"
},
"integrations/sms/base.py": {
"mtime": 1789362040.0196111,
"seen": 1791614104.8488438,
"seen": 1791702801.3178282,
"ast_hash": "03c0d180df50cb521d7120ee6f76108c",
"semantic_hash": ""
"semantic_hash": "03c0d180df50cb521d7120ee6f76108c"
},
"integrations/sms/behin.py": {
"mtime": 1788695832.9056084,
"seen": 1791614104.8488438,
"seen": 1791702801.3178282,
"ast_hash": "e2028ce13ec6cdc7f603aa44bac7e7fd",
"semantic_hash": ""
"semantic_hash": "e2028ce13ec6cdc7f603aa44bac7e7fd"
},
"integrations/sms/console.py": {
"mtime": 1791570192.9150548,
"seen": 1791614104.8488438,
"seen": 1791702801.3178282,
"ast_hash": "4120946c1d52e58f0ec2fa110c2442a6",
"semantic_hash": ""
"semantic_hash": "4120946c1d52e58f0ec2fa110c2442a6"
},
"integrations/sms/factory.py": {
"mtime": 1791564358.8557389,
"seen": 1791614104.8488438,
"ast_hash": "92d89fa13a0e75ecdc5de5181c5cb13b",
"semantic_hash": ""
"mtime": 1791616908.4313548,
"seen": 1791702801.3178282,
"ast_hash": "d02f691930a144885ef755f5229e8299",
"semantic_hash": "d02f691930a144885ef755f5229e8299"
},
"integrations/sms/http.py": {
"mtime": 1791570455.5151258,
"seen": 1791614104.8488438,
"seen": 1791702801.3178282,
"ast_hash": "5dbf2f727c47d6bcc8ae067134205317",
"semantic_hash": ""
"semantic_hash": "5dbf2f727c47d6bcc8ae067134205317"
},
"integrations/sms/normalize.py": {
"mtime": 1791564352.0481617,
"seen": 1791614104.8488438,
"seen": 1791702801.3178282,
"ast_hash": "e022b15a9a5e16f7cb9b3f7c8aba9eb0",
"semantic_hash": ""
"semantic_hash": "e022b15a9a5e16f7cb9b3f7c8aba9eb0"
},
"integrations/sms/providers.py": {
"mtime": 1791571810.6925046,
"seen": 1791614104.8488438,
"ast_hash": "0ad971198d05e572b2feab738cf3d315",
"semantic_hash": ""
"mtime": 1791616909.5377069,
"seen": 1791702801.3178282,
"ast_hash": "7f0d619716ffdb880cff970e58b81fa6",
"semantic_hash": "7f0d619716ffdb880cff970e58b81fa6"
},
"integrations/sms/sms0098.py": {
"mtime": 1791573482.2129214,
"seen": 1791614104.8488438,
"seen": 1791702801.3178282,
"ast_hash": "66945d0a7a930c90522b6ab18a83c950",
"semantic_hash": ""
"semantic_hash": "66945d0a7a930c90522b6ab18a83c950"
},
"integrations/voip.py": {
"mtime": 1790611362.4278078,
"seen": 1791614104.8488438,
"seen": 1791702801.3178282,
"ast_hash": "3d171dd1f3023ad1372d8fc1a1be0c7c",
"semantic_hash": ""
"semantic_hash": "3d171dd1f3023ad1372d8fc1a1be0c7c"
},
"run.sh": {
"mtime": 1791570234.3635445,
"seen": 1791614104.8488438,
"ast_hash": "a2b5cef99cc254f1f7c811bdf27d01fe",
"semantic_hash": ""
"mtime": 1791617114.3584476,
"seen": 1791702801.3199909,
"ast_hash": "776fa3896434b36ecc788f36f0b9a598",
"semantic_hash": "776fa3896434b36ecc788f36f0b9a598"
},
"stop.sh": {
"mtime": 1791569764.8847363,
"seen": 1791614104.8488438,
"seen": 1791702801.3199909,
"ast_hash": "d181c7e91c9fc824e45ee36afe852884",
"semantic_hash": ""
"semantic_hash": "d181c7e91c9fc824e45ee36afe852884"
},
"tests/test_sms.py": {
"mtime": 1791571899.7188718,
"seen": 1791614104.8488438,
"ast_hash": "e09952b55a7aa687607ee5de505e0992",
"mtime": 1791720635.36276,
"seen": 1791721256.78409,
"ast_hash": "797136590c528a8a52e6884b355122d2",
"semantic_hash": ""
},
"admin_panel/templates/admin_panel/_customer_sms.html": {
"mtime": 1791567700.7075107,
"seen": 1791614104.8488438,
"ast_hash": "7a044490275116dc8f47bdfc29410938",
"mtime": 1791711840.1595013,
"seen": 1791714098.633808,
"ast_hash": "a310d9aa207143cbe4f705da3f9d5253",
"semantic_hash": ""
},
"admin_panel/templates/admin_panel/sms_queue.html": {
"mtime": 1791564635.2349718,
"seen": 1791614104.8488438,
"ast_hash": "e89844164967411d20f2e74f4aaaa501",
"mtime": 1791720613.7829041,
"seen": 1791721256.7850897,
"ast_hash": "e6c1ae1d848bc0c7e5ed4984850c7876",
"semantic_hash": ""
},
"admin_panel/templates/admin_panel/sms_settings.html": {
"mtime": 1791571805.9115343,
"seen": 1791614104.8488438,
"ast_hash": "89e5910fc3a560dca5b8253047b4aa6c",
"mtime": 1791719660.6053514,
"seen": 1791720362.5829337,
"ast_hash": "4f8933e5687929857d93448098e6806e",
"semantic_hash": ""
},
"admin_panel/templates/admin_panel/sms_templates.html": {
"mtime": 1791568503.831997,
"seen": 1791614104.8488438,
"ast_hash": "43820b9951c1a89e17388293f3383302",
"semantic_hash": ""
"mtime": 1791627052.1153367,
"seen": 1791702801.3208632,
"ast_hash": "46a8ec7859956045631cfa8433461236",
"semantic_hash": "46a8ec7859956045631cfa8433461236"
},
"docker-compose.yml": {
"mtime": 1791564755.02377,
"seen": 1791614104.8488438,
"ast_hash": "45bf00ab0fc7ce59c6fb247c42358e0d",
"semantic_hash": ""
"mtime": 1791636506.4167986,
"seen": 1791702801.3208632,
"ast_hash": "0b75a943cb3429658925f450e26d3e7d",
"semantic_hash": "0b75a943cb3429658925f450e26d3e7d"
},
"screencapture-localhost-8000-panel-sms-templates-2026-10-09-23_01_18.png": {
"mtime": 1791574286.9688969,
"seen": 1791614104.8488438,
"seen": 1791702801.3208632,
"ast_hash": "5b1f0abdf5d40f951d02ddbab7167125",
"semantic_hash": "5b1f0abdf5d40f951d02ddbab7167125"
},
"admin_panel/management/commands/fix_customer_phones.py": {
"mtime": 1791621726.410893,
"seen": 1791702801.2988422,
"ast_hash": "c2b7fabb68143e7ef782b62fbbebd7b0",
"semantic_hash": "c2b7fabb68143e7ef782b62fbbebd7b0"
},
"admin_panel/management/commands/sms_delivery.py": {
"mtime": 1791616938.869515,
"seen": 1791702801.2988422,
"ast_hash": "0eb62705447caeacfb3231489b5c66ed",
"semantic_hash": "0eb62705447caeacfb3231489b5c66ed"
},
"admin_panel/migrations/0063_alter_smsqueue_status.py": {
"mtime": 1791614588.9315987,
"seen": 1791702801.3128505,
"ast_hash": "46ba8d6f3f9ece80d9ee110402f87c04",
"semantic_hash": "46ba8d6f3f9ece80d9ee110402f87c04"
},
"admin_panel/migrations/0064_sms_webservice_delivery.py": {
"mtime": 1791616958.7307367,
"seen": 1791702801.3128505,
"ast_hash": "6bca50002a68d0afb2e347760d033b56",
"semantic_hash": "6bca50002a68d0afb2e347760d033b56"
},
"admin_panel/migrations/0065_smsproviderconfig_test_message.py": {
"mtime": 1791618499.3972054,
"seen": 1791702801.3128505,
"ast_hash": "ad74a954c47d7e0ea78adc662a0b3bed",
"semantic_hash": "ad74a954c47d7e0ea78adc662a0b3bed"
},
"admin_panel/migrations/0066_smsdedup.py": {
"mtime": 1791619553.233239,
"seen": 1791702801.3128505,
"ast_hash": "47a79ea36779cdad4f8f7a417f6e406f",
"semantic_hash": "47a79ea36779cdad4f8f7a417f6e406f"
},
"admin_panel/migrations/0067_customer_notes.py": {
"mtime": 1791621805.5383422,
"seen": 1791702801.3128505,
"ast_hash": "32682104a2a4b50ca62272af04ac1dfb",
"semantic_hash": "32682104a2a4b50ca62272af04ac1dfb"
},
"admin_panel/migrations/0068_auto_20261010_1305.py": {
"mtime": 1791624904.5148928,
"seen": 1791702801.3128505,
"ast_hash": "2a0a7a25845704a7ed78aa5d4236e4ce",
"semantic_hash": "2a0a7a25845704a7ed78aa5d4236e4ce"
},
"admin_panel/migrations/0069_smstemplate_auto_send.py": {
"mtime": 1791627084.5738328,
"seen": 1791702801.3128505,
"ast_hash": "11ab014ce619013bb94a610c920e501c",
"semantic_hash": "11ab014ce619013bb94a610c920e501c"
},
"admin_panel/sms/notices.py": {
"mtime": 1791720564.6536124,
"seen": 1791721256.78409,
"ast_hash": "5d5eb4733a3930448ee2039140936ec1",
"semantic_hash": ""
},
"admin_panel/sms/phone_cleanup.py": {
"mtime": 1791622431.750531,
"seen": 1791702801.3150773,
"ast_hash": "43ce6a9e4caa2637a25985415fb4cae0",
"semantic_hash": "43ce6a9e4caa2637a25985415fb4cae0"
},
"integrations/sms/sms0098_codes.py": {
"mtime": 1791616840.122996,
"seen": 1791702801.3178282,
"ast_hash": "b6471cf64bb71a5516e9570ed092f6a7",
"semantic_hash": "b6471cf64bb71a5516e9570ed092f6a7"
},
"integrations/sms/sms0098ws.py": {
"mtime": 1791617713.8571854,
"seen": 1791702801.3178282,
"ast_hash": "4646af2624034410d9f3a37c3177abbc",
"semantic_hash": "4646af2624034410d9f3a37c3177abbc"
},
"0098sms.md": {
"mtime": 1789361433.0,
"seen": 1791702801.3208632,
"ast_hash": "be32d185f057513a3685621c73b9352f",
"semantic_hash": "be32d185f057513a3685621c73b9352f"
},
"CLAUDE.md": {
"mtime": 1791614843.2875943,
"seen": 1791702873.4684987,
"ast_hash": "d9c1aa00474b45b2de5f587fe328cb8d",
"semantic_hash": "d9c1aa00474b45b2de5f587fe328cb8d"
},
"admin_panel/templates/admin_panel/_customer_phones.html": {
"mtime": 1791713591.3869643,
"seen": 1791714098.633808,
"ast_hash": "50587dd6e8714f0a77a67c9c6476404e",
"semantic_hash": ""
},
"fix_customer_phones.md": {
"mtime": 1791622725.5216887,
"seen": 1791702801.3208632,
"ast_hash": "da981f26faa780317b4d763f955fef93",
"semantic_hash": "da981f26faa780317b4d763f955fef93"
},
"admin_panel/migrations/0070_sms_types_seven.py": {
"mtime": 1791709618.641997,
"seen": 1791710591.5772536,
"ast_hash": "596a225d3884b10e9eb089cb7162f482",
"semantic_hash": ""
},
"admin_panel/sms/triggers.py": {
"mtime": 1791710210.1741562,
"seen": 1791710591.5772536,
"ast_hash": "3ca8ed084f8c407cc6416cb79994b497",
"semantic_hash": ""
},
"admin_panel/templates/admin_panel/_customer_info.html": {
"mtime": 1791713645.1335497,
"seen": 1791714098.633808,
"ast_hash": "7097ae80aef5846f82a20aece2084586",
"semantic_hash": ""
},
"admin_panel/templates/admin_panel/customerSmsHistory.html": {
"mtime": 1791710836.1307735,
"seen": 1791714098.633808,
"ast_hash": "52189e9b058fcf0ffd8439d643ff6f8a",
"semantic_hash": ""
},
"admin_panel/management/commands/recalc_last_bazdid.py": {
"mtime": 1791716465.206951,
"seen": 1791720362.5829337,
"ast_hash": "72df3ebb464b770d9ca91ddc2ca32404",
"semantic_hash": ""
},
"admin_panel/migrations/0071_sms_settings_permission.py": {
"mtime": 1791719590.1329694,
"seen": 1791720362.5829337,
"ast_hash": "9e87942eb05e2d30028f0dc865191412",
"semantic_hash": ""
},
"admin_panel/sms/parts.py": {
"mtime": 1791717280.6100771,
"seen": 1791720362.5829337,
"ast_hash": "6a1bbc04fda9c4cb784ae2f02e98f879",
"semantic_hash": ""
},
"admin_panel/templates/admin_panel/sms_report.html": {
"mtime": 1791718419.8521838,
"seen": 1791720362.5829337,
"ast_hash": "b5da47a8870d5bf470b933956160f9c5",
"semantic_hash": ""
},
"recalc_last_bazdid.md": {
"mtime": 1791716578.4375794,
"seen": 1791720362.5829337,
"ast_hash": "29e04949da66478a11268a7672440f2b",
"semantic_hash": ""
}
}