From 1908f203d18ae08d5578e235de21220f8ed0037c Mon Sep 17 00:00:00 2001 From: Till Tomczak Date: Thu, 19 Jun 2025 23:20:37 +0200 Subject: [PATCH] =?UTF-8?q?Die=20Dateien,=20die=20in=20diesem=20Commit=20g?= =?UTF-8?q?e=C3=A4ndert=20wurden,=20sind:?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 1. backend/migrate_user_schema.py - Eine neue oder aktualisierte Skriptdatei zur Migration des Benutzerschemas. 2. backend/logs/* - Verschiedene Log-Dateien für verschiedene Aspekte der Backend-Infrastruktur, wie z.B. Admin, API, App, Datenmanagement, Druckersteuerung, --- backend/app.py | 4 +- backend/database/myp.db | Bin 237568 -> 241664 bytes .../database/myp.db.backup_20250619_225909 | Bin 0 -> 241664 bytes ...dffc3a81b07bcf0f48f9070788375_activity.pkl | Bin 0 -> 60 bytes ...68b5d083d8e4d9d90f4d4a036cc17_activity.pkl | Bin 0 -> 60 bytes ...b449e55f8dfcaa3974d43ef490433_activity.pkl | Bin 0 -> 60 bytes ...df1c97c7b7e557180bccd33406cee_activity.pkl | Bin 0 -> 60 bytes ...1b9b7210d7e76125b1a28660d356d_activity.pkl | Bin 0 -> 60 bytes ...755e47894d65f78ff8d4dbc372f32_activity.pkl | Bin 0 -> 60 bytes ...456fa0b375f65b9bb9f5c7e45f0a6_activity.pkl | Bin 0 -> 60 bytes ...eab598872b328601beb4c4c1ef518_activity.pkl | Bin 0 -> 60 bytes ...3318cc0ebbee1403025de4ceb6a7c_activity.pkl | Bin 0 -> 60 bytes ...48a75aff4a23ba3d02751a7ddd175_activity.pkl | Bin 0 -> 60 bytes ...432cdef2783bebb485d18d068efe1_activity.pkl | Bin 0 -> 60 bytes ...7d6e294591d88622163a61e103356_activity.pkl | Bin 0 -> 60 bytes ...bfeb2c7b3a055087442459ff9bb80_activity.pkl | Bin 0 -> 60 bytes ...3a758135e9d98978f65f518e431ec_activity.pkl | Bin 0 -> 60 bytes ...5a46c0d74aa5d989b72c840e5c02f_activity.pkl | Bin 0 -> 60 bytes ...26334a505fc533e2e5b6cae2a9f2a_activity.pkl | Bin 0 -> 60 bytes ...901102b2f80740d5ddef7c0fd20c9_activity.pkl | Bin 0 -> 60 bytes ...aa33ae98764b22a56d0ae719d8abf_activity.pkl | Bin 0 -> 60 bytes ...353b1e3343e9b898158720ee8e02d_activity.pkl | Bin 0 -> 60 bytes ...61ae822cb6395c34f975e779fd7f0_activity.pkl | Bin 0 -> 60 bytes ...5845129c1f3d3676c9bd50d241c1e_activity.pkl | Bin 0 -> 60 bytes ...a88175aefc992ea362b2727c68ba8_activity.pkl | Bin 0 -> 60 bytes ...437b67786ba832fedc288331d8160_activity.pkl | Bin 0 -> 60 bytes ...8df3de228c8ace374325c15f4799c_activity.pkl | Bin 0 -> 60 bytes ...ce9645dc8ae305f7806c27422f594_activity.pkl | Bin 0 -> 60 bytes ...1b563c8cf65ee20cab2afa9fd8bac_activity.pkl | Bin 0 -> 60 bytes ...11582b83476cb0cd30b0cf7385658_activity.pkl | Bin 0 -> 60 bytes ...bbe3a07edd641505bca3e967cdf23_activity.pkl | Bin 0 -> 60 bytes ...7673d9bb49a7e43a5456078ce82f5_activity.pkl | Bin 0 -> 60 bytes ...e2ba6c1a03947735b73c1e5093068_activity.pkl | Bin 0 -> 60 bytes ...a35fdc3803e847abbd54b478c51e3_activity.pkl | Bin 0 -> 60 bytes ...e31cc2567564adae8a8c81201b03b_activity.pkl | Bin 0 -> 60 bytes ...e632f14a6c28a50312e216472bb0d_activity.pkl | Bin 0 -> 60 bytes ...3a3f461ee72edc1d272a32cacbc47_activity.pkl | Bin 0 -> 60 bytes ...2a3688f82e2a9507af66657e4c255_activity.pkl | Bin 0 -> 60 bytes ...1dca2a2c5c71269b5025ca8b16a5c_activity.pkl | Bin 0 -> 60 bytes ...daf3cc78c5a2c4939b3121f69d3f9_activity.pkl | Bin 0 -> 60 bytes ...674387076c98b11143b3ab342f624_activity.pkl | Bin 0 -> 60 bytes ...7d4c8f90f1a1fc090860864785491_activity.pkl | Bin 0 -> 60 bytes ...0d0bedeb59fd86b41f55337cc068a_activity.pkl | Bin 0 -> 60 bytes ...1d9bd131ba3d200dffd42f656b6b6_activity.pkl | Bin 0 -> 60 bytes ...4b27d0676b9066295ee9518a5bf57_activity.pkl | Bin 0 -> 60 bytes ...f848121fdee12176639e76bbb630c_activity.pkl | Bin 0 -> 60 bytes ...2f3d111139a96121f40682f80e009_activity.pkl | Bin 0 -> 60 bytes ...d36bc6eae635e9f6d3b7dde490755_activity.pkl | Bin 0 -> 60 bytes ...f1550d470862e789d2eb79724f340_activity.pkl | Bin 0 -> 60 bytes ...6ab23d622806b1ac804a2f17b250a_activity.pkl | Bin 0 -> 60 bytes ...1058631d01c9d24f9e6c59214a5ba_activity.pkl | Bin 0 -> 60 bytes ...ac1cba0b978d70737c368946ba028_activity.pkl | Bin 0 -> 60 bytes ...dabdc7074ff95b14810addedfe730_activity.pkl | Bin 0 -> 60 bytes ...bd5189345d69216c57178c9c0cd00_activity.pkl | Bin 0 -> 60 bytes ...5be35b7b88d77ddfd70c48d88e2ef_activity.pkl | Bin 0 -> 60 bytes ...c4253b18d778201ea4b3b02d331e7_activity.pkl | Bin 0 -> 60 bytes ...905d420d90fbce9032f9d714461e4_activity.pkl | Bin 0 -> 60 bytes ...8c10bf4fbd5a01689cb6f8d32c59f_activity.pkl | Bin 0 -> 60 bytes ...7d3e254c91541444a37462b9ce92d_activity.pkl | Bin 0 -> 60 bytes ...a1cd720a4f51f625f8fc680ab21a1_activity.pkl | Bin 0 -> 60 bytes ...acd8cfa84101f382b97fdd7fc59d4_activity.pkl | Bin 0 -> 60 bytes ...960295350643518a91f3b6cc1524f_activity.pkl | Bin 0 -> 60 bytes ...64ad9a772b4b7406a2bbb580e0045_activity.pkl | Bin 0 -> 60 bytes ...ac5e9184aea50911e14575ff9cc35_activity.pkl | Bin 0 -> 60 bytes ...c4f587e3929c2ccb441fa921a45bd_activity.pkl | Bin 0 -> 60 bytes ...cdad01d17433a2c5dbe9b4ac4d9be_activity.pkl | Bin 0 -> 60 bytes ...ecba7c3c88a5af6006c6574a3c965_activity.pkl | Bin 0 -> 60 bytes ...795e4239c08a9b51a45bcae1cdeee_activity.pkl | Bin 0 -> 60 bytes ...85169292aca24b9d34e5085784a16_activity.pkl | Bin 0 -> 60 bytes ...dfba292c928d4de2cbf813062e641_activity.pkl | Bin 0 -> 60 bytes ...e152a1aa31256306f30ec0bdb8a90_activity.pkl | Bin 0 -> 60 bytes ...005f7dc53a2797beb746fb4e941b7_activity.pkl | Bin 0 -> 60 bytes ...7ec233aa0dc05f81fc556f06b1a62_activity.pkl | Bin 0 -> 60 bytes ...aef93090ee2d25bbdd25a58e73074_activity.pkl | Bin 0 -> 60 bytes ...a7b0b3672868bb1e6d29dcc7b5cfc_activity.pkl | Bin 0 -> 60 bytes ...2d91a2570a778889f8d05676a02b2_activity.pkl | Bin 0 -> 60 bytes ...fbcfe68fddcaca1857a26fd0f642a_activity.pkl | Bin 0 -> 60 bytes ...df687a55cbca7d23dd503cd4c5e2e_activity.pkl | Bin 0 -> 60 bytes ...adb7b3fc3104f825afcc2b8e846ec_activity.pkl | Bin 0 -> 60 bytes ...c6d0a4224f8f890cf9fd85ea10725_activity.pkl | Bin 0 -> 60 bytes ...b56aee8f31b36f294570c71cc1a30_activity.pkl | Bin 0 -> 60 bytes ...643349f4513ecdc3030322e5693f0_activity.pkl | Bin 0 -> 60 bytes ...e5a5b979c56aafdcaa2c9718c8f4a_activity.pkl | Bin 0 -> 60 bytes ...5d7d85d07e6666d192d8e2f4d8f05_activity.pkl | Bin 0 -> 60 bytes ...d4ff3dd52ff82f8b394aa40056081_activity.pkl | Bin 0 -> 60 bytes ...092b30f82a1a03b32bbfe03a7f01e_activity.pkl | Bin 0 -> 60 bytes ...01a31247b62e7f5177c336a3f4117_activity.pkl | Bin 0 -> 60 bytes ...e3ef6e53ff95ae5a547c6573bf585_activity.pkl | Bin 0 -> 60 bytes ...864aac23701ec041cd1e640f7423e_activity.pkl | Bin 0 -> 60 bytes ...9714f34a871d5df1ffb2b9b8f473c_activity.pkl | Bin 0 -> 60 bytes ...caacfb5258a37c54fcf4bcd98ef0b_activity.pkl | Bin 0 -> 60 bytes ...9119d1e3fd2cb132269564a0b3497_activity.pkl | Bin 0 -> 60 bytes ...5821997e49d3f967d68192af3796d_activity.pkl | Bin 0 -> 60 bytes ...7f1530b8b6f90d7af2b7f8bf36924_activity.pkl | Bin 0 -> 60 bytes ...92d8109a8e7cb87066fccb45cf98e_activity.pkl | Bin 0 -> 60 bytes ...7aa3b1fe1280161409488b81920f0_activity.pkl | Bin 0 -> 60 bytes ...8a15b1a9c4490730a9bc2563fd1e2_activity.pkl | Bin 0 -> 60 bytes ...6a35743be709c1feaf0d1cb6e23ac_activity.pkl | Bin 0 -> 60 bytes ...1f03cc5ef88a6d040b5f6f9b42cfd_activity.pkl | Bin 0 -> 60 bytes ...2cb94701b9fd5183520fb916d59f9_activity.pkl | Bin 0 -> 60 bytes ...7d52c92170806f657087189d98bdc_activity.pkl | Bin 0 -> 60 bytes ...3411bdfa788913859860a05b09eb9_activity.pkl | Bin 0 -> 60 bytes ...3db37947243c03dc470b51a92ca5d_activity.pkl | Bin 0 -> 60 bytes ...f40a13e41be34e38c1be53d32cd0a_activity.pkl | Bin 0 -> 60 bytes ...e27635216f2580163e6dfff6e6d85_activity.pkl | Bin 0 -> 60 bytes ...d38bf64c4e24c29b88b83fea1e0f9_activity.pkl | Bin 0 -> 60 bytes ...b2accb88ec5219c2ed492e93c1e7c_activity.pkl | Bin 0 -> 60 bytes ...728b82fc8fd3dcc295f8d6e08db27_activity.pkl | Bin 0 -> 60 bytes ...5f4a0bb07fdd99bf8d31cada2105c_activity.pkl | Bin 0 -> 60 bytes ...b50107a228412889dcf0a83924efd_activity.pkl | Bin 0 -> 60 bytes ...d6a69d6790da65dcd40a2f3886744_activity.pkl | Bin 0 -> 60 bytes ...aa8115b9e5b47177fffcf1f491644_activity.pkl | Bin 0 -> 60 bytes ...5a68cef6e9a33d0fc7d18f871981f_activity.pkl | Bin 0 -> 60 bytes ...3bb8f5f7dad0c137c81eb6ab6b6e6_activity.pkl | Bin 0 -> 60 bytes ...d6c45fe6f92d796ce7e87b93d7c1e_activity.pkl | Bin 0 -> 60 bytes ...dfe4d4909958fae99ab259913eb44_activity.pkl | Bin 0 -> 60 bytes ...0116a3d441f58f84500337ebfe05b_activity.pkl | Bin 0 -> 60 bytes ...78623bdba04e17abdf912ed446d11_activity.pkl | Bin 0 -> 60 bytes ...f0f263665845d25d8a5fabe206103_activity.pkl | Bin 0 -> 60 bytes ...0be6f83a4559b5da1c7a4ff44c1ee_activity.pkl | Bin 0 -> 60 bytes ...601a9700e0739a67c146c4515211c_activity.pkl | Bin 0 -> 60 bytes ...fe5d9ead20fcc02b7fed96f89dc1a_activity.pkl | Bin 0 -> 60 bytes ...e2c3a44cafad3659c070b0dab6f03_activity.pkl | Bin 0 -> 60 bytes ...9dc9a65e869671aee2d0174cff14e_activity.pkl | Bin 0 -> 60 bytes ...370bd6b1d4eee824b908ba83e0d99_activity.pkl | Bin 0 -> 60 bytes ...825de225011307eb28bedee872fe5_activity.pkl | Bin 0 -> 60 bytes ...04c3ccbb842d4e84023ecb0d125c2_activity.pkl | Bin 0 -> 60 bytes ...288e7812626929ca12b1db48d7473_activity.pkl | Bin 0 -> 60 bytes ...bc07a6aa84a5e1502ac09a3e002e5_activity.pkl | Bin 0 -> 60 bytes ...d01e752edeaa90706414525b97850_activity.pkl | Bin 0 -> 60 bytes ...576c504d7504722928dfad55a4ae8_activity.pkl | Bin 0 -> 60 bytes ...a6e35f44f34826a4689d49e6549a0_activity.pkl | Bin 0 -> 60 bytes ...5f182103972261d89d48530e7eb4f_activity.pkl | Bin 0 -> 60 bytes ...ce9ce7fe8ffc8d56e95db34079cee_activity.pkl | Bin 0 -> 60 bytes ...a6725d506f6332d6e188bd073a4f9_activity.pkl | Bin 0 -> 60 bytes ...3081cc7a1f73d0a3a9d636bb1ef9c_activity.pkl | Bin 0 -> 60 bytes ...97918816ac635f4b325dcc98182f0_activity.pkl | Bin 0 -> 60 bytes ...e2a988ec92f1032f1eb7a714a2457_activity.pkl | Bin 0 -> 60 bytes ...0a0dc839510d8d9501fe7434e055c_activity.pkl | Bin 0 -> 60 bytes ...a17c58a7874427ac81a302ef2cd41_activity.pkl | Bin 0 -> 60 bytes ...9d47d6734b64e252f4562626f9df9_activity.pkl | Bin 0 -> 60 bytes ...680fb4c0a1cbd266510dd7f79f32b_activity.pkl | Bin 0 -> 60 bytes ...89a3b05b771b565f274a8523d5a86_activity.pkl | Bin 0 -> 60 bytes ...4febaf83d0200cfe0e24c4bc1512a_activity.pkl | Bin 0 -> 60 bytes ...d6ae7220129fa4b62df44098b1d4f_activity.pkl | Bin 0 -> 60 bytes ...9e888dc4504f93ea586c7b4f2841c_activity.pkl | Bin 0 -> 60 bytes ...85b945080c33f6fde9bda9d1513eb_activity.pkl | Bin 0 -> 60 bytes ...95e45ed524352948793869a684787_activity.pkl | Bin 0 -> 60 bytes ...ae5516a5a58b9fb1963d428e6ff89_activity.pkl | Bin 0 -> 60 bytes ...f4309ba4f09421dbbba2630d45a72_activity.pkl | Bin 0 -> 60 bytes ...829e523090ab54d39583d5de0cfc1_activity.pkl | Bin 0 -> 60 bytes ...04c71765396ab42e3de4ed0f16521_activity.pkl | Bin 0 -> 60 bytes ...36b81bc41daf2645087401a7e9397_activity.pkl | Bin 0 -> 60 bytes ...c2be3bcd2253e40b1b3c92182ac0e_activity.pkl | Bin 0 -> 60 bytes ...b5974c817c5b8e37d20ae2ad8808e_activity.pkl | Bin 0 -> 60 bytes ...c1dbac1143dec8329524b978ab89b_activity.pkl | Bin 0 -> 60 bytes ...804c31c4d5623af86f42296fa5c43_activity.pkl | Bin 0 -> 60 bytes ...f934cf2f86d4f63dc9b359c0156e1_activity.pkl | Bin 0 -> 60 bytes ...ed1162db2ad88fdb0c5e6c4f30010_activity.pkl | Bin 0 -> 60 bytes ...021cdb7ea877f7cfa2a416ade0e31_activity.pkl | Bin 0 -> 60 bytes ...25c177877d8ddde1377c02dd988de_activity.pkl | Bin 0 -> 60 bytes ...923f7d69f1c2ee317b205f11bf084_activity.pkl | Bin 0 -> 60 bytes ...d6ff31161f13a42adbb89ee85fcfb_activity.pkl | Bin 0 -> 60 bytes ...03262ea7f8bfc76f4e5b0ce851077_activity.pkl | Bin 0 -> 60 bytes ...f7db800ba70b1f51125d5b3b2ff2f_activity.pkl | Bin 0 -> 60 bytes ...fc6d394a993ce06d8c58e036af3b2_activity.pkl | Bin 0 -> 60 bytes ...8827ff3fb1a3e6db31cb7232bcb33_activity.pkl | Bin 0 -> 60 bytes ...661cd088e1bdb12673b63c2c2c0d2_activity.pkl | Bin 0 -> 60 bytes backend/logs/admin/admin.log | 157 ++++++ backend/logs/admin_api/admin_api.log | 151 ++++++ backend/logs/app/app.log | 452 ++++++++++++++++++ .../logs/data_management/data_management.log | 4 + .../drucker_steuerung/drucker_steuerung.log | 2 + .../energy_monitoring/energy_monitoring.log | 2 + .../hardware_integration.log | 6 + .../job_queue_system/job_queue_system.log | 8 + .../monitoring_analytics.log | 4 + backend/logs/permissions/permissions.log | 2 + backend/logs/scheduler/scheduler.log | 6 + .../logs/security_suite/security_suite.log | 6 + backend/logs/startup/startup.log | 14 + .../utilities_collection.log | 10 + backend/migrate_user_schema.py | 205 ++++++++ 183 files changed, 1032 insertions(+), 1 deletion(-) create mode 100644 backend/database/myp.db.backup_20250619_225909 create mode 100644 backend/instance/sessions/009dffc3a81b07bcf0f48f9070788375_activity.pkl create mode 100644 backend/instance/sessions/00a68b5d083d8e4d9d90f4d4a036cc17_activity.pkl create mode 100644 backend/instance/sessions/035b449e55f8dfcaa3974d43ef490433_activity.pkl create mode 100644 backend/instance/sessions/04adf1c97c7b7e557180bccd33406cee_activity.pkl create mode 100644 backend/instance/sessions/0691b9b7210d7e76125b1a28660d356d_activity.pkl create mode 100644 backend/instance/sessions/06e755e47894d65f78ff8d4dbc372f32_activity.pkl create mode 100644 backend/instance/sessions/076456fa0b375f65b9bb9f5c7e45f0a6_activity.pkl create mode 100644 backend/instance/sessions/0a1eab598872b328601beb4c4c1ef518_activity.pkl create mode 100644 backend/instance/sessions/0a53318cc0ebbee1403025de4ceb6a7c_activity.pkl create mode 100644 backend/instance/sessions/0a748a75aff4a23ba3d02751a7ddd175_activity.pkl create mode 100644 backend/instance/sessions/0bd432cdef2783bebb485d18d068efe1_activity.pkl create mode 100644 backend/instance/sessions/0e57d6e294591d88622163a61e103356_activity.pkl create mode 100644 backend/instance/sessions/104bfeb2c7b3a055087442459ff9bb80_activity.pkl create mode 100644 backend/instance/sessions/14d3a758135e9d98978f65f518e431ec_activity.pkl create mode 100644 backend/instance/sessions/1685a46c0d74aa5d989b72c840e5c02f_activity.pkl create mode 100644 backend/instance/sessions/16b26334a505fc533e2e5b6cae2a9f2a_activity.pkl create mode 100644 backend/instance/sessions/196901102b2f80740d5ddef7c0fd20c9_activity.pkl create mode 100644 backend/instance/sessions/1b0aa33ae98764b22a56d0ae719d8abf_activity.pkl create mode 100644 backend/instance/sessions/1d8353b1e3343e9b898158720ee8e02d_activity.pkl create mode 100644 backend/instance/sessions/1ea61ae822cb6395c34f975e779fd7f0_activity.pkl create mode 100644 backend/instance/sessions/2015845129c1f3d3676c9bd50d241c1e_activity.pkl create mode 100644 backend/instance/sessions/209a88175aefc992ea362b2727c68ba8_activity.pkl create mode 100644 backend/instance/sessions/212437b67786ba832fedc288331d8160_activity.pkl create mode 100644 backend/instance/sessions/2128df3de228c8ace374325c15f4799c_activity.pkl create mode 100644 backend/instance/sessions/230ce9645dc8ae305f7806c27422f594_activity.pkl create mode 100644 backend/instance/sessions/2311b563c8cf65ee20cab2afa9fd8bac_activity.pkl create mode 100644 backend/instance/sessions/23d11582b83476cb0cd30b0cf7385658_activity.pkl create mode 100644 backend/instance/sessions/240bbe3a07edd641505bca3e967cdf23_activity.pkl create mode 100644 backend/instance/sessions/2537673d9bb49a7e43a5456078ce82f5_activity.pkl create mode 100644 backend/instance/sessions/29ee2ba6c1a03947735b73c1e5093068_activity.pkl create mode 100644 backend/instance/sessions/2cba35fdc3803e847abbd54b478c51e3_activity.pkl create mode 100644 backend/instance/sessions/2ede31cc2567564adae8a8c81201b03b_activity.pkl create mode 100644 backend/instance/sessions/312e632f14a6c28a50312e216472bb0d_activity.pkl create mode 100644 backend/instance/sessions/3143a3f461ee72edc1d272a32cacbc47_activity.pkl create mode 100644 backend/instance/sessions/3462a3688f82e2a9507af66657e4c255_activity.pkl create mode 100644 backend/instance/sessions/35d1dca2a2c5c71269b5025ca8b16a5c_activity.pkl create mode 100644 backend/instance/sessions/361daf3cc78c5a2c4939b3121f69d3f9_activity.pkl create mode 100644 backend/instance/sessions/371674387076c98b11143b3ab342f624_activity.pkl create mode 100644 backend/instance/sessions/3857d4c8f90f1a1fc090860864785491_activity.pkl create mode 100644 backend/instance/sessions/3960d0bedeb59fd86b41f55337cc068a_activity.pkl create mode 100644 backend/instance/sessions/3bc1d9bd131ba3d200dffd42f656b6b6_activity.pkl create mode 100644 backend/instance/sessions/3bd4b27d0676b9066295ee9518a5bf57_activity.pkl create mode 100644 backend/instance/sessions/3c9f848121fdee12176639e76bbb630c_activity.pkl create mode 100644 backend/instance/sessions/4052f3d111139a96121f40682f80e009_activity.pkl create mode 100644 backend/instance/sessions/41dd36bc6eae635e9f6d3b7dde490755_activity.pkl create mode 100644 backend/instance/sessions/43ff1550d470862e789d2eb79724f340_activity.pkl create mode 100644 backend/instance/sessions/4586ab23d622806b1ac804a2f17b250a_activity.pkl create mode 100644 backend/instance/sessions/4621058631d01c9d24f9e6c59214a5ba_activity.pkl create mode 100644 backend/instance/sessions/48eac1cba0b978d70737c368946ba028_activity.pkl create mode 100644 backend/instance/sessions/49cdabdc7074ff95b14810addedfe730_activity.pkl create mode 100644 backend/instance/sessions/4ebbd5189345d69216c57178c9c0cd00_activity.pkl create mode 100644 backend/instance/sessions/4f55be35b7b88d77ddfd70c48d88e2ef_activity.pkl create mode 100644 backend/instance/sessions/4f5c4253b18d778201ea4b3b02d331e7_activity.pkl create mode 100644 backend/instance/sessions/51e905d420d90fbce9032f9d714461e4_activity.pkl create mode 100644 backend/instance/sessions/5248c10bf4fbd5a01689cb6f8d32c59f_activity.pkl create mode 100644 backend/instance/sessions/5ce7d3e254c91541444a37462b9ce92d_activity.pkl create mode 100644 backend/instance/sessions/5d7a1cd720a4f51f625f8fc680ab21a1_activity.pkl create mode 100644 backend/instance/sessions/651acd8cfa84101f382b97fdd7fc59d4_activity.pkl create mode 100644 backend/instance/sessions/654960295350643518a91f3b6cc1524f_activity.pkl create mode 100644 backend/instance/sessions/65a64ad9a772b4b7406a2bbb580e0045_activity.pkl create mode 100644 backend/instance/sessions/67fac5e9184aea50911e14575ff9cc35_activity.pkl create mode 100644 backend/instance/sessions/693c4f587e3929c2ccb441fa921a45bd_activity.pkl create mode 100644 backend/instance/sessions/6b2cdad01d17433a2c5dbe9b4ac4d9be_activity.pkl create mode 100644 backend/instance/sessions/6e8ecba7c3c88a5af6006c6574a3c965_activity.pkl create mode 100644 backend/instance/sessions/70a795e4239c08a9b51a45bcae1cdeee_activity.pkl create mode 100644 backend/instance/sessions/71d85169292aca24b9d34e5085784a16_activity.pkl create mode 100644 backend/instance/sessions/71ddfba292c928d4de2cbf813062e641_activity.pkl create mode 100644 backend/instance/sessions/733e152a1aa31256306f30ec0bdb8a90_activity.pkl create mode 100644 backend/instance/sessions/76e005f7dc53a2797beb746fb4e941b7_activity.pkl create mode 100644 backend/instance/sessions/77e7ec233aa0dc05f81fc556f06b1a62_activity.pkl create mode 100644 backend/instance/sessions/77eaef93090ee2d25bbdd25a58e73074_activity.pkl create mode 100644 backend/instance/sessions/7aca7b0b3672868bb1e6d29dcc7b5cfc_activity.pkl create mode 100644 backend/instance/sessions/7d52d91a2570a778889f8d05676a02b2_activity.pkl create mode 100644 backend/instance/sessions/7dafbcfe68fddcaca1857a26fd0f642a_activity.pkl create mode 100644 backend/instance/sessions/7dcdf687a55cbca7d23dd503cd4c5e2e_activity.pkl create mode 100644 backend/instance/sessions/7fcadb7b3fc3104f825afcc2b8e846ec_activity.pkl create mode 100644 backend/instance/sessions/7ffc6d0a4224f8f890cf9fd85ea10725_activity.pkl create mode 100644 backend/instance/sessions/814b56aee8f31b36f294570c71cc1a30_activity.pkl create mode 100644 backend/instance/sessions/819643349f4513ecdc3030322e5693f0_activity.pkl create mode 100644 backend/instance/sessions/833e5a5b979c56aafdcaa2c9718c8f4a_activity.pkl create mode 100644 backend/instance/sessions/8855d7d85d07e6666d192d8e2f4d8f05_activity.pkl create mode 100644 backend/instance/sessions/891d4ff3dd52ff82f8b394aa40056081_activity.pkl create mode 100644 backend/instance/sessions/8a4092b30f82a1a03b32bbfe03a7f01e_activity.pkl create mode 100644 backend/instance/sessions/8ce01a31247b62e7f5177c336a3f4117_activity.pkl create mode 100644 backend/instance/sessions/8d5e3ef6e53ff95ae5a547c6573bf585_activity.pkl create mode 100644 backend/instance/sessions/8df864aac23701ec041cd1e640f7423e_activity.pkl create mode 100644 backend/instance/sessions/8e19714f34a871d5df1ffb2b9b8f473c_activity.pkl create mode 100644 backend/instance/sessions/8e2caacfb5258a37c54fcf4bcd98ef0b_activity.pkl create mode 100644 backend/instance/sessions/9059119d1e3fd2cb132269564a0b3497_activity.pkl create mode 100644 backend/instance/sessions/9065821997e49d3f967d68192af3796d_activity.pkl create mode 100644 backend/instance/sessions/91b7f1530b8b6f90d7af2b7f8bf36924_activity.pkl create mode 100644 backend/instance/sessions/92b92d8109a8e7cb87066fccb45cf98e_activity.pkl create mode 100644 backend/instance/sessions/93e7aa3b1fe1280161409488b81920f0_activity.pkl create mode 100644 backend/instance/sessions/9498a15b1a9c4490730a9bc2563fd1e2_activity.pkl create mode 100644 backend/instance/sessions/96f6a35743be709c1feaf0d1cb6e23ac_activity.pkl create mode 100644 backend/instance/sessions/9831f03cc5ef88a6d040b5f6f9b42cfd_activity.pkl create mode 100644 backend/instance/sessions/99e2cb94701b9fd5183520fb916d59f9_activity.pkl create mode 100644 backend/instance/sessions/9b27d52c92170806f657087189d98bdc_activity.pkl create mode 100644 backend/instance/sessions/9c13411bdfa788913859860a05b09eb9_activity.pkl create mode 100644 backend/instance/sessions/9d03db37947243c03dc470b51a92ca5d_activity.pkl create mode 100644 backend/instance/sessions/9e4f40a13e41be34e38c1be53d32cd0a_activity.pkl create mode 100644 backend/instance/sessions/a02e27635216f2580163e6dfff6e6d85_activity.pkl create mode 100644 backend/instance/sessions/a03d38bf64c4e24c29b88b83fea1e0f9_activity.pkl create mode 100644 backend/instance/sessions/a0fb2accb88ec5219c2ed492e93c1e7c_activity.pkl create mode 100644 backend/instance/sessions/a21728b82fc8fd3dcc295f8d6e08db27_activity.pkl create mode 100644 backend/instance/sessions/a325f4a0bb07fdd99bf8d31cada2105c_activity.pkl create mode 100644 backend/instance/sessions/a36b50107a228412889dcf0a83924efd_activity.pkl create mode 100644 backend/instance/sessions/abfd6a69d6790da65dcd40a2f3886744_activity.pkl create mode 100644 backend/instance/sessions/addaa8115b9e5b47177fffcf1f491644_activity.pkl create mode 100644 backend/instance/sessions/b735a68cef6e9a33d0fc7d18f871981f_activity.pkl create mode 100644 backend/instance/sessions/b7f3bb8f5f7dad0c137c81eb6ab6b6e6_activity.pkl create mode 100644 backend/instance/sessions/b9cd6c45fe6f92d796ce7e87b93d7c1e_activity.pkl create mode 100644 backend/instance/sessions/ba4dfe4d4909958fae99ab259913eb44_activity.pkl create mode 100644 backend/instance/sessions/bb60116a3d441f58f84500337ebfe05b_activity.pkl create mode 100644 backend/instance/sessions/bbd78623bdba04e17abdf912ed446d11_activity.pkl create mode 100644 backend/instance/sessions/be3f0f263665845d25d8a5fabe206103_activity.pkl create mode 100644 backend/instance/sessions/be90be6f83a4559b5da1c7a4ff44c1ee_activity.pkl create mode 100644 backend/instance/sessions/be9601a9700e0739a67c146c4515211c_activity.pkl create mode 100644 backend/instance/sessions/bf1fe5d9ead20fcc02b7fed96f89dc1a_activity.pkl create mode 100644 backend/instance/sessions/c01e2c3a44cafad3659c070b0dab6f03_activity.pkl create mode 100644 backend/instance/sessions/c119dc9a65e869671aee2d0174cff14e_activity.pkl create mode 100644 backend/instance/sessions/c1c370bd6b1d4eee824b908ba83e0d99_activity.pkl create mode 100644 backend/instance/sessions/c23825de225011307eb28bedee872fe5_activity.pkl create mode 100644 backend/instance/sessions/c3004c3ccbb842d4e84023ecb0d125c2_activity.pkl create mode 100644 backend/instance/sessions/c47288e7812626929ca12b1db48d7473_activity.pkl create mode 100644 backend/instance/sessions/c8bbc07a6aa84a5e1502ac09a3e002e5_activity.pkl create mode 100644 backend/instance/sessions/c8bd01e752edeaa90706414525b97850_activity.pkl create mode 100644 backend/instance/sessions/ca7576c504d7504722928dfad55a4ae8_activity.pkl create mode 100644 backend/instance/sessions/cbda6e35f44f34826a4689d49e6549a0_activity.pkl create mode 100644 backend/instance/sessions/d1b5f182103972261d89d48530e7eb4f_activity.pkl create mode 100644 backend/instance/sessions/d21ce9ce7fe8ffc8d56e95db34079cee_activity.pkl create mode 100644 backend/instance/sessions/d31a6725d506f6332d6e188bd073a4f9_activity.pkl create mode 100644 backend/instance/sessions/d573081cc7a1f73d0a3a9d636bb1ef9c_activity.pkl create mode 100644 backend/instance/sessions/d8097918816ac635f4b325dcc98182f0_activity.pkl create mode 100644 backend/instance/sessions/d8ee2a988ec92f1032f1eb7a714a2457_activity.pkl create mode 100644 backend/instance/sessions/db80a0dc839510d8d9501fe7434e055c_activity.pkl create mode 100644 backend/instance/sessions/de8a17c58a7874427ac81a302ef2cd41_activity.pkl create mode 100644 backend/instance/sessions/dfa9d47d6734b64e252f4562626f9df9_activity.pkl create mode 100644 backend/instance/sessions/e04680fb4c0a1cbd266510dd7f79f32b_activity.pkl create mode 100644 backend/instance/sessions/e3489a3b05b771b565f274a8523d5a86_activity.pkl create mode 100644 backend/instance/sessions/e474febaf83d0200cfe0e24c4bc1512a_activity.pkl create mode 100644 backend/instance/sessions/e77d6ae7220129fa4b62df44098b1d4f_activity.pkl create mode 100644 backend/instance/sessions/e7a9e888dc4504f93ea586c7b4f2841c_activity.pkl create mode 100644 backend/instance/sessions/e8d85b945080c33f6fde9bda9d1513eb_activity.pkl create mode 100644 backend/instance/sessions/e8d95e45ed524352948793869a684787_activity.pkl create mode 100644 backend/instance/sessions/e8dae5516a5a58b9fb1963d428e6ff89_activity.pkl create mode 100644 backend/instance/sessions/e92f4309ba4f09421dbbba2630d45a72_activity.pkl create mode 100644 backend/instance/sessions/e9c829e523090ab54d39583d5de0cfc1_activity.pkl create mode 100644 backend/instance/sessions/ecb04c71765396ab42e3de4ed0f16521_activity.pkl create mode 100644 backend/instance/sessions/ece36b81bc41daf2645087401a7e9397_activity.pkl create mode 100644 backend/instance/sessions/ed7c2be3bcd2253e40b1b3c92182ac0e_activity.pkl create mode 100644 backend/instance/sessions/ee4b5974c817c5b8e37d20ae2ad8808e_activity.pkl create mode 100644 backend/instance/sessions/efac1dbac1143dec8329524b978ab89b_activity.pkl create mode 100644 backend/instance/sessions/f3e804c31c4d5623af86f42296fa5c43_activity.pkl create mode 100644 backend/instance/sessions/f70f934cf2f86d4f63dc9b359c0156e1_activity.pkl create mode 100644 backend/instance/sessions/f7ced1162db2ad88fdb0c5e6c4f30010_activity.pkl create mode 100644 backend/instance/sessions/fa0021cdb7ea877f7cfa2a416ade0e31_activity.pkl create mode 100644 backend/instance/sessions/fb225c177877d8ddde1377c02dd988de_activity.pkl create mode 100644 backend/instance/sessions/fb7923f7d69f1c2ee317b205f11bf084_activity.pkl create mode 100644 backend/instance/sessions/fb8d6ff31161f13a42adbb89ee85fcfb_activity.pkl create mode 100644 backend/instance/sessions/fc603262ea7f8bfc76f4e5b0ce851077_activity.pkl create mode 100644 backend/instance/sessions/fd1f7db800ba70b1f51125d5b3b2ff2f_activity.pkl create mode 100644 backend/instance/sessions/fd2fc6d394a993ce06d8c58e036af3b2_activity.pkl create mode 100644 backend/instance/sessions/fd68827ff3fb1a3e6db31cb7232bcb33_activity.pkl create mode 100644 backend/instance/sessions/fed661cd088e1bdb12673b63c2c2c0d2_activity.pkl create mode 100644 backend/migrate_user_schema.py diff --git a/backend/app.py b/backend/app.py index a59bac5b1..5ec7c61a9 100644 --- a/backend/app.py +++ b/backend/app.py @@ -859,7 +859,9 @@ def check_session_activity(): if last_activity: try: last_activity_time = datetime.fromisoformat(last_activity) - if (now - last_activity_time).total_seconds() > SESSION_LIFETIME.total_seconds(): + # SESSION_LIFETIME ist bereits in Sekunden (Integer), nicht timedelta + session_age_seconds = (now - last_activity_time).total_seconds() + if session_age_seconds > SESSION_LIFETIME: app_logger.info(f"Session abgelaufen für Benutzer {current_user.id}") logout_user() return redirect(url_for('auth.login')) diff --git a/backend/database/myp.db b/backend/database/myp.db index 7aa1945dc74b04e6abcc27133c83a47b13ba7a10..f36d94273e8aae41d8566e80f3b620c8d4cd6828 100644 GIT binary patch delta 653 zcmYk2O=uHA7>0LdHk;7OZbOQq7Q45CHDPyWcXl_0Qbh`4&8AZSPN~h0-GoL{G)X-r zx%AkE#SD5eS1E`wNUpi|l;S}=DE<{H2%^xN7k87`dV2Yu@15`Eol2LleCD^$aBPTS zn3=jb3)xU>`P(^dLoQqM#q_O>>&c>dyPUa?m)2#=E~PU|^2()BE)&1Gl1wKr7p$w+ z9jh37h#%!`r#yLM)QDR^vfH5O&;V%#3rQI{}3q zCph-Jz1#iDb1sb5>~^bH+wu`C5}6taphAK-^9j(&Ct#zAa$N6?9~A)P_GuZQBIG{O zpM8BtQxL5~uGbEZ{YDcUay=mDi4SBwVS()l0;`=L96Egkm4Hb7adZ#>6|fBEfLO1e zr_Dta3TshGiRh-P$U4YPqKiAb=6IC_o-QQmg!ReHo`2JXS#0b8e4@mo5uIR6m331TtFM1poOPkoc@}Ersr5~ z>>nA1H|gRt*Rb~*^bPlDoucW^pE~mKjaPsTK>m;s9`lFop!l8lPUPra2ThM0m!e-} aI8L_?Kor4Rmdd+>1a|blUbOH6Ec^wp-?$Y3 delta 372 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 literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/009dffc3a81b07bcf0f48f9070788375_activity.pkl b/backend/instance/sessions/009dffc3a81b07bcf0f48f9070788375_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..48d575f9cd63f07c9be4442f4f98bd206dab01cb GIT binary patch literal 60 zcmZo*nQF)Y0kuF~=^2?C LTNqnTDb@o3@?{V| literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/076456fa0b375f65b9bb9f5c7e45f0a6_activity.pkl b/backend/instance/sessions/076456fa0b375f65b9bb9f5c7e45f0a6_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..abaf421a06abe0c5a7ffb42bf05f8664782ee567 GIT binary patch literal 60 zcmZo*nQF)Y0ku6scD L85o;PDb@o3@v0Cg literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/0a53318cc0ebbee1403025de4ceb6a7c_activity.pkl b/backend/instance/sessions/0a53318cc0ebbee1403025de4ceb6a7c_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..75f5ec90ff0f4ba27945e99db4572edd1428824c GIT binary patch literal 60 zcmZo*nQF)Y0kuRFmu Ln41_+Db@o3^5hUn literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/0bd432cdef2783bebb485d18d068efe1_activity.pkl b/backend/instance/sessions/0bd432cdef2783bebb485d18d068efe1_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..cccecf03ac86824720e6739b718fbf09de2a5a0f GIT binary patch literal 60 zcmZo*nQF)Y0kuF~=^2?B Lniv^QDb@o3@*)s1 literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/196901102b2f80740d5ddef7c0fd20c9_activity.pkl b/backend/instance/sessions/196901102b2f80740d5ddef7c0fd20c9_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..fd00b2d4eebc06e75fcb4d17c21468306bea0079 GIT binary patch literal 60 zcmZo*nQF)Y0kuF~=^2?B LSXvrSDb@o3@?;P` literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/1d8353b1e3343e9b898158720ee8e02d_activity.pkl b/backend/instance/sessions/1d8353b1e3343e9b898158720ee8e02d_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..9fff035dd3bdbe2992ef02085003655cfc8f5c1d GIT binary patch literal 60 zcmZo*nQF)Y0kuC;RDb@o3@#_#S literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/230ce9645dc8ae305f7806c27422f594_activity.pkl b/backend/instance/sessions/230ce9645dc8ae305f7806c27422f594_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..994fc8ff4e5d4bc54ef586a165cb574c4062aec1 GIT binary patch literal 60 zcmZo*nQF)Y0ku7Db@o3@<9+h literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/29ee2ba6c1a03947735b73c1e5093068_activity.pkl b/backend/instance/sessions/29ee2ba6c1a03947735b73c1e5093068_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..41a67967982604c66df42675d9aa97422707f416 GIT binary patch literal 60 zcmZo*nQF)Y0kuPDb@o3@#+vS literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/371674387076c98b11143b3ab342f624_activity.pkl b/backend/instance/sessions/371674387076c98b11143b3ab342f624_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..2ece6d87af84deafcdc4488596c0e8fc0c1a9983 GIT binary patch literal 60 zcmZo*nQF)Y0ku3&RDb@o3@*og2 literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/3bc1d9bd131ba3d200dffd42f656b6b6_activity.pkl b/backend/instance/sessions/3bc1d9bd131ba3d200dffd42f656b6b6_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..545922b8b6ffe61cb39bbf7604d26a3fb4a3492c GIT binary patch literal 60 zcmZo*nQF)Y0kuzNst L8yFf)Db@o3@;MMO literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/3bd4b27d0676b9066295ee9518a5bf57_activity.pkl b/backend/instance/sessions/3bd4b27d0676b9066295ee9518a5bf57_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..78354231e0eb1587064ad05ce74c65ada62cd778 GIT binary patch literal 60 zcmZo*nQF)Y0kuXD5Db@o3@|6%l literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/49cdabdc7074ff95b14810addedfe730_activity.pkl b/backend/instance/sessions/49cdabdc7074ff95b14810addedfe730_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..5378d77d4a95df3e58383eaeccc1c3cc80403121 GIT binary patch literal 60 zcmZo*nQF)Y0kuHQ(Db@o3@-q-P literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/4f55be35b7b88d77ddfd70c48d88e2ef_activity.pkl b/backend/instance/sessions/4f55be35b7b88d77ddfd70c48d88e2ef_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..5d5ceef16b89d25331ec50fb5d4a33e151c57f7c GIT binary patch literal 60 zcmZo*nQF)Y0kuZZ*Db@o3@#7FO literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/51e905d420d90fbce9032f9d714461e4_activity.pkl b/backend/instance/sessions/51e905d420d90fbce9032f9d714461e4_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..b98dbb904e421b6acc456d4a6a0703e3ed8337c4 GIT binary patch literal 60 zcmZo*nQF)Y0ku6Db@o3@|zGq literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/651acd8cfa84101f382b97fdd7fc59d4_activity.pkl b/backend/instance/sessions/651acd8cfa84101f382b97fdd7fc59d4_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..318c2bcbc3c0c0d08ebc49c2c92570849bb6c724 GIT binary patch literal 60 zcmZo*nQF)Y0kuF~=^2?C Ln3|eSDb@o3@;DGT literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/693c4f587e3929c2ccb441fa921a45bd_activity.pkl b/backend/instance/sessions/693c4f587e3929c2ccb441fa921a45bd_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..492f275299d3d65f97f58f2bea16915d6829c2b2 GIT binary patch literal 60 zcmZo*nQF)Y0kunkDb@o3@!t?G literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/71ddfba292c928d4de2cbf813062e641_activity.pkl b/backend/instance/sessions/71ddfba292c928d4de2cbf813062e641_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..8498375c0fdbbadadab5437dcc633169b702e13c GIT binary patch literal 60 zcmZo*nQF)Y0kuZc+Db@o3@|+Mr literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/7ffc6d0a4224f8f890cf9fd85ea10725_activity.pkl b/backend/instance/sessions/7ffc6d0a4224f8f890cf9fd85ea10725_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..434b1b626a5c98f19e74ac1c7ae2fa6fe18ace39 GIT binary patch literal 60 zcmZo*nQF)Y0ku6w_A LnVFbPDb@o3@&*t$ literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/8ce01a31247b62e7f5177c336a3f4117_activity.pkl b/backend/instance/sessions/8ce01a31247b62e7f5177c336a3f4117_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..bad8a07e28651a0cb6e1cf2fb2f0aadd9f0e2550 GIT binary patch literal 60 zcmZo*nQF)Y0ku6sdu L8W@{SDb@o3@xu@- literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/9059119d1e3fd2cb132269564a0b3497_activity.pkl b/backend/instance/sessions/9059119d1e3fd2cb132269564a0b3497_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..5da326c7d06a71fb5fa848791ff286f3e6f606ba GIT binary patch literal 60 zcmZo*nQF)Y0ku8H&Db@o3@svi$ literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/9498a15b1a9c4490730a9bc2563fd1e2_activity.pkl b/backend/instance/sessions/9498a15b1a9c4490730a9bc2563fd1e2_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..31ce89ff9e1c908ae905ead5ee150e2317a7b692 GIT binary patch literal 60 zcmZo*nQF)Y0kuU; literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/9831f03cc5ef88a6d040b5f6f9b42cfd_activity.pkl b/backend/instance/sessions/9831f03cc5ef88a6d040b5f6f9b42cfd_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..b07f3813141b98559f20c1bb5139ebb4291ce308 GIT binary patch literal 60 zcmZo*nQF)Y0kudWz literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/a21728b82fc8fd3dcc295f8d6e08db27_activity.pkl b/backend/instance/sessions/a21728b82fc8fd3dcc295f8d6e08db27_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..beb47b4783ee714d1b206cb83edfbc5af0326721 GIT binary patch literal 60 zcmZo*nQF)Y0ku6w^V LT9}wlDb@o3@*@yC literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/addaa8115b9e5b47177fffcf1f491644_activity.pkl b/backend/instance/sessions/addaa8115b9e5b47177fffcf1f491644_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..b76d5778829620b9a9542a6f4fae243d722e9113 GIT binary patch literal 60 zcmZo*nQF)Y0ku L8d#c5Db@o3@|h4q literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/b735a68cef6e9a33d0fc7d18f871981f_activity.pkl b/backend/instance/sessions/b735a68cef6e9a33d0fc7d18f871981f_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..37da206b57a25295b99b2cc03a94510dfb926592 GIT binary patch literal 60 zcmZo*nQF)Y0kuQZ-Db@o3@<O74Db@o3@+S~C literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/be90be6f83a4559b5da1c7a4ff44c1ee_activity.pkl b/backend/instance/sessions/be90be6f83a4559b5da1c7a4ff44c1ee_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..00b8f529a39b3110bced663ca4704e343bfe8500 GIT binary patch literal 60 zcmZo*nQF)Y0kuXJ5Db@o3@zoGB literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/c119dc9a65e869671aee2d0174cff14e_activity.pkl b/backend/instance/sessions/c119dc9a65e869671aee2d0174cff14e_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..40b9bf8fe6c37a95a4ef3ea64cc7b98b3b0209b4 GIT binary patch literal 60 zcmZo*nQF)Y0ku&o+ literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/c1c370bd6b1d4eee824b908ba83e0d99_activity.pkl b/backend/instance/sessions/c1c370bd6b1d4eee824b908ba83e0d99_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..b4532b2b074d10df60fb33b75a23a95ad9f2ee09 GIT binary patch literal 60 zcmZo*nQF)Y0kuUQ( literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/cbda6e35f44f34826a4689d49e6549a0_activity.pkl b/backend/instance/sessions/cbda6e35f44f34826a4689d49e6549a0_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..7c22a29dfbed985d44d2f10911a034428441e74e GIT binary patch literal 60 zcmZo*nQF)Y0ku643Db@o3@>UQ% literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/d31a6725d506f6332d6e188bd073a4f9_activity.pkl b/backend/instance/sessions/d31a6725d506f6332d6e188bd073a4f9_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..9448589ab180be88b1c0306ee6b5583ae61dff32 GIT binary patch literal 60 zcmZo*nQF)Y0kuL;PDb@o3@z)S8 literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/d573081cc7a1f73d0a3a9d636bb1ef9c_activity.pkl b/backend/instance/sessions/d573081cc7a1f73d0a3a9d636bb1ef9c_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..d88ffacc639d333ca1b0b448aea0204d39860c44 GIT binary patch literal 60 zcmZo*nQF)Y0kuzP^_ Lo12+UDb@o3@{U) literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/e474febaf83d0200cfe0e24c4bc1512a_activity.pkl b/backend/instance/sessions/e474febaf83d0200cfe0e24c4bc1512a_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..b358babc7370da4638ff3612206b9a3d0dab8014 GIT binary patch literal 60 zcmZo*nQF)Y0ku literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/e9c829e523090ab54d39583d5de0cfc1_activity.pkl b/backend/instance/sessions/e9c829e523090ab54d39583d5de0cfc1_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..0609d47d4b0b7f24b314952f3cde7de0d9ba2709 GIT binary patch literal 60 zcmZo*nQF)Y0kuHW-Db@o3@!b$I literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/ed7c2be3bcd2253e40b1b3c92182ac0e_activity.pkl b/backend/instance/sessions/ed7c2be3bcd2253e40b1b3c92182ac0e_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..201e90d33f0ebc735fa5274c6ae13a046eab1284 GIT binary patch literal 60 zcmZo*nQF)Y0kuZf-Db@o3@!}9M literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/f70f934cf2f86d4f63dc9b359c0156e1_activity.pkl b/backend/instance/sessions/f70f934cf2f86d4f63dc9b359c0156e1_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..de0a03525c27edff16e00a517784916062b5ba3b GIT binary patch literal 60 zcmZo*nQF)Y0kuZZ(Db@o3@)!^@ literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/fa0021cdb7ea877f7cfa2a416ade0e31_activity.pkl b/backend/instance/sessions/fa0021cdb7ea877f7cfa2a416ade0e31_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..c9fb48f80352590e86cc01c0fce6a76bf4b0496c GIT binary patch literal 60 zcmZo*nQF)Y0ku L7?@a2Db@o3@`VsT literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/fb7923f7d69f1c2ee317b205f11bf084_activity.pkl b/backend/instance/sessions/fb7923f7d69f1c2ee317b205f11bf084_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..c6d0cd507537a60dd55d149eefcf7198d528bafb GIT binary patch literal 60 zcmZo*nQF)Y0ku&o< literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/fd2fc6d394a993ce06d8c58e036af3b2_activity.pkl b/backend/instance/sessions/fd2fc6d394a993ce06d8c58e036af3b2_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..39f3fd6b3703cac05435e10ab9e4f3627b8dd08a GIT binary patch literal 60 zcmZo*nQF)Y0ku disconnected +2025-06-19 22:54:56 - [app] app - [INFO] INFO - ✅ Steckdosen-Status geloggt: Drucker 3, Status: disconnected, Quelle: system +2025-06-19 22:54:56 - [app] app - [DEBUG] DEBUG - 📊 Auto-Status protokolliert: Drucker 3 -> disconnected +2025-06-19 22:54:58 - [app] app - [INFO] INFO - ✅ Steckdosen-Status geloggt: Drucker 4, Status: disconnected, Quelle: system +2025-06-19 22:54:58 - [app] app - [DEBUG] DEBUG - 📊 Auto-Status protokolliert: Drucker 4 -> disconnected +2025-06-19 22:55:00 - [app] app - [INFO] INFO - ✅ Steckdosen-Status geloggt: Drucker 5, Status: disconnected, Quelle: system +2025-06-19 22:55:00 - [app] app - [DEBUG] DEBUG - 📊 Auto-Status protokolliert: Drucker 5 -> disconnected +2025-06-19 22:55:02 - [app] app - [INFO] INFO - ✅ Steckdosen-Status geloggt: Drucker 6, Status: disconnected, Quelle: system +2025-06-19 22:55:02 - [app] app - [DEBUG] DEBUG - 📊 Auto-Status protokolliert: Drucker 6 -> disconnected +2025-06-19 22:55:02 - [app] app - [DEBUG] DEBUG - ✅ Status-Updates für 6 Drucker erfolgreich gespeichert +2025-06-19 22:55:02 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 22:55:23 - [app] app - [DEBUG] DEBUG - Request: GET /api/notifications +2025-06-19 22:55:23 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 22:55:53 - [app] app - [DEBUG] DEBUG - Request: GET /api/notifications +2025-06-19 22:55:53 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 22:58:47 - [app] app - [INFO] INFO - Optimierte SQLite-Engine erstellt: ./database/myp.db +2025-06-19 22:58:48 - [app] app - [INFO] INFO - [CONFIG] Erkannte Umgebung: development +2025-06-19 22:58:48 - [app] app - [INFO] INFO - [CONFIG] Production-Modus: False +2025-06-19 22:58:48 - [app] app - [INFO] INFO - [CONFIG] Verwende Development-Konfiguration +2025-06-19 22:58:48 - [app] app - [INFO] INFO - [DEVELOPMENT] Aktiviere Development-Konfiguration +2025-06-19 22:58:48 - [app] app - [INFO] INFO - [DEVELOPMENT] ✅ MYP Development Environment Konfiguration aktiviert +2025-06-19 22:58:48 - [app] app - [INFO] INFO - [DEVELOPMENT] ✅ Environment: Development/Testing +2025-06-19 22:58:48 - [app] app - [INFO] INFO - [DEVELOPMENT] ✅ Debug Mode: True +2025-06-19 22:58:48 - [app] app - [INFO] INFO - [DEVELOPMENT] ✅ SQL Echo: True +2025-06-19 22:58:48 - [app] app - [INFO] INFO - SQLite für Raspberry Pi optimiert (reduzierte Cache-Größe, SD-Karten I/O) +2025-06-19 22:58:48 - [app] app - [INFO] INFO - Admin-Berechtigungen beim Start korrigiert: 0 erstellt, 0 aktualisiert +2025-06-19 22:58:48 - [app] app - [INFO] INFO - [STARTUP] 🚀 Starte MYP DEVELOPMENT-Umgebung +2025-06-19 22:58:48 - [app] app - [INFO] INFO - [STARTUP] 🏢 Mercedes-Benz TBA Marienfelde +2025-06-19 22:58:48 - [app] app - [INFO] INFO - [STARTUP] 🔒 Air-Gapped: True +2025-06-19 22:58:48 - [app] app - [INFO] INFO - [STARTUP] Initialisiere Datenbank... +2025-06-19 22:58:48 - [app] app - [INFO] INFO - Datenbank mit Optimierungen initialisiert +2025-06-19 22:58:48 - [app] app - [INFO] INFO - [STARTUP] ✅ Datenbank initialisiert +2025-06-19 22:58:48 - [app] app - [INFO] INFO - [STARTUP] Prüfe Initial-Admin... +2025-06-19 22:58:48 - [app] app - [INFO] INFO - Admin-Benutzer admin (admin@mercedes-benz.com) existiert bereits. Passwort wurde zurückgesetzt. +2025-06-19 22:58:48 - [app] app - [INFO] INFO - [STARTUP] ✅ Admin-Benutzer geprüft +2025-06-19 22:58:48 - [app] app - [INFO] INFO - [STARTUP] Initialisiere statische Drucker... +2025-06-19 22:58:48 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 1 (192.168.0.100) +2025-06-19 22:58:48 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 2 (192.168.0.101) +2025-06-19 22:58:48 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 3 (192.168.0.102) +2025-06-19 22:58:48 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 4 (192.168.0.103) +2025-06-19 22:58:48 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 5 (192.168.0.104) +2025-06-19 22:58:48 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 6 (192.168.0.106) +2025-06-19 22:58:48 - [app] app - [INFO] INFO - ✅ Statische Drucker-Initialisierung abgeschlossen: 0 erstellt, 6 aktualisiert +2025-06-19 22:58:48 - [app] app - [INFO] INFO - 📍 Alle Drucker sind für Standort 'TBA Marienfelde' konfiguriert +2025-06-19 22:58:48 - [app] app - [INFO] INFO - 🌐 IP-Bereich: 192.168.0.100-106 (außer .105) +2025-06-19 22:58:48 - [app] app - [INFO] INFO - [STARTUP] ✅ Statische Drucker konfiguriert +2025-06-19 22:58:48 - [app] app - [INFO] INFO - [STARTUP] Starte Queue Manager... +2025-06-19 22:58:48 - [app] app - [INFO] INFO - [STARTUP] ✅ Queue Manager gestartet +2025-06-19 22:58:48 - [app] app - [INFO] INFO - [STARTUP] Starte Job Scheduler... +2025-06-19 22:58:48 - [app] app - [INFO] INFO - [STARTUP] ✅ Job Scheduler gestartet +2025-06-19 22:58:48 - [app] app - [INFO] INFO - [STARTUP] 🌐 Server startet auf http://0.0.0.0:5000 +2025-06-19 22:58:49 - [app] app - [INFO] INFO - Optimierte SQLite-Engine erstellt: ./database/myp.db +2025-06-19 22:58:50 - [app] app - [INFO] INFO - [CONFIG] Erkannte Umgebung: development +2025-06-19 22:58:50 - [app] app - [INFO] INFO - [CONFIG] Production-Modus: False +2025-06-19 22:58:50 - [app] app - [INFO] INFO - [CONFIG] Verwende Development-Konfiguration +2025-06-19 22:58:50 - [app] app - [INFO] INFO - [DEVELOPMENT] Aktiviere Development-Konfiguration +2025-06-19 22:58:50 - [app] app - [INFO] INFO - [DEVELOPMENT] ✅ MYP Development Environment Konfiguration aktiviert +2025-06-19 22:58:50 - [app] app - [INFO] INFO - [DEVELOPMENT] ✅ Environment: Development/Testing +2025-06-19 22:58:50 - [app] app - [INFO] INFO - [DEVELOPMENT] ✅ Debug Mode: True +2025-06-19 22:58:50 - [app] app - [INFO] INFO - [DEVELOPMENT] ✅ SQL Echo: True +2025-06-19 22:58:50 - [app] app - [INFO] INFO - SQLite für Raspberry Pi optimiert (reduzierte Cache-Größe, SD-Karten I/O) +2025-06-19 22:58:50 - [app] app - [INFO] INFO - Admin-Berechtigungen beim Start korrigiert: 0 erstellt, 0 aktualisiert +2025-06-19 22:58:50 - [app] app - [INFO] INFO - [STARTUP] 🚀 Starte MYP DEVELOPMENT-Umgebung +2025-06-19 22:58:50 - [app] app - [INFO] INFO - [STARTUP] 🏢 Mercedes-Benz TBA Marienfelde +2025-06-19 22:58:50 - [app] app - [INFO] INFO - [STARTUP] 🔒 Air-Gapped: True +2025-06-19 22:58:50 - [app] app - [INFO] INFO - [STARTUP] Initialisiere Datenbank... +2025-06-19 22:58:50 - [app] app - [INFO] INFO - Datenbank mit Optimierungen initialisiert +2025-06-19 22:58:50 - [app] app - [INFO] INFO - [STARTUP] ✅ Datenbank initialisiert +2025-06-19 22:58:50 - [app] app - [INFO] INFO - [STARTUP] Prüfe Initial-Admin... +2025-06-19 22:58:50 - [app] app - [INFO] INFO - Admin-Benutzer admin (admin@mercedes-benz.com) existiert bereits. Passwort wurde zurückgesetzt. +2025-06-19 22:58:50 - [app] app - [INFO] INFO - [STARTUP] ✅ Admin-Benutzer geprüft +2025-06-19 22:58:50 - [app] app - [INFO] INFO - [STARTUP] Initialisiere statische Drucker... +2025-06-19 22:58:50 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 1 (192.168.0.100) +2025-06-19 22:58:50 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 2 (192.168.0.101) +2025-06-19 22:58:50 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 3 (192.168.0.102) +2025-06-19 22:58:50 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 4 (192.168.0.103) +2025-06-19 22:58:50 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 5 (192.168.0.104) +2025-06-19 22:58:50 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 6 (192.168.0.106) +2025-06-19 22:58:50 - [app] app - [INFO] INFO - ✅ Statische Drucker-Initialisierung abgeschlossen: 0 erstellt, 6 aktualisiert +2025-06-19 22:58:50 - [app] app - [INFO] INFO - 📍 Alle Drucker sind für Standort 'TBA Marienfelde' konfiguriert +2025-06-19 22:58:50 - [app] app - [INFO] INFO - 🌐 IP-Bereich: 192.168.0.100-106 (außer .105) +2025-06-19 22:58:50 - [app] app - [INFO] INFO - [STARTUP] ✅ Statische Drucker konfiguriert +2025-06-19 22:58:50 - [app] app - [INFO] INFO - [STARTUP] Starte Queue Manager... +2025-06-19 22:58:50 - [app] app - [INFO] INFO - [STARTUP] ✅ Queue Manager gestartet +2025-06-19 22:58:50 - [app] app - [INFO] INFO - [STARTUP] Starte Job Scheduler... +2025-06-19 22:58:50 - [app] app - [INFO] INFO - [STARTUP] ✅ Job Scheduler gestartet +2025-06-19 22:58:50 - [app] app - [INFO] INFO - [STARTUP] 🌐 Server startet auf http://0.0.0.0:5000 +2025-06-19 22:58:51 - [app] app - [INFO] INFO - Locating template 'admin.html': + 1: trying loader of application '__main__' + class: jinja2.loaders.FileSystemLoader + encoding: 'utf-8' + followlinks: False + searchpath: + - /cbin/C0S1-cernel/C02L2/Dateiverwaltung/nextcloud/core/files/3_Beruf_Ausbildung_und_Schule/IHK-Abschlussprüfung/Projektarbeit-MYP/backend/templates + -> found ('/cbin/C0S1-cernel/C02L2/Dateiverwaltung/nextcloud/core/files/3_Beruf_Ausbildung_und_Schule/IHK-Abschlussprüfung/Projektarbeit-MYP/backend/templates/admin.html') +2025-06-19 22:58:52 - [app] app - [INFO] INFO - Locating template 'base.html': + 1: trying loader of application '__main__' + class: jinja2.loaders.FileSystemLoader + encoding: 'utf-8' + followlinks: False + searchpath: + - /cbin/C0S1-cernel/C02L2/Dateiverwaltung/nextcloud/core/files/3_Beruf_Ausbildung_und_Schule/IHK-Abschlussprüfung/Projektarbeit-MYP/backend/templates + -> found ('/cbin/C0S1-cernel/C02L2/Dateiverwaltung/nextcloud/core/files/3_Beruf_Ausbildung_und_Schule/IHK-Abschlussprüfung/Projektarbeit-MYP/backend/templates/base.html') +2025-06-19 22:58:52 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 22:58:52 - [app] app - [DEBUG] DEBUG - Request: GET /api/notifications +2025-06-19 22:58:52 - [app] app - [DEBUG] DEBUG - Request: GET /api/admin/live-stats +2025-06-19 22:58:52 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 22:58:52 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 22:58:52 - [app] app - [DEBUG] DEBUG - Request: GET /api/admin/system/status +2025-06-19 22:58:53 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 22:59:10 - [app] app - [INFO] INFO - Optimierte SQLite-Engine erstellt: ./database/myp.db +2025-06-19 22:59:10 - [app] app - [INFO] INFO - SQLite für Raspberry Pi optimiert (reduzierte Cache-Größe, SD-Karten I/O) +2025-06-19 22:59:22 - [app] app - [DEBUG] DEBUG - Request: GET /api/admin/error-recovery/status +2025-06-19 22:59:22 - [app] app - [DEBUG] DEBUG - Request: GET /api/notifications +2025-06-19 22:59:22 - [app] app - [DEBUG] DEBUG - Request: GET /api/admin/live-stats +2025-06-19 22:59:22 - [app] app - [DEBUG] DEBUG - Request: GET /api/admin/system/status +2025-06-19 22:59:22 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 22:59:22 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 22:59:23 - [app] app - [ERROR] ERROR - Datenbank-Transaktion fehlgeschlagen: Textual SQL expression 'SELECT 1' should be explicitly declared as text('SELECT 1') +2025-06-19 22:59:23 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 22:59:23 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 22:59:30 - [app] app - [INFO] INFO - Optimierte SQLite-Engine erstellt: ./database/myp.db +2025-06-19 22:59:30 - [app] app - [INFO] INFO - SQLite für Raspberry Pi optimiert (reduzierte Cache-Größe, SD-Karten I/O) +2025-06-19 22:59:52 - [app] app - [DEBUG] DEBUG - Request: GET /api/admin/error-recovery/status +2025-06-19 22:59:52 - [app] app - [DEBUG] DEBUG - Request: GET /api/notifications +2025-06-19 22:59:52 - [app] app - [DEBUG] DEBUG - Request: GET /api/admin/system/status +2025-06-19 22:59:52 - [app] app - [DEBUG] DEBUG - Request: GET /api/admin/live-stats +2025-06-19 22:59:52 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 22:59:52 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 22:59:53 - [app] app - [ERROR] ERROR - Datenbank-Transaktion fehlgeschlagen: Textual SQL expression 'SELECT 1' should be explicitly declared as text('SELECT 1') +2025-06-19 22:59:53 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 22:59:53 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 23:00:22 - [app] app - [DEBUG] DEBUG - Request: GET /api/admin/error-recovery/status +2025-06-19 23:00:22 - [app] app - [DEBUG] DEBUG - Request: GET /api/admin/live-stats +2025-06-19 23:00:22 - [app] app - [DEBUG] DEBUG - Request: GET /api/notifications +2025-06-19 23:00:22 - [app] app - [DEBUG] DEBUG - Request: GET /api/admin/system/status +2025-06-19 23:00:22 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 23:00:22 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 23:00:23 - [app] app - [ERROR] ERROR - Datenbank-Transaktion fehlgeschlagen: Textual SQL expression 'SELECT 1' should be explicitly declared as text('SELECT 1') +2025-06-19 23:00:23 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 23:00:23 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 23:00:52 - [app] app - [DEBUG] DEBUG - Request: GET /api/admin/error-recovery/status +2025-06-19 23:00:52 - [app] app - [DEBUG] DEBUG - Request: GET /api/notifications +2025-06-19 23:00:52 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 23:00:52 - [app] app - [DEBUG] DEBUG - Request: GET /api/admin/live-stats +2025-06-19 23:00:52 - [app] app - [DEBUG] DEBUG - Request: GET /api/admin/system/status +2025-06-19 23:00:52 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 23:00:53 - [app] app - [ERROR] ERROR - Datenbank-Transaktion fehlgeschlagen: Textual SQL expression 'SELECT 1' should be explicitly declared as text('SELECT 1') +2025-06-19 23:00:53 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 23:00:53 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 23:01:22 - [app] app - [DEBUG] DEBUG - Request: GET /api/admin/error-recovery/status +2025-06-19 23:01:22 - [app] app - [DEBUG] DEBUG - Request: GET /api/notifications +2025-06-19 23:01:22 - [app] app - [DEBUG] DEBUG - Request: GET /api/admin/live-stats +2025-06-19 23:01:22 - [app] app - [DEBUG] DEBUG - Request: GET /api/admin/system/status +2025-06-19 23:01:22 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 23:01:22 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 23:01:23 - [app] app - [ERROR] ERROR - Datenbank-Transaktion fehlgeschlagen: Textual SQL expression 'SELECT 1' should be explicitly declared as text('SELECT 1') +2025-06-19 23:01:23 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 23:01:23 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 23:01:52 - [app] app - [DEBUG] DEBUG - Request: GET /api/admin/error-recovery/status +2025-06-19 23:01:52 - [app] app - [DEBUG] DEBUG - Request: GET /api/notifications +2025-06-19 23:01:52 - [app] app - [DEBUG] DEBUG - Request: GET /api/admin/system/status +2025-06-19 23:01:52 - [app] app - [DEBUG] DEBUG - Request: GET /api/admin/live-stats +2025-06-19 23:01:52 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 23:01:52 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 23:01:53 - [app] app - [ERROR] ERROR - Datenbank-Transaktion fehlgeschlagen: Textual SQL expression 'SELECT 1' should be explicitly declared as text('SELECT 1') +2025-06-19 23:01:53 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 23:01:53 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 23:02:22 - [app] app - [DEBUG] DEBUG - Request: GET /api/admin/error-recovery/status +2025-06-19 23:02:22 - [app] app - [DEBUG] DEBUG - Request: GET /api/notifications +2025-06-19 23:02:22 - [app] app - [DEBUG] DEBUG - Request: GET /api/admin/system/status +2025-06-19 23:02:22 - [app] app - [DEBUG] DEBUG - Request: GET /api/admin/live-stats +2025-06-19 23:02:22 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 23:02:22 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 23:02:23 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 23:02:23 - [app] app - [ERROR] ERROR - Datenbank-Transaktion fehlgeschlagen: Textual SQL expression 'SELECT 1' should be explicitly declared as text('SELECT 1') +2025-06-19 23:02:23 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 23:02:52 - [app] app - [DEBUG] DEBUG - Request: GET /api/admin/error-recovery/status +2025-06-19 23:02:52 - [app] app - [DEBUG] DEBUG - Request: GET /api/notifications +2025-06-19 23:02:52 - [app] app - [DEBUG] DEBUG - Request: GET /api/admin/live-stats +2025-06-19 23:02:52 - [app] app - [DEBUG] DEBUG - Request: GET /api/admin/system/status +2025-06-19 23:02:52 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 23:02:52 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 23:02:53 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 23:02:53 - [app] app - [ERROR] ERROR - Datenbank-Transaktion fehlgeschlagen: Textual SQL expression 'SELECT 1' should be explicitly declared as text('SELECT 1') +2025-06-19 23:02:53 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 23:03:22 - [app] app - [DEBUG] DEBUG - Request: GET /api/admin/error-recovery/status +2025-06-19 23:03:22 - [app] app - [DEBUG] DEBUG - Request: GET /api/notifications +2025-06-19 23:03:22 - [app] app - [DEBUG] DEBUG - Request: GET /api/admin/live-stats +2025-06-19 23:03:22 - [app] app - [DEBUG] DEBUG - Request: GET /api/admin/system/status +2025-06-19 23:03:22 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 23:03:22 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 23:03:23 - [app] app - [ERROR] ERROR - Datenbank-Transaktion fehlgeschlagen: Textual SQL expression 'SELECT 1' should be explicitly declared as text('SELECT 1') +2025-06-19 23:03:23 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 23:03:23 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 23:03:52 - [app] app - [DEBUG] DEBUG - Request: GET /api/admin/error-recovery/status +2025-06-19 23:03:52 - [app] app - [DEBUG] DEBUG - Request: GET /api/notifications +2025-06-19 23:03:52 - [app] app - [DEBUG] DEBUG - Request: GET /api/admin/system/status +2025-06-19 23:03:52 - [app] app - [DEBUG] DEBUG - Request: GET /api/admin/live-stats +2025-06-19 23:03:52 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 23:03:52 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 23:03:53 - [app] app - [ERROR] ERROR - Datenbank-Transaktion fehlgeschlagen: Textual SQL expression 'SELECT 1' should be explicitly declared as text('SELECT 1') +2025-06-19 23:03:53 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 23:03:53 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 23:04:22 - [app] app - [DEBUG] DEBUG - Request: GET /api/admin/error-recovery/status +2025-06-19 23:04:22 - [app] app - [DEBUG] DEBUG - Request: GET /api/notifications +2025-06-19 23:04:22 - [app] app - [DEBUG] DEBUG - Request: GET /api/admin/live-stats +2025-06-19 23:04:22 - [app] app - [DEBUG] DEBUG - Request: GET /api/admin/system/status +2025-06-19 23:04:22 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 23:04:22 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 23:04:23 - [app] app - [ERROR] ERROR - Datenbank-Transaktion fehlgeschlagen: Textual SQL expression 'SELECT 1' should be explicitly declared as text('SELECT 1') +2025-06-19 23:04:23 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 23:04:23 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 23:04:52 - [app] app - [DEBUG] DEBUG - Request: GET /api/admin/error-recovery/status +2025-06-19 23:04:52 - [app] app - [DEBUG] DEBUG - Request: GET /api/notifications +2025-06-19 23:04:52 - [app] app - [DEBUG] DEBUG - Request: GET /api/admin/live-stats +2025-06-19 23:04:52 - [app] app - [DEBUG] DEBUG - Request: GET /api/admin/system/status +2025-06-19 23:04:52 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 23:04:52 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 23:04:53 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 23:04:53 - [app] app - [ERROR] ERROR - Datenbank-Transaktion fehlgeschlagen: Textual SQL expression 'SELECT 1' should be explicitly declared as text('SELECT 1') +2025-06-19 23:04:53 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 23:05:22 - [app] app - [DEBUG] DEBUG - Request: GET /api/admin/error-recovery/status +2025-06-19 23:05:22 - [app] app - [DEBUG] DEBUG - Request: GET /api/notifications +2025-06-19 23:05:22 - [app] app - [DEBUG] DEBUG - Request: GET /api/admin/live-stats +2025-06-19 23:05:22 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 23:05:22 - [app] app - [DEBUG] DEBUG - Request: GET /api/admin/system/status +2025-06-19 23:05:22 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 23:05:23 - [app] app - [ERROR] ERROR - Datenbank-Transaktion fehlgeschlagen: Textual SQL expression 'SELECT 1' should be explicitly declared as text('SELECT 1') +2025-06-19 23:05:23 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 23:05:23 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 23:05:52 - [app] app - [DEBUG] DEBUG - Request: GET /api/notifications +2025-06-19 23:05:52 - [app] app - [DEBUG] DEBUG - Request: GET /api/admin/error-recovery/status +2025-06-19 23:05:52 - [app] app - [DEBUG] DEBUG - Request: GET /api/admin/live-stats +2025-06-19 23:05:52 - [app] app - [DEBUG] DEBUG - Request: GET /api/admin/system/status +2025-06-19 23:05:52 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 23:05:52 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 23:05:53 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 23:05:53 - [app] app - [ERROR] ERROR - Datenbank-Transaktion fehlgeschlagen: Textual SQL expression 'SELECT 1' should be explicitly declared as text('SELECT 1') +2025-06-19 23:05:53 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 23:06:22 - [app] app - [DEBUG] DEBUG - Request: GET /api/admin/error-recovery/status +2025-06-19 23:06:22 - [app] app - [DEBUG] DEBUG - Request: GET /api/notifications +2025-06-19 23:06:22 - [app] app - [DEBUG] DEBUG - Request: GET /api/admin/system/status +2025-06-19 23:06:22 - [app] app - [DEBUG] DEBUG - Request: GET /api/admin/live-stats +2025-06-19 23:06:22 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 23:06:22 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 23:06:23 - [app] app - [ERROR] ERROR - Datenbank-Transaktion fehlgeschlagen: Textual SQL expression 'SELECT 1' should be explicitly declared as text('SELECT 1') +2025-06-19 23:06:23 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 23:06:23 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 23:06:52 - [app] app - [DEBUG] DEBUG - Request: GET /api/admin/error-recovery/status +2025-06-19 23:06:52 - [app] app - [DEBUG] DEBUG - Request: GET /api/admin/live-stats +2025-06-19 23:06:52 - [app] app - [DEBUG] DEBUG - Request: GET /api/notifications +2025-06-19 23:06:52 - [app] app - [DEBUG] DEBUG - Request: GET /api/admin/system/status +2025-06-19 23:06:52 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 23:06:52 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 23:06:53 - [app] app - [ERROR] ERROR - Datenbank-Transaktion fehlgeschlagen: Textual SQL expression 'SELECT 1' should be explicitly declared as text('SELECT 1') +2025-06-19 23:06:53 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 23:06:53 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 23:07:22 - [app] app - [DEBUG] DEBUG - Request: GET /api/admin/error-recovery/status +2025-06-19 23:07:22 - [app] app - [DEBUG] DEBUG - Request: GET /api/notifications +2025-06-19 23:07:22 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 23:07:22 - [app] app - [DEBUG] DEBUG - Request: GET /api/admin/system/status +2025-06-19 23:07:22 - [app] app - [DEBUG] DEBUG - Request: GET /api/admin/live-stats +2025-06-19 23:07:22 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 23:07:23 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 23:07:23 - [app] app - [ERROR] ERROR - Datenbank-Transaktion fehlgeschlagen: Textual SQL expression 'SELECT 1' should be explicitly declared as text('SELECT 1') +2025-06-19 23:07:23 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 23:07:52 - [app] app - [DEBUG] DEBUG - Request: GET /api/admin/error-recovery/status +2025-06-19 23:07:52 - [app] app - [DEBUG] DEBUG - Request: GET /api/notifications +2025-06-19 23:07:52 - [app] app - [DEBUG] DEBUG - Request: GET /api/admin/system/status +2025-06-19 23:07:52 - [app] app - [DEBUG] DEBUG - Request: GET /api/admin/live-stats +2025-06-19 23:07:52 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 23:07:52 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 23:07:53 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 23:07:53 - [app] app - [ERROR] ERROR - Datenbank-Transaktion fehlgeschlagen: Textual SQL expression 'SELECT 1' should be explicitly declared as text('SELECT 1') +2025-06-19 23:07:53 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 23:08:22 - [app] app - [DEBUG] DEBUG - Request: GET /api/admin/error-recovery/status +2025-06-19 23:08:22 - [app] app - [DEBUG] DEBUG - Request: GET /api/notifications +2025-06-19 23:08:22 - [app] app - [DEBUG] DEBUG - Request: GET /api/admin/live-stats +2025-06-19 23:08:22 - [app] app - [DEBUG] DEBUG - Request: GET /api/admin/system/status +2025-06-19 23:08:22 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 23:08:22 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 23:08:23 - [app] app - [ERROR] ERROR - Datenbank-Transaktion fehlgeschlagen: Textual SQL expression 'SELECT 1' should be explicitly declared as text('SELECT 1') +2025-06-19 23:08:23 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 23:08:23 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 23:08:52 - [app] app - [DEBUG] DEBUG - Request: GET /api/admin/error-recovery/status +2025-06-19 23:08:52 - [app] app - [DEBUG] DEBUG - Request: GET /api/notifications +2025-06-19 23:08:52 - [app] app - [DEBUG] DEBUG - Request: GET /api/admin/live-stats +2025-06-19 23:08:52 - [app] app - [DEBUG] DEBUG - Request: GET /api/admin/system/status +2025-06-19 23:08:52 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 23:08:52 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 23:08:53 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 23:08:53 - [app] app - [ERROR] ERROR - Datenbank-Transaktion fehlgeschlagen: Textual SQL expression 'SELECT 1' should be explicitly declared as text('SELECT 1') +2025-06-19 23:08:53 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 23:09:22 - [app] app - [DEBUG] DEBUG - Request: GET /api/admin/error-recovery/status +2025-06-19 23:09:22 - [app] app - [DEBUG] DEBUG - Request: GET /api/admin/system/status +2025-06-19 23:09:22 - [app] app - [DEBUG] DEBUG - Request: GET /api/notifications +2025-06-19 23:09:22 - [app] app - [DEBUG] DEBUG - Request: GET /api/admin/live-stats +2025-06-19 23:09:22 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 23:09:22 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 23:09:23 - [app] app - [ERROR] ERROR - Datenbank-Transaktion fehlgeschlagen: Textual SQL expression 'SELECT 1' should be explicitly declared as text('SELECT 1') +2025-06-19 23:09:23 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 23:09:23 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 23:09:52 - [app] app - [DEBUG] DEBUG - Request: GET /api/admin/error-recovery/status +2025-06-19 23:09:52 - [app] app - [DEBUG] DEBUG - Request: GET /api/notifications +2025-06-19 23:09:52 - [app] app - [DEBUG] DEBUG - Request: GET /api/admin/live-stats +2025-06-19 23:09:52 - [app] app - [DEBUG] DEBUG - Request: GET /api/admin/system/status +2025-06-19 23:09:52 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 23:09:52 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 23:09:53 - [app] app - [ERROR] ERROR - Datenbank-Transaktion fehlgeschlagen: Textual SQL expression 'SELECT 1' should be explicitly declared as text('SELECT 1') +2025-06-19 23:09:53 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 23:09:53 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 23:10:22 - [app] app - [DEBUG] DEBUG - Request: GET /api/admin/error-recovery/status +2025-06-19 23:10:22 - [app] app - [DEBUG] DEBUG - Request: GET /api/notifications +2025-06-19 23:10:22 - [app] app - [DEBUG] DEBUG - Request: GET /api/admin/live-stats +2025-06-19 23:10:22 - [app] app - [DEBUG] DEBUG - Request: GET /api/admin/system/status +2025-06-19 23:10:22 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 23:10:22 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 23:10:23 - [app] app - [ERROR] ERROR - Datenbank-Transaktion fehlgeschlagen: Textual SQL expression 'SELECT 1' should be explicitly declared as text('SELECT 1') +2025-06-19 23:10:23 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 23:10:23 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 23:10:52 - [app] app - [DEBUG] DEBUG - Request: GET /api/admin/error-recovery/status +2025-06-19 23:10:52 - [app] app - [DEBUG] DEBUG - Request: GET /api/notifications +2025-06-19 23:10:52 - [app] app - [DEBUG] DEBUG - Request: GET /api/admin/live-stats +2025-06-19 23:10:52 - [app] app - [DEBUG] DEBUG - Request: GET /api/admin/system/status +2025-06-19 23:10:52 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 23:10:52 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 23:10:53 - [app] app - [ERROR] ERROR - Datenbank-Transaktion fehlgeschlagen: Textual SQL expression 'SELECT 1' should be explicitly declared as text('SELECT 1') +2025-06-19 23:10:53 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 23:10:53 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 23:11:22 - [app] app - [DEBUG] DEBUG - Request: GET /api/admin/error-recovery/status +2025-06-19 23:11:22 - [app] app - [DEBUG] DEBUG - Request: GET /api/notifications +2025-06-19 23:11:22 - [app] app - [DEBUG] DEBUG - Request: GET /api/admin/live-stats +2025-06-19 23:11:22 - [app] app - [DEBUG] DEBUG - Request: GET /api/admin/system/status +2025-06-19 23:11:22 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 23:11:22 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 23:11:23 - [app] app - [ERROR] ERROR - Datenbank-Transaktion fehlgeschlagen: Textual SQL expression 'SELECT 1' should be explicitly declared as text('SELECT 1') +2025-06-19 23:11:23 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 23:11:23 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 23:11:52 - [app] app - [DEBUG] DEBUG - Request: GET /api/admin/error-recovery/status +2025-06-19 23:11:52 - [app] app - [DEBUG] DEBUG - Request: GET /api/notifications +2025-06-19 23:11:52 - [app] app - [DEBUG] DEBUG - Request: GET /api/admin/live-stats +2025-06-19 23:11:52 - [app] app - [DEBUG] DEBUG - Request: GET /api/admin/system/status +2025-06-19 23:11:52 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 23:11:52 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 23:11:53 - [app] app - [ERROR] ERROR - Datenbank-Transaktion fehlgeschlagen: Textual SQL expression 'SELECT 1' should be explicitly declared as text('SELECT 1') +2025-06-19 23:11:53 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 23:11:53 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 23:12:22 - [app] app - [DEBUG] DEBUG - Request: GET /api/admin/error-recovery/status +2025-06-19 23:12:22 - [app] app - [DEBUG] DEBUG - Request: GET /api/notifications +2025-06-19 23:12:22 - [app] app - [DEBUG] DEBUG - Request: GET /api/admin/live-stats +2025-06-19 23:12:22 - [app] app - [DEBUG] DEBUG - Request: GET /api/admin/system/status +2025-06-19 23:12:22 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 23:12:22 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 23:12:23 - [app] app - [ERROR] ERROR - Datenbank-Transaktion fehlgeschlagen: Textual SQL expression 'SELECT 1' should be explicitly declared as text('SELECT 1') +2025-06-19 23:12:23 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 23:12:23 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 23:12:52 - [app] app - [DEBUG] DEBUG - Request: GET /api/admin/error-recovery/status +2025-06-19 23:12:52 - [app] app - [DEBUG] DEBUG - Request: GET /api/admin/live-stats +2025-06-19 23:12:52 - [app] app - [DEBUG] DEBUG - Request: GET /api/admin/system/status +2025-06-19 23:12:52 - [app] app - [DEBUG] DEBUG - Request: GET /api/notifications +2025-06-19 23:12:52 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 23:12:52 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 23:12:53 - [app] app - [ERROR] ERROR - Datenbank-Transaktion fehlgeschlagen: Textual SQL expression 'SELECT 1' should be explicitly declared as text('SELECT 1') +2025-06-19 23:12:53 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 23:12:53 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 23:13:22 - [app] app - [DEBUG] DEBUG - Request: GET /api/admin/error-recovery/status +2025-06-19 23:13:22 - [app] app - [DEBUG] DEBUG - Request: GET /api/notifications +2025-06-19 23:13:22 - [app] app - [DEBUG] DEBUG - Request: GET /api/admin/live-stats +2025-06-19 23:13:22 - [app] app - [DEBUG] DEBUG - Request: GET /api/admin/system/status +2025-06-19 23:13:22 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 23:13:22 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 23:13:23 - [app] app - [ERROR] ERROR - Datenbank-Transaktion fehlgeschlagen: Textual SQL expression 'SELECT 1' should be explicitly declared as text('SELECT 1') +2025-06-19 23:13:23 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 23:13:23 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 23:13:52 - [app] app - [DEBUG] DEBUG - Request: GET /api/admin/error-recovery/status +2025-06-19 23:13:52 - [app] app - [DEBUG] DEBUG - Request: GET /api/notifications +2025-06-19 23:13:52 - [app] app - [DEBUG] DEBUG - Request: GET /api/admin/live-stats +2025-06-19 23:13:52 - [app] app - [DEBUG] DEBUG - Request: GET /api/admin/system/status +2025-06-19 23:13:52 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 23:13:52 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 23:13:53 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 23:13:53 - [app] app - [ERROR] ERROR - Datenbank-Transaktion fehlgeschlagen: Textual SQL expression 'SELECT 1' should be explicitly declared as text('SELECT 1') +2025-06-19 23:13:53 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 23:14:22 - [app] app - [DEBUG] DEBUG - Request: GET /api/admin/error-recovery/status +2025-06-19 23:14:22 - [app] app - [DEBUG] DEBUG - Request: GET /api/notifications +2025-06-19 23:14:22 - [app] app - [DEBUG] DEBUG - Request: GET /api/admin/live-stats +2025-06-19 23:14:22 - [app] app - [DEBUG] DEBUG - Request: GET /api/admin/system/status +2025-06-19 23:14:22 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 23:14:22 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 23:14:23 - [app] app - [ERROR] ERROR - Datenbank-Transaktion fehlgeschlagen: Textual SQL expression 'SELECT 1' should be explicitly declared as text('SELECT 1') +2025-06-19 23:14:23 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 23:14:23 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 23:14:52 - [app] app - [DEBUG] DEBUG - Request: GET /api/admin/error-recovery/status +2025-06-19 23:14:52 - [app] app - [DEBUG] DEBUG - Request: GET /api/admin/live-stats +2025-06-19 23:14:52 - [app] app - [DEBUG] DEBUG - Request: GET /api/notifications +2025-06-19 23:14:52 - [app] app - [DEBUG] DEBUG - Request: GET /api/admin/system/status +2025-06-19 23:14:52 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 23:14:52 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 23:14:53 - [app] app - [ERROR] ERROR - Datenbank-Transaktion fehlgeschlagen: Textual SQL expression 'SELECT 1' should be explicitly declared as text('SELECT 1') +2025-06-19 23:14:53 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 23:14:53 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 23:15:22 - [app] app - [DEBUG] DEBUG - Request: GET /api/admin/error-recovery/status +2025-06-19 23:15:22 - [app] app - [DEBUG] DEBUG - Request: GET /api/notifications +2025-06-19 23:15:22 - [app] app - [DEBUG] DEBUG - Request: GET /api/admin/live-stats +2025-06-19 23:15:22 - [app] app - [DEBUG] DEBUG - Request: GET /api/admin/system/status +2025-06-19 23:15:22 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 23:15:22 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 23:15:23 - [app] app - [ERROR] ERROR - Datenbank-Transaktion fehlgeschlagen: Textual SQL expression 'SELECT 1' should be explicitly declared as text('SELECT 1') +2025-06-19 23:15:23 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 23:15:23 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 23:15:52 - [app] app - [DEBUG] DEBUG - Request: GET /api/admin/error-recovery/status +2025-06-19 23:15:52 - [app] app - [DEBUG] DEBUG - Request: GET /api/notifications +2025-06-19 23:15:52 - [app] app - [DEBUG] DEBUG - Request: GET /api/admin/system/status +2025-06-19 23:15:52 - [app] app - [DEBUG] DEBUG - Request: GET /api/admin/live-stats +2025-06-19 23:15:52 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 23:15:52 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 23:15:53 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 23:15:53 - [app] app - [ERROR] ERROR - Datenbank-Transaktion fehlgeschlagen: Textual SQL expression 'SELECT 1' should be explicitly declared as text('SELECT 1') +2025-06-19 23:15:53 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 23:16:22 - [app] app - [DEBUG] DEBUG - Request: GET /api/admin/error-recovery/status +2025-06-19 23:16:22 - [app] app - [DEBUG] DEBUG - Request: GET /api/notifications +2025-06-19 23:16:22 - [app] app - [DEBUG] DEBUG - Request: GET /api/admin/system/status +2025-06-19 23:16:22 - [app] app - [DEBUG] DEBUG - Request: GET /api/admin/live-stats +2025-06-19 23:16:22 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 23:16:22 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 23:16:23 - [app] app - [ERROR] ERROR - Datenbank-Transaktion fehlgeschlagen: Textual SQL expression 'SELECT 1' should be explicitly declared as text('SELECT 1') +2025-06-19 23:16:23 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 23:16:23 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 23:16:52 - [app] app - [DEBUG] DEBUG - Request: GET /api/admin/error-recovery/status +2025-06-19 23:16:52 - [app] app - [DEBUG] DEBUG - Request: GET /api/notifications +2025-06-19 23:16:52 - [app] app - [DEBUG] DEBUG - Request: GET /api/admin/live-stats +2025-06-19 23:16:52 - [app] app - [DEBUG] DEBUG - Request: GET /api/admin/system/status +2025-06-19 23:16:52 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 23:16:52 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 23:16:53 - [app] app - [ERROR] ERROR - Datenbank-Transaktion fehlgeschlagen: Textual SQL expression 'SELECT 1' should be explicitly declared as text('SELECT 1') +2025-06-19 23:16:53 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 23:16:53 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 23:17:22 - [app] app - [DEBUG] DEBUG - Request: GET /api/admin/error-recovery/status +2025-06-19 23:17:22 - [app] app - [DEBUG] DEBUG - Request: GET /api/notifications +2025-06-19 23:17:22 - [app] app - [DEBUG] DEBUG - Request: GET /api/admin/live-stats +2025-06-19 23:17:22 - [app] app - [DEBUG] DEBUG - Request: GET /api/admin/system/status +2025-06-19 23:17:22 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 23:17:22 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 23:17:23 - [app] app - [ERROR] ERROR - Datenbank-Transaktion fehlgeschlagen: Textual SQL expression 'SELECT 1' should be explicitly declared as text('SELECT 1') +2025-06-19 23:17:23 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 23:17:23 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 23:17:52 - [app] app - [DEBUG] DEBUG - Request: GET /api/admin/error-recovery/status +2025-06-19 23:17:52 - [app] app - [DEBUG] DEBUG - Request: GET /api/notifications +2025-06-19 23:17:52 - [app] app - [DEBUG] DEBUG - Request: GET /api/admin/live-stats +2025-06-19 23:17:52 - [app] app - [DEBUG] DEBUG - Request: GET /api/admin/system/status +2025-06-19 23:17:52 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 23:17:52 - [app] app - [DEBUG] DEBUG - Response: 200 diff --git a/backend/logs/data_management/data_management.log b/backend/logs/data_management/data_management.log index 9e484d28d..a8d56320d 100644 --- a/backend/logs/data_management/data_management.log +++ b/backend/logs/data_management/data_management.log @@ -837,3 +837,7 @@ 2025-06-19 22:53:38 - [data_management] data_management - [INFO] INFO - 📊 Massive Konsolidierung: 3 Dateien → 1 Datei (67% Reduktion) 2025-06-19 22:53:39 - [data_management] data_management - [INFO] INFO - ✅ Data Management Module initialisiert 2025-06-19 22:53:39 - [data_management] data_management - [INFO] INFO - 📊 Massive Konsolidierung: 3 Dateien → 1 Datei (67% Reduktion) +2025-06-19 22:58:47 - [data_management] data_management - [INFO] INFO - ✅ Data Management Module initialisiert +2025-06-19 22:58:47 - [data_management] data_management - [INFO] INFO - 📊 Massive Konsolidierung: 3 Dateien → 1 Datei (67% Reduktion) +2025-06-19 22:58:49 - [data_management] data_management - [INFO] INFO - ✅ Data Management Module initialisiert +2025-06-19 22:58:49 - [data_management] data_management - [INFO] INFO - 📊 Massive Konsolidierung: 3 Dateien → 1 Datei (67% Reduktion) diff --git a/backend/logs/drucker_steuerung/drucker_steuerung.log b/backend/logs/drucker_steuerung/drucker_steuerung.log index 5a331c84b..fb69890e9 100644 --- a/backend/logs/drucker_steuerung/drucker_steuerung.log +++ b/backend/logs/drucker_steuerung/drucker_steuerung.log @@ -9,3 +9,5 @@ 2025-06-19 22:52:44 - [drucker_steuerung] drucker_steuerung - [INFO] INFO - 🖨️ Drucker-Steuerungs-Blueprint (Backend-Kontrolle) geladen 2025-06-19 22:53:38 - [drucker_steuerung] drucker_steuerung - [INFO] INFO - 🖨️ Drucker-Steuerungs-Blueprint (Backend-Kontrolle) geladen 2025-06-19 22:53:40 - [drucker_steuerung] drucker_steuerung - [INFO] INFO - 🖨️ Drucker-Steuerungs-Blueprint (Backend-Kontrolle) geladen +2025-06-19 22:58:48 - [drucker_steuerung] drucker_steuerung - [INFO] INFO - 🖨️ Drucker-Steuerungs-Blueprint (Backend-Kontrolle) geladen +2025-06-19 22:58:50 - [drucker_steuerung] drucker_steuerung - [INFO] INFO - 🖨️ Drucker-Steuerungs-Blueprint (Backend-Kontrolle) geladen diff --git a/backend/logs/energy_monitoring/energy_monitoring.log b/backend/logs/energy_monitoring/energy_monitoring.log index 9b65a3400..38b507fcf 100644 --- a/backend/logs/energy_monitoring/energy_monitoring.log +++ b/backend/logs/energy_monitoring/energy_monitoring.log @@ -712,3 +712,5 @@ 2025-06-19 22:54:20 - [energy_monitoring] energy_monitoring - [INFO] INFO - 🔋 Energiemonitoring-Dashboard aufgerufen von admin 2025-06-19 22:54:33 - [energy_monitoring] energy_monitoring - [INFO] INFO - 🔋 Energiemonitoring-Dashboard aufgerufen von admin 2025-06-19 22:54:46 - [energy_monitoring] energy_monitoring - [INFO] INFO - 🔋 Energiemonitoring-Dashboard aufgerufen von admin +2025-06-19 22:58:48 - [energy_monitoring] energy_monitoring - [INFO] INFO - ✅ Energiemonitoring-Blueprint initialisiert +2025-06-19 22:58:50 - [energy_monitoring] energy_monitoring - [INFO] INFO - ✅ Energiemonitoring-Blueprint initialisiert diff --git a/backend/logs/hardware_integration/hardware_integration.log b/backend/logs/hardware_integration/hardware_integration.log index 3b8b11e9b..d72bd744d 100644 --- a/backend/logs/hardware_integration/hardware_integration.log +++ b/backend/logs/hardware_integration/hardware_integration.log @@ -3339,3 +3339,9 @@ 2025-06-19 22:54:07 - [hardware_integration] hardware_integration - [ERROR] ERROR - ❌ Fehler beim Prüfen von Steckdose 192.168.0.106: HTTPConnectionPool(host='192.168.1.101', port=3128): Read timed out. (read timeout=2) 2025-06-19 22:54:52 - [hardware_integration] hardware_integration - [ERROR] ERROR - ❌ Fehler beim Prüfen von Steckdose 192.168.0.100: HTTPConnectionPool(host='192.168.1.101', port=3128): Read timed out. (read timeout=2) 2025-06-19 22:54:54 - [hardware_integration] hardware_integration - [ERROR] ERROR - ❌ Fehler beim Prüfen von Steckdose 192.168.0.101: HTTPConnectionPool(host='192.168.1.101', port=3128): Read timed out. (read timeout=2) +2025-06-19 22:54:56 - [hardware_integration] hardware_integration - [ERROR] ERROR - ❌ Fehler beim Prüfen von Steckdose 192.168.0.102: HTTPConnectionPool(host='192.168.1.101', port=3128): Read timed out. (read timeout=2) +2025-06-19 22:54:58 - [hardware_integration] hardware_integration - [ERROR] ERROR - ❌ Fehler beim Prüfen von Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.1.101', port=3128): Read timed out. (read timeout=2) +2025-06-19 22:55:00 - [hardware_integration] hardware_integration - [ERROR] ERROR - ❌ Fehler beim Prüfen von Steckdose 192.168.0.104: HTTPConnectionPool(host='192.168.1.101', port=3128): Read timed out. (read timeout=2) +2025-06-19 22:55:02 - [hardware_integration] hardware_integration - [ERROR] ERROR - ❌ Fehler beim Prüfen von Steckdose 192.168.0.106: HTTPConnectionPool(host='192.168.1.101', port=3128): Read timed out. (read timeout=2) +2025-06-19 22:58:47 - [hardware_integration] hardware_integration - [INFO] INFO - 🚀 Hardware Integration (Backend-Kontrolle) erfolgreich geladen +2025-06-19 22:58:49 - [hardware_integration] hardware_integration - [INFO] INFO - 🚀 Hardware Integration (Backend-Kontrolle) erfolgreich geladen diff --git a/backend/logs/job_queue_system/job_queue_system.log b/backend/logs/job_queue_system/job_queue_system.log index 032d3247f..13fe47373 100644 --- a/backend/logs/job_queue_system/job_queue_system.log +++ b/backend/logs/job_queue_system/job_queue_system.log @@ -1616,3 +1616,11 @@ 2025-06-19 22:53:39 - [job_queue_system] job_queue_system - [INFO] INFO - ✅ Job & Queue System Module initialisiert 2025-06-19 22:53:39 - [job_queue_system] job_queue_system - [INFO] INFO - 📊 MASSIVE Konsolidierung: 4 Dateien → 1 Datei (75% Reduktion) 2025-06-19 22:53:40 - [job_queue_system] job_queue_system - [INFO] INFO - Queue Manager gestartet (Legacy-Kompatibilität) +2025-06-19 22:56:05 - [job_queue_system] job_queue_system - [INFO] INFO - Queue Manager gestoppt (Legacy-Kompatibilität) +2025-06-19 22:56:05 - [job_queue_system] job_queue_system - [INFO] INFO - Queue Manager gestoppt (Legacy-Kompatibilität) +2025-06-19 22:58:47 - [job_queue_system] job_queue_system - [INFO] INFO - ✅ Job & Queue System Module initialisiert +2025-06-19 22:58:47 - [job_queue_system] job_queue_system - [INFO] INFO - 📊 MASSIVE Konsolidierung: 4 Dateien → 1 Datei (75% Reduktion) +2025-06-19 22:58:48 - [job_queue_system] job_queue_system - [INFO] INFO - Queue Manager gestartet (Legacy-Kompatibilität) +2025-06-19 22:58:49 - [job_queue_system] job_queue_system - [INFO] INFO - ✅ Job & Queue System Module initialisiert +2025-06-19 22:58:49 - [job_queue_system] job_queue_system - [INFO] INFO - 📊 MASSIVE Konsolidierung: 4 Dateien → 1 Datei (75% Reduktion) +2025-06-19 22:58:50 - [job_queue_system] job_queue_system - [INFO] INFO - Queue Manager gestartet (Legacy-Kompatibilität) diff --git a/backend/logs/monitoring_analytics/monitoring_analytics.log b/backend/logs/monitoring_analytics/monitoring_analytics.log index 293675e06..e36a08470 100644 --- a/backend/logs/monitoring_analytics/monitoring_analytics.log +++ b/backend/logs/monitoring_analytics/monitoring_analytics.log @@ -829,3 +829,7 @@ 2025-06-19 22:53:38 - [monitoring_analytics] monitoring_analytics - [INFO] INFO - 📊 MASSIVE Konsolidierung: 3 Dateien → 1 Datei (67% Reduktion) 2025-06-19 22:53:40 - [monitoring_analytics] monitoring_analytics - [INFO] INFO - ✅ Monitoring & Analytics Module initialisiert 2025-06-19 22:53:40 - [monitoring_analytics] monitoring_analytics - [INFO] INFO - 📊 MASSIVE Konsolidierung: 3 Dateien → 1 Datei (67% Reduktion) +2025-06-19 22:58:48 - [monitoring_analytics] monitoring_analytics - [INFO] INFO - ✅ Monitoring & Analytics Module initialisiert +2025-06-19 22:58:48 - [monitoring_analytics] monitoring_analytics - [INFO] INFO - 📊 MASSIVE Konsolidierung: 3 Dateien → 1 Datei (67% Reduktion) +2025-06-19 22:58:50 - [monitoring_analytics] monitoring_analytics - [INFO] INFO - ✅ Monitoring & Analytics Module initialisiert +2025-06-19 22:58:50 - [monitoring_analytics] monitoring_analytics - [INFO] INFO - 📊 MASSIVE Konsolidierung: 3 Dateien → 1 Datei (67% Reduktion) diff --git a/backend/logs/permissions/permissions.log b/backend/logs/permissions/permissions.log index c1e46d64c..c8041c40b 100644 --- a/backend/logs/permissions/permissions.log +++ b/backend/logs/permissions/permissions.log @@ -414,3 +414,5 @@ WHERE users.role = ?] 2025-06-19 22:52:44 - [permissions] permissions - [INFO] INFO - Admin-Berechtigungen korrigiert: 0 erstellt, 0 aktualisiert 2025-06-19 22:53:39 - [permissions] permissions - [INFO] INFO - Admin-Berechtigungen korrigiert: 0 erstellt, 0 aktualisiert 2025-06-19 22:53:40 - [permissions] permissions - [INFO] INFO - Admin-Berechtigungen korrigiert: 0 erstellt, 0 aktualisiert +2025-06-19 22:58:48 - [permissions] permissions - [INFO] INFO - Admin-Berechtigungen korrigiert: 0 erstellt, 0 aktualisiert +2025-06-19 22:58:50 - [permissions] permissions - [INFO] INFO - Admin-Berechtigungen korrigiert: 0 erstellt, 0 aktualisiert diff --git a/backend/logs/scheduler/scheduler.log b/backend/logs/scheduler/scheduler.log index c86993f71..1a4ffec81 100644 --- a/backend/logs/scheduler/scheduler.log +++ b/backend/logs/scheduler/scheduler.log @@ -2436,3 +2436,9 @@ 2025-06-19 22:53:39 - [scheduler] scheduler - [INFO] INFO - Task check_jobs registriert: Intervall 30s, Enabled: True 2025-06-19 22:53:40 - [scheduler] scheduler - [INFO] INFO - Scheduler-Thread gestartet 2025-06-19 22:53:40 - [scheduler] scheduler - [INFO] INFO - Scheduler gestartet +2025-06-19 22:58:47 - [scheduler] scheduler - [INFO] INFO - Task check_jobs registriert: Intervall 30s, Enabled: True +2025-06-19 22:58:48 - [scheduler] scheduler - [INFO] INFO - Scheduler-Thread gestartet +2025-06-19 22:58:48 - [scheduler] scheduler - [INFO] INFO - Scheduler gestartet +2025-06-19 22:58:49 - [scheduler] scheduler - [INFO] INFO - Task check_jobs registriert: Intervall 30s, Enabled: True +2025-06-19 22:58:50 - [scheduler] scheduler - [INFO] INFO - Scheduler-Thread gestartet +2025-06-19 22:58:50 - [scheduler] scheduler - [INFO] INFO - Scheduler gestartet diff --git a/backend/logs/security_suite/security_suite.log b/backend/logs/security_suite/security_suite.log index 0327acfe7..15bddfb2e 100644 --- a/backend/logs/security_suite/security_suite.log +++ b/backend/logs/security_suite/security_suite.log @@ -1252,3 +1252,9 @@ 2025-06-19 22:53:39 - [security_suite] security_suite - [INFO] INFO - ✅ Security Suite Module initialisiert 2025-06-19 22:53:39 - [security_suite] security_suite - [INFO] INFO - 📊 Massive Konsolidierung: 3 Dateien → 1 Datei (67% Reduktion) 2025-06-19 22:53:40 - [security_suite] security_suite - [INFO] INFO - 🔒 Security Suite initialisiert +2025-06-19 22:58:47 - [security_suite] security_suite - [INFO] INFO - ✅ Security Suite Module initialisiert +2025-06-19 22:58:47 - [security_suite] security_suite - [INFO] INFO - 📊 Massive Konsolidierung: 3 Dateien → 1 Datei (67% Reduktion) +2025-06-19 22:58:48 - [security_suite] security_suite - [INFO] INFO - 🔒 Security Suite initialisiert +2025-06-19 22:58:49 - [security_suite] security_suite - [INFO] INFO - ✅ Security Suite Module initialisiert +2025-06-19 22:58:49 - [security_suite] security_suite - [INFO] INFO - 📊 Massive Konsolidierung: 3 Dateien → 1 Datei (67% Reduktion) +2025-06-19 22:58:50 - [security_suite] security_suite - [INFO] INFO - 🔒 Security Suite initialisiert diff --git a/backend/logs/startup/startup.log b/backend/logs/startup/startup.log index d152d63fe..e84ccf04e 100644 --- a/backend/logs/startup/startup.log +++ b/backend/logs/startup/startup.log @@ -3317,3 +3317,17 @@ 2025-06-19 22:53:40 - [startup] startup - [INFO] INFO - 📁 Arbeitsverzeichnis: /cbin/C0S1-cernel/C02L2/Dateiverwaltung/nextcloud/core/files/3_Beruf_Ausbildung_und_Schule/IHK-Abschlussprüfung/Projektarbeit-MYP/backend 2025-06-19 22:53:40 - [startup] startup - [INFO] INFO - ⏰ Startzeit: 2025-06-19T22:53:40.480077 2025-06-19 22:53:40 - [startup] startup - [INFO] INFO - ================================================== +2025-06-19 22:58:48 - [startup] startup - [INFO] INFO - ================================================== +2025-06-19 22:58:48 - [startup] startup - [INFO] INFO - [START] MYP Platform Backend wird gestartet... +2025-06-19 22:58:48 - [startup] startup - [INFO] INFO - 🐍 Python Version: 3.11.2 (main, Mar 05 2023, 19:08:04) [GCC] +2025-06-19 22:58:48 - [startup] startup - [INFO] INFO - 💻 Betriebssystem: posix (linux) +2025-06-19 22:58:48 - [startup] startup - [INFO] INFO - 📁 Arbeitsverzeichnis: /cbin/C0S1-cernel/C02L2/Dateiverwaltung/nextcloud/core/files/3_Beruf_Ausbildung_und_Schule/IHK-Abschlussprüfung/Projektarbeit-MYP/backend +2025-06-19 22:58:48 - [startup] startup - [INFO] INFO - ⏰ Startzeit: 2025-06-19T22:58:48.445511 +2025-06-19 22:58:48 - [startup] startup - [INFO] INFO - ================================================== +2025-06-19 22:58:50 - [startup] startup - [INFO] INFO - ================================================== +2025-06-19 22:58:50 - [startup] startup - [INFO] INFO - [START] MYP Platform Backend wird gestartet... +2025-06-19 22:58:50 - [startup] startup - [INFO] INFO - 🐍 Python Version: 3.11.2 (main, Mar 05 2023, 19:08:04) [GCC] +2025-06-19 22:58:50 - [startup] startup - [INFO] INFO - 💻 Betriebssystem: posix (linux) +2025-06-19 22:58:50 - [startup] startup - [INFO] INFO - 📁 Arbeitsverzeichnis: /cbin/C0S1-cernel/C02L2/Dateiverwaltung/nextcloud/core/files/3_Beruf_Ausbildung_und_Schule/IHK-Abschlussprüfung/Projektarbeit-MYP/backend +2025-06-19 22:58:50 - [startup] startup - [INFO] INFO - ⏰ Startzeit: 2025-06-19T22:58:50.005338 +2025-06-19 22:58:50 - [startup] startup - [INFO] INFO - ================================================== diff --git a/backend/logs/utilities_collection/utilities_collection.log b/backend/logs/utilities_collection/utilities_collection.log index 6eaa73fbd..09b9e137c 100644 --- a/backend/logs/utilities_collection/utilities_collection.log +++ b/backend/logs/utilities_collection/utilities_collection.log @@ -1053,3 +1053,13 @@ 2025-06-19 22:53:38 - [utilities_collection] utilities_collection - [INFO] INFO - 🚨 ALLERLETZTE MEGA-Konsolidierung: 12+ Dateien → 1 Datei (90%+ Reduktion) 2025-06-19 22:53:39 - [utilities_collection] utilities_collection - [INFO] INFO - ✅ Utilities Collection initialisiert 2025-06-19 22:53:39 - [utilities_collection] utilities_collection - [INFO] INFO - 🚨 ALLERLETZTE MEGA-Konsolidierung: 12+ Dateien → 1 Datei (90%+ Reduktion) +2025-06-19 22:58:47 - [utilities_collection] utilities_collection - [INFO] INFO - ✅ Utilities Collection initialisiert +2025-06-19 22:58:47 - [utilities_collection] utilities_collection - [INFO] INFO - 🚨 ALLERLETZTE MEGA-Konsolidierung: 12+ Dateien → 1 Datei (90%+ Reduktion) +2025-06-19 22:58:49 - [utilities_collection] utilities_collection - [INFO] INFO - ✅ Utilities Collection initialisiert +2025-06-19 22:58:49 - [utilities_collection] utilities_collection - [INFO] INFO - 🚨 ALLERLETZTE MEGA-Konsolidierung: 12+ Dateien → 1 Datei (90%+ Reduktion) +2025-06-19 22:59:10 - [utilities_collection] utilities_collection - [INFO] INFO - ✅ Utilities Collection initialisiert +2025-06-19 22:59:10 - [utilities_collection] utilities_collection - [INFO] INFO - 🚨 ALLERLETZTE MEGA-Konsolidierung: 12+ Dateien → 1 Datei (90%+ Reduktion) +2025-06-19 22:59:30 - [utilities_collection] utilities_collection - [INFO] INFO - ✅ Utilities Collection initialisiert +2025-06-19 22:59:30 - [utilities_collection] utilities_collection - [INFO] INFO - 🚨 ALLERLETZTE MEGA-Konsolidierung: 12+ Dateien → 1 Datei (90%+ Reduktion) +2025-06-19 23:03:59 - [utilities_collection] utilities_collection - [INFO] INFO - ✅ Utilities Collection initialisiert +2025-06-19 23:03:59 - [utilities_collection] utilities_collection - [INFO] INFO - 🚨 ALLERLETZTE MEGA-Konsolidierung: 12+ Dateien → 1 Datei (90%+ Reduktion) diff --git a/backend/migrate_user_schema.py b/backend/migrate_user_schema.py new file mode 100644 index 000000000..818e835f8 --- /dev/null +++ b/backend/migrate_user_schema.py @@ -0,0 +1,205 @@ +#!/usr/bin/env python3 +""" +Datenbank-Migration Script für User-Schema-Update +================================================ + +Dieses Script behebt das kritische Problem mit fehlenden User-Spalten +in der SQLite-Datenbank. + +Fehler: (sqlite3.OperationalError) no such column: users.theme_preference + +Lösung: Fügt alle fehlenden User-Spalten zur bestehenden Tabelle hinzu. + +Autor: Till Tomczak - Mercedes-Benz TBA Marienfelde +Datum: 2025-06-19 +""" + +import os +import sys +import sqlite3 +from datetime import datetime + +# Pfad zur Datenbank +DATABASE_PATH = os.path.join(os.path.dirname(__file__), "database", "myp.db") + +def check_column_exists(cursor, table_name, column_name): + """Prüft ob eine Spalte in einer Tabelle existiert""" + cursor.execute(f"PRAGMA table_info({table_name})") + columns = [column[1] for column in cursor.fetchall()] + return column_name in columns + +def migrate_user_schema(): + """ + Migriert das User-Schema zur neuesten Version. + Fügt alle fehlenden Spalten hinzu die im SQLAlchemy Model definiert sind. + """ + + print("🔧 Starte User-Schema-Migration...") + + if not os.path.exists(DATABASE_PATH): + print(f"❌ Datenbank nicht gefunden: {DATABASE_PATH}") + return False + + # Backup der Datenbank erstellen + backup_path = DATABASE_PATH + f".backup_{datetime.now().strftime('%Y%m%d_%H%M%S')}" + + try: + import shutil + shutil.copy2(DATABASE_PATH, backup_path) + print(f"✅ Backup erstellt: {backup_path}") + except Exception as e: + print(f"⚠️ Backup-Warnung: {e}") + + # Neue Spalten die hinzugefügt werden müssen + new_columns = [ + ("theme_preference", "VARCHAR(20)", "auto"), + ("language_preference", "VARCHAR(10)", "de"), + ("email_notifications", "BOOLEAN", "1"), + ("browser_notifications", "BOOLEAN", "1"), + ("dashboard_layout", "VARCHAR(20)", "default"), + ("compact_mode", "BOOLEAN", "0"), + ("show_completed_jobs", "BOOLEAN", "1"), + ("auto_refresh_interval", "INTEGER", "30"), + ("auto_logout_timeout", "INTEGER", "0") + ] + + try: + # Verbindung zur Datenbank + conn = sqlite3.connect(DATABASE_PATH) + cursor = conn.cursor() + + print("📊 Prüfe vorhandene Spalten...") + + # Prüfe welche Spalten bereits existieren + existing_columns = [] + missing_columns = [] + + for column_name, column_type, default_value in new_columns: + if check_column_exists(cursor, "users", column_name): + existing_columns.append(column_name) + print(f" ✅ {column_name} - bereits vorhanden") + else: + missing_columns.append((column_name, column_type, default_value)) + print(f" ❌ {column_name} - fehlt") + + if not missing_columns: + print("🎉 Alle Spalten sind bereits vorhanden! Schema ist aktuell.") + conn.close() + return True + + print(f"🔨 Füge {len(missing_columns)} fehlende Spalten hinzu...") + + # Füge fehlende Spalten hinzu + for column_name, column_type, default_value in missing_columns: + alter_sql = f"ALTER TABLE users ADD COLUMN {column_name} {column_type}" + + # Default-Value hinzufügen wenn SQLite es unterstützt + if default_value: + alter_sql += f" DEFAULT '{default_value}'" + + try: + cursor.execute(alter_sql) + print(f" ✅ Spalte {column_name} hinzugefügt") + except Exception as e: + print(f" ❌ Fehler bei {column_name}: {e}") + # Bei Fehlern trotzdem weitermachen + + # Für existierende Benutzer Default-Werte setzen + print("🔄 Setze Default-Werte für existierende Benutzer...") + + for column_name, column_type, default_value in missing_columns: + if default_value: + try: + update_sql = f"UPDATE users SET {column_name} = ? WHERE {column_name} IS NULL" + cursor.execute(update_sql, (default_value,)) + print(f" ✅ Default-Werte für {column_name} gesetzt") + except Exception as e: + print(f" ⚠️ Default-Werte für {column_name}: {e}") + + # Änderungen speichern + conn.commit() + + # Validierung: Alle Spalten nochmal prüfen + print("🔍 Validiere Migration...") + all_present = True + for column_name, _, _ in new_columns: + if not check_column_exists(cursor, "users", column_name): + print(f" ❌ {column_name} immer noch nicht vorhanden!") + all_present = False + else: + print(f" ✅ {column_name} erfolgreich migriert") + + conn.close() + + if all_present: + print("🎉 Migration erfolgreich abgeschlossen!") + print(" Alle neuen User-Spalten wurden hinzugefügt.") + print(" Die SQLAlchemy-Fehler sollten jetzt behoben sein.") + return True + else: + print("⚠️ Migration teilweise fehlgeschlagen - siehe Details oben") + return False + + except Exception as e: + print(f"❌ Kritischer Fehler bei der Migration: {e}") + print(f"💾 Backup verfügbar unter: {backup_path}") + return False + +def verify_migration(): + """Verifiziert dass die Migration erfolgreich war""" + try: + # Test-Import des User-Models + sys.path.append(os.path.dirname(__file__)) + from models import User, get_cached_session + + print("🧪 Teste User-Model-Import...") + + # Teste eine einfache Query + with get_cached_session() as session: + user_count = session.query(User).count() + print(f"✅ User-Query erfolgreich: {user_count} Benutzer gefunden") + + # Teste Zugriff auf neue Spalten + test_user = session.query(User).first() + if test_user: + # Teste alle neuen Attribute + _ = test_user.theme_preference + _ = test_user.language_preference + _ = test_user.email_notifications + _ = test_user.browser_notifications + _ = test_user.dashboard_layout + _ = test_user.compact_mode + _ = test_user.show_completed_jobs + _ = test_user.auto_refresh_interval + _ = test_user.auto_logout_timeout + print("✅ Alle neuen User-Attribute funktionieren") + + return True + + except Exception as e: + print(f"❌ Verifikation fehlgeschlagen: {e}") + return False + +if __name__ == "__main__": + print("=" * 60) + print("MYP Datenbank-Migration: User-Schema-Update") + print("=" * 60) + + success = migrate_user_schema() + + if success: + print("\n🔍 Führe Verifikation durch...") + verify_success = verify_migration() + + if verify_success: + print("\n🎉 MIGRATION ERFOLGREICH!") + print(" Die User-Schema-Probleme wurden behoben.") + print(" Der Server kann jetzt ohne Datenbankfehler neu gestartet werden.") + else: + print("\n⚠️ Migration abgeschlossen, aber Verifikation fehlgeschlagen.") + print(" Bitte prüfe die Logs manuell.") + else: + print("\n❌ MIGRATION FEHLGESCHLAGEN!") + print(" Siehe Details oben. Backup-Datei wurde erstellt.") + + print("=" * 60) \ No newline at end of file