jiachenlong/backend/logs/app.log

48 lines
154 KiB
Plaintext
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{"timestamp": "2026-04-15T04:06:34.997704Z", "level": "INFO", "logger": "root", "message": "甲辰收藏系统 FastAPI 后端 v0.0.0 启动成功", "trace_id": "979705e7-6942-4347-af1b-886297594d66", "user_id": null, "request_id": "857409fa-6f64-424a-9cbd-8c2c7cb4cd15", "ip_address": null, "duration_ms": null}
{"timestamp": "2026-04-15T04:07:02.330013Z", "level": "INFO", "logger": "root", "message": "甲辰收藏系统 FastAPI 后端 v0.0.0 启动成功", "trace_id": "4cec75a0-0ae3-4a30-86fe-b2a3bca6943e", "user_id": null, "request_id": "c96d816b-309a-447e-9241-fe005a769d31", "ip_address": null, "duration_ms": null}
{"timestamp": "2026-04-15T04:07:33.485146Z", "level": "INFO", "logger": "root", "message": "甲辰收藏系统 FastAPI 后端 v0.0.0 启动成功", "trace_id": "f3762a9d-0c17-4bc7-be60-70c1b7b579d2", "user_id": null, "request_id": "799e1335-ab10-4aa4-aeaa-b6f77a6c7eb2", "ip_address": null, "duration_ms": null}
{"timestamp": "2026-04-15T04:07:55.082694Z", "level": "ERROR", "logger": "app.core.database", "message": "数据库会话错误: type object 'Information' has no attribute 'deal_no'", "trace_id": "aa0f7d18-0428-47f0-92d3-13698ad6f8ce", "user_id": null, "request_id": "c68777ae-fd05-4192-bb5f-c105ba038bfc", "ip_address": null, "duration_ms": null}
{"timestamp": "2026-04-15T04:07:55.086656Z", "level": "ERROR", "logger": "root", "message": "API 请求异常GET /api/information/list", "trace_id": "2895acdc-f404-415b-b8bb-65cc76367aab", "user_id": null, "request_id": "ada08c80-2231-445b-b4f3-0c67239a1f8e", "ip_address": "127.0.0.1", "duration_ms": 21.480321884155273, "data": {"method": "GET", "path": "/api/information/list", "query": "info_type=yichen&page=1&page_size=2", "error": "type object 'Information' has no attribute 'deal_no'"}, "exception": "Traceback (most recent call last):\n File \"/usr/local/lib/python3.12/dist-packages/starlette/middleware/base.py\", line 159, in call_next\n message = await recv_stream.receive()\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/usr/local/lib/python3.12/dist-packages/anyio/streams/memory.py\", line 132, in receive\n raise EndOfStream from None\nanyio.EndOfStream\n\nDuring handling of the above exception, another exception occurred:\n\nTraceback (most recent call last):\n File \"/root/.openclaw/workspace/jiachenlong/backend/app/middleware/logging.py\", line 28, in logging_middleware\n response = await call_next(request)\n ^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/usr/local/lib/python3.12/dist-packages/starlette/middleware/base.py\", line 165, in call_next\n raise app_exc\n File \"/usr/local/lib/python3.12/dist-packages/starlette/middleware/base.py\", line 151, in coro\n await self.app(scope, receive_or_disconnect, send_no_error)\n File \"/usr/local/lib/python3.12/dist-packages/starlette/middleware/cors.py\", line 83, in __call__\n await self.app(scope, receive, send)\n File \"/usr/local/lib/python3.12/dist-packages/starlette/middleware/exceptions.py\", line 62, in __call__\n await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)\n File \"/usr/local/lib/python3.12/dist-packages/starlette/_exception_handler.py\", line 64, in wrapped_app\n raise exc\n File \"/usr/local/lib/python3.12/dist-packages/starlette/_exception_handler.py\", line 53, in wrapped_app\n await app(scope, receive, sender)\n File \"/usr/local/lib/python3.12/dist-packages/starlette/routing.py\", line 762, in __call__\n await self.middleware_stack(scope, receive, send)\n File \"/usr/local/lib/python3.12/dist-packages/starlette/routing.py\", line 782, in app\n await route.handle(scope, receive, send)\n File \"/usr/local/lib/python3.12/dist-packages/starlette/routing.py\", line 297, in handle\n await self.app(scope, receive, send)\n File \"/usr/local/lib/python3.12/dist-packages/starlette/routing.py\", line 77, in app\n await wrap_app_handling_exceptions(app, request)(scope, receive, send)\n File \"/usr/local/lib/python3.12/dist-packages/starlette/_exception_handler.py\", line 64, in wrapped_app\n raise exc\n File \"/usr/local/lib/python3.12/dist-packages/starlette/_exception_handler.py\", line 53, in wrapped_app\n await app(scope, receive, sender)\n File \"/usr/local/lib/python3.12/dist-packages/starlette/routing.py\", line 72, in app\n response = await func(request)\n ^^^^^^^^^^^^^^^^^^^\n File \"/usr/local/lib/python3.12/dist-packages/fastapi/routing.py\", line 299, in app\n raise e\n File \"/usr/local/lib/python3.12/dist-packages/fastapi/routing.py\", line 294, in app\n raw_response = await run_endpoint_function(\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/usr/local/lib/python3.12/dist-packages/fastapi/routing.py\", line 193, in run_endpoint_function\n return await run_in_threadpool(dependant.call, **values)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/usr/local/lib/python3.12/dist-packages/starlette/concurrency.py\", line 40, in run_in_threadpool\n return await anyio.to_thread.run_sync(func, *args)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/usr/local/lib/python3.12/dist-packages/anyio/to_thread.py\", line 63, in run_sync\n return await get_async_backend().run_sync_in_worker_thread(\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/usr/local/lib/python3.12/dist-packages/anyio/_backends/_asyncio.py\", line 2502, in run_sync_in_worker_thread\n return await future\n ^^^^^^^^^^^^\n File \"/usr/local/lib/python3.12/dist-packages/anyio/_backends/_asyncio.py\", line 986, in run\n result = context.run(func, *args)\n ^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/root/.openclaw/workspace/jiachenlong/backend/app/routers/information.py\", line 135, in get_information_list\n query = query.order_by(Information.deal_date.desc().nullslast(), Information.deal_no.desc().nullslast())\n ^^^^^^^^^^^^^^^^^^^\nAttributeError: type object 'Information' has no attribute 'deal_no'"}
{"timestamp": "2026-04-15T04:07:55.093581Z", "level": "ERROR", "logger": "root", "message": "未捕获异常type object 'Information' has no attribute 'deal_no'\n + Exception Group Traceback (most recent call last):\n | File \"/usr/local/lib/python3.12/dist-packages/starlette/_utils.py\", line 85, in collapse_excgroups\n | yield\n | File \"/usr/local/lib/python3.12/dist-packages/starlette/middleware/base.py\", line 190, in __call__\n | async with anyio.create_task_group() as task_group:\n | File \"/usr/local/lib/python3.12/dist-packages/anyio/_backends/_asyncio.py\", line 783, in __aexit__\n | raise BaseExceptionGroup(\n | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception)\n +-+---------------- 1 ----------------\n | Traceback (most recent call last):\n | File \"/usr/local/lib/python3.12/dist-packages/starlette/middleware/errors.py\", line 164, in __call__\n | await self.app(scope, receive, _send)\n | File \"/usr/local/lib/python3.12/dist-packages/starlette/middleware/base.py\", line 189, in __call__\n | with collapse_excgroups():\n | File \"/usr/lib/python3.12/contextlib.py\", line 158, in __exit__\n | self.gen.throw(value)\n | File \"/usr/local/lib/python3.12/dist-packages/starlette/_utils.py\", line 91, in collapse_excgroups\n | raise exc\n | File \"/usr/local/lib/python3.12/dist-packages/starlette/middleware/base.py\", line 191, in __call__\n | response = await self.dispatch_func(request, call_next)\n | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n | File \"/root/.openclaw/workspace/jiachenlong/backend/app/middleware/logging.py\", line 28, in logging_middleware\n | response = await call_next(request)\n | ^^^^^^^^^^^^^^^^^^^^^^^^\n | File \"/usr/local/lib/python3.12/dist-packages/starlette/middleware/base.py\", line 165, in call_next\n | raise app_exc\n | File \"/usr/local/lib/python3.12/dist-packages/starlette/middleware/base.py\", line 151, in coro\n | await self.app(scope, receive_or_disconnect, send_no_error)\n | File \"/usr/local/lib/python3.12/dist-packages/starlette/middleware/cors.py\", line 83, in __call__\n | await self.app(scope, receive, send)\n | File \"/usr/local/lib/python3.12/dist-packages/starlette/middleware/exceptions.py\", line 62, in __call__\n | await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)\n | File \"/usr/local/lib/python3.12/dist-packages/starlette/_exception_handler.py\", line 64, in wrapped_app\n | raise exc\n | File \"/usr/local/lib/python3.12/dist-packages/starlette/_exception_handler.py\", line 53, in wrapped_app\n | await app(scope, receive, sender)\n | File \"/usr/local/lib/python3.12/dist-packages/starlette/routing.py\", line 762, in __call__\n | await self.middleware_stack(scope, receive, send)\n | File \"/usr/local/lib/python3.12/dist-packages/starlette/routing.py\", line 782, in app\n | await route.handle(scope, receive, send)\n | File \"/usr/local/lib/python3.12/dist-packages/starlette/routing.py\", line 297, in handle\n | await self.app(scope, receive, send)\n | File \"/usr/local/lib/python3.12/dist-packages/starlette/routing.py\", line 77, in app\n | await wrap_app_handling_exceptions(app, request)(scope, receive, send)\n | File \"/usr/local/lib/python3.12/dist-packages/starlette/_exception_handler.py\", line 64, in wrapped_app\n | raise exc\n | File \"/usr/local/lib/python3.12/dist-packages/starlette/_exception_handler.py\", line 53, in wrapped_app\n | await app(scope, receive, sender)\n | File \"/usr/local/lib/python3.12/dist-packages/starlette/routing.py\", line 72, in app\n | response = await func(request)\n | ^^^^^^^^^^^^^^^^^^^\n | File \"/usr/local/lib/python3.12/dist-packages/fastapi/routing.py\", line 299, in app\n | raise e\n | File \"/usr/local/lib/python3.12/dist-packages/fastapi/routing.py\", line 294, in app\n | raw_response = await run_endpoint_function(\n | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n | File \"/usr/local/lib/python3.12/dist-packages/fastapi/routing.py\", line 193, in run_endpoint_function\n | return await run_in_threadpool(dependant.call, **values)\n | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n | File \"/usr/local/lib/python3.12/dist-packages/starlette/concurrency.py\", line 40, in run_in_threadpool\n | return await anyio.to_thread.run_sync(func, *args)\n | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n | File \"/usr/local/lib/python3.12/dist-packages/anyio/to_thread.py\", line 63, in run_sync\n | return await get_async_backend().run_sync_in_worker_thread(\n | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n | File \"/usr/local/lib/python3.12/dist-packages/anyio/_backends/_asyncio.py\", line 2502, in run_sync_in_worker_thread\n | return await future\n | ^^^^^^^^^^^^\n | File \"/usr/local/lib/python3.12/dist-packages/anyio/_backends/_asyncio.py\", line 986, in run\n | result = context.run(func, *args)\n | ^^^^^^^^^^^^^^^^^^^^^^^^\n | File \"/root/.openclaw/workspace/jiachenlong/backend/app/routers/information.py\", line 135, in get_information_list\n | query = query.order_by(Information.deal_date.desc().nullslast(), Information.deal_no.desc().nullslast())\n | ^^^^^^^^^^^^^^^^^^^\n | AttributeError: type object 'Information' has no attribute 'deal_no'\n +------------------------------------\n\nDuring handling of the above exception, another exception occurred:\n\nTraceback (most recent call last):\n File \"/usr/local/lib/python3.12/dist-packages/starlette/middleware/errors.py\", line 164, in __call__\n await self.app(scope, receive, _send)\n File \"/usr/local/lib/python3.12/dist-packages/starlette/middleware/base.py\", line 189, in __call__\n with collapse_excgroups():\n File \"/usr/lib/python3.12/contextlib.py\", line 158, in __exit__\n self.gen.throw(value)\n File \"/usr/local/lib/python3.12/dist-packages/starlette/_utils.py\", line 91, in collapse_excgroups\n raise exc\n File \"/usr/local/lib/python3.12/dist-packages/starlette/middleware/base.py\", line 191, in __call__\n response = await self.dispatch_func(request, call_next)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/root/.openclaw/workspace/jiachenlong/backend/app/middleware/logging.py\", line 28, in logging_middleware\n response = await call_next(request)\n ^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/usr/local/lib/python3.12/dist-packages/starlette/middleware/base.py\", line 165, in call_next\n raise app_exc\n File \"/usr/local/lib/python3.12/dist-packages/starlette/middleware/base.py\", line 151, in coro\n await self.app(scope, receive_or_disconnect, send_no_error)\n File \"/usr/local/lib/python3.12/dist-packages/starlette/middleware/cors.py\", line 83, in __call__\n await self.app(scope, receive, send)\n File \"/usr/local/lib/python3.12/dist-packages/starlette/middleware/exceptions.py\", line 62, in __call__\n await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)\n File \"/usr/local/lib/python3.12/dist-packages/starlette/_exception_handler.py\", line 64, in wrapped_app\n raise exc\n File \"/usr/local/lib/python3.12/dist-packages/starlette/_exception_handler.py\", line 53, in wrapped_app\n await app(scope, receive, sender)\n File \"/usr/local/lib/python3.12/dist-packages/starlette/routing.py\", line 762, in __call__\n await self.middleware_stack(scope, receive, send)\n File \"/usr/local/lib/python3.12/dist-packages/starlette/routing.py\", line 782, in app\n await route.handle(scope, receive, send)\n File \"/usr/local/lib/python3.12/dist-packages/starlette/routing.py\", line 297, in handle\n await self.app(scope, receive, send)\n File \"/usr/local/lib/python3.12/dist-packages/starlette/routing.py\", line 77, in app\n await wrap_app_handling_exceptions(app, request)(scope, receive, send)\n File \"/usr/local/lib/python3.12/dist-packages/starlette/_exception_handler.py\", line 64, in wrapped_app\n raise exc\n File \"/usr/local/lib/python3.12/dist-packages/starlette/_exception_handler.py\", line 53, in wrapped_app\n await app(scope, receive, sender)\n File \"/usr/local/lib/python3.12/dist-packages/starlette/routing.py\", line 72, in app\n response = await func(request)\n ^^^^^^^^^^^^^^^^^^^\n File \"/usr/local/lib/python3.12/dist-packages/fastapi/routing.py\", line 299, in app\n raise e\n File \"/usr/local/lib/python3.12/dist-packages/fastapi/routing.py\", line 294, in app\n raw_response = await run_endpoint_function(\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/usr/local/lib/python3.12/dist-packages/fastapi/routing.py\", line 193, in run_endpoint_function\n return await run_in_threadpool(dependant.call, **values)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/usr/local/lib/python3.12/dist-packages/starlette/concurrency.py\", line 40, in run_in_threadpool\n return await anyio.to_thread.run_sync(func, *args)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/usr/local/lib/python3.12/dist-packages/anyio/to_thread.py\", line 63, in run_sync\n return await get_async_backend().run_sync_in_worker_thread(\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/usr/local/lib/python3.12/dist-packages/anyio/_backends/_asyncio.py\", line 2502, in run_sync_in_worker_thread\n return await future\n ^^^^^^^^^^^^\n File \"/usr/local/lib/python3.12/dist-packages/anyio/_backends/_asyncio.py\", line 986, in run\n result = context.run(func, *args)\n ^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/root/.openclaw/workspace/jiachenlong/backend/app/routers/information.py\", line 135, in get_information_list\n query = query.order_by(Information.deal_date.desc().nullslast(), Information.deal_no.desc().nullslast())\n ^^^^^^^^^^^^^^^^^^^\nAttributeError: type object 'Information' has no attribute 'deal_no'\n", "trace_id": "18a49976-49f4-45a5-a927-190bcb2f4b86", "user_id": null, "request_id": "0eb02dbe-30c6-4693-a456-36e9aa54abbe", "ip_address": null, "duration_ms": null}
{"timestamp": "2026-04-15T04:09:13.628237Z", "level": "INFO", "logger": "root", "message": "甲辰收藏系统 FastAPI 后端 v0.0.0 启动成功", "trace_id": "ba877311-e544-42b4-8b25-aa7058128c64", "user_id": null, "request_id": "33a35503-64c1-4359-8ed0-151527e274cb", "ip_address": null, "duration_ms": null}
{"timestamp": "2026-04-15T04:09:17.533102Z", "level": "ERROR", "logger": "app.core.database", "message": "数据库会话错误: (psycopg2.errors.UndefinedColumn) column users_1.f99_101_invited_count does not exist\nLINE 1: ...f01_13_invite_code AS users_1_f01_13_invite_code, users_1.f9...\n ^\n\n[SQL: SELECT information.id AS information_id, information.user_id AS information_user_id, information.info_type AS information_info_type, information.title AS information_title, information.content AS information_content, information.collection_id AS information_collection_id, information.expect_category AS information_expect_category, information.expect_version AS information_expect_version, information.expect_packaging AS information_expect_packaging, information.expect_number AS information_expect_number, information.expect_price_min AS information_expect_price_min, information.expect_price_max AS information_expect_price_max, information.deal_price AS information_deal_price, information.deal_date AS information_deal_date, information.status AS information_status, information.is_matched AS information_is_matched, information.matched_user_id AS information_matched_user_id, information.matched_contact AS information_matched_contact, information.view_count AS information_view_count, information.contact_count AS information_contact_count, information.created_at AS information_created_at, information.updated_at AS information_updated_at, information.author AS information_author, users_1.f99_90_id AS users_1_f99_90_id, users_1.user_code AS users_1_user_code, users_1.f99_91_user_id AS users_1_f99_91_user_id, users_1.f01_01_name AS users_1_f01_01_name, users_1.email AS users_1_email, users_1.phone AS users_1_phone, users_1.avatar AS users_1_avatar, users_1.address AS users_1_address, users_1.bio AS users_1_bio, users_1.password AS users_1_password, users_1.role AS users_1_role, users_1.f99_92_created_at AS users_1_f99_92_created_at, users_1.f99_93_updated_at AS users_1_f99_93_updated_at, users_1.f99_94_level AS users_1_f99_94_level, users_1.f99_95_ai_count AS users_1_f99_95_ai_count, users_1.f99_96_search_count AS users_1_f99_96_search_count, users_1.f99_97_collection_count AS users_1_f99_97_collection_count, users_1.f01_06_phone_verified AS users_1_f01_06_phone_verified, users_1.f99_98_login_count AS users_1_f99_98_login_count, users_1.f99_99_last_login AS users_1_f99_99_last_login, users_1.f01_07_gender AS users_1_f01_07_gender, users_1.f01_08_birthday AS users_1_f01_08_birthday, users_1.f01_09_region AS users_1_f01_09_region, users_1.f01_10_realname_verified AS users_1_f01_10_realname_verified, users_1.f99_100_points AS users_1_f99_100_points, users_1.f01_11_balance AS users_1_f01_11_balance, users_1.f01_12_total_amount AS users_1_f01_12_total_amount, users_1.f01_13_invite_code AS users_1_f01_13_invite_code, users_1.f99_101_invited_count AS users_1_f99_101_invited_count, users_1.f99_101_information_count AS users_1_f99_101_information_count, collections_1.f99_90_id AS collections_1_f99_90_id, collections_1.f99_91_user_id AS collections_1_f99_91_user_id, collections_1.f99_92_created_at AS collections_1_f99_92_created_at, collections_1.f99_93_updated_at AS collections_1_f99_93_updated_at, collections_1.f01_01_name AS collections_1_f01_01_name, collections_1.f01_02_code AS collections_1_f01_02_code, collections_1.f01_03_category AS collections_1_f01_03_category, collections_1.f01_04_status AS collections_1_f01_04_status, collections_1.f01_05_remark AS collections_1_f01_05_remark, collections_1.f02_10_prefix_serial AS collections_1_f02_10_prefix_serial, collections_1.f02_11_version AS collections_1_f02_11_version, collections_1.f02_12_packaging AS collections_1_f02_12_packaging, collections_1.f02_13_rarity AS collections_1_f02_13_rarity, collections_1.f02_14_number_category AS collections_1_f02_14_number_category, collections_1.f03_20_is_graded AS collections_1_f03_20_is_graded, collections_1.f03_21_grading_company AS collections_1_f03_21_grading_company, collections_1.f03_22_grading_score AS collections_1_f03_22_grading_score, collections_1.f03_23_three_star AS collections_1_f03_23_three_star, collections_1.f04_30_special_mark AS collections_1_f04_30_special_mark, collections_1.f04_31_serial_feature AS collections_1_f04_31_serial_feature, collections_1.f04_32_issuer AS collections_1_f04_32_issuer, collections_1.f04_33_issue_year AS collections_1_f04_33_issue_year, collections_1.f04_34_material AS collections_1_f04_34_material, collections_1.f04_35_denomination AS collections_1_f04_35_denomination, collections_1.f04_36_issue_quantity AS collections_1_f04_36_issue_quantity, collections_1.f05_40_cost_price AS collections_1_f05_40_cost_price, collections_1.f05_41_target_price AS collections_1_f05_41_target_price, collections_1.f05_42_goal_price AS collections_1_f05_42_goal_price, collections_1.f05_43_repair_fee AS collections_1_f05_43_repair_fee, collections_1.f05_44_grading_fee AS collections_1_f05_44_grading_fee, collections_1.f06_50_purpose AS collections_1_f06_50_purpose \nFROM information LEFT OUTER JOIN users AS users_1 ON users_1.f99_90_id = information.user_id LEFT OUTER JOIN collections AS collections_1 ON collections_1.f99_90_id = information.collection_id \nWHERE information.status = %(status_1)s AND information.info_type = %(info_type_1)s ORDER BY information.deal_date DESC NULLS LAST \n LIMIT %(param_1)s OFFSET %(param_2)s]\n[parameters: {'status_1': 'active', 'info_type_1': 'yichen', 'param_1': 2, 'param_2': 0}]\n(Background on this error at: https://sqlalche.me/e/20/f405)", "trace_id": "1527cf36-195d-49ae-aa16-0487f464ad72", "user_id": null, "request_id": "b5f2c384-c275-4339-9155-ec8dfdb7b482", "ip_address": null, "duration_ms": null}
{"timestamp": "2026-04-15T04:09:17.539802Z", "level": "ERROR", "logger": "root", "message": "API 请求异常GET /api/information/list", "trace_id": "f24c915b-4e68-45a0-b01c-1f887ed5a8f9", "user_id": null, "request_id": "ab15af30-5ddb-464f-96de-56c91b85e0a1", "ip_address": "127.0.0.1", "duration_ms": 32.13644027709961, "data": {"method": "GET", "path": "/api/information/list", "query": "info_type=yichen&page=1&page_size=2", "error": "(psycopg2.errors.UndefinedColumn) column users_1.f99_101_invited_count does not exist\nLINE 1: ...f01_13_invite_code AS users_1_f01_13_invite_code, users_1.f9...\n ^\n\n[SQL: SELECT information.id AS information_id, information.user_id AS information_user_id, information.info_type AS information_info_type, information.title AS information_title, information.content AS information_content, information.collection_id AS information_collection_id, information.expect_category AS information_expect_category, information.expect_version AS information_expect_version, information.expect_packaging AS information_expect_packaging, information.expect_number AS information_expect_number, information.expect_price_min AS information_expect_price_min, information.expect_price_max AS information_expect_price_max, information.deal_price AS information_deal_price, information.deal_date AS information_deal_date, information.status AS information_status, information.is_matched AS information_is_matched, information.matched_user_id AS information_matched_user_id, information.matched_contact AS information_matched_contact, information.view_count AS information_view_count, information.contact_count AS information_contact_count, information.created_at AS information_created_at, information.updated_at AS information_updated_at, information.author AS information_author, users_1.f99_90_id AS users_1_f99_90_id, users_1.user_code AS users_1_user_code, users_1.f99_91_user_id AS users_1_f99_91_user_id, users_1.f01_01_name AS users_1_f01_01_name, users_1.email AS users_1_email, users_1.phone AS users_1_phone, users_1.avatar AS users_1_avatar, users_1.address AS users_1_address, users_1.bio AS users_1_bio, users_1.password AS users_1_password, users_1.role AS users_1_role, users_1.f99_92_created_at AS users_1_f99_92_created_at, users_1.f99_93_updated_at AS users_1_f99_93_updated_at, users_1.f99_94_level AS users_1_f99_94_level, users_1.f99_95_ai_count AS users_1_f99_95_ai_count, users_1.f99_96_search_count AS users_1_f99_96_search_count, users_1.f99_97_collection_count AS users_1_f99_97_collection_count, users_1.f01_06_phone_verified AS users_1_f01_06_phone_verified, users_1.f99_98_login_count AS users_1_f99_98_login_count, users_1.f99_99_last_login AS users_1_f99_99_last_login, users_1.f01_07_gender AS users_1_f01_07_gender, users_1.f01_08_birthday AS users_1_f01_08_birthday, users_1.f01_09_region AS users_1_f01_09_region, users_1.f01_10_realname_verified AS users_1_f01_10_realname_verified, users_1.f99_100_points AS users_1_f99_100_points, users_1.f01_11_balance AS users_1_f01_11_balance, users_1.f01_12_total_amount AS users_1_f01_12_total_amount, users_1.f01_13_invite_code AS users_1_f01_13_invite_code, users_1.f99_101_invited_count AS users_1_f99_101_invited_count, users_1.f99_101_information_count AS users_1_f99_101_information_count, collections_1.f99_90_id AS collections_1_f99_90_id, collections_1.f99_91_user_id AS collections_1_f99_91_user_id, collections_1.f99_92_created_at AS collections_1_f99_92_created_at, collections_1.f99_93_updated_at AS collections_1_f99_93_updated_at, collections_1.f01_01_name AS collections_1_f01_01_name, collections_1.f01_02_code AS collections_1_f01_02_code, collections_1.f01_03_category AS collections_1_f01_03_category, collections_1.f01_04_status AS collections_1_f01_04_status, collections_1.f01_05_remark AS collections_1_f01_05_remark, collections_1.f02_10_prefix_serial AS collections_1_f02_10_prefix_serial, collections_1.f02_11_version AS collections_1_f02_11_version, collections_1.f02_12_packaging AS collections_1_f02_12_packaging, collections_1.f02_13_rarity AS collections_1_f02_13_rarity, collections_1.f02_14_number_category AS collections_1_f02_14_number_category, collections_1.f03_20_is_graded AS collections_1_f03_20_is_graded, collections_1.f03_21_grading_company AS collections_1_f03_21_grading_company, collections_1.f03_22_grading_score AS collections_1_f03_22_grading_score, collections_1.f03_23_three_star AS collections_1_f03_23_three_star, collections_1.f04_30_special_mark AS collections_1_f04_30_special_mark, collections_1.f04_31_serial_feature AS collections_1_f04_31_serial_feature, collections_1.f04_32_issuer AS collections_1_f04_32_issuer, collections_1.f04_33_issue_year AS collections_1_f04_33_issue_year, collections_1.f04_34_material AS collections_1_f04_34_material, collections_1.f04_35_denomination AS collections_1_f04_35_denomination, collections_1.f04_36_issue_quantity AS collections_1_f04_36_issue_quantity, collections_1.f05_40_cost_price AS collections_1_f05_40_cost_price, collections_1.f05_41_target_price AS collections_1_f05_41_target_price, collections_1.f05_42_goal_price AS collections_1_f05_42_goal_price, collections_1.f05_43_repair_fee AS collections_1_f05_43_repair_fee, collections_1.f05_44_grading_fee AS collections_1_f05_44_grading_fee, collections_1.f06_50_purpose AS collections_1_f06_50_purpose \nFROM information LEFT OUTER JOIN users AS users_1 ON users_1.f99_90_id = information.user_id LEFT OUTER JOIN collections AS collections_1 ON collections_1.f99_90_id = information.collection_id \nWHERE information.status = %(status_1)s AND information.info_type = %(info_type_1)s ORDER BY information.deal_date DESC NULLS LAST \n LIMIT %(param_1)s OFFSET %(param_2)s]\n[parameters: {'status_1': 'active', 'info_type_1': 'yichen', 'param_1': 2, 'param_2': 0}]\n(Background on this error at: https://sqlalche.me/e/20/f405)"}, "exception": "Traceback (most recent call last):\n File \"/usr/local/lib/python3.12/dist-packages/sqlalchemy/engine/base.py\", line 1969, in _exec_single_context\n self.dialect.do_execute(\n File \"/usr/local/lib/python3.12/dist-packages/sqlalchemy/engine/default.py\", line 922, in do_execute\n cursor.execute(statement, parameters)\npsycopg2.errors.UndefinedColumn: column users_1.f99_101_invited_count does not exist\nLINE 1: ...f01_13_invite_code AS users_1_f01_13_invite_code, users_1.f9...\n ^\n\n\nThe above exception was the direct cause of the following exception:\n\nTraceback (most recent call last):\n File \"/root/.openclaw/workspace/jiachenlong/backend/app/middleware/logging.py\", line 28, in logging_middleware\n response = await call_next(request)\n ^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/usr/local/lib/python3.12/dist-packages/starlette/middleware/base.py\", line 165, in call_next\n raise app_exc\n File \"/usr/local/lib/python3.12/dist-packages/starlette/middleware/base.py\", line 151, in coro\n await self.app(scope, receive_or_disconnect, send_no_error)\n File \"/usr/local/lib/python3.12/dist-packages/starlette/middleware/cors.py\", line 83, in __call__\n await self.app(scope, receive, send)\n File \"/usr/local/lib/python3.12/dist-packages/starlette/middleware/exceptions.py\", line 62, in __call__\n await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)\n File \"/usr/local/lib/python3.12/dist-packages/starlette/_exception_handler.py\", line 64, in wrapped_app\n raise exc\n File \"/usr/local/lib/python3.12/dist-packages/starlette/_exception_handler.py\", line 53, in wrapped_app\n await app(scope, receive, sender)\n File \"/usr/local/lib/python3.12/dist-packages/starlette/routing.py\", line 762, in __call__\n await self.middleware_stack(scope, receive, send)\n File \"/usr/local/lib/python3.12/dist-packages/starlette/routing.py\", line 782, in app\n await route.handle(scope, receive, send)\n File \"/usr/local/lib/python3.12/dist-packages/starlette/routing.py\", line 297, in handle\n await self.app(scope, receive, send)\n File \"/usr/local/lib/python3.12/dist-packages/starlette/routing.py\", line 77, in app\n await wrap_app_handling_exceptions(app, request)(scope, receive, send)\n File \"/usr/local/lib/python3.12/dist-packages/starlette/_exception_handler.py\", line 64, in wrapped_app\n raise exc\n File \"/usr/local/lib/python3.12/dist-packages/starlette/_exception_handler.py\", line 53, in wrapped_app\n await app(scope, receive, sender)\n File \"/usr/local/lib/python3.12/dist-packages/starlette/routing.py\", line 72, in app\n response = await func(request)\n ^^^^^^^^^^^^^^^^^^^\n File \"/usr/local/lib/python3.12/dist-packages/fastapi/routing.py\", line 299, in app\n raise e\n File \"/usr/local/lib/python3.12/dist-packages/fastapi/routing.py\", line 294, in app\n raw_response = await run_endpoint_function(\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/usr/local/lib/python3.12/dist-packages/fastapi/routing.py\", line 193, in run_endpoint_function\n return await run_in_threadpool(dependant.call, **values)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/usr/local/lib/python3.12/dist-packages/starlette/concurrency.py\", line 40, in run_in_threadpool\n return await anyio.to_thread.run_sync(func, *args)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/usr/local/lib/python3.12/dist-packages/anyio/to_thread.py\", line 63, in run_sync\n return await get_async_backend().run_sync_in_worker_thread(\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/usr/local/lib/python3.12/dist-packages/anyio/_backends/_asyncio.py\", line 2502, in run_sync_in_worker_thread\n return await future\n ^^^^^^^^^^^^\n File \"/usr/local/lib/python3.12/dist-packages/anyio/_backends/_asyncio.py\", line 986, in run\n result = context.run(func, *args)\n ^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/root/.openclaw/workspace/jiachenlong/backend/app/routers/information.py\", line 129, in get_information_list\n items = query.offset(offset).limit(page_size).all()\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/usr/local/lib/python3.12/dist-packages/sqlalchemy/orm/query.py\", line 2693, in all\n return self._iter().all() # type: ignore\n ^^^^^^^^^^^^\n File \"/usr/local/lib/python3.12/dist-packages/sqlalchemy/orm/query.py\", line 2847, in _iter\n result: Union[ScalarResult[_T], Result[_T]] = self.session.execute(\n ^^^^^^^^^^^^^^^^^^^^^\n File \"/usr/local/lib/python3.12/dist-packages/sqlalchemy/orm/session.py\", line 2308, in execute\n return self._execute_internal(\n ^^^^^^^^^^^^^^^^^^^^^^^\n File \"/usr/local/lib/python3.12/dist-packages/sqlalchemy/orm/session.py\", line 2190, in _execute_internal\n result: Result[Any] = compile_state_cls.orm_execute_statement(\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/usr/local/lib/python3.12/dist-packages/sqlalchemy/orm/context.py\", line 293, in orm_execute_statement\n result = conn.execute(\n ^^^^^^^^^^^^^\n File \"/usr/local/lib/python3.12/dist-packages/sqlalchemy/engine/base.py\", line 1416, in execute\n return meth(\n ^^^^^\n File \"/usr/local/lib/python3.12/dist-packages/sqlalchemy/sql/elements.py\", line 517, in _execute_on_connection\n return connection._execute_clauseelement(\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/usr/local/lib/python3.12/dist-packages/sqlalchemy/engine/base.py\", line 1639, in _execute_clauseelement\n ret = self._execute_context(\n ^^^^^^^^^^^^^^^^^^^^^^\n File \"/usr/local/lib/python3.12/dist-packages/sqlalchemy/engine/base.py\", line 1848, in _execute_context\n return self._exec_single_context(\n ^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/usr/local/lib/python3.12/dist-packages/sqlalchemy/engine/base.py\", line 1988, in _exec_single_context\n self._handle_dbapi_exception(\n File \"/usr/local/lib/python3.12/dist-packages/sqlalchemy/engine/base.py\", line 2344, in _handle_dbapi_exception\n raise sqlalchemy_exception.with_traceback(exc_info[2]) from e\n File \"/usr/local/lib/python3.12/dist-packages/sqlalchemy/engine/base.py\", line 1969, in _exec_single_context\n self.dialect.do_execute(\n File \"/usr/local/lib/python3.12/dist-packages/sqlalchemy/engine/default.py\", line 922, in do_execute\n cursor.execute(statement, parameters)\nsqlalchemy.exc.ProgrammingError: (psycopg2.errors.UndefinedColumn) column users_1.f99_101_invited_count does not exist\nLINE 1: ...f01_13_invite_code AS users_1_f01_13_invite_code, users_1.f9...\n ^\n\n[SQL: SELECT information.id AS information_id, information.user_id AS information_user_id, information.info_type AS information_info_type, information.title AS information_title, information.content AS information_content, information.collection_id AS information_collection_id, information.expect_category AS information_expect_category, information.expect_version AS information_expect_version, information.expect_packaging AS information_expect_packaging, information.expect_number AS information_expect_number, information.expect_price_min AS information_expect_price_min, information.expect_price_max AS information_expect_price_max, information.deal_price AS information_deal_price, information.deal_date AS information_deal_date, information.status AS information_status, information.is_matched AS information_is_matched, information.matched_user_id AS information_matched_user_id, information.matched_contact AS information_matched_contact, information.view_count AS information_view_count, information.contact_count AS information_contact_count, information.created_at AS information_created_at, information.updated_at AS information_updated_at, information.author AS information_author, users_1.f99_90_id AS users_1_f99_90_id, users_1.user_code AS users_1_user_code, users_1.f99_91_user_id AS users_1_f99_91_user_id, users_1.f01_01_name AS users_1_f01_01_name, users_1.email AS users_1_email, users_1.phone AS users_1_phone, users_1.avatar AS users_1_avatar, users_1.address AS users_1_address, users_1.bio AS users_1_bio, users_1.password AS users_1_password, users_1.role AS users_1_role, users_1.f99_92_created_at AS users_1_f99_92_created_at, users_1.f99_93_updated_at AS users_1_f99_93_updated_at, users_1.f99_94_level AS users_1_f99_94_level, users_1.f99_95_ai_count AS users_1_f99_95_ai_count, users_1.f99_96_search_count AS users_1_f99_96_search_count, users_1.f99_97_collection_count AS users_1_f99_97_collection_count, users_1.f01_06_phone_verified AS users_1_f01_06_phone_verified, users_1.f99_98_login_count AS users_1_f99_98_login_count, users_1.f99_99_last_login AS users_1_f99_99_last_login, users_1.f01_07_gender AS users_1_f01_07_gender, users_1.f01_08_birthday AS users_1_f01_08_birthday, users_1.f01_09_region AS users_1_f01_09_region, users_1.f01_10_realname_verified AS users_1_f01_10_realname_verified, users_1.f99_100_points AS users_1_f99_100_points, users_1.f01_11_balance AS users_1_f01_11_balance, users_1.f01_12_total_amount AS users_1_f01_12_total_amount, users_1.f01_13_invite_code AS users_1_f01_13_invite_code, users_1.f99_101_invited_count AS users_1_f99_101_invited_count, users_1.f99_101_information_count AS users_1_f99_101_information_count, collections_1.f99_90_id AS collections_1_f99_90_id, collections_1.f99_91_user_id AS collections_1_f99_91_user_id, collections_1.f99_92_created_at AS collections_1_f99_92_created_at, collections_1.f99_93_updated_at AS collections_1_f99_93_updated_at, collections_1.f01_01_name AS collections_1_f01_01_name, collections_1.f01_02_code AS collections_1_f01_02_code, collections_1.f01_03_category AS collections_1_f01_03_category, collections_1.f01_04_status AS collections_1_f01_04_status, collections_1.f01_05_remark AS collections_1_f01_05_remark, collections_1.f02_10_prefix_serial AS collections_1_f02_10_prefix_serial, collections_1.f02_11_version AS collections_1_f02_11_version, collections_1.f02_12_packaging AS collections_1_f02_12_packaging, collections_1.f02_13_rarity AS collections_1_f02_13_rarity, collections_1.f02_14_number_category AS collections_1_f02_14_number_category, collections_1.f03_20_is_graded AS collections_1_f03_20_is_graded, collections_1.f03_21_grading_company AS collections_1_f03_21_grading_company, collections_1.f03_22_grading_score AS collections_1_f03_22_grading_score, collections_1.f03_23_three_star AS collections_1_f03_23_three_star, collections_1.f04_30_special_mark AS collections_1_f04_30_special_mark, collections_1.f04_31_serial_feature AS collections_1_f04_31_serial_feature, collections_1.f04_32_issuer AS collections_1_f04_32_issuer, collections_1.f04_33_issue_year AS collections_1_f04_33_issue_year, collections_1.f04_34_material AS collections_1_f04_34_material, collections_1.f04_35_denomination AS collections_1_f04_35_denomination, collections_1.f04_36_issue_quantity AS collections_1_f04_36_issue_quantity, collections_1.f05_40_cost_price AS collections_1_f05_40_cost_price, collections_1.f05_41_target_price AS collections_1_f05_41_target_price, collections_1.f05_42_goal_price AS collections_1_f05_42_goal_price, collections_1.f05_43_repair_fee AS collections_1_f05_43_repair_fee, collections_1.f05_44_grading_fee AS collections_1_f05_44_grading_fee, collections_1.f06_50_purpose AS collections_1_f06_50_purpose \nFROM information LEFT OUTER JOIN users AS users_1 ON users_1.f99_90_id = information.user_id LEFT OUTER JOIN collections AS collections_1 ON collections_1.f99_90_id = information.collection_id \nWHERE information.status = %(status_1)s AND information.info_type = %(info_type_1)s ORDER BY information.deal_date DESC NULLS LAST \n LIMIT %(param_1)s OFFSET %(param_2)s]\n[parameters: {'status_1': 'active', 'info_type_1': 'yichen', 'param_1': 2, 'param_2': 0}]\n(Background on this error at: https://sqlalche.me/e/20/f405)"}
{"timestamp": "2026-04-15T04:09:17.545679Z", "level": "ERROR", "logger": "root", "message": "未捕获异常:(psycopg2.errors.UndefinedColumn) column users_1.f99_101_invited_count does not exist\nLINE 1: ...f01_13_invite_code AS users_1_f01_13_invite_code, users_1.f9...\n ^\n\n[SQL: SELECT information.id AS information_id, information.user_id AS information_user_id, information.info_type AS information_info_type, information.title AS information_title, information.content AS information_content, information.collection_id AS information_collection_id, information.expect_category AS information_expect_category, information.expect_version AS information_expect_version, information.expect_packaging AS information_expect_packaging, information.expect_number AS information_expect_number, information.expect_price_min AS information_expect_price_min, information.expect_price_max AS information_expect_price_max, information.deal_price AS information_deal_price, information.deal_date AS information_deal_date, information.status AS information_status, information.is_matched AS information_is_matched, information.matched_user_id AS information_matched_user_id, information.matched_contact AS information_matched_contact, information.view_count AS information_view_count, information.contact_count AS information_contact_count, information.created_at AS information_created_at, information.updated_at AS information_updated_at, information.author AS information_author, users_1.f99_90_id AS users_1_f99_90_id, users_1.user_code AS users_1_user_code, users_1.f99_91_user_id AS users_1_f99_91_user_id, users_1.f01_01_name AS users_1_f01_01_name, users_1.email AS users_1_email, users_1.phone AS users_1_phone, users_1.avatar AS users_1_avatar, users_1.address AS users_1_address, users_1.bio AS users_1_bio, users_1.password AS users_1_password, users_1.role AS users_1_role, users_1.f99_92_created_at AS users_1_f99_92_created_at, users_1.f99_93_updated_at AS users_1_f99_93_updated_at, users_1.f99_94_level AS users_1_f99_94_level, users_1.f99_95_ai_count AS users_1_f99_95_ai_count, users_1.f99_96_search_count AS users_1_f99_96_search_count, users_1.f99_97_collection_count AS users_1_f99_97_collection_count, users_1.f01_06_phone_verified AS users_1_f01_06_phone_verified, users_1.f99_98_login_count AS users_1_f99_98_login_count, users_1.f99_99_last_login AS users_1_f99_99_last_login, users_1.f01_07_gender AS users_1_f01_07_gender, users_1.f01_08_birthday AS users_1_f01_08_birthday, users_1.f01_09_region AS users_1_f01_09_region, users_1.f01_10_realname_verified AS users_1_f01_10_realname_verified, users_1.f99_100_points AS users_1_f99_100_points, users_1.f01_11_balance AS users_1_f01_11_balance, users_1.f01_12_total_amount AS users_1_f01_12_total_amount, users_1.f01_13_invite_code AS users_1_f01_13_invite_code, users_1.f99_101_invited_count AS users_1_f99_101_invited_count, users_1.f99_101_information_count AS users_1_f99_101_information_count, collections_1.f99_90_id AS collections_1_f99_90_id, collections_1.f99_91_user_id AS collections_1_f99_91_user_id, collections_1.f99_92_created_at AS collections_1_f99_92_created_at, collections_1.f99_93_updated_at AS collections_1_f99_93_updated_at, collections_1.f01_01_name AS collections_1_f01_01_name, collections_1.f01_02_code AS collections_1_f01_02_code, collections_1.f01_03_category AS collections_1_f01_03_category, collections_1.f01_04_status AS collections_1_f01_04_status, collections_1.f01_05_remark AS collections_1_f01_05_remark, collections_1.f02_10_prefix_serial AS collections_1_f02_10_prefix_serial, collections_1.f02_11_version AS collections_1_f02_11_version, collections_1.f02_12_packaging AS collections_1_f02_12_packaging, collections_1.f02_13_rarity AS collections_1_f02_13_rarity, collections_1.f02_14_number_category AS collections_1_f02_14_number_category, collections_1.f03_20_is_graded AS collections_1_f03_20_is_graded, collections_1.f03_21_grading_company AS collections_1_f03_21_grading_company, collections_1.f03_22_grading_score AS collections_1_f03_22_grading_score, collections_1.f03_23_three_star AS collections_1_f03_23_three_star, collections_1.f04_30_special_mark AS collections_1_f04_30_special_mark, collections_1.f04_31_serial_feature AS collections_1_f04_31_serial_feature, collections_1.f04_32_issuer AS collections_1_f04_32_issuer, collections_1.f04_33_issue_year AS collections_1_f04_33_issue_year, collections_1.f04_34_material AS collections_1_f04_34_material, collections_1.f04_35_denomination AS collections_1_f04_35_denomination, collections_1.f04_36_issue_quantity AS collections_1_f04_36_issue_quantity, collections_1.f05_40_cost_price AS collections_1_f05_40_cost_price, collections_1.f05_41_target_price AS collections_1_f05_41_target_price, collections_1.f05_42_goal_price AS collections_1_f05_42_goal_price, collections_1.f05_43_repair_fee AS collections_1_f05_43_repair_fee, collections_1.f05_44_grading_fee AS collections_1_f05_44_grading_fee, collections_1.f06_50_purpose AS collections_1_f06_50_purpose \nFROM information LEFT OUTER JOIN users AS users_1 ON users_1.f99_90_id = information.user_id LEFT OUTER JOIN collections AS collections_1 ON collections_1.f99_90_id = information.collection_id \nWHERE information.status = %(status_1)s AND information.info_type = %(info_type_1)s ORDER BY information.deal_date DESC NULLS LAST \n LIMIT %(param_1)s OFFSET %(param_2)s]\n[parameters: {'status_1': 'active', 'info_type_1': 'yichen', 'param_1': 2, 'param_2': 0}]\n(Background on this error at: https://sqlalche.me/e/20/f405)\nTraceback (most recent call last):\n File \"/usr/local/lib/python3.12/dist-packages/sqlalchemy/engine/base.py\", line 1969, in _exec_single_context\n self.dialect.do_execute(\n File \"/usr/local/lib/python3.12/dist-packages/sqlalchemy/engine/default.py\", line 922, in do_execute\n cursor.execute(statement, parameters)\npsycopg2.errors.UndefinedColumn: column users_1.f99_101_invited_count does not exist\nLINE 1: ...f01_13_invite_code AS users_1_f01_13_invite_code, users_1.f9...\n ^\n\n\nThe above exception was the direct cause of the following exception:\n\nTraceback (most recent call last):\n File \"/usr/local/lib/python3.12/dist-packages/starlette/middleware/errors.py\", line 164, in __call__\n await self.app(scope, receive, _send)\n File \"/usr/local/lib/python3.12/dist-packages/starlette/middleware/base.py\", line 189, in __call__\n with collapse_excgroups():\n File \"/usr/lib/python3.12/contextlib.py\", line 158, in __exit__\n self.gen.throw(value)\n File \"/usr/local/lib/python3.12/dist-packages/starlette/_utils.py\", line 91, in collapse_excgroups\n raise exc\n File \"/usr/local/lib/python3.12/dist-packages/starlette/middleware/base.py\", line 191, in __call__\n response = await self.dispatch_func(request, call_next)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/root/.openclaw/workspace/jiachenlong/backend/app/middleware/logging.py\", line 28, in logging_middleware\n response = await call_next(request)\n ^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/usr/local/lib/python3.12/dist-packages/starlette/middleware/base.py\", line 165, in call_next\n raise app_exc\n File \"/usr/local/lib/python3.12/dist-packages/starlette/middleware/base.py\", line 151, in coro\n await self.app(scope, receive_or_disconnect, send_no_error)\n File \"/usr/local/lib/python3.12/dist-packages/starlette/middleware/cors.py\", line 83, in __call__\n await self.app(scope, receive, send)\n File \"/usr/local/lib/python3.12/dist-packages/starlette/middleware/exceptions.py\", line 62, in __call__\n await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)\n File \"/usr/local/lib/python3.12/dist-packages/starlette/_exception_handler.py\", line 64, in wrapped_app\n raise exc\n File \"/usr/local/lib/python3.12/dist-packages/starlette/_exception_handler.py\", line 53, in wrapped_app\n await app(scope, receive, sender)\n File \"/usr/local/lib/python3.12/dist-packages/starlette/routing.py\", line 762, in __call__\n await self.middleware_stack(scope, receive, send)\n File \"/usr/local/lib/python3.12/dist-packages/starlette/routing.py\", line 782, in app\n await route.handle(scope, receive, send)\n File \"/usr/local/lib/python3.12/dist-packages/starlette/routing.py\", line 297, in handle\n await self.app(scope, receive, send)\n File \"/usr/local/lib/python3.12/dist-packages/starlette/routing.py\", line 77, in app\n await wrap_app_handling_exceptions(app, request)(scope, receive, send)\n File \"/usr/local/lib/python3.12/dist-packages/starlette/_exception_handler.py\", line 64, in wrapped_app\n raise exc\n File \"/usr/local/lib/python3.12/dist-packages/starlette/_exception_handler.py\", line 53, in wrapped_app\n await app(scope, receive, sender)\n File \"/usr/local/lib/python3.12/dist-packages/starlette/routing.py\", line 72, in app\n response = await func(request)\n ^^^^^^^^^^^^^^^^^^^\n File \"/usr/local/lib/python3.12/dist-packages/fastapi/routing.py\", line 299, in app\n raise e\n File \"/usr/local/lib/python3.12/dist-packages/fastapi/routing.py\", line 294, in app\n raw_response = await run_endpoint_function(\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/usr/local/lib/python3.12/dist-packages/fastapi/routing.py\", line 193, in run_endpoint_function\n return await run_in_threadpool(dependant.call, **values)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/usr/local/lib/python3.12/dist-packages/starlette/concurrency.py\", line 40, in run_in_threadpool\n return await anyio.to_thread.run_sync(func, *args)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/usr/local/lib/python3.12/dist-packages/anyio/to_thread.py\", line 63, in run_sync\n return await get_async_backend().run_sync_in_worker_thread(\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/usr/local/lib/python3.12/dist-packages/anyio/_backends/_asyncio.py\", line 2502, in run_sync_in_worker_thread\n return await future\n ^^^^^^^^^^^^\n File \"/usr/local/lib/python3.12/dist-packages/anyio/_backends/_asyncio.py\", line 986, in run\n result = context.run(func, *args)\n ^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/root/.openclaw/workspace/jiachenlong/backend/app/routers/information.py\", line 129, in get_information_list\n items = query.offset(offset).limit(page_size).all()\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/usr/local/lib/python3.12/dist-packages/sqlalchemy/orm/query.py\", line 2693, in all\n return self._iter().all() # type: ignore\n ^^^^^^^^^^^^\n File \"/usr/local/lib/python3.12/dist-packages/sqlalchemy/orm/query.py\", line 2847, in _iter\n result: Union[ScalarResult[_T], Result[_T]] = self.session.execute(\n ^^^^^^^^^^^^^^^^^^^^^\n File \"/usr/local/lib/python3.12/dist-packages/sqlalchemy/orm/session.py\", line 2308, in execute\n return self._execute_internal(\n ^^^^^^^^^^^^^^^^^^^^^^^\n File \"/usr/local/lib/python3.12/dist-packages/sqlalchemy/orm/session.py\", line 2190, in _execute_internal\n result: Result[Any] = compile_state_cls.orm_execute_statement(\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/usr/local/lib/python3.12/dist-packages/sqlalchemy/orm/context.py\", line 293, in orm_execute_statement\n result = conn.execute(\n ^^^^^^^^^^^^^\n File \"/usr/local/lib/python3.12/dist-packages/sqlalchemy/engine/base.py\", line 1416, in execute\n return meth(\n ^^^^^\n File \"/usr/local/lib/python3.12/dist-packages/sqlalchemy/sql/elements.py\", line 517, in _execute_on_connection\n return connection._execute_clauseelement(\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/usr/local/lib/python3.12/dist-packages/sqlalchemy/engine/base.py\", line 1639, in _execute_clauseelement\n ret = self._execute_context(\n ^^^^^^^^^^^^^^^^^^^^^^\n File \"/usr/local/lib/python3.12/dist-packages/sqlalchemy/engine/base.py\", line 1848, in _execute_context\n return self._exec_single_context(\n ^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/usr/local/lib/python3.12/dist-packages/sqlalchemy/engine/base.py\", line 1988, in _exec_single_context\n self._handle_dbapi_exception(\n File \"/usr/local/lib/python3.12/dist-packages/sqlalchemy/engine/base.py\", line 2344, in _handle_dbapi_exception\n raise sqlalchemy_exception.with_traceback(exc_info[2]) from e\n File \"/usr/local/lib/python3.12/dist-packages/sqlalchemy/engine/base.py\", line 1969, in _exec_single_context\n self.dialect.do_execute(\n File \"/usr/local/lib/python3.12/dist-packages/sqlalchemy/engine/default.py\", line 922, in do_execute\n cursor.execute(statement, parameters)\nsqlalchemy.exc.ProgrammingError: (psycopg2.errors.UndefinedColumn) column users_1.f99_101_invited_count does not exist\nLINE 1: ...f01_13_invite_code AS users_1_f01_13_invite_code, users_1.f9...\n ^\n\n[SQL: SELECT information.id AS information_id, information.user_id AS information_user_id, information.info_type AS information_info_type, information.title AS information_title, information.content AS information_content, information.collection_id AS information_collection_id, information.expect_category AS information_expect_category, information.expect_version AS information_expect_version, information.expect_packaging AS information_expect_packaging, information.expect_number AS information_expect_number, information.expect_price_min AS information_expect_price_min, information.expect_price_max AS information_expect_price_max, information.deal_price AS information_deal_price, information.deal_date AS information_deal_date, information.status AS information_status, information.is_matched AS information_is_matched, information.matched_user_id AS information_matched_user_id, information.matched_contact AS information_matched_contact, information.view_count AS information_view_count, information.contact_count AS information_contact_count, information.created_at AS information_created_at, information.updated_at AS information_updated_at, information.author AS information_author, users_1.f99_90_id AS users_1_f99_90_id, users_1.user_code AS users_1_user_code, users_1.f99_91_user_id AS users_1_f99_91_user_id, users_1.f01_01_name AS users_1_f01_01_name, users_1.email AS users_1_email, users_1.phone AS users_1_phone, users_1.avatar AS users_1_avatar, users_1.address AS users_1_address, users_1.bio AS users_1_bio, users_1.password AS users_1_password, users_1.role AS users_1_role, users_1.f99_92_created_at AS users_1_f99_92_created_at, users_1.f99_93_updated_at AS users_1_f99_93_updated_at, users_1.f99_94_level AS users_1_f99_94_level, users_1.f99_95_ai_count AS users_1_f99_95_ai_count, users_1.f99_96_search_count AS users_1_f99_96_search_count, users_1.f99_97_collection_count AS users_1_f99_97_collection_count, users_1.f01_06_phone_verified AS users_1_f01_06_phone_verified, users_1.f99_98_login_count AS users_1_f99_98_login_count, users_1.f99_99_last_login AS users_1_f99_99_last_login, users_1.f01_07_gender AS users_1_f01_07_gender, users_1.f01_08_birthday AS users_1_f01_08_birthday, users_1.f01_09_region AS users_1_f01_09_region, users_1.f01_10_realname_verified AS users_1_f01_10_realname_verified, users_1.f99_100_points AS users_1_f99_100_points, users_1.f01_11_balance AS users_1_f01_11_balance, users_1.f01_12_total_amount AS users_1_f01_12_total_amount, users_1.f01_13_invite_code AS users_1_f01_13_invite_code, users_1.f99_101_invited_count AS users_1_f99_101_invited_count, users_1.f99_101_information_count AS users_1_f99_101_information_count, collections_1.f99_90_id AS collections_1_f99_90_id, collections_1.f99_91_user_id AS collections_1_f99_91_user_id, collections_1.f99_92_created_at AS collections_1_f99_92_created_at, collections_1.f99_93_updated_at AS collections_1_f99_93_updated_at, collections_1.f01_01_name AS collections_1_f01_01_name, collections_1.f01_02_code AS collections_1_f01_02_code, collections_1.f01_03_category AS collections_1_f01_03_category, collections_1.f01_04_status AS collections_1_f01_04_status, collections_1.f01_05_remark AS collections_1_f01_05_remark, collections_1.f02_10_prefix_serial AS collections_1_f02_10_prefix_serial, collections_1.f02_11_version AS collections_1_f02_11_version, collections_1.f02_12_packaging AS collections_1_f02_12_packaging, collections_1.f02_13_rarity AS collections_1_f02_13_rarity, collections_1.f02_14_number_category AS collections_1_f02_14_number_category, collections_1.f03_20_is_graded AS collections_1_f03_20_is_graded, collections_1.f03_21_grading_company AS collections_1_f03_21_grading_company, collections_1.f03_22_grading_score AS collections_1_f03_22_grading_score, collections_1.f03_23_three_star AS collections_1_f03_23_three_star, collections_1.f04_30_special_mark AS collections_1_f04_30_special_mark, collections_1.f04_31_serial_feature AS collections_1_f04_31_serial_feature, collections_1.f04_32_issuer AS collections_1_f04_32_issuer, collections_1.f04_33_issue_year AS collections_1_f04_33_issue_year, collections_1.f04_34_material AS collections_1_f04_34_material, collections_1.f04_35_denomination AS collections_1_f04_35_denomination, collections_1.f04_36_issue_quantity AS collections_1_f04_36_issue_quantity, collections_1.f05_40_cost_price AS collections_1_f05_40_cost_price, collections_1.f05_41_target_price AS collections_1_f05_41_target_price, collections_1.f05_42_goal_price AS collections_1_f05_42_goal_price, collections_1.f05_43_repair_fee AS collections_1_f05_43_repair_fee, collections_1.f05_44_grading_fee AS collections_1_f05_44_grading_fee, collections_1.f06_50_purpose AS collections_1_f06_50_purpose \nFROM information LEFT OUTER JOIN users AS users_1 ON users_1.f99_90_id = information.user_id LEFT OUTER JOIN collections AS collections_1 ON collections_1.f99_90_id = information.collection_id \nWHERE information.status = %(status_1)s AND information.info_type = %(info_type_1)s ORDER BY information.deal_date DESC NULLS LAST \n LIMIT %(param_1)s OFFSET %(param_2)s]\n[parameters: {'status_1': 'active', 'info_type_1': 'yichen', 'param_1': 2, 'param_2': 0}]\n(Background on this error at: https://sqlalche.me/e/20/f405)\n", "trace_id": "fd653117-7066-4645-b23d-4395e1453cb5", "user_id": null, "request_id": "b36fd8b6-3f0f-4291-95e6-903b48b96e0a", "ip_address": null, "duration_ms": null}
{"timestamp": "2026-04-15T04:10:21.921961Z", "level": "INFO", "logger": "root", "message": "甲辰收藏系统 FastAPI 后端 v0.0.0 启动成功", "trace_id": "c0c8c9fb-02ac-4f1c-8d97-caa806e6d54a", "user_id": null, "request_id": "64d0ed38-3b51-4a50-9161-2a9750d4479c", "ip_address": null, "duration_ms": null}
{"timestamp": "2026-04-15T04:10:55.614704Z", "level": "INFO", "logger": "root", "message": "甲辰收藏系统 FastAPI 后端 v0.0.0 启动成功", "trace_id": "994f8d7d-61fb-496b-8204-441cb9ead315", "user_id": null, "request_id": "72434856-457c-422d-8881-d12aac04a97a", "ip_address": null, "duration_ms": null}
{"timestamp": "2026-04-15T04:11:54.743982Z", "level": "INFO", "logger": "root", "message": "甲辰收藏系统 FastAPI 后端 v0.0.0 启动成功", "trace_id": "bfd9d19c-30aa-4863-8fdd-65552e601a53", "user_id": null, "request_id": "60c1dfe9-dce6-4fd6-ac45-5890871cbb61", "ip_address": null, "duration_ms": null}
{"timestamp": "2026-04-15T04:12:18.350083Z", "level": "INFO", "logger": "root", "message": "甲辰收藏系统 FastAPI 后端 v0.0.0 启动成功", "trace_id": "c27c03bb-e733-4967-80ab-bbc1c75221a5", "user_id": null, "request_id": "e1b1ce77-1bc9-469b-8e89-62dfcc6da361", "ip_address": null, "duration_ms": null}
{"timestamp": "2026-04-15T04:32:54.455912Z", "level": "ERROR", "logger": "app.core.database", "message": "数据库会话错误: 401: E00011: 用户名或密码错误", "trace_id": "bee519b9-6cfc-41bb-ab79-63e9bcdb7ca0", "user_id": null, "request_id": "07418ddc-394d-447f-8c9f-3b988827e210", "ip_address": null, "duration_ms": null}
{"timestamp": "2026-04-15T04:33:46.727754Z", "level": "ERROR", "logger": "app.core.database", "message": "数据库会话错误: 1 validation error for InformationResponse\ncreated_at\n Input should be a valid datetime [type=datetime_type, input_value=None, input_type=NoneType]\n For further information visit https://errors.pydantic.dev/2.5/v/datetime_type", "trace_id": "4d9f265f-dd65-404f-a352-4209a53da3e2", "user_id": null, "request_id": "50d8f2a6-f3e9-40d9-8c69-ab18965f534a", "ip_address": null, "duration_ms": null}
{"timestamp": "2026-04-15T04:33:46.731371Z", "level": "ERROR", "logger": "root", "message": "API 请求异常POST /api/information/", "trace_id": "0b8b5cbf-e872-4d30-8447-588447273e4a", "user_id": "authenticated", "request_id": "19f0ce46-1030-4724-97b6-e198883564a1", "ip_address": "127.0.0.1", "duration_ms": 19.598007202148438, "data": {"method": "POST", "path": "/api/information/", "query": "", "error": "1 validation error for InformationResponse\ncreated_at\n Input should be a valid datetime [type=datetime_type, input_value=None, input_type=NoneType]\n For further information visit https://errors.pydantic.dev/2.5/v/datetime_type"}, "exception": "Traceback (most recent call last):\n File \"/usr/local/lib/python3.12/dist-packages/starlette/middleware/base.py\", line 159, in call_next\n message = await recv_stream.receive()\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/usr/local/lib/python3.12/dist-packages/anyio/streams/memory.py\", line 132, in receive\n raise EndOfStream from None\nanyio.EndOfStream\n\nDuring handling of the above exception, another exception occurred:\n\nTraceback (most recent call last):\n File \"/root/.openclaw/workspace/jiachenlong/backend/app/middleware/logging.py\", line 28, in logging_middleware\n response = await call_next(request)\n ^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/usr/local/lib/python3.12/dist-packages/starlette/middleware/base.py\", line 165, in call_next\n raise app_exc\n File \"/usr/local/lib/python3.12/dist-packages/starlette/middleware/base.py\", line 151, in coro\n await self.app(scope, receive_or_disconnect, send_no_error)\n File \"/usr/local/lib/python3.12/dist-packages/starlette/middleware/cors.py\", line 83, in __call__\n await self.app(scope, receive, send)\n File \"/usr/local/lib/python3.12/dist-packages/starlette/middleware/exceptions.py\", line 62, in __call__\n await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)\n File \"/usr/local/lib/python3.12/dist-packages/starlette/_exception_handler.py\", line 64, in wrapped_app\n raise exc\n File \"/usr/local/lib/python3.12/dist-packages/starlette/_exception_handler.py\", line 53, in wrapped_app\n await app(scope, receive, sender)\n File \"/usr/local/lib/python3.12/dist-packages/starlette/routing.py\", line 762, in __call__\n await self.middleware_stack(scope, receive, send)\n File \"/usr/local/lib/python3.12/dist-packages/starlette/routing.py\", line 782, in app\n await route.handle(scope, receive, send)\n File \"/usr/local/lib/python3.12/dist-packages/starlette/routing.py\", line 297, in handle\n await self.app(scope, receive, send)\n File \"/usr/local/lib/python3.12/dist-packages/starlette/routing.py\", line 77, in app\n await wrap_app_handling_exceptions(app, request)(scope, receive, send)\n File \"/usr/local/lib/python3.12/dist-packages/starlette/_exception_handler.py\", line 64, in wrapped_app\n raise exc\n File \"/usr/local/lib/python3.12/dist-packages/starlette/_exception_handler.py\", line 53, in wrapped_app\n await app(scope, receive, sender)\n File \"/usr/local/lib/python3.12/dist-packages/starlette/routing.py\", line 72, in app\n response = await func(request)\n ^^^^^^^^^^^^^^^^^^^\n File \"/usr/local/lib/python3.12/dist-packages/fastapi/routing.py\", line 299, in app\n raise e\n File \"/usr/local/lib/python3.12/dist-packages/fastapi/routing.py\", line 294, in app\n raw_response = await run_endpoint_function(\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/usr/local/lib/python3.12/dist-packages/fastapi/routing.py\", line 193, in run_endpoint_function\n return await run_in_threadpool(dependant.call, **values)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/usr/local/lib/python3.12/dist-packages/starlette/concurrency.py\", line 40, in run_in_threadpool\n return await anyio.to_thread.run_sync(func, *args)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/usr/local/lib/python3.12/dist-packages/anyio/to_thread.py\", line 63, in run_sync\n return await get_async_backend().run_sync_in_worker_thread(\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/usr/local/lib/python3.12/dist-packages/anyio/_backends/_asyncio.py\", line 2502, in run_sync_in_worker_thread\n return await future\n ^^^^^^^^^^^^\n File \"/usr/local/lib/python3.12/dist-packages/anyio/_backends/_asyncio.py\", line 986, in run\n result = context.run(func, *args)\n ^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/root/.openclaw/workspace/jiachenlong/backend/app/routers/information.py\", line 470, in create_information\n return InformationResponse(\n ^^^^^^^^^^^^^^^^^^^^\n File \"/usr/local/lib/python3.12/dist-packages/pydantic/main.py\", line 164, in __init__\n __pydantic_self__.__pydantic_validator__.validate_python(data, self_instance=__pydantic_self__)\npydantic_core._pydantic_core.ValidationError: 1 validation error for InformationResponse\ncreated_at\n Input should be a valid datetime [type=datetime_type, input_value=None, input_type=NoneType]\n For further information visit https://errors.pydantic.dev/2.5/v/datetime_type"}
{"timestamp": "2026-04-15T04:33:46.736348Z", "level": "ERROR", "logger": "root", "message": "未捕获异常1 validation error for InformationResponse\ncreated_at\n Input should be a valid datetime [type=datetime_type, input_value=None, input_type=NoneType]\n For further information visit https://errors.pydantic.dev/2.5/v/datetime_type\n + Exception Group Traceback (most recent call last):\n | File \"/usr/local/lib/python3.12/dist-packages/starlette/_utils.py\", line 85, in collapse_excgroups\n | yield\n | File \"/usr/local/lib/python3.12/dist-packages/starlette/middleware/base.py\", line 190, in __call__\n | async with anyio.create_task_group() as task_group:\n | File \"/usr/local/lib/python3.12/dist-packages/anyio/_backends/_asyncio.py\", line 783, in __aexit__\n | raise BaseExceptionGroup(\n | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception)\n +-+---------------- 1 ----------------\n | Traceback (most recent call last):\n | File \"/usr/local/lib/python3.12/dist-packages/starlette/middleware/errors.py\", line 164, in __call__\n | await self.app(scope, receive, _send)\n | File \"/usr/local/lib/python3.12/dist-packages/starlette/middleware/base.py\", line 189, in __call__\n | with collapse_excgroups():\n | File \"/usr/lib/python3.12/contextlib.py\", line 158, in __exit__\n | self.gen.throw(value)\n | File \"/usr/local/lib/python3.12/dist-packages/starlette/_utils.py\", line 91, in collapse_excgroups\n | raise exc\n | File \"/usr/local/lib/python3.12/dist-packages/starlette/middleware/base.py\", line 191, in __call__\n | response = await self.dispatch_func(request, call_next)\n | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n | File \"/root/.openclaw/workspace/jiachenlong/backend/app/middleware/logging.py\", line 28, in logging_middleware\n | response = await call_next(request)\n | ^^^^^^^^^^^^^^^^^^^^^^^^\n | File \"/usr/local/lib/python3.12/dist-packages/starlette/middleware/base.py\", line 165, in call_next\n | raise app_exc\n | File \"/usr/local/lib/python3.12/dist-packages/starlette/middleware/base.py\", line 151, in coro\n | await self.app(scope, receive_or_disconnect, send_no_error)\n | File \"/usr/local/lib/python3.12/dist-packages/starlette/middleware/cors.py\", line 83, in __call__\n | await self.app(scope, receive, send)\n | File \"/usr/local/lib/python3.12/dist-packages/starlette/middleware/exceptions.py\", line 62, in __call__\n | await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)\n | File \"/usr/local/lib/python3.12/dist-packages/starlette/_exception_handler.py\", line 64, in wrapped_app\n | raise exc\n | File \"/usr/local/lib/python3.12/dist-packages/starlette/_exception_handler.py\", line 53, in wrapped_app\n | await app(scope, receive, sender)\n | File \"/usr/local/lib/python3.12/dist-packages/starlette/routing.py\", line 762, in __call__\n | await self.middleware_stack(scope, receive, send)\n | File \"/usr/local/lib/python3.12/dist-packages/starlette/routing.py\", line 782, in app\n | await route.handle(scope, receive, send)\n | File \"/usr/local/lib/python3.12/dist-packages/starlette/routing.py\", line 297, in handle\n | await self.app(scope, receive, send)\n | File \"/usr/local/lib/python3.12/dist-packages/starlette/routing.py\", line 77, in app\n | await wrap_app_handling_exceptions(app, request)(scope, receive, send)\n | File \"/usr/local/lib/python3.12/dist-packages/starlette/_exception_handler.py\", line 64, in wrapped_app\n | raise exc\n | File \"/usr/local/lib/python3.12/dist-packages/starlette/_exception_handler.py\", line 53, in wrapped_app\n | await app(scope, receive, sender)\n | File \"/usr/local/lib/python3.12/dist-packages/starlette/routing.py\", line 72, in app\n | response = await func(request)\n | ^^^^^^^^^^^^^^^^^^^\n | File \"/usr/local/lib/python3.12/dist-packages/fastapi/routing.py\", line 299, in app\n | raise e\n | File \"/usr/local/lib/python3.12/dist-packages/fastapi/routing.py\", line 294, in app\n | raw_response = await run_endpoint_function(\n | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n | File \"/usr/local/lib/python3.12/dist-packages/fastapi/routing.py\", line 193, in run_endpoint_function\n | return await run_in_threadpool(dependant.call, **values)\n | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n | File \"/usr/local/lib/python3.12/dist-packages/starlette/concurrency.py\", line 40, in run_in_threadpool\n | return await anyio.to_thread.run_sync(func, *args)\n | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n | File \"/usr/local/lib/python3.12/dist-packages/anyio/to_thread.py\", line 63, in run_sync\n | return await get_async_backend().run_sync_in_worker_thread(\n | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n | File \"/usr/local/lib/python3.12/dist-packages/anyio/_backends/_asyncio.py\", line 2502, in run_sync_in_worker_thread\n | return await future\n | ^^^^^^^^^^^^\n | File \"/usr/local/lib/python3.12/dist-packages/anyio/_backends/_asyncio.py\", line 986, in run\n | result = context.run(func, *args)\n | ^^^^^^^^^^^^^^^^^^^^^^^^\n | File \"/root/.openclaw/workspace/jiachenlong/backend/app/routers/information.py\", line 470, in create_information\n | return InformationResponse(\n | ^^^^^^^^^^^^^^^^^^^^\n | File \"/usr/local/lib/python3.12/dist-packages/pydantic/main.py\", line 164, in __init__\n | __pydantic_self__.__pydantic_validator__.validate_python(data, self_instance=__pydantic_self__)\n | pydantic_core._pydantic_core.ValidationError: 1 validation error for InformationResponse\n | created_at\n | Input should be a valid datetime [type=datetime_type, input_value=None, input_type=NoneType]\n | For further information visit https://errors.pydantic.dev/2.5/v/datetime_type\n +------------------------------------\n\nDuring handling of the above exception, another exception occurred:\n\nTraceback (most recent call last):\n File \"/usr/local/lib/python3.12/dist-packages/starlette/middleware/errors.py\", line 164, in __call__\n await self.app(scope, receive, _send)\n File \"/usr/local/lib/python3.12/dist-packages/starlette/middleware/base.py\", line 189, in __call__\n with collapse_excgroups():\n File \"/usr/lib/python3.12/contextlib.py\", line 158, in __exit__\n self.gen.throw(value)\n File \"/usr/local/lib/python3.12/dist-packages/starlette/_utils.py\", line 91, in collapse_excgroups\n raise exc\n File \"/usr/local/lib/python3.12/dist-packages/starlette/middleware/base.py\", line 191, in __call__\n response = await self.dispatch_func(request, call_next)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/root/.openclaw/workspace/jiachenlong/backend/app/middleware/logging.py\", line 28, in logging_middleware\n response = await call_next(request)\n ^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/usr/local/lib/python3.12/dist-packages/starlette/middleware/base.py\", line 165, in call_next\n raise app_exc\n File \"/usr/local/lib/python3.12/dist-packages/starlette/middleware/base.py\", line 151, in coro\n await self.app(scope, receive_or_disconnect, send_no_error)\n File \"/usr/local/lib/python3.12/dist-packages/starlette/middleware/cors.py\", line 83, in __call__\n await self.app(scope, receive, send)\n File \"/usr/local/lib/python3.12/dist-packages/starlette/middleware/exceptions.py\", line 62, in __call__\n await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)\n File \"/usr/local/lib/python3.12/dist-packages/starlette/_exception_handler.py\", line 64, in wrapped_app\n raise exc\n File \"/usr/local/lib/python3.12/dist-packages/starlette/_exception_handler.py\", line 53, in wrapped_app\n await app(scope, receive, sender)\n File \"/usr/local/lib/python3.12/dist-packages/starlette/routing.py\", line 762, in __call__\n await self.middleware_stack(scope, receive, send)\n File \"/usr/local/lib/python3.12/dist-packages/starlette/routing.py\", line 782, in app\n await route.handle(scope, receive, send)\n File \"/usr/local/lib/python3.12/dist-packages/starlette/routing.py\", line 297, in handle\n await self.app(scope, receive, send)\n File \"/usr/local/lib/python3.12/dist-packages/starlette/routing.py\", line 77, in app\n await wrap_app_handling_exceptions(app, request)(scope, receive, send)\n File \"/usr/local/lib/python3.12/dist-packages/starlette/_exception_handler.py\", line 64, in wrapped_app\n raise exc\n File \"/usr/local/lib/python3.12/dist-packages/starlette/_exception_handler.py\", line 53, in wrapped_app\n await app(scope, receive, sender)\n File \"/usr/local/lib/python3.12/dist-packages/starlette/routing.py\", line 72, in app\n response = await func(request)\n ^^^^^^^^^^^^^^^^^^^\n File \"/usr/local/lib/python3.12/dist-packages/fastapi/routing.py\", line 299, in app\n raise e\n File \"/usr/local/lib/python3.12/dist-packages/fastapi/routing.py\", line 294, in app\n raw_response = await run_endpoint_function(\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/usr/local/lib/python3.12/dist-packages/fastapi/routing.py\", line 193, in run_endpoint_function\n return await run_in_threadpool(dependant.call, **values)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/usr/local/lib/python3.12/dist-packages/starlette/concurrency.py\", line 40, in run_in_threadpool\n return await anyio.to_thread.run_sync(func, *args)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/usr/local/lib/python3.12/dist-packages/anyio/to_thread.py\", line 63, in run_sync\n return await get_async_backend().run_sync_in_worker_thread(\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/usr/local/lib/python3.12/dist-packages/anyio/_backends/_asyncio.py\", line 2502, in run_sync_in_worker_thread\n return await future\n ^^^^^^^^^^^^\n File \"/usr/local/lib/python3.12/dist-packages/anyio/_backends/_asyncio.py\", line 986, in run\n result = context.run(func, *args)\n ^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/root/.openclaw/workspace/jiachenlong/backend/app/routers/information.py\", line 470, in create_information\n return InformationResponse(\n ^^^^^^^^^^^^^^^^^^^^\n File \"/usr/local/lib/python3.12/dist-packages/pydantic/main.py\", line 164, in __init__\n __pydantic_self__.__pydantic_validator__.validate_python(data, self_instance=__pydantic_self__)\npydantic_core._pydantic_core.ValidationError: 1 validation error for InformationResponse\ncreated_at\n Input should be a valid datetime [type=datetime_type, input_value=None, input_type=NoneType]\n For further information visit https://errors.pydantic.dev/2.5/v/datetime_type\n", "trace_id": "918c81da-4a49-4bf6-a5c4-6af79b9126c7", "user_id": null, "request_id": "05ea208b-2aca-41c5-b06c-dd32372aaefa", "ip_address": null, "duration_ms": null}
{"timestamp": "2026-04-15T04:35:27.776534Z", "level": "ERROR", "logger": "app.core.database", "message": "数据库会话错误: 404: 资讯不存在", "trace_id": "fe5e3bf9-3864-45c2-b44c-ad150aa45fc4", "user_id": null, "request_id": "b4558b5a-0685-4ed9-85de-cc62f04d6599", "ip_address": null, "duration_ms": null}
{"timestamp": "2026-04-15T04:39:37.783033Z", "level": "INFO", "logger": "root", "message": "甲辰收藏系统 FastAPI 后端 v0.0.0 启动成功", "trace_id": "88e5f2ea-5660-431f-8a1e-3b9764f559aa", "user_id": null, "request_id": "6d2c816a-e153-484c-8dd6-43f74fd9d8f4", "ip_address": null, "duration_ms": null}
{"timestamp": "2026-04-15T04:39:42.958240Z", "level": "ERROR", "logger": "app.core.database", "message": "数据库会话错误: 404: 资讯不存在", "trace_id": "1b25d3fd-3a7e-47ed-81bd-62aeecb62fa1", "user_id": null, "request_id": "c9993123-65b4-4891-9271-3641d0cedd2d", "ip_address": null, "duration_ms": null}
{"timestamp": "2026-04-15T04:41:51.486935Z", "level": "ERROR", "logger": "app.core.database", "message": "数据库会话错误: 1 validation error for InformationResponse\ncreated_at\n Input should be a valid datetime [type=datetime_type, input_value=None, input_type=NoneType]\n For further information visit https://errors.pydantic.dev/2.5/v/datetime_type", "trace_id": "40594474-d1ba-4548-9d2f-3cf318e77363", "user_id": null, "request_id": "de7d80e8-aa27-484a-aa4e-50d31c589482", "ip_address": null, "duration_ms": null}
{"timestamp": "2026-04-15T04:41:51.490603Z", "level": "ERROR", "logger": "root", "message": "API 请求异常GET /api/information/list", "trace_id": "5710b554-8725-4d24-9d6a-c720970694e9", "user_id": "authenticated", "request_id": "f9a6185c-a73b-46cb-bd33-9ceb05d1b198", "ip_address": "127.0.0.1", "duration_ms": 21.33631706237793, "data": {"method": "GET", "path": "/api/information/list", "query": "info_type=seek", "error": "1 validation error for InformationResponse\ncreated_at\n Input should be a valid datetime [type=datetime_type, input_value=None, input_type=NoneType]\n For further information visit https://errors.pydantic.dev/2.5/v/datetime_type"}, "exception": "Traceback (most recent call last):\n File \"/usr/local/lib/python3.12/dist-packages/starlette/middleware/base.py\", line 159, in call_next\n message = await recv_stream.receive()\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/usr/local/lib/python3.12/dist-packages/anyio/streams/memory.py\", line 132, in receive\n raise EndOfStream from None\nanyio.EndOfStream\n\nDuring handling of the above exception, another exception occurred:\n\nTraceback (most recent call last):\n File \"/root/.openclaw/workspace/jiachenlong/backend/app/middleware/logging.py\", line 28, in logging_middleware\n response = await call_next(request)\n ^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/usr/local/lib/python3.12/dist-packages/starlette/middleware/base.py\", line 165, in call_next\n raise app_exc\n File \"/usr/local/lib/python3.12/dist-packages/starlette/middleware/base.py\", line 151, in coro\n await self.app(scope, receive_or_disconnect, send_no_error)\n File \"/usr/local/lib/python3.12/dist-packages/starlette/middleware/cors.py\", line 83, in __call__\n await self.app(scope, receive, send)\n File \"/usr/local/lib/python3.12/dist-packages/starlette/middleware/exceptions.py\", line 62, in __call__\n await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)\n File \"/usr/local/lib/python3.12/dist-packages/starlette/_exception_handler.py\", line 64, in wrapped_app\n raise exc\n File \"/usr/local/lib/python3.12/dist-packages/starlette/_exception_handler.py\", line 53, in wrapped_app\n await app(scope, receive, sender)\n File \"/usr/local/lib/python3.12/dist-packages/starlette/routing.py\", line 762, in __call__\n await self.middleware_stack(scope, receive, send)\n File \"/usr/local/lib/python3.12/dist-packages/starlette/routing.py\", line 782, in app\n await route.handle(scope, receive, send)\n File \"/usr/local/lib/python3.12/dist-packages/starlette/routing.py\", line 297, in handle\n await self.app(scope, receive, send)\n File \"/usr/local/lib/python3.12/dist-packages/starlette/routing.py\", line 77, in app\n await wrap_app_handling_exceptions(app, request)(scope, receive, send)\n File \"/usr/local/lib/python3.12/dist-packages/starlette/_exception_handler.py\", line 64, in wrapped_app\n raise exc\n File \"/usr/local/lib/python3.12/dist-packages/starlette/_exception_handler.py\", line 53, in wrapped_app\n await app(scope, receive, sender)\n File \"/usr/local/lib/python3.12/dist-packages/starlette/routing.py\", line 72, in app\n response = await func(request)\n ^^^^^^^^^^^^^^^^^^^\n File \"/usr/local/lib/python3.12/dist-packages/fastapi/routing.py\", line 299, in app\n raise e\n File \"/usr/local/lib/python3.12/dist-packages/fastapi/routing.py\", line 294, in app\n raw_response = await run_endpoint_function(\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/usr/local/lib/python3.12/dist-packages/fastapi/routing.py\", line 193, in run_endpoint_function\n return await run_in_threadpool(dependant.call, **values)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/usr/local/lib/python3.12/dist-packages/starlette/concurrency.py\", line 40, in run_in_threadpool\n return await anyio.to_thread.run_sync(func, *args)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/usr/local/lib/python3.12/dist-packages/anyio/to_thread.py\", line 63, in run_sync\n return await get_async_backend().run_sync_in_worker_thread(\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/usr/local/lib/python3.12/dist-packages/anyio/_backends/_asyncio.py\", line 2502, in run_sync_in_worker_thread\n return await future\n ^^^^^^^^^^^^\n File \"/usr/local/lib/python3.12/dist-packages/anyio/_backends/_asyncio.py\", line 986, in run\n result = context.run(func, *args)\n ^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/root/.openclaw/workspace/jiachenlong/backend/app/routers/information.py\", line 148, in get_information_list\n result.append(InformationResponse(\n ^^^^^^^^^^^^^^^^^^^^\n File \"/usr/local/lib/python3.12/dist-packages/pydantic/main.py\", line 164, in __init__\n __pydantic_self__.__pydantic_validator__.validate_python(data, self_instance=__pydantic_self__)\npydantic_core._pydantic_core.ValidationError: 1 validation error for InformationResponse\ncreated_at\n Input should be a valid datetime [type=datetime_type, input_value=None, input_type=NoneType]\n For further information visit https://errors.pydantic.dev/2.5/v/datetime_type"}
{"timestamp": "2026-04-15T04:41:51.495550Z", "level": "ERROR", "logger": "root", "message": "未捕获异常1 validation error for InformationResponse\ncreated_at\n Input should be a valid datetime [type=datetime_type, input_value=None, input_type=NoneType]\n For further information visit https://errors.pydantic.dev/2.5/v/datetime_type\n + Exception Group Traceback (most recent call last):\n | File \"/usr/local/lib/python3.12/dist-packages/starlette/_utils.py\", line 85, in collapse_excgroups\n | yield\n | File \"/usr/local/lib/python3.12/dist-packages/starlette/middleware/base.py\", line 190, in __call__\n | async with anyio.create_task_group() as task_group:\n | File \"/usr/local/lib/python3.12/dist-packages/anyio/_backends/_asyncio.py\", line 783, in __aexit__\n | raise BaseExceptionGroup(\n | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception)\n +-+---------------- 1 ----------------\n | Traceback (most recent call last):\n | File \"/usr/local/lib/python3.12/dist-packages/starlette/middleware/errors.py\", line 164, in __call__\n | await self.app(scope, receive, _send)\n | File \"/usr/local/lib/python3.12/dist-packages/starlette/middleware/base.py\", line 189, in __call__\n | with collapse_excgroups():\n | File \"/usr/lib/python3.12/contextlib.py\", line 158, in __exit__\n | self.gen.throw(value)\n | File \"/usr/local/lib/python3.12/dist-packages/starlette/_utils.py\", line 91, in collapse_excgroups\n | raise exc\n | File \"/usr/local/lib/python3.12/dist-packages/starlette/middleware/base.py\", line 191, in __call__\n | response = await self.dispatch_func(request, call_next)\n | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n | File \"/root/.openclaw/workspace/jiachenlong/backend/app/middleware/logging.py\", line 28, in logging_middleware\n | response = await call_next(request)\n | ^^^^^^^^^^^^^^^^^^^^^^^^\n | File \"/usr/local/lib/python3.12/dist-packages/starlette/middleware/base.py\", line 165, in call_next\n | raise app_exc\n | File \"/usr/local/lib/python3.12/dist-packages/starlette/middleware/base.py\", line 151, in coro\n | await self.app(scope, receive_or_disconnect, send_no_error)\n | File \"/usr/local/lib/python3.12/dist-packages/starlette/middleware/cors.py\", line 83, in __call__\n | await self.app(scope, receive, send)\n | File \"/usr/local/lib/python3.12/dist-packages/starlette/middleware/exceptions.py\", line 62, in __call__\n | await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)\n | File \"/usr/local/lib/python3.12/dist-packages/starlette/_exception_handler.py\", line 64, in wrapped_app\n | raise exc\n | File \"/usr/local/lib/python3.12/dist-packages/starlette/_exception_handler.py\", line 53, in wrapped_app\n | await app(scope, receive, sender)\n | File \"/usr/local/lib/python3.12/dist-packages/starlette/routing.py\", line 762, in __call__\n | await self.middleware_stack(scope, receive, send)\n | File \"/usr/local/lib/python3.12/dist-packages/starlette/routing.py\", line 782, in app\n | await route.handle(scope, receive, send)\n | File \"/usr/local/lib/python3.12/dist-packages/starlette/routing.py\", line 297, in handle\n | await self.app(scope, receive, send)\n | File \"/usr/local/lib/python3.12/dist-packages/starlette/routing.py\", line 77, in app\n | await wrap_app_handling_exceptions(app, request)(scope, receive, send)\n | File \"/usr/local/lib/python3.12/dist-packages/starlette/_exception_handler.py\", line 64, in wrapped_app\n | raise exc\n | File \"/usr/local/lib/python3.12/dist-packages/starlette/_exception_handler.py\", line 53, in wrapped_app\n | await app(scope, receive, sender)\n | File \"/usr/local/lib/python3.12/dist-packages/starlette/routing.py\", line 72, in app\n | response = await func(request)\n | ^^^^^^^^^^^^^^^^^^^\n | File \"/usr/local/lib/python3.12/dist-packages/fastapi/routing.py\", line 299, in app\n | raise e\n | File \"/usr/local/lib/python3.12/dist-packages/fastapi/routing.py\", line 294, in app\n | raw_response = await run_endpoint_function(\n | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n | File \"/usr/local/lib/python3.12/dist-packages/fastapi/routing.py\", line 193, in run_endpoint_function\n | return await run_in_threadpool(dependant.call, **values)\n | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n | File \"/usr/local/lib/python3.12/dist-packages/starlette/concurrency.py\", line 40, in run_in_threadpool\n | return await anyio.to_thread.run_sync(func, *args)\n | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n | File \"/usr/local/lib/python3.12/dist-packages/anyio/to_thread.py\", line 63, in run_sync\n | return await get_async_backend().run_sync_in_worker_thread(\n | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n | File \"/usr/local/lib/python3.12/dist-packages/anyio/_backends/_asyncio.py\", line 2502, in run_sync_in_worker_thread\n | return await future\n | ^^^^^^^^^^^^\n | File \"/usr/local/lib/python3.12/dist-packages/anyio/_backends/_asyncio.py\", line 986, in run\n | result = context.run(func, *args)\n | ^^^^^^^^^^^^^^^^^^^^^^^^\n | File \"/root/.openclaw/workspace/jiachenlong/backend/app/routers/information.py\", line 148, in get_information_list\n | result.append(InformationResponse(\n | ^^^^^^^^^^^^^^^^^^^^\n | File \"/usr/local/lib/python3.12/dist-packages/pydantic/main.py\", line 164, in __init__\n | __pydantic_self__.__pydantic_validator__.validate_python(data, self_instance=__pydantic_self__)\n | pydantic_core._pydantic_core.ValidationError: 1 validation error for InformationResponse\n | created_at\n | Input should be a valid datetime [type=datetime_type, input_value=None, input_type=NoneType]\n | For further information visit https://errors.pydantic.dev/2.5/v/datetime_type\n +------------------------------------\n\nDuring handling of the above exception, another exception occurred:\n\nTraceback (most recent call last):\n File \"/usr/local/lib/python3.12/dist-packages/starlette/middleware/errors.py\", line 164, in __call__\n await self.app(scope, receive, _send)\n File \"/usr/local/lib/python3.12/dist-packages/starlette/middleware/base.py\", line 189, in __call__\n with collapse_excgroups():\n File \"/usr/lib/python3.12/contextlib.py\", line 158, in __exit__\n self.gen.throw(value)\n File \"/usr/local/lib/python3.12/dist-packages/starlette/_utils.py\", line 91, in collapse_excgroups\n raise exc\n File \"/usr/local/lib/python3.12/dist-packages/starlette/middleware/base.py\", line 191, in __call__\n response = await self.dispatch_func(request, call_next)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/root/.openclaw/workspace/jiachenlong/backend/app/middleware/logging.py\", line 28, in logging_middleware\n response = await call_next(request)\n ^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/usr/local/lib/python3.12/dist-packages/starlette/middleware/base.py\", line 165, in call_next\n raise app_exc\n File \"/usr/local/lib/python3.12/dist-packages/starlette/middleware/base.py\", line 151, in coro\n await self.app(scope, receive_or_disconnect, send_no_error)\n File \"/usr/local/lib/python3.12/dist-packages/starlette/middleware/cors.py\", line 83, in __call__\n await self.app(scope, receive, send)\n File \"/usr/local/lib/python3.12/dist-packages/starlette/middleware/exceptions.py\", line 62, in __call__\n await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)\n File \"/usr/local/lib/python3.12/dist-packages/starlette/_exception_handler.py\", line 64, in wrapped_app\n raise exc\n File \"/usr/local/lib/python3.12/dist-packages/starlette/_exception_handler.py\", line 53, in wrapped_app\n await app(scope, receive, sender)\n File \"/usr/local/lib/python3.12/dist-packages/starlette/routing.py\", line 762, in __call__\n await self.middleware_stack(scope, receive, send)\n File \"/usr/local/lib/python3.12/dist-packages/starlette/routing.py\", line 782, in app\n await route.handle(scope, receive, send)\n File \"/usr/local/lib/python3.12/dist-packages/starlette/routing.py\", line 297, in handle\n await self.app(scope, receive, send)\n File \"/usr/local/lib/python3.12/dist-packages/starlette/routing.py\", line 77, in app\n await wrap_app_handling_exceptions(app, request)(scope, receive, send)\n File \"/usr/local/lib/python3.12/dist-packages/starlette/_exception_handler.py\", line 64, in wrapped_app\n raise exc\n File \"/usr/local/lib/python3.12/dist-packages/starlette/_exception_handler.py\", line 53, in wrapped_app\n await app(scope, receive, sender)\n File \"/usr/local/lib/python3.12/dist-packages/starlette/routing.py\", line 72, in app\n response = await func(request)\n ^^^^^^^^^^^^^^^^^^^\n File \"/usr/local/lib/python3.12/dist-packages/fastapi/routing.py\", line 299, in app\n raise e\n File \"/usr/local/lib/python3.12/dist-packages/fastapi/routing.py\", line 294, in app\n raw_response = await run_endpoint_function(\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/usr/local/lib/python3.12/dist-packages/fastapi/routing.py\", line 193, in run_endpoint_function\n return await run_in_threadpool(dependant.call, **values)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/usr/local/lib/python3.12/dist-packages/starlette/concurrency.py\", line 40, in run_in_threadpool\n return await anyio.to_thread.run_sync(func, *args)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/usr/local/lib/python3.12/dist-packages/anyio/to_thread.py\", line 63, in run_sync\n return await get_async_backend().run_sync_in_worker_thread(\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/usr/local/lib/python3.12/dist-packages/anyio/_backends/_asyncio.py\", line 2502, in run_sync_in_worker_thread\n return await future\n ^^^^^^^^^^^^\n File \"/usr/local/lib/python3.12/dist-packages/anyio/_backends/_asyncio.py\", line 986, in run\n result = context.run(func, *args)\n ^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/root/.openclaw/workspace/jiachenlong/backend/app/routers/information.py\", line 148, in get_information_list\n result.append(InformationResponse(\n ^^^^^^^^^^^^^^^^^^^^\n File \"/usr/local/lib/python3.12/dist-packages/pydantic/main.py\", line 164, in __init__\n __pydantic_self__.__pydantic_validator__.validate_python(data, self_instance=__pydantic_self__)\npydantic_core._pydantic_core.ValidationError: 1 validation error for InformationResponse\ncreated_at\n Input should be a valid datetime [type=datetime_type, input_value=None, input_type=NoneType]\n For further information visit https://errors.pydantic.dev/2.5/v/datetime_type\n", "trace_id": "9086b2b8-98df-41fe-bacf-3ba62a92f0b5", "user_id": null, "request_id": "f4c8cc51-606e-4ac4-93e5-fcaf50d570d1", "ip_address": null, "duration_ms": null}
{"timestamp": "2026-04-15T04:42:58.846192Z", "level": "ERROR", "logger": "app.core.database", "message": "数据库会话错误: 1 validation error for InformationResponse\ncreated_at\n Input should be a valid datetime [type=datetime_type, input_value=None, input_type=NoneType]\n For further information visit https://errors.pydantic.dev/2.5/v/datetime_type", "trace_id": "26b91125-790c-4d3f-9b4d-6b416b5b2c33", "user_id": null, "request_id": "d51b4b7a-78f6-4db8-9339-7698778b05a6", "ip_address": null, "duration_ms": null}
{"timestamp": "2026-04-15T04:42:58.848163Z", "level": "ERROR", "logger": "root", "message": "API 请求异常GET /api/information/my/list", "trace_id": "1f653a8b-0aa4-4103-bce0-fa46d6a2264a", "user_id": "authenticated", "request_id": "b82e34b3-50d1-463f-aebe-d8b884b501ef", "ip_address": "127.0.0.1", "duration_ms": 18.507719039916992, "data": {"method": "GET", "path": "/api/information/my/list", "query": "", "error": "1 validation error for InformationResponse\ncreated_at\n Input should be a valid datetime [type=datetime_type, input_value=None, input_type=NoneType]\n For further information visit https://errors.pydantic.dev/2.5/v/datetime_type"}, "exception": "Traceback (most recent call last):\n File \"/usr/local/lib/python3.12/dist-packages/starlette/middleware/base.py\", line 159, in call_next\n message = await recv_stream.receive()\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/usr/local/lib/python3.12/dist-packages/anyio/streams/memory.py\", line 132, in receive\n raise EndOfStream from None\nanyio.EndOfStream\n\nDuring handling of the above exception, another exception occurred:\n\nTraceback (most recent call last):\n File \"/root/.openclaw/workspace/jiachenlong/backend/app/middleware/logging.py\", line 28, in logging_middleware\n response = await call_next(request)\n ^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/usr/local/lib/python3.12/dist-packages/starlette/middleware/base.py\", line 165, in call_next\n raise app_exc\n File \"/usr/local/lib/python3.12/dist-packages/starlette/middleware/base.py\", line 151, in coro\n await self.app(scope, receive_or_disconnect, send_no_error)\n File \"/usr/local/lib/python3.12/dist-packages/starlette/middleware/cors.py\", line 83, in __call__\n await self.app(scope, receive, send)\n File \"/usr/local/lib/python3.12/dist-packages/starlette/middleware/exceptions.py\", line 62, in __call__\n await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)\n File \"/usr/local/lib/python3.12/dist-packages/starlette/_exception_handler.py\", line 64, in wrapped_app\n raise exc\n File \"/usr/local/lib/python3.12/dist-packages/starlette/_exception_handler.py\", line 53, in wrapped_app\n await app(scope, receive, sender)\n File \"/usr/local/lib/python3.12/dist-packages/starlette/routing.py\", line 762, in __call__\n await self.middleware_stack(scope, receive, send)\n File \"/usr/local/lib/python3.12/dist-packages/starlette/routing.py\", line 782, in app\n await route.handle(scope, receive, send)\n File \"/usr/local/lib/python3.12/dist-packages/starlette/routing.py\", line 297, in handle\n await self.app(scope, receive, send)\n File \"/usr/local/lib/python3.12/dist-packages/starlette/routing.py\", line 77, in app\n await wrap_app_handling_exceptions(app, request)(scope, receive, send)\n File \"/usr/local/lib/python3.12/dist-packages/starlette/_exception_handler.py\", line 64, in wrapped_app\n raise exc\n File \"/usr/local/lib/python3.12/dist-packages/starlette/_exception_handler.py\", line 53, in wrapped_app\n await app(scope, receive, sender)\n File \"/usr/local/lib/python3.12/dist-packages/starlette/routing.py\", line 72, in app\n response = await func(request)\n ^^^^^^^^^^^^^^^^^^^\n File \"/usr/local/lib/python3.12/dist-packages/fastapi/routing.py\", line 299, in app\n raise e\n File \"/usr/local/lib/python3.12/dist-packages/fastapi/routing.py\", line 294, in app\n raw_response = await run_endpoint_function(\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/usr/local/lib/python3.12/dist-packages/fastapi/routing.py\", line 193, in run_endpoint_function\n return await run_in_threadpool(dependant.call, **values)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/usr/local/lib/python3.12/dist-packages/starlette/concurrency.py\", line 40, in run_in_threadpool\n return await anyio.to_thread.run_sync(func, *args)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/usr/local/lib/python3.12/dist-packages/anyio/to_thread.py\", line 63, in run_sync\n return await get_async_backend().run_sync_in_worker_thread(\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/usr/local/lib/python3.12/dist-packages/anyio/_backends/_asyncio.py\", line 2502, in run_sync_in_worker_thread\n return await future\n ^^^^^^^^^^^^\n File \"/usr/local/lib/python3.12/dist-packages/anyio/_backends/_asyncio.py\", line 986, in run\n result = context.run(func, *args)\n ^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/root/.openclaw/workspace/jiachenlong/backend/app/routers/information.py\", line 865, in get_my_information_list\n result.append(InformationResponse(\n ^^^^^^^^^^^^^^^^^^^^\n File \"/usr/local/lib/python3.12/dist-packages/pydantic/main.py\", line 164, in __init__\n __pydantic_self__.__pydantic_validator__.validate_python(data, self_instance=__pydantic_self__)\npydantic_core._pydantic_core.ValidationError: 1 validation error for InformationResponse\ncreated_at\n Input should be a valid datetime [type=datetime_type, input_value=None, input_type=NoneType]\n For further information visit https://errors.pydantic.dev/2.5/v/datetime_type"}
{"timestamp": "2026-04-15T04:42:58.853579Z", "level": "ERROR", "logger": "root", "message": "未捕获异常1 validation error for InformationResponse\ncreated_at\n Input should be a valid datetime [type=datetime_type, input_value=None, input_type=NoneType]\n For further information visit https://errors.pydantic.dev/2.5/v/datetime_type\n + Exception Group Traceback (most recent call last):\n | File \"/usr/local/lib/python3.12/dist-packages/starlette/_utils.py\", line 85, in collapse_excgroups\n | yield\n | File \"/usr/local/lib/python3.12/dist-packages/starlette/middleware/base.py\", line 190, in __call__\n | async with anyio.create_task_group() as task_group:\n | File \"/usr/local/lib/python3.12/dist-packages/anyio/_backends/_asyncio.py\", line 783, in __aexit__\n | raise BaseExceptionGroup(\n | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception)\n +-+---------------- 1 ----------------\n | Traceback (most recent call last):\n | File \"/usr/local/lib/python3.12/dist-packages/starlette/middleware/errors.py\", line 164, in __call__\n | await self.app(scope, receive, _send)\n | File \"/usr/local/lib/python3.12/dist-packages/starlette/middleware/base.py\", line 189, in __call__\n | with collapse_excgroups():\n | File \"/usr/lib/python3.12/contextlib.py\", line 158, in __exit__\n | self.gen.throw(value)\n | File \"/usr/local/lib/python3.12/dist-packages/starlette/_utils.py\", line 91, in collapse_excgroups\n | raise exc\n | File \"/usr/local/lib/python3.12/dist-packages/starlette/middleware/base.py\", line 191, in __call__\n | response = await self.dispatch_func(request, call_next)\n | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n | File \"/root/.openclaw/workspace/jiachenlong/backend/app/middleware/logging.py\", line 28, in logging_middleware\n | response = await call_next(request)\n | ^^^^^^^^^^^^^^^^^^^^^^^^\n | File \"/usr/local/lib/python3.12/dist-packages/starlette/middleware/base.py\", line 165, in call_next\n | raise app_exc\n | File \"/usr/local/lib/python3.12/dist-packages/starlette/middleware/base.py\", line 151, in coro\n | await self.app(scope, receive_or_disconnect, send_no_error)\n | File \"/usr/local/lib/python3.12/dist-packages/starlette/middleware/cors.py\", line 83, in __call__\n | await self.app(scope, receive, send)\n | File \"/usr/local/lib/python3.12/dist-packages/starlette/middleware/exceptions.py\", line 62, in __call__\n | await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)\n | File \"/usr/local/lib/python3.12/dist-packages/starlette/_exception_handler.py\", line 64, in wrapped_app\n | raise exc\n | File \"/usr/local/lib/python3.12/dist-packages/starlette/_exception_handler.py\", line 53, in wrapped_app\n | await app(scope, receive, sender)\n | File \"/usr/local/lib/python3.12/dist-packages/starlette/routing.py\", line 762, in __call__\n | await self.middleware_stack(scope, receive, send)\n | File \"/usr/local/lib/python3.12/dist-packages/starlette/routing.py\", line 782, in app\n | await route.handle(scope, receive, send)\n | File \"/usr/local/lib/python3.12/dist-packages/starlette/routing.py\", line 297, in handle\n | await self.app(scope, receive, send)\n | File \"/usr/local/lib/python3.12/dist-packages/starlette/routing.py\", line 77, in app\n | await wrap_app_handling_exceptions(app, request)(scope, receive, send)\n | File \"/usr/local/lib/python3.12/dist-packages/starlette/_exception_handler.py\", line 64, in wrapped_app\n | raise exc\n | File \"/usr/local/lib/python3.12/dist-packages/starlette/_exception_handler.py\", line 53, in wrapped_app\n | await app(scope, receive, sender)\n | File \"/usr/local/lib/python3.12/dist-packages/starlette/routing.py\", line 72, in app\n | response = await func(request)\n | ^^^^^^^^^^^^^^^^^^^\n | File \"/usr/local/lib/python3.12/dist-packages/fastapi/routing.py\", line 299, in app\n | raise e\n | File \"/usr/local/lib/python3.12/dist-packages/fastapi/routing.py\", line 294, in app\n | raw_response = await run_endpoint_function(\n | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n | File \"/usr/local/lib/python3.12/dist-packages/fastapi/routing.py\", line 193, in run_endpoint_function\n | return await run_in_threadpool(dependant.call, **values)\n | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n | File \"/usr/local/lib/python3.12/dist-packages/starlette/concurrency.py\", line 40, in run_in_threadpool\n | return await anyio.to_thread.run_sync(func, *args)\n | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n | File \"/usr/local/lib/python3.12/dist-packages/anyio/to_thread.py\", line 63, in run_sync\n | return await get_async_backend().run_sync_in_worker_thread(\n | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n | File \"/usr/local/lib/python3.12/dist-packages/anyio/_backends/_asyncio.py\", line 2502, in run_sync_in_worker_thread\n | return await future\n | ^^^^^^^^^^^^\n | File \"/usr/local/lib/python3.12/dist-packages/anyio/_backends/_asyncio.py\", line 986, in run\n | result = context.run(func, *args)\n | ^^^^^^^^^^^^^^^^^^^^^^^^\n | File \"/root/.openclaw/workspace/jiachenlong/backend/app/routers/information.py\", line 865, in get_my_information_list\n | result.append(InformationResponse(\n | ^^^^^^^^^^^^^^^^^^^^\n | File \"/usr/local/lib/python3.12/dist-packages/pydantic/main.py\", line 164, in __init__\n | __pydantic_self__.__pydantic_validator__.validate_python(data, self_instance=__pydantic_self__)\n | pydantic_core._pydantic_core.ValidationError: 1 validation error for InformationResponse\n | created_at\n | Input should be a valid datetime [type=datetime_type, input_value=None, input_type=NoneType]\n | For further information visit https://errors.pydantic.dev/2.5/v/datetime_type\n +------------------------------------\n\nDuring handling of the above exception, another exception occurred:\n\nTraceback (most recent call last):\n File \"/usr/local/lib/python3.12/dist-packages/starlette/middleware/errors.py\", line 164, in __call__\n await self.app(scope, receive, _send)\n File \"/usr/local/lib/python3.12/dist-packages/starlette/middleware/base.py\", line 189, in __call__\n with collapse_excgroups():\n File \"/usr/lib/python3.12/contextlib.py\", line 158, in __exit__\n self.gen.throw(value)\n File \"/usr/local/lib/python3.12/dist-packages/starlette/_utils.py\", line 91, in collapse_excgroups\n raise exc\n File \"/usr/local/lib/python3.12/dist-packages/starlette/middleware/base.py\", line 191, in __call__\n response = await self.dispatch_func(request, call_next)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/root/.openclaw/workspace/jiachenlong/backend/app/middleware/logging.py\", line 28, in logging_middleware\n response = await call_next(request)\n ^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/usr/local/lib/python3.12/dist-packages/starlette/middleware/base.py\", line 165, in call_next\n raise app_exc\n File \"/usr/local/lib/python3.12/dist-packages/starlette/middleware/base.py\", line 151, in coro\n await self.app(scope, receive_or_disconnect, send_no_error)\n File \"/usr/local/lib/python3.12/dist-packages/starlette/middleware/cors.py\", line 83, in __call__\n await self.app(scope, receive, send)\n File \"/usr/local/lib/python3.12/dist-packages/starlette/middleware/exceptions.py\", line 62, in __call__\n await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)\n File \"/usr/local/lib/python3.12/dist-packages/starlette/_exception_handler.py\", line 64, in wrapped_app\n raise exc\n File \"/usr/local/lib/python3.12/dist-packages/starlette/_exception_handler.py\", line 53, in wrapped_app\n await app(scope, receive, sender)\n File \"/usr/local/lib/python3.12/dist-packages/starlette/routing.py\", line 762, in __call__\n await self.middleware_stack(scope, receive, send)\n File \"/usr/local/lib/python3.12/dist-packages/starlette/routing.py\", line 782, in app\n await route.handle(scope, receive, send)\n File \"/usr/local/lib/python3.12/dist-packages/starlette/routing.py\", line 297, in handle\n await self.app(scope, receive, send)\n File \"/usr/local/lib/python3.12/dist-packages/starlette/routing.py\", line 77, in app\n await wrap_app_handling_exceptions(app, request)(scope, receive, send)\n File \"/usr/local/lib/python3.12/dist-packages/starlette/_exception_handler.py\", line 64, in wrapped_app\n raise exc\n File \"/usr/local/lib/python3.12/dist-packages/starlette/_exception_handler.py\", line 53, in wrapped_app\n await app(scope, receive, sender)\n File \"/usr/local/lib/python3.12/dist-packages/starlette/routing.py\", line 72, in app\n response = await func(request)\n ^^^^^^^^^^^^^^^^^^^\n File \"/usr/local/lib/python3.12/dist-packages/fastapi/routing.py\", line 299, in app\n raise e\n File \"/usr/local/lib/python3.12/dist-packages/fastapi/routing.py\", line 294, in app\n raw_response = await run_endpoint_function(\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/usr/local/lib/python3.12/dist-packages/fastapi/routing.py\", line 193, in run_endpoint_function\n return await run_in_threadpool(dependant.call, **values)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/usr/local/lib/python3.12/dist-packages/starlette/concurrency.py\", line 40, in run_in_threadpool\n return await anyio.to_thread.run_sync(func, *args)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/usr/local/lib/python3.12/dist-packages/anyio/to_thread.py\", line 63, in run_sync\n return await get_async_backend().run_sync_in_worker_thread(\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/usr/local/lib/python3.12/dist-packages/anyio/_backends/_asyncio.py\", line 2502, in run_sync_in_worker_thread\n return await future\n ^^^^^^^^^^^^\n File \"/usr/local/lib/python3.12/dist-packages/anyio/_backends/_asyncio.py\", line 986, in run\n result = context.run(func, *args)\n ^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/root/.openclaw/workspace/jiachenlong/backend/app/routers/information.py\", line 865, in get_my_information_list\n result.append(InformationResponse(\n ^^^^^^^^^^^^^^^^^^^^\n File \"/usr/local/lib/python3.12/dist-packages/pydantic/main.py\", line 164, in __init__\n __pydantic_self__.__pydantic_validator__.validate_python(data, self_instance=__pydantic_self__)\npydantic_core._pydantic_core.ValidationError: 1 validation error for InformationResponse\ncreated_at\n Input should be a valid datetime [type=datetime_type, input_value=None, input_type=NoneType]\n For further information visit https://errors.pydantic.dev/2.5/v/datetime_type\n", "trace_id": "9ad0efb7-00bf-4486-9a8b-fb92580ff08a", "user_id": null, "request_id": "b36c422b-8d83-4c07-8eb1-1b364a4d84e8", "ip_address": null, "duration_ms": null}
{"timestamp": "2026-04-15T04:48:07.281241Z", "level": "INFO", "logger": "root", "message": "甲辰收藏系统 FastAPI 后端 v0.0.0 启动成功", "trace_id": "6f6cd185-cd65-4400-ba50-4a875a3752b9", "user_id": null, "request_id": "59082f37-bf42-445b-a989-3ec7a8f32405", "ip_address": null, "duration_ms": null}
{"timestamp": "2026-04-15T04:48:34.642478Z", "level": "ERROR", "logger": "app.core.database", "message": "数据库会话错误: 2 validation errors:\n {'type': 'int_type', 'loc': ('response', 0, 'view_count'), 'msg': 'Input should be a valid integer', 'input': None, 'url': 'https://errors.pydantic.dev/2.5/v/int_type'}\n {'type': 'int_type', 'loc': ('response', 0, 'contact_count'), 'msg': 'Input should be a valid integer', 'input': None, 'url': 'https://errors.pydantic.dev/2.5/v/int_type'}\n", "trace_id": "5a24478f-193a-41ff-8f03-278094ed2e83", "user_id": null, "request_id": "f5593d8a-f8df-4b6e-8b0a-91ef7a1a0917", "ip_address": null, "duration_ms": null}
{"timestamp": "2026-04-15T04:48:34.644427Z", "level": "ERROR", "logger": "root", "message": "API 请求异常GET /api/deal/list", "trace_id": "2c627391-bde1-47de-b4ff-5731a023c409", "user_id": "authenticated", "request_id": "b8c85965-fb12-4dad-bfae-065cf67484bc", "ip_address": "127.0.0.1", "duration_ms": 5.033731460571289, "data": {"method": "GET", "path": "/api/deal/list", "query": "", "error": "2 validation errors:\n {'type': 'int_type', 'loc': ('response', 0, 'view_count'), 'msg': 'Input should be a valid integer', 'input': None, 'url': 'https://errors.pydantic.dev/2.5/v/int_type'}\n {'type': 'int_type', 'loc': ('response', 0, 'contact_count'), 'msg': 'Input should be a valid integer', 'input': None, 'url': 'https://errors.pydantic.dev/2.5/v/int_type'}\n"}, "exception": "Traceback (most recent call last):\n File \"/usr/local/lib/python3.12/dist-packages/starlette/middleware/base.py\", line 159, in call_next\n message = await recv_stream.receive()\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/usr/local/lib/python3.12/dist-packages/anyio/streams/memory.py\", line 132, in receive\n raise EndOfStream from None\nanyio.EndOfStream\n\nDuring handling of the above exception, another exception occurred:\n\nTraceback (most recent call last):\n File \"/root/.openclaw/workspace/jiachenlong/backend/app/middleware/logging.py\", line 28, in logging_middleware\n response = await call_next(request)\n ^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/usr/local/lib/python3.12/dist-packages/starlette/middleware/base.py\", line 165, in call_next\n raise app_exc\n File \"/usr/local/lib/python3.12/dist-packages/starlette/middleware/base.py\", line 151, in coro\n await self.app(scope, receive_or_disconnect, send_no_error)\n File \"/usr/local/lib/python3.12/dist-packages/starlette/middleware/cors.py\", line 83, in __call__\n await self.app(scope, receive, send)\n File \"/usr/local/lib/python3.12/dist-packages/starlette/middleware/exceptions.py\", line 62, in __call__\n await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)\n File \"/usr/local/lib/python3.12/dist-packages/starlette/_exception_handler.py\", line 64, in wrapped_app\n raise exc\n File \"/usr/local/lib/python3.12/dist-packages/starlette/_exception_handler.py\", line 53, in wrapped_app\n await app(scope, receive, sender)\n File \"/usr/local/lib/python3.12/dist-packages/starlette/routing.py\", line 762, in __call__\n await self.middleware_stack(scope, receive, send)\n File \"/usr/local/lib/python3.12/dist-packages/starlette/routing.py\", line 782, in app\n await route.handle(scope, receive, send)\n File \"/usr/local/lib/python3.12/dist-packages/starlette/routing.py\", line 297, in handle\n await self.app(scope, receive, send)\n File \"/usr/local/lib/python3.12/dist-packages/starlette/routing.py\", line 77, in app\n await wrap_app_handling_exceptions(app, request)(scope, receive, send)\n File \"/usr/local/lib/python3.12/dist-packages/starlette/_exception_handler.py\", line 64, in wrapped_app\n raise exc\n File \"/usr/local/lib/python3.12/dist-packages/starlette/_exception_handler.py\", line 53, in wrapped_app\n await app(scope, receive, sender)\n File \"/usr/local/lib/python3.12/dist-packages/starlette/routing.py\", line 72, in app\n response = await func(request)\n ^^^^^^^^^^^^^^^^^^^\n File \"/usr/local/lib/python3.12/dist-packages/fastapi/routing.py\", line 315, in app\n content = await serialize_response(\n ^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/usr/local/lib/python3.12/dist-packages/fastapi/routing.py\", line 155, in serialize_response\n raise ResponseValidationError(\nfastapi.exceptions.ResponseValidationError: 2 validation errors:\n {'type': 'int_type', 'loc': ('response', 0, 'view_count'), 'msg': 'Input should be a valid integer', 'input': None, 'url': 'https://errors.pydantic.dev/2.5/v/int_type'}\n {'type': 'int_type', 'loc': ('response', 0, 'contact_count'), 'msg': 'Input should be a valid integer', 'input': None, 'url': 'https://errors.pydantic.dev/2.5/v/int_type'}\n"}
{"timestamp": "2026-04-15T04:48:34.647748Z", "level": "ERROR", "logger": "root", "message": "未捕获异常2 validation errors:\n {'type': 'int_type', 'loc': ('response', 0, 'view_count'), 'msg': 'Input should be a valid integer', 'input': None, 'url': 'https://errors.pydantic.dev/2.5/v/int_type'}\n {'type': 'int_type', 'loc': ('response', 0, 'contact_count'), 'msg': 'Input should be a valid integer', 'input': None, 'url': 'https://errors.pydantic.dev/2.5/v/int_type'}\n\n + Exception Group Traceback (most recent call last):\n | File \"/usr/local/lib/python3.12/dist-packages/starlette/_utils.py\", line 85, in collapse_excgroups\n | yield\n | File \"/usr/local/lib/python3.12/dist-packages/starlette/middleware/base.py\", line 190, in __call__\n | async with anyio.create_task_group() as task_group:\n | File \"/usr/local/lib/python3.12/dist-packages/anyio/_backends/_asyncio.py\", line 783, in __aexit__\n | raise BaseExceptionGroup(\n | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception)\n +-+---------------- 1 ----------------\n | Traceback (most recent call last):\n | File \"/usr/local/lib/python3.12/dist-packages/starlette/middleware/errors.py\", line 164, in __call__\n | await self.app(scope, receive, _send)\n | File \"/usr/local/lib/python3.12/dist-packages/starlette/middleware/base.py\", line 189, in __call__\n | with collapse_excgroups():\n | File \"/usr/lib/python3.12/contextlib.py\", line 158, in __exit__\n | self.gen.throw(value)\n | File \"/usr/local/lib/python3.12/dist-packages/starlette/_utils.py\", line 91, in collapse_excgroups\n | raise exc\n | File \"/usr/local/lib/python3.12/dist-packages/starlette/middleware/base.py\", line 191, in __call__\n | response = await self.dispatch_func(request, call_next)\n | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n | File \"/root/.openclaw/workspace/jiachenlong/backend/app/middleware/logging.py\", line 28, in logging_middleware\n | response = await call_next(request)\n | ^^^^^^^^^^^^^^^^^^^^^^^^\n | File \"/usr/local/lib/python3.12/dist-packages/starlette/middleware/base.py\", line 165, in call_next\n | raise app_exc\n | File \"/usr/local/lib/python3.12/dist-packages/starlette/middleware/base.py\", line 151, in coro\n | await self.app(scope, receive_or_disconnect, send_no_error)\n | File \"/usr/local/lib/python3.12/dist-packages/starlette/middleware/cors.py\", line 83, in __call__\n | await self.app(scope, receive, send)\n | File \"/usr/local/lib/python3.12/dist-packages/starlette/middleware/exceptions.py\", line 62, in __call__\n | await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)\n | File \"/usr/local/lib/python3.12/dist-packages/starlette/_exception_handler.py\", line 64, in wrapped_app\n | raise exc\n | File \"/usr/local/lib/python3.12/dist-packages/starlette/_exception_handler.py\", line 53, in wrapped_app\n | await app(scope, receive, sender)\n | File \"/usr/local/lib/python3.12/dist-packages/starlette/routing.py\", line 762, in __call__\n | await self.middleware_stack(scope, receive, send)\n | File \"/usr/local/lib/python3.12/dist-packages/starlette/routing.py\", line 782, in app\n | await route.handle(scope, receive, send)\n | File \"/usr/local/lib/python3.12/dist-packages/starlette/routing.py\", line 297, in handle\n | await self.app(scope, receive, send)\n | File \"/usr/local/lib/python3.12/dist-packages/starlette/routing.py\", line 77, in app\n | await wrap_app_handling_exceptions(app, request)(scope, receive, send)\n | File \"/usr/local/lib/python3.12/dist-packages/starlette/_exception_handler.py\", line 64, in wrapped_app\n | raise exc\n | File \"/usr/local/lib/python3.12/dist-packages/starlette/_exception_handler.py\", line 53, in wrapped_app\n | await app(scope, receive, sender)\n | File \"/usr/local/lib/python3.12/dist-packages/starlette/routing.py\", line 72, in app\n | response = await func(request)\n | ^^^^^^^^^^^^^^^^^^^\n | File \"/usr/local/lib/python3.12/dist-packages/fastapi/routing.py\", line 315, in app\n | content = await serialize_response(\n | ^^^^^^^^^^^^^^^^^^^^^^^^^\n | File \"/usr/local/lib/python3.12/dist-packages/fastapi/routing.py\", line 155, in serialize_response\n | raise ResponseValidationError(\n | fastapi.exceptions.ResponseValidationError: 2 validation errors:\n | {'type': 'int_type', 'loc': ('response', 0, 'view_count'), 'msg': 'Input should be a valid integer', 'input': None, 'url': 'https://errors.pydantic.dev/2.5/v/int_type'}\n | {'type': 'int_type', 'loc': ('response', 0, 'contact_count'), 'msg': 'Input should be a valid integer', 'input': None, 'url': 'https://errors.pydantic.dev/2.5/v/int_type'}\n | \n +------------------------------------\n\nDuring handling of the above exception, another exception occurred:\n\nTraceback (most recent call last):\n File \"/usr/local/lib/python3.12/dist-packages/starlette/middleware/errors.py\", line 164, in __call__\n await self.app(scope, receive, _send)\n File \"/usr/local/lib/python3.12/dist-packages/starlette/middleware/base.py\", line 189, in __call__\n with collapse_excgroups():\n File \"/usr/lib/python3.12/contextlib.py\", line 158, in __exit__\n self.gen.throw(value)\n File \"/usr/local/lib/python3.12/dist-packages/starlette/_utils.py\", line 91, in collapse_excgroups\n raise exc\n File \"/usr/local/lib/python3.12/dist-packages/starlette/middleware/base.py\", line 191, in __call__\n response = await self.dispatch_func(request, call_next)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/root/.openclaw/workspace/jiachenlong/backend/app/middleware/logging.py\", line 28, in logging_middleware\n response = await call_next(request)\n ^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/usr/local/lib/python3.12/dist-packages/starlette/middleware/base.py\", line 165, in call_next\n raise app_exc\n File \"/usr/local/lib/python3.12/dist-packages/starlette/middleware/base.py\", line 151, in coro\n await self.app(scope, receive_or_disconnect, send_no_error)\n File \"/usr/local/lib/python3.12/dist-packages/starlette/middleware/cors.py\", line 83, in __call__\n await self.app(scope, receive, send)\n File \"/usr/local/lib/python3.12/dist-packages/starlette/middleware/exceptions.py\", line 62, in __call__\n await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)\n File \"/usr/local/lib/python3.12/dist-packages/starlette/_exception_handler.py\", line 64, in wrapped_app\n raise exc\n File \"/usr/local/lib/python3.12/dist-packages/starlette/_exception_handler.py\", line 53, in wrapped_app\n await app(scope, receive, sender)\n File \"/usr/local/lib/python3.12/dist-packages/starlette/routing.py\", line 762, in __call__\n await self.middleware_stack(scope, receive, send)\n File \"/usr/local/lib/python3.12/dist-packages/starlette/routing.py\", line 782, in app\n await route.handle(scope, receive, send)\n File \"/usr/local/lib/python3.12/dist-packages/starlette/routing.py\", line 297, in handle\n await self.app(scope, receive, send)\n File \"/usr/local/lib/python3.12/dist-packages/starlette/routing.py\", line 77, in app\n await wrap_app_handling_exceptions(app, request)(scope, receive, send)\n File \"/usr/local/lib/python3.12/dist-packages/starlette/_exception_handler.py\", line 64, in wrapped_app\n raise exc\n File \"/usr/local/lib/python3.12/dist-packages/starlette/_exception_handler.py\", line 53, in wrapped_app\n await app(scope, receive, sender)\n File \"/usr/local/lib/python3.12/dist-packages/starlette/routing.py\", line 72, in app\n response = await func(request)\n ^^^^^^^^^^^^^^^^^^^\n File \"/usr/local/lib/python3.12/dist-packages/fastapi/routing.py\", line 315, in app\n content = await serialize_response(\n ^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/usr/local/lib/python3.12/dist-packages/fastapi/routing.py\", line 155, in serialize_response\n raise ResponseValidationError(\nfastapi.exceptions.ResponseValidationError: 2 validation errors:\n {'type': 'int_type', 'loc': ('response', 0, 'view_count'), 'msg': 'Input should be a valid integer', 'input': None, 'url': 'https://errors.pydantic.dev/2.5/v/int_type'}\n {'type': 'int_type', 'loc': ('response', 0, 'contact_count'), 'msg': 'Input should be a valid integer', 'input': None, 'url': 'https://errors.pydantic.dev/2.5/v/int_type'}\n\n", "trace_id": "bec50163-3a4c-4acd-afce-89ae53cc9ada", "user_id": null, "request_id": "7aec923e-dcdb-4fc2-9925-6c58522eca2a", "ip_address": null, "duration_ms": null}
{"timestamp": "2026-04-15T04:49:16.266011Z", "level": "INFO", "logger": "root", "message": "甲辰收藏系统 FastAPI 后端 v0.0.0 启动成功", "trace_id": "48a1e525-2343-48eb-808f-0251c0412ca7", "user_id": null, "request_id": "10a19f52-44e1-40b0-a106-921ffe00f6fd", "ip_address": null, "duration_ms": null}
{"timestamp": "2026-04-15T04:49:58.006677Z", "level": "INFO", "logger": "root", "message": "甲辰收藏系统 FastAPI 后端 v0.0.0 启动成功", "trace_id": "1caf2b84-32e8-4666-91a0-777cba8cd10f", "user_id": null, "request_id": "6ec3b15d-c285-4fca-96ad-446fdef4ce7f", "ip_address": null, "duration_ms": null}
{"timestamp": "2026-04-15T04:51:32.869462Z", "level": "INFO", "logger": "root", "message": "甲辰收藏系统 FastAPI 后端 v0.0.0 启动成功", "trace_id": "4ed7e61c-82f3-4b62-8736-79da1aaa7e6f", "user_id": null, "request_id": "436515bb-30db-4ddf-9a73-cda22ada49ce", "ip_address": null, "duration_ms": null}
{"timestamp": "2026-04-15T04:52:07.316981Z", "level": "INFO", "logger": "root", "message": "甲辰收藏系统 FastAPI 后端 v0.0.0 启动成功", "trace_id": "56d0f6a9-e671-4e09-a1bd-e6b78660e77a", "user_id": null, "request_id": "b4abaa99-f024-4542-b7c4-01b34734e7e9", "ip_address": null, "duration_ms": null}
{"timestamp": "2026-04-15T04:52:44.266934Z", "level": "INFO", "logger": "root", "message": "甲辰收藏系统 FastAPI 后端 v0.0.0 启动成功", "trace_id": "e5116cd9-26d7-47d7-b739-f35b5977e43a", "user_id": null, "request_id": "9f22ae8c-098e-4533-ada6-83ee6c9b9788", "ip_address": null, "duration_ms": null}
{"timestamp": "2026-04-15T04:53:55.198568Z", "level": "INFO", "logger": "root", "message": "甲辰收藏系统 FastAPI 后端 v0.0.0 启动成功", "trace_id": "6ed5bb9a-f6e7-4b05-94c5-b862ba5636f4", "user_id": null, "request_id": "9b554653-6013-45b6-a122-d6a8f22e26e8", "ip_address": null, "duration_ms": null}
{"timestamp": "2026-04-15T04:55:00.396074Z", "level": "INFO", "logger": "root", "message": "甲辰收藏系统 FastAPI 后端 v0.0.0 启动成功", "trace_id": "a0c907b0-5b4b-4108-a5a0-ef02d52a6a0d", "user_id": null, "request_id": "748da3dc-2349-4d3b-bb4d-07ce2f8b2619", "ip_address": null, "duration_ms": null}
{"timestamp": "2026-04-15T04:55:42.128833Z", "level": "ERROR", "logger": "app.core.database", "message": "数据库会话错误: 2 validation errors:\n {'type': 'int_type', 'loc': ('response', 0, 'view_count'), 'msg': 'Input should be a valid integer', 'input': None, 'url': 'https://errors.pydantic.dev/2.5/v/int_type'}\n {'type': 'int_type', 'loc': ('response', 0, 'contact_count'), 'msg': 'Input should be a valid integer', 'input': None, 'url': 'https://errors.pydantic.dev/2.5/v/int_type'}\n", "trace_id": "718e585c-9383-44c8-913c-5e2e3027c3fb", "user_id": null, "request_id": "5eb46231-5418-4929-ab6b-792319cdffb7", "ip_address": null, "duration_ms": null}
{"timestamp": "2026-04-15T04:55:42.131315Z", "level": "ERROR", "logger": "root", "message": "API 请求异常GET /api/deal/list", "trace_id": "929f3ffd-19cf-4348-baf3-ad9fa80379a6", "user_id": "authenticated", "request_id": "06f3d2cd-1662-46cb-95c6-72f960a5fe21", "ip_address": "127.0.0.1", "duration_ms": 14.678478240966797, "data": {"method": "GET", "path": "/api/deal/list", "query": "", "error": "2 validation errors:\n {'type': 'int_type', 'loc': ('response', 0, 'view_count'), 'msg': 'Input should be a valid integer', 'input': None, 'url': 'https://errors.pydantic.dev/2.5/v/int_type'}\n {'type': 'int_type', 'loc': ('response', 0, 'contact_count'), 'msg': 'Input should be a valid integer', 'input': None, 'url': 'https://errors.pydantic.dev/2.5/v/int_type'}\n"}, "exception": "Traceback (most recent call last):\n File \"/usr/local/lib/python3.12/dist-packages/starlette/middleware/base.py\", line 159, in call_next\n message = await recv_stream.receive()\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/usr/local/lib/python3.12/dist-packages/anyio/streams/memory.py\", line 132, in receive\n raise EndOfStream from None\nanyio.EndOfStream\n\nDuring handling of the above exception, another exception occurred:\n\nTraceback (most recent call last):\n File \"/root/.openclaw/workspace/jiachenlong/backend/app/middleware/logging.py\", line 28, in logging_middleware\n response = await call_next(request)\n ^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/usr/local/lib/python3.12/dist-packages/starlette/middleware/base.py\", line 165, in call_next\n raise app_exc\n File \"/usr/local/lib/python3.12/dist-packages/starlette/middleware/base.py\", line 151, in coro\n await self.app(scope, receive_or_disconnect, send_no_error)\n File \"/usr/local/lib/python3.12/dist-packages/starlette/middleware/cors.py\", line 83, in __call__\n await self.app(scope, receive, send)\n File \"/usr/local/lib/python3.12/dist-packages/starlette/middleware/exceptions.py\", line 62, in __call__\n await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)\n File \"/usr/local/lib/python3.12/dist-packages/starlette/_exception_handler.py\", line 64, in wrapped_app\n raise exc\n File \"/usr/local/lib/python3.12/dist-packages/starlette/_exception_handler.py\", line 53, in wrapped_app\n await app(scope, receive, sender)\n File \"/usr/local/lib/python3.12/dist-packages/starlette/routing.py\", line 762, in __call__\n await self.middleware_stack(scope, receive, send)\n File \"/usr/local/lib/python3.12/dist-packages/starlette/routing.py\", line 782, in app\n await route.handle(scope, receive, send)\n File \"/usr/local/lib/python3.12/dist-packages/starlette/routing.py\", line 297, in handle\n await self.app(scope, receive, send)\n File \"/usr/local/lib/python3.12/dist-packages/starlette/routing.py\", line 77, in app\n await wrap_app_handling_exceptions(app, request)(scope, receive, send)\n File \"/usr/local/lib/python3.12/dist-packages/starlette/_exception_handler.py\", line 64, in wrapped_app\n raise exc\n File \"/usr/local/lib/python3.12/dist-packages/starlette/_exception_handler.py\", line 53, in wrapped_app\n await app(scope, receive, sender)\n File \"/usr/local/lib/python3.12/dist-packages/starlette/routing.py\", line 72, in app\n response = await func(request)\n ^^^^^^^^^^^^^^^^^^^\n File \"/usr/local/lib/python3.12/dist-packages/fastapi/routing.py\", line 315, in app\n content = await serialize_response(\n ^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/usr/local/lib/python3.12/dist-packages/fastapi/routing.py\", line 155, in serialize_response\n raise ResponseValidationError(\nfastapi.exceptions.ResponseValidationError: 2 validation errors:\n {'type': 'int_type', 'loc': ('response', 0, 'view_count'), 'msg': 'Input should be a valid integer', 'input': None, 'url': 'https://errors.pydantic.dev/2.5/v/int_type'}\n {'type': 'int_type', 'loc': ('response', 0, 'contact_count'), 'msg': 'Input should be a valid integer', 'input': None, 'url': 'https://errors.pydantic.dev/2.5/v/int_type'}\n"}
{"timestamp": "2026-04-15T04:55:42.135299Z", "level": "ERROR", "logger": "root", "message": "未捕获异常2 validation errors:\n {'type': 'int_type', 'loc': ('response', 0, 'view_count'), 'msg': 'Input should be a valid integer', 'input': None, 'url': 'https://errors.pydantic.dev/2.5/v/int_type'}\n {'type': 'int_type', 'loc': ('response', 0, 'contact_count'), 'msg': 'Input should be a valid integer', 'input': None, 'url': 'https://errors.pydantic.dev/2.5/v/int_type'}\n\n + Exception Group Traceback (most recent call last):\n | File \"/usr/local/lib/python3.12/dist-packages/starlette/_utils.py\", line 85, in collapse_excgroups\n | yield\n | File \"/usr/local/lib/python3.12/dist-packages/starlette/middleware/base.py\", line 190, in __call__\n | async with anyio.create_task_group() as task_group:\n | File \"/usr/local/lib/python3.12/dist-packages/anyio/_backends/_asyncio.py\", line 783, in __aexit__\n | raise BaseExceptionGroup(\n | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception)\n +-+---------------- 1 ----------------\n | Traceback (most recent call last):\n | File \"/usr/local/lib/python3.12/dist-packages/starlette/middleware/errors.py\", line 164, in __call__\n | await self.app(scope, receive, _send)\n | File \"/usr/local/lib/python3.12/dist-packages/starlette/middleware/base.py\", line 189, in __call__\n | with collapse_excgroups():\n | File \"/usr/lib/python3.12/contextlib.py\", line 158, in __exit__\n | self.gen.throw(value)\n | File \"/usr/local/lib/python3.12/dist-packages/starlette/_utils.py\", line 91, in collapse_excgroups\n | raise exc\n | File \"/usr/local/lib/python3.12/dist-packages/starlette/middleware/base.py\", line 191, in __call__\n | response = await self.dispatch_func(request, call_next)\n | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n | File \"/root/.openclaw/workspace/jiachenlong/backend/app/middleware/logging.py\", line 28, in logging_middleware\n | response = await call_next(request)\n | ^^^^^^^^^^^^^^^^^^^^^^^^\n | File \"/usr/local/lib/python3.12/dist-packages/starlette/middleware/base.py\", line 165, in call_next\n | raise app_exc\n | File \"/usr/local/lib/python3.12/dist-packages/starlette/middleware/base.py\", line 151, in coro\n | await self.app(scope, receive_or_disconnect, send_no_error)\n | File \"/usr/local/lib/python3.12/dist-packages/starlette/middleware/cors.py\", line 83, in __call__\n | await self.app(scope, receive, send)\n | File \"/usr/local/lib/python3.12/dist-packages/starlette/middleware/exceptions.py\", line 62, in __call__\n | await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)\n | File \"/usr/local/lib/python3.12/dist-packages/starlette/_exception_handler.py\", line 64, in wrapped_app\n | raise exc\n | File \"/usr/local/lib/python3.12/dist-packages/starlette/_exception_handler.py\", line 53, in wrapped_app\n | await app(scope, receive, sender)\n | File \"/usr/local/lib/python3.12/dist-packages/starlette/routing.py\", line 762, in __call__\n | await self.middleware_stack(scope, receive, send)\n | File \"/usr/local/lib/python3.12/dist-packages/starlette/routing.py\", line 782, in app\n | await route.handle(scope, receive, send)\n | File \"/usr/local/lib/python3.12/dist-packages/starlette/routing.py\", line 297, in handle\n | await self.app(scope, receive, send)\n | File \"/usr/local/lib/python3.12/dist-packages/starlette/routing.py\", line 77, in app\n | await wrap_app_handling_exceptions(app, request)(scope, receive, send)\n | File \"/usr/local/lib/python3.12/dist-packages/starlette/_exception_handler.py\", line 64, in wrapped_app\n | raise exc\n | File \"/usr/local/lib/python3.12/dist-packages/starlette/_exception_handler.py\", line 53, in wrapped_app\n | await app(scope, receive, sender)\n | File \"/usr/local/lib/python3.12/dist-packages/starlette/routing.py\", line 72, in app\n | response = await func(request)\n | ^^^^^^^^^^^^^^^^^^^\n | File \"/usr/local/lib/python3.12/dist-packages/fastapi/routing.py\", line 315, in app\n | content = await serialize_response(\n | ^^^^^^^^^^^^^^^^^^^^^^^^^\n | File \"/usr/local/lib/python3.12/dist-packages/fastapi/routing.py\", line 155, in serialize_response\n | raise ResponseValidationError(\n | fastapi.exceptions.ResponseValidationError: 2 validation errors:\n | {'type': 'int_type', 'loc': ('response', 0, 'view_count'), 'msg': 'Input should be a valid integer', 'input': None, 'url': 'https://errors.pydantic.dev/2.5/v/int_type'}\n | {'type': 'int_type', 'loc': ('response', 0, 'contact_count'), 'msg': 'Input should be a valid integer', 'input': None, 'url': 'https://errors.pydantic.dev/2.5/v/int_type'}\n | \n +------------------------------------\n\nDuring handling of the above exception, another exception occurred:\n\nTraceback (most recent call last):\n File \"/usr/local/lib/python3.12/dist-packages/starlette/middleware/errors.py\", line 164, in __call__\n await self.app(scope, receive, _send)\n File \"/usr/local/lib/python3.12/dist-packages/starlette/middleware/base.py\", line 189, in __call__\n with collapse_excgroups():\n File \"/usr/lib/python3.12/contextlib.py\", line 158, in __exit__\n self.gen.throw(value)\n File \"/usr/local/lib/python3.12/dist-packages/starlette/_utils.py\", line 91, in collapse_excgroups\n raise exc\n File \"/usr/local/lib/python3.12/dist-packages/starlette/middleware/base.py\", line 191, in __call__\n response = await self.dispatch_func(request, call_next)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/root/.openclaw/workspace/jiachenlong/backend/app/middleware/logging.py\", line 28, in logging_middleware\n response = await call_next(request)\n ^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/usr/local/lib/python3.12/dist-packages/starlette/middleware/base.py\", line 165, in call_next\n raise app_exc\n File \"/usr/local/lib/python3.12/dist-packages/starlette/middleware/base.py\", line 151, in coro\n await self.app(scope, receive_or_disconnect, send_no_error)\n File \"/usr/local/lib/python3.12/dist-packages/starlette/middleware/cors.py\", line 83, in __call__\n await self.app(scope, receive, send)\n File \"/usr/local/lib/python3.12/dist-packages/starlette/middleware/exceptions.py\", line 62, in __call__\n await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)\n File \"/usr/local/lib/python3.12/dist-packages/starlette/_exception_handler.py\", line 64, in wrapped_app\n raise exc\n File \"/usr/local/lib/python3.12/dist-packages/starlette/_exception_handler.py\", line 53, in wrapped_app\n await app(scope, receive, sender)\n File \"/usr/local/lib/python3.12/dist-packages/starlette/routing.py\", line 762, in __call__\n await self.middleware_stack(scope, receive, send)\n File \"/usr/local/lib/python3.12/dist-packages/starlette/routing.py\", line 782, in app\n await route.handle(scope, receive, send)\n File \"/usr/local/lib/python3.12/dist-packages/starlette/routing.py\", line 297, in handle\n await self.app(scope, receive, send)\n File \"/usr/local/lib/python3.12/dist-packages/starlette/routing.py\", line 77, in app\n await wrap_app_handling_exceptions(app, request)(scope, receive, send)\n File \"/usr/local/lib/python3.12/dist-packages/starlette/_exception_handler.py\", line 64, in wrapped_app\n raise exc\n File \"/usr/local/lib/python3.12/dist-packages/starlette/_exception_handler.py\", line 53, in wrapped_app\n await app(scope, receive, sender)\n File \"/usr/local/lib/python3.12/dist-packages/starlette/routing.py\", line 72, in app\n response = await func(request)\n ^^^^^^^^^^^^^^^^^^^\n File \"/usr/local/lib/python3.12/dist-packages/fastapi/routing.py\", line 315, in app\n content = await serialize_response(\n ^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/usr/local/lib/python3.12/dist-packages/fastapi/routing.py\", line 155, in serialize_response\n raise ResponseValidationError(\nfastapi.exceptions.ResponseValidationError: 2 validation errors:\n {'type': 'int_type', 'loc': ('response', 0, 'view_count'), 'msg': 'Input should be a valid integer', 'input': None, 'url': 'https://errors.pydantic.dev/2.5/v/int_type'}\n {'type': 'int_type', 'loc': ('response', 0, 'contact_count'), 'msg': 'Input should be a valid integer', 'input': None, 'url': 'https://errors.pydantic.dev/2.5/v/int_type'}\n\n", "trace_id": "1717aeb9-909f-4141-b400-f21f2da118ee", "user_id": null, "request_id": "9380897d-def5-48d7-9d8d-7af62fd23ca8", "ip_address": null, "duration_ms": null}
{"timestamp": "2026-04-15T04:56:32.065975Z", "level": "ERROR", "logger": "app.core.database", "message": "数据库会话错误: 2 validation errors:\n {'type': 'int_type', 'loc': ('response', 0, 'view_count'), 'msg': 'Input should be a valid integer', 'input': None, 'url': 'https://errors.pydantic.dev/2.5/v/int_type'}\n {'type': 'int_type', 'loc': ('response', 0, 'contact_count'), 'msg': 'Input should be a valid integer', 'input': None, 'url': 'https://errors.pydantic.dev/2.5/v/int_type'}\n", "trace_id": "82ffeeac-0f40-4dff-b5d4-a1234d9ff83a", "user_id": null, "request_id": "af57ea21-9ea3-48c0-adb3-ba3e1db499ec", "ip_address": null, "duration_ms": null}
{"timestamp": "2026-04-15T04:56:32.067664Z", "level": "ERROR", "logger": "root", "message": "API 请求异常GET /api/deal/list", "trace_id": "5ec0a5fa-31f7-4a1a-a16c-2edc58264970", "user_id": "authenticated", "request_id": "21cbfdcd-d11b-4d31-a5de-b1d521abab09", "ip_address": "127.0.0.1", "duration_ms": 14.132261276245117, "data": {"method": "GET", "path": "/api/deal/list", "query": "", "error": "2 validation errors:\n {'type': 'int_type', 'loc': ('response', 0, 'view_count'), 'msg': 'Input should be a valid integer', 'input': None, 'url': 'https://errors.pydantic.dev/2.5/v/int_type'}\n {'type': 'int_type', 'loc': ('response', 0, 'contact_count'), 'msg': 'Input should be a valid integer', 'input': None, 'url': 'https://errors.pydantic.dev/2.5/v/int_type'}\n"}, "exception": "Traceback (most recent call last):\n File \"/usr/local/lib/python3.12/dist-packages/starlette/middleware/base.py\", line 159, in call_next\n message = await recv_stream.receive()\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/usr/local/lib/python3.12/dist-packages/anyio/streams/memory.py\", line 132, in receive\n raise EndOfStream from None\nanyio.EndOfStream\n\nDuring handling of the above exception, another exception occurred:\n\nTraceback (most recent call last):\n File \"/root/.openclaw/workspace/jiachenlong/backend/app/middleware/logging.py\", line 28, in logging_middleware\n response = await call_next(request)\n ^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/usr/local/lib/python3.12/dist-packages/starlette/middleware/base.py\", line 165, in call_next\n raise app_exc\n File \"/usr/local/lib/python3.12/dist-packages/starlette/middleware/base.py\", line 151, in coro\n await self.app(scope, receive_or_disconnect, send_no_error)\n File \"/usr/local/lib/python3.12/dist-packages/starlette/middleware/cors.py\", line 83, in __call__\n await self.app(scope, receive, send)\n File \"/usr/local/lib/python3.12/dist-packages/starlette/middleware/exceptions.py\", line 62, in __call__\n await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)\n File \"/usr/local/lib/python3.12/dist-packages/starlette/_exception_handler.py\", line 64, in wrapped_app\n raise exc\n File \"/usr/local/lib/python3.12/dist-packages/starlette/_exception_handler.py\", line 53, in wrapped_app\n await app(scope, receive, sender)\n File \"/usr/local/lib/python3.12/dist-packages/starlette/routing.py\", line 762, in __call__\n await self.middleware_stack(scope, receive, send)\n File \"/usr/local/lib/python3.12/dist-packages/starlette/routing.py\", line 782, in app\n await route.handle(scope, receive, send)\n File \"/usr/local/lib/python3.12/dist-packages/starlette/routing.py\", line 297, in handle\n await self.app(scope, receive, send)\n File \"/usr/local/lib/python3.12/dist-packages/starlette/routing.py\", line 77, in app\n await wrap_app_handling_exceptions(app, request)(scope, receive, send)\n File \"/usr/local/lib/python3.12/dist-packages/starlette/_exception_handler.py\", line 64, in wrapped_app\n raise exc\n File \"/usr/local/lib/python3.12/dist-packages/starlette/_exception_handler.py\", line 53, in wrapped_app\n await app(scope, receive, sender)\n File \"/usr/local/lib/python3.12/dist-packages/starlette/routing.py\", line 72, in app\n response = await func(request)\n ^^^^^^^^^^^^^^^^^^^\n File \"/usr/local/lib/python3.12/dist-packages/fastapi/routing.py\", line 315, in app\n content = await serialize_response(\n ^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/usr/local/lib/python3.12/dist-packages/fastapi/routing.py\", line 155, in serialize_response\n raise ResponseValidationError(\nfastapi.exceptions.ResponseValidationError: 2 validation errors:\n {'type': 'int_type', 'loc': ('response', 0, 'view_count'), 'msg': 'Input should be a valid integer', 'input': None, 'url': 'https://errors.pydantic.dev/2.5/v/int_type'}\n {'type': 'int_type', 'loc': ('response', 0, 'contact_count'), 'msg': 'Input should be a valid integer', 'input': None, 'url': 'https://errors.pydantic.dev/2.5/v/int_type'}\n"}
{"timestamp": "2026-04-15T04:56:32.071101Z", "level": "ERROR", "logger": "root", "message": "未捕获异常2 validation errors:\n {'type': 'int_type', 'loc': ('response', 0, 'view_count'), 'msg': 'Input should be a valid integer', 'input': None, 'url': 'https://errors.pydantic.dev/2.5/v/int_type'}\n {'type': 'int_type', 'loc': ('response', 0, 'contact_count'), 'msg': 'Input should be a valid integer', 'input': None, 'url': 'https://errors.pydantic.dev/2.5/v/int_type'}\n\n + Exception Group Traceback (most recent call last):\n | File \"/usr/local/lib/python3.12/dist-packages/starlette/_utils.py\", line 85, in collapse_excgroups\n | yield\n | File \"/usr/local/lib/python3.12/dist-packages/starlette/middleware/base.py\", line 190, in __call__\n | async with anyio.create_task_group() as task_group:\n | File \"/usr/local/lib/python3.12/dist-packages/anyio/_backends/_asyncio.py\", line 783, in __aexit__\n | raise BaseExceptionGroup(\n | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception)\n +-+---------------- 1 ----------------\n | Traceback (most recent call last):\n | File \"/usr/local/lib/python3.12/dist-packages/starlette/middleware/errors.py\", line 164, in __call__\n | await self.app(scope, receive, _send)\n | File \"/usr/local/lib/python3.12/dist-packages/starlette/middleware/base.py\", line 189, in __call__\n | with collapse_excgroups():\n | File \"/usr/lib/python3.12/contextlib.py\", line 158, in __exit__\n | self.gen.throw(value)\n | File \"/usr/local/lib/python3.12/dist-packages/starlette/_utils.py\", line 91, in collapse_excgroups\n | raise exc\n | File \"/usr/local/lib/python3.12/dist-packages/starlette/middleware/base.py\", line 191, in __call__\n | response = await self.dispatch_func(request, call_next)\n | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n | File \"/root/.openclaw/workspace/jiachenlong/backend/app/middleware/logging.py\", line 28, in logging_middleware\n | response = await call_next(request)\n | ^^^^^^^^^^^^^^^^^^^^^^^^\n | File \"/usr/local/lib/python3.12/dist-packages/starlette/middleware/base.py\", line 165, in call_next\n | raise app_exc\n | File \"/usr/local/lib/python3.12/dist-packages/starlette/middleware/base.py\", line 151, in coro\n | await self.app(scope, receive_or_disconnect, send_no_error)\n | File \"/usr/local/lib/python3.12/dist-packages/starlette/middleware/cors.py\", line 83, in __call__\n | await self.app(scope, receive, send)\n | File \"/usr/local/lib/python3.12/dist-packages/starlette/middleware/exceptions.py\", line 62, in __call__\n | await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)\n | File \"/usr/local/lib/python3.12/dist-packages/starlette/_exception_handler.py\", line 64, in wrapped_app\n | raise exc\n | File \"/usr/local/lib/python3.12/dist-packages/starlette/_exception_handler.py\", line 53, in wrapped_app\n | await app(scope, receive, sender)\n | File \"/usr/local/lib/python3.12/dist-packages/starlette/routing.py\", line 762, in __call__\n | await self.middleware_stack(scope, receive, send)\n | File \"/usr/local/lib/python3.12/dist-packages/starlette/routing.py\", line 782, in app\n | await route.handle(scope, receive, send)\n | File \"/usr/local/lib/python3.12/dist-packages/starlette/routing.py\", line 297, in handle\n | await self.app(scope, receive, send)\n | File \"/usr/local/lib/python3.12/dist-packages/starlette/routing.py\", line 77, in app\n | await wrap_app_handling_exceptions(app, request)(scope, receive, send)\n | File \"/usr/local/lib/python3.12/dist-packages/starlette/_exception_handler.py\", line 64, in wrapped_app\n | raise exc\n | File \"/usr/local/lib/python3.12/dist-packages/starlette/_exception_handler.py\", line 53, in wrapped_app\n | await app(scope, receive, sender)\n | File \"/usr/local/lib/python3.12/dist-packages/starlette/routing.py\", line 72, in app\n | response = await func(request)\n | ^^^^^^^^^^^^^^^^^^^\n | File \"/usr/local/lib/python3.12/dist-packages/fastapi/routing.py\", line 315, in app\n | content = await serialize_response(\n | ^^^^^^^^^^^^^^^^^^^^^^^^^\n | File \"/usr/local/lib/python3.12/dist-packages/fastapi/routing.py\", line 155, in serialize_response\n | raise ResponseValidationError(\n | fastapi.exceptions.ResponseValidationError: 2 validation errors:\n | {'type': 'int_type', 'loc': ('response', 0, 'view_count'), 'msg': 'Input should be a valid integer', 'input': None, 'url': 'https://errors.pydantic.dev/2.5/v/int_type'}\n | {'type': 'int_type', 'loc': ('response', 0, 'contact_count'), 'msg': 'Input should be a valid integer', 'input': None, 'url': 'https://errors.pydantic.dev/2.5/v/int_type'}\n | \n +------------------------------------\n\nDuring handling of the above exception, another exception occurred:\n\nTraceback (most recent call last):\n File \"/usr/local/lib/python3.12/dist-packages/starlette/middleware/errors.py\", line 164, in __call__\n await self.app(scope, receive, _send)\n File \"/usr/local/lib/python3.12/dist-packages/starlette/middleware/base.py\", line 189, in __call__\n with collapse_excgroups():\n File \"/usr/lib/python3.12/contextlib.py\", line 158, in __exit__\n self.gen.throw(value)\n File \"/usr/local/lib/python3.12/dist-packages/starlette/_utils.py\", line 91, in collapse_excgroups\n raise exc\n File \"/usr/local/lib/python3.12/dist-packages/starlette/middleware/base.py\", line 191, in __call__\n response = await self.dispatch_func(request, call_next)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/root/.openclaw/workspace/jiachenlong/backend/app/middleware/logging.py\", line 28, in logging_middleware\n response = await call_next(request)\n ^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/usr/local/lib/python3.12/dist-packages/starlette/middleware/base.py\", line 165, in call_next\n raise app_exc\n File \"/usr/local/lib/python3.12/dist-packages/starlette/middleware/base.py\", line 151, in coro\n await self.app(scope, receive_or_disconnect, send_no_error)\n File \"/usr/local/lib/python3.12/dist-packages/starlette/middleware/cors.py\", line 83, in __call__\n await self.app(scope, receive, send)\n File \"/usr/local/lib/python3.12/dist-packages/starlette/middleware/exceptions.py\", line 62, in __call__\n await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)\n File \"/usr/local/lib/python3.12/dist-packages/starlette/_exception_handler.py\", line 64, in wrapped_app\n raise exc\n File \"/usr/local/lib/python3.12/dist-packages/starlette/_exception_handler.py\", line 53, in wrapped_app\n await app(scope, receive, sender)\n File \"/usr/local/lib/python3.12/dist-packages/starlette/routing.py\", line 762, in __call__\n await self.middleware_stack(scope, receive, send)\n File \"/usr/local/lib/python3.12/dist-packages/starlette/routing.py\", line 782, in app\n await route.handle(scope, receive, send)\n File \"/usr/local/lib/python3.12/dist-packages/starlette/routing.py\", line 297, in handle\n await self.app(scope, receive, send)\n File \"/usr/local/lib/python3.12/dist-packages/starlette/routing.py\", line 77, in app\n await wrap_app_handling_exceptions(app, request)(scope, receive, send)\n File \"/usr/local/lib/python3.12/dist-packages/starlette/_exception_handler.py\", line 64, in wrapped_app\n raise exc\n File \"/usr/local/lib/python3.12/dist-packages/starlette/_exception_handler.py\", line 53, in wrapped_app\n await app(scope, receive, sender)\n File \"/usr/local/lib/python3.12/dist-packages/starlette/routing.py\", line 72, in app\n response = await func(request)\n ^^^^^^^^^^^^^^^^^^^\n File \"/usr/local/lib/python3.12/dist-packages/fastapi/routing.py\", line 315, in app\n content = await serialize_response(\n ^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/usr/local/lib/python3.12/dist-packages/fastapi/routing.py\", line 155, in serialize_response\n raise ResponseValidationError(\nfastapi.exceptions.ResponseValidationError: 2 validation errors:\n {'type': 'int_type', 'loc': ('response', 0, 'view_count'), 'msg': 'Input should be a valid integer', 'input': None, 'url': 'https://errors.pydantic.dev/2.5/v/int_type'}\n {'type': 'int_type', 'loc': ('response', 0, 'contact_count'), 'msg': 'Input should be a valid integer', 'input': None, 'url': 'https://errors.pydantic.dev/2.5/v/int_type'}\n\n", "trace_id": "a05bdaf9-6aab-417a-84ef-83d1f80ae150", "user_id": null, "request_id": "292b0d05-6ef3-4df3-ae75-45702b48f1fb", "ip_address": null, "duration_ms": null}
{"timestamp": "2026-04-15T04:57:52.248276Z", "level": "INFO", "logger": "root", "message": "甲辰收藏系统 FastAPI 后端 v0.0.0 启动成功", "trace_id": "171b9f58-06d4-46b9-8739-77aaa801e177", "user_id": null, "request_id": "ff662c1c-a1ed-4432-bfc1-2e91f1a066df", "ip_address": null, "duration_ms": null}
{"timestamp": "2026-04-15T04:59:01.357100Z", "level": "INFO", "logger": "root", "message": "甲辰收藏系统 FastAPI 后端 v0.0.0 启动成功", "trace_id": "f1f16bce-a725-4684-afe8-bfd5fccb0588", "user_id": null, "request_id": "59bbc981-3c1a-4cd6-b553-5db880c79a75", "ip_address": null, "duration_ms": null}
{"timestamp": "2026-04-15T04:59:50.412138Z", "level": "INFO", "logger": "root", "message": "甲辰收藏系统 FastAPI 后端 v0.0.0 启动成功", "trace_id": "d884e124-b403-485a-8ba8-8d961ec357aa", "user_id": null, "request_id": "ca3cbcf1-034c-42f9-8727-d919fb26a1e3", "ip_address": null, "duration_ms": null}