From 57715ce04d12b79c219f710407cb60b1cc696365 Mon Sep 17 00:00:00 2001 From: Till Tomczak Date: Thu, 12 Jun 2025 11:22:08 +0200 Subject: [PATCH] =?UTF-8?q?Die=20Dateien,=20die=20in=20diesem=20Commit=20h?= =?UTF-8?q?inzugef=C3=BCgt=20wurden=20oder=20ge=C3=A4ndert=20wurden,=20sin?= =?UTF-8?q?d:?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/backend/database/myp.db-shm | Bin 32768 -> 32768 bytes backend/backend/database/myp.db-wal | Bin 4152 -> 4152 bytes ...6c2d77203872ea83bc5ab7795fa35_activity.pkl | Bin 0 -> 60 bytes ...d0a267da7fced0d15d11df01e73a9_activity.pkl | Bin 0 -> 60 bytes ...9585ce530eab246dfc2eee71ee9fa_activity.pkl | Bin 0 -> 60 bytes ...235861db9a6d6c7211f6336ff821d_activity.pkl | Bin 0 -> 60 bytes ...ce299c680a0c3ffeed8e8e53175f6_activity.pkl | Bin 0 -> 60 bytes ...4cd011db6a6376a376d21f83850e8_activity.pkl | Bin 0 -> 60 bytes ...c18c991072ebfabfa3234ad45a89c_activity.pkl | Bin 0 -> 60 bytes ...7fd5871c59d6e83c38c3030bd07ae_activity.pkl | Bin 0 -> 60 bytes ...84cd50db07e432f10bb509a8fb089_activity.pkl | Bin 0 -> 60 bytes ...8367c2b45bdfcaaa1ecc875cad579_activity.pkl | Bin 0 -> 60 bytes ...3d3ae677292b3755a2a87f85963e8_activity.pkl | Bin 0 -> 60 bytes ...af76eb0b35e368e9fd22a456c3aad_activity.pkl | Bin 0 -> 60 bytes ...83e622df764dbc91fb8631d5d9b3d_activity.pkl | Bin 0 -> 60 bytes ...b2adea5bc4fed95ac3a16ac4b30aa_activity.pkl | Bin 0 -> 60 bytes ...29c06b27c72ba842f658189eaa972_activity.pkl | Bin 0 -> 60 bytes ...1f2c5823091f63828027b7b009245_activity.pkl | Bin 0 -> 60 bytes ...6fe57a2629b1ed9822a5680e2419f_activity.pkl | Bin 0 -> 60 bytes ...d74ab3e53b8d7a9c4b30dab5a9951_activity.pkl | Bin 0 -> 60 bytes ...34fb0c337940eadd3ac22d45a0343_activity.pkl | Bin 0 -> 60 bytes ...d53ca02fd357b63bb9865cdb45866_activity.pkl | Bin 0 -> 60 bytes ...29217c70667078d7bf6e3b0eade1b_activity.pkl | Bin 0 -> 60 bytes ...aa7489da2ff11ef67ea80e8f64f94_activity.pkl | Bin 0 -> 60 bytes ...460b9b209663b0ca99a2bf721849b_activity.pkl | Bin 0 -> 60 bytes ...9218bc98006d09f34bf3be314ce6b_activity.pkl | Bin 0 -> 60 bytes ...3aa1c617f4ce4f8d2f292066004a6_activity.pkl | Bin 0 -> 60 bytes ...c4a7ed310bbdb8e86381d3b95052a_activity.pkl | Bin 0 -> 60 bytes ...7e752ef117d684f7a5725dc29b9cd_activity.pkl | Bin 0 -> 60 bytes ...86f5c0754a9f770be56e6fecfdbac_activity.pkl | Bin 0 -> 60 bytes ...992fe82db725c61ef686e5ec70a25_activity.pkl | Bin 0 -> 60 bytes ...668cb54b481744ee15b63c9531d85_activity.pkl | Bin 0 -> 60 bytes ...74ae753d98f20d5cf7ace84a23114_activity.pkl | Bin 0 -> 60 bytes ...bde708ffa13f9bac1951192884cb5_activity.pkl | Bin 0 -> 60 bytes ...844dba11a8745c5043db57eb73dec_activity.pkl | Bin 0 -> 60 bytes ...94ada1c4ce45a61e0c718dbe1b71d_activity.pkl | Bin 0 -> 60 bytes ...796687adb5f0af7d3763c15fd3f54_activity.pkl | Bin 0 -> 60 bytes ...87f0391111e224a7777d630a6a647_activity.pkl | Bin 0 -> 60 bytes ...b6d15db2d97a3cf65f1bd0be190a6_activity.pkl | Bin 0 -> 60 bytes ...a5067a088559265e1625755c63a1c_activity.pkl | Bin 0 -> 60 bytes ...454d2ae0609d8ed7a4e44e2b15f54_activity.pkl | Bin 0 -> 60 bytes ...d7804cca287cdc6fcd20a24adf979_activity.pkl | Bin 0 -> 60 bytes ...20a774e3f12c8503cf6b3557db81a_activity.pkl | Bin 0 -> 60 bytes ...aedd157fcbf0041334db4a5bb167f_activity.pkl | Bin 0 -> 60 bytes ...5f91c348d6103652dcd58e8d9fca9_activity.pkl | Bin 0 -> 60 bytes ...2fa09bcd772c5d76473ad973624e4_activity.pkl | Bin 0 -> 60 bytes ...da495c7584093979aab7b5122f224_activity.pkl | Bin 0 -> 60 bytes ...8f601cfbc14e5895e203f4afa5def_activity.pkl | Bin 0 -> 60 bytes ...cf53f1b2af021b17adb86903e0747_activity.pkl | Bin 0 -> 60 bytes ...59b939adf3c6accdc2957c4f22558_activity.pkl | Bin 0 -> 60 bytes ...1a55573e44d2ff120e02884364d00_activity.pkl | Bin 0 -> 60 bytes ...337f9d694466b7d894f1e41b8898d_activity.pkl | Bin 0 -> 60 bytes ...efb7bba582d8a4ab0d20e311bf40b_activity.pkl | Bin 0 -> 60 bytes ...8306d914512948e131dd08aead0b4_activity.pkl | Bin 0 -> 60 bytes ...049ddccf2fc5ec61aeb3c2a58996e_activity.pkl | Bin 0 -> 60 bytes ...7b0388b5dec150cbbb48d36691e3c_activity.pkl | Bin 0 -> 60 bytes ...c246cbce557a2b2c8d94afb5a44d0_activity.pkl | Bin 0 -> 60 bytes ...953857ce8866e165ed0118a0583dd_activity.pkl | Bin 0 -> 60 bytes ...f98cfe625cac1bb2d3273deaee2fc_activity.pkl | Bin 0 -> 60 bytes ...3e3ce8f1eaf3757e9026e68b675a2_activity.pkl | Bin 0 -> 60 bytes ...be5ea4bc70c179f6463e05511fa70_activity.pkl | Bin 0 -> 60 bytes ...9ffe43b4be3e8796c0979c202c9b4_activity.pkl | Bin 0 -> 60 bytes ...446db8a41d0b505a88cb285948959_activity.pkl | Bin 0 -> 60 bytes ...406857a5255d98e214123cdf3ede6_activity.pkl | Bin 0 -> 60 bytes ...5acb2815a7bb30c542c302c57223e_activity.pkl | Bin 0 -> 60 bytes ...6b3ab4dbe62f6b76c0c6b4e72a1b9_activity.pkl | Bin 0 -> 60 bytes ...ab0dff33363f90c3e0593a9549e3c_activity.pkl | Bin 0 -> 60 bytes ...d3db22fe4dd9c6313ef1e8b1bef77_activity.pkl | Bin 0 -> 60 bytes ...849e6374e8b180565047ce7f7d7cc_activity.pkl | Bin 0 -> 60 bytes ...f3ba28e73ea5f7eb93b15f264724a_activity.pkl | Bin 0 -> 60 bytes ...6be379c2f8176f9ff684b4e32d86d_activity.pkl | Bin 0 -> 60 bytes ...d9de785f633943f0c763648848ad1_activity.pkl | Bin 0 -> 60 bytes ...1b474e35ffa2b9517500e3a8d5d06_activity.pkl | Bin 0 -> 60 bytes ...de1a571545610eb63d79e4929482d_activity.pkl | Bin 0 -> 60 bytes ...1abfeaf049216edd2e03c663243d9_activity.pkl | Bin 0 -> 60 bytes ...0472e15d538660eec0bab65e87e7c_activity.pkl | Bin 0 -> 60 bytes ...9b1b289a13451042b80aabebf6ebf_activity.pkl | Bin 0 -> 60 bytes ...55a8659c2af8f8357ba812066a052_activity.pkl | Bin 0 -> 60 bytes ...c9511911d47a79de2d0e637cdad63_activity.pkl | Bin 0 -> 60 bytes ...7d6721ee1ef7d3eabff0e1f9bbef2_activity.pkl | Bin 0 -> 60 bytes ...81dd95b037acf1490f306642ca4fa_activity.pkl | Bin 0 -> 60 bytes ...9131f1c904f7d7499fff08384dc47_activity.pkl | Bin 0 -> 60 bytes ...67b8eebc8ecefa5b9eec039f58a14_activity.pkl | Bin 0 -> 60 bytes ...0a52b3073177fffe9e1e1182bc6a5_activity.pkl | Bin 0 -> 60 bytes ...e8e754fdff796ed7454dc01bf2153_activity.pkl | Bin 0 -> 60 bytes ...cd9a736d85e4a0161ce836645e81f_activity.pkl | Bin 0 -> 60 bytes ...59b7275bf11e1b70177e613b1bd21_activity.pkl | Bin 0 -> 60 bytes ...af677ed4072e0f1ce3995a8a3bffc_activity.pkl | Bin 0 -> 60 bytes ...10a88b65e5b66540fe6a5a1e82639_activity.pkl | Bin 0 -> 60 bytes ...30e29df6cdb550485e9ccd7284258_activity.pkl | Bin 0 -> 60 bytes ...fb3215c29fbc358850d764b7cb54a_activity.pkl | Bin 0 -> 60 bytes ...a23e8c67b0d49e7a7f7c051f105e0_activity.pkl | Bin 0 -> 60 bytes backend/logs/admin/admin.log | 3 + backend/logs/app/app.log | 609 ++++++++++++++++++ backend/logs/core_system/core_system.log | 4 + .../logs/data_management/data_management.log | 4 + .../hardware_integration.log | 8 + .../job_queue_system/job_queue_system.log | 8 + backend/logs/jobs/jobs.log | 8 + .../monitoring_analytics.log | 4 + backend/logs/printers/printers.log | 45 ++ backend/logs/scheduler/scheduler.log | 6 + .../logs/security_suite/security_suite.log | 6 + backend/logs/sessions/sessions.log | 12 + backend/logs/startup/startup.log | 18 + backend/logs/tapo_control/tapo_control.log | 8 + .../logs/tapo_controller/tapo_controller.log | 2 + .../tapo_status_manager.log | 2 + backend/logs/user/user.log | 12 + .../utilities_collection.log | 4 + backend/logs/windows_fixes/windows_fixes.log | 4 + backend/static/css/navbar-improved.css | 423 ------------ backend/static/css/navbar.css | 468 ++++++++++++++ backend/static/js/navbar.js | 403 ++++++++++++ docs/CRUD_Funktionen_Analyse.md | 1 + 115 files changed, 1639 insertions(+), 423 deletions(-) create mode 100644 backend/instance/sessions/0076c2d77203872ea83bc5ab7795fa35_activity.pkl create mode 100644 backend/instance/sessions/01fd0a267da7fced0d15d11df01e73a9_activity.pkl create mode 100644 backend/instance/sessions/0289585ce530eab246dfc2eee71ee9fa_activity.pkl create mode 100644 backend/instance/sessions/029235861db9a6d6c7211f6336ff821d_activity.pkl create mode 100644 backend/instance/sessions/07ece299c680a0c3ffeed8e8e53175f6_activity.pkl create mode 100644 backend/instance/sessions/09b4cd011db6a6376a376d21f83850e8_activity.pkl create mode 100644 backend/instance/sessions/0a2c18c991072ebfabfa3234ad45a89c_activity.pkl create mode 100644 backend/instance/sessions/0d47fd5871c59d6e83c38c3030bd07ae_activity.pkl create mode 100644 backend/instance/sessions/10584cd50db07e432f10bb509a8fb089_activity.pkl create mode 100644 backend/instance/sessions/1558367c2b45bdfcaaa1ecc875cad579_activity.pkl create mode 100644 backend/instance/sessions/1633d3ae677292b3755a2a87f85963e8_activity.pkl create mode 100644 backend/instance/sessions/170af76eb0b35e368e9fd22a456c3aad_activity.pkl create mode 100644 backend/instance/sessions/19a83e622df764dbc91fb8631d5d9b3d_activity.pkl create mode 100644 backend/instance/sessions/19cb2adea5bc4fed95ac3a16ac4b30aa_activity.pkl create mode 100644 backend/instance/sessions/1c029c06b27c72ba842f658189eaa972_activity.pkl create mode 100644 backend/instance/sessions/1f71f2c5823091f63828027b7b009245_activity.pkl create mode 100644 backend/instance/sessions/2056fe57a2629b1ed9822a5680e2419f_activity.pkl create mode 100644 backend/instance/sessions/256d74ab3e53b8d7a9c4b30dab5a9951_activity.pkl create mode 100644 backend/instance/sessions/26334fb0c337940eadd3ac22d45a0343_activity.pkl create mode 100644 backend/instance/sessions/29dd53ca02fd357b63bb9865cdb45866_activity.pkl create mode 100644 backend/instance/sessions/2cb29217c70667078d7bf6e3b0eade1b_activity.pkl create mode 100644 backend/instance/sessions/310aa7489da2ff11ef67ea80e8f64f94_activity.pkl create mode 100644 backend/instance/sessions/313460b9b209663b0ca99a2bf721849b_activity.pkl create mode 100644 backend/instance/sessions/31c9218bc98006d09f34bf3be314ce6b_activity.pkl create mode 100644 backend/instance/sessions/3353aa1c617f4ce4f8d2f292066004a6_activity.pkl create mode 100644 backend/instance/sessions/3bac4a7ed310bbdb8e86381d3b95052a_activity.pkl create mode 100644 backend/instance/sessions/3eb7e752ef117d684f7a5725dc29b9cd_activity.pkl create mode 100644 backend/instance/sessions/40c86f5c0754a9f770be56e6fecfdbac_activity.pkl create mode 100644 backend/instance/sessions/40f992fe82db725c61ef686e5ec70a25_activity.pkl create mode 100644 backend/instance/sessions/4e2668cb54b481744ee15b63c9531d85_activity.pkl create mode 100644 backend/instance/sessions/52074ae753d98f20d5cf7ace84a23114_activity.pkl create mode 100644 backend/instance/sessions/53cbde708ffa13f9bac1951192884cb5_activity.pkl create mode 100644 backend/instance/sessions/56d844dba11a8745c5043db57eb73dec_activity.pkl create mode 100644 backend/instance/sessions/58f94ada1c4ce45a61e0c718dbe1b71d_activity.pkl create mode 100644 backend/instance/sessions/59c796687adb5f0af7d3763c15fd3f54_activity.pkl create mode 100644 backend/instance/sessions/60787f0391111e224a7777d630a6a647_activity.pkl create mode 100644 backend/instance/sessions/625b6d15db2d97a3cf65f1bd0be190a6_activity.pkl create mode 100644 backend/instance/sessions/691a5067a088559265e1625755c63a1c_activity.pkl create mode 100644 backend/instance/sessions/6a1454d2ae0609d8ed7a4e44e2b15f54_activity.pkl create mode 100644 backend/instance/sessions/6a4d7804cca287cdc6fcd20a24adf979_activity.pkl create mode 100644 backend/instance/sessions/73120a774e3f12c8503cf6b3557db81a_activity.pkl create mode 100644 backend/instance/sessions/79daedd157fcbf0041334db4a5bb167f_activity.pkl create mode 100644 backend/instance/sessions/80b5f91c348d6103652dcd58e8d9fca9_activity.pkl create mode 100644 backend/instance/sessions/8182fa09bcd772c5d76473ad973624e4_activity.pkl create mode 100644 backend/instance/sessions/81dda495c7584093979aab7b5122f224_activity.pkl create mode 100644 backend/instance/sessions/86e8f601cfbc14e5895e203f4afa5def_activity.pkl create mode 100644 backend/instance/sessions/8f1cf53f1b2af021b17adb86903e0747_activity.pkl create mode 100644 backend/instance/sessions/90f59b939adf3c6accdc2957c4f22558_activity.pkl create mode 100644 backend/instance/sessions/91b1a55573e44d2ff120e02884364d00_activity.pkl create mode 100644 backend/instance/sessions/940337f9d694466b7d894f1e41b8898d_activity.pkl create mode 100644 backend/instance/sessions/954efb7bba582d8a4ab0d20e311bf40b_activity.pkl create mode 100644 backend/instance/sessions/9558306d914512948e131dd08aead0b4_activity.pkl create mode 100644 backend/instance/sessions/95b049ddccf2fc5ec61aeb3c2a58996e_activity.pkl create mode 100644 backend/instance/sessions/9d47b0388b5dec150cbbb48d36691e3c_activity.pkl create mode 100644 backend/instance/sessions/a05c246cbce557a2b2c8d94afb5a44d0_activity.pkl create mode 100644 backend/instance/sessions/a06953857ce8866e165ed0118a0583dd_activity.pkl create mode 100644 backend/instance/sessions/a2af98cfe625cac1bb2d3273deaee2fc_activity.pkl create mode 100644 backend/instance/sessions/a473e3ce8f1eaf3757e9026e68b675a2_activity.pkl create mode 100644 backend/instance/sessions/a60be5ea4bc70c179f6463e05511fa70_activity.pkl create mode 100644 backend/instance/sessions/a989ffe43b4be3e8796c0979c202c9b4_activity.pkl create mode 100644 backend/instance/sessions/aad446db8a41d0b505a88cb285948959_activity.pkl create mode 100644 backend/instance/sessions/acd406857a5255d98e214123cdf3ede6_activity.pkl create mode 100644 backend/instance/sessions/adf5acb2815a7bb30c542c302c57223e_activity.pkl create mode 100644 backend/instance/sessions/b4d6b3ab4dbe62f6b76c0c6b4e72a1b9_activity.pkl create mode 100644 backend/instance/sessions/b99ab0dff33363f90c3e0593a9549e3c_activity.pkl create mode 100644 backend/instance/sessions/c2cd3db22fe4dd9c6313ef1e8b1bef77_activity.pkl create mode 100644 backend/instance/sessions/c34849e6374e8b180565047ce7f7d7cc_activity.pkl create mode 100644 backend/instance/sessions/cd2f3ba28e73ea5f7eb93b15f264724a_activity.pkl create mode 100644 backend/instance/sessions/d006be379c2f8176f9ff684b4e32d86d_activity.pkl create mode 100644 backend/instance/sessions/d1dd9de785f633943f0c763648848ad1_activity.pkl create mode 100644 backend/instance/sessions/d851b474e35ffa2b9517500e3a8d5d06_activity.pkl create mode 100644 backend/instance/sessions/dafde1a571545610eb63d79e4929482d_activity.pkl create mode 100644 backend/instance/sessions/db61abfeaf049216edd2e03c663243d9_activity.pkl create mode 100644 backend/instance/sessions/dba0472e15d538660eec0bab65e87e7c_activity.pkl create mode 100644 backend/instance/sessions/dca9b1b289a13451042b80aabebf6ebf_activity.pkl create mode 100644 backend/instance/sessions/dd555a8659c2af8f8357ba812066a052_activity.pkl create mode 100644 backend/instance/sessions/dddc9511911d47a79de2d0e637cdad63_activity.pkl create mode 100644 backend/instance/sessions/e3c7d6721ee1ef7d3eabff0e1f9bbef2_activity.pkl create mode 100644 backend/instance/sessions/e6081dd95b037acf1490f306642ca4fa_activity.pkl create mode 100644 backend/instance/sessions/e689131f1c904f7d7499fff08384dc47_activity.pkl create mode 100644 backend/instance/sessions/e6e67b8eebc8ecefa5b9eec039f58a14_activity.pkl create mode 100644 backend/instance/sessions/e760a52b3073177fffe9e1e1182bc6a5_activity.pkl create mode 100644 backend/instance/sessions/ed6e8e754fdff796ed7454dc01bf2153_activity.pkl create mode 100644 backend/instance/sessions/ed9cd9a736d85e4a0161ce836645e81f_activity.pkl create mode 100644 backend/instance/sessions/ef859b7275bf11e1b70177e613b1bd21_activity.pkl create mode 100644 backend/instance/sessions/f31af677ed4072e0f1ce3995a8a3bffc_activity.pkl create mode 100644 backend/instance/sessions/f3a10a88b65e5b66540fe6a5a1e82639_activity.pkl create mode 100644 backend/instance/sessions/f4030e29df6cdb550485e9ccd7284258_activity.pkl create mode 100644 backend/instance/sessions/f5bfb3215c29fbc358850d764b7cb54a_activity.pkl create mode 100644 backend/instance/sessions/fe9a23e8c67b0d49e7a7f7c051f105e0_activity.pkl delete mode 100644 backend/static/css/navbar-improved.css create mode 100644 backend/static/css/navbar.css create mode 100644 backend/static/js/navbar.js create mode 100644 docs/CRUD_Funktionen_Analyse.md diff --git a/backend/backend/database/myp.db-shm b/backend/backend/database/myp.db-shm index 04bcc3c608dd5234f60c315f6467ee4e9c21cfa7..d392e1fdf1c3dbd49b2e94a2b949388f49128556 100644 GIT binary patch delta 154 zcmZo@U}|V!s+V}A%K!pQK+MR%AONDpfcTx(qQBKCH}Cv+tTeE3DL?Xsd41oFyH;s(PSN dU;r}rKN5fnPps$NI3>e%;sOpv#*Gu1tpGhSEOY<> diff --git a/backend/backend/database/myp.db-wal b/backend/backend/database/myp.db-wal index c01747d2a76d7d541c7d1eec3620dadd28dec92e..fa0ec05c30ca7cf8441485b1aa841aa61247c6f4 100644 GIT binary patch literal 4152 zcmXr7XKP~6eI&uaAiw|u{~aq0Y+TBZuqL<)HSSON3>0DlVlkNbRa5sXpWZyP;{^&b z^2;y)(I^-Vfzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R7!83D83K)ojM5C&;*G58 z;+&2QAP5Aaf}EVv9Gr|Ci7C06c@DX$Maiitsl~cUsd-g;$@#fpVHKk!6+0M!{$ZjE2By2#kinXb6mkz-S1JhQMeDjE2By2#kinXb6mk0M$c4 zg@r}jR=Bh{wWzqbFekGlH9oPlBtJ7RCAA_REE;cUs9>nVOh}axP?Z`JP?b1XS7r)K hJBXW?n421(nwyxJ15~A8$i>Ja&cI(>l2}q~2mohaL|Fg; diff --git a/backend/instance/sessions/0076c2d77203872ea83bc5ab7795fa35_activity.pkl b/backend/instance/sessions/0076c2d77203872ea83bc5ab7795fa35_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..4cccc9430560098073c690798206226f35365442 GIT binary patch literal 60 zcmZo*nQF)Y0kulqmv LnVXtVDb@o3@i-7G literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/01fd0a267da7fced0d15d11df01e73a9_activity.pkl b/backend/instance/sessions/01fd0a267da7fced0d15d11df01e73a9_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..4bb9cac9bfc44c1717e1d0293cd98cca75acf5cc GIT binary patch literal 60 zcmZo*nQF)Y0kulv6@ L7@8YRDb@o3@oNw* literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/0289585ce530eab246dfc2eee71ee9fa_activity.pkl b/backend/instance/sessions/0289585ce530eab246dfc2eee71ee9fa_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..5e5afa628aaa8f94f3cc547edae431af079a24e3 GIT binary patch literal 60 zcmZo*nQF)Y0kulv9F LSXdfODb@o3@lX&g literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/07ece299c680a0c3ffeed8e8e53175f6_activity.pkl b/backend/instance/sessions/07ece299c680a0c3ffeed8e8e53175f6_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..a0e15d8d056eb174d18ef5afdbdd0e6da279ec7b GIT binary patch literal 60 zcmZo*nQF)Y0kulqnX LS{fNnDb@o3@iq`B literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/09b4cd011db6a6376a376d21f83850e8_activity.pkl b/backend/instance/sessions/09b4cd011db6a6376a376d21f83850e8_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..5cbe31f86790681213c21e0e8fee12a2ca0885cb GIT binary patch literal 60 zcmZo*nQF)Y0kuU>PDb@o3@i!19 literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/0a2c18c991072ebfabfa3234ad45a89c_activity.pkl b/backend/instance/sessions/0a2c18c991072ebfabfa3234ad45a89c_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..fff9aa70c0b540ac6368962f368a5849bfa8cac1 GIT binary patch literal 60 zcmZo*nQF)Y0kulqpw L7@8SPDb@o3@a_;E literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/10584cd50db07e432f10bb509a8fb089_activity.pkl b/backend/instance/sessions/10584cd50db07e432f10bb509a8fb089_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..1859d3fc3d21126f0a24d52270aaca8f04fdd9c3 GIT binary patch literal 60 zcmZo*nQF)Y0kulqmt L8k-nQDb@o3@bC~F literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/1558367c2b45bdfcaaa1ecc875cad579_activity.pkl b/backend/instance/sessions/1558367c2b45bdfcaaa1ecc875cad579_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..8bec4d19275a550910d0b4021b9740c45caad820 GIT binary patch literal 60 zcmZo*nQF)Y0kuls=a L8d;i7Db@o3@kS6V literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/1633d3ae677292b3755a2a87f85963e8_activity.pkl b/backend/instance/sessions/1633d3ae677292b3755a2a87f85963e8_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..9bb9d8252eb6cb6234e93f6dff5c1eab9d27a677 GIT binary patch literal 60 zcmZo*nQF)Y0kulvCF Ln;08TDb@o3@e&Xs literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/1f71f2c5823091f63828027b7b009245_activity.pkl b/backend/instance/sessions/1f71f2c5823091f63828027b7b009245_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..2e1eba8af4d4950adb3ec1f3b78eaf8a1e8a39a3 GIT binary patch literal 60 zcmZo*nQF)Y0kuKT}r L8(J7mDb@o3@jehK literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/29dd53ca02fd357b63bb9865cdb45866_activity.pkl b/backend/instance/sessions/29dd53ca02fd357b63bb9865cdb45866_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..99fdb44a569bff9457055bace5263ad8e389da7c GIT binary patch literal 60 zcmZo*nQF)Y0kulvDx LnH!i+Db@o3@k$UY literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/31c9218bc98006d09f34bf3be314ce6b_activity.pkl b/backend/instance/sessions/31c9218bc98006d09f34bf3be314ce6b_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..eaf6e549e64d0bd28ac82ca950b1945365314412 GIT binary patch literal 60 zcmZo*nQF)Y0ku4 Jp~aM9Jpl1=5HA1# literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/3bac4a7ed310bbdb8e86381d3b95052a_activity.pkl b/backend/instance/sessions/3bac4a7ed310bbdb8e86381d3b95052a_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..77f64a1820ddd4af0392744471349e6ff68f54e0 GIT binary patch literal 60 zcmZo*nQF)Y0kuls>@ L8W@^PDb@o3@gfi; literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/40c86f5c0754a9f770be56e6fecfdbac_activity.pkl b/backend/instance/sessions/40c86f5c0754a9f770be56e6fecfdbac_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..3d3e62be6f7173a0d092ee11b0202dd7b8cf3f97 GIT binary patch literal 60 zcmZo*nQF)Y0kuL*PDb@o3@oNw( literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/40f992fe82db725c61ef686e5ec70a25_activity.pkl b/backend/instance/sessions/40f992fe82db725c61ef686e5ec70a25_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..4b32ee61cd4c6909a4a57a42465852146f3a70cf GIT binary patch literal 60 zcmZo*nQF)Y0kusgvu Lm>Zi;Db@o3@y-xA literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/52074ae753d98f20d5cf7ace84a23114_activity.pkl b/backend/instance/sessions/52074ae753d98f20d5cf7ace84a23114_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..30374c02bf31af58bac428bb018fccfbedbafa92 GIT binary patch literal 60 zcmZo*nQF)Y0kulqpw LnwVNlDb@o3@fr{( literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/53cbde708ffa13f9bac1951192884cb5_activity.pkl b/backend/instance/sessions/53cbde708ffa13f9bac1951192884cb5_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..18a7d3bd1204d8a7f247bfc010d33a88d1b47d67 GIT binary patch literal 60 zcmZo*nQF)Y0kuKT|C LnVK3-Db@o3@hA`_ literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/56d844dba11a8745c5043db57eb73dec_activity.pkl b/backend/instance/sessions/56d844dba11a8745c5043db57eb73dec_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..9ca559d66e590e4512fef643f66fa2f475bdedee GIT binary patch literal 60 zcmZo*nQF)Y0kulvCG L8(5f4Db@o3@i!1E literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/58f94ada1c4ce45a61e0c718dbe1b71d_activity.pkl b/backend/instance/sessions/58f94ada1c4ce45a61e0c718dbe1b71d_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..4ce1adb00d26581ba9676c367c31545db45a620c GIT binary patch literal 60 zcmZo*nQF)Y0kulqqZ LnwyzVDb@o3@m&xx literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/6a4d7804cca287cdc6fcd20a24adf979_activity.pkl b/backend/instance/sessions/6a4d7804cca287cdc6fcd20a24adf979_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..699b45dac3754a54868f74baca98242eb8b397fa GIT binary patch literal 60 zcmZo*nQF)Y0kulqmv Lnpzl4Db@o3@fZ*! literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/80b5f91c348d6103652dcd58e8d9fca9_activity.pkl b/backend/instance/sessions/80b5f91c348d6103652dcd58e8d9fca9_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..939af9b0da60bde9ec61bb80ecb96d767a4f69fc GIT binary patch literal 60 zcmZo*nQF)Y0kuKPcC L8X1^QDb@o3@d6Ma literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/81dda495c7584093979aab7b5122f224_activity.pkl b/backend/instance/sessions/81dda495c7584093979aab7b5122f224_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..6cdbab56219ae1e5d7f2ad1ade02ea2174e22e14 GIT binary patch literal 60 zcmZo*nQF)Y0kuKPcC L8ycBSDb@o3@fZ*! literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/90f59b939adf3c6accdc2957c4f22558_activity.pkl b/backend/instance/sessions/90f59b939adf3c6accdc2957c4f22558_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..4999f175bf9eaac5453f490a03aa13ea735f1a43 GIT binary patch literal 60 zcmZo*nQF)Y0kulqms LnwnZnDb@o3@evRv literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/91b1a55573e44d2ff120e02884364d00_activity.pkl b/backend/instance/sessions/91b1a55573e44d2ff120e02884364d00_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..1a21f5ff4277b82002d0c26cc65874f66dc340ba GIT binary patch literal 60 zcmZo*nQF)Y0kulvC^ Lnwc3)Db@o3@mmlr literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/940337f9d694466b7d894f1e41b8898d_activity.pkl b/backend/instance/sessions/940337f9d694466b7d894f1e41b8898d_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..f33aab674cfa109d41a14fa968ab6fa27dddd6b9 GIT binary patch literal 60 zcmZo*nQF)Y0kulv7v LT38xQDb@o3@nH}! literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/9558306d914512948e131dd08aead0b4_activity.pkl b/backend/instance/sessions/9558306d914512948e131dd08aead0b4_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..97eab0936ecdd5c886b5e78250affb6f93ba52e3 GIT binary patch literal 60 zcmZo*nQF)Y0kulvDv LnVVQnDb@o3@n#S* literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/95b049ddccf2fc5ec61aeb3c2a58996e_activity.pkl b/backend/instance/sessions/95b049ddccf2fc5ec61aeb3c2a58996e_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..3e391d28c1e867a6f764b22e4a4d5931e5bb98ce GIT binary patch literal 60 zcmZo*nQF)Y0kulvDu LTAEl+Db@o3@mmlv literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/a473e3ce8f1eaf3757e9026e68b675a2_activity.pkl b/backend/instance/sessions/a473e3ce8f1eaf3757e9026e68b675a2_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..578dc5c417a438204fa6634beaec12b579671bfc GIT binary patch literal 60 zcmZo*nQF)Y0kulqoC L85o#MDb@o3@a+&C literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/a989ffe43b4be3e8796c0979c202c9b4_activity.pkl b/backend/instance/sessions/a989ffe43b4be3e8796c0979c202c9b4_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..ee20feca14091f7e47b23d99df516e30432313e9 GIT binary patch literal 60 zcmZo*nQF)Y0kulvC_ LS{j&7Db@o3@naA$ literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/aad446db8a41d0b505a88cb285948959_activity.pkl b/backend/instance/sessions/aad446db8a41d0b505a88cb285948959_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..8d8e5a13e1dcaac38d97abc5e8c49159691b7b32 GIT binary patch literal 60 zcmZo*nQF)Y0kuKPbX Lm>U{SDb@o3@hT7{ literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/acd406857a5255d98e214123cdf3ede6_activity.pkl b/backend/instance/sessions/acd406857a5255d98e214123cdf3ede6_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..0cc7fa3c5285b7cc57e39e91a8efd7b7306fc38c GIT binary patch literal 60 zcmZo*nQF)Y0kulqpw Lm>HW+Db@o3@d*$k literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/adf5acb2815a7bb30c542c302c57223e_activity.pkl b/backend/instance/sessions/adf5acb2815a7bb30c542c302c57223e_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..38a4996c461c4cafa4f63abbd15c1f151b27e5e9 GIT binary patch literal 60 zcmZo*nQF)Y0ku LSz4G*Db@o3@vRU! literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/c2cd3db22fe4dd9c6313ef1e8b1bef77_activity.pkl b/backend/instance/sessions/c2cd3db22fe4dd9c6313ef1e8b1bef77_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..7951ed5a7f16f1cf1e1539ebca1a6abbd232f0cc GIT binary patch literal 60 zcmZo*nQF)Y0kulqqZ LT3T36Db@o3@p}+A literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/c34849e6374e8b180565047ce7f7d7cc_activity.pkl b/backend/instance/sessions/c34849e6374e8b180565047ce7f7d7cc_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..2838f7ad83ef522202bc956ff116ed27e5c0aca3 GIT binary patch literal 60 zcmZo*nQF)Y0kulvDx LSehD5Db@o3@l_Bl literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/cd2f3ba28e73ea5f7eb93b15f264724a_activity.pkl b/backend/instance/sessions/cd2f3ba28e73ea5f7eb93b15f264724a_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..d13e0d9b44b75176e117c4cf8526b9c38de1f2c7 GIT binary patch literal 60 zcmZo*nQF)Y0kulqnX L8XFl;Db@o3@fr{$ literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/d851b474e35ffa2b9517500e3a8d5d06_activity.pkl b/backend/instance/sessions/d851b474e35ffa2b9517500e3a8d5d06_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..f068788a60a39c9a54dd07a18ed3f046aae47720 GIT binary patch literal 60 zcmZo*nQF)Y0kuKPcC Lni?8RDb@o3@dXec literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/dafde1a571545610eb63d79e4929482d_activity.pkl b/backend/instance/sessions/dafde1a571545610eb63d79e4929482d_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..a10b4313ef2522de84ca1438339a62a77d8c3363 GIT binary patch literal 60 zcmZo*nQF)Y0ku L8<`kSDb@o3@oo?; literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/dca9b1b289a13451042b80aabebf6ebf_activity.pkl b/backend/instance/sessions/dca9b1b289a13451042b80aabebf6ebf_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..96281336a4774e6d80b5b8b8fa230e69f86943c9 GIT binary patch literal 60 zcmZo*nQF)Y0kulv6D LTAGlqpw Ln3x+)Db@o3@dXef literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/ed6e8e754fdff796ed7454dc01bf2153_activity.pkl b/backend/instance/sessions/ed6e8e754fdff796ed7454dc01bf2153_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..0c62b9f78b2bc40854d6870277cc58cf44685d47 GIT binary patch literal 60 zcmZo*nQF)Y0kulv7u Lo0%FJ literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/ef859b7275bf11e1b70177e613b1bd21_activity.pkl b/backend/instance/sessions/ef859b7275bf11e1b70177e613b1bd21_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..ec6a855660d3f37920dda103a32c28894456ce68 GIT binary patch literal 60 zcmZo*nQF)Y0ku-Db@o3@!AkU literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/f5bfb3215c29fbc358850d764b7cb54a_activity.pkl b/backend/instance/sessions/f5bfb3215c29fbc358850d764b7cb54a_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..e66ce51d3f0b5c23f8b4208e400cb78fe97ea034 GIT binary patch literal 60 zcmZo*nQF)Y0kulv7u LnHw8SDb@o3@mCNk literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/fe9a23e8c67b0d49e7a7f7c051f105e0_activity.pkl b/backend/instance/sessions/fe9a23e8c67b0d49e7a7f7c051f105e0_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..c631754b70b3d752c6e761abdef4922b95b46ee2 GIT binary patch literal 60 zcmZo*nQF)Y0ku found ('C:\\Users\\TTOMCZA.EMEA\\Dev\\Projektarbeit-MYP\\backend\\templates\\dashboard.html') +2025-06-12 11:00:49 - [app] app - [DEBUG] DEBUG - Request: GET /api/printers +2025-06-12 11:00:49 - [app] app - [INFO] INFO - ✅ API: 0 Drucker abgerufen +2025-06-12 11:00:49 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-12 11:00:49 - [app] app - [DEBUG] DEBUG - Request: GET /api/printers +2025-06-12 11:00:49 - [app] app - [INFO] INFO - ✅ API: 0 Drucker abgerufen +2025-06-12 11:00:49 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-12 11:00:49 - [app] app - [INFO] INFO - ✅ API: 0 Drucker abgerufen +2025-06-12 11:00:49 - [app] app - [DEBUG] DEBUG - Request: GET /api/printers +2025-06-12 11:00:49 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-12 11:00:49 - [app] app - [INFO] INFO - ✅ API: 0 Drucker abgerufen +2025-06-12 11:00:50 - [app] app - [INFO] INFO - ✅ API: 0 Drucker abgerufen +2025-06-12 11:00:50 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-12 11:00:50 - [app] app - [INFO] INFO - Locating template 'base.html': + 1: trying loader of application '__main__' + class: jinja2.loaders.FileSystemLoader + encoding: 'utf-8' + followlinks: False + searchpath: + - C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\templates + -> found ('C:\\Users\\TTOMCZA.EMEA\\Dev\\Projektarbeit-MYP\\backend\\templates\\base.html') +2025-06-12 11:00:50 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-12 11:00:50 - [app] app - [DEBUG] DEBUG - Request: GET /api/printers +2025-06-12 11:00:50 - [app] app - [DEBUG] DEBUG - Request: GET /api/printers +2025-06-12 11:00:50 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-12 11:00:50 - [app] app - [INFO] INFO - ✅ API: 0 Drucker abgerufen +2025-06-12 11:00:50 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-12 11:00:50 - [app] app - [DEBUG] DEBUG - Request: GET /api/printers +2025-06-12 11:00:50 - [app] app - [DEBUG] DEBUG - Response: 302 +2025-06-12 11:00:50 - [app] app - [DEBUG] DEBUG - Request: GET /api/printers +2025-06-12 11:00:50 - [app] app - [INFO] INFO - ✅ API: 0 Drucker abgerufen +2025-06-12 11:00:50 - [app] app - [DEBUG] DEBUG - Request: GET /api/printers +2025-06-12 11:00:50 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-12 11:00:50 - [app] app - [DEBUG] DEBUG - Request: GET /api/printers +2025-06-12 11:00:50 - [app] app - [INFO] INFO - ✅ API: 0 Drucker abgerufen +2025-06-12 11:00:50 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-12 11:00:50 - [app] app - [INFO] INFO - ✅ API: 0 Drucker abgerufen +2025-06-12 11:00:50 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-12 11:00:50 - [app] app - [INFO] INFO - ✅ API: 0 Drucker abgerufen +2025-06-12 11:00:50 - [app] app - [DEBUG] DEBUG - Request: GET /api/printers +2025-06-12 11:00:50 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-12 11:00:50 - [app] app - [DEBUG] DEBUG - Request: GET /api/printers +2025-06-12 11:00:50 - [app] app - [INFO] INFO - ✅ API: 0 Drucker abgerufen +2025-06-12 11:00:50 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-12 11:00:50 - [app] app - [DEBUG] DEBUG - Request: GET /api/printers +2025-06-12 11:00:50 - [app] app - [INFO] INFO - ✅ API: 0 Drucker abgerufen +2025-06-12 11:00:50 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-12 11:00:50 - [app] app - [INFO] INFO - ✅ API: 0 Drucker abgerufen +2025-06-12 11:00:50 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-12 11:00:50 - [app] app - [INFO] INFO - ✅ API: 0 Drucker abgerufen +2025-06-12 11:00:50 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-12 11:00:51 - [app] app - [DEBUG] DEBUG - Request: GET /api/printers +2025-06-12 11:00:51 - [app] app - [DEBUG] DEBUG - Request: GET /api/printers +2025-06-12 11:00:51 - [app] app - [DEBUG] DEBUG - Request: GET /api/printers +2025-06-12 11:00:51 - [app] app - [DEBUG] DEBUG - Request: GET /api/printers +2025-06-12 11:00:51 - [app] app - [DEBUG] DEBUG - Response: 302 +2025-06-12 11:00:51 - [app] app - [ERROR] ERROR - Fehler beim Laden des Benutzers 1: (sqlite3.InterfaceError) bad parameter or other API misuse +[SQL: SELECT users.id AS users_id, users.email AS users_email, users.username AS users_username, users.password_hash AS users_password_hash, users.name AS users_name, users.role AS users_role, users.active AS users_active, users.created_at AS users_created_at, users.last_login AS users_last_login, users.updated_at AS users_updated_at, users.settings AS users_settings, users.last_activity AS users_last_activity, users.department AS users_department, users.position AS users_position, users.phone AS users_phone, users.bio AS users_bio, users.theme_preference AS users_theme_preference, users.language_preference AS users_language_preference, users.email_notifications AS users_email_notifications, users.browser_notifications AS users_browser_notifications, users.dashboard_layout AS users_dashboard_layout, users.compact_mode AS users_compact_mode, users.show_completed_jobs AS users_show_completed_jobs, users.auto_refresh_interval AS users_auto_refresh_interval, users.auto_logout_timeout AS users_auto_logout_timeout +FROM users +WHERE users.id = ? + LIMIT ? OFFSET ?] +[parameters: (1, 1, 0)] +(Background on this error at: https://sqlalche.me/e/20/rvf5) +2025-06-12 11:00:51 - [app] app - [INFO] INFO - ✅ API: 0 Drucker abgerufen +2025-06-12 11:00:51 - [app] app - [INFO] INFO - ✅ API: 0 Drucker abgerufen +2025-06-12 11:00:51 - [app] app - [DEBUG] DEBUG - Request: GET /api/printers +2025-06-12 11:00:51 - [app] app - [DEBUG] DEBUG - Response: 302 +2025-06-12 11:00:51 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-12 11:00:51 - [app] app - [DEBUG] DEBUG - Request: GET /api/printers +2025-06-12 11:00:51 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-12 11:00:51 - [app] app - [DEBUG] DEBUG - Request: GET /api/printers +2025-06-12 11:00:51 - [app] app - [INFO] INFO - ✅ API: 0 Drucker abgerufen +2025-06-12 11:00:51 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-12 11:00:51 - [app] app - [INFO] INFO - ✅ API: 0 Drucker abgerufen +2025-06-12 11:00:51 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-12 11:00:51 - [app] app - [DEBUG] DEBUG - Request: GET /api/printers +2025-06-12 11:00:51 - [app] app - [DEBUG] DEBUG - Request: GET /api/printers +2025-06-12 11:00:51 - [app] app - [DEBUG] DEBUG - Request: GET /api/printers +2025-06-12 11:00:51 - [app] app - [INFO] INFO - ✅ API: 0 Drucker abgerufen +2025-06-12 11:00:51 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-12 11:00:51 - [app] app - [INFO] INFO - ✅ API: 0 Drucker abgerufen +2025-06-12 11:00:51 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-12 11:00:51 - [app] app - [INFO] INFO - ✅ API: 0 Drucker abgerufen +2025-06-12 11:00:51 - [app] app - [INFO] INFO - ✅ API: 0 Drucker abgerufen +2025-06-12 11:00:51 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-12 11:00:51 - [app] app - [DEBUG] DEBUG - Request: GET /api/printers +2025-06-12 11:00:51 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-12 11:00:51 - [app] app - [DEBUG] DEBUG - Request: GET /api/printers +2025-06-12 11:00:51 - [app] app - [DEBUG] DEBUG - Request: GET /api/printers +2025-06-12 11:00:51 - [app] app - [INFO] INFO - ✅ API: 0 Drucker abgerufen +2025-06-12 11:00:51 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-12 11:00:51 - [app] app - [DEBUG] DEBUG - Request: GET /api/printers +2025-06-12 11:00:51 - [app] app - [INFO] INFO - ✅ API: 0 Drucker abgerufen +2025-06-12 11:00:51 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-12 11:00:51 - [app] app - [INFO] INFO - ✅ API: 0 Drucker abgerufen +2025-06-12 11:00:51 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-12 11:00:51 - [app] app - [DEBUG] DEBUG - Request: GET /api/printers +2025-06-12 11:00:51 - [app] app - [INFO] INFO - ✅ API: 0 Drucker abgerufen +2025-06-12 11:00:51 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-12 11:00:51 - [app] app - [DEBUG] DEBUG - Request: GET /api/printers +2025-06-12 11:00:51 - [app] app - [DEBUG] DEBUG - Request: GET /api/printers +2025-06-12 11:00:51 - [app] app - [DEBUG] DEBUG - Request: GET /api/printers +2025-06-12 11:00:51 - [app] app - [INFO] INFO - ✅ API: 0 Drucker abgerufen +2025-06-12 11:00:51 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-12 11:00:51 - [app] app - [INFO] INFO - ✅ API: 0 Drucker abgerufen +2025-06-12 11:00:51 - [app] app - [INFO] INFO - ✅ API: 0 Drucker abgerufen +2025-06-12 11:00:51 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-12 11:00:51 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-12 11:00:51 - [app] app - [INFO] INFO - ✅ API: 0 Drucker abgerufen +2025-06-12 11:00:51 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-12 11:00:51 - [app] app - [DEBUG] DEBUG - Request: GET /api/printers +2025-06-12 11:00:51 - [app] app - [DEBUG] DEBUG - Request: GET /api/printers +2025-06-12 11:00:51 - [app] app - [INFO] INFO - ✅ API: 0 Drucker abgerufen +2025-06-12 11:00:51 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-12 11:00:51 - [app] app - [DEBUG] DEBUG - Request: GET /api/printers +2025-06-12 11:00:51 - [app] app - [DEBUG] DEBUG - Request: GET /api/printers +2025-06-12 11:00:51 - [app] app - [INFO] INFO - ✅ API: 0 Drucker abgerufen +2025-06-12 11:00:51 - [app] app - [DEBUG] DEBUG - Request: GET /api/printers +2025-06-12 11:00:51 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-12 11:00:51 - [app] app - [DEBUG] DEBUG - Request: GET /api/printers +2025-06-12 11:00:51 - [app] app - [INFO] INFO - ✅ API: 0 Drucker abgerufen +2025-06-12 11:00:51 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-12 11:00:51 - [app] app - [INFO] INFO - ✅ API: 0 Drucker abgerufen +2025-06-12 11:00:51 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-12 11:00:51 - [app] app - [INFO] INFO - ✅ API: 0 Drucker abgerufen +2025-06-12 11:00:51 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-12 11:00:51 - [app] app - [DEBUG] DEBUG - Request: GET /api/printers +2025-06-12 11:00:51 - [app] app - [DEBUG] DEBUG - Request: GET /api/printers +2025-06-12 11:00:51 - [app] app - [INFO] INFO - ✅ API: 0 Drucker abgerufen +2025-06-12 11:00:51 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-12 11:00:51 - [app] app - [INFO] INFO - ✅ API: 0 Drucker abgerufen +2025-06-12 11:00:51 - [app] app - [DEBUG] DEBUG - Request: GET /api/printers +2025-06-12 11:00:51 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-12 11:00:51 - [app] app - [DEBUG] DEBUG - Request: GET /api/printers +2025-06-12 11:00:51 - [app] app - [INFO] INFO - ✅ API: 0 Drucker abgerufen +2025-06-12 11:00:51 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-12 11:00:51 - [app] app - [INFO] INFO - ✅ API: 0 Drucker abgerufen +2025-06-12 11:00:51 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-12 11:00:51 - [app] app - [INFO] INFO - ✅ API: 0 Drucker abgerufen +2025-06-12 11:00:51 - [app] app - [DEBUG] DEBUG - Request: GET /api/printers +2025-06-12 11:00:51 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-12 11:00:51 - [app] app - [INFO] INFO - ✅ API: 0 Drucker abgerufen +2025-06-12 11:00:51 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-12 11:00:51 - [app] app - [DEBUG] DEBUG - Request: GET /api/printers +2025-06-12 11:00:51 - [app] app - [INFO] INFO - ✅ API: 0 Drucker abgerufen +2025-06-12 11:00:51 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-12 11:00:51 - [app] app - [ERROR] ERROR - Fehler beim Laden des Benutzers 1: Invalid isoformat string: '' +2025-06-12 11:00:51 - [app] app - [DEBUG] DEBUG - Request: GET /api/notifications +2025-06-12 11:00:51 - [app] app - [DEBUG] DEBUG - Request: GET /api/printers/monitor/live-status +2025-06-12 11:00:51 - [app] app - [DEBUG] DEBUG - Request: GET /api/session/status +2025-06-12 11:00:51 - [app] app - [DEBUG] DEBUG - Request: GET /api/user/settings +2025-06-12 11:00:51 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-12 11:00:51 - [app] app - [DEBUG] DEBUG - Response: 500 +2025-06-12 11:00:51 - [app] app - [DEBUG] DEBUG - Response: 500 +2025-06-12 11:00:51 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-12 11:01:11 - [app] app - [DEBUG] DEBUG - Request: POST /api/dashboard/refresh +2025-06-12 11:01:11 - [app] app - [DEBUG] DEBUG - Request: POST /api/dashboard/refresh +2025-06-12 11:01:11 - [app] app - [DEBUG] DEBUG - Request: GET /api/notifications +2025-06-12 11:01:11 - [app] app - [INFO] INFO - Not Found (404): http://127.0.0.1:5000/api/dashboard/refresh +2025-06-12 11:01:11 - [app] app - [DEBUG] DEBUG - Response: 404 +2025-06-12 11:01:11 - [app] app - [INFO] INFO - Not Found (404): http://127.0.0.1:5000/api/dashboard/refresh +2025-06-12 11:01:11 - [app] app - [DEBUG] DEBUG - Response: 404 +2025-06-12 11:01:11 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-12 11:01:11 - [app] app - [DEBUG] DEBUG - Request: GET /api/printers/monitor/live-status +2025-06-12 11:01:11 - [app] app - [DEBUG] DEBUG - Response: 500 +2025-06-12 11:01:13 - [app] app - [DEBUG] DEBUG - Request: POST /api/dashboard/refresh +2025-06-12 11:01:13 - [app] app - [DEBUG] DEBUG - Request: POST /api/dashboard/refresh +2025-06-12 11:01:13 - [app] app - [DEBUG] DEBUG - Request: POST /api/dashboard/refresh +2025-06-12 11:01:13 - [app] app - [INFO] INFO - Not Found (404): http://127.0.0.1:5000/api/dashboard/refresh +2025-06-12 11:01:13 - [app] app - [DEBUG] DEBUG - Response: 404 +2025-06-12 11:01:13 - [app] app - [INFO] INFO - Not Found (404): http://127.0.0.1:5000/api/dashboard/refresh +2025-06-12 11:01:13 - [app] app - [INFO] INFO - Not Found (404): http://127.0.0.1:5000/api/dashboard/refresh +2025-06-12 11:01:13 - [app] app - [DEBUG] DEBUG - Response: 404 +2025-06-12 11:01:13 - [app] app - [DEBUG] DEBUG - Response: 404 +2025-06-12 11:01:15 - [app] app - [DEBUG] DEBUG - Request: GET /dashboard +2025-06-12 11:01:15 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-12 11:01:16 - [app] app - [DEBUG] DEBUG - Request: GET /api/notifications +2025-06-12 11:01:16 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-12 11:01:16 - [app] app - [DEBUG] DEBUG - Request: GET /api/printers/monitor/live-status +2025-06-12 11:01:16 - [app] app - [DEBUG] DEBUG - Request: GET /api/session/status +2025-06-12 11:01:16 - [app] app - [DEBUG] DEBUG - Request: GET /api/user/settings +2025-06-12 11:01:16 - [app] app - [DEBUG] DEBUG - Response: 302 +2025-06-12 11:01:16 - [app] app - [DEBUG] DEBUG - Response: 500 +2025-06-12 11:01:16 - [app] app - [ERROR] ERROR - Fehler beim Laden des Benutzers 1: (sqlite3.InterfaceError) bad parameter or other API misuse +[SQL: SELECT users.id AS users_id, users.email AS users_email, users.username AS users_username, users.password_hash AS users_password_hash, users.name AS users_name, users.role AS users_role, users.active AS users_active, users.created_at AS users_created_at, users.last_login AS users_last_login, users.updated_at AS users_updated_at, users.settings AS users_settings, users.last_activity AS users_last_activity, users.department AS users_department, users.position AS users_position, users.phone AS users_phone, users.bio AS users_bio, users.theme_preference AS users_theme_preference, users.language_preference AS users_language_preference, users.email_notifications AS users_email_notifications, users.browser_notifications AS users_browser_notifications, users.dashboard_layout AS users_dashboard_layout, users.compact_mode AS users_compact_mode, users.show_completed_jobs AS users_show_completed_jobs, users.auto_refresh_interval AS users_auto_refresh_interval, users.auto_logout_timeout AS users_auto_logout_timeout +FROM users +WHERE users.id = ? + LIMIT ? OFFSET ?] +[parameters: (1, 1, 0)] +(Background on this error at: https://sqlalche.me/e/20/rvf5) +2025-06-12 11:01:16 - [app] app - [DEBUG] DEBUG - Response: 302 +2025-06-12 11:01:16 - [app] app - [DEBUG] DEBUG - Request: GET /auth/login +2025-06-12 11:01:16 - [app] app - [DEBUG] DEBUG - Request: GET /auth/login +2025-06-12 11:01:16 - [app] app - [DEBUG] DEBUG - Response: 302 +2025-06-12 11:01:16 - [app] app - [DEBUG] DEBUG - Response: 302 +2025-06-12 11:01:16 - [app] app - [DEBUG] DEBUG - Request: GET / +2025-06-12 11:01:16 - [app] app - [DEBUG] DEBUG - Response: 302 +2025-06-12 11:01:16 - [app] app - [DEBUG] DEBUG - Request: GET / +2025-06-12 11:01:16 - [app] app - [DEBUG] DEBUG - Request: GET /dashboard +2025-06-12 11:01:16 - [app] app - [DEBUG] DEBUG - Response: 302 +2025-06-12 11:01:16 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-12 11:01:16 - [app] app - [DEBUG] DEBUG - Request: GET /dashboard +2025-06-12 11:01:16 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-12 11:01:26 - [app] app - [DEBUG] DEBUG - Request: GET /printers +2025-06-12 11:01:26 - [app] app - [INFO] INFO - Locating template 'printers.html': + 1: trying loader of application '__main__' + class: jinja2.loaders.FileSystemLoader + encoding: 'utf-8' + followlinks: False + searchpath: + - C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\templates + -> found ('C:\\Users\\TTOMCZA.EMEA\\Dev\\Projektarbeit-MYP\\backend\\templates\\printers.html') +2025-06-12 11:01:26 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-12 11:01:26 - [app] app - [ERROR] ERROR - Fehler beim Laden des Benutzers 1: (sqlite3.InterfaceError) bad parameter or other API misuse +[SQL: SELECT users.id AS users_id, users.email AS users_email, users.username AS users_username, users.password_hash AS users_password_hash, users.name AS users_name, users.role AS users_role, users.active AS users_active, users.created_at AS users_created_at, users.last_login AS users_last_login, users.updated_at AS users_updated_at, users.settings AS users_settings, users.last_activity AS users_last_activity, users.department AS users_department, users.position AS users_position, users.phone AS users_phone, users.bio AS users_bio, users.theme_preference AS users_theme_preference, users.language_preference AS users_language_preference, users.email_notifications AS users_email_notifications, users.browser_notifications AS users_browser_notifications, users.dashboard_layout AS users_dashboard_layout, users.compact_mode AS users_compact_mode, users.show_completed_jobs AS users_show_completed_jobs, users.auto_refresh_interval AS users_auto_refresh_interval, users.auto_logout_timeout AS users_auto_logout_timeout +FROM users +WHERE users.id = ? + LIMIT ? OFFSET ?] +[parameters: (1, 1, 0)] +(Background on this error at: https://sqlalche.me/e/20/rvf5) +2025-06-12 11:01:26 - [app] app - [DEBUG] DEBUG - Request: GET /api/printers +2025-06-12 11:01:26 - [app] app - [INFO] INFO - ✅ API: 0 Drucker abgerufen +2025-06-12 11:01:26 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-12 11:01:26 - [app] app - [DEBUG] DEBUG - Request: GET /api/notifications +2025-06-12 11:01:26 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-12 11:01:26 - [app] app - [DEBUG] DEBUG - Request: GET /api/printers/monitor/live-status +2025-06-12 11:01:26 - [app] app - [DEBUG] DEBUG - Request: GET /api/session/status +2025-06-12 11:01:26 - [app] app - [DEBUG] DEBUG - Response: 500 +2025-06-12 11:01:26 - [app] app - [DEBUG] DEBUG - Request: GET /api/user/settings +2025-06-12 11:01:26 - [app] app - [DEBUG] DEBUG - Response: 500 +2025-06-12 11:01:26 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-12 11:01:41 - [app] app - [DEBUG] DEBUG - Request: GET /tapo/ +2025-06-12 11:01:41 - [app] app - [INFO] INFO - Locating template 'tapo_control.html': + 1: trying loader of application '__main__' + class: jinja2.loaders.FileSystemLoader + encoding: 'utf-8' + followlinks: False + searchpath: + - C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\templates + -> found ('C:\\Users\\TTOMCZA.EMEA\\Dev\\Projektarbeit-MYP\\backend\\templates\\tapo_control.html') +2025-06-12 11:01:41 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-12 11:01:42 - [app] app - [DEBUG] DEBUG - Request: GET /api/notifications +2025-06-12 11:01:42 - [app] app - [DEBUG] DEBUG - Request: GET /api/session/status +2025-06-12 11:01:42 - [app] app - [DEBUG] DEBUG - Request: GET /api/user/settings +2025-06-12 11:01:42 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-12 11:01:42 - [app] app - [DEBUG] DEBUG - Response: 500 +2025-06-12 11:01:42 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-12 11:01:44 - [app] app - [WARNING] WARNING - CSRF-Fehler: The CSRF token is missing. +2025-06-12 11:01:44 - [app] app - [DEBUG] DEBUG - Response: 400 +2025-06-12 11:01:44 - [app] app - [WARNING] WARNING - CSRF-Fehler: The CSRF token is missing. +2025-06-12 11:01:44 - [app] app - [DEBUG] DEBUG - Response: 400 +2025-06-12 11:01:46 - [app] app - [DEBUG] DEBUG - Request: GET /jobs +2025-06-12 11:01:46 - [app] app - [INFO] INFO - Locating template 'jobs.html': + 1: trying loader of application '__main__' + class: jinja2.loaders.FileSystemLoader + encoding: 'utf-8' + followlinks: False + searchpath: + - C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\templates + -> found ('C:\\Users\\TTOMCZA.EMEA\\Dev\\Projektarbeit-MYP\\backend\\templates\\jobs.html') +2025-06-12 11:01:46 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-12 11:01:46 - [app] app - [DEBUG] DEBUG - Request: GET /api/notifications +2025-06-12 11:01:46 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-12 11:01:46 - [app] app - [DEBUG] DEBUG - Request: GET /api/jobs +2025-06-12 11:01:46 - [app] app - [DEBUG] DEBUG - Request: GET /api/jobs +2025-06-12 11:01:46 - [app] app - [DEBUG] DEBUG - Request: GET /api/session/status +2025-06-12 11:01:46 - [app] app - [DEBUG] DEBUG - Request: GET /api/user/settings +2025-06-12 11:01:46 - [app] app - [DEBUG] DEBUG - Response: 500 +2025-06-12 11:01:46 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-12 11:01:46 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-12 11:01:46 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-12 11:01:46 - [app] app - [DEBUG] DEBUG - Request: GET /api/printers +2025-06-12 11:01:46 - [app] app - [INFO] INFO - ✅ API: 0 Drucker abgerufen +2025-06-12 11:01:46 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-12 11:01:51 - [app] app - [DEBUG] DEBUG - Request: GET /printers +2025-06-12 11:01:51 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-12 11:01:51 - [app] app - [DEBUG] DEBUG - Request: GET /api/printers +2025-06-12 11:01:51 - [app] app - [INFO] INFO - ✅ API: 0 Drucker abgerufen +2025-06-12 11:01:51 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-12 11:01:51 - [app] app - [DEBUG] DEBUG - Request: GET /api/notifications +2025-06-12 11:01:51 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-12 11:01:51 - [app] app - [DEBUG] DEBUG - Request: GET /api/printers/monitor/live-status +2025-06-12 11:01:51 - [app] app - [DEBUG] DEBUG - Request: GET /api/session/status +2025-06-12 11:01:51 - [app] app - [DEBUG] DEBUG - Request: GET /api/user/settings +2025-06-12 11:01:51 - [app] app - [DEBUG] DEBUG - Response: 500 +2025-06-12 11:01:51 - [app] app - [DEBUG] DEBUG - Response: 500 +2025-06-12 11:01:51 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-12 11:02:21 - [app] app - [DEBUG] DEBUG - Request: GET /api/printers/monitor/live-status +2025-06-12 11:02:21 - [app] app - [DEBUG] DEBUG - Response: 500 +2025-06-12 11:02:21 - [app] app - [DEBUG] DEBUG - Request: GET /api/notifications +2025-06-12 11:02:21 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-12 11:02:21 - [app] app - [DEBUG] DEBUG - Request: GET /api/printers/monitor/live-status +2025-06-12 11:02:21 - [app] app - [DEBUG] DEBUG - Response: 500 +2025-06-12 11:02:21 - [app] app - [DEBUG] DEBUG - Request: GET /api/printers/monitor/live-status +2025-06-12 11:02:21 - [app] app - [DEBUG] DEBUG - Request: GET /api/printers +2025-06-12 11:02:21 - [app] app - [DEBUG] DEBUG - Response: 500 +2025-06-12 11:02:21 - [app] app - [INFO] INFO - ✅ API: 0 Drucker abgerufen +2025-06-12 11:02:21 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-12 11:02:21 - [app] app - [DEBUG] DEBUG - Request: GET /api/printers +2025-06-12 11:02:21 - [app] app - [INFO] INFO - ✅ API: 0 Drucker abgerufen +2025-06-12 11:02:21 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-12 11:02:21 - [app] app - [DEBUG] DEBUG - Request: GET /api/printers +2025-06-12 11:02:21 - [app] app - [INFO] INFO - ✅ API: 0 Drucker abgerufen +2025-06-12 11:02:21 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-12 11:02:21 - [app] app - [DEBUG] DEBUG - Request: GET /api/printers +2025-06-12 11:02:21 - [app] app - [INFO] INFO - ✅ API: 0 Drucker abgerufen +2025-06-12 11:02:21 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-12 11:02:21 - [app] app - [DEBUG] DEBUG - Request: GET /api/printers +2025-06-12 11:02:21 - [app] app - [INFO] INFO - ✅ API: 0 Drucker abgerufen +2025-06-12 11:02:21 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-12 11:02:21 - [app] app - [DEBUG] DEBUG - Request: GET /api/printers +2025-06-12 11:02:21 - [app] app - [INFO] INFO - ✅ API: 0 Drucker abgerufen +2025-06-12 11:02:21 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-12 11:02:51 - [app] app - [DEBUG] DEBUG - Request: GET /api/printers/monitor/live-status +2025-06-12 11:02:51 - [app] app - [DEBUG] DEBUG - Response: 500 +2025-06-12 11:02:51 - [app] app - [DEBUG] DEBUG - Request: GET /api/printers +2025-06-12 11:02:51 - [app] app - [INFO] INFO - ✅ API: 0 Drucker abgerufen +2025-06-12 11:02:51 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-12 11:02:51 - [app] app - [DEBUG] DEBUG - Request: GET /api/printers +2025-06-12 11:02:51 - [app] app - [INFO] INFO - ✅ API: 0 Drucker abgerufen +2025-06-12 11:02:51 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-12 11:02:51 - [app] app - [DEBUG] DEBUG - Request: GET /api/printers +2025-06-12 11:02:51 - [app] app - [INFO] INFO - ✅ API: 0 Drucker abgerufen +2025-06-12 11:02:51 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-12 11:02:51 - [app] app - [DEBUG] DEBUG - Request: GET /api/printers +2025-06-12 11:02:51 - [app] app - [DEBUG] DEBUG - Request: GET /api/notifications +2025-06-12 11:02:51 - [app] app - [INFO] INFO - ✅ API: 0 Drucker abgerufen +2025-06-12 11:02:51 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-12 11:02:51 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-12 11:02:51 - [app] app - [DEBUG] DEBUG - Request: GET /api/printers/monitor/live-status +2025-06-12 11:02:51 - [app] app - [DEBUG] DEBUG - Response: 500 +2025-06-12 11:02:51 - [app] app - [DEBUG] DEBUG - Request: GET /api/printers +2025-06-12 11:02:51 - [app] app - [INFO] INFO - ✅ API: 0 Drucker abgerufen +2025-06-12 11:02:51 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-12 11:02:51 - [app] app - [DEBUG] DEBUG - Request: GET /api/printers +2025-06-12 11:02:51 - [app] app - [INFO] INFO - ✅ API: 0 Drucker abgerufen +2025-06-12 11:02:51 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-12 11:02:51 - [app] app - [DEBUG] DEBUG - Request: GET /api/printers +2025-06-12 11:02:51 - [app] app - [INFO] INFO - ✅ API: 0 Drucker abgerufen +2025-06-12 11:02:51 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-12 11:02:51 - [app] app - [DEBUG] DEBUG - Request: GET /api/printers +2025-06-12 11:02:51 - [app] app - [INFO] INFO - ✅ API: 0 Drucker abgerufen +2025-06-12 11:02:51 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-12 11:02:51 - [app] app - [DEBUG] DEBUG - Request: GET /api/printers +2025-06-12 11:02:51 - [app] app - [INFO] INFO - ✅ API: 0 Drucker abgerufen +2025-06-12 11:02:51 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-12 11:03:21 - [app] app - [DEBUG] DEBUG - Request: GET /api/printers/monitor/live-status +2025-06-12 11:03:21 - [app] app - [DEBUG] DEBUG - Response: 500 +2025-06-12 11:03:21 - [app] app - [DEBUG] DEBUG - Request: GET /api/printers +2025-06-12 11:03:21 - [app] app - [INFO] INFO - ✅ API: 0 Drucker abgerufen +2025-06-12 11:03:21 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-12 11:03:21 - [app] app - [DEBUG] DEBUG - Request: GET /api/printers +2025-06-12 11:03:21 - [app] app - [INFO] INFO - ✅ API: 0 Drucker abgerufen +2025-06-12 11:03:21 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-12 11:03:21 - [app] app - [DEBUG] DEBUG - Request: GET /api/printers +2025-06-12 11:03:21 - [app] app - [INFO] INFO - ✅ API: 0 Drucker abgerufen +2025-06-12 11:03:21 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-12 11:03:21 - [app] app - [DEBUG] DEBUG - Request: GET /api/printers +2025-06-12 11:03:21 - [app] app - [DEBUG] DEBUG - Request: GET /api/notifications +2025-06-12 11:03:21 - [app] app - [INFO] INFO - ✅ API: 0 Drucker abgerufen +2025-06-12 11:03:21 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-12 11:03:21 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-12 11:03:21 - [app] app - [DEBUG] DEBUG - Request: GET /api/printers/monitor/live-status +2025-06-12 11:03:21 - [app] app - [DEBUG] DEBUG - Request: GET /api/printers +2025-06-12 11:03:21 - [app] app - [DEBUG] DEBUG - Response: 500 +2025-06-12 11:03:21 - [app] app - [INFO] INFO - ✅ API: 0 Drucker abgerufen +2025-06-12 11:03:21 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-12 11:03:21 - [app] app - [DEBUG] DEBUG - Request: GET /api/printers +2025-06-12 11:03:21 - [app] app - [INFO] INFO - ✅ API: 0 Drucker abgerufen +2025-06-12 11:03:21 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-12 11:03:21 - [app] app - [DEBUG] DEBUG - Request: GET /api/printers +2025-06-12 11:03:21 - [app] app - [INFO] INFO - ✅ API: 0 Drucker abgerufen +2025-06-12 11:03:21 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-12 11:03:21 - [app] app - [DEBUG] DEBUG - Request: GET /api/printers +2025-06-12 11:03:21 - [app] app - [INFO] INFO - ✅ API: 0 Drucker abgerufen +2025-06-12 11:03:21 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-12 11:03:21 - [app] app - [DEBUG] DEBUG - Request: GET /api/printers +2025-06-12 11:03:21 - [app] app - [INFO] INFO - ✅ API: 0 Drucker abgerufen +2025-06-12 11:03:21 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-12 11:03:21 - [app] app - [DEBUG] DEBUG - Request: GET /api/printers +2025-06-12 11:03:21 - [app] app - [INFO] INFO - ✅ API: 0 Drucker abgerufen +2025-06-12 11:03:21 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-12 11:03:21 - [app] app - [DEBUG] DEBUG - Request: GET /api/printers +2025-06-12 11:03:21 - [app] app - [INFO] INFO - ✅ API: 0 Drucker abgerufen +2025-06-12 11:03:21 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-12 11:03:21 - [app] app - [DEBUG] DEBUG - Request: GET /api/printers +2025-06-12 11:03:21 - [app] app - [INFO] INFO - ✅ API: 0 Drucker abgerufen +2025-06-12 11:03:21 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-12 11:03:21 - [app] app - [DEBUG] DEBUG - Request: GET /api/printers +2025-06-12 11:03:21 - [app] app - [INFO] INFO - ✅ API: 0 Drucker abgerufen +2025-06-12 11:03:21 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-12 11:03:31 - [app] app - [DEBUG] DEBUG - Request: GET /tapo/ +2025-06-12 11:03:31 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-12 11:03:31 - [app] app - [DEBUG] DEBUG - Request: GET /api/notifications +2025-06-12 11:03:31 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-12 11:03:31 - [app] app - [DEBUG] DEBUG - Request: GET /api/session/status +2025-06-12 11:03:31 - [app] app - [DEBUG] DEBUG - Request: GET /api/user/settings +2025-06-12 11:03:31 - [app] app - [DEBUG] DEBUG - Response: 500 +2025-06-12 11:03:31 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-12 11:03:38 - [app] app - [DEBUG] DEBUG - Request: GET /printers +2025-06-12 11:03:38 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-12 11:03:38 - [app] app - [DEBUG] DEBUG - Request: GET /api/printers +2025-06-12 11:03:38 - [app] app - [INFO] INFO - ✅ API: 0 Drucker abgerufen +2025-06-12 11:03:38 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-12 11:03:38 - [app] app - [DEBUG] DEBUG - Request: GET /api/notifications +2025-06-12 11:03:38 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-12 11:03:38 - [app] app - [DEBUG] DEBUG - Request: GET /api/printers/monitor/live-status +2025-06-12 11:03:38 - [app] app - [DEBUG] DEBUG - Request: GET /api/session/status +2025-06-12 11:03:38 - [app] app - [DEBUG] DEBUG - Request: GET /api/user/settings +2025-06-12 11:03:38 - [app] app - [DEBUG] DEBUG - Response: 500 +2025-06-12 11:03:38 - [app] app - [DEBUG] DEBUG - Response: 500 +2025-06-12 11:03:38 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-12 11:03:50 - [app] app - [DEBUG] DEBUG - Request: GET /tapo/ +2025-06-12 11:03:50 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-12 11:03:51 - [app] app - [DEBUG] DEBUG - Request: GET /api/notifications +2025-06-12 11:03:51 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-12 11:03:51 - [app] app - [DEBUG] DEBUG - Request: GET /api/session/status +2025-06-12 11:03:51 - [app] app - [DEBUG] DEBUG - Request: GET /api/user/settings +2025-06-12 11:03:51 - [app] app - [DEBUG] DEBUG - Response: 500 +2025-06-12 11:03:51 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-12 11:03:52 - [app] app - [WARNING] WARNING - CSRF-Fehler: The CSRF token is missing. +2025-06-12 11:03:52 - [app] app - [DEBUG] DEBUG - Response: 400 +2025-06-12 11:03:54 - [app] app - [DEBUG] DEBUG - Request: GET /admin/printers +2025-06-12 11:03:54 - [app] app - [INFO] INFO - Locating template 'admin.html': + 1: trying loader of application '__main__' + class: jinja2.loaders.FileSystemLoader + encoding: 'utf-8' + followlinks: False + searchpath: + - C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\templates + -> found ('C:\\Users\\TTOMCZA.EMEA\\Dev\\Projektarbeit-MYP\\backend\\templates\\admin.html') +2025-06-12 11:03:54 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-12 11:03:54 - [app] app - [ERROR] ERROR - Fehler beim Laden des Benutzers 1: (sqlite3.InterfaceError) bad parameter or other API misuse +[SQL: SELECT users.id AS users_id, users.email AS users_email, users.username AS users_username, users.password_hash AS users_password_hash, users.name AS users_name, users.role AS users_role, users.active AS users_active, users.created_at AS users_created_at, users.last_login AS users_last_login, users.updated_at AS users_updated_at, users.settings AS users_settings, users.last_activity AS users_last_activity, users.department AS users_department, users.position AS users_position, users.phone AS users_phone, users.bio AS users_bio, users.theme_preference AS users_theme_preference, users.language_preference AS users_language_preference, users.email_notifications AS users_email_notifications, users.browser_notifications AS users_browser_notifications, users.dashboard_layout AS users_dashboard_layout, users.compact_mode AS users_compact_mode, users.show_completed_jobs AS users_show_completed_jobs, users.auto_refresh_interval AS users_auto_refresh_interval, users.auto_logout_timeout AS users_auto_logout_timeout +FROM users +WHERE users.id = ? + LIMIT ? OFFSET ?] +[parameters: (1, 1, 0)] +(Background on this error at: https://sqlalche.me/e/20/rvf5) +2025-06-12 11:03:54 - [app] app - [DEBUG] DEBUG - Request: GET /api/notifications +2025-06-12 11:03:54 - [app] app - [DEBUG] DEBUG - Request: GET /api/stats +2025-06-12 11:03:54 - [app] app - [DEBUG] DEBUG - Request: GET /api/printers/monitor/live-status +2025-06-12 11:03:54 - [app] app - [DEBUG] DEBUG - Request: GET /api/session/status +2025-06-12 11:03:54 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-12 11:03:54 - [app] app - [DEBUG] DEBUG - Request: GET /api/user/settings +2025-06-12 11:03:54 - [app] app - [INFO] INFO - Not Found (404): http://127.0.0.1:5000/api/stats +2025-06-12 11:03:54 - [app] app - [DEBUG] DEBUG - Response: 500 +2025-06-12 11:03:54 - [app] app - [INFO] INFO - Locating template 'errors/404.html': + 1: trying loader of application '__main__' + class: jinja2.loaders.FileSystemLoader + encoding: 'utf-8' + followlinks: False + searchpath: + - C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\templates + -> found ('C:\\Users\\TTOMCZA.EMEA\\Dev\\Projektarbeit-MYP\\backend\\templates\\errors\\404.html') +2025-06-12 11:03:54 - [app] app - [DEBUG] DEBUG - Response: 404 +2025-06-12 11:03:54 - [app] app - [DEBUG] DEBUG - Response: 500 +2025-06-12 11:03:54 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-12 11:03:54 - [app] app - [DEBUG] DEBUG - Request: GET /api/admin/system-health +2025-06-12 11:03:54 - [app] app - [INFO] INFO - Not Found (404): http://127.0.0.1:5000/api/admin/system-health +2025-06-12 11:03:54 - [app] app - [DEBUG] DEBUG - Response: 404 +2025-06-12 11:03:59 - [app] app - [DEBUG] DEBUG - Request: GET /api/stats +2025-06-12 11:03:59 - [app] app - [INFO] INFO - Not Found (404): http://127.0.0.1:5000/api/stats +2025-06-12 11:03:59 - [app] app - [DEBUG] DEBUG - Response: 404 +2025-06-12 11:04:04 - [app] app - [DEBUG] DEBUG - Request: GET /api/stats +2025-06-12 11:04:04 - [app] app - [INFO] INFO - Not Found (404): http://127.0.0.1:5000/api/stats +2025-06-12 11:04:04 - [app] app - [DEBUG] DEBUG - Response: 404 +2025-06-12 11:04:04 - [app] app - [DEBUG] DEBUG - Request: GET /admin/guest-requests +2025-06-12 11:04:04 - [app] app - [INFO] INFO - Locating template 'admin_guest_requests.html': + 1: trying loader of application '__main__' + class: jinja2.loaders.FileSystemLoader + encoding: 'utf-8' + followlinks: False + searchpath: + - C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\templates + -> found ('C:\\Users\\TTOMCZA.EMEA\\Dev\\Projektarbeit-MYP\\backend\\templates\\admin_guest_requests.html') +2025-06-12 11:04:04 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-12 11:04:05 - [app] app - [DEBUG] DEBUG - Request: GET /api/notifications +2025-06-12 11:04:05 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-12 11:04:05 - [app] app - [DEBUG] DEBUG - Request: GET /api/admin/requests +2025-06-12 11:04:05 - [app] app - [DEBUG] DEBUG - Request: GET /api/printers/monitor/live-status +2025-06-12 11:04:05 - [app] app - [DEBUG] DEBUG - Request: GET /api/session/status +2025-06-12 11:04:05 - [app] app - [DEBUG] DEBUG - Request: GET /api/user/settings +2025-06-12 11:04:05 - [app] app - [DEBUG] DEBUG - Response: 500 +2025-06-12 11:04:05 - [app] app - [WARNING] WARNING - Forbidden (403): http://127.0.0.1:5000/api/admin/requests - User: admin +2025-06-12 11:04:05 - [app] app - [DEBUG] DEBUG - Response: 403 +2025-06-12 11:04:05 - [app] app - [DEBUG] DEBUG - Response: 500 +2025-06-12 11:04:05 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-12 11:04:09 - [app] app - [DEBUG] DEBUG - Request: GET /jobs +2025-06-12 11:04:09 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-12 11:04:10 - [app] app - [DEBUG] DEBUG - Request: GET /api/notifications +2025-06-12 11:04:10 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-12 11:04:10 - [app] app - [DEBUG] DEBUG - Request: GET /api/jobs +2025-06-12 11:04:10 - [app] app - [DEBUG] DEBUG - Request: GET /api/jobs +2025-06-12 11:04:10 - [app] app - [DEBUG] DEBUG - Request: GET /api/user/settings +2025-06-12 11:04:10 - [app] app - [DEBUG] DEBUG - Request: GET /api/session/status +2025-06-12 11:04:10 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-12 11:04:10 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-12 11:04:10 - [app] app - [DEBUG] DEBUG - Response: 500 +2025-06-12 11:04:10 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-12 11:04:10 - [app] app - [DEBUG] DEBUG - Request: GET /api/printers +2025-06-12 11:04:10 - [app] app - [INFO] INFO - ✅ API: 0 Drucker abgerufen +2025-06-12 11:04:10 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-12 11:04:11 - [app] app - [DEBUG] DEBUG - Request: GET /tapo/ +2025-06-12 11:04:11 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-12 11:04:11 - [app] app - [DEBUG] DEBUG - Request: GET /api/notifications +2025-06-12 11:04:11 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-12 11:04:11 - [app] app - [DEBUG] DEBUG - Request: GET /api/session/status +2025-06-12 11:04:11 - [app] app - [DEBUG] DEBUG - Request: GET /api/user/settings +2025-06-12 11:04:11 - [app] app - [DEBUG] DEBUG - Response: 500 +2025-06-12 11:04:11 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-12 11:04:41 - [app] app - [DEBUG] DEBUG - Request: GET /api/notifications +2025-06-12 11:04:41 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-12 11:05:11 - [app] app - [DEBUG] DEBUG - Request: GET /api/notifications +2025-06-12 11:05:11 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-12 11:05:41 - [app] app - [DEBUG] DEBUG - Request: GET /api/notifications +2025-06-12 11:05:41 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-12 11:06:11 - [app] app - [DEBUG] DEBUG - Request: GET /api/notifications +2025-06-12 11:06:11 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-12 11:06:41 - [app] app - [DEBUG] DEBUG - Request: GET /api/notifications +2025-06-12 11:06:41 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-12 11:07:12 - [app] app - [DEBUG] DEBUG - Request: GET /api/notifications +2025-06-12 11:07:12 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-12 11:07:42 - [app] app - [DEBUG] DEBUG - Request: GET /api/notifications +2025-06-12 11:07:42 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-12 11:08:11 - [app] app - [DEBUG] DEBUG - Request: GET /api/notifications +2025-06-12 11:08:11 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-12 11:08:42 - [app] app - [DEBUG] DEBUG - Request: GET /api/notifications +2025-06-12 11:08:42 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-12 11:09:12 - [app] app - [DEBUG] DEBUG - Request: GET /api/notifications +2025-06-12 11:09:12 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-12 11:10:37 - [app] app - [DEBUG] DEBUG - Request: GET /api/notifications +2025-06-12 11:10:37 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-12 11:11:37 - [app] app - [DEBUG] DEBUG - Request: GET /api/notifications +2025-06-12 11:11:37 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-12 11:12:37 - [app] app - [DEBUG] DEBUG - Request: GET /api/notifications +2025-06-12 11:12:37 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-12 11:13:37 - [app] app - [DEBUG] DEBUG - Request: GET /api/notifications +2025-06-12 11:13:37 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-12 11:14:37 - [app] app - [DEBUG] DEBUG - Request: GET /api/notifications +2025-06-12 11:14:37 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-12 11:15:37 - [app] app - [DEBUG] DEBUG - Request: GET /api/notifications +2025-06-12 11:15:37 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-12 11:16:33 - [app] app - [DEBUG] DEBUG - Request: GET /api/notifications +2025-06-12 11:16:33 - [app] app - [DEBUG] DEBUG - Response: 200 diff --git a/backend/logs/core_system/core_system.log b/backend/logs/core_system/core_system.log index 0ae176dbc..b6362fb78 100644 --- a/backend/logs/core_system/core_system.log +++ b/backend/logs/core_system/core_system.log @@ -96,3 +96,7 @@ 2025-06-12 10:49:27 - [core_system] core_system - [INFO] INFO - 📊 Massive Konsolidierung: 6 Dateien → 1 Datei (88% Reduktion) 2025-06-12 10:49:29 - [core_system] core_system - [INFO] INFO - ✅ Core System Management Module erfolgreich initialisiert 2025-06-12 10:49:29 - [core_system] core_system - [INFO] INFO - 📊 Massive Konsolidierung: 6 Dateien → 1 Datei (88% Reduktion) +2025-06-12 11:00:40 - [core_system] core_system - [INFO] INFO - ✅ Core System Management Module erfolgreich initialisiert +2025-06-12 11:00:40 - [core_system] core_system - [INFO] INFO - 📊 Massive Konsolidierung: 6 Dateien → 1 Datei (88% Reduktion) +2025-06-12 11:00:45 - [core_system] core_system - [INFO] INFO - ✅ Core System Management Module erfolgreich initialisiert +2025-06-12 11:00:45 - [core_system] core_system - [INFO] INFO - 📊 Massive Konsolidierung: 6 Dateien → 1 Datei (88% Reduktion) diff --git a/backend/logs/data_management/data_management.log b/backend/logs/data_management/data_management.log index 673e7df71..341f19a13 100644 --- a/backend/logs/data_management/data_management.log +++ b/backend/logs/data_management/data_management.log @@ -96,3 +96,7 @@ 2025-06-12 10:49:27 - [data_management] data_management - [INFO] INFO - 📊 Massive Konsolidierung: 3 Dateien → 1 Datei (67% Reduktion) 2025-06-12 10:49:30 - [data_management] data_management - [INFO] INFO - ✅ Data Management Module initialisiert 2025-06-12 10:49:30 - [data_management] data_management - [INFO] INFO - 📊 Massive Konsolidierung: 3 Dateien → 1 Datei (67% Reduktion) +2025-06-12 11:00:40 - [data_management] data_management - [INFO] INFO - ✅ Data Management Module initialisiert +2025-06-12 11:00:40 - [data_management] data_management - [INFO] INFO - 📊 Massive Konsolidierung: 3 Dateien → 1 Datei (67% Reduktion) +2025-06-12 11:00:45 - [data_management] data_management - [INFO] INFO - ✅ Data Management Module initialisiert +2025-06-12 11:00:45 - [data_management] data_management - [INFO] INFO - 📊 Massive Konsolidierung: 3 Dateien → 1 Datei (67% Reduktion) diff --git a/backend/logs/hardware_integration/hardware_integration.log b/backend/logs/hardware_integration/hardware_integration.log index e3aa12d2f..1a07e0b7b 100644 --- a/backend/logs/hardware_integration/hardware_integration.log +++ b/backend/logs/hardware_integration/hardware_integration.log @@ -198,3 +198,11 @@ 2025-06-12 10:49:30 - [hardware_integration] hardware_integration - [INFO] INFO - ✅ Printer Monitor initialisiert 2025-06-12 10:49:30 - [hardware_integration] hardware_integration - [INFO] INFO - ✅ Hardware Integration Module initialisiert 2025-06-12 10:49:30 - [hardware_integration] hardware_integration - [INFO] INFO - 📊 Massive Konsolidierung: 2 Dateien → 1 Datei (50% Reduktion) +2025-06-12 11:00:40 - [hardware_integration] hardware_integration - [INFO] INFO - ✅ PyP100 (TP-Link Tapo) verfügbar +2025-06-12 11:00:40 - [hardware_integration] hardware_integration - [INFO] INFO - ✅ Printer Monitor initialisiert +2025-06-12 11:00:40 - [hardware_integration] hardware_integration - [INFO] INFO - ✅ Hardware Integration Module initialisiert +2025-06-12 11:00:40 - [hardware_integration] hardware_integration - [INFO] INFO - 📊 Massive Konsolidierung: 2 Dateien → 1 Datei (50% Reduktion) +2025-06-12 11:00:45 - [hardware_integration] hardware_integration - [INFO] INFO - ✅ PyP100 (TP-Link Tapo) verfügbar +2025-06-12 11:00:45 - [hardware_integration] hardware_integration - [INFO] INFO - ✅ Printer Monitor initialisiert +2025-06-12 11:00:45 - [hardware_integration] hardware_integration - [INFO] INFO - ✅ Hardware Integration Module initialisiert +2025-06-12 11:00:45 - [hardware_integration] hardware_integration - [INFO] INFO - 📊 Massive Konsolidierung: 2 Dateien → 1 Datei (50% Reduktion) diff --git a/backend/logs/job_queue_system/job_queue_system.log b/backend/logs/job_queue_system/job_queue_system.log index 41ce26782..4ceeb8057 100644 --- a/backend/logs/job_queue_system/job_queue_system.log +++ b/backend/logs/job_queue_system/job_queue_system.log @@ -187,3 +187,11 @@ 2025-06-12 10:49:31 - [job_queue_system] job_queue_system - [INFO] INFO - Queue Manager gestartet (Legacy-Kompatibilität) 2025-06-12 10:54:47 - [job_queue_system] job_queue_system - [INFO] INFO - Queue Manager gestoppt (Legacy-Kompatibilität) 2025-06-12 10:54:47 - [job_queue_system] job_queue_system - [INFO] INFO - Queue Manager gestoppt (Legacy-Kompatibilität) +2025-06-12 11:00:40 - [job_queue_system] job_queue_system - [INFO] INFO - ✅ Job & Queue System Module initialisiert +2025-06-12 11:00:40 - [job_queue_system] job_queue_system - [INFO] INFO - 📊 MASSIVE Konsolidierung: 4 Dateien → 1 Datei (75% Reduktion) +2025-06-12 11:00:43 - [job_queue_system] job_queue_system - [INFO] INFO - Queue Manager gestartet (Legacy-Kompatibilität) +2025-06-12 11:00:45 - [job_queue_system] job_queue_system - [INFO] INFO - ✅ Job & Queue System Module initialisiert +2025-06-12 11:00:45 - [job_queue_system] job_queue_system - [INFO] INFO - 📊 MASSIVE Konsolidierung: 4 Dateien → 1 Datei (75% Reduktion) +2025-06-12 11:00:49 - [job_queue_system] job_queue_system - [INFO] INFO - Queue Manager gestartet (Legacy-Kompatibilität) +2025-06-12 11:18:03 - [job_queue_system] job_queue_system - [INFO] INFO - Queue Manager gestoppt (Legacy-Kompatibilität) +2025-06-12 11:18:03 - [job_queue_system] job_queue_system - [INFO] INFO - Queue Manager gestoppt (Legacy-Kompatibilität) diff --git a/backend/logs/jobs/jobs.log b/backend/logs/jobs/jobs.log index fc1322196..118b46457 100644 --- a/backend/logs/jobs/jobs.log +++ b/backend/logs/jobs/jobs.log @@ -151,3 +151,11 @@ TypeError: unsupported operand type(s) for +: 'NoneType' and 'int' 2025-06-12 10:49:43 - [jobs] jobs - [INFO] INFO - ✅ Jobs erfolgreich abgerufen: 0 von 0 (Seite 1) 2025-06-12 10:49:43 - [jobs] jobs - [INFO] INFO - 📋 Jobs-Abfrage gestartet von Benutzer 1 (Admin: True) 2025-06-12 10:49:43 - [jobs] jobs - [INFO] INFO - ✅ Jobs erfolgreich abgerufen: 0 von 0 (Seite 1) +2025-06-12 11:01:46 - [jobs] jobs - [INFO] INFO - 📋 Jobs-Abfrage gestartet von Benutzer 1 (Admin: True) +2025-06-12 11:01:46 - [jobs] jobs - [INFO] INFO - 📋 Jobs-Abfrage gestartet von Benutzer 1 (Admin: True) +2025-06-12 11:01:46 - [jobs] jobs - [INFO] INFO - ✅ Jobs erfolgreich abgerufen: 0 von 0 (Seite 1) +2025-06-12 11:01:46 - [jobs] jobs - [INFO] INFO - ✅ Jobs erfolgreich abgerufen: 0 von 0 (Seite 1) +2025-06-12 11:04:10 - [jobs] jobs - [INFO] INFO - 📋 Jobs-Abfrage gestartet von Benutzer 1 (Admin: True) +2025-06-12 11:04:10 - [jobs] jobs - [INFO] INFO - 📋 Jobs-Abfrage gestartet von Benutzer 1 (Admin: True) +2025-06-12 11:04:10 - [jobs] jobs - [INFO] INFO - ✅ Jobs erfolgreich abgerufen: 0 von 0 (Seite 1) +2025-06-12 11:04:10 - [jobs] jobs - [INFO] INFO - ✅ Jobs erfolgreich abgerufen: 0 von 0 (Seite 1) diff --git a/backend/logs/monitoring_analytics/monitoring_analytics.log b/backend/logs/monitoring_analytics/monitoring_analytics.log index 5439a9de6..18fb7869c 100644 --- a/backend/logs/monitoring_analytics/monitoring_analytics.log +++ b/backend/logs/monitoring_analytics/monitoring_analytics.log @@ -96,3 +96,7 @@ 2025-06-12 10:49:28 - [monitoring_analytics] monitoring_analytics - [INFO] INFO - 📊 MASSIVE Konsolidierung: 3 Dateien → 1 Datei (67% Reduktion) 2025-06-12 10:49:31 - [monitoring_analytics] monitoring_analytics - [INFO] INFO - ✅ Monitoring & Analytics Module initialisiert 2025-06-12 10:49:31 - [monitoring_analytics] monitoring_analytics - [INFO] INFO - 📊 MASSIVE Konsolidierung: 3 Dateien → 1 Datei (67% Reduktion) +2025-06-12 11:00:42 - [monitoring_analytics] monitoring_analytics - [INFO] INFO - ✅ Monitoring & Analytics Module initialisiert +2025-06-12 11:00:42 - [monitoring_analytics] monitoring_analytics - [INFO] INFO - 📊 MASSIVE Konsolidierung: 3 Dateien → 1 Datei (67% Reduktion) +2025-06-12 11:00:48 - [monitoring_analytics] monitoring_analytics - [INFO] INFO - ✅ Monitoring & Analytics Module initialisiert +2025-06-12 11:00:48 - [monitoring_analytics] monitoring_analytics - [INFO] INFO - 📊 MASSIVE Konsolidierung: 3 Dateien → 1 Datei (67% Reduktion) diff --git a/backend/logs/printers/printers.log b/backend/logs/printers/printers.log index 587c0a67a..d56f61a6c 100644 --- a/backend/logs/printers/printers.log +++ b/backend/logs/printers/printers.log @@ -211,3 +211,48 @@ 2025-06-12 10:54:30 - [printers] printers - [INFO] INFO - 🔄 Live-Status-Abfrage von Benutzer Administrator (ID: 1) 2025-06-12 10:54:30 - [printers] printers - [ERROR] ERROR - ❌ Fehler bei Live-Status-Abfrage: PrinterMonitor.get_live_printer_status() got an unexpected keyword argument 'use_session_cache' 2025-06-12 10:54:30 - [printers] printers - [INFO] INFO - [OK] API-Live-Drucker-Status-Abfrage 'get_live_printer_status' erfolgreich in 6.25ms +2025-06-12 11:00:51 - [printers] printers - [INFO] INFO - 🔄 Live-Status-Abfrage von Benutzer Administrator (ID: 1) +2025-06-12 11:00:51 - [printers] printers - [ERROR] ERROR - ❌ Fehler bei Live-Status-Abfrage: PrinterMonitor.get_live_printer_status() got an unexpected keyword argument 'use_session_cache' +2025-06-12 11:00:51 - [printers] printers - [INFO] INFO - [OK] API-Live-Drucker-Status-Abfrage 'get_live_printer_status' erfolgreich in 6.88ms +2025-06-12 11:01:11 - [printers] printers - [INFO] INFO - 🔄 Live-Status-Abfrage von Benutzer Administrator (ID: 1) +2025-06-12 11:01:11 - [printers] printers - [ERROR] ERROR - ❌ Fehler bei Live-Status-Abfrage: PrinterMonitor.get_live_printer_status() got an unexpected keyword argument 'use_session_cache' +2025-06-12 11:01:11 - [printers] printers - [INFO] INFO - [OK] API-Live-Drucker-Status-Abfrage 'get_live_printer_status' erfolgreich in 0.78ms +2025-06-12 11:01:16 - [printers] printers - [INFO] INFO - 🔄 Live-Status-Abfrage von Benutzer Administrator (ID: 1) +2025-06-12 11:01:16 - [printers] printers - [ERROR] ERROR - ❌ Fehler bei Live-Status-Abfrage: PrinterMonitor.get_live_printer_status() got an unexpected keyword argument 'use_session_cache' +2025-06-12 11:01:16 - [printers] printers - [INFO] INFO - [OK] API-Live-Drucker-Status-Abfrage 'get_live_printer_status' erfolgreich in 5.97ms +2025-06-12 11:01:26 - [printers] printers - [INFO] INFO - 🔄 Live-Status-Abfrage von Benutzer Administrator (ID: 1) +2025-06-12 11:01:26 - [printers] printers - [ERROR] ERROR - ❌ Fehler bei Live-Status-Abfrage: PrinterMonitor.get_live_printer_status() got an unexpected keyword argument 'use_session_cache' +2025-06-12 11:01:26 - [printers] printers - [INFO] INFO - [OK] API-Live-Drucker-Status-Abfrage 'get_live_printer_status' erfolgreich in 1.02ms +2025-06-12 11:01:51 - [printers] printers - [INFO] INFO - 🔄 Live-Status-Abfrage von Benutzer Administrator (ID: 1) +2025-06-12 11:01:51 - [printers] printers - [ERROR] ERROR - ❌ Fehler bei Live-Status-Abfrage: PrinterMonitor.get_live_printer_status() got an unexpected keyword argument 'use_session_cache' +2025-06-12 11:01:51 - [printers] printers - [INFO] INFO - [OK] API-Live-Drucker-Status-Abfrage 'get_live_printer_status' erfolgreich in 2.02ms +2025-06-12 11:02:21 - [printers] printers - [INFO] INFO - 🔄 Live-Status-Abfrage von Benutzer Administrator (ID: 1) +2025-06-12 11:02:21 - [printers] printers - [ERROR] ERROR - ❌ Fehler bei Live-Status-Abfrage: PrinterMonitor.get_live_printer_status() got an unexpected keyword argument 'use_session_cache' +2025-06-12 11:02:21 - [printers] printers - [INFO] INFO - [OK] API-Live-Drucker-Status-Abfrage 'get_live_printer_status' erfolgreich in 1.75ms +2025-06-12 11:02:21 - [printers] printers - [INFO] INFO - 🔄 Live-Status-Abfrage von Benutzer Administrator (ID: 1) +2025-06-12 11:02:21 - [printers] printers - [ERROR] ERROR - ❌ Fehler bei Live-Status-Abfrage: PrinterMonitor.get_live_printer_status() got an unexpected keyword argument 'use_session_cache' +2025-06-12 11:02:21 - [printers] printers - [INFO] INFO - [OK] API-Live-Drucker-Status-Abfrage 'get_live_printer_status' erfolgreich in 1.67ms +2025-06-12 11:02:21 - [printers] printers - [INFO] INFO - 🔄 Live-Status-Abfrage von Benutzer Administrator (ID: 1) +2025-06-12 11:02:21 - [printers] printers - [ERROR] ERROR - ❌ Fehler bei Live-Status-Abfrage: PrinterMonitor.get_live_printer_status() got an unexpected keyword argument 'use_session_cache' +2025-06-12 11:02:21 - [printers] printers - [INFO] INFO - [OK] API-Live-Drucker-Status-Abfrage 'get_live_printer_status' erfolgreich in 3.44ms +2025-06-12 11:02:51 - [printers] printers - [INFO] INFO - 🔄 Live-Status-Abfrage von Benutzer Administrator (ID: 1) +2025-06-12 11:02:51 - [printers] printers - [ERROR] ERROR - ❌ Fehler bei Live-Status-Abfrage: PrinterMonitor.get_live_printer_status() got an unexpected keyword argument 'use_session_cache' +2025-06-12 11:02:51 - [printers] printers - [INFO] INFO - [OK] API-Live-Drucker-Status-Abfrage 'get_live_printer_status' erfolgreich in 1.79ms +2025-06-12 11:02:51 - [printers] printers - [INFO] INFO - 🔄 Live-Status-Abfrage von Benutzer Administrator (ID: 1) +2025-06-12 11:02:51 - [printers] printers - [ERROR] ERROR - ❌ Fehler bei Live-Status-Abfrage: PrinterMonitor.get_live_printer_status() got an unexpected keyword argument 'use_session_cache' +2025-06-12 11:02:51 - [printers] printers - [INFO] INFO - [OK] API-Live-Drucker-Status-Abfrage 'get_live_printer_status' erfolgreich in 2.12ms +2025-06-12 11:03:21 - [printers] printers - [INFO] INFO - 🔄 Live-Status-Abfrage von Benutzer Administrator (ID: 1) +2025-06-12 11:03:21 - [printers] printers - [ERROR] ERROR - ❌ Fehler bei Live-Status-Abfrage: PrinterMonitor.get_live_printer_status() got an unexpected keyword argument 'use_session_cache' +2025-06-12 11:03:21 - [printers] printers - [INFO] INFO - [OK] API-Live-Drucker-Status-Abfrage 'get_live_printer_status' erfolgreich in 1.56ms +2025-06-12 11:03:21 - [printers] printers - [INFO] INFO - 🔄 Live-Status-Abfrage von Benutzer Administrator (ID: 1) +2025-06-12 11:03:21 - [printers] printers - [ERROR] ERROR - ❌ Fehler bei Live-Status-Abfrage: PrinterMonitor.get_live_printer_status() got an unexpected keyword argument 'use_session_cache' +2025-06-12 11:03:21 - [printers] printers - [INFO] INFO - [OK] API-Live-Drucker-Status-Abfrage 'get_live_printer_status' erfolgreich in 2.13ms +2025-06-12 11:03:38 - [printers] printers - [INFO] INFO - 🔄 Live-Status-Abfrage von Benutzer Administrator (ID: 1) +2025-06-12 11:03:38 - [printers] printers - [ERROR] ERROR - ❌ Fehler bei Live-Status-Abfrage: PrinterMonitor.get_live_printer_status() got an unexpected keyword argument 'use_session_cache' +2025-06-12 11:03:38 - [printers] printers - [INFO] INFO - [OK] API-Live-Drucker-Status-Abfrage 'get_live_printer_status' erfolgreich in 2.69ms +2025-06-12 11:03:54 - [printers] printers - [INFO] INFO - 🔄 Live-Status-Abfrage von Benutzer Administrator (ID: 1) +2025-06-12 11:03:54 - [printers] printers - [ERROR] ERROR - ❌ Fehler bei Live-Status-Abfrage: PrinterMonitor.get_live_printer_status() got an unexpected keyword argument 'use_session_cache' +2025-06-12 11:03:54 - [printers] printers - [INFO] INFO - [OK] API-Live-Drucker-Status-Abfrage 'get_live_printer_status' erfolgreich in 5.11ms +2025-06-12 11:04:05 - [printers] printers - [INFO] INFO - 🔄 Live-Status-Abfrage von Benutzer Administrator (ID: 1) +2025-06-12 11:04:05 - [printers] printers - [ERROR] ERROR - ❌ Fehler bei Live-Status-Abfrage: PrinterMonitor.get_live_printer_status() got an unexpected keyword argument 'use_session_cache' +2025-06-12 11:04:05 - [printers] printers - [INFO] INFO - [OK] API-Live-Drucker-Status-Abfrage 'get_live_printer_status' erfolgreich in 2.16ms diff --git a/backend/logs/scheduler/scheduler.log b/backend/logs/scheduler/scheduler.log index b5d50d76d..c2586aaf3 100644 --- a/backend/logs/scheduler/scheduler.log +++ b/backend/logs/scheduler/scheduler.log @@ -139,3 +139,9 @@ 2025-06-12 10:49:30 - [scheduler] scheduler - [INFO] INFO - Task check_jobs registriert: Intervall 30s, Enabled: True 2025-06-12 10:49:31 - [scheduler] scheduler - [INFO] INFO - Scheduler-Thread gestartet 2025-06-12 10:49:31 - [scheduler] scheduler - [INFO] INFO - Scheduler gestartet +2025-06-12 11:00:40 - [scheduler] scheduler - [INFO] INFO - Task check_jobs registriert: Intervall 30s, Enabled: True +2025-06-12 11:00:43 - [scheduler] scheduler - [INFO] INFO - Scheduler-Thread gestartet +2025-06-12 11:00:43 - [scheduler] scheduler - [INFO] INFO - Scheduler gestartet +2025-06-12 11:00:45 - [scheduler] scheduler - [INFO] INFO - Task check_jobs registriert: Intervall 30s, Enabled: True +2025-06-12 11:00:49 - [scheduler] scheduler - [INFO] INFO - Scheduler-Thread gestartet +2025-06-12 11:00:49 - [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 0806e650b..47f3a0ce9 100644 --- a/backend/logs/security_suite/security_suite.log +++ b/backend/logs/security_suite/security_suite.log @@ -145,3 +145,9 @@ 2025-06-12 10:49:30 - [security_suite] security_suite - [INFO] INFO - ✅ Security Suite Module initialisiert 2025-06-12 10:49:30 - [security_suite] security_suite - [INFO] INFO - 📊 Massive Konsolidierung: 3 Dateien → 1 Datei (67% Reduktion) 2025-06-12 10:49:31 - [security_suite] security_suite - [INFO] INFO - 🔒 Security Suite initialisiert +2025-06-12 11:00:40 - [security_suite] security_suite - [INFO] INFO - ✅ Security Suite Module initialisiert +2025-06-12 11:00:40 - [security_suite] security_suite - [INFO] INFO - 📊 Massive Konsolidierung: 3 Dateien → 1 Datei (67% Reduktion) +2025-06-12 11:00:43 - [security_suite] security_suite - [INFO] INFO - 🔒 Security Suite initialisiert +2025-06-12 11:00:45 - [security_suite] security_suite - [INFO] INFO - ✅ Security Suite Module initialisiert +2025-06-12 11:00:45 - [security_suite] security_suite - [INFO] INFO - 📊 Massive Konsolidierung: 3 Dateien → 1 Datei (67% Reduktion) +2025-06-12 11:00:48 - [security_suite] security_suite - [INFO] INFO - 🔒 Security Suite initialisiert diff --git a/backend/logs/sessions/sessions.log b/backend/logs/sessions/sessions.log index 5cf671e4a..f694a6ebe 100644 --- a/backend/logs/sessions/sessions.log +++ b/backend/logs/sessions/sessions.log @@ -58,3 +58,15 @@ 2025-06-12 10:49:43 - [sessions] sessions - [ERROR] ERROR - Fehler beim Abrufen des Session-Status: 'int' object has no attribute 'total_seconds' 2025-06-12 10:49:55 - [sessions] sessions - [ERROR] ERROR - Fehler beim Abrufen des Session-Status: 'int' object has no attribute 'total_seconds' 2025-06-12 10:49:56 - [sessions] sessions - [ERROR] ERROR - Fehler beim Abrufen des Session-Status: 'int' object has no attribute 'total_seconds' +2025-06-12 11:00:51 - [sessions] sessions - [ERROR] ERROR - Fehler beim Abrufen des Session-Status: 'int' object has no attribute 'total_seconds' +2025-06-12 11:01:26 - [sessions] sessions - [ERROR] ERROR - Fehler beim Abrufen des Session-Status: 'int' object has no attribute 'total_seconds' +2025-06-12 11:01:42 - [sessions] sessions - [ERROR] ERROR - Fehler beim Abrufen des Session-Status: 'int' object has no attribute 'total_seconds' +2025-06-12 11:01:46 - [sessions] sessions - [ERROR] ERROR - Fehler beim Abrufen des Session-Status: 'int' object has no attribute 'total_seconds' +2025-06-12 11:01:51 - [sessions] sessions - [ERROR] ERROR - Fehler beim Abrufen des Session-Status: 'int' object has no attribute 'total_seconds' +2025-06-12 11:03:31 - [sessions] sessions - [ERROR] ERROR - Fehler beim Abrufen des Session-Status: 'int' object has no attribute 'total_seconds' +2025-06-12 11:03:38 - [sessions] sessions - [ERROR] ERROR - Fehler beim Abrufen des Session-Status: 'int' object has no attribute 'total_seconds' +2025-06-12 11:03:51 - [sessions] sessions - [ERROR] ERROR - Fehler beim Abrufen des Session-Status: 'int' object has no attribute 'total_seconds' +2025-06-12 11:03:54 - [sessions] sessions - [ERROR] ERROR - Fehler beim Abrufen des Session-Status: 'int' object has no attribute 'total_seconds' +2025-06-12 11:04:05 - [sessions] sessions - [ERROR] ERROR - Fehler beim Abrufen des Session-Status: 'int' object has no attribute 'total_seconds' +2025-06-12 11:04:10 - [sessions] sessions - [ERROR] ERROR - Fehler beim Abrufen des Session-Status: 'int' object has no attribute 'total_seconds' +2025-06-12 11:04:11 - [sessions] sessions - [ERROR] ERROR - Fehler beim Abrufen des Session-Status: 'int' object has no attribute 'total_seconds' diff --git a/backend/logs/startup/startup.log b/backend/logs/startup/startup.log index 5496edcd6..14d729b1f 100644 --- a/backend/logs/startup/startup.log +++ b/backend/logs/startup/startup.log @@ -439,3 +439,21 @@ 2025-06-12 10:49:31 - [startup] startup - [INFO] INFO - 🪟 Windows-Modus: Aktiviert 2025-06-12 10:49:31 - [startup] startup - [INFO] INFO - 🔒 Windows-sichere Log-Rotation: Aktiviert 2025-06-12 10:49:31 - [startup] startup - [INFO] INFO - ================================================== +2025-06-12 11:00:42 - [startup] startup - [INFO] INFO - ================================================== +2025-06-12 11:00:42 - [startup] startup - [INFO] INFO - [START] MYP Platform Backend wird gestartet... +2025-06-12 11:00:42 - [startup] startup - [INFO] INFO - 🐍 Python Version: 3.13.3 (tags/v3.13.3:6280bb5, Apr 8 2025, 14:47:33) [MSC v.1943 64 bit (AMD64)] +2025-06-12 11:00:42 - [startup] startup - [INFO] INFO - 💻 Betriebssystem: nt (win32) +2025-06-12 11:00:42 - [startup] startup - [INFO] INFO - 📁 Arbeitsverzeichnis: C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend +2025-06-12 11:00:42 - [startup] startup - [INFO] INFO - ⏰ Startzeit: 2025-06-12T11:00:42.961840 +2025-06-12 11:00:42 - [startup] startup - [INFO] INFO - 🪟 Windows-Modus: Aktiviert +2025-06-12 11:00:42 - [startup] startup - [INFO] INFO - 🔒 Windows-sichere Log-Rotation: Aktiviert +2025-06-12 11:00:42 - [startup] startup - [INFO] INFO - ================================================== +2025-06-12 11:00:48 - [startup] startup - [INFO] INFO - ================================================== +2025-06-12 11:00:48 - [startup] startup - [INFO] INFO - [START] MYP Platform Backend wird gestartet... +2025-06-12 11:00:48 - [startup] startup - [INFO] INFO - 🐍 Python Version: 3.13.3 (tags/v3.13.3:6280bb5, Apr 8 2025, 14:47:33) [MSC v.1943 64 bit (AMD64)] +2025-06-12 11:00:48 - [startup] startup - [INFO] INFO - 💻 Betriebssystem: nt (win32) +2025-06-12 11:00:48 - [startup] startup - [INFO] INFO - 📁 Arbeitsverzeichnis: C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend +2025-06-12 11:00:48 - [startup] startup - [INFO] INFO - ⏰ Startzeit: 2025-06-12T11:00:48.612952 +2025-06-12 11:00:48 - [startup] startup - [INFO] INFO - 🪟 Windows-Modus: Aktiviert +2025-06-12 11:00:48 - [startup] startup - [INFO] INFO - 🔒 Windows-sichere Log-Rotation: Aktiviert +2025-06-12 11:00:48 - [startup] startup - [INFO] INFO - ================================================== diff --git a/backend/logs/tapo_control/tapo_control.log b/backend/logs/tapo_control/tapo_control.log index 6d5f211f1..fef2b58d9 100644 --- a/backend/logs/tapo_control/tapo_control.log +++ b/backend/logs/tapo_control/tapo_control.log @@ -19,3 +19,11 @@ 2025-06-12 09:43:27 - [tapo_control] tapo_control - [INFO] INFO - Dashboard geladen: 0 Steckdosen, 0 online 2025-06-12 10:49:54 - [tapo_control] tapo_control - [INFO] INFO - Tapo Dashboard aufgerufen von Benutzer: Administrator 2025-06-12 10:49:54 - [tapo_control] tapo_control - [INFO] INFO - Dashboard geladen: 0 Steckdosen, 0 online +2025-06-12 11:01:41 - [tapo_control] tapo_control - [INFO] INFO - Tapo Dashboard aufgerufen von Benutzer: Administrator +2025-06-12 11:01:41 - [tapo_control] tapo_control - [INFO] INFO - Dashboard geladen: 0 Steckdosen, 0 online +2025-06-12 11:03:31 - [tapo_control] tapo_control - [INFO] INFO - Tapo Dashboard aufgerufen von Benutzer: Administrator +2025-06-12 11:03:31 - [tapo_control] tapo_control - [INFO] INFO - Dashboard geladen: 0 Steckdosen, 0 online +2025-06-12 11:03:50 - [tapo_control] tapo_control - [INFO] INFO - Tapo Dashboard aufgerufen von Benutzer: Administrator +2025-06-12 11:03:50 - [tapo_control] tapo_control - [INFO] INFO - Dashboard geladen: 0 Steckdosen, 0 online +2025-06-12 11:04:11 - [tapo_control] tapo_control - [INFO] INFO - Tapo Dashboard aufgerufen von Benutzer: Administrator +2025-06-12 11:04:11 - [tapo_control] tapo_control - [INFO] INFO - Dashboard geladen: 0 Steckdosen, 0 online diff --git a/backend/logs/tapo_controller/tapo_controller.log b/backend/logs/tapo_controller/tapo_controller.log index 290a32c55..fc060ca40 100644 --- a/backend/logs/tapo_controller/tapo_controller.log +++ b/backend/logs/tapo_controller/tapo_controller.log @@ -48,3 +48,5 @@ 2025-06-12 10:19:21 - [tapo_controller] tapo_controller - [INFO] INFO - ✅ tapo controller initialisiert 2025-06-12 10:49:27 - [tapo_controller] tapo_controller - [INFO] INFO - ✅ tapo controller initialisiert 2025-06-12 10:49:30 - [tapo_controller] tapo_controller - [INFO] INFO - ✅ tapo controller initialisiert +2025-06-12 11:00:40 - [tapo_controller] tapo_controller - [INFO] INFO - ✅ tapo controller initialisiert +2025-06-12 11:00:45 - [tapo_controller] tapo_controller - [INFO] INFO - ✅ tapo controller initialisiert diff --git a/backend/logs/tapo_status_manager/tapo_status_manager.log b/backend/logs/tapo_status_manager/tapo_status_manager.log index 149218600..ad4740b0f 100644 --- a/backend/logs/tapo_status_manager/tapo_status_manager.log +++ b/backend/logs/tapo_status_manager/tapo_status_manager.log @@ -6,3 +6,5 @@ 2025-06-12 10:19:21 - [tapo_status_manager] tapo_status_manager - [INFO] INFO - TapoStatusManager initialisiert 2025-06-12 10:49:27 - [tapo_status_manager] tapo_status_manager - [INFO] INFO - TapoStatusManager initialisiert 2025-06-12 10:49:30 - [tapo_status_manager] tapo_status_manager - [INFO] INFO - TapoStatusManager initialisiert +2025-06-12 11:00:40 - [tapo_status_manager] tapo_status_manager - [INFO] INFO - TapoStatusManager initialisiert +2025-06-12 11:00:45 - [tapo_status_manager] tapo_status_manager - [INFO] INFO - TapoStatusManager initialisiert diff --git a/backend/logs/user/user.log b/backend/logs/user/user.log index 4d1f8f407..9c76b99fc 100644 --- a/backend/logs/user/user.log +++ b/backend/logs/user/user.log @@ -56,3 +56,15 @@ 2025-06-12 10:49:43 - [user] user - [INFO] INFO - User admin retrieved settings via API 2025-06-12 10:49:55 - [user] user - [INFO] INFO - User admin retrieved settings via API 2025-06-12 10:49:56 - [user] user - [INFO] INFO - User admin retrieved settings via API +2025-06-12 11:00:51 - [user] user - [INFO] INFO - User admin retrieved settings via API +2025-06-12 11:01:26 - [user] user - [INFO] INFO - User admin retrieved settings via API +2025-06-12 11:01:42 - [user] user - [INFO] INFO - User admin retrieved settings via API +2025-06-12 11:01:46 - [user] user - [INFO] INFO - User admin retrieved settings via API +2025-06-12 11:01:51 - [user] user - [INFO] INFO - User admin retrieved settings via API +2025-06-12 11:03:31 - [user] user - [INFO] INFO - User admin retrieved settings via API +2025-06-12 11:03:38 - [user] user - [INFO] INFO - User admin retrieved settings via API +2025-06-12 11:03:51 - [user] user - [INFO] INFO - User admin retrieved settings via API +2025-06-12 11:03:54 - [user] user - [INFO] INFO - User admin retrieved settings via API +2025-06-12 11:04:05 - [user] user - [INFO] INFO - User admin retrieved settings via API +2025-06-12 11:04:10 - [user] user - [INFO] INFO - User admin retrieved settings via API +2025-06-12 11:04:11 - [user] user - [INFO] INFO - User admin retrieved settings via API diff --git a/backend/logs/utilities_collection/utilities_collection.log b/backend/logs/utilities_collection/utilities_collection.log index 4e0442975..f892404c7 100644 --- a/backend/logs/utilities_collection/utilities_collection.log +++ b/backend/logs/utilities_collection/utilities_collection.log @@ -100,3 +100,7 @@ 2025-06-12 10:49:27 - [utilities_collection] utilities_collection - [INFO] INFO - 🚨 ALLERLETZTE MEGA-Konsolidierung: 12+ Dateien → 1 Datei (90%+ Reduktion) 2025-06-12 10:49:29 - [utilities_collection] utilities_collection - [INFO] INFO - ✅ Utilities Collection initialisiert 2025-06-12 10:49:29 - [utilities_collection] utilities_collection - [INFO] INFO - 🚨 ALLERLETZTE MEGA-Konsolidierung: 12+ Dateien → 1 Datei (90%+ Reduktion) +2025-06-12 11:00:40 - [utilities_collection] utilities_collection - [INFO] INFO - ✅ Utilities Collection initialisiert +2025-06-12 11:00:40 - [utilities_collection] utilities_collection - [INFO] INFO - 🚨 ALLERLETZTE MEGA-Konsolidierung: 12+ Dateien → 1 Datei (90%+ Reduktion) +2025-06-12 11:00:45 - [utilities_collection] utilities_collection - [INFO] INFO - ✅ Utilities Collection initialisiert +2025-06-12 11:00:45 - [utilities_collection] utilities_collection - [INFO] INFO - 🚨 ALLERLETZTE MEGA-Konsolidierung: 12+ Dateien → 1 Datei (90%+ Reduktion) diff --git a/backend/logs/windows_fixes/windows_fixes.log b/backend/logs/windows_fixes/windows_fixes.log index 1536bdb98..362aeb894 100644 --- a/backend/logs/windows_fixes/windows_fixes.log +++ b/backend/logs/windows_fixes/windows_fixes.log @@ -99,3 +99,7 @@ 2025-06-12 10:49:27 - [windows_fixes] windows_fixes - [INFO] INFO - ✅ Alle Windows-Fixes erfolgreich angewendet 2025-06-12 10:49:29 - [windows_fixes] windows_fixes - [INFO] INFO - 🔧 Wende Windows-spezifische Fixes an... 2025-06-12 10:49:29 - [windows_fixes] windows_fixes - [INFO] INFO - ✅ Alle Windows-Fixes erfolgreich angewendet +2025-06-12 11:00:40 - [windows_fixes] windows_fixes - [INFO] INFO - 🔧 Wende Windows-spezifische Fixes an... +2025-06-12 11:00:40 - [windows_fixes] windows_fixes - [INFO] INFO - ✅ Alle Windows-Fixes erfolgreich angewendet +2025-06-12 11:00:45 - [windows_fixes] windows_fixes - [INFO] INFO - 🔧 Wende Windows-spezifische Fixes an... +2025-06-12 11:00:45 - [windows_fixes] windows_fixes - [INFO] INFO - ✅ Alle Windows-Fixes erfolgreich angewendet diff --git a/backend/static/css/navbar-improved.css b/backend/static/css/navbar-improved.css deleted file mode 100644 index 25a38edf9..000000000 --- a/backend/static/css/navbar-improved.css +++ /dev/null @@ -1,423 +0,0 @@ -/* ============================================= - MINIMAL RESPONSIVE NAVBAR - MYP PLATFORM - ============================================= */ - -/* CSS Variables für einfache Anpassung */ -:root { - --navbar-height: 3.5rem; - --navbar-bg: rgba(255, 255, 255, 0.9); - --navbar-border: rgba(229, 231, 235, 0.5); - --navbar-blur: 8px; - --nav-item-gap: 0.25rem; - --nav-item-padding: 0.5rem 0.75rem; - --button-size: 2rem; - --icon-size: 1rem; -} - -.dark { - --navbar-bg: rgba(17, 24, 39, 0.9); - --navbar-border: rgba(55, 65, 81, 0.5); -} - -/* Basis Navbar - Minimal */ -.navbar { - position: sticky; - top: 0; - z-index: 50; - width: 100%; - height: var(--navbar-height); - background: var(--navbar-bg); - backdrop-filter: blur(var(--navbar-blur)); - -webkit-backdrop-filter: blur(var(--navbar-blur)); - border-bottom: 1px solid var(--navbar-border); - transition: all 0.15s ease; -} - -/* Navbar Scroll State - Subtiler */ -.navbar.scrolled { - --navbar-height: 3rem; - box-shadow: 0 1px 3px rgba(0, 0, 0, 0.05); -} - -/* Container - Vereinfacht */ -.navbar > div { - height: 100%; - display: flex; - align-items: center; - justify-content: space-between; - padding: 0 1rem; - max-width: 100%; -} - -/* Navbar Brand - Kompakter */ -.navbar-brand { - display: flex; - align-items: center; - gap: 0.5rem; - text-decoration: none; - flex-shrink: 0; -} - -.navbar-brand svg { - width: 1.25rem; - height: 1.25rem; -} - -.navbar-brand span { - font-size: 0.875rem; - font-weight: 600; -} - -/* Desktop Navigation - Minimalistisch */ -.navbar-menu-new { - display: none; - align-items: center; - gap: var(--nav-item-gap); - flex: 1; - justify-content: center; - padding: 0; -} - -@media (min-width: 1024px) { - .navbar-menu-new { - display: flex; - } -} - -/* Navigation Items - Klein und einfach */ -.nav-item { - display: flex; - align-items: center; - gap: 0.375rem; - padding: var(--nav-item-padding); - border-radius: 0.375rem; - color: rgb(107, 114, 128); - text-decoration: none; - font-size: 0.8125rem; - font-weight: 500; - white-space: nowrap; - transition: color 0.15s ease, background-color 0.15s ease; -} - -.dark .nav-item { - color: rgb(156, 163, 175); -} - -/* Minimale Hover-Effekte */ -.nav-item:hover { - color: rgb(59, 130, 246); - background: rgba(59, 130, 246, 0.05); -} - -.dark .nav-item:hover { - color: rgb(147, 197, 253); - background: rgba(59, 130, 246, 0.1); -} - -.nav-item.active { - color: rgb(59, 130, 246); - background: rgba(59, 130, 246, 0.08); -} - -.dark .nav-item.active { - color: rgb(147, 197, 253); - background: rgba(59, 130, 246, 0.15); -} - -/* Icons - Klein */ -.nav-item i, -.nav-item svg { - width: var(--icon-size); - height: var(--icon-size); - flex-shrink: 0; -} - -/* Mobile Menu Button - Minimal */ -#mobileMenuToggle { - display: flex; - align-items: center; - justify-content: center; - width: var(--button-size); - height: var(--button-size); - padding: 0; - background: transparent; - border: none; - border-radius: 0.375rem; - cursor: pointer; -} - -#mobileMenuToggle svg { - width: 1.25rem; - height: 1.25rem; - color: rgb(107, 114, 128); -} - -.dark #mobileMenuToggle svg { - color: rgb(156, 163, 175); -} - -@media (min-width: 1024px) { - #mobileMenuToggle { - display: none; - } -} - -/* Rechte Navbar Sektion - Kompakt */ -.navbar .flex.items-center { - gap: 0.5rem; -} - -/* Notification & User Buttons - Minimal */ -#notificationToggle, -#user-menu-button { - width: var(--button-size); - height: var(--button-size); - padding: 0; - display: flex; - align-items: center; - justify-content: center; - background: transparent; - border: none; - border-radius: 0.375rem; - cursor: pointer; - transition: background-color 0.15s ease; -} - -#notificationToggle:hover, -#user-menu-button:hover { - background: rgba(0, 0, 0, 0.05); -} - -.dark #notificationToggle:hover, -.dark #user-menu-button:hover { - background: rgba(255, 255, 255, 0.05); -} - -/* Button Icons */ -#notificationToggle i { - font-size: var(--icon-size); - color: rgb(107, 114, 128); -} - -.dark #notificationToggle i { - color: rgb(156, 163, 175); -} - -/* User Avatar - Klein */ -#user-menu-button .rounded-full { - width: 1.5rem; - height: 1.5rem; - font-size: 0.625rem; -} - -/* Notification Badge - Minimal */ -#notificationBadge { - position: absolute; - top: 0.25rem; - right: 0.25rem; - width: 0.75rem; - height: 0.75rem; - font-size: 0.5rem; - padding: 0; - display: flex; - align-items: center; - justify-content: center; -} - -/* Dark Mode Toggle - Ultra Minimal */ -.dark-mode-toggle { - width: 2rem; - height: 1rem; - background: rgb(229, 231, 235); - border-radius: 0.5rem; - cursor: pointer; - border: none; - padding: 0; - position: relative; - transition: background-color 0.15s ease; -} - -.dark .dark-mode-toggle { - background: rgb(55, 65, 81); -} - -.dark-mode-toggle-slider { - position: absolute; - top: 0.125rem; - left: 0.125rem; - width: 0.75rem; - height: 0.75rem; - background: white; - border-radius: 50%; - transition: transform 0.15s ease; - box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1); -} - -.dark .dark-mode-toggle-slider { - transform: translateX(1rem); -} - -/* Icon Größen in Toggle */ -.dark-mode-toggle-icon { - font-size: 0.5rem; -} - -/* Mobile Menu - Vereinfacht */ -.mobile-menu-new { - position: fixed; - top: var(--navbar-height); - left: 0; - right: 0; - bottom: 0; - background: var(--navbar-bg); - backdrop-filter: blur(var(--navbar-blur)); - -webkit-backdrop-filter: blur(var(--navbar-blur)); - transform: translateX(-100%); - transition: transform 0.2s ease; - overflow-y: auto; -} - -.mobile-menu-new.active { - transform: translateX(0); -} - -/* Mobile Navigation Items - Einfacher */ -.mobile-nav-item { - display: flex; - align-items: center; - gap: 0.75rem; - padding: 0.875rem 1rem; - color: rgb(107, 114, 128); - text-decoration: none; - font-size: 0.875rem; - font-weight: 500; - transition: background-color 0.15s ease; -} - -.dark .mobile-nav-item { - color: rgb(156, 163, 175); -} - -.mobile-nav-item:active { - background: rgba(0, 0, 0, 0.03); -} - -.dark .mobile-nav-item:active { - background: rgba(255, 255, 255, 0.03); -} - -.mobile-nav-item.active { - color: rgb(59, 130, 246); - background: rgba(59, 130, 246, 0.05); - border-left: 2px solid rgb(59, 130, 246); -} - -.dark .mobile-nav-item.active { - color: rgb(147, 197, 253); - background: rgba(59, 130, 246, 0.1); -} - -.mobile-nav-item i, -.mobile-nav-item svg { - width: 1.125rem; - height: 1.125rem; -} - -/* Dropdowns - Einfacher */ -#notificationDropdown, -#user-dropdown { - position: absolute; - top: 100%; - right: 0; - margin-top: 0.25rem; - background: white; - border: 1px solid var(--navbar-border); - border-radius: 0.5rem; - box-shadow: 0 4px 12px rgba(0, 0, 0, 0.08); - min-width: 16rem; - max-width: 90vw; -} - -.dark #notificationDropdown, -.dark #user-dropdown { - background: rgb(17, 24, 39); - box-shadow: 0 4px 12px rgba(0, 0, 0, 0.2); -} - -/* Responsive Anpassungen */ -@media (max-width: 640px) { - :root { - --navbar-height: 3rem; - --button-size: 1.75rem; - } - - .navbar > div { - padding: 0 0.75rem; - } - - .navbar-brand svg { - width: 1.125rem; - height: 1.125rem; - } - - .navbar-brand span { - font-size: 0.8125rem; - } - - .navbar-brand .text-xs { - display: none; - } -} - -@media (max-width: 360px) { - :root { - --button-size: 1.625rem; - --icon-size: 0.875rem; - } - - .navbar-brand span { - display: none; - } -} - -/* Tablet - Nur Icons */ -@media (min-width: 768px) and (max-width: 1023px) { - .nav-item { - padding: 0.5rem; - } - - .nav-item span { - display: none; - } -} - -/* Entferne alle Glassmorphism-Duplikate */ -.navbar::before, -.navbar::after, -.glass-nav, -.glass-navbar { - display: none !important; -} - -/* Focus States - Minimal */ -.navbar *:focus-visible { - outline: 1px solid rgb(59, 130, 246); - outline-offset: 1px; -} - -/* Performance */ -@media (prefers-reduced-motion: reduce) { - * { - animation: none !important; - transition: none !important; - } -} - -/* Touch Optimierung */ -@media (hover: none) { - .nav-item:hover, - #notificationToggle:hover, - #user-menu-button:hover { - background: transparent; - } -} \ No newline at end of file diff --git a/backend/static/css/navbar.css b/backend/static/css/navbar.css new file mode 100644 index 000000000..66b570c61 --- /dev/null +++ b/backend/static/css/navbar.css @@ -0,0 +1,468 @@ +/* ============================================= + MYP PLATFORM - MODERNE NAVBAR + Mercedes-Benz Design System + ============================================= */ + +:root { + /* Mercedes-Benz Farbpalette */ + --mb-primary: #00adef; + --mb-secondary: #6c757d; + --mb-dark: #1e2125; + --mb-light: #f8f9fa; + --mb-silver: #c7c7cc; + + /* Navbar-spezifische Variablen */ + --navbar-height: 4rem; + --navbar-bg: rgba(255, 255, 255, 0.95); + --navbar-border: rgba(0, 173, 239, 0.1); + --navbar-shadow: 0 2px 20px rgba(0, 173, 239, 0.1); + --navbar-blur: 20px; + + /* Navigation Items */ + --nav-item-hover: rgba(0, 173, 239, 0.1); + --nav-item-active: rgba(0, 173, 239, 0.15); + --nav-text-primary: #1e2125; + --nav-text-secondary: #6c757d; + --nav-text-active: #00adef; + + /* Transitions */ + --transition-fast: 0.15s ease; + --transition-smooth: 0.3s cubic-bezier(0.4, 0, 0.2, 1); +} + +.dark { + --navbar-bg: rgba(30, 33, 37, 0.95); + --navbar-border: rgba(0, 173, 239, 0.2); + --navbar-shadow: 0 2px 20px rgba(0, 0, 0, 0.3); + --nav-item-hover: rgba(0, 173, 239, 0.15); + --nav-item-active: rgba(0, 173, 239, 0.25); + --nav-text-primary: #f8f9fa; + --nav-text-secondary: #c7c7cc; +} + +/* ===== NAVBAR CONTAINER ===== */ +.navbar { + position: sticky; + top: 0; + z-index: 1000; + width: 100%; + height: var(--navbar-height); + background: var(--navbar-bg); + backdrop-filter: blur(var(--navbar-blur)); + -webkit-backdrop-filter: blur(var(--navbar-blur)); + border-bottom: 1px solid var(--navbar-border); + box-shadow: var(--navbar-shadow); + transition: all var(--transition-smooth); +} + +.navbar.scrolled { + --navbar-height: 3.5rem; + --navbar-blur: 30px; + --navbar-shadow: 0 4px 25px rgba(0, 173, 239, 0.15); +} + +/* ===== NAVBAR LAYOUT ===== */ +.navbar-container { + height: 100%; + max-width: 1400px; + margin: 0 auto; + padding: 0 1.5rem; + display: flex; + align-items: center; + justify-content: space-between; + gap: 2rem; +} + +/* ===== BRAND SECTION ===== */ +.navbar-brand { + display: flex; + align-items: center; + gap: 0.75rem; + text-decoration: none; + color: var(--nav-text-primary); + font-weight: 600; + transition: transform var(--transition-fast); + flex-shrink: 0; +} + +.navbar-brand:hover { + transform: scale(1.02); + color: var(--mb-primary); +} + +.navbar-brand .brand-icon { + width: 2rem; + height: 2rem; + color: var(--mb-primary); + transition: transform var(--transition-smooth); +} + +.navbar-brand:hover .brand-icon { + transform: rotate(15deg); +} + +.brand-text { + display: flex; + flex-direction: column; + line-height: 1.2; +} + +.brand-title { + font-size: 1.1rem; + font-weight: 700; + color: var(--nav-text-primary); +} + +.brand-subtitle { + font-size: 0.75rem; + color: var(--nav-text-secondary); + font-weight: 500; +} + +/* ===== DESKTOP NAVIGATION ===== */ +.navbar-nav { + display: none; + flex: 1; + justify-content: center; + align-items: center; + gap: 0.5rem; + background: rgba(0, 173, 239, 0.05); + border-radius: 1rem; + padding: 0.5rem; + backdrop-filter: blur(10px); + border: 1px solid rgba(0, 173, 239, 0.1); +} + +@media (min-width: 1024px) { + .navbar-nav { + display: flex; + } +} + +.nav-item { + display: flex; + align-items: center; + gap: 0.5rem; + padding: 0.5rem 0.75rem; + border-radius: 0.5rem; + color: var(--nav-text-secondary); + text-decoration: none; + font-size: 0.875rem; + font-weight: 500; + white-space: nowrap; + transition: all var(--transition-fast); + position: relative; +} + +.nav-item:hover { + color: var(--nav-text-active); + background: var(--nav-item-hover); + transform: translateY(-1px); +} + +.nav-item.active { + color: var(--nav-text-active); + background: var(--nav-item-active); + font-weight: 600; +} + +.nav-item.active::after { + content: ''; + position: absolute; + bottom: -0.25rem; + left: 50%; + transform: translateX(-50%); + width: 0.25rem; + height: 0.25rem; + background: var(--mb-primary); + border-radius: 50%; +} + +.nav-item i { + font-size: 1rem; + width: 1.25rem; + height: 1.25rem; + display: flex; + align-items: center; + justify-content: center; +} + +/* ===== NAVBAR ACTIONS (Rechte Seite) ===== */ +.navbar-actions { + display: flex; + align-items: center; + gap: 0.75rem; + flex-shrink: 0; +} + +.navbar-btn { + display: flex; + align-items: center; + justify-content: center; + width: 2.5rem; + height: 2.5rem; + border-radius: 0.75rem; + background: transparent; + border: 1px solid transparent; + color: var(--nav-text-secondary); + cursor: pointer; + transition: all var(--transition-fast); + position: relative; +} + +.navbar-btn:hover { + background: var(--nav-item-hover); + color: var(--nav-text-active); + border-color: var(--navbar-border); + transform: scale(1.05); +} + +.navbar-btn.has-notifications::after { + content: ''; + position: absolute; + top: 0.25rem; + right: 0.25rem; + width: 0.5rem; + height: 0.5rem; + background: #dc3545; + border-radius: 50%; + border: 2px solid var(--navbar-bg); +} + +/* ===== MOBILE MENU TOGGLE ===== */ +.mobile-menu-toggle { + display: flex; + align-items: center; + justify-content: center; + width: 2.5rem; + height: 2.5rem; + border: none; + background: transparent; + color: var(--nav-text-primary); + cursor: pointer; + border-radius: 0.5rem; + transition: all var(--transition-fast); +} + +.mobile-menu-toggle:hover { + background: var(--nav-item-hover); + color: var(--nav-text-active); +} + +@media (min-width: 1024px) { + .mobile-menu-toggle { + display: none; + } +} + +/* ===== MOBILE MENU ===== */ +.mobile-menu { + position: fixed; + top: var(--navbar-height); + left: 0; + right: 0; + bottom: 0; + background: var(--navbar-bg); + backdrop-filter: blur(var(--navbar-blur)); + -webkit-backdrop-filter: blur(var(--navbar-blur)); + transform: translateX(-100%); + transition: transform var(--transition-smooth); + overflow-y: auto; + z-index: 999; +} + +.mobile-menu.active { + transform: translateX(0); +} + +.mobile-nav { + padding: 2rem 1.5rem; + display: flex; + flex-direction: column; + gap: 0.5rem; +} + +.mobile-nav-item { + display: flex; + align-items: center; + gap: 1rem; + padding: 1rem; + border-radius: 0.75rem; + color: var(--nav-text-secondary); + text-decoration: none; + font-size: 1rem; + font-weight: 500; + transition: all var(--transition-fast); + border: 1px solid transparent; +} + +.mobile-nav-item:hover { + background: var(--nav-item-hover); + color: var(--nav-text-active); + border-color: var(--navbar-border); +} + +.mobile-nav-item.active { + background: var(--nav-item-active); + color: var(--nav-text-active); + border-color: var(--mb-primary); + font-weight: 600; +} + +.mobile-nav-item i { + font-size: 1.25rem; + width: 1.5rem; + height: 1.5rem; + display: flex; + align-items: center; + justify-content: center; +} + +/* ===== DROPDOWN MENUS ===== */ +.dropdown { + position: relative; +} + +.dropdown-menu { + position: absolute; + top: calc(100% + 0.5rem); + right: 0; + min-width: 16rem; + background: var(--navbar-bg); + border: 1px solid var(--navbar-border); + border-radius: 0.75rem; + box-shadow: 0 8px 30px rgba(0, 173, 239, 0.15); + backdrop-filter: blur(20px); + -webkit-backdrop-filter: blur(20px); + opacity: 0; + visibility: hidden; + transform: translateY(-0.5rem); + transition: all var(--transition-fast); + z-index: 1001; +} + +.dropdown.active .dropdown-menu { + opacity: 1; + visibility: visible; + transform: translateY(0); +} + +.dropdown-header { + padding: 1rem; + border-bottom: 1px solid var(--navbar-border); + font-size: 0.875rem; + font-weight: 600; + color: var(--nav-text-primary); +} + +.dropdown-item { + display: flex; + align-items: center; + gap: 0.75rem; + padding: 0.75rem 1rem; + color: var(--nav-text-secondary); + text-decoration: none; + font-size: 0.875rem; + transition: all var(--transition-fast); +} + +.dropdown-item:hover { + background: var(--nav-item-hover); + color: var(--nav-text-active); +} + +.dropdown-divider { + margin: 0.5rem 0; + border-top: 1px solid var(--navbar-border); +} + +/* ===== USER AVATAR ===== */ +.user-avatar { + width: 2.25rem; + height: 2.25rem; + border-radius: 50%; + background: linear-gradient(135deg, var(--mb-primary), #0086c3); + color: white; + display: flex; + align-items: center; + justify-content: center; + font-size: 0.875rem; + font-weight: 600; + cursor: pointer; + transition: all var(--transition-fast); + border: 2px solid transparent; +} + +.user-avatar:hover { + transform: scale(1.05); + border-color: var(--mb-primary); + box-shadow: 0 4px 15px rgba(0, 173, 239, 0.3); +} + +/* ===== RESPONSIVE ADJUSTMENTS ===== */ +@media (max-width: 768px) { + .navbar-container { + padding: 0 1rem; + gap: 1rem; + } + + .brand-text { + display: none; + } + + .navbar-actions { + gap: 0.5rem; + } +} + +@media (max-width: 480px) { + .navbar-container { + padding: 0 0.75rem; + } + + .navbar-actions .navbar-btn:not(.mobile-menu-toggle) { + display: none; + } +} + +/* ===== ACCESSIBILITY ===== */ +.navbar-btn:focus, +.nav-item:focus, +.mobile-nav-item:focus { + outline: 2px solid var(--mb-primary); + outline-offset: 2px; +} + +/* ===== ANIMATIONS ===== */ +@keyframes slideDown { + from { + opacity: 0; + transform: translateY(-1rem); + } + to { + opacity: 1; + transform: translateY(0); + } +} + +.navbar { + animation: slideDown 0.5s ease; +} + +/* ===== PERFORMANCE OPTIMIZATIONS ===== */ +.navbar * { + will-change: auto; +} + +.navbar-brand:hover, +.nav-item:hover, +.navbar-btn:hover { + will-change: transform; +} + +/* ===== PRINT STYLES ===== */ +@media print { + .navbar { + display: none; + } +} \ No newline at end of file diff --git a/backend/static/js/navbar.js b/backend/static/js/navbar.js new file mode 100644 index 000000000..14ea33e76 --- /dev/null +++ b/backend/static/js/navbar.js @@ -0,0 +1,403 @@ +/** + * MYP Platform - Moderne Navbar Controller + * Optimiert für Mercedes-Benz 3D-Druck-Management-System + */ + +class MYPNavbar { + constructor() { + this.navbar = document.querySelector('.navbar'); + this.mobileToggle = document.querySelector('.mobile-menu-toggle'); + this.mobileMenu = document.querySelector('.mobile-menu'); + this.dropdowns = document.querySelectorAll('.dropdown'); + this.isOpen = false; + this.activeDropdown = null; + this.scrollThreshold = 50; + this.lastScroll = 0; + + this.init(); + } + + /** + * Initialisierung aller Event-Listener und Grundfunktionen + */ + init() { + this.setupEventListeners(); + this.handleInitialState(); + this.preloadAnimations(); + + // Debug-Logging nur in Development + if (window.location.hostname === 'localhost') { + console.log('MYP Navbar initialisiert'); + } + } + + /** + * Setup aller Event-Listener mit Performance-Optimierung + */ + setupEventListeners() { + // Mobile Menu Toggle + if (this.mobileToggle && this.mobileMenu) { + this.mobileToggle.addEventListener('click', this.toggleMobileMenu.bind(this)); + } + + // Scroll-Handler mit Throttling + let scrollTimer; + window.addEventListener('scroll', () => { + if (scrollTimer) return; + + scrollTimer = setTimeout(() => { + this.handleScroll(); + scrollTimer = null; + }, 16); // ~60fps + }, { passive: true }); + + // Dropdown-Handler + this.dropdowns.forEach(dropdown => { + const trigger = dropdown.querySelector('.navbar-btn, .user-avatar'); + if (trigger) { + trigger.addEventListener('click', (e) => { + e.stopPropagation(); + this.toggleDropdown(dropdown); + }); + } + }); + + // Global Click Handler für das Schließen von Dropdowns und Mobile Menu + document.addEventListener('click', (e) => { + if (this.isOpen && !this.mobileMenu.contains(e.target)) { + this.closeMobileMenu(); + } + + if (this.activeDropdown && !this.activeDropdown.contains(e.target)) { + this.closeDropdowns(); + } + }); + + // ESC-Taste Handler + document.addEventListener('keydown', (e) => { + if (e.key === 'Escape') { + if (this.isOpen) this.closeMobileMenu(); + if (this.activeDropdown) this.closeDropdowns(); + } + }); + + // Resize-Handler mit Debouncing + let resizeTimer; + window.addEventListener('resize', () => { + clearTimeout(resizeTimer); + resizeTimer = setTimeout(() => { + this.handleResize(); + }, 250); + }); + + // Fokus-Management für Accessibility + this.setupAccessibility(); + } + + /** + * Behandlung des Scroll-Events mit optimierter Performance + */ + handleScroll() { + const currentScroll = window.pageYOffset; + + // Scroll-Direction Detection + const isScrollingDown = currentScroll > this.lastScroll; + + // Navbar Scrolled State + if (currentScroll > this.scrollThreshold) { + this.navbar.classList.add('scrolled'); + } else { + this.navbar.classList.remove('scrolled'); + } + + // Auto-hide auf sehr kleinen Bildschirmen beim Scrollen nach unten + if (window.innerWidth <= 480 && isScrollingDown && currentScroll > 200) { + this.navbar.style.transform = 'translateY(-100%)'; + } else { + this.navbar.style.transform = 'translateY(0)'; + } + + this.lastScroll = currentScroll; + } + + /** + * Mobile Menu Toggle-Funktionalität + */ + toggleMobileMenu() { + this.isOpen ? this.closeMobileMenu() : this.openMobileMenu(); + } + + /** + * Mobile Menu öffnen mit Animation + */ + openMobileMenu() { + this.isOpen = true; + this.mobileMenu.classList.add('active'); + this.mobileToggle.setAttribute('aria-expanded', 'true'); + + // Icon-Animation + const icon = this.mobileToggle.querySelector('i'); + if (icon) { + icon.className = 'fas fa-times'; + } + + // Body-Scroll blockieren + document.body.style.overflow = 'hidden'; + + // Focus auf erstes Menü-Item + const firstItem = this.mobileMenu.querySelector('.mobile-nav-item'); + if (firstItem) { + setTimeout(() => firstItem.focus(), 300); + } + + this.logEvent('Mobile Menu geöffnet'); + } + + /** + * Mobile Menu schließen mit Animation + */ + closeMobileMenu() { + this.isOpen = false; + this.mobileMenu.classList.remove('active'); + this.mobileToggle.setAttribute('aria-expanded', 'false'); + + // Icon-Animation zurücksetzen + const icon = this.mobileToggle.querySelector('i'); + if (icon) { + icon.className = 'fas fa-bars'; + } + + // Body-Scroll wiederherstellen + document.body.style.overflow = ''; + + this.logEvent('Mobile Menu geschlossen'); + } + + /** + * Dropdown Toggle-Funktionalität + */ + toggleDropdown(dropdown) { + if (this.activeDropdown === dropdown) { + this.closeDropdowns(); + } else { + this.closeDropdowns(); + this.openDropdown(dropdown); + } + } + + /** + * Dropdown öffnen + */ + openDropdown(dropdown) { + this.activeDropdown = dropdown; + dropdown.classList.add('active'); + dropdown.setAttribute('aria-expanded', 'true'); + + // Focus auf erstes Dropdown-Item + const firstItem = dropdown.querySelector('.dropdown-item'); + if (firstItem) { + setTimeout(() => firstItem.focus(), 100); + } + + this.logEvent('Dropdown geöffnet'); + } + + /** + * Alle Dropdowns schließen + */ + closeDropdowns() { + this.dropdowns.forEach(dropdown => { + dropdown.classList.remove('active'); + dropdown.setAttribute('aria-expanded', 'false'); + }); + this.activeDropdown = null; + + this.logEvent('Dropdowns geschlossen'); + } + + /** + * Resize-Handler für responsive Anpassungen + */ + handleResize() { + // Mobile Menu schließen wenn Desktop-Größe erreicht + if (window.innerWidth >= 1024 && this.isOpen) { + this.closeMobileMenu(); + } + + // Dropdowns schließen bei Größenänderung + this.closeDropdowns(); + + this.logEvent(`Fenster-Resize: ${window.innerWidth}x${window.innerHeight}`); + } + + /** + * Initialzustand der Navbar basierend auf aktueller Seite setzen + */ + handleInitialState() { + // Aktive Navigation markieren + const currentPath = window.location.pathname; + const navItems = document.querySelectorAll('.nav-item, .mobile-nav-item'); + + navItems.forEach(item => { + const href = item.getAttribute('href'); + if (href && (currentPath === href || currentPath.startsWith(href + '/'))) { + item.classList.add('active'); + } + }); + + // Scroll-Position prüfen + if (window.pageYOffset > this.scrollThreshold) { + this.navbar.classList.add('scrolled'); + } + } + + /** + * Accessibility-Features einrichten + */ + setupAccessibility() { + // Aria-Labels für bessere Zugänglichkeit + if (this.mobileToggle) { + this.mobileToggle.setAttribute('aria-label', 'Menü öffnen/schließen'); + this.mobileToggle.setAttribute('aria-expanded', 'false'); + } + + // Keyboard-Navigation für Dropdown-Menüs + this.dropdowns.forEach(dropdown => { + const items = dropdown.querySelectorAll('.dropdown-item'); + items.forEach((item, index) => { + item.addEventListener('keydown', (e) => { + if (e.key === 'ArrowDown') { + e.preventDefault(); + const nextItem = items[index + 1] || items[0]; + nextItem.focus(); + } else if (e.key === 'ArrowUp') { + e.preventDefault(); + const prevItem = items[index - 1] || items[items.length - 1]; + prevItem.focus(); + } + }); + }); + }); + } + + /** + * Performance-Optimierung: Animationen vorladen + */ + preloadAnimations() { + // CSS-Animationen vorbereiten + if (this.navbar) { + this.navbar.style.willChange = 'transform, box-shadow'; + } + + if (this.mobileMenu) { + this.mobileMenu.style.willChange = 'transform'; + } + } + + /** + * Notification Badge Update + */ + updateNotificationBadge(count) { + const notificationBtn = document.querySelector('.navbar-btn.has-notifications'); + if (notificationBtn) { + if (count > 0) { + notificationBtn.classList.add('has-notifications'); + notificationBtn.setAttribute('aria-label', `${count} neue Benachrichtigungen`); + } else { + notificationBtn.classList.remove('has-notifications'); + notificationBtn.setAttribute('aria-label', 'Benachrichtigungen'); + } + } + } + + /** + * User-Avatar Update + */ + updateUserAvatar(initials, imageUrl = null) { + const avatar = document.querySelector('.user-avatar'); + if (avatar) { + if (imageUrl) { + avatar.style.backgroundImage = `url(${imageUrl})`; + avatar.style.backgroundSize = 'cover'; + avatar.textContent = ''; + } else { + avatar.style.backgroundImage = ''; + avatar.textContent = initials || '?'; + } + } + } + + /** + * Navbar Zustand zurücksetzen + */ + reset() { + this.closeMobileMenu(); + this.closeDropdowns(); + this.navbar.classList.remove('scrolled'); + document.body.style.overflow = ''; + + this.logEvent('Navbar zurückgesetzt'); + } + + /** + * Debug-Logging mit Zeitstempel + */ + logEvent(message) { + if (window.location.hostname === 'localhost' && window.console) { + const timestamp = new Date().toLocaleTimeString(); + console.log(`[${timestamp}] MYP Navbar: ${message}`); + } + } + + /** + * Cleanup für Single-Page-Applications + */ + destroy() { + // Event-Listener entfernen + window.removeEventListener('scroll', this.handleScroll); + window.removeEventListener('resize', this.handleResize); + document.removeEventListener('click', this.closeDropdowns); + document.removeEventListener('keydown', this.handleKeydown); + + // Styles zurücksetzen + if (this.navbar) { + this.navbar.style.willChange = 'auto'; + } + + this.logEvent('Navbar zerstört'); + } +} + +/** + * Auto-Initialisierung nach DOM-Load + */ +document.addEventListener('DOMContentLoaded', () => { + // Globale Instanz für externe Zugriffe + window.MYPNavbar = new MYPNavbar(); + + // Notification-System Integration + if (window.NotificationManager) { + window.NotificationManager.onUpdate = (count) => { + window.MYPNavbar.updateNotificationBadge(count); + }; + } + + // Performance-Monitoring + if (window.performance && window.performance.mark) { + window.performance.mark('navbar-init-complete'); + } +}); + +/** + * Error-Handler für unerwartete Fehler + */ +window.addEventListener('error', (e) => { + if (e.filename && e.filename.includes('navbar.js')) { + console.error('MYP Navbar Fehler:', e.message, e.lineno); + + // Fallback: Navbar in sicheren Zustand versetzen + if (window.MYPNavbar) { + window.MYPNavbar.reset(); + } + } +}); \ No newline at end of file diff --git a/docs/CRUD_Funktionen_Analyse.md b/docs/CRUD_Funktionen_Analyse.md new file mode 100644 index 000000000..0519ecba6 --- /dev/null +++ b/docs/CRUD_Funktionen_Analyse.md @@ -0,0 +1 @@ + \ No newline at end of file