Загрузка данных


api-1  | INFO:     172.19.0.5:52900 - "GET /attachments/1?vk_id=5591905&as_download=false HTTP/1.1" 200 OK
web-1  | 172.19.0.1 - - [17/May/2026:19:08:09 +0000] "GET /attachments/1?vk_id=5591905&as_download=false HTTP/1.1" 200 176831 "https://minimax.zlatvps.space/" "Mozilla/5.0 (iPhone; CPU iPhone OS 18_7 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 MAX/26.15.2" "5.180.82.221"
db-1   | 2026-05-17 19:08:51.260 UTC [67] ERROR:  null value in column "student_vk_id" of relation "tickets" violates not-null constraint
db-1   | 2026-05-17 19:08:51.260 UTC [67] DETAIL:  Failing row contains (2, TKT-55782, null, teacher_1, lab, [Данные удалены по запросу пользов..., closed, null, null, null, 2026-05-17 14:56:47.925587, 2026-05-17 19:08:51.248143).
db-1   | 2026-05-17 19:08:51.260 UTC [67] STATEMENT:  UPDATE tickets SET student_vk_id=NULL, updated_at='2026-05-17T19:08:51.248143'::timestamp WHERE tickets.id = 2
api-1  | INFO:     172.19.0.5:37710 - "DELETE /users/5591905/data HTTP/1.1" 500 Internal Server Error
api-1  | ERROR:    Exception in ASGI application
api-1  | Traceback (most recent call last):
api-1  |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 1967, in _exec_single_context
api-1  |     self.dialect.do_execute(
api-1  |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/default.py", line 952, in do_execute
api-1  |     cursor.execute(statement, parameters)
api-1  | psycopg2.errors.NotNullViolation: null value in column "student_vk_id" of relation "tickets" violates not-null constraint
api-1  | DETAIL:  Failing row contains (2, TKT-55782, null, teacher_1, lab, [Данные удалены по запросу пользов..., closed, null, null, null, 2026-05-17 14:56:47.925587, 2026-05-17 19:08:51.248143).
api-1  | 
api-1  | 
api-1  | The above exception was the direct cause of the following exception:
api-1  | 
api-1  | Traceback (most recent call last):
api-1  |   File "/usr/local/lib/python3.12/site-packages/uvicorn/protocols/http/httptools_impl.py", line 421, in run_asgi
api-1  |     result = await app(  # type: ignore[func-returns-value]
web-1  | 172.19.0.1 - - [17/May/2026:19:08:51 +0000] "DELETE /users/5591905/data HTTP/1.1" 500 21 "https://minimax.zlatvps.space/" "Mozilla/5.0 (iPhone; CPU iPhone OS 18_7 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 MAX/26.15.2" "5.180.82.221"
api-1  |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
api-1  |   File "/usr/local/lib/python3.12/site-packages/uvicorn/middleware/proxy_headers.py", line 56, in __call__
api-1  |     return await self.app(scope, receive, send)
api-1  |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
api-1  |   File "/usr/local/lib/python3.12/site-packages/fastapi/applications.py", line 1159, in __call__
api-1  |     await super().__call__(scope, receive, send)
api-1  |   File "/usr/local/lib/python3.12/site-packages/starlette/applications.py", line 90, in __call__
api-1  |     await self.middleware_stack(scope, receive, send)
api-1  |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/errors.py", line 186, in __call__
api-1  |     raise exc
api-1  |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/errors.py", line 164, in __call__
api-1  |     await self.app(scope, receive, _send)
api-1  |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 191, in __call__
api-1  |     with recv_stream, send_stream, collapse_excgroups():
api-1  |                                    ^^^^^^^^^^^^^^^^^^^^
api-1  |   File "/usr/local/lib/python3.12/contextlib.py", line 158, in __exit__
api-1  |     self.gen.throw(value)
api-1  |   File "/usr/local/lib/python3.12/site-packages/starlette/_utils.py", line 87, in collapse_excgroups
api-1  |     raise exc
api-1  |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 193, in __call__
api-1  |     response = await self.dispatch_func(request, call_next)
api-1  |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
api-1  |   File "/app/main.py", line 74, in session_middleware
api-1  |     return await call_next(request)
api-1  |            ^^^^^^^^^^^^^^^^^^^^^^^^
api-1  |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 168, in call_next
api-1  |     raise app_exc from app_exc.__cause__ or app_exc.__context__
api-1  |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 144, in coro
api-1  |     await self.app(scope, receive_or_disconnect, send_no_error)
api-1  |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/cors.py", line 96, in __call__
api-1  |     await self.simple_response(scope, receive, send, request_headers=headers)
api-1  |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/cors.py", line 154, in simple_response
api-1  |     await self.app(scope, receive, send)
api-1  |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/exceptions.py", line 63, in __call__
api-1  |     await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)
api-1  |   File "/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
api-1  |     raise exc
api-1  |   File "/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
api-1  |     await app(scope, receive, sender)
api-1  |   File "/usr/local/lib/python3.12/site-packages/fastapi/middleware/asyncexitstack.py", line 18, in __call__
api-1  |     await self.app(scope, receive, send)
api-1  |   File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 660, in __call__
api-1  |     await self.middleware_stack(scope, receive, send)
api-1  |   File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 680, in app
api-1  |     await route.handle(scope, receive, send)
api-1  |   File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 276, in handle
api-1  |     await self.app(scope, receive, send)
api-1  |   File "/usr/local/lib/python3.12/site-packages/fastapi/routing.py", line 134, in app
api-1  |     await wrap_app_handling_exceptions(app, request)(scope, receive, send)
api-1  |   File "/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
api-1  |     raise exc
api-1  |   File "/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
api-1  |     await app(scope, receive, sender)
api-1  |   File "/usr/local/lib/python3.12/site-packages/fastapi/routing.py", line 120, in app
api-1  |     response = await f(request)
api-1  |                ^^^^^^^^^^^^^^^^
api-1  |   File "/usr/local/lib/python3.12/site-packages/fastapi/routing.py", line 674, in app
api-1  |     raw_response = await run_endpoint_function(
api-1  |                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
api-1  |   File "/usr/local/lib/python3.12/site-packages/fastapi/routing.py", line 330, in run_endpoint_function
api-1  |     return await run_in_threadpool(dependant.call, **values)
api-1  |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
api-1  |   File "/usr/local/lib/python3.12/site-packages/starlette/concurrency.py", line 32, in run_in_threadpool
api-1  |     return await anyio.to_thread.run_sync(func)
api-1  |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
api-1  |   File "/usr/local/lib/python3.12/site-packages/anyio/to_thread.py", line 63, in run_sync
api-1  |     return await get_async_backend().run_sync_in_worker_thread(
api-1  |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
api-1  |   File "/usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py", line 2518, in run_sync_in_worker_thread
api-1  |     return await future
api-1  |            ^^^^^^^^^^^^
api-1  |   File "/usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py", line 1002, in run
api-1  |     result = context.run(func, *args)
api-1  |              ^^^^^^^^^^^^^^^^^^^^^^^^
api-1  |   File "/app/main.py", line 620, in delete_user_data
api-1  |     db.commit()
api-1  |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 2030, in commit
api-1  |     trans.commit(_to_root=True)
api-1  |   File "<string>", line 2, in commit
api-1  |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/state_changes.py", line 137, in _go
api-1  |     ret_value = fn(self, *arg, **kw)
api-1  |                 ^^^^^^^^^^^^^^^^^^^^
api-1  |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 1311, in commit
api-1  |     self._prepare_impl()
api-1  |   File "<string>", line 2, in _prepare_impl
api-1  |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/state_changes.py", line 137, in _go
api-1  |     ret_value = fn(self, *arg, **kw)
api-1  |                 ^^^^^^^^^^^^^^^^^^^^
api-1  |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 1286, in _prepare_impl
api-1  |     self.session.flush()
api-1  |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 4331, in flush
api-1  |     self._flush(objects)
api-1  |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 4466, in _flush
api-1  |     with util.safe_reraise():
api-1  |          ^^^^^^^^^^^^^^^^^^^
api-1  |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/langhelpers.py", line 121, in __exit__
api-1  |     raise exc_value.with_traceback(exc_tb)
api-1  |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 4427, in _flush
api-1  |     flush_context.execute()
api-1  |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/unitofwork.py", line 466, in execute
api-1  |     rec.execute(self)
api-1  |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/unitofwork.py", line 642, in execute
api-1  |     util.preloaded.orm_persistence.save_obj(
api-1  |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/persistence.py", line 85, in save_obj
api-1  |     _emit_update_statements(
api-1  |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/persistence.py", line 912, in _emit_update_statements
api-1  |     c = connection.execute(
api-1  |         ^^^^^^^^^^^^^^^^^^^
api-1  |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 1419, in execute
api-1  |     return meth(
api-1  |            ^^^^^
api-1  |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/sql/elements.py", line 527, in _execute_on_connection
api-1  |     return connection._execute_clauseelement(
api-1  |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
api-1  |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 1641, in _execute_clauseelement
api-1  |     ret = self._execute_context(
api-1  |           ^^^^^^^^^^^^^^^^^^^^^^
api-1  |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 1846, in _execute_context
api-1  |     return self._exec_single_context(
api-1  |            ^^^^^^^^^^^^^^^^^^^^^^^^^^
api-1  |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 1986, in _exec_single_context
api-1  |     self._handle_dbapi_exception(
api-1  |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 2363, in _handle_dbapi_exception
api-1  |     raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
api-1  |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 1967, in _exec_single_context
api-1  |     self.dialect.do_execute(
api-1  |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/default.py", line 952, in do_execute
api-1  |     cursor.execute(statement, parameters)
api-1  | sqlalchemy.exc.IntegrityError: (psycopg2.errors.NotNullViolation) null value in column "student_vk_id" of relation "tickets" violates not-null constraint
api-1  | DETAIL:  Failing row contains (2, TKT-55782, null, teacher_1, lab, [Данные удалены по запросу пользов..., closed, null, null, null, 2026-05-17 14:56:47.925587, 2026-05-17 19:08:51.248143).
api-1  | 
api-1  | [SQL: UPDATE tickets SET student_vk_id=%(student_vk_id)s, updated_at=%(updated_at)s WHERE tickets.id = %(tickets_id)s]
api-1  | [parameters: {'student_vk_id': None, 'updated_at': datetime.datetime(2026, 5, 17, 19, 8, 51, 248143), 'tickets_id': 2}]
api-1  | (Background on this error at: https://sqlalche.me/e/20/gkpj)