| 1 |
- {"nodes": [{"id": "users_wuzilong_work_00code_sqxp_2_backend_app_api_public_py", "label": "public.py", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L1"}, {"id": "api_public_avatar_url_field", "label": "_avatar_url_field()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L41"}, {"id": "api_public_wx_mini_code_to_openid", "label": "_wx_mini_code_to_openid()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L49"}, {"id": "api_public_web_login_rsa_public_key", "label": "web_login_rsa_public_key()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L76"}, {"id": "api_public_mini_login_rsa_public_key", "label": "mini_login_rsa_public_key()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L83"}, {"id": "api_public_web_login", "label": "web_login()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L90"}, {"id": "api_public_refresh_token", "label": "refresh_token()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L164"}, {"id": "api_public_logout", "label": "logout()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L234"}, {"id": "api_public_get_current_user", "label": "get_current_user()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L253"}, {"id": "api_public_get_web_auth_menu_codes", "label": "get_web_auth_menu_codes()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L297"}, {"id": "api_public_mini_login", "label": "mini_login()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L336"}, {"id": "api_public_mini_sms_login", "label": "mini_sms_login()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L413"}, {"id": "api_public_mini_bind_wechat", "label": "mini_bind_wechat()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L488"}, {"id": "api_public_mini_code_openid", "label": "mini_code_openid()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L519"}, {"id": "api_public_get_mini_current_user", "label": "get_mini_current_user()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L531"}, {"id": "api_public_mini_logout", "label": "mini_logout()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L564"}, {"id": "api_public_mini_change_password", "label": "mini_change_password()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L583"}, {"id": "api_public_rationale_50", "label": "\u8c03\u7528\u5fae\u4fe1 jscode2session\uff0c\u6210\u529f\u8fd4\u56de (openid, None)\uff0c\u5931\u8d25\u8fd4\u56de (None, \u9519\u8bef\u4fe1\u606f)\u3002", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L50"}, {"id": "api_public_rationale_77", "label": "Web \u7aef\u767b\u5f55\u7528 RSA \u516c\u94a5\uff08PKCS#1 v1.5\uff0c\u4e0e JSEncrypt \u4e00\u81f4\uff09", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L77"}, {"id": "api_public_rationale_95", "label": "Web\u7aef\u767b\u5f55\uff08\u9ed8\u8ba4\u4ec5\u63a5\u53d7 encryptedLogin\uff1b\u53ef\u914d\u7f6e LOGIN_ALLOW_PLAINTEXT_LOGIN \u660e\u6587\u6392\u969c\uff09", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L95"}, {"id": "api_public_rationale_298", "label": "\u83b7\u53d6\u5f53\u524d\u7528\u6237\u53ef\u89c1\u83dc\u5355 code \u5217\u8868\u3002super_admin \u6c38\u8fdc\u5168\u83dc\u5355\u3002", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L298"}, {"id": "api_public_rationale_341", "label": "\u5c0f\u7a0b\u5e8f\u7aef\u767b\u5f55\uff08\u9ed8\u8ba4\u4ec5\u63a5\u53d7 encryptedLogin\uff09", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L341"}, {"id": "api_public_rationale_418", "label": "\u5fae\u4fe1\u5c0f\u7a0b\u5e8f wx.login \u8fd4\u56de\u7684 code \u767b\u5f55\uff08\u9700\u5df2\u5728\u7cfb\u7edf\u4e2d\u7ed1\u5b9a wx_mini_openid\uff09", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L418"}, {"id": "api_public_rationale_493", "label": "\u5c06\u5f53\u524d\u767b\u5f55\u8d26\u53f7\u4e0e\u5fae\u4fe1 openid \u7ed1\u5b9a\uff08\u7ed1\u5b9a\u540e\u53ef\u4f7f\u7528 sms-login\uff09", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L493"}, {"id": "api_public_rationale_520", "label": "wx.login \u6362\u53d6 openid\uff08\u7528\u4e8e\u8c03\u8d77\u5fae\u4fe1\u652f\u4ed8\u7b49\uff0ccode \u4ec5\u5355\u6b21\u6709\u6548\uff09", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L520"}], "edges": [{"source": "users_wuzilong_work_00code_sqxp_2_backend_app_api_public_py", "target": "random", "relation": "imports", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L2", "weight": 1.0}, {"source": "users_wuzilong_work_00code_sqxp_2_backend_app_api_public_py", "target": "string", "relation": "imports", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L3", "weight": 1.0}, {"source": "users_wuzilong_work_00code_sqxp_2_backend_app_api_public_py", "target": "datetime", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L4", "weight": 1.0}, {"source": "users_wuzilong_work_00code_sqxp_2_backend_app_api_public_py", "target": "httpx", "relation": "imports", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L6", "weight": 1.0}, {"source": "users_wuzilong_work_00code_sqxp_2_backend_app_api_public_py", "target": "typing", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L7", "weight": 1.0}, {"source": "users_wuzilong_work_00code_sqxp_2_backend_app_api_public_py", "target": "fastapi", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L8", "weight": 1.0}, {"source": "users_wuzilong_work_00code_sqxp_2_backend_app_api_public_py", "target": "fastapi_security", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L9", "weight": 1.0}, {"source": "users_wuzilong_work_00code_sqxp_2_backend_app_api_public_py", "target": "sqlalchemy_orm", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L10", "weight": 1.0}, {"source": "users_wuzilong_work_00code_sqxp_2_backend_app_api_public_py", "target": "app_core_database", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L12", "weight": 1.0}, {"source": "users_wuzilong_work_00code_sqxp_2_backend_app_api_public_py", "target": "app_core_security", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L13", "weight": 1.0}, {"source": "users_wuzilong_work_00code_sqxp_2_backend_app_api_public_py", "target": "app_core_auth", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L14", "weight": 1.0}, {"source": "users_wuzilong_work_00code_sqxp_2_backend_app_api_public_py", "target": "app_core_config", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L29", "weight": 1.0}, {"source": "users_wuzilong_work_00code_sqxp_2_backend_app_api_public_py", "target": "app_core_response", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L30", "weight": 1.0}, {"source": "users_wuzilong_work_00code_sqxp_2_backend_app_api_public_py", "target": "app_models_models", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L31", "weight": 1.0}, {"source": "users_wuzilong_work_00code_sqxp_2_backend_app_api_public_py", "target": "app_crud_user", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L32", "weight": 1.0}, {"source": "users_wuzilong_work_00code_sqxp_2_backend_app_api_public_py", "target": "app_crud_region", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L33", "weight": 1.0}, {"source": "users_wuzilong_work_00code_sqxp_2_backend_app_api_public_py", "target": "app_crud_password_history", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L34", "weight": 1.0}, {"source": "users_wuzilong_work_00code_sqxp_2_backend_app_api_public_py", "target": "app_core_utils", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L35", "weight": 1.0}, {"source": "users_wuzilong_work_00code_sqxp_2_backend_app_api_public_py", "target": "app_core", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L36", "weight": 1.0}, {"source": "users_wuzilong_work_00code_sqxp_2_backend_app_api_public_py", "target": "api_public_avatar_url_field", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L41", "weight": 1.0}, {"source": "users_wuzilong_work_00code_sqxp_2_backend_app_api_public_py", "target": "api_public_wx_mini_code_to_openid", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L49", "weight": 1.0}, {"source": "users_wuzilong_work_00code_sqxp_2_backend_app_api_public_py", "target": "api_public_web_login_rsa_public_key", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L76", "weight": 1.0}, {"source": "users_wuzilong_work_00code_sqxp_2_backend_app_api_public_py", "target": "api_public_mini_login_rsa_public_key", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L83", "weight": 1.0}, {"source": "users_wuzilong_work_00code_sqxp_2_backend_app_api_public_py", "target": "api_public_web_login", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L90", "weight": 1.0}, {"source": "users_wuzilong_work_00code_sqxp_2_backend_app_api_public_py", "target": "api_public_refresh_token", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L164", "weight": 1.0}, {"source": "users_wuzilong_work_00code_sqxp_2_backend_app_api_public_py", "target": "api_public_logout", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L234", "weight": 1.0}, {"source": "users_wuzilong_work_00code_sqxp_2_backend_app_api_public_py", "target": "api_public_get_current_user", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L253", "weight": 1.0}, {"source": "users_wuzilong_work_00code_sqxp_2_backend_app_api_public_py", "target": "api_public_get_web_auth_menu_codes", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L297", "weight": 1.0}, {"source": "users_wuzilong_work_00code_sqxp_2_backend_app_api_public_py", "target": "api_public_mini_login", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L336", "weight": 1.0}, {"source": "users_wuzilong_work_00code_sqxp_2_backend_app_api_public_py", "target": "api_public_mini_sms_login", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L413", "weight": 1.0}, {"source": "users_wuzilong_work_00code_sqxp_2_backend_app_api_public_py", "target": "api_public_mini_bind_wechat", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L488", "weight": 1.0}, {"source": "users_wuzilong_work_00code_sqxp_2_backend_app_api_public_py", "target": "api_public_mini_code_openid", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L519", "weight": 1.0}, {"source": "users_wuzilong_work_00code_sqxp_2_backend_app_api_public_py", "target": "api_public_get_mini_current_user", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L531", "weight": 1.0}, {"source": "users_wuzilong_work_00code_sqxp_2_backend_app_api_public_py", "target": "api_public_mini_logout", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L564", "weight": 1.0}, {"source": "users_wuzilong_work_00code_sqxp_2_backend_app_api_public_py", "target": "api_public_mini_change_password", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L583", "weight": 1.0}, {"source": "api_public_web_login", "target": "api_public_avatar_url_field", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L158", "weight": 1.0}, {"source": "api_public_mini_login", "target": "api_public_avatar_url_field", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L407", "weight": 1.0}, {"source": "api_public_mini_sms_login", "target": "api_public_wx_mini_code_to_openid", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L423", "weight": 1.0}, {"source": "api_public_mini_sms_login", "target": "api_public_avatar_url_field", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L482", "weight": 1.0}, {"source": "api_public_mini_bind_wechat", "target": "api_public_wx_mini_code_to_openid", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L498", "weight": 1.0}, {"source": "api_public_mini_code_openid", "target": "api_public_wx_mini_code_to_openid", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L524", "weight": 1.0}, {"source": "api_public_rationale_50", "target": "api_public_wx_mini_code_to_openid", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L50", "weight": 1.0}, {"source": "api_public_rationale_77", "target": "api_public_web_login_rsa_public_key", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L77", "weight": 1.0}, {"source": "api_public_rationale_95", "target": "api_public_web_login", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L95", "weight": 1.0}, {"source": "api_public_rationale_298", "target": "api_public_get_web_auth_menu_codes", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L298", "weight": 1.0}, {"source": "api_public_rationale_341", "target": "api_public_mini_login", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L341", "weight": 1.0}, {"source": "api_public_rationale_418", "target": "api_public_mini_sms_login", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L418", "weight": 1.0}, {"source": "api_public_rationale_493", "target": "api_public_mini_bind_wechat", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L493", "weight": 1.0}, {"source": "api_public_rationale_520", "target": "api_public_mini_code_openid", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L520", "weight": 1.0}], "raw_calls": [{"caller_nid": "api_public_avatar_url_field", "callee": "getattr", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L42"}, {"caller_nid": "api_public_avatar_url_field", "callee": "strip", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L45"}, {"caller_nid": "api_public_avatar_url_field", "callee": "str", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L45"}, {"caller_nid": "api_public_wx_mini_code_to_openid", "callee": "AsyncClient", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L55"}, {"caller_nid": "api_public_wx_mini_code_to_openid", "callee": "get", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L56"}, {"caller_nid": "api_public_wx_mini_code_to_openid", "callee": "json", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L66"}, {"caller_nid": "api_public_wx_mini_code_to_openid", "callee": "get", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L67"}, {"caller_nid": "api_public_wx_mini_code_to_openid", "callee": "get", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L68"}, {"caller_nid": "api_public_wx_mini_code_to_openid", "callee": "get", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L69"}, {"caller_nid": "api_public_web_login_rsa_public_key", "callee": "ensure_initialized", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L78"}, {"caller_nid": "api_public_web_login_rsa_public_key", "callee": "success_response", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L79"}, {"caller_nid": "api_public_web_login_rsa_public_key", "callee": "get_public_pem", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L79"}, {"caller_nid": "api_public_mini_login_rsa_public_key", "callee": "ensure_initialized", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L85"}, {"caller_nid": "api_public_mini_login_rsa_public_key", "callee": "success_response", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L86"}, {"caller_nid": "api_public_mini_login_rsa_public_key", "callee": "get_public_pem", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L86"}, {"caller_nid": "api_public_web_login", "callee": "ensure_initialized", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L96"}, {"caller_nid": "api_public_web_login", "callee": "extract_login_credentials", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L97"}, {"caller_nid": "api_public_web_login", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L99"}, {"caller_nid": "api_public_web_login", "callee": "get_by_username", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L101"}, {"caller_nid": "api_public_web_login", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L104"}, {"caller_nid": "api_public_web_login", "callee": "verify_password", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L106"}, {"caller_nid": "api_public_web_login", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L107"}, {"caller_nid": "api_public_web_login", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L110"}, {"caller_nid": "api_public_web_login", "callee": "get", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L114"}, {"caller_nid": "api_public_web_login", "callee": "generate_uuid", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L118"}, {"caller_nid": "api_public_web_login", "callee": "generate_uuid", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L119"}, {"caller_nid": "api_public_web_login", "callee": "generate_uuid", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L120"}, {"caller_nid": "api_public_web_login", "callee": "create_access_token", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L122"}, {"caller_nid": "api_public_web_login", "callee": "create_refresh_token", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L133"}, {"caller_nid": "api_public_web_login", "callee": "store_session", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L143"}, {"caller_nid": "api_public_web_login", "callee": "store_refresh_token", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L144"}, {"caller_nid": "api_public_web_login", "callee": "success_response", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L146"}, {"caller_nid": "api_public_refresh_token", "callee": "get", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L169"}, {"caller_nid": "api_public_refresh_token", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L171"}, {"caller_nid": "api_public_refresh_token", "callee": "decode_token", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L175"}, {"caller_nid": "api_public_refresh_token", "callee": "get", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L176"}, {"caller_nid": "api_public_refresh_token", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L177"}, {"caller_nid": "api_public_refresh_token", "callee": "get", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L179"}, {"caller_nid": "api_public_refresh_token", "callee": "get", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L180"}, {"caller_nid": "api_public_refresh_token", "callee": "is_session_valid", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L182"}, {"caller_nid": "api_public_refresh_token", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L183"}, {"caller_nid": "api_public_refresh_token", "callee": "is_refresh_token_valid", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L184"}, {"caller_nid": "api_public_refresh_token", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L185"}, {"caller_nid": "api_public_refresh_token", "callee": "get", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L187"}, {"caller_nid": "api_public_refresh_token", "callee": "get", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L188"}, {"caller_nid": "api_public_refresh_token", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L191"}, {"caller_nid": "api_public_refresh_token", "callee": "revoke_refresh_token", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L194"}, {"caller_nid": "api_public_refresh_token", "callee": "extend_session", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L196"}, {"caller_nid": "api_public_refresh_token", "callee": "generate_uuid", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L198"}, {"caller_nid": "api_public_refresh_token", "callee": "generate_uuid", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L199"}, {"caller_nid": "api_public_refresh_token", "callee": "create_access_token", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L201"}, {"caller_nid": "api_public_refresh_token", "callee": "create_refresh_token", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L212"}, {"caller_nid": "api_public_refresh_token", "callee": "store_refresh_token", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L222"}, {"caller_nid": "api_public_refresh_token", "callee": "success_response", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L224"}, {"caller_nid": "api_public_refresh_token", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L230"}, {"caller_nid": "api_public_logout", "callee": "get", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L236"}, {"caller_nid": "api_public_logout", "callee": "startswith", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L237"}, {"caller_nid": "api_public_logout", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L238"}, {"caller_nid": "api_public_logout", "callee": "replace", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L240"}, {"caller_nid": "api_public_logout", "callee": "decode_token", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L242"}, {"caller_nid": "api_public_logout", "callee": "get", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L243"}, {"caller_nid": "api_public_logout", "callee": "revoke_session", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L245"}, {"caller_nid": "api_public_logout", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L247"}, {"caller_nid": "api_public_logout", "callee": "success_response", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L249"}, {"caller_nid": "api_public_get_current_user", "callee": "get", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L255"}, {"caller_nid": "api_public_get_current_user", "callee": "startswith", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L256"}, {"caller_nid": "api_public_get_current_user", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L257"}, {"caller_nid": "api_public_get_current_user", "callee": "replace", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L259"}, {"caller_nid": "api_public_get_current_user", "callee": "get_current_user_by_token", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L261"}, {"caller_nid": "api_public_get_current_user", "callee": "get", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L264"}, {"caller_nid": "api_public_get_current_user", "callee": "get", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L265"}, {"caller_nid": "api_public_get_current_user", "callee": "get", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L265"}, {"caller_nid": "api_public_get_current_user", "callee": "all", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L268"}, {"caller_nid": "api_public_get_current_user", "callee": "filter", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L268"}, {"caller_nid": "api_public_get_current_user", "callee": "query", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L268"}, {"caller_nid": "api_public_get_current_user", "callee": "get", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L270"}, {"caller_nid": "api_public_get_current_user", "callee": "sorted", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L275"}, {"caller_nid": "api_public_get_current_user", "callee": "strip", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L275"}, {"caller_nid": "api_public_get_current_user", "callee": "str", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L275"}, {"caller_nid": "api_public_get_current_user", "callee": "get", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L277"}, {"caller_nid": "api_public_get_current_user", "callee": "strip", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L278"}, {"caller_nid": "api_public_get_current_user", "callee": "str", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L278"}, {"caller_nid": "api_public_get_current_user", "callee": "success_response", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L279"}, {"caller_nid": "api_public_get_current_user", "callee": "get", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L280"}, {"caller_nid": "api_public_get_current_user", "callee": "get", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L281"}, {"caller_nid": "api_public_get_current_user", "callee": "get", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L282"}, {"caller_nid": "api_public_get_current_user", "callee": "get", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L283"}, {"caller_nid": "api_public_get_current_user", "callee": "get", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L284"}, {"caller_nid": "api_public_get_current_user", "callee": "get", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L285"}, {"caller_nid": "api_public_get_current_user", "callee": "get", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L286"}, {"caller_nid": "api_public_get_current_user", "callee": "get", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L289"}, {"caller_nid": "api_public_get_current_user", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L293"}, {"caller_nid": "api_public_get_web_auth_menu_codes", "callee": "get", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L299"}, {"caller_nid": "api_public_get_web_auth_menu_codes", "callee": "startswith", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L300"}, {"caller_nid": "api_public_get_web_auth_menu_codes", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L301"}, {"caller_nid": "api_public_get_web_auth_menu_codes", "callee": "replace", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L303"}, {"caller_nid": "api_public_get_web_auth_menu_codes", "callee": "get_current_user_by_token", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L305"}, {"caller_nid": "api_public_get_web_auth_menu_codes", "callee": "get", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L306"}, {"caller_nid": "api_public_get_web_auth_menu_codes", "callee": "success_response", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L308"}, {"caller_nid": "api_public_get_web_auth_menu_codes", "callee": "all", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L315"}, {"caller_nid": "api_public_get_web_auth_menu_codes", "callee": "filter", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L315"}, {"caller_nid": "api_public_get_web_auth_menu_codes", "callee": "query", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L315"}, {"caller_nid": "api_public_get_web_auth_menu_codes", "callee": "get", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L317"}, {"caller_nid": "api_public_get_web_auth_menu_codes", "callee": "sorted", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L322"}, {"caller_nid": "api_public_get_web_auth_menu_codes", "callee": "strip", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L322"}, {"caller_nid": "api_public_get_web_auth_menu_codes", "callee": "str", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L322"}, {"caller_nid": "api_public_get_web_auth_menu_codes", "callee": "success_response", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L323"}, {"caller_nid": "api_public_get_web_auth_menu_codes", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L329"}, {"caller_nid": "api_public_mini_login", "callee": "ensure_initialized", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L342"}, {"caller_nid": "api_public_mini_login", "callee": "extract_login_credentials", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L343"}, {"caller_nid": "api_public_mini_login", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L345"}, {"caller_nid": "api_public_mini_login", "callee": "get_by_username", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L347"}, {"caller_nid": "api_public_mini_login", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L350"}, {"caller_nid": "api_public_mini_login", "callee": "verify_password", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L352"}, {"caller_nid": "api_public_mini_login", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L353"}, {"caller_nid": "api_public_mini_login", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L356"}, {"caller_nid": "api_public_mini_login", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L360"}, {"caller_nid": "api_public_mini_login", "callee": "get", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L364"}, {"caller_nid": "api_public_mini_login", "callee": "generate_uuid", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L367"}, {"caller_nid": "api_public_mini_login", "callee": "generate_uuid", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L368"}, {"caller_nid": "api_public_mini_login", "callee": "generate_uuid", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L369"}, {"caller_nid": "api_public_mini_login", "callee": "create_access_token", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L371"}, {"caller_nid": "api_public_mini_login", "callee": "create_refresh_token", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L382"}, {"caller_nid": "api_public_mini_login", "callee": "store_session", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L392"}, {"caller_nid": "api_public_mini_login", "callee": "store_refresh_token", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L393"}, {"caller_nid": "api_public_mini_login", "callee": "success_response", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L395"}, {"caller_nid": "api_public_mini_sms_login", "callee": "get", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L419"}, {"caller_nid": "api_public_mini_sms_login", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L421"}, {"caller_nid": "api_public_mini_sms_login", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L425"}, {"caller_nid": "api_public_mini_sms_login", "callee": "get_by_wx_mini_openid", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L427"}, {"caller_nid": "api_public_mini_sms_login", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L429"}, {"caller_nid": "api_public_mini_sms_login", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L432"}, {"caller_nid": "api_public_mini_sms_login", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L435"}, {"caller_nid": "api_public_mini_sms_login", "callee": "get", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L439"}, {"caller_nid": "api_public_mini_sms_login", "callee": "generate_uuid", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L442"}, {"caller_nid": "api_public_mini_sms_login", "callee": "generate_uuid", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L443"}, {"caller_nid": "api_public_mini_sms_login", "callee": "generate_uuid", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L444"}, {"caller_nid": "api_public_mini_sms_login", "callee": "create_access_token", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L446"}, {"caller_nid": "api_public_mini_sms_login", "callee": "create_refresh_token", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L457"}, {"caller_nid": "api_public_mini_sms_login", "callee": "store_session", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L467"}, {"caller_nid": "api_public_mini_sms_login", "callee": "store_refresh_token", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L468"}, {"caller_nid": "api_public_mini_sms_login", "callee": "success_response", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L470"}, {"caller_nid": "api_public_mini_bind_wechat", "callee": "get", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L494"}, {"caller_nid": "api_public_mini_bind_wechat", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L496"}, {"caller_nid": "api_public_mini_bind_wechat", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L500"}, {"caller_nid": "api_public_mini_bind_wechat", "callee": "get", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L502"}, {"caller_nid": "api_public_mini_bind_wechat", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L503"}, {"caller_nid": "api_public_mini_bind_wechat", "callee": "get_by_wx_mini_openid", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L505"}, {"caller_nid": "api_public_mini_bind_wechat", "callee": "get", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L506"}, {"caller_nid": "api_public_mini_bind_wechat", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L507"}, {"caller_nid": "api_public_mini_bind_wechat", "callee": "update_with_history", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L509"}, {"caller_nid": "api_public_mini_bind_wechat", "callee": "get", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L511"}, {"caller_nid": "api_public_mini_bind_wechat", "callee": "get", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L513"}, {"caller_nid": "api_public_mini_bind_wechat", "callee": "get", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L513"}, {"caller_nid": "api_public_mini_bind_wechat", "callee": "success_response", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L515"}, {"caller_nid": "api_public_mini_code_openid", "callee": "get", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L521"}, {"caller_nid": "api_public_mini_code_openid", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L523"}, {"caller_nid": "api_public_mini_code_openid", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L526"}, {"caller_nid": "api_public_mini_code_openid", "callee": "success_response", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L527"}, {"caller_nid": "api_public_get_mini_current_user", "callee": "get", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L533"}, {"caller_nid": "api_public_get_mini_current_user", "callee": "startswith", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L534"}, {"caller_nid": "api_public_get_mini_current_user", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L535"}, {"caller_nid": "api_public_get_mini_current_user", "callee": "replace", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L537"}, {"caller_nid": "api_public_get_mini_current_user", "callee": "get_current_user_by_token", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L539"}, {"caller_nid": "api_public_get_mini_current_user", "callee": "get", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L542"}, {"caller_nid": "api_public_get_mini_current_user", "callee": "get", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L543"}, {"caller_nid": "api_public_get_mini_current_user", "callee": "get", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L543"}, {"caller_nid": "api_public_get_mini_current_user", "callee": "get", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L546"}, {"caller_nid": "api_public_get_mini_current_user", "callee": "strip", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L547"}, {"caller_nid": "api_public_get_mini_current_user", "callee": "str", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L547"}, {"caller_nid": "api_public_get_mini_current_user", "callee": "success_response", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L548"}, {"caller_nid": "api_public_get_mini_current_user", "callee": "get", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L549"}, {"caller_nid": "api_public_get_mini_current_user", "callee": "get", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L550"}, {"caller_nid": "api_public_get_mini_current_user", "callee": "get", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L551"}, {"caller_nid": "api_public_get_mini_current_user", "callee": "get", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L552"}, {"caller_nid": "api_public_get_mini_current_user", "callee": "get", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L553"}, {"caller_nid": "api_public_get_mini_current_user", "callee": "get", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L554"}, {"caller_nid": "api_public_get_mini_current_user", "callee": "get", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L556"}, {"caller_nid": "api_public_get_mini_current_user", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L560"}, {"caller_nid": "api_public_mini_logout", "callee": "get", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L566"}, {"caller_nid": "api_public_mini_logout", "callee": "startswith", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L567"}, {"caller_nid": "api_public_mini_logout", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L568"}, {"caller_nid": "api_public_mini_logout", "callee": "replace", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L570"}, {"caller_nid": "api_public_mini_logout", "callee": "decode_token", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L572"}, {"caller_nid": "api_public_mini_logout", "callee": "get", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L573"}, {"caller_nid": "api_public_mini_logout", "callee": "revoke_session", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L575"}, {"caller_nid": "api_public_mini_logout", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L577"}, {"caller_nid": "api_public_mini_logout", "callee": "success_response", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L579"}, {"caller_nid": "api_public_mini_change_password", "callee": "get", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L589"}, {"caller_nid": "api_public_mini_change_password", "callee": "get", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L590"}, {"caller_nid": "api_public_mini_change_password", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L593"}, {"caller_nid": "api_public_mini_change_password", "callee": "len", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L595"}, {"caller_nid": "api_public_mini_change_password", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L596"}, {"caller_nid": "api_public_mini_change_password", "callee": "get", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L598"}, {"caller_nid": "api_public_mini_change_password", "callee": "startswith", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L599"}, {"caller_nid": "api_public_mini_change_password", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L600"}, {"caller_nid": "api_public_mini_change_password", "callee": "replace", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L602"}, {"caller_nid": "api_public_mini_change_password", "callee": "get_current_user_by_token", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L604"}, {"caller_nid": "api_public_mini_change_password", "callee": "get", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L605"}, {"caller_nid": "api_public_mini_change_password", "callee": "get", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L606"}, {"caller_nid": "api_public_mini_change_password", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L609"}, {"caller_nid": "api_public_mini_change_password", "callee": "verify_password", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L611"}, {"caller_nid": "api_public_mini_change_password", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L612"}, {"caller_nid": "api_public_mini_change_password", "callee": "get_password_hash", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L614"}, {"caller_nid": "api_public_mini_change_password", "callee": "commit", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L615"}, {"caller_nid": "api_public_mini_change_password", "callee": "get_client_ip", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L617"}, {"caller_nid": "api_public_mini_change_password", "callee": "create_password_history", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L618"}, {"caller_nid": "api_public_mini_change_password", "callee": "success_response", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L627"}, {"caller_nid": "api_public_mini_change_password", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L629"}]}
|