iatoolkit 0.4.2__py3-none-any.whl → 0.66.2__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- iatoolkit/__init__.py +13 -35
- iatoolkit/base_company.py +74 -8
- iatoolkit/cli_commands.py +15 -23
- iatoolkit/common/__init__.py +0 -0
- iatoolkit/common/exceptions.py +46 -0
- iatoolkit/common/routes.py +141 -0
- iatoolkit/common/session_manager.py +24 -0
- iatoolkit/common/util.py +348 -0
- iatoolkit/company_registry.py +7 -8
- iatoolkit/iatoolkit.py +169 -96
- iatoolkit/infra/__init__.py +5 -0
- iatoolkit/infra/call_service.py +140 -0
- iatoolkit/infra/connectors/__init__.py +5 -0
- iatoolkit/infra/connectors/file_connector.py +17 -0
- iatoolkit/infra/connectors/file_connector_factory.py +57 -0
- iatoolkit/infra/connectors/google_cloud_storage_connector.py +53 -0
- iatoolkit/infra/connectors/google_drive_connector.py +68 -0
- iatoolkit/infra/connectors/local_file_connector.py +46 -0
- iatoolkit/infra/connectors/s3_connector.py +33 -0
- iatoolkit/infra/gemini_adapter.py +356 -0
- iatoolkit/infra/google_chat_app.py +57 -0
- iatoolkit/infra/llm_client.py +429 -0
- iatoolkit/infra/llm_proxy.py +139 -0
- iatoolkit/infra/llm_response.py +40 -0
- iatoolkit/infra/mail_app.py +145 -0
- iatoolkit/infra/openai_adapter.py +90 -0
- iatoolkit/infra/redis_session_manager.py +122 -0
- iatoolkit/locales/en.yaml +144 -0
- iatoolkit/locales/es.yaml +140 -0
- iatoolkit/repositories/__init__.py +5 -0
- iatoolkit/repositories/database_manager.py +110 -0
- iatoolkit/repositories/document_repo.py +33 -0
- iatoolkit/repositories/llm_query_repo.py +91 -0
- iatoolkit/repositories/models.py +336 -0
- iatoolkit/repositories/profile_repo.py +123 -0
- iatoolkit/repositories/tasks_repo.py +52 -0
- iatoolkit/repositories/vs_repo.py +139 -0
- iatoolkit/services/__init__.py +5 -0
- iatoolkit/services/auth_service.py +193 -0
- {services → iatoolkit/services}/benchmark_service.py +6 -6
- iatoolkit/services/branding_service.py +149 -0
- {services → iatoolkit/services}/dispatcher_service.py +39 -99
- {services → iatoolkit/services}/document_service.py +5 -5
- {services → iatoolkit/services}/excel_service.py +27 -21
- {services → iatoolkit/services}/file_processor_service.py +5 -5
- iatoolkit/services/help_content_service.py +30 -0
- {services → iatoolkit/services}/history_service.py +8 -16
- iatoolkit/services/i18n_service.py +104 -0
- {services → iatoolkit/services}/jwt_service.py +18 -27
- iatoolkit/services/language_service.py +77 -0
- {services → iatoolkit/services}/load_documents_service.py +19 -14
- {services → iatoolkit/services}/mail_service.py +5 -5
- iatoolkit/services/onboarding_service.py +43 -0
- {services → iatoolkit/services}/profile_service.py +155 -89
- {services → iatoolkit/services}/prompt_manager_service.py +26 -11
- {services → iatoolkit/services}/query_service.py +142 -104
- {services → iatoolkit/services}/search_service.py +21 -5
- {services → iatoolkit/services}/sql_service.py +24 -6
- {services → iatoolkit/services}/tasks_service.py +10 -10
- iatoolkit/services/user_feedback_service.py +103 -0
- iatoolkit/services/user_session_context_service.py +143 -0
- iatoolkit/static/images/fernando.jpeg +0 -0
- iatoolkit/static/js/chat_feedback_button.js +80 -0
- iatoolkit/static/js/chat_filepond.js +85 -0
- iatoolkit/static/js/chat_help_content.js +124 -0
- iatoolkit/static/js/chat_history_button.js +112 -0
- iatoolkit/static/js/chat_logout_button.js +36 -0
- iatoolkit/static/js/chat_main.js +364 -0
- iatoolkit/static/js/chat_onboarding_button.js +97 -0
- iatoolkit/static/js/chat_prompt_manager.js +94 -0
- iatoolkit/static/js/chat_reload_button.js +35 -0
- iatoolkit/static/styles/chat_iatoolkit.css +592 -0
- iatoolkit/static/styles/chat_modal.css +169 -0
- iatoolkit/static/styles/chat_public.css +107 -0
- iatoolkit/static/styles/landing_page.css +182 -0
- iatoolkit/static/styles/llm_output.css +115 -0
- iatoolkit/static/styles/onboarding.css +169 -0
- iatoolkit/system_prompts/query_main.prompt +5 -15
- iatoolkit/templates/_company_header.html +20 -0
- iatoolkit/templates/_login_widget.html +42 -0
- iatoolkit/templates/about.html +13 -0
- iatoolkit/templates/base.html +65 -0
- iatoolkit/templates/change_password.html +66 -0
- iatoolkit/templates/chat.html +287 -0
- iatoolkit/templates/chat_modals.html +181 -0
- iatoolkit/templates/error.html +51 -0
- iatoolkit/templates/forgot_password.html +50 -0
- iatoolkit/templates/index.html +145 -0
- iatoolkit/templates/login_simulation.html +34 -0
- iatoolkit/templates/onboarding_shell.html +104 -0
- iatoolkit/templates/signup.html +76 -0
- iatoolkit/views/__init__.py +5 -0
- iatoolkit/views/base_login_view.py +92 -0
- iatoolkit/views/change_password_view.py +117 -0
- iatoolkit/views/external_login_view.py +73 -0
- iatoolkit/views/file_store_api_view.py +65 -0
- iatoolkit/views/forgot_password_view.py +72 -0
- iatoolkit/views/help_content_api_view.py +54 -0
- iatoolkit/views/history_api_view.py +56 -0
- iatoolkit/views/home_view.py +61 -0
- iatoolkit/views/index_view.py +14 -0
- iatoolkit/views/init_context_api_view.py +73 -0
- iatoolkit/views/llmquery_api_view.py +57 -0
- iatoolkit/views/login_simulation_view.py +81 -0
- iatoolkit/views/login_view.py +153 -0
- iatoolkit/views/logout_api_view.py +49 -0
- iatoolkit/views/profile_api_view.py +46 -0
- iatoolkit/views/prompt_api_view.py +37 -0
- iatoolkit/views/signup_view.py +94 -0
- iatoolkit/views/tasks_api_view.py +72 -0
- iatoolkit/views/tasks_review_api_view.py +55 -0
- iatoolkit/views/user_feedback_api_view.py +60 -0
- iatoolkit/views/verify_user_view.py +62 -0
- {iatoolkit-0.4.2.dist-info → iatoolkit-0.66.2.dist-info}/METADATA +2 -2
- iatoolkit-0.66.2.dist-info/RECORD +119 -0
- {iatoolkit-0.4.2.dist-info → iatoolkit-0.66.2.dist-info}/top_level.txt +0 -1
- iatoolkit/system_prompts/arquitectura.prompt +0 -32
- iatoolkit-0.4.2.dist-info/RECORD +0 -32
- services/__init__.py +0 -5
- services/api_service.py +0 -75
- services/user_feedback_service.py +0 -67
- services/user_session_context_service.py +0 -85
- {iatoolkit-0.4.2.dist-info → iatoolkit-0.66.2.dist-info}/WHEEL +0 -0
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
iatoolkit/__init__.py,sha256=4PWjMJjktixtrxF6BY405qyA50Sv967kEP2x-oil6qk,1120
|
|
2
|
+
iatoolkit/base_company.py,sha256=vU4ki-wB3PWIn3_Bvehfh0TfBH_XNC614tRBKNmEd84,4718
|
|
3
|
+
iatoolkit/cli_commands.py,sha256=G5L9xQXZ0lVFXQWBaE_KEZHyfuiT6PL1nTQRoSdnBzc,2302
|
|
4
|
+
iatoolkit/company_registry.py,sha256=tduqt3oV8iDX_IB1eA7KIgvIxE4edTcy-3qZIXh3Lzw,2549
|
|
5
|
+
iatoolkit/iatoolkit.py,sha256=lz8-49TDLG0RcDqg5kh7jlir7K6JQbKDRKTBMGGKu7c,19134
|
|
6
|
+
iatoolkit/common/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
7
|
+
iatoolkit/common/exceptions.py,sha256=EXx40n5htp7UiOM6P1xfJ9U6NMcADqm62dlFaKz7ICU,1154
|
|
8
|
+
iatoolkit/common/routes.py,sha256=sYkW9mLIh8IUh8v_CyLxwR9wELiPJdZqjt07DVyozeU,6261
|
|
9
|
+
iatoolkit/common/session_manager.py,sha256=UeKfD15bcEA3P5e0WSURfotLqpsiIMp3AXxAMhtgHs0,471
|
|
10
|
+
iatoolkit/common/util.py,sha256=lwMhQ2gT1DPzJ3mmL9xw3uobWJFIapAw50ks6mCvV60,15028
|
|
11
|
+
iatoolkit/infra/__init__.py,sha256=5JqK9sZ6jBuK83zDQokUhxQ0wuJJJ9DXB8pYCLkX7X4,102
|
|
12
|
+
iatoolkit/infra/call_service.py,sha256=iRk9VxbXaAwlLIl8fUzGDWIAdzwfsbs1MtP84YeENxg,4929
|
|
13
|
+
iatoolkit/infra/gemini_adapter.py,sha256=kXV-t5i9GmWBafUPX2kAyiqvcT7GPoxHylcCUWG_c_U,15051
|
|
14
|
+
iatoolkit/infra/google_chat_app.py,sha256=_uKWxeacHH6C5a4FVx0YZjBn1tL-x_MIQV9gqgWGAjo,1937
|
|
15
|
+
iatoolkit/infra/llm_client.py,sha256=clTYqV_0a2VD2vVH3j6AWqd1gVUmeg-fU3_myizmjQc,18543
|
|
16
|
+
iatoolkit/infra/llm_proxy.py,sha256=cHyNxUpVE4UDoWUfvSGfGCrIUFPTrpWZOixELQTsGFY,5744
|
|
17
|
+
iatoolkit/infra/llm_response.py,sha256=YUUQPBHzmP3Ce6-t0kKMRIpowvh7de1odSoefEByIvI,904
|
|
18
|
+
iatoolkit/infra/mail_app.py,sha256=PLGZdEs7LQ_9bmMRRxz0iqQdNa4xToAFyf9tg75wK8U,6103
|
|
19
|
+
iatoolkit/infra/openai_adapter.py,sha256=tbzd8aPAH5cQOJT-sD4ypqq2fWB6WiEIGuGesUDnQNk,3550
|
|
20
|
+
iatoolkit/infra/redis_session_manager.py,sha256=EPr3E_g7LHxn6U4SV5lT_L8WQsAwg8VzA_WIEZ3TwOw,3667
|
|
21
|
+
iatoolkit/infra/connectors/__init__.py,sha256=5JqK9sZ6jBuK83zDQokUhxQ0wuJJJ9DXB8pYCLkX7X4,102
|
|
22
|
+
iatoolkit/infra/connectors/file_connector.py,sha256=HOjRTFd-WfDOcFyvHncAhnGNZuFgChIwC-P6osPo9ZM,352
|
|
23
|
+
iatoolkit/infra/connectors/file_connector_factory.py,sha256=3qvyfH4ZHKuiMxJFkawOxhW2-TGKKtsBYHgoPpZMuKU,2118
|
|
24
|
+
iatoolkit/infra/connectors/google_cloud_storage_connector.py,sha256=IXpL3HTo7Ft4EQsYiQq5wXRRQK854jzOEB7ZdWjLa4U,2050
|
|
25
|
+
iatoolkit/infra/connectors/google_drive_connector.py,sha256=WR1AlO5-Bl3W89opdja0kKgHTJzVOjTsy3H4SlIvwVg,2537
|
|
26
|
+
iatoolkit/infra/connectors/local_file_connector.py,sha256=hrzIgpMJOTuwTqzlQeTIU_50ZbZ6yl8lcWPv6hMnoqI,1739
|
|
27
|
+
iatoolkit/infra/connectors/s3_connector.py,sha256=Nj4_YaLobjfcnbZewJf21_K2EXohgcc3mJll1Pzn4zg,1123
|
|
28
|
+
iatoolkit/locales/en.yaml,sha256=6FO_3U7QMvRDve8f6a_VpB5n--F7klTpYbYekB_Gqd8,6577
|
|
29
|
+
iatoolkit/locales/es.yaml,sha256=vQJQWKR7mnGtG32gTcnwJW52YmizVrgGSvKFQuiMw-s,7520
|
|
30
|
+
iatoolkit/repositories/__init__.py,sha256=5JqK9sZ6jBuK83zDQokUhxQ0wuJJJ9DXB8pYCLkX7X4,102
|
|
31
|
+
iatoolkit/repositories/database_manager.py,sha256=QgV8hNnVv9RmeOvUdomdj_mfk0bf3Rl8Ti41a-5zIAY,3700
|
|
32
|
+
iatoolkit/repositories/document_repo.py,sha256=Y7bF1kZB1HWJsAGjWdF7P2aVYeTYNufq9ngQXp7mDkY,1124
|
|
33
|
+
iatoolkit/repositories/llm_query_repo.py,sha256=YT_t7cYGQk8rwzH_17-28aTzO-e2jUfa2rvXy8tugvA,3612
|
|
34
|
+
iatoolkit/repositories/models.py,sha256=b08sJ8ZXyIbMa7dK4wgG7juTG7-FzL--ADFv8Zx-sQU,14417
|
|
35
|
+
iatoolkit/repositories/profile_repo.py,sha256=21am3GP7XCG0nq6i3pArQ7mfGsrRn8rdcWT98fsdwlU,4397
|
|
36
|
+
iatoolkit/repositories/tasks_repo.py,sha256=icVO_r2oPagGnnBhwVFzznnvEEU2EAx-2dlWuWvoDC4,1745
|
|
37
|
+
iatoolkit/repositories/vs_repo.py,sha256=UkpmQQiocgM5IwRBmmWhw3HHzHP6zK1nN3J3TcQgjhc,5300
|
|
38
|
+
iatoolkit/services/__init__.py,sha256=5JqK9sZ6jBuK83zDQokUhxQ0wuJJJ9DXB8pYCLkX7X4,102
|
|
39
|
+
iatoolkit/services/auth_service.py,sha256=c2yDHNQqbt8Tio7QSL4FaxcHVtsBxLQf8VC2pDetZ4Y,7753
|
|
40
|
+
iatoolkit/services/benchmark_service.py,sha256=CdbFYyS3FHFhNzWQEa9ZNjUlmON10DT1nKNbZQ1EUi8,5880
|
|
41
|
+
iatoolkit/services/branding_service.py,sha256=a9T32oEFZY2e0DXg8WrFGX9KXBJYfuN2sbcD2Hpgypk,7832
|
|
42
|
+
iatoolkit/services/dispatcher_service.py,sha256=Qdn2x4cozpgpKg2448sUxkhO6tuplzb8xPWUxdTTFBE,12772
|
|
43
|
+
iatoolkit/services/document_service.py,sha256=nMXrNtbHQuc9pSaten0LvKY0kT8_WngBDmZJUP3jNPw,5936
|
|
44
|
+
iatoolkit/services/excel_service.py,sha256=JdAcg7_vPz3J16cf2chC6j7WYVpiT55tDX9667tfMUc,3764
|
|
45
|
+
iatoolkit/services/file_processor_service.py,sha256=B1sUUhZNFf-rT4_1wrD38GKNoBFMp2g0dYrXYMCWe2E,4122
|
|
46
|
+
iatoolkit/services/help_content_service.py,sha256=LV-HYe-1YyUkiYfeuzZmvW100pQMlqpL4h49lnJSFD0,940
|
|
47
|
+
iatoolkit/services/history_service.py,sha256=3IxcdpKV1mHBGIiv2KIYV3LsVQJ0GPdFuCOiGYRszMU,1255
|
|
48
|
+
iatoolkit/services/i18n_service.py,sha256=MisTYp1WZe2YUnq4oWWnSqfsneetOV5igUIlyEJBDmI,3933
|
|
49
|
+
iatoolkit/services/jwt_service.py,sha256=W2kQVNQheQSLkNLS7RZ4jd3hmySBPLbHAS5hvBrUI10,3244
|
|
50
|
+
iatoolkit/services/language_service.py,sha256=7G6LVCgvzckszxju04pECCl2VJHJGH5IXOhVtlJGASI,3024
|
|
51
|
+
iatoolkit/services/load_documents_service.py,sha256=ZpB0BZ3qX1fGJGBtZtMLbFdWWx0hkPoeCS3OqJKwCTs,7291
|
|
52
|
+
iatoolkit/services/mail_service.py,sha256=2h-fcF3swZDya_o7IpgXkmuj3iEVHVCiHi7oVxU99sQ,2182
|
|
53
|
+
iatoolkit/services/onboarding_service.py,sha256=cMO2Ho1-G3wAeVNl-j25LwCMJjRwj3yKHpYKnZUFLDE,2001
|
|
54
|
+
iatoolkit/services/profile_service.py,sha256=_7H6dfOKl6UoXpr6mOKnjbSNe8ef6Wwh8Fc2hNJlBuo,21820
|
|
55
|
+
iatoolkit/services/prompt_manager_service.py,sha256=U-XmSpkeXvv1KRN4dytdMxSYBMRSB7y-UHcb18mk0nA,8342
|
|
56
|
+
iatoolkit/services/query_service.py,sha256=gtMEAQ7IRVrFAMq4h_Pc_lHlMlXFI6heLSuBYHenkfs,17502
|
|
57
|
+
iatoolkit/services/search_service.py,sha256=i1xGWu7ORKIIDH0aAQBkF86dVVbLQ0Yrooz5TiZ6aGo,1823
|
|
58
|
+
iatoolkit/services/sql_service.py,sha256=MIslAtpJWnTMgSD74nnqTvQj27p-lHiyRXc6OiA2C_c,2172
|
|
59
|
+
iatoolkit/services/tasks_service.py,sha256=itREO5rDnUIgsqtyCOBKDtH30QL5v1egs4qPTiBK8xU,6865
|
|
60
|
+
iatoolkit/services/user_feedback_service.py,sha256=__65iWHPmBafqaYtVuv8Lg9XBgVshDXvL1JXFw5TxfM,5003
|
|
61
|
+
iatoolkit/services/user_session_context_service.py,sha256=vYF_vWM37tPB_ZyPBJ6f6WTJVjT2j-4L8JfZbqbI93k,6775
|
|
62
|
+
iatoolkit/static/images/fernando.jpeg,sha256=W68TYMuo5hZVpbP-evwH6Nu4xWFv2bc8pJzSKDoLTeQ,100612
|
|
63
|
+
iatoolkit/static/js/chat_feedback_button.js,sha256=Wzb2l3jmpZNwY2KYQQDuBmFKS4oU9WteB9s4U-bEqb4,2429
|
|
64
|
+
iatoolkit/static/js/chat_filepond.js,sha256=mzXafm7a506EpM37KATTK3zvAswO1E0KSUY1vKbwuRc,3163
|
|
65
|
+
iatoolkit/static/js/chat_help_content.js,sha256=N9APsdNoPWWyC1aMLjfq-xFfFYZ5g8ZefUGTkYt75DY,5211
|
|
66
|
+
iatoolkit/static/js/chat_history_button.js,sha256=YxJPNDwgnNCZAk0u3bTOWWZ_iXWimNNQY05LGFgvg-U,3488
|
|
67
|
+
iatoolkit/static/js/chat_logout_button.js,sha256=Of9H6IbAboSBmeqRaurEVW6_dL752L0UeDcDLNBD5Z0,1335
|
|
68
|
+
iatoolkit/static/js/chat_main.js,sha256=qXf8za7CAY5deLUraNsGJo_ljB1ceNkhFZo8IsCEgn0,13255
|
|
69
|
+
iatoolkit/static/js/chat_onboarding_button.js,sha256=vjvEloJ9PA9D7jOGca0QjS3J_7bU97R71L7kSyY3wOI,3153
|
|
70
|
+
iatoolkit/static/js/chat_prompt_manager.js,sha256=QYki28CpyM2Chn82dnOP2eH6FObxH8eChGFyUxukv1M,3319
|
|
71
|
+
iatoolkit/static/js/chat_reload_button.js,sha256=FHMm5sLdn2HuWDq66wphNuRcltjLG-aADp0yTwEbnQw,1256
|
|
72
|
+
iatoolkit/static/styles/chat_iatoolkit.css,sha256=C1qVIpL6hUdhkYIE4D1PeQmr-hv1QptuFqoWLcKkAuY,17006
|
|
73
|
+
iatoolkit/static/styles/chat_modal.css,sha256=ac49DAyViRUJZFcvxB7z8Ufv_ixAEXSKOC8NdtTuiMU,4130
|
|
74
|
+
iatoolkit/static/styles/chat_public.css,sha256=4EHN_VvURQYlooCmNB-UHIhvMsn4GFm7tKtr4VKpCNE,3830
|
|
75
|
+
iatoolkit/static/styles/landing_page.css,sha256=E6VRI5dko_naloH_FmNAHpjzxz4NZbrbzKwYLw4fYJA,4297
|
|
76
|
+
iatoolkit/static/styles/llm_output.css,sha256=AlxgRSOleeCk2dLAqFWVaQ-jwZiJjcpC5rHuUv3T6VU,2312
|
|
77
|
+
iatoolkit/static/styles/onboarding.css,sha256=Bo0hd8ngVy404_a-gtNFi-hzljhIAnpE-1oQJGnj0F0,3655
|
|
78
|
+
iatoolkit/system_prompts/format_styles.prompt,sha256=MSMe1qvR3cF_0IbFshn8R0z6Wx6VCHQq1p37rpu5wwk,3576
|
|
79
|
+
iatoolkit/system_prompts/query_main.prompt,sha256=D2Wjf0uunQIQsQiJVrY-BTQz6PemM5En6ftmw_c5t4E,2808
|
|
80
|
+
iatoolkit/system_prompts/sql_rules.prompt,sha256=y4nURVnb9AyFwt-lrbMNBHHtZlhk6kC9grYoOhRnrJo,59174
|
|
81
|
+
iatoolkit/templates/_company_header.html,sha256=wrwDftsSVu1uMPchsweAPLupsPkmLIPQBQ0xpIIyxjA,747
|
|
82
|
+
iatoolkit/templates/_login_widget.html,sha256=mheHpa_mcGK7UYSYdzxyD_n97MnJXJE19IcFxxUQYTY,1952
|
|
83
|
+
iatoolkit/templates/about.html,sha256=ciC08grUVz5qLzdzDDqDX31xirg5PrJIRYabWpV9oA8,294
|
|
84
|
+
iatoolkit/templates/base.html,sha256=xOox6JJEd6dHBlw6DBrFDJTXtAKCaXZc3Ffrufa-GDk,3042
|
|
85
|
+
iatoolkit/templates/change_password.html,sha256=rvB4R7lO3y__umQRvkcK1FaOYYvvHn4oKCdrUzvIvf8,3483
|
|
86
|
+
iatoolkit/templates/chat.html,sha256=Os_jD8QKh5goHnhJCo79FBzupzX37DnpcsyWc141fCY,13000
|
|
87
|
+
iatoolkit/templates/chat_modals.html,sha256=ojJRZ1a1yt7ByFLIqEyDpUTRuMepJIR6We9HLsLZFdI,8278
|
|
88
|
+
iatoolkit/templates/error.html,sha256=IdswYbZYp5cHZjPdKBOR44OBwL1GRVR--UTpSKYSwTU,1779
|
|
89
|
+
iatoolkit/templates/forgot_password.html,sha256=RPV_fDCzEdSQpA0qM8RNSCsNlhUhgp9sRGUHpMMBQ10,2247
|
|
90
|
+
iatoolkit/templates/index.html,sha256=mOuHePAmQ5PaMwqkJf7HU5oIL_lh8iKBKFng6d-QVzA,8017
|
|
91
|
+
iatoolkit/templates/login_simulation.html,sha256=1svwCBPrJ3Gy6bD9WMuz25NBSdFgZt4j8_sC7HE6MFU,1270
|
|
92
|
+
iatoolkit/templates/onboarding_shell.html,sha256=3Kb7R9AytkztJpxoTCi4zNZRZxxQ3mZsAId44BR5PaU,4611
|
|
93
|
+
iatoolkit/templates/signup.html,sha256=u2wiahk_d_BfooknSCcgcgAaQqIfas2aj6fe0cG3jzE,4174
|
|
94
|
+
iatoolkit/views/__init__.py,sha256=5JqK9sZ6jBuK83zDQokUhxQ0wuJJJ9DXB8pYCLkX7X4,102
|
|
95
|
+
iatoolkit/views/base_login_view.py,sha256=wwPcB2LE0FwyE-Any-KPkAJPYtzUw5_9E6q2sxO5Ryo,3700
|
|
96
|
+
iatoolkit/views/change_password_view.py,sha256=JfFcJgqIbsDaMgt9OB70GsWmzR8er6vmLi-fm-gPU1A,4966
|
|
97
|
+
iatoolkit/views/external_login_view.py,sha256=d4gUQbxFsThGbbAUdtFn7AMgPJjeb7_8KFFoH3vspVA,2853
|
|
98
|
+
iatoolkit/views/file_store_api_view.py,sha256=UvtZWOG-rLQMLfs8igOIYoQ-tkkEg5baMjqCJdKxaRQ,2300
|
|
99
|
+
iatoolkit/views/forgot_password_view.py,sha256=k200mbuzL6CZ-P8NfovpBYKAkzK0FNvZawD8kjGUWGA,3184
|
|
100
|
+
iatoolkit/views/help_content_api_view.py,sha256=f6zEQwTczA7X9Hbmstiglz6Oj1sMpXdF87bNY46BXEU,2026
|
|
101
|
+
iatoolkit/views/history_api_view.py,sha256=AFl_EQ3NaY4x_8BZ-jAYMV5DGAIEPgbyjNQnfI7iXt0,1974
|
|
102
|
+
iatoolkit/views/home_view.py,sha256=zKR-8bzOrS2OKy9Ka-j3Tsg3MHDzUurJQQ0LOfVF8P4,2574
|
|
103
|
+
iatoolkit/views/index_view.py,sha256=OsykSlXLB-TpFAPkDlsMna6bi3Ie5PXL303Hsg3WwUM,329
|
|
104
|
+
iatoolkit/views/init_context_api_view.py,sha256=i6fiotS7e7-xXFNH98FLnKqkXWj9pQ-gmgI2Y5bH93A,3000
|
|
105
|
+
iatoolkit/views/llmquery_api_view.py,sha256=MfUqHbX-EX8u3wBl2w7FMCPBZPm-EyH4aBvZdGljhms,2164
|
|
106
|
+
iatoolkit/views/login_simulation_view.py,sha256=0Qt-puRnltI2HZxlfdyJmOf26-hQp3xjknGV_jkwV7E,3484
|
|
107
|
+
iatoolkit/views/login_view.py,sha256=3C356H9UfI8VHcMwg8K8_5F3ZlFqeDD3s4pIaEfPUKw,6412
|
|
108
|
+
iatoolkit/views/logout_api_view.py,sha256=tvk4sCCXOFsk6qfGsrwY-pDKHL4ET30tL7ncTG-PT8A,1733
|
|
109
|
+
iatoolkit/views/profile_api_view.py,sha256=qhlmhyygIs5h-OyNDwq1uGUS8S-GxB2zOYY51Hs5prY,1645
|
|
110
|
+
iatoolkit/views/prompt_api_view.py,sha256=zumYnC_LWq_IeLraoL24YrY87U6a7iC6maY1PN-IP6U,1263
|
|
111
|
+
iatoolkit/views/signup_view.py,sha256=aAY5R4iH2Bi6qzfTNpyHvD-Vx6jC8oSKXlwQNOrQqw4,3980
|
|
112
|
+
iatoolkit/views/tasks_api_view.py,sha256=wGnuwuuL83ByQ1Yre6ytRVztA0OGQjGrwMjB1_G830U,2630
|
|
113
|
+
iatoolkit/views/tasks_review_api_view.py,sha256=wsCpzqyRyUdCXWAhyGlBe3eNZZ6A1DQG7TblN_GZNfM,1894
|
|
114
|
+
iatoolkit/views/user_feedback_api_view.py,sha256=QOTBtpNqYAmewXDgVAoaIprnVjvf1xM0ExWxSFp3ICI,2098
|
|
115
|
+
iatoolkit/views/verify_user_view.py,sha256=zo24b1Z-yAUR09zrAtl-o7-TwsSZQIHVHx2qK3VjEkc,2721
|
|
116
|
+
iatoolkit-0.66.2.dist-info/METADATA,sha256=tARrXrUegiJY4D_mftfIFDeEn2uclyfbp1e-lyeLnA8,9301
|
|
117
|
+
iatoolkit-0.66.2.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
118
|
+
iatoolkit-0.66.2.dist-info/top_level.txt,sha256=V_w4QvDx0b1RXiy8zTCrD1Bp7AZkFe3_O0-9fMiwogg,10
|
|
119
|
+
iatoolkit-0.66.2.dist-info/RECORD,,
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
Mi app es un chatbot multiempresa, que se conecta
|
|
2
|
-
con datos empresariales por sql y llamadas a endpoints.
|
|
3
|
-
|
|
4
|
-
Es principalmente un backend, pero tambien puede actuar como frontend.
|
|
5
|
-
Cuando actua como backend, los usuarios se identifican como external_user_id
|
|
6
|
-
y el front lo informa en la vista external_login_view.
|
|
7
|
-
|
|
8
|
-
Cuando actua como front y back,
|
|
9
|
-
existe un acceso que simula un usuario externo a través de
|
|
10
|
-
public_chat_view.
|
|
11
|
-
|
|
12
|
-
El otro mecanismo de acceso es con el sistema de usuarios
|
|
13
|
-
integrado a mi app, con tablas propias: user, company, user_company
|
|
14
|
-
y el acceso se hace a través de profile_service.
|
|
15
|
-
|
|
16
|
-
Estos accesos sirven para autentificar las consultas.
|
|
17
|
-
Cada vez que hay un acceso en estos puntos, se llama a query_service
|
|
18
|
-
para que construya el contexto de la empresa y se lo envie al
|
|
19
|
-
llm.
|
|
20
|
-
|
|
21
|
-
Se guarda en session de redis, el response.id generado
|
|
22
|
-
para linkearlo con las consultas futuras (responses api de openai).
|
|
23
|
-
|
|
24
|
-
Por otra parte, las queries ingresan a través de llm_query_view,
|
|
25
|
-
el que autentifica al solicitante y la dirige a query_service.
|
|
26
|
-
|
|
27
|
-
Query_service gestiona los prompts que pueden ser solicitados
|
|
28
|
-
y llama a invoke en openai_client, quien se encarga
|
|
29
|
-
de interactuar con el llm.
|
|
30
|
-
|
|
31
|
-
Una vez terminada la interacción, se graba un registro en la
|
|
32
|
-
tabla llm_queries.
|
iatoolkit-0.4.2.dist-info/RECORD
DELETED
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
iatoolkit/__init__.py,sha256=GkFxAQHKPifz4Kd8M73Rc8TWRVIxjxkl1N0nsPvb_sU,1743
|
|
2
|
-
iatoolkit/base_company.py,sha256=FlB-HFYH8FoTl4nbtsYgfKjkdZtizJbKwXqaosxmRqc,2009
|
|
3
|
-
iatoolkit/cli_commands.py,sha256=CyaabHA3HdKd-eIqrJD8IQFT7Tqn_BEdi4jb1utisMo,2909
|
|
4
|
-
iatoolkit/company_registry.py,sha256=KOUzJHLYgzMAV6BxkTiDPlN_ME4fktp7yRzKLlXZ5-w,2597
|
|
5
|
-
iatoolkit/iatoolkit.py,sha256=OwlGujwtNLBYtfZuCpcX_yzrgB8BVo9Jfh72owM8FFc,15651
|
|
6
|
-
iatoolkit/system_prompts/arquitectura.prompt,sha256=2W-7NWy6P6y1Gh5_-zD1iK-BWq1Siu8TuvGCouP67bQ,1267
|
|
7
|
-
iatoolkit/system_prompts/format_styles.prompt,sha256=MSMe1qvR3cF_0IbFshn8R0z6Wx6VCHQq1p37rpu5wwk,3576
|
|
8
|
-
iatoolkit/system_prompts/query_main.prompt,sha256=Eu5VOQzUygJ45Ct1WKYGbi0JMltgI6FQIZWlGmN1bdk,3214
|
|
9
|
-
iatoolkit/system_prompts/sql_rules.prompt,sha256=y4nURVnb9AyFwt-lrbMNBHHtZlhk6kC9grYoOhRnrJo,59174
|
|
10
|
-
services/__init__.py,sha256=fSvSfIcPW1dHwTBY1hQ5dBEhaoorzk_GzR4G46gD8tY,173
|
|
11
|
-
services/api_service.py,sha256=InIKTc64BWcp4U4tYKHz28x4ErPxIfvR9x3ZlxJZlXs,2911
|
|
12
|
-
services/benchmark_service.py,sha256=0Vgsx_FaUZL7igoBYbe1AZkIWOiEUx1FSCV_0Ut0mtk,5921
|
|
13
|
-
services/dispatcher_service.py,sha256=j3Vm3vgDIgwMn9tF1BBHN3sY-V30XIkbHNcXVR0u-kY,15491
|
|
14
|
-
services/document_service.py,sha256=np8wjaFpS8kVgAeVr8JWzGHcdRl1S4vsOX-dxyaLP8E,5961
|
|
15
|
-
services/excel_service.py,sha256=wE9Udbyb96kGRSnZZ6KM2mbE484rKjTEhta9GKKpy-8,3630
|
|
16
|
-
services/file_processor_service.py,sha256=0CM4CQu6KKfcLVGkxs4hYxgdz8kKRWfkV5rDH9UoccM,4173
|
|
17
|
-
services/history_service.py,sha256=6fGSSWxy60nxtkwp_fodwDHoVKhpIUbHnzAzUSiNi-Y,1657
|
|
18
|
-
services/jwt_service.py,sha256=dC45Sn6FyzdzRiQJnzgkjN3Hy21V1imRxB0hTyWRvlA,3979
|
|
19
|
-
services/load_documents_service.py,sha256=eDqi4Nr2K0BvHS4om07LL_wbFcyfJ4qIQiMULviZWsE,7098
|
|
20
|
-
services/mail_service.py,sha256=ystFit1LuYUC4ekYYebyiy1rqYQmxeL6K8h58MxEkOY,2233
|
|
21
|
-
services/profile_service.py,sha256=vZV0cregZQiPKYcNLaD7xjez2y6-3Mq97cDndC8NL8w,17922
|
|
22
|
-
services/prompt_manager_service.py,sha256=bWG4SIgt0u45PVUfm0xRLbLfKC7bk6uozVHRdkdgCmc,7761
|
|
23
|
-
services/query_service.py,sha256=zpaDzjzh2HqAG1F2Ap8WHBpfAMVtzZ_6v1JGVEguwvs,15687
|
|
24
|
-
services/search_service.py,sha256=oJD6WRXCJBD7WUVHWWKxexRkhR8nQSrFtcPV3pFO2KQ,1153
|
|
25
|
-
services/sql_service.py,sha256=H7CIPpXTcxLXLojD2fBFr_mIAD0PW1vEJhKHLfJi4Hk,1418
|
|
26
|
-
services/tasks_service.py,sha256=hHJDlcsSOPtEleD6_Vv3pocfxWNmthIhmZSdnoWFpEM,6861
|
|
27
|
-
services/user_feedback_service.py,sha256=YtCndRBekDEWYEbac431Ksn2gMO5iBrI3WqKK0xtShE,2513
|
|
28
|
-
services/user_session_context_service.py,sha256=5qn7fqpuiU8KgMpU4M5-iRUsETumz1raBw-EeZLuE1A,3868
|
|
29
|
-
iatoolkit-0.4.2.dist-info/METADATA,sha256=F2KitiTXfL4FN4nIp7ebGr36828ZVRO5QFT5Bvxmfg8,9300
|
|
30
|
-
iatoolkit-0.4.2.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
31
|
-
iatoolkit-0.4.2.dist-info/top_level.txt,sha256=dqlBbmgo9okD9d_WMR9uYzdup7Rxgj26yFF85jRGeu4,19
|
|
32
|
-
iatoolkit-0.4.2.dist-info/RECORD,,
|
services/__init__.py
DELETED
services/api_service.py
DELETED
|
@@ -1,75 +0,0 @@
|
|
|
1
|
-
# Copyright (c) 2024 Fernando Libedinsky
|
|
2
|
-
# Producto: IAToolkit
|
|
3
|
-
# Todos los derechos reservados.
|
|
4
|
-
# En trámite de registro en el Registro de Propiedad Intelectual de Chile.
|
|
5
|
-
|
|
6
|
-
from infra.call_service import CallServiceClient
|
|
7
|
-
from injector import inject
|
|
8
|
-
from common.exceptions import IAToolkitException
|
|
9
|
-
import json
|
|
10
|
-
from typing import Optional, Dict, Any, Union
|
|
11
|
-
|
|
12
|
-
class ApiService:
|
|
13
|
-
@inject
|
|
14
|
-
def __init__(self, call_service: CallServiceClient):
|
|
15
|
-
self.call_service = call_service
|
|
16
|
-
|
|
17
|
-
def call_api(
|
|
18
|
-
self,
|
|
19
|
-
endpoint: str,
|
|
20
|
-
method: str,
|
|
21
|
-
headers: Optional[Dict[str, str]] = None,
|
|
22
|
-
params: Optional[Dict[str, Union[str, int, float, bool]]] = None,
|
|
23
|
-
body: Optional[Dict[str, Any]] = None,
|
|
24
|
-
files: Optional[Dict[str, Any]] = None,
|
|
25
|
-
timeout: Union[int, float, tuple] = 10
|
|
26
|
-
) -> str:
|
|
27
|
-
"""
|
|
28
|
-
Ejecuta una llamada HTTP genérica.
|
|
29
|
-
|
|
30
|
-
- endpoint: URL completa
|
|
31
|
-
- method: GET | POST | PUT | DELETE (case-insensitive)
|
|
32
|
-
- headers: dict opcional de cabeceras
|
|
33
|
-
- params: dict opcional de query string
|
|
34
|
-
- body: dict opcional para JSON (POST/PUT/DELETE)
|
|
35
|
-
- files: dict opcional para multipart/form-data (prioriza POST files)
|
|
36
|
-
- timeout: segundos (int/float) o tuple (connect, read)
|
|
37
|
-
"""
|
|
38
|
-
m = (method or "").strip().lower()
|
|
39
|
-
|
|
40
|
-
if m == "get":
|
|
41
|
-
response, status_code = self.call_service.get(
|
|
42
|
-
endpoint, params=params, headers=headers, timeout=timeout
|
|
43
|
-
)
|
|
44
|
-
elif m == "post":
|
|
45
|
-
# Si vienen files → multipart; si no → JSON
|
|
46
|
-
if files:
|
|
47
|
-
response, status_code = self.call_service.post_files(
|
|
48
|
-
endpoint, data=files, params=params, headers=headers, timeout=timeout
|
|
49
|
-
)
|
|
50
|
-
else:
|
|
51
|
-
response, status_code = self.call_service.post(
|
|
52
|
-
endpoint=endpoint, json_dict=body, params=params, headers=headers, timeout=timeout
|
|
53
|
-
)
|
|
54
|
-
elif m == "put":
|
|
55
|
-
response, status_code = self.call_service.put(
|
|
56
|
-
endpoint, json_dict=body, params=params, headers=headers, timeout=timeout
|
|
57
|
-
)
|
|
58
|
-
elif m == "delete":
|
|
59
|
-
response, status_code = self.call_service.delete(
|
|
60
|
-
endpoint, json_dict=body, params=params, headers=headers, timeout=timeout
|
|
61
|
-
)
|
|
62
|
-
else:
|
|
63
|
-
raise IAToolkitException(
|
|
64
|
-
IAToolkitException.ErrorType.INVALID_PARAMETER,
|
|
65
|
-
f"API error: método '{method}' no soportado"
|
|
66
|
-
)
|
|
67
|
-
|
|
68
|
-
if status_code < 200 or status_code >= 300:
|
|
69
|
-
raise IAToolkitException(
|
|
70
|
-
IAToolkitException.ErrorType.CALL_ERROR,
|
|
71
|
-
f"API {endpoint} error: {status_code}"
|
|
72
|
-
)
|
|
73
|
-
|
|
74
|
-
# Normalizamos a string JSON (para que el LLM lo consuma consistente)
|
|
75
|
-
return json.dumps(response)
|
|
@@ -1,67 +0,0 @@
|
|
|
1
|
-
# Copyright (c) 2024 Fernando Libedinsky
|
|
2
|
-
# Producto: IAToolkit
|
|
3
|
-
# Todos los derechos reservados.
|
|
4
|
-
# En trámite de registro en el Registro de Propiedad Intelectual de Chile.
|
|
5
|
-
|
|
6
|
-
from repositories.models import UserFeedback
|
|
7
|
-
from injector import inject
|
|
8
|
-
from repositories.profile_repo import ProfileRepo
|
|
9
|
-
from infra.google_chat_app import GoogleChatApp
|
|
10
|
-
import logging
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
class UserFeedbackService:
|
|
14
|
-
@inject
|
|
15
|
-
def __init__(self, profile_repo: ProfileRepo, google_chat_app: GoogleChatApp):
|
|
16
|
-
self.profile_repo = profile_repo
|
|
17
|
-
self.google_chat_app = google_chat_app
|
|
18
|
-
|
|
19
|
-
def new_feedback(self,
|
|
20
|
-
company_short_name: str,
|
|
21
|
-
message: str,
|
|
22
|
-
external_user_id: str = None,
|
|
23
|
-
local_user_id: int = 0,
|
|
24
|
-
space: str = None,
|
|
25
|
-
type: str = None,
|
|
26
|
-
rating: int = None) -> dict:
|
|
27
|
-
try:
|
|
28
|
-
# validate company
|
|
29
|
-
company = self.profile_repo.get_company_by_short_name(company_short_name)
|
|
30
|
-
if not company:
|
|
31
|
-
return {'error': f'No existe la empresa: {company_short_name}'}
|
|
32
|
-
|
|
33
|
-
# send notification to Google Chat
|
|
34
|
-
chat_message = f"*Nuevo feedback de {company_short_name}*:\n*Usuario:* {external_user_id or local_user_id}\n*Mensaje:* {message}\n*Calificación:* {rating}"
|
|
35
|
-
|
|
36
|
-
# TO DO: get the space and type from the input data
|
|
37
|
-
chat_data = {
|
|
38
|
-
"type": type,
|
|
39
|
-
"space": {
|
|
40
|
-
"name": space
|
|
41
|
-
},
|
|
42
|
-
"message": {
|
|
43
|
-
"text": chat_message
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
chat_result = self.google_chat_app.send_message(message_data=chat_data)
|
|
48
|
-
|
|
49
|
-
if not chat_result.get('success'):
|
|
50
|
-
logging.warning(f"Error al enviar notificación a Google Chat: {chat_result.get('message')}")
|
|
51
|
-
|
|
52
|
-
# create the UserFeedback object
|
|
53
|
-
new_feedback = UserFeedback(
|
|
54
|
-
company_id=company.id,
|
|
55
|
-
message=message,
|
|
56
|
-
local_user_id=local_user_id,
|
|
57
|
-
external_user_id=external_user_id,
|
|
58
|
-
rating=rating
|
|
59
|
-
)
|
|
60
|
-
new_feedback = self.profile_repo.save_feedback(new_feedback)
|
|
61
|
-
if not new_feedback:
|
|
62
|
-
return {'error': 'No se pudo guardar el feedback'}
|
|
63
|
-
|
|
64
|
-
return {'message': 'Feedback guardado correctamente'}
|
|
65
|
-
|
|
66
|
-
except Exception as e:
|
|
67
|
-
return {'error': str(e)}
|
|
@@ -1,85 +0,0 @@
|
|
|
1
|
-
# Copyright (c) 2024 Fernando Libedinsky
|
|
2
|
-
# Producto: IAToolkit
|
|
3
|
-
# Todos los derechos reservados.
|
|
4
|
-
# En trámite de registro en el Registro de Propiedad Intelectual de Chile.
|
|
5
|
-
|
|
6
|
-
from infra.redis_session_manager import RedisSessionManager
|
|
7
|
-
from typing import List, Dict, Optional
|
|
8
|
-
import json
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
class UserSessionContextService:
|
|
12
|
-
"""
|
|
13
|
-
Gestiona el contexto de la sesión del usuario, incluyendo el historial
|
|
14
|
-
de conversación con el LLM y datos de la sesión del usuario.
|
|
15
|
-
|
|
16
|
-
Usa RedisSessionManager para persistencia directa en Redis.
|
|
17
|
-
"""
|
|
18
|
-
|
|
19
|
-
def _get_llm_history_key(self, company_short_name: str, user_identifier: str) -> str:
|
|
20
|
-
user_identifier = (user_identifier or "").strip()
|
|
21
|
-
if not user_identifier:
|
|
22
|
-
return None
|
|
23
|
-
return f"llm_history:{company_short_name}/{user_identifier}"
|
|
24
|
-
|
|
25
|
-
def _get_user_data_key(self, company_short_name: str, user_identifier: str) -> str:
|
|
26
|
-
user_identifier = (user_identifier or "").strip()
|
|
27
|
-
if not user_identifier:
|
|
28
|
-
return None
|
|
29
|
-
return f"user_data:{company_short_name}/{user_identifier}"
|
|
30
|
-
|
|
31
|
-
def clear_all_context(self, company_short_name: str, user_identifier: str):
|
|
32
|
-
"""Limpia todo el contexto de sesión para un usuario."""
|
|
33
|
-
self.clear_llm_history(company_short_name, user_identifier)
|
|
34
|
-
self.clear_user_session_data(company_short_name, user_identifier)
|
|
35
|
-
|
|
36
|
-
def clear_llm_history(self, company_short_name: str, user_identifier: str):
|
|
37
|
-
history_key = self._get_llm_history_key(company_short_name, user_identifier)
|
|
38
|
-
if history_key:
|
|
39
|
-
RedisSessionManager.remove(history_key)
|
|
40
|
-
|
|
41
|
-
def get_last_response_id(self, company_short_name: str, user_identifier: str) -> str:
|
|
42
|
-
history_key = self._get_llm_history_key(company_short_name, user_identifier)
|
|
43
|
-
if not history_key:
|
|
44
|
-
return None
|
|
45
|
-
|
|
46
|
-
return RedisSessionManager.get(history_key, '')
|
|
47
|
-
|
|
48
|
-
def save_last_response_id(self, company_short_name: str, user_identifier: str, response_id: str):
|
|
49
|
-
user_identifier = (user_identifier or "").strip()
|
|
50
|
-
history_key = self._get_llm_history_key(company_short_name, user_identifier)
|
|
51
|
-
if not history_key or not user_identifier:
|
|
52
|
-
return
|
|
53
|
-
|
|
54
|
-
RedisSessionManager.set(history_key, response_id)
|
|
55
|
-
|
|
56
|
-
def save_context_history(self, company_short_name: str, user_identifier: str, context_history: List[Dict]):
|
|
57
|
-
history_key = f"chat_history:{company_short_name}/{user_identifier}"
|
|
58
|
-
if not history_key:
|
|
59
|
-
return
|
|
60
|
-
RedisSessionManager.set(history_key, json.dumps(context_history))
|
|
61
|
-
|
|
62
|
-
def get_context_history(self, company_short_name: str, user_identifier: str) -> Optional[List[Dict]]:
|
|
63
|
-
history_key = f"chat_history:{company_short_name}/{user_identifier}"
|
|
64
|
-
return RedisSessionManager.get_json(history_key, {})
|
|
65
|
-
|
|
66
|
-
def save_user_session_data(self, company_short_name: str, user_identifier: str, data: dict):
|
|
67
|
-
"""Guarda un diccionario de datos en la sesión del usuario."""
|
|
68
|
-
user_identifier = (user_identifier or "").strip()
|
|
69
|
-
data_key = self._get_user_data_key(company_short_name, user_identifier)
|
|
70
|
-
if data_key:
|
|
71
|
-
RedisSessionManager.set_json(data_key, data)
|
|
72
|
-
|
|
73
|
-
def get_user_session_data(self, company_short_name: str, user_identifier: str) -> dict:
|
|
74
|
-
"""Recupera el diccionario de datos de la sesión del usuario."""
|
|
75
|
-
data_key = self._get_user_data_key(company_short_name, user_identifier)
|
|
76
|
-
if not data_key:
|
|
77
|
-
return {}
|
|
78
|
-
|
|
79
|
-
return RedisSessionManager.get_json(data_key, {})
|
|
80
|
-
|
|
81
|
-
def clear_user_session_data(self, company_short_name: str, user_identifier: str):
|
|
82
|
-
"""Limpia los datos de la sesión del usuario."""
|
|
83
|
-
data_key = self._get_user_data_key(company_short_name, user_identifier)
|
|
84
|
-
if data_key:
|
|
85
|
-
RedisSessionManager.remove(data_key)
|
|
File without changes
|