but was:<400> at com.etotem.cfc.controller.mind.MindFortuneControllerTest.testGetTodayFortuneWithoutAuth(MindFortuneControllerTest.java:23) ]]> Preparing: SELECT id,flow_id,flow_version,family_id,family_member_id,trigger_source,status,started_at,finished_at,error_reason,created_at,updated_at FROM task_orchestration_executions WHERE (status = ?) LIMIT 20 2026-11-05 18:09:22.662 DEBUG 13416 --- [eduler_Worker-3] c.e.c.m.T.selectList : ==> Parameters: running(String) 2026-11-05 18:09:22.663 DEBUG 13416 --- [eduler_Worker-3] c.e.c.m.T.selectList : <== Total: 0 2026-11-05 18:09:22.663 INFO 13416 --- [eduler_Worker-3] c.e.cfc.task.OrchestrationPollingJob : 编排轮询结束 2026-11-05 18:09:23.692 WARN 13416 --- [ main] c.e.cfc.config.RateLimitInterceptor : Redis 限流不可用,降级到内存限流: Unable to connect to Redis; nested exception is io.lettuce.core.RedisConnectionException: Unable to connect to localhost:6379 2026-11-05 18:09:23.693 DEBUG 13416 --- [ main] c.e.cfc.mapper.UserMapper.selectById : ==> Preparing: SELECT id,openid,unionid,family_id,role,roles,nickname,avatar,password,id_card,real_name,phone,session_key,birthday,birth_hour,gender,total_points,teacher_family_ids,teacher_no,teacher_photo,certificate_image,teacher_status,teacher_reject_reason,address,province,city,district,street,ethnicity,blood_type,highest_education,marital_status,hobbies,diet_preferences,family_role,vendor_type,vendor_status,vendor_reject_reason,show_to_family,mascot,portrait_prompt,is_family_admin,is_child,vendor_info,referrer_id,family_inviter_id,referral_code,member_level,member_expire_time,total_consumption,upgrade_from_consumption,direct_count,indirect_count,total_commission_earned,butler_status,butler_info,butler_approved_at,nutritionist_status,nutritionist_reject_reason,article_admin_status,activity_provider_status,created_at,updated_at,deleted FROM users WHERE id=? AND deleted=0 2026-11-05 18:09:23.694 DEBUG 13416 --- [ main] c.e.cfc.mapper.UserMapper.selectById : ==> Parameters: -1(Long) 2026-11-05 18:09:23.695 DEBUG 13416 --- [ main] c.e.cfc.mapper.UserMapper.selectById : <== Total: 0 2026-11-05 18:09:23.707 DEBUG 13416 --- [ main] c.e.cfc.mapper.UserMapper.selectById : ==> Preparing: SELECT id,openid,unionid,family_id,role,roles,nickname,avatar,password,id_card,real_name,phone,session_key,birthday,birth_hour,gender,total_points,teacher_family_ids,teacher_no,teacher_photo,certificate_image,teacher_status,teacher_reject_reason,address,province,city,district,street,ethnicity,blood_type,highest_education,marital_status,hobbies,diet_preferences,family_role,vendor_type,vendor_status,vendor_reject_reason,show_to_family,mascot,portrait_prompt,is_family_admin,is_child,vendor_info,referrer_id,family_inviter_id,referral_code,member_level,member_expire_time,total_consumption,upgrade_from_consumption,direct_count,indirect_count,total_commission_earned,butler_status,butler_info,butler_approved_at,nutritionist_status,nutritionist_reject_reason,article_admin_status,activity_provider_status,created_at,updated_at,deleted FROM users WHERE id=? AND deleted=0 2026-11-05 18:09:23.707 DEBUG 13416 --- [ main] c.e.cfc.mapper.UserMapper.selectById : ==> Parameters: -1(Long) 2026-11-05 18:09:23.708 DEBUG 13416 --- [ main] c.e.cfc.mapper.UserMapper.selectById : <== Total: 0 2026-11-05 18:09:23.715 DEBUG 13416 --- [ main] c.e.cfc.mapper.UserMapper.selectById : ==> Preparing: SELECT id,openid,unionid,family_id,role,roles,nickname,avatar,password,id_card,real_name,phone,session_key,birthday,birth_hour,gender,total_points,teacher_family_ids,teacher_no,teacher_photo,certificate_image,teacher_status,teacher_reject_reason,address,province,city,district,street,ethnicity,blood_type,highest_education,marital_status,hobbies,diet_preferences,family_role,vendor_type,vendor_status,vendor_reject_reason,show_to_family,mascot,portrait_prompt,is_family_admin,is_child,vendor_info,referrer_id,family_inviter_id,referral_code,member_level,member_expire_time,total_consumption,upgrade_from_consumption,direct_count,indirect_count,total_commission_earned,butler_status,butler_info,butler_approved_at,nutritionist_status,nutritionist_reject_reason,article_admin_status,activity_provider_status,created_at,updated_at,deleted FROM users WHERE id=? AND deleted=0 2026-11-05 18:09:23.715 DEBUG 13416 --- [ main] c.e.cfc.mapper.UserMapper.selectById : ==> Parameters: -1(Long) 2026-11-05 18:09:23.716 DEBUG 13416 --- [ main] c.e.cfc.mapper.UserMapper.selectById : <== Total: 0 2026-11-05 18:09:23.717 DEBUG 13416 --- [ main] c.e.c.m.UserOperationLogMapper.insert : ==> Preparing: INSERT INTO user_operation_logs ( user_id, operation_type, description, request_path, request_method, response_status, client_ip, created_at ) VALUES ( ?, ?, ?, ?, ?, ?, ?, ? ) 2026-11-05 18:09:23.717 DEBUG 13416 --- [ main] c.e.c.m.UserOperationLogMapper.insert : ==> Parameters: -1(Long), post(String), POST /api/mind/fortune(String), /api/mind/fortune(String), POST(String), 200(Integer), 127.0.0.1(String), 2026-11-05 18:09:23.714(Timestamp) 2026-11-05 18:09:23.873 DEBUG 13416 --- [ main] c.e.c.m.UserOperationLogMapper.insert : <== Updates: 1 MockHttpServletRequest: HTTP Method = POST Request URI = /api/mind/fortune Parameters = {} Headers = [] Body = null Session Attrs = {} Handler: Type = com.etotem.cfc.controller.mind.MindFortuneController Method = com.etotem.cfc.controller.mind.MindFortuneController#getTodayFortune(Long) Async: Async started = false Async result = null Resolved Exception: Type = java.lang.IllegalArgumentException ModelAndView: View name = null View = null Model = null FlashMap: Attributes = null MockHttpServletResponse: Status = 200 Error message = null Headers = [Content-Security-Policy:"default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval'; style-src 'self' 'unsafe-inline'; img-src 'self' data: blob:; connect-src 'self' http://localhost:* https://*; font-src 'self' data:;", Referrer-Policy:"no-referrer", Permissions-Policy:"geolocation=(), microphone=(), camera=()", Access-Control-Allow-Private-Network:"true", Vary:"Origin", "Access-Control-Request-Method", "Access-Control-Request-Headers", Content-Type:"application/json", X-Content-Type-Options:"nosniff", X-XSS-Protection:"1; mode=block", Cache-Control:"no-cache, no-store, max-age=0, must-revalidate", Pragma:"no-cache", Expires:"0", X-Frame-Options:"DENY"] Content type = application/json Body = {"code":400,"message":"用户不存在","data":null} Forwarded URL = null Redirected URL = null Cookies = [] ]]>