| 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": "L286"}, {"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": "L325"}, {"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": "L402"}, {"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": "L477"}, {"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": "L508"}, {"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": "L520"}, {"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": "L553"}, {"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": "L572"}, {"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_287", "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": "L287"}, {"id": "api_public_rationale_330", "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": "L330"}, {"id": "api_public_rationale_407", "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": "L407"}, {"id": "api_public_rationale_482", "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": "L482"}, {"id": "api_public_rationale_509", "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": "L509"}], "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": "L286", "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": "L325", "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": "L402", "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": "L477", "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": "L508", "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": "L520", "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": "L553", "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": "L572", "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": "L396", "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": "L412", "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": "L471", "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": "L487", "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": "L513", "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_287", "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": "L287", "weight": 1.0}, {"source": "api_public_rationale_330", "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": "L330", "weight": 1.0}, {"source": "api_public_rationale_407", "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": "L407", "weight": 1.0}, {"source": "api_public_rationale_482", "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": "L482", "weight": 1.0}, {"source": "api_public_rationale_509", "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": "L509", "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": "get", "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": "strip", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L269"}, {"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": "L269"}, {"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": "L270"}, {"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": "L271"}, {"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": "L272"}, {"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": "L273"}, {"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": "L274"}, {"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": "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": "L276"}, {"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": "L278"}, {"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": "L282"}, {"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": "L288"}, {"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": "L289"}, {"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": "L290"}, {"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": "L292"}, {"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": "L294"}, {"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": "L295"}, {"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": "L297"}, {"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": "L304"}, {"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": "L304"}, {"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": "L304"}, {"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": "sorted", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L311"}, {"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": "L311"}, {"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": "L311"}, {"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": "L312"}, {"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": "L318"}, {"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": "L331"}, {"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": "L332"}, {"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": "L334"}, {"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": "L336"}, {"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": "L339"}, {"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": "L341"}, {"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": "L342"}, {"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": "error_response", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L349"}, {"caller_nid": "api_public_mini_login", "callee": "get", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L353"}, {"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": "L356"}, {"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": "L357"}, {"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": "L358"}, {"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": "L360"}, {"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": "L371"}, {"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": "L381"}, {"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": "L382"}, {"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": "L384"}, {"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": "L408"}, {"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": "L410"}, {"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": "L414"}, {"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": "L416"}, {"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": "L418"}, {"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": "L424"}, {"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": "L428"}, {"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": "L431"}, {"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": "L432"}, {"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": "L433"}, {"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": "L435"}, {"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": "L446"}, {"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": "L456"}, {"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": "L457"}, {"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": "L459"}, {"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": "L483"}, {"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": "L485"}, {"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": "L489"}, {"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": "L491"}, {"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": "L492"}, {"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": "L494"}, {"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": "L495"}, {"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": "update_with_history", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L498"}, {"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": "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": "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": "success_response", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L504"}, {"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": "L510"}, {"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": "L512"}, {"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": "L515"}, {"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": "L516"}, {"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": "L522"}, {"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": "L523"}, {"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": "L524"}, {"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": "L526"}, {"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": "L528"}, {"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": "L531"}, {"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": "L532"}, {"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": "L532"}, {"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": "L535"}, {"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": "L536"}, {"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": "L536"}, {"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": "L537"}, {"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": "L538"}, {"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": "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": "L540"}, {"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": "L541"}, {"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": "L545"}, {"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": "L549"}, {"caller_nid": "api_public_mini_logout", "callee": "get", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L555"}, {"caller_nid": "api_public_mini_logout", "callee": "startswith", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L556"}, {"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": "L557"}, {"caller_nid": "api_public_mini_logout", "callee": "replace", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L559"}, {"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": "L561"}, {"caller_nid": "api_public_mini_logout", "callee": "get", "source_file": "/Users/wuzilong/work/00code/sqxp_\u526f\u672c2/backend/app/api/public.py", "source_location": "L562"}, {"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": "L564"}, {"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": "L566"}, {"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": "L568"}, {"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": "L578"}, {"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": "L579"}, {"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": "L582"}, {"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": "L584"}, {"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": "L585"}, {"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": "L587"}, {"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": "L588"}, {"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": "L589"}, {"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": "L591"}, {"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": "L593"}, {"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": "L594"}, {"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": "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": "L598"}, {"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": "L600"}, {"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": "L601"}, {"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": "L603"}, {"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": "L604"}, {"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": "L606"}, {"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": "L607"}, {"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": "L616"}, {"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": "L618"}]}
|