{"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}