21:38:58 - article_server - INFO - 日志系统已启动 - 记录器: article_server 21:38:58 - article_server - INFO - 主日志文件: logs/article_server.log 21:38:58 - article_server - INFO - 错误日志文件: logs/article_error.log 21:38:58 - article_server - INFO - 日志保留策略: 每天午夜分割,主日志保留3天 21:38:58 - article_server - INFO - 错误日志保留策略: 每天午夜分割,保留9天 21:38:58 - article_server - INFO - 万花筒API服务模块已加载 21:46:15 - article_server - INFO - [API访问] POST /api/auth/login - IP: 36.27.52.26 - User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Sa 21:46:15 - article_server - INFO - [用户登录] 开始处理登录请求, IP: 36.27.52.26 21:46:15 - article_server - INFO - [用户登录] 收到登录请求, 账号: 13621242430, IP: 36.27.52.26 21:46:15 - article_server - INFO - [用户登录] 开始在ai_users表查询用户, 账号: 13621242430 21:46:16 - article_server - INFO - 数据库连接成功,字符集设置完成 21:46:16 - article_server - INFO - [SQL执行] 开始执行查询SQL 21:46:16 - article_server - INFO - [SQL语句] SELECT id, enterprise_id, enterprise_name, username, phone, password, real_name, role, status, is_bound_xhs, xhs_account FROM ai_users WHERE (phone = %s OR username = %s) AND status = 'active' 21:46:16 - article_server - INFO - [SQL参数] ('13621242430', '13621242430') 21:46:16 - article_server - INFO - [SQL结果] 查询完成,返回 2 条记录 21:46:16 - article_server - INFO - [SQL数据] 查询结果: [{'id': 4, 'enterprise_id': 1, 'enterprise_name': 'rwl企业4号', 'username': 'user004', 'phone': '13621242430', 'password': '256dfd66db93b7ce0d1e260b01971dffaafa1dadca903ed16defc4fba24be83b', 'real_name': '饶文龙', 'role': 'enterprise', 'status': 'active', 'is_bound_xhs': 1, 'xhs_account': '小红书用户4'}, {'id': 10, 'enterprise_id': 10, 'enterprise_name': '测试企业10号', 'username': 'user010', 'phone': '13621242430', 'password': '256dfd66db93b7ce0d1e260b01971dffaafa1dadca903ed16defc4fba24be83b', 'real_name': '测试用户10', 'role': 'admin', 'status': 'active', 'is_bound_xhs': 1, 'xhs_account': '小红书用户'}] 21:46:16 - article_server - INFO - [用户登录] 查询到用户信息, 用户名: user004, 角色: enterprise, 企业: rwl企业4号, 企业ID: 1 21:46:16 - article_server - INFO - [用户登录] 开始验证密码, 账号: 13621242430 21:46:16 - article_server - WARNING - [用户登录失败] 密码错误: 13621242430, 用户名: user004, IP: 36.27.52.26 21:46:16 - article_server - INFO - [API响应] POST /api/auth/login - IP: 36.27.52.26 - 状态码: 401 21:46:16 - article_server - INFO - [API访问] POST /api/auth/employee/login - IP: 36.27.52.26 - User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Sa 21:46:16 - article_server - INFO - [员工登录] 开始处理员工登录请求, IP: 36.27.52.26 21:46:16 - article_server - INFO - [员工登录] 收到登录请求, 手机号: 13621242430, IP: 36.27.52.26 21:46:16 - article_server - INFO - [员工登录] 开始查询员工信息, 手机号: 13621242430 21:46:16 - article_server - INFO - 数据库连接成功,字符集设置完成 21:46:16 - article_server - INFO - [SQL执行] 开始执行查询SQL 21:46:16 - article_server - INFO - [SQL语句] SELECT u.id, u.enterprise_id, u.real_name, u.phone, u.password, u.role, u.status, u.is_bound_xhs, u.xhs_account, e.name as enterprise_name FROM ai_users u LEFT JOIN ai_enterprises e ON u.enterprise_id = e.id WHERE u.phone = %s 21:46:16 - article_server - INFO - [SQL参数] ('13621242430',) 21:46:16 - article_server - INFO - [SQL结果] 查询完成,返回 2 条记录 21:46:16 - article_server - INFO - [SQL数据] 查询结果: [{'id': 4, 'enterprise_id': 1, 'real_name': '饶文龙', 'phone': '13621242430', 'password': '256dfd66db93b7ce0d1e260b01971dffaafa1dadca903ed16defc4fba24be83b', 'role': 'enterprise', 'status': 'active', 'is_bound_xhs': 1, 'xhs_account': '小红书用户4', 'enterprise_name': '乐航'}, {'id': 10, 'enterprise_id': 10, 'real_name': '测试用户10', 'phone': '13621242430', 'password': '256dfd66db93b7ce0d1e260b01971dffaafa1dadca903ed16defc4fba24be83b', 'role': 'admin', 'status': 'active', 'is_bound_xhs': 1, 'xhs_account': '小红书用户', 'enterprise_name': '测试企业10号'}] 21:46:16 - article_server - INFO - [员工登录] 查询到员工信息, 姓名: 饶文龙, 角色: enterprise, 企业: 乐航, 状态: active, 绑定小红书: 1 21:46:16 - article_server - INFO - [员工登录] 开始验证密码, 手机号: 13621242430, 姓名: 饶文龙 21:46:16 - article_server - WARNING - [员工登录失败] 密码错误: 13621242430, 姓名: 饶文龙, IP: 36.27.52.26 21:46:16 - article_server - INFO - [API响应] POST /api/auth/employee/login - IP: 36.27.52.26 - 状态码: 401 21:46:18 - article_server - INFO - [API访问] POST /api/auth/login - IP: 36.27.52.26 - User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Sa 21:46:18 - article_server - INFO - [用户登录] 开始处理登录请求, IP: 36.27.52.26 21:46:18 - article_server - INFO - [用户登录] 收到登录请求, 账号: 15707023967, IP: 36.27.52.26 21:46:18 - article_server - INFO - [用户登录] 开始在ai_users表查询用户, 账号: 15707023967 21:46:19 - article_server - INFO - 数据库连接成功,字符集设置完成 21:46:19 - article_server - INFO - [SQL执行] 开始执行查询SQL 21:46:19 - article_server - INFO - [SQL语句] SELECT id, enterprise_id, enterprise_name, username, phone, password, real_name, role, status, is_bound_xhs, xhs_account FROM ai_users WHERE (phone = %s OR username = %s) AND status = 'active' 21:46:19 - article_server - INFO - [SQL参数] ('15707023967', '15707023967') 21:46:19 - article_server - INFO - [SQL结果] 查询完成,返回 1 条记录 21:46:19 - article_server - INFO - [SQL数据] 查询结果: [{'id': 18, 'enterprise_id': 1, 'enterprise_name': '测试企业1号', 'username': '15707023967', 'phone': '15707023967', 'password': '240be518fabd2724ddb6f04eeb1da5967448d7e831c08c8fa822809f74c720a9', 'real_name': '测试员工API', 'role': 'admin', 'status': 'active', 'is_bound_xhs': 1, 'xhs_account': '小红书用户'}] 21:46:19 - article_server - INFO - [用户登录] 查询到用户信息, 用户名: 15707023967, 角色: admin, 企业: 测试企业1号, 企业ID: 1 21:46:19 - article_server - INFO - [用户登录] 开始验证密码, 账号: 15707023967 21:46:19 - article_server - INFO - [用户登录] 密码验证成功, 用户名: 15707023967, 角色: admin 21:46:19 - article_server - INFO - [用户登录] 开始生成token, 用户ID: 18, 角色: admin 21:46:19 - article_server - INFO - [Token生成] 用户: 15707023967, ID: 18, 角色: admin 21:46:19 - article_server - INFO - [用户登录成功] Token生成成功, 用户: 15707023967, 角色: admin, 企业: 测试企业1号, IP: 36.27.52.26 21:46:19 - article_server - INFO - [API响应] POST /api/auth/login - IP: 36.27.52.26 - 状态码: 200 21:46:19 - article_server - INFO - [API访问] GET /api/users/info - IP: 36.27.52.26 - User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Sa 21:46:19 - article_server - INFO - [Token验证成功] 用户ID: 18 21:46:19 - article_server - INFO - [获取用户信息] 开始处理请求, IP: 36.27.52.26 21:46:19 - article_server - INFO - [获取用户信息] 用户ID: 18, IP: 36.27.52.26 21:46:19 - article_server - INFO - [SQL执行] 开始执行查询SQL 21:46:19 - article_server - INFO - [SQL语句] SELECT id, enterprise_id, enterprise_name, username, real_name, email, phone, wechat_openid, wechat_unionid, xhs_cookie, xhs_phone, xhs_account, is_bound_xhs, bound_at, department, role, status, created_at, updated_at FROM ai_users WHERE id = %s AND status != 'deleted' 21:46:19 - article_server - INFO - [SQL参数] (18,) 21:46:19 - article_server - INFO - [SQL结果] 查询完成,返回 1 条记录 21:46:19 - article_server - INFO - [SQL数据] 查询结果: [{'id': 18, 'enterprise_id': 1, 'enterprise_name': '测试企业1号', 'username': '15707023967', 'real_name': '测试员工API', 'email': None, 'phone': '15707023967', 'wechat_openid': None, 'wechat_unionid': None, 'xhs_cookie': '[{"domain":"creator.xiaohongshu.com","expires":1765886300.80173,"httpOnly":true,"name":"acw_tc","path":"/","sameSite":"Lax","secure":false,"value":"0a0d09d017658845007813469ec5670285b8340a360cc4c2201c75df086add"},{"domain":".xiaohongshu.com","expires":1797420519,"httpOnly":false,"name":"xsecappid","path":"/","sameSite":"Lax","secure":false,"value":"ugc"},{"domain":".xiaohongshu.com","expires":1797420501,"httpOnly":false,"name":"a1","path":"/","sameSite":"Lax","secure":false,"value":"19b26eb1f5676nwqq68tzsm1efzwnqb8rd8crbo9150000919444"},{"domain":".xiaohongshu.com","expires":1797420501,"httpOnly":false,"name":"webId","path":"/","sameSite":"Lax","secure":false,"value":"334b292408be369dee3e00cd00c02814"},{"domain":"edith.xiaohongshu.com","expires":1765886302.122995,"httpOnly":true,"name":"acw_tc","path":"/","sameSite":"Lax","secure":false,"value":"0a5085af17658845020951798e0db2aa6b1f683c091ed8d263bdc1b3b0c979"},{"domain":"customer.xiaohongshu.com","expires":1765886302.418581,"httpOnly":true,"name":"acw_tc","path":"/","sameSite":"Lax","secure":false,"value":"0a0d0fba17658845023665490e85c24a0b09d80521793f3b775c036091618b"},{"domain":".xiaohongshu.com","expires":1766143702,"httpOnly":false,"name":"websectiga","path":"/","sameSite":"Lax","secure":false,"value":"10f9a40ba454a07755a08f27ef8194c53637eba4551cf9751c009g9afb564467"},{"domain":".xiaohongshu.com","expires":1765885107,"httpOnly":false,"name":"sec_poison_id","path":"/","sameSite":"Lax","secure":false,"value":"6da615cb-087a-4c5a-9bbb-a9d1e0fc9e8a"},{"domain":".xiaohongshu.com","expires":1800444522.755296,"httpOnly":false,"name":"gid","path":"/","sameSite":"Lax","secure":false,"value":"yjDJKdDJdJFSyjDJKdDyifDl2KWKIEAAKY9uYjyM6ydiuS28EIADYF888jyj4448ifjjW8W4"},{"domain":".xiaohongshu.com","expires":1766489317.637236,"httpOnly":true,"name":"customer-sso-sid","path":"/","sameSite":"Lax","secure":false,"value":"68c517584416253487808513dmgvocd9wjabgnkp"},{"domain":".xiaohongshu.com","expires":1800444518.637453,"httpOnly":true,"name":"x-user-id-creator.xiaohongshu.com","path":"/","sameSite":"Lax","secure":false,"value":"68bc3f6e0000000006025a91"},{"domain":".xiaohongshu.com","expires":1800444518.637597,"httpOnly":true,"name":"customerClientId","path":"/","sameSite":"Lax","secure":false,"value":"089912385389949"},{"domain":".xiaohongshu.com","expires":1768476517.637676,"httpOnly":true,"name":"access-token-creator.xiaohongshu.com","path":"/","sameSite":"Lax","secure":false,"value":"customer.creator.AT-68c517584416253487808514asy0vghqougmrdd3"},{"domain":".xiaohongshu.com","expires":1768476518.637759,"httpOnly":true,"name":"galaxy_creator_session_id","path":"/","sameSite":"Lax","secure":false,"value":"8tDSYD75SNh8bbJhJodtab8gPBMlEAbI1jD6"},{"domain":".xiaohongshu.com","expires":1768476518.637825,"httpOnly":true,"name":"galaxy.creator.beaker.session.id","path":"/","sameSite":"Lax","secure":false,"value":"1765884518568024980624"},{"domain":".xiaohongshu.com","expires":1797420519,"httpOnly":false,"name":"loadts","path":"/","sameSite":"Lax","secure":false,"value":"1765884519319"}]', 'xhs_phone': '17710390289', 'xhs_account': '小红书用户', 'is_bound_xhs': 1, 'bound_at': datetime.datetime(2025, 12, 16, 19, 28, 51), 'department': '测试部', 'role': 'admin', 'status': 'active', 'created_at': datetime.datetime(2025, 12, 12, 19, 7, 24), 'updated_at': datetime.datetime(2025, 12, 16, 19, 28, 51)}] 21:46:19 - article_server - INFO - [API访问] GET /api/dashboard/overview - IP: 36.27.52.26 - User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Sa 21:46:19 - article_server - INFO - [Token验证成功] 用户ID: 18 21:46:19 - article_server - INFO - [获取用户信息] 查询成功, 用户: 15707023967, 角色: admin, 企业: 测试企业1号, IP: 36.27.52.26 21:46:19 - article_server - INFO - [SQL执行] 开始执行查询SQL 21:46:19 - article_server - INFO - [SQL语句] SELECT users_total, products_total, articles_total, published_total FROM ai_enterprises WHERE id = %s 21:46:19 - article_server - INFO - [SQL参数] (1,) 21:46:19 - article_server - INFO - [API访问] GET /api/dashboard/recent-publishes - IP: 36.27.52.26 - User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Sa 21:46:19 - article_server - INFO - [Token验证成功] 用户ID: 18 21:46:19 - article_server - INFO - [SQL执行] 开始执行插入SQL 21:46:19 - article_server - INFO - [SQL语句] INSERT INTO ai_logs (user_id, action, target_type, target_id, description, ip_address, user_agent, request_data, response_data, status, error_message, created_at) VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, NOW()) 21:46:19 - article_server - INFO - [SQL参数] (18, 'get_user_info', 'user', 18, '查询用户信息: 15707023967', '36.27.52.26', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Safari/537.36', None, None, 'success', None) 21:46:19 - article_server - INFO - [API访问] GET /api/dashboard/hot-products - IP: 36.27.52.26 - User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Sa 21:46:19 - article_server - INFO - [Token验证成功] 用户ID: 18 21:46:19 - article_server - INFO - [SQL结果] 查询完成,返回 1 条记录 21:46:19 - article_server - INFO - [SQL数据] 查询结果: [{'users_total': 2, 'products_total': 1, 'articles_total': 12, 'published_total': 0}] 21:46:19 - article_server - INFO - [SQL结果] 插入完成,新记录ID: 1 21:46:19 - article_server - INFO - [业务日志] 操作: get_user_info | 用户ID: 18 | 目标: user#18 | 状态: success | IP: 36.27.52.26 | 日志ID: 1 21:46:19 - article_server - INFO - [API响应] GET /api/users/info - IP: 36.27.52.26 - 状态码: 200 21:46:19 - article_server - INFO - [SQL执行] 开始执行查询SQL 21:46:19 - article_server - INFO - [SQL语句] SELECT COUNT(*) as month_published FROM ai_article_published_records WHERE enterprise_id = %s AND YEAR(publish_time) = YEAR(CURDATE()) AND MONTH(publish_time) = MONTH(CURDATE()) 21:46:19 - article_server - INFO - [SQL参数] (1,) 21:46:19 - article_server - INFO - [SQL结果] 查询完成,返回 1 条记录 21:46:19 - article_server - INFO - [SQL数据] 查询结果: [{'month_published': 3}] 21:46:19 - article_server - INFO - 数据库连接成功,字符集设置完成 21:46:19 - article_server - INFO - [SQL执行] 开始执行查询SQL 21:46:19 - article_server - INFO - [SQL语句] SELECT r.id, r.publish_time, u.real_name as employee_name, p.name as product_name, 'success' as status FROM ai_article_published_records r LEFT JOIN ai_users u ON r.created_user_id = u.id LEFT JOIN ai_products p ON r.product_id = p.id WHERE r.enterprise_id = %s ORDER BY r.publish_time DESC LIMIT %s 21:46:19 - article_server - INFO - [SQL参数] (1, 5) 21:46:19 - article_server - INFO - [SQL结果] 查询完成,返回 3 条记录 21:46:19 - article_server - INFO - [SQL数据] 查询结果: [{'id': 7, 'publish_time': datetime.datetime(2025, 12, 16, 19, 32, 25), 'employee_name': '测试员工API', 'product_name': '洗面奶', 'status': 'success'}, {'id': 6, 'publish_time': datetime.datetime(2025, 12, 16, 11, 55, 56), 'employee_name': '测试员工API', 'product_name': '口红套装', 'status': 'success'}, {'id': 5, 'publish_time': datetime.datetime(2025, 12, 16, 10, 17, 8), 'employee_name': '测试员工API', 'product_name': '保湿精华', 'status': 'success'}] 21:46:19 - article_server - INFO - [SQL执行] 开始执行查询SQL 21:46:19 - article_server - INFO - [SQL语句] SELECT COUNT(*) as last_month_published FROM ai_article_published_records WHERE enterprise_id = %s AND YEAR(publish_time) = YEAR(DATE_SUB(CURDATE(), INTERVAL 1 MONTH)) AND MONTH(publish_time) = MONTH(DATE_SUB(CURDATE(), INTERVAL 1 MONTH)) 21:46:19 - article_server - INFO - [SQL参数] (1,) 21:46:19 - article_server - INFO - 数据库连接成功,字符集设置完成 21:46:19 - article_server - INFO - [SQL执行] 开始执行查询SQL 21:46:19 - article_server - INFO - [SQL语句] SELECT r.product_id, p.name as product_name, COUNT(*) as publishes, ROUND(COUNT(*) * 100.0 / (SELECT COUNT(*) FROM ai_article_published_records WHERE enterprise_id = %s), 0) as percentage FROM ai_article_published_records r LEFT JOIN ai_products p ON r.product_id = p.id WHERE r.enterprise_id = %s GROUP BY r.product_id, p.name ORDER BY publishes DESC LIMIT %s 21:46:19 - article_server - INFO - [SQL参数] (1, 1, 4) 21:46:19 - article_server - INFO - 获取最近发布成功 21:46:19 - article_server - INFO - [API响应] GET /api/dashboard/recent-publishes - IP: 36.27.52.26 - 状态码: 200 21:46:19 - article_server - INFO - [SQL结果] 查询完成,返回 1 条记录 21:46:19 - article_server - INFO - [SQL数据] 查询结果: [{'last_month_published': 0}] 21:46:19 - article_server - INFO - [SQL结果] 查询完成,返回 3 条记录 21:46:19 - article_server - INFO - [SQL数据] 查询结果: [{'product_id': 2, 'product_name': '保湿精华', 'publishes': 1, 'percentage': Decimal('33')}, {'product_id': 4, 'product_name': '口红套装', 'publishes': 1, 'percentage': Decimal('33')}, {'product_id': 5, 'product_name': '洗面奶', 'publishes': 1, 'percentage': Decimal('33')}] 21:46:19 - article_server - INFO - 获取工作台概览成功 21:46:19 - article_server - INFO - [API响应] GET /api/dashboard/overview - IP: 36.27.52.26 - 状态码: 200 21:46:19 - article_server - INFO - 获取热门产品成功 21:46:19 - article_server - INFO - [API响应] GET /api/dashboard/hot-products - IP: 36.27.52.26 - 状态码: 200 21:46:21 - article_server - INFO - [API访问] GET /api/users/info - IP: 36.27.52.26 - User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Sa 21:46:21 - article_server - INFO - [Token验证成功] 用户ID: 18 21:46:21 - article_server - INFO - [获取用户信息] 开始处理请求, IP: 36.27.52.26 21:46:21 - article_server - INFO - [获取用户信息] 用户ID: 18, IP: 36.27.52.26 21:46:21 - article_server - INFO - [API访问] GET /api/dashboard/recent-publishes - IP: 36.27.52.26 - User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Sa 21:46:21 - article_server - INFO - [Token验证成功] 用户ID: 18 21:46:21 - article_server - INFO - [API访问] GET /api/dashboard/hot-products - IP: 36.27.52.26 - User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Sa 21:46:21 - article_server - INFO - [Token验证成功] 用户ID: 18 21:46:21 - article_server - INFO - [API访问] GET /api/dashboard/overview - IP: 36.27.52.26 - User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Sa 21:46:21 - article_server - INFO - [Token验证成功] 用户ID: 18 21:46:21 - article_server - INFO - [SQL执行] 开始执行查询SQL 21:46:21 - article_server - INFO - [SQL语句] SELECT id, enterprise_id, enterprise_name, username, real_name, email, phone, wechat_openid, wechat_unionid, xhs_cookie, xhs_phone, xhs_account, is_bound_xhs, bound_at, department, role, status, created_at, updated_at FROM ai_users WHERE id = %s AND status != 'deleted' 21:46:21 - article_server - INFO - [SQL参数] (18,) 21:46:21 - article_server - INFO - [SQL执行] 开始执行查询SQL 21:46:21 - article_server - INFO - [SQL语句] SELECT r.product_id, p.name as product_name, COUNT(*) as publishes, ROUND(COUNT(*) * 100.0 / (SELECT COUNT(*) FROM ai_article_published_records WHERE enterprise_id = %s), 0) as percentage FROM ai_article_published_records r LEFT JOIN ai_products p ON r.product_id = p.id WHERE r.enterprise_id = %s GROUP BY r.product_id, p.name ORDER BY publishes DESC LIMIT %s 21:46:21 - article_server - INFO - [SQL参数] (1, 1, 4) 21:46:21 - article_server - INFO - [SQL执行] 开始执行查询SQL 21:46:21 - article_server - INFO - [SQL语句] SELECT r.id, r.publish_time, u.real_name as employee_name, p.name as product_name, 'success' as status FROM ai_article_published_records r LEFT JOIN ai_users u ON r.created_user_id = u.id LEFT JOIN ai_products p ON r.product_id = p.id WHERE r.enterprise_id = %s ORDER BY r.publish_time DESC LIMIT %s 21:46:21 - article_server - INFO - [SQL参数] (1, 5) 21:46:21 - article_server - INFO - [SQL执行] 开始执行查询SQL 21:46:21 - article_server - INFO - [SQL语句] SELECT users_total, products_total, articles_total, published_total FROM ai_enterprises WHERE id = %s 21:46:21 - article_server - INFO - [SQL参数] (1,) 21:46:21 - article_server - INFO - [SQL结果] 查询完成,返回 3 条记录 21:46:21 - article_server - INFO - [SQL数据] 查询结果: [{'product_id': 2, 'product_name': '保湿精华', 'publishes': 1, 'percentage': Decimal('33')}, {'product_id': 4, 'product_name': '口红套装', 'publishes': 1, 'percentage': Decimal('33')}, {'product_id': 5, 'product_name': '洗面奶', 'publishes': 1, 'percentage': Decimal('33')}] 21:46:21 - article_server - INFO - [SQL结果] 查询完成,返回 1 条记录 21:46:21 - article_server - INFO - [SQL数据] 查询结果: [{'id': 18, 'enterprise_id': 1, 'enterprise_name': '测试企业1号', 'username': '15707023967', 'real_name': '测试员工API', 'email': None, 'phone': '15707023967', 'wechat_openid': None, 'wechat_unionid': None, 'xhs_cookie': '[{"domain":"creator.xiaohongshu.com","expires":1765886300.80173,"httpOnly":true,"name":"acw_tc","path":"/","sameSite":"Lax","secure":false,"value":"0a0d09d017658845007813469ec5670285b8340a360cc4c2201c75df086add"},{"domain":".xiaohongshu.com","expires":1797420519,"httpOnly":false,"name":"xsecappid","path":"/","sameSite":"Lax","secure":false,"value":"ugc"},{"domain":".xiaohongshu.com","expires":1797420501,"httpOnly":false,"name":"a1","path":"/","sameSite":"Lax","secure":false,"value":"19b26eb1f5676nwqq68tzsm1efzwnqb8rd8crbo9150000919444"},{"domain":".xiaohongshu.com","expires":1797420501,"httpOnly":false,"name":"webId","path":"/","sameSite":"Lax","secure":false,"value":"334b292408be369dee3e00cd00c02814"},{"domain":"edith.xiaohongshu.com","expires":1765886302.122995,"httpOnly":true,"name":"acw_tc","path":"/","sameSite":"Lax","secure":false,"value":"0a5085af17658845020951798e0db2aa6b1f683c091ed8d263bdc1b3b0c979"},{"domain":"customer.xiaohongshu.com","expires":1765886302.418581,"httpOnly":true,"name":"acw_tc","path":"/","sameSite":"Lax","secure":false,"value":"0a0d0fba17658845023665490e85c24a0b09d80521793f3b775c036091618b"},{"domain":".xiaohongshu.com","expires":1766143702,"httpOnly":false,"name":"websectiga","path":"/","sameSite":"Lax","secure":false,"value":"10f9a40ba454a07755a08f27ef8194c53637eba4551cf9751c009g9afb564467"},{"domain":".xiaohongshu.com","expires":1765885107,"httpOnly":false,"name":"sec_poison_id","path":"/","sameSite":"Lax","secure":false,"value":"6da615cb-087a-4c5a-9bbb-a9d1e0fc9e8a"},{"domain":".xiaohongshu.com","expires":1800444522.755296,"httpOnly":false,"name":"gid","path":"/","sameSite":"Lax","secure":false,"value":"yjDJKdDJdJFSyjDJKdDyifDl2KWKIEAAKY9uYjyM6ydiuS28EIADYF888jyj4448ifjjW8W4"},{"domain":".xiaohongshu.com","expires":1766489317.637236,"httpOnly":true,"name":"customer-sso-sid","path":"/","sameSite":"Lax","secure":false,"value":"68c517584416253487808513dmgvocd9wjabgnkp"},{"domain":".xiaohongshu.com","expires":1800444518.637453,"httpOnly":true,"name":"x-user-id-creator.xiaohongshu.com","path":"/","sameSite":"Lax","secure":false,"value":"68bc3f6e0000000006025a91"},{"domain":".xiaohongshu.com","expires":1800444518.637597,"httpOnly":true,"name":"customerClientId","path":"/","sameSite":"Lax","secure":false,"value":"089912385389949"},{"domain":".xiaohongshu.com","expires":1768476517.637676,"httpOnly":true,"name":"access-token-creator.xiaohongshu.com","path":"/","sameSite":"Lax","secure":false,"value":"customer.creator.AT-68c517584416253487808514asy0vghqougmrdd3"},{"domain":".xiaohongshu.com","expires":1768476518.637759,"httpOnly":true,"name":"galaxy_creator_session_id","path":"/","sameSite":"Lax","secure":false,"value":"8tDSYD75SNh8bbJhJodtab8gPBMlEAbI1jD6"},{"domain":".xiaohongshu.com","expires":1768476518.637825,"httpOnly":true,"name":"galaxy.creator.beaker.session.id","path":"/","sameSite":"Lax","secure":false,"value":"1765884518568024980624"},{"domain":".xiaohongshu.com","expires":1797420519,"httpOnly":false,"name":"loadts","path":"/","sameSite":"Lax","secure":false,"value":"1765884519319"}]', 'xhs_phone': '17710390289', 'xhs_account': '小红书用户', 'is_bound_xhs': 1, 'bound_at': datetime.datetime(2025, 12, 16, 19, 28, 51), 'department': '测试部', 'role': 'admin', 'status': 'active', 'created_at': datetime.datetime(2025, 12, 12, 19, 7, 24), 'updated_at': datetime.datetime(2025, 12, 16, 19, 28, 51)}] 21:46:21 - article_server - INFO - [SQL结果] 查询完成,返回 1 条记录 21:46:21 - article_server - INFO - [SQL数据] 查询结果: [{'users_total': 2, 'products_total': 1, 'articles_total': 12, 'published_total': 0}] 21:46:21 - article_server - INFO - [SQL结果] 查询完成,返回 3 条记录 21:46:21 - article_server - INFO - [SQL数据] 查询结果: [{'id': 7, 'publish_time': datetime.datetime(2025, 12, 16, 19, 32, 25), 'employee_name': '测试员工API', 'product_name': '洗面奶', 'status': 'success'}, {'id': 6, 'publish_time': datetime.datetime(2025, 12, 16, 11, 55, 56), 'employee_name': '测试员工API', 'product_name': '口红套装', 'status': 'success'}, {'id': 5, 'publish_time': datetime.datetime(2025, 12, 16, 10, 17, 8), 'employee_name': '测试员工API', 'product_name': '保湿精华', 'status': 'success'}] 21:46:21 - article_server - INFO - 获取热门产品成功 21:46:21 - article_server - INFO - [API响应] GET /api/dashboard/hot-products - IP: 36.27.52.26 - 状态码: 200 21:46:21 - article_server - INFO - [获取用户信息] 查询成功, 用户: 15707023967, 角色: admin, 企业: 测试企业1号, IP: 36.27.52.26 21:46:21 - article_server - INFO - 获取最近发布成功 21:46:21 - article_server - INFO - [API响应] GET /api/dashboard/recent-publishes - IP: 36.27.52.26 - 状态码: 200 21:46:21 - article_server - INFO - [SQL执行] 开始执行插入SQL 21:46:21 - article_server - INFO - [SQL语句] INSERT INTO ai_logs (user_id, action, target_type, target_id, description, ip_address, user_agent, request_data, response_data, status, error_message, created_at) VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, NOW()) 21:46:21 - article_server - INFO - [SQL参数] (18, 'get_user_info', 'user', 18, '查询用户信息: 15707023967', '36.27.52.26', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Safari/537.36', None, None, 'success', None) 21:46:21 - article_server - INFO - [SQL执行] 开始执行查询SQL 21:46:21 - article_server - INFO - [SQL语句] SELECT COUNT(*) as month_published FROM ai_article_published_records WHERE enterprise_id = %s AND YEAR(publish_time) = YEAR(CURDATE()) AND MONTH(publish_time) = MONTH(CURDATE()) 21:46:21 - article_server - INFO - [SQL参数] (1,) 21:46:21 - article_server - INFO - [SQL结果] 插入完成,新记录ID: 2 21:46:21 - article_server - INFO - [SQL结果] 查询完成,返回 1 条记录 21:46:21 - article_server - INFO - [SQL数据] 查询结果: [{'month_published': 3}] 21:46:21 - article_server - INFO - [业务日志] 操作: get_user_info | 用户ID: 18 | 目标: user#18 | 状态: success | IP: 36.27.52.26 | 日志ID: 2 21:46:21 - article_server - INFO - [API响应] GET /api/users/info - IP: 36.27.52.26 - 状态码: 200 21:46:21 - article_server - INFO - [SQL执行] 开始执行查询SQL 21:46:21 - article_server - INFO - [SQL语句] SELECT COUNT(*) as last_month_published FROM ai_article_published_records WHERE enterprise_id = %s AND YEAR(publish_time) = YEAR(DATE_SUB(CURDATE(), INTERVAL 1 MONTH)) AND MONTH(publish_time) = MONTH(DATE_SUB(CURDATE(), INTERVAL 1 MONTH)) 21:46:21 - article_server - INFO - [SQL参数] (1,) 21:46:21 - article_server - INFO - [SQL结果] 查询完成,返回 1 条记录 21:46:21 - article_server - INFO - [SQL数据] 查询结果: [{'last_month_published': 0}] 21:46:21 - article_server - INFO - 获取工作台概览成功 21:46:21 - article_server - INFO - [API响应] GET /api/dashboard/overview - IP: 36.27.52.26 - 状态码: 200 21:46:22 - article_server - INFO - [API访问] GET /api/dashboard/recent-publishes - IP: 36.27.52.26 - User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Sa 21:46:22 - article_server - INFO - [Token验证成功] 用户ID: 18 21:46:22 - article_server - INFO - [API访问] GET /api/dashboard/hot-products - IP: 36.27.52.26 - User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Sa 21:46:22 - article_server - INFO - [Token验证成功] 用户ID: 18 21:46:22 - article_server - INFO - [API访问] GET /api/users/info - IP: 36.27.52.26 - User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Sa 21:46:22 - article_server - INFO - [Token验证成功] 用户ID: 18 21:46:22 - article_server - INFO - [获取用户信息] 开始处理请求, IP: 36.27.52.26 21:46:22 - article_server - INFO - [获取用户信息] 用户ID: 18, IP: 36.27.52.26 21:46:22 - article_server - INFO - [API访问] GET /api/dashboard/overview - IP: 36.27.52.26 - User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Sa 21:46:22 - article_server - INFO - [Token验证成功] 用户ID: 18 21:46:22 - article_server - INFO - [SQL执行] 开始执行查询SQL 21:46:22 - article_server - INFO - [SQL语句] SELECT r.id, r.publish_time, u.real_name as employee_name, p.name as product_name, 'success' as status FROM ai_article_published_records r LEFT JOIN ai_users u ON r.created_user_id = u.id LEFT JOIN ai_products p ON r.product_id = p.id WHERE r.enterprise_id = %s ORDER BY r.publish_time DESC LIMIT %s 21:46:22 - article_server - INFO - [SQL参数] (1, 5) 21:46:22 - article_server - INFO - [SQL执行] 开始执行查询SQL 21:46:22 - article_server - INFO - [SQL执行] 开始执行查询SQL 21:46:22 - article_server - INFO - [SQL语句] SELECT r.product_id, p.name as product_name, COUNT(*) as publishes, ROUND(COUNT(*) * 100.0 / (SELECT COUNT(*) FROM ai_article_published_records WHERE enterprise_id = %s), 0) as percentage FROM ai_article_published_records r LEFT JOIN ai_products p ON r.product_id = p.id WHERE r.enterprise_id = %s GROUP BY r.product_id, p.name ORDER BY publishes DESC LIMIT %s 21:46:22 - article_server - INFO - [SQL参数] (1, 1, 4) 21:46:22 - article_server - INFO - [SQL语句] SELECT id, enterprise_id, enterprise_name, username, real_name, email, phone, wechat_openid, wechat_unionid, xhs_cookie, xhs_phone, xhs_account, is_bound_xhs, bound_at, department, role, status, created_at, updated_at FROM ai_users WHERE id = %s AND status != 'deleted' 21:46:22 - article_server - INFO - [SQL参数] (18,) 21:46:22 - article_server - INFO - [SQL执行] 开始执行查询SQL 21:46:22 - article_server - INFO - [SQL语句] SELECT users_total, products_total, articles_total, published_total FROM ai_enterprises WHERE id = %s 21:46:22 - article_server - INFO - [SQL参数] (1,) 21:46:22 - article_server - INFO - [SQL结果] 查询完成,返回 1 条记录 21:46:22 - article_server - INFO - [SQL数据] 查询结果: [{'id': 18, 'enterprise_id': 1, 'enterprise_name': '测试企业1号', 'username': '15707023967', 'real_name': '测试员工API', 'email': None, 'phone': '15707023967', 'wechat_openid': None, 'wechat_unionid': None, 'xhs_cookie': '[{"domain":"creator.xiaohongshu.com","expires":1765886300.80173,"httpOnly":true,"name":"acw_tc","path":"/","sameSite":"Lax","secure":false,"value":"0a0d09d017658845007813469ec5670285b8340a360cc4c2201c75df086add"},{"domain":".xiaohongshu.com","expires":1797420519,"httpOnly":false,"name":"xsecappid","path":"/","sameSite":"Lax","secure":false,"value":"ugc"},{"domain":".xiaohongshu.com","expires":1797420501,"httpOnly":false,"name":"a1","path":"/","sameSite":"Lax","secure":false,"value":"19b26eb1f5676nwqq68tzsm1efzwnqb8rd8crbo9150000919444"},{"domain":".xiaohongshu.com","expires":1797420501,"httpOnly":false,"name":"webId","path":"/","sameSite":"Lax","secure":false,"value":"334b292408be369dee3e00cd00c02814"},{"domain":"edith.xiaohongshu.com","expires":1765886302.122995,"httpOnly":true,"name":"acw_tc","path":"/","sameSite":"Lax","secure":false,"value":"0a5085af17658845020951798e0db2aa6b1f683c091ed8d263bdc1b3b0c979"},{"domain":"customer.xiaohongshu.com","expires":1765886302.418581,"httpOnly":true,"name":"acw_tc","path":"/","sameSite":"Lax","secure":false,"value":"0a0d0fba17658845023665490e85c24a0b09d80521793f3b775c036091618b"},{"domain":".xiaohongshu.com","expires":1766143702,"httpOnly":false,"name":"websectiga","path":"/","sameSite":"Lax","secure":false,"value":"10f9a40ba454a07755a08f27ef8194c53637eba4551cf9751c009g9afb564467"},{"domain":".xiaohongshu.com","expires":1765885107,"httpOnly":false,"name":"sec_poison_id","path":"/","sameSite":"Lax","secure":false,"value":"6da615cb-087a-4c5a-9bbb-a9d1e0fc9e8a"},{"domain":".xiaohongshu.com","expires":1800444522.755296,"httpOnly":false,"name":"gid","path":"/","sameSite":"Lax","secure":false,"value":"yjDJKdDJdJFSyjDJKdDyifDl2KWKIEAAKY9uYjyM6ydiuS28EIADYF888jyj4448ifjjW8W4"},{"domain":".xiaohongshu.com","expires":1766489317.637236,"httpOnly":true,"name":"customer-sso-sid","path":"/","sameSite":"Lax","secure":false,"value":"68c517584416253487808513dmgvocd9wjabgnkp"},{"domain":".xiaohongshu.com","expires":1800444518.637453,"httpOnly":true,"name":"x-user-id-creator.xiaohongshu.com","path":"/","sameSite":"Lax","secure":false,"value":"68bc3f6e0000000006025a91"},{"domain":".xiaohongshu.com","expires":1800444518.637597,"httpOnly":true,"name":"customerClientId","path":"/","sameSite":"Lax","secure":false,"value":"089912385389949"},{"domain":".xiaohongshu.com","expires":1768476517.637676,"httpOnly":true,"name":"access-token-creator.xiaohongshu.com","path":"/","sameSite":"Lax","secure":false,"value":"customer.creator.AT-68c517584416253487808514asy0vghqougmrdd3"},{"domain":".xiaohongshu.com","expires":1768476518.637759,"httpOnly":true,"name":"galaxy_creator_session_id","path":"/","sameSite":"Lax","secure":false,"value":"8tDSYD75SNh8bbJhJodtab8gPBMlEAbI1jD6"},{"domain":".xiaohongshu.com","expires":1768476518.637825,"httpOnly":true,"name":"galaxy.creator.beaker.session.id","path":"/","sameSite":"Lax","secure":false,"value":"1765884518568024980624"},{"domain":".xiaohongshu.com","expires":1797420519,"httpOnly":false,"name":"loadts","path":"/","sameSite":"Lax","secure":false,"value":"1765884519319"}]', 'xhs_phone': '17710390289', 'xhs_account': '小红书用户', 'is_bound_xhs': 1, 'bound_at': datetime.datetime(2025, 12, 16, 19, 28, 51), 'department': '测试部', 'role': 'admin', 'status': 'active', 'created_at': datetime.datetime(2025, 12, 12, 19, 7, 24), 'updated_at': datetime.datetime(2025, 12, 16, 19, 28, 51)}] 21:46:22 - article_server - INFO - [SQL结果] 查询完成,返回 3 条记录 21:46:22 - article_server - INFO - [SQL数据] 查询结果: [{'id': 7, 'publish_time': datetime.datetime(2025, 12, 16, 19, 32, 25), 'employee_name': '测试员工API', 'product_name': '洗面奶', 'status': 'success'}, {'id': 6, 'publish_time': datetime.datetime(2025, 12, 16, 11, 55, 56), 'employee_name': '测试员工API', 'product_name': '口红套装', 'status': 'success'}, {'id': 5, 'publish_time': datetime.datetime(2025, 12, 16, 10, 17, 8), 'employee_name': '测试员工API', 'product_name': '保湿精华', 'status': 'success'}] 21:46:22 - article_server - INFO - [SQL结果] 查询完成,返回 3 条记录 21:46:22 - article_server - INFO - [SQL数据] 查询结果: [{'product_id': 2, 'product_name': '保湿精华', 'publishes': 1, 'percentage': Decimal('33')}, {'product_id': 4, 'product_name': '口红套装', 'publishes': 1, 'percentage': Decimal('33')}, {'product_id': 5, 'product_name': '洗面奶', 'publishes': 1, 'percentage': Decimal('33')}] 21:46:22 - article_server - INFO - [SQL结果] 查询完成,返回 1 条记录 21:46:22 - article_server - INFO - [SQL数据] 查询结果: [{'users_total': 2, 'products_total': 1, 'articles_total': 12, 'published_total': 0}] 21:46:22 - article_server - INFO - [获取用户信息] 查询成功, 用户: 15707023967, 角色: admin, 企业: 测试企业1号, IP: 36.27.52.26 21:46:22 - article_server - INFO - 获取最近发布成功 21:46:22 - article_server - INFO - [API响应] GET /api/dashboard/recent-publishes - IP: 36.27.52.26 - 状态码: 200 21:46:22 - article_server - INFO - 获取热门产品成功 21:46:22 - article_server - INFO - [API响应] GET /api/dashboard/hot-products - IP: 36.27.52.26 - 状态码: 200 21:46:22 - article_server - INFO - [SQL执行] 开始执行插入SQL 21:46:22 - article_server - INFO - [SQL语句] INSERT INTO ai_logs (user_id, action, target_type, target_id, description, ip_address, user_agent, request_data, response_data, status, error_message, created_at) VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, NOW()) 21:46:22 - article_server - INFO - [SQL参数] (18, 'get_user_info', 'user', 18, '查询用户信息: 15707023967', '36.27.52.26', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Safari/537.36', None, None, 'success', None) 21:46:22 - article_server - INFO - [SQL执行] 开始执行查询SQL 21:46:22 - article_server - INFO - [SQL语句] SELECT COUNT(*) as month_published FROM ai_article_published_records WHERE enterprise_id = %s AND YEAR(publish_time) = YEAR(CURDATE()) AND MONTH(publish_time) = MONTH(CURDATE()) 21:46:22 - article_server - INFO - [SQL参数] (1,) 21:46:22 - article_server - INFO - [SQL结果] 插入完成,新记录ID: 3 21:46:22 - article_server - INFO - [SQL结果] 查询完成,返回 1 条记录 21:46:22 - article_server - INFO - [SQL数据] 查询结果: [{'month_published': 3}] 21:46:22 - article_server - INFO - [业务日志] 操作: get_user_info | 用户ID: 18 | 目标: user#18 | 状态: success | IP: 36.27.52.26 | 日志ID: 3 21:46:22 - article_server - INFO - [API响应] GET /api/users/info - IP: 36.27.52.26 - 状态码: 200 21:46:22 - article_server - INFO - [API访问] GET /api/dashboard/recent-publishes - IP: 36.27.52.26 - User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Sa 21:46:22 - article_server - INFO - [API访问] GET /api/dashboard/hot-products - IP: 36.27.52.26 - User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Sa 21:46:22 - article_server - INFO - [Token验证成功] 用户ID: 18 21:46:22 - article_server - INFO - [Token验证成功] 用户ID: 18 21:46:22 - article_server - INFO - [API访问] GET /api/users/info - IP: 36.27.52.26 - User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Sa 21:46:22 - article_server - INFO - [Token验证成功] 用户ID: 18 21:46:22 - article_server - INFO - [获取用户信息] 开始处理请求, IP: 36.27.52.26 21:46:22 - article_server - INFO - [获取用户信息] 用户ID: 18, IP: 36.27.52.26 21:46:22 - article_server - INFO - [API访问] GET /api/dashboard/overview - IP: 36.27.52.26 - User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Sa 21:46:22 - article_server - INFO - [Token验证成功] 用户ID: 18 21:46:22 - article_server - INFO - [SQL执行] 开始执行查询SQL 21:46:22 - article_server - INFO - [SQL语句] SELECT id, enterprise_id, enterprise_name, username, real_name, email, phone, wechat_openid, wechat_unionid, xhs_cookie, xhs_phone, xhs_account, is_bound_xhs, bound_at, department, role, status, created_at, updated_at FROM ai_users WHERE id = %s AND status != 'deleted' 21:46:22 - article_server - INFO - [SQL参数] (18,) 21:46:22 - article_server - INFO - [SQL执行] 开始执行查询SQL 21:46:22 - article_server - INFO - [SQL语句] SELECT COUNT(*) as last_month_published FROM ai_article_published_records WHERE enterprise_id = %s AND YEAR(publish_time) = YEAR(DATE_SUB(CURDATE(), INTERVAL 1 MONTH)) AND MONTH(publish_time) = MONTH(DATE_SUB(CURDATE(), INTERVAL 1 MONTH)) 21:46:22 - article_server - INFO - [SQL参数] (1,) 21:46:22 - article_server - INFO - [SQL执行] 开始执行查询SQL 21:46:22 - article_server - INFO - [SQL语句] SELECT r.product_id, p.name as product_name, COUNT(*) as publishes, ROUND(COUNT(*) * 100.0 / (SELECT COUNT(*) FROM ai_article_published_records WHERE enterprise_id = %s), 0) as percentage FROM ai_article_published_records r LEFT JOIN ai_products p ON r.product_id = p.id WHERE r.enterprise_id = %s GROUP BY r.product_id, p.name ORDER BY publishes DESC LIMIT %s 21:46:22 - article_server - INFO - [SQL参数] (1, 1, 4) 21:46:22 - article_server - INFO - [SQL执行] 开始执行查询SQL 21:46:22 - article_server - INFO - [SQL语句] SELECT r.id, r.publish_time, u.real_name as employee_name, p.name as product_name, 'success' as status FROM ai_article_published_records r LEFT JOIN ai_users u ON r.created_user_id = u.id LEFT JOIN ai_products p ON r.product_id = p.id WHERE r.enterprise_id = %s ORDER BY r.publish_time DESC LIMIT %s 21:46:22 - article_server - INFO - [SQL参数] (1, 5) 21:46:22 - article_server - INFO - [SQL结果] 查询完成,返回 1 条记录 21:46:22 - article_server - INFO - [SQL数据] 查询结果: [{'id': 18, 'enterprise_id': 1, 'enterprise_name': '测试企业1号', 'username': '15707023967', 'real_name': '测试员工API', 'email': None, 'phone': '15707023967', 'wechat_openid': None, 'wechat_unionid': None, 'xhs_cookie': '[{"domain":"creator.xiaohongshu.com","expires":1765886300.80173,"httpOnly":true,"name":"acw_tc","path":"/","sameSite":"Lax","secure":false,"value":"0a0d09d017658845007813469ec5670285b8340a360cc4c2201c75df086add"},{"domain":".xiaohongshu.com","expires":1797420519,"httpOnly":false,"name":"xsecappid","path":"/","sameSite":"Lax","secure":false,"value":"ugc"},{"domain":".xiaohongshu.com","expires":1797420501,"httpOnly":false,"name":"a1","path":"/","sameSite":"Lax","secure":false,"value":"19b26eb1f5676nwqq68tzsm1efzwnqb8rd8crbo9150000919444"},{"domain":".xiaohongshu.com","expires":1797420501,"httpOnly":false,"name":"webId","path":"/","sameSite":"Lax","secure":false,"value":"334b292408be369dee3e00cd00c02814"},{"domain":"edith.xiaohongshu.com","expires":1765886302.122995,"httpOnly":true,"name":"acw_tc","path":"/","sameSite":"Lax","secure":false,"value":"0a5085af17658845020951798e0db2aa6b1f683c091ed8d263bdc1b3b0c979"},{"domain":"customer.xiaohongshu.com","expires":1765886302.418581,"httpOnly":true,"name":"acw_tc","path":"/","sameSite":"Lax","secure":false,"value":"0a0d0fba17658845023665490e85c24a0b09d80521793f3b775c036091618b"},{"domain":".xiaohongshu.com","expires":1766143702,"httpOnly":false,"name":"websectiga","path":"/","sameSite":"Lax","secure":false,"value":"10f9a40ba454a07755a08f27ef8194c53637eba4551cf9751c009g9afb564467"},{"domain":".xiaohongshu.com","expires":1765885107,"httpOnly":false,"name":"sec_poison_id","path":"/","sameSite":"Lax","secure":false,"value":"6da615cb-087a-4c5a-9bbb-a9d1e0fc9e8a"},{"domain":".xiaohongshu.com","expires":1800444522.755296,"httpOnly":false,"name":"gid","path":"/","sameSite":"Lax","secure":false,"value":"yjDJKdDJdJFSyjDJKdDyifDl2KWKIEAAKY9uYjyM6ydiuS28EIADYF888jyj4448ifjjW8W4"},{"domain":".xiaohongshu.com","expires":1766489317.637236,"httpOnly":true,"name":"customer-sso-sid","path":"/","sameSite":"Lax","secure":false,"value":"68c517584416253487808513dmgvocd9wjabgnkp"},{"domain":".xiaohongshu.com","expires":1800444518.637453,"httpOnly":true,"name":"x-user-id-creator.xiaohongshu.com","path":"/","sameSite":"Lax","secure":false,"value":"68bc3f6e0000000006025a91"},{"domain":".xiaohongshu.com","expires":1800444518.637597,"httpOnly":true,"name":"customerClientId","path":"/","sameSite":"Lax","secure":false,"value":"089912385389949"},{"domain":".xiaohongshu.com","expires":1768476517.637676,"httpOnly":true,"name":"access-token-creator.xiaohongshu.com","path":"/","sameSite":"Lax","secure":false,"value":"customer.creator.AT-68c517584416253487808514asy0vghqougmrdd3"},{"domain":".xiaohongshu.com","expires":1768476518.637759,"httpOnly":true,"name":"galaxy_creator_session_id","path":"/","sameSite":"Lax","secure":false,"value":"8tDSYD75SNh8bbJhJodtab8gPBMlEAbI1jD6"},{"domain":".xiaohongshu.com","expires":1768476518.637825,"httpOnly":true,"name":"galaxy.creator.beaker.session.id","path":"/","sameSite":"Lax","secure":false,"value":"1765884518568024980624"},{"domain":".xiaohongshu.com","expires":1797420519,"httpOnly":false,"name":"loadts","path":"/","sameSite":"Lax","secure":false,"value":"1765884519319"}]', 'xhs_phone': '17710390289', 'xhs_account': '小红书用户', 'is_bound_xhs': 1, 'bound_at': datetime.datetime(2025, 12, 16, 19, 28, 51), 'department': '测试部', 'role': 'admin', 'status': 'active', 'created_at': datetime.datetime(2025, 12, 12, 19, 7, 24), 'updated_at': datetime.datetime(2025, 12, 16, 19, 28, 51)}] 21:46:22 - article_server - INFO - [SQL结果] 查询完成,返回 3 条记录 21:46:22 - article_server - INFO - [SQL数据] 查询结果: [{'product_id': 2, 'product_name': '保湿精华', 'publishes': 1, 'percentage': Decimal('33')}, {'product_id': 4, 'product_name': '口红套装', 'publishes': 1, 'percentage': Decimal('33')}, {'product_id': 5, 'product_name': '洗面奶', 'publishes': 1, 'percentage': Decimal('33')}] 21:46:22 - article_server - INFO - [SQL结果] 查询完成,返回 1 条记录 21:46:22 - article_server - INFO - [SQL数据] 查询结果: [{'last_month_published': 0}] 21:46:22 - article_server - INFO - [SQL结果] 查询完成,返回 3 条记录 21:46:22 - article_server - INFO - [SQL数据] 查询结果: [{'id': 7, 'publish_time': datetime.datetime(2025, 12, 16, 19, 32, 25), 'employee_name': '测试员工API', 'product_name': '洗面奶', 'status': 'success'}, {'id': 6, 'publish_time': datetime.datetime(2025, 12, 16, 11, 55, 56), 'employee_name': '测试员工API', 'product_name': '口红套装', 'status': 'success'}, {'id': 5, 'publish_time': datetime.datetime(2025, 12, 16, 10, 17, 8), 'employee_name': '测试员工API', 'product_name': '保湿精华', 'status': 'success'}] 21:46:22 - article_server - INFO - [获取用户信息] 查询成功, 用户: 15707023967, 角色: admin, 企业: 测试企业1号, IP: 36.27.52.26 21:46:22 - article_server - INFO - 获取热门产品成功 21:46:22 - article_server - INFO - [API响应] GET /api/dashboard/hot-products - IP: 36.27.52.26 - 状态码: 200 21:46:22 - article_server - INFO - 获取工作台概览成功 21:46:22 - article_server - INFO - [API响应] GET /api/dashboard/overview - IP: 36.27.52.26 - 状态码: 200 21:46:22 - article_server - INFO - 获取最近发布成功 21:46:22 - article_server - INFO - [API响应] GET /api/dashboard/recent-publishes - IP: 36.27.52.26 - 状态码: 200 21:46:22 - article_server - INFO - [SQL执行] 开始执行插入SQL 21:46:22 - article_server - INFO - [SQL语句] INSERT INTO ai_logs (user_id, action, target_type, target_id, description, ip_address, user_agent, request_data, response_data, status, error_message, created_at) VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, NOW()) 21:46:22 - article_server - INFO - [SQL参数] (18, 'get_user_info', 'user', 18, '查询用户信息: 15707023967', '36.27.52.26', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Safari/537.36', None, None, 'success', None) 21:46:22 - article_server - INFO - [SQL结果] 插入完成,新记录ID: 4 21:46:22 - article_server - INFO - [业务日志] 操作: get_user_info | 用户ID: 18 | 目标: user#18 | 状态: success | IP: 36.27.52.26 | 日志ID: 4 21:46:22 - article_server - INFO - [API响应] GET /api/users/info - IP: 36.27.52.26 - 状态码: 200 21:46:22 - article_server - INFO - [API访问] GET /api/dashboard/overview - IP: 36.27.52.26 - User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Sa 21:46:22 - article_server - INFO - [Token验证成功] 用户ID: 18 21:46:22 - article_server - INFO - [API访问] GET /api/users/info - IP: 36.27.52.26 - User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Sa 21:46:22 - article_server - INFO - [Token验证成功] 用户ID: 18 21:46:22 - article_server - INFO - [获取用户信息] 开始处理请求, IP: 36.27.52.26 21:46:22 - article_server - INFO - [获取用户信息] 用户ID: 18, IP: 36.27.52.26 21:46:22 - article_server - INFO - 数据库连接成功,字符集设置完成 21:46:22 - article_server - INFO - [SQL执行] 开始执行查询SQL 21:46:22 - article_server - INFO - [SQL语句] SELECT users_total, products_total, articles_total, published_total FROM ai_enterprises WHERE id = %s 21:46:22 - article_server - INFO - [SQL参数] (1,) 21:46:22 - article_server - INFO - [SQL执行] 开始执行查询SQL 21:46:22 - article_server - INFO - [SQL语句] SELECT id, enterprise_id, enterprise_name, username, real_name, email, phone, wechat_openid, wechat_unionid, xhs_cookie, xhs_phone, xhs_account, is_bound_xhs, bound_at, department, role, status, created_at, updated_at FROM ai_users WHERE id = %s AND status != 'deleted' 21:46:22 - article_server - INFO - [SQL参数] (18,) 21:46:22 - article_server - INFO - [SQL执行] 开始执行查询SQL 21:46:22 - article_server - INFO - [SQL语句] SELECT users_total, products_total, articles_total, published_total FROM ai_enterprises WHERE id = %s 21:46:22 - article_server - INFO - [SQL参数] (1,) 21:46:22 - article_server - INFO - [SQL结果] 查询完成,返回 1 条记录 21:46:22 - article_server - INFO - [SQL数据] 查询结果: [{'id': 18, 'enterprise_id': 1, 'enterprise_name': '测试企业1号', 'username': '15707023967', 'real_name': '测试员工API', 'email': None, 'phone': '15707023967', 'wechat_openid': None, 'wechat_unionid': None, 'xhs_cookie': '[{"domain":"creator.xiaohongshu.com","expires":1765886300.80173,"httpOnly":true,"name":"acw_tc","path":"/","sameSite":"Lax","secure":false,"value":"0a0d09d017658845007813469ec5670285b8340a360cc4c2201c75df086add"},{"domain":".xiaohongshu.com","expires":1797420519,"httpOnly":false,"name":"xsecappid","path":"/","sameSite":"Lax","secure":false,"value":"ugc"},{"domain":".xiaohongshu.com","expires":1797420501,"httpOnly":false,"name":"a1","path":"/","sameSite":"Lax","secure":false,"value":"19b26eb1f5676nwqq68tzsm1efzwnqb8rd8crbo9150000919444"},{"domain":".xiaohongshu.com","expires":1797420501,"httpOnly":false,"name":"webId","path":"/","sameSite":"Lax","secure":false,"value":"334b292408be369dee3e00cd00c02814"},{"domain":"edith.xiaohongshu.com","expires":1765886302.122995,"httpOnly":true,"name":"acw_tc","path":"/","sameSite":"Lax","secure":false,"value":"0a5085af17658845020951798e0db2aa6b1f683c091ed8d263bdc1b3b0c979"},{"domain":"customer.xiaohongshu.com","expires":1765886302.418581,"httpOnly":true,"name":"acw_tc","path":"/","sameSite":"Lax","secure":false,"value":"0a0d0fba17658845023665490e85c24a0b09d80521793f3b775c036091618b"},{"domain":".xiaohongshu.com","expires":1766143702,"httpOnly":false,"name":"websectiga","path":"/","sameSite":"Lax","secure":false,"value":"10f9a40ba454a07755a08f27ef8194c53637eba4551cf9751c009g9afb564467"},{"domain":".xiaohongshu.com","expires":1765885107,"httpOnly":false,"name":"sec_poison_id","path":"/","sameSite":"Lax","secure":false,"value":"6da615cb-087a-4c5a-9bbb-a9d1e0fc9e8a"},{"domain":".xiaohongshu.com","expires":1800444522.755296,"httpOnly":false,"name":"gid","path":"/","sameSite":"Lax","secure":false,"value":"yjDJKdDJdJFSyjDJKdDyifDl2KWKIEAAKY9uYjyM6ydiuS28EIADYF888jyj4448ifjjW8W4"},{"domain":".xiaohongshu.com","expires":1766489317.637236,"httpOnly":true,"name":"customer-sso-sid","path":"/","sameSite":"Lax","secure":false,"value":"68c517584416253487808513dmgvocd9wjabgnkp"},{"domain":".xiaohongshu.com","expires":1800444518.637453,"httpOnly":true,"name":"x-user-id-creator.xiaohongshu.com","path":"/","sameSite":"Lax","secure":false,"value":"68bc3f6e0000000006025a91"},{"domain":".xiaohongshu.com","expires":1800444518.637597,"httpOnly":true,"name":"customerClientId","path":"/","sameSite":"Lax","secure":false,"value":"089912385389949"},{"domain":".xiaohongshu.com","expires":1768476517.637676,"httpOnly":true,"name":"access-token-creator.xiaohongshu.com","path":"/","sameSite":"Lax","secure":false,"value":"customer.creator.AT-68c517584416253487808514asy0vghqougmrdd3"},{"domain":".xiaohongshu.com","expires":1768476518.637759,"httpOnly":true,"name":"galaxy_creator_session_id","path":"/","sameSite":"Lax","secure":false,"value":"8tDSYD75SNh8bbJhJodtab8gPBMlEAbI1jD6"},{"domain":".xiaohongshu.com","expires":1768476518.637825,"httpOnly":true,"name":"galaxy.creator.beaker.session.id","path":"/","sameSite":"Lax","secure":false,"value":"1765884518568024980624"},{"domain":".xiaohongshu.com","expires":1797420519,"httpOnly":false,"name":"loadts","path":"/","sameSite":"Lax","secure":false,"value":"1765884519319"}]', 'xhs_phone': '17710390289', 'xhs_account': '小红书用户', 'is_bound_xhs': 1, 'bound_at': datetime.datetime(2025, 12, 16, 19, 28, 51), 'department': '测试部', 'role': 'admin', 'status': 'active', 'created_at': datetime.datetime(2025, 12, 12, 19, 7, 24), 'updated_at': datetime.datetime(2025, 12, 16, 19, 28, 51)}] 21:46:22 - article_server - INFO - [SQL结果] 查询完成,返回 1 条记录 21:46:22 - article_server - INFO - [SQL数据] 查询结果: [{'users_total': 2, 'products_total': 1, 'articles_total': 12, 'published_total': 0}] 21:46:22 - article_server - INFO - [SQL结果] 查询完成,返回 1 条记录 21:46:22 - article_server - INFO - [SQL数据] 查询结果: [{'users_total': 2, 'products_total': 1, 'articles_total': 12, 'published_total': 0}] 21:46:22 - article_server - INFO - [API访问] GET /api/dashboard/recent-publishes - IP: 36.27.52.26 - User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Sa 21:46:22 - article_server - INFO - [Token验证成功] 用户ID: 18 21:46:22 - article_server - INFO - [获取用户信息] 查询成功, 用户: 15707023967, 角色: admin, 企业: 测试企业1号, IP: 36.27.52.26 21:46:22 - article_server - INFO - [API访问] GET /api/dashboard/hot-products - IP: 36.27.52.26 - User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Sa 21:46:22 - article_server - INFO - [Token验证成功] 用户ID: 18 21:46:22 - article_server - INFO - [SQL执行] 开始执行查询SQL 21:46:22 - article_server - INFO - [SQL语句] SELECT r.id, r.publish_time, u.real_name as employee_name, p.name as product_name, 'success' as status FROM ai_article_published_records r LEFT JOIN ai_users u ON r.created_user_id = u.id LEFT JOIN ai_products p ON r.product_id = p.id WHERE r.enterprise_id = %s ORDER BY r.publish_time DESC LIMIT %s 21:46:22 - article_server - INFO - [SQL参数] (1, 5) 21:46:22 - article_server - INFO - [SQL执行] 开始执行插入SQL 21:46:22 - article_server - INFO - [SQL语句] INSERT INTO ai_logs (user_id, action, target_type, target_id, description, ip_address, user_agent, request_data, response_data, status, error_message, created_at) VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, NOW()) 21:46:22 - article_server - INFO - [SQL参数] (18, 'get_user_info', 'user', 18, '查询用户信息: 15707023967', '36.27.52.26', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Safari/537.36', None, None, 'success', None) 21:46:22 - article_server - INFO - [SQL执行] 开始执行查询SQL 21:46:22 - article_server - INFO - [SQL语句] SELECT COUNT(*) as month_published FROM ai_article_published_records WHERE enterprise_id = %s AND YEAR(publish_time) = YEAR(CURDATE()) AND MONTH(publish_time) = MONTH(CURDATE()) 21:46:22 - article_server - INFO - [SQL参数] (1,) 21:46:22 - article_server - INFO - [SQL执行] 开始执行查询SQL 21:46:22 - article_server - INFO - [SQL语句] SELECT COUNT(*) as month_published FROM ai_article_published_records WHERE enterprise_id = %s AND YEAR(publish_time) = YEAR(CURDATE()) AND MONTH(publish_time) = MONTH(CURDATE()) 21:46:22 - article_server - INFO - [SQL参数] (1,) 21:46:22 - article_server - INFO - [SQL执行] 开始执行查询SQL 21:46:22 - article_server - INFO - [SQL语句] SELECT r.product_id, p.name as product_name, COUNT(*) as publishes, ROUND(COUNT(*) * 100.0 / (SELECT COUNT(*) FROM ai_article_published_records WHERE enterprise_id = %s), 0) as percentage FROM ai_article_published_records r LEFT JOIN ai_products p ON r.product_id = p.id WHERE r.enterprise_id = %s GROUP BY r.product_id, p.name ORDER BY publishes DESC LIMIT %s 21:46:22 - article_server - INFO - [SQL参数] (1, 1, 4) 21:46:22 - article_server - INFO - [SQL结果] 插入完成,新记录ID: 5 21:46:22 - article_server - INFO - [SQL结果] 查询完成,返回 3 条记录 21:46:22 - article_server - INFO - [SQL数据] 查询结果: [{'id': 7, 'publish_time': datetime.datetime(2025, 12, 16, 19, 32, 25), 'employee_name': '测试员工API', 'product_name': '洗面奶', 'status': 'success'}, {'id': 6, 'publish_time': datetime.datetime(2025, 12, 16, 11, 55, 56), 'employee_name': '测试员工API', 'product_name': '口红套装', 'status': 'success'}, {'id': 5, 'publish_time': datetime.datetime(2025, 12, 16, 10, 17, 8), 'employee_name': '测试员工API', 'product_name': '保湿精华', 'status': 'success'}] 21:46:22 - article_server - INFO - [SQL结果] 查询完成,返回 1 条记录 21:46:22 - article_server - INFO - [SQL数据] 查询结果: [{'month_published': 3}] 21:46:22 - article_server - INFO - [SQL结果] 查询完成,返回 1 条记录 21:46:22 - article_server - INFO - [SQL数据] 查询结果: [{'month_published': 3}] 21:46:22 - article_server - INFO - [SQL结果] 查询完成,返回 3 条记录 21:46:22 - article_server - INFO - [SQL数据] 查询结果: [{'product_id': 2, 'product_name': '保湿精华', 'publishes': 1, 'percentage': Decimal('33')}, {'product_id': 4, 'product_name': '口红套装', 'publishes': 1, 'percentage': Decimal('33')}, {'product_id': 5, 'product_name': '洗面奶', 'publishes': 1, 'percentage': Decimal('33')}] 21:46:22 - article_server - INFO - [业务日志] 操作: get_user_info | 用户ID: 18 | 目标: user#18 | 状态: success | IP: 36.27.52.26 | 日志ID: 5 21:46:22 - article_server - INFO - [API响应] GET /api/users/info - IP: 36.27.52.26 - 状态码: 200 21:46:22 - article_server - INFO - 获取最近发布成功 21:46:22 - article_server - INFO - [API响应] GET /api/dashboard/recent-publishes - IP: 36.27.52.26 - 状态码: 200 21:46:22 - article_server - INFO - 获取热门产品成功 21:46:22 - article_server - INFO - [API响应] GET /api/dashboard/hot-products - IP: 36.27.52.26 - 状态码: 200 21:46:22 - article_server - INFO - [SQL执行] 开始执行查询SQL 21:46:22 - article_server - INFO - [SQL语句] SELECT COUNT(*) as last_month_published FROM ai_article_published_records WHERE enterprise_id = %s AND YEAR(publish_time) = YEAR(DATE_SUB(CURDATE(), INTERVAL 1 MONTH)) AND MONTH(publish_time) = MONTH(DATE_SUB(CURDATE(), INTERVAL 1 MONTH)) 21:46:22 - article_server - INFO - [SQL参数] (1,) 21:46:22 - article_server - INFO - [SQL执行] 开始执行查询SQL 21:46:22 - article_server - INFO - [SQL语句] SELECT COUNT(*) as last_month_published FROM ai_article_published_records WHERE enterprise_id = %s AND YEAR(publish_time) = YEAR(DATE_SUB(CURDATE(), INTERVAL 1 MONTH)) AND MONTH(publish_time) = MONTH(DATE_SUB(CURDATE(), INTERVAL 1 MONTH)) 21:46:22 - article_server - INFO - [SQL参数] (1,) 21:46:22 - article_server - INFO - [SQL结果] 查询完成,返回 1 条记录 21:46:22 - article_server - INFO - [SQL数据] 查询结果: [{'last_month_published': 0}] 21:46:22 - article_server - INFO - [API访问] GET /api/dashboard/overview - IP: 36.27.52.26 - User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Sa 21:46:22 - article_server - INFO - [Token验证成功] 用户ID: 18 21:46:22 - article_server - INFO - [API访问] GET /api/dashboard/hot-products - IP: 36.27.52.26 - User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Sa 21:46:22 - article_server - INFO - [Token验证成功] 用户ID: 18 21:46:22 - article_server - INFO - [API访问] GET /api/users/info - IP: 36.27.52.26 - User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Sa 21:46:22 - article_server - INFO - [Token验证成功] 用户ID: 18 21:46:22 - article_server - INFO - [获取用户信息] 开始处理请求, IP: 36.27.52.26 21:46:22 - article_server - INFO - [获取用户信息] 用户ID: 18, IP: 36.27.52.26 21:46:22 - article_server - INFO - [SQL结果] 查询完成,返回 1 条记录 21:46:22 - article_server - INFO - [SQL数据] 查询结果: [{'last_month_published': 0}] 21:46:22 - article_server - INFO - [API访问] GET /api/dashboard/recent-publishes - IP: 36.27.52.26 - User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Sa 21:46:22 - article_server - INFO - [Token验证成功] 用户ID: 18 21:46:22 - article_server - INFO - 获取工作台概览成功 21:46:22 - article_server - INFO - [API响应] GET /api/dashboard/overview - IP: 36.27.52.26 - 状态码: 200 21:46:22 - article_server - INFO - [SQL执行] 开始执行查询SQL 21:46:22 - article_server - INFO - [SQL语句] SELECT id, enterprise_id, enterprise_name, username, real_name, email, phone, wechat_openid, wechat_unionid, xhs_cookie, xhs_phone, xhs_account, is_bound_xhs, bound_at, department, role, status, created_at, updated_at FROM ai_users WHERE id = %s AND status != 'deleted' 21:46:22 - article_server - INFO - [SQL参数] (18,) 21:46:22 - article_server - INFO - [SQL执行] 开始执行查询SQL 21:46:22 - article_server - INFO - [SQL语句] SELECT users_total, products_total, articles_total, published_total FROM ai_enterprises WHERE id = %s 21:46:22 - article_server - INFO - [SQL参数] (1,) 21:46:22 - article_server - INFO - [SQL执行] 开始执行查询SQL 21:46:22 - article_server - INFO - [SQL语句] SELECT r.product_id, p.name as product_name, COUNT(*) as publishes, ROUND(COUNT(*) * 100.0 / (SELECT COUNT(*) FROM ai_article_published_records WHERE enterprise_id = %s), 0) as percentage FROM ai_article_published_records r LEFT JOIN ai_products p ON r.product_id = p.id WHERE r.enterprise_id = %s GROUP BY r.product_id, p.name ORDER BY publishes DESC LIMIT %s 21:46:22 - article_server - INFO - [SQL参数] (1, 1, 4) 21:46:22 - article_server - INFO - 获取工作台概览成功 21:46:22 - article_server - INFO - [API响应] GET /api/dashboard/overview - IP: 36.27.52.26 - 状态码: 200 21:46:22 - article_server - INFO - [SQL执行] 开始执行查询SQL 21:46:22 - article_server - INFO - [SQL语句] SELECT r.id, r.publish_time, u.real_name as employee_name, p.name as product_name, 'success' as status FROM ai_article_published_records r LEFT JOIN ai_users u ON r.created_user_id = u.id LEFT JOIN ai_products p ON r.product_id = p.id WHERE r.enterprise_id = %s ORDER BY r.publish_time DESC LIMIT %s 21:46:22 - article_server - INFO - [SQL参数] (1, 5) 21:46:22 - article_server - INFO - [SQL结果] 查询完成,返回 1 条记录 21:46:22 - article_server - INFO - [SQL数据] 查询结果: [{'id': 18, 'enterprise_id': 1, 'enterprise_name': '测试企业1号', 'username': '15707023967', 'real_name': '测试员工API', 'email': None, 'phone': '15707023967', 'wechat_openid': None, 'wechat_unionid': None, 'xhs_cookie': '[{"domain":"creator.xiaohongshu.com","expires":1765886300.80173,"httpOnly":true,"name":"acw_tc","path":"/","sameSite":"Lax","secure":false,"value":"0a0d09d017658845007813469ec5670285b8340a360cc4c2201c75df086add"},{"domain":".xiaohongshu.com","expires":1797420519,"httpOnly":false,"name":"xsecappid","path":"/","sameSite":"Lax","secure":false,"value":"ugc"},{"domain":".xiaohongshu.com","expires":1797420501,"httpOnly":false,"name":"a1","path":"/","sameSite":"Lax","secure":false,"value":"19b26eb1f5676nwqq68tzsm1efzwnqb8rd8crbo9150000919444"},{"domain":".xiaohongshu.com","expires":1797420501,"httpOnly":false,"name":"webId","path":"/","sameSite":"Lax","secure":false,"value":"334b292408be369dee3e00cd00c02814"},{"domain":"edith.xiaohongshu.com","expires":1765886302.122995,"httpOnly":true,"name":"acw_tc","path":"/","sameSite":"Lax","secure":false,"value":"0a5085af17658845020951798e0db2aa6b1f683c091ed8d263bdc1b3b0c979"},{"domain":"customer.xiaohongshu.com","expires":1765886302.418581,"httpOnly":true,"name":"acw_tc","path":"/","sameSite":"Lax","secure":false,"value":"0a0d0fba17658845023665490e85c24a0b09d80521793f3b775c036091618b"},{"domain":".xiaohongshu.com","expires":1766143702,"httpOnly":false,"name":"websectiga","path":"/","sameSite":"Lax","secure":false,"value":"10f9a40ba454a07755a08f27ef8194c53637eba4551cf9751c009g9afb564467"},{"domain":".xiaohongshu.com","expires":1765885107,"httpOnly":false,"name":"sec_poison_id","path":"/","sameSite":"Lax","secure":false,"value":"6da615cb-087a-4c5a-9bbb-a9d1e0fc9e8a"},{"domain":".xiaohongshu.com","expires":1800444522.755296,"httpOnly":false,"name":"gid","path":"/","sameSite":"Lax","secure":false,"value":"yjDJKdDJdJFSyjDJKdDyifDl2KWKIEAAKY9uYjyM6ydiuS28EIADYF888jyj4448ifjjW8W4"},{"domain":".xiaohongshu.com","expires":1766489317.637236,"httpOnly":true,"name":"customer-sso-sid","path":"/","sameSite":"Lax","secure":false,"value":"68c517584416253487808513dmgvocd9wjabgnkp"},{"domain":".xiaohongshu.com","expires":1800444518.637453,"httpOnly":true,"name":"x-user-id-creator.xiaohongshu.com","path":"/","sameSite":"Lax","secure":false,"value":"68bc3f6e0000000006025a91"},{"domain":".xiaohongshu.com","expires":1800444518.637597,"httpOnly":true,"name":"customerClientId","path":"/","sameSite":"Lax","secure":false,"value":"089912385389949"},{"domain":".xiaohongshu.com","expires":1768476517.637676,"httpOnly":true,"name":"access-token-creator.xiaohongshu.com","path":"/","sameSite":"Lax","secure":false,"value":"customer.creator.AT-68c517584416253487808514asy0vghqougmrdd3"},{"domain":".xiaohongshu.com","expires":1768476518.637759,"httpOnly":true,"name":"galaxy_creator_session_id","path":"/","sameSite":"Lax","secure":false,"value":"8tDSYD75SNh8bbJhJodtab8gPBMlEAbI1jD6"},{"domain":".xiaohongshu.com","expires":1768476518.637825,"httpOnly":true,"name":"galaxy.creator.beaker.session.id","path":"/","sameSite":"Lax","secure":false,"value":"1765884518568024980624"},{"domain":".xiaohongshu.com","expires":1797420519,"httpOnly":false,"name":"loadts","path":"/","sameSite":"Lax","secure":false,"value":"1765884519319"}]', 'xhs_phone': '17710390289', 'xhs_account': '小红书用户', 'is_bound_xhs': 1, 'bound_at': datetime.datetime(2025, 12, 16, 19, 28, 51), 'department': '测试部', 'role': 'admin', 'status': 'active', 'created_at': datetime.datetime(2025, 12, 12, 19, 7, 24), 'updated_at': datetime.datetime(2025, 12, 16, 19, 28, 51)}] 21:46:22 - article_server - INFO - [SQL结果] 查询完成,返回 1 条记录 21:46:22 - article_server - INFO - [SQL数据] 查询结果: [{'users_total': 2, 'products_total': 1, 'articles_total': 12, 'published_total': 0}] 21:46:23 - article_server - INFO - [SQL结果] 查询完成,返回 3 条记录 21:46:23 - article_server - INFO - [SQL数据] 查询结果: [{'product_id': 2, 'product_name': '保湿精华', 'publishes': 1, 'percentage': Decimal('33')}, {'product_id': 4, 'product_name': '口红套装', 'publishes': 1, 'percentage': Decimal('33')}, {'product_id': 5, 'product_name': '洗面奶', 'publishes': 1, 'percentage': Decimal('33')}] 21:46:23 - article_server - INFO - [SQL结果] 查询完成,返回 3 条记录 21:46:23 - article_server - INFO - [SQL数据] 查询结果: [{'id': 7, 'publish_time': datetime.datetime(2025, 12, 16, 19, 32, 25), 'employee_name': '测试员工API', 'product_name': '洗面奶', 'status': 'success'}, {'id': 6, 'publish_time': datetime.datetime(2025, 12, 16, 11, 55, 56), 'employee_name': '测试员工API', 'product_name': '口红套装', 'status': 'success'}, {'id': 5, 'publish_time': datetime.datetime(2025, 12, 16, 10, 17, 8), 'employee_name': '测试员工API', 'product_name': '保湿精华', 'status': 'success'}] 21:46:23 - article_server - INFO - [获取用户信息] 查询成功, 用户: 15707023967, 角色: admin, 企业: 测试企业1号, IP: 36.27.52.26 21:46:23 - article_server - INFO - 获取热门产品成功 21:46:23 - article_server - INFO - [API响应] GET /api/dashboard/hot-products - IP: 36.27.52.26 - 状态码: 200 21:46:23 - article_server - INFO - [SQL执行] 开始执行插入SQL 21:46:23 - article_server - INFO - [SQL语句] INSERT INTO ai_logs (user_id, action, target_type, target_id, description, ip_address, user_agent, request_data, response_data, status, error_message, created_at) VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, NOW()) 21:46:23 - article_server - INFO - [SQL参数] (18, 'get_user_info', 'user', 18, '查询用户信息: 15707023967', '36.27.52.26', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Safari/537.36', None, None, 'success', None) 21:46:23 - article_server - INFO - 获取最近发布成功 21:46:23 - article_server - INFO - [API响应] GET /api/dashboard/recent-publishes - IP: 36.27.52.26 - 状态码: 200 21:46:23 - article_server - INFO - [SQL执行] 开始执行查询SQL 21:46:23 - article_server - INFO - [SQL语句] SELECT COUNT(*) as month_published FROM ai_article_published_records WHERE enterprise_id = %s AND YEAR(publish_time) = YEAR(CURDATE()) AND MONTH(publish_time) = MONTH(CURDATE()) 21:46:23 - article_server - INFO - [SQL参数] (1,) 21:46:23 - article_server - INFO - [SQL结果] 插入完成,新记录ID: 6 21:46:23 - article_server - INFO - [SQL结果] 查询完成,返回 1 条记录 21:46:23 - article_server - INFO - [SQL数据] 查询结果: [{'month_published': 3}] 21:46:23 - article_server - INFO - [业务日志] 操作: get_user_info | 用户ID: 18 | 目标: user#18 | 状态: success | IP: 36.27.52.26 | 日志ID: 6 21:46:23 - article_server - INFO - [API响应] GET /api/users/info - IP: 36.27.52.26 - 状态码: 200 21:46:23 - article_server - INFO - [API访问] GET /api/dashboard/overview - IP: 36.27.52.26 - User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Sa 21:46:23 - article_server - INFO - [Token验证成功] 用户ID: 18 21:46:23 - article_server - INFO - [API访问] GET /api/dashboard/recent-publishes - IP: 36.27.52.26 - User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Sa 21:46:23 - article_server - INFO - [Token验证成功] 用户ID: 18 21:46:23 - article_server - INFO - [API访问] GET /api/users/info - IP: 36.27.52.26 - User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Sa 21:46:23 - article_server - INFO - [Token验证成功] 用户ID: 18 21:46:23 - article_server - INFO - [获取用户信息] 开始处理请求, IP: 36.27.52.26 21:46:23 - article_server - INFO - [获取用户信息] 用户ID: 18, IP: 36.27.52.26 21:46:23 - article_server - INFO - [SQL执行] 开始执行查询SQL 21:46:23 - article_server - INFO - [SQL语句] SELECT COUNT(*) as last_month_published FROM ai_article_published_records WHERE enterprise_id = %s AND YEAR(publish_time) = YEAR(DATE_SUB(CURDATE(), INTERVAL 1 MONTH)) AND MONTH(publish_time) = MONTH(DATE_SUB(CURDATE(), INTERVAL 1 MONTH)) 21:46:23 - article_server - INFO - [SQL参数] (1,) 21:46:23 - article_server - INFO - [SQL执行] 开始执行查询SQL 21:46:23 - article_server - INFO - [SQL语句] SELECT r.id, r.publish_time, u.real_name as employee_name, p.name as product_name, 'success' as status FROM ai_article_published_records r LEFT JOIN ai_users u ON r.created_user_id = u.id LEFT JOIN ai_products p ON r.product_id = p.id WHERE r.enterprise_id = %s ORDER BY r.publish_time DESC LIMIT %s 21:46:23 - article_server - INFO - [SQL参数] (1, 5) 21:46:23 - article_server - INFO - [SQL执行] 开始执行查询SQL 21:46:23 - article_server - INFO - [SQL语句] SELECT users_total, products_total, articles_total, published_total FROM ai_enterprises WHERE id = %s 21:46:23 - article_server - INFO - [SQL参数] (1,) 21:46:23 - article_server - INFO - [SQL执行] 开始执行查询SQL 21:46:23 - article_server - INFO - [SQL语句] SELECT id, enterprise_id, enterprise_name, username, real_name, email, phone, wechat_openid, wechat_unionid, xhs_cookie, xhs_phone, xhs_account, is_bound_xhs, bound_at, department, role, status, created_at, updated_at FROM ai_users WHERE id = %s AND status != 'deleted' 21:46:23 - article_server - INFO - [SQL参数] (18,) 21:46:23 - article_server - INFO - [SQL结果] 查询完成,返回 1 条记录 21:46:23 - article_server - INFO - [SQL数据] 查询结果: [{'last_month_published': 0}] 21:46:23 - article_server - INFO - [SQL结果] 查询完成,返回 3 条记录 21:46:23 - article_server - INFO - [SQL数据] 查询结果: [{'id': 7, 'publish_time': datetime.datetime(2025, 12, 16, 19, 32, 25), 'employee_name': '测试员工API', 'product_name': '洗面奶', 'status': 'success'}, {'id': 6, 'publish_time': datetime.datetime(2025, 12, 16, 11, 55, 56), 'employee_name': '测试员工API', 'product_name': '口红套装', 'status': 'success'}, {'id': 5, 'publish_time': datetime.datetime(2025, 12, 16, 10, 17, 8), 'employee_name': '测试员工API', 'product_name': '保湿精华', 'status': 'success'}] 21:46:23 - article_server - INFO - [SQL结果] 查询完成,返回 1 条记录 21:46:23 - article_server - INFO - [SQL数据] 查询结果: [{'users_total': 2, 'products_total': 1, 'articles_total': 12, 'published_total': 0}] 21:46:23 - article_server - INFO - [SQL结果] 查询完成,返回 1 条记录 21:46:23 - article_server - INFO - [SQL数据] 查询结果: [{'id': 18, 'enterprise_id': 1, 'enterprise_name': '测试企业1号', 'username': '15707023967', 'real_name': '测试员工API', 'email': None, 'phone': '15707023967', 'wechat_openid': None, 'wechat_unionid': None, 'xhs_cookie': '[{"domain":"creator.xiaohongshu.com","expires":1765886300.80173,"httpOnly":true,"name":"acw_tc","path":"/","sameSite":"Lax","secure":false,"value":"0a0d09d017658845007813469ec5670285b8340a360cc4c2201c75df086add"},{"domain":".xiaohongshu.com","expires":1797420519,"httpOnly":false,"name":"xsecappid","path":"/","sameSite":"Lax","secure":false,"value":"ugc"},{"domain":".xiaohongshu.com","expires":1797420501,"httpOnly":false,"name":"a1","path":"/","sameSite":"Lax","secure":false,"value":"19b26eb1f5676nwqq68tzsm1efzwnqb8rd8crbo9150000919444"},{"domain":".xiaohongshu.com","expires":1797420501,"httpOnly":false,"name":"webId","path":"/","sameSite":"Lax","secure":false,"value":"334b292408be369dee3e00cd00c02814"},{"domain":"edith.xiaohongshu.com","expires":1765886302.122995,"httpOnly":true,"name":"acw_tc","path":"/","sameSite":"Lax","secure":false,"value":"0a5085af17658845020951798e0db2aa6b1f683c091ed8d263bdc1b3b0c979"},{"domain":"customer.xiaohongshu.com","expires":1765886302.418581,"httpOnly":true,"name":"acw_tc","path":"/","sameSite":"Lax","secure":false,"value":"0a0d0fba17658845023665490e85c24a0b09d80521793f3b775c036091618b"},{"domain":".xiaohongshu.com","expires":1766143702,"httpOnly":false,"name":"websectiga","path":"/","sameSite":"Lax","secure":false,"value":"10f9a40ba454a07755a08f27ef8194c53637eba4551cf9751c009g9afb564467"},{"domain":".xiaohongshu.com","expires":1765885107,"httpOnly":false,"name":"sec_poison_id","path":"/","sameSite":"Lax","secure":false,"value":"6da615cb-087a-4c5a-9bbb-a9d1e0fc9e8a"},{"domain":".xiaohongshu.com","expires":1800444522.755296,"httpOnly":false,"name":"gid","path":"/","sameSite":"Lax","secure":false,"value":"yjDJKdDJdJFSyjDJKdDyifDl2KWKIEAAKY9uYjyM6ydiuS28EIADYF888jyj4448ifjjW8W4"},{"domain":".xiaohongshu.com","expires":1766489317.637236,"httpOnly":true,"name":"customer-sso-sid","path":"/","sameSite":"Lax","secure":false,"value":"68c517584416253487808513dmgvocd9wjabgnkp"},{"domain":".xiaohongshu.com","expires":1800444518.637453,"httpOnly":true,"name":"x-user-id-creator.xiaohongshu.com","path":"/","sameSite":"Lax","secure":false,"value":"68bc3f6e0000000006025a91"},{"domain":".xiaohongshu.com","expires":1800444518.637597,"httpOnly":true,"name":"customerClientId","path":"/","sameSite":"Lax","secure":false,"value":"089912385389949"},{"domain":".xiaohongshu.com","expires":1768476517.637676,"httpOnly":true,"name":"access-token-creator.xiaohongshu.com","path":"/","sameSite":"Lax","secure":false,"value":"customer.creator.AT-68c517584416253487808514asy0vghqougmrdd3"},{"domain":".xiaohongshu.com","expires":1768476518.637759,"httpOnly":true,"name":"galaxy_creator_session_id","path":"/","sameSite":"Lax","secure":false,"value":"8tDSYD75SNh8bbJhJodtab8gPBMlEAbI1jD6"},{"domain":".xiaohongshu.com","expires":1768476518.637825,"httpOnly":true,"name":"galaxy.creator.beaker.session.id","path":"/","sameSite":"Lax","secure":false,"value":"1765884518568024980624"},{"domain":".xiaohongshu.com","expires":1797420519,"httpOnly":false,"name":"loadts","path":"/","sameSite":"Lax","secure":false,"value":"1765884519319"}]', 'xhs_phone': '17710390289', 'xhs_account': '小红书用户', 'is_bound_xhs': 1, 'bound_at': datetime.datetime(2025, 12, 16, 19, 28, 51), 'department': '测试部', 'role': 'admin', 'status': 'active', 'created_at': datetime.datetime(2025, 12, 12, 19, 7, 24), 'updated_at': datetime.datetime(2025, 12, 16, 19, 28, 51)}] 21:46:23 - article_server - INFO - 获取工作台概览成功 21:46:23 - article_server - INFO - [API响应] GET /api/dashboard/overview - IP: 36.27.52.26 - 状态码: 200 21:46:23 - article_server - INFO - 获取最近发布成功 21:46:23 - article_server - INFO - [API响应] GET /api/dashboard/recent-publishes - IP: 36.27.52.26 - 状态码: 200 21:46:23 - article_server - INFO - [API访问] GET /api/dashboard/hot-products - IP: 36.27.52.26 - User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Sa 21:46:23 - article_server - INFO - [Token验证成功] 用户ID: 18 21:46:23 - article_server - INFO - [获取用户信息] 查询成功, 用户: 15707023967, 角色: admin, 企业: 测试企业1号, IP: 36.27.52.26 21:46:23 - article_server - INFO - [SQL执行] 开始执行查询SQL 21:46:23 - article_server - INFO - [SQL语句] SELECT r.product_id, p.name as product_name, COUNT(*) as publishes, ROUND(COUNT(*) * 100.0 / (SELECT COUNT(*) FROM ai_article_published_records WHERE enterprise_id = %s), 0) as percentage FROM ai_article_published_records r LEFT JOIN ai_products p ON r.product_id = p.id WHERE r.enterprise_id = %s GROUP BY r.product_id, p.name ORDER BY publishes DESC LIMIT %s 21:46:23 - article_server - INFO - [SQL参数] (1, 1, 4) 21:46:23 - article_server - INFO - [SQL执行] 开始执行查询SQL 21:46:23 - article_server - INFO - [SQL语句] SELECT COUNT(*) as month_published FROM ai_article_published_records WHERE enterprise_id = %s AND YEAR(publish_time) = YEAR(CURDATE()) AND MONTH(publish_time) = MONTH(CURDATE()) 21:46:23 - article_server - INFO - [SQL参数] (1,) 21:46:23 - article_server - INFO - [SQL结果] 查询完成,返回 3 条记录 21:46:23 - article_server - INFO - [SQL数据] 查询结果: [{'product_id': 2, 'product_name': '保湿精华', 'publishes': 1, 'percentage': Decimal('33')}, {'product_id': 4, 'product_name': '口红套装', 'publishes': 1, 'percentage': Decimal('33')}, {'product_id': 5, 'product_name': '洗面奶', 'publishes': 1, 'percentage': Decimal('33')}] 21:46:23 - article_server - INFO - [SQL执行] 开始执行插入SQL 21:46:23 - article_server - INFO - [SQL语句] INSERT INTO ai_logs (user_id, action, target_type, target_id, description, ip_address, user_agent, request_data, response_data, status, error_message, created_at) VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, NOW()) 21:46:23 - article_server - INFO - [SQL参数] (18, 'get_user_info', 'user', 18, '查询用户信息: 15707023967', '36.27.52.26', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Safari/537.36', None, None, 'success', None) 21:46:23 - article_server - INFO - 获取热门产品成功 21:46:23 - article_server - INFO - [API响应] GET /api/dashboard/hot-products - IP: 36.27.52.26 - 状态码: 200 21:46:23 - article_server - INFO - [SQL结果] 查询完成,返回 1 条记录 21:46:23 - article_server - INFO - [SQL数据] 查询结果: [{'month_published': 3}] 21:46:23 - article_server - INFO - [SQL结果] 插入完成,新记录ID: 7 21:46:23 - article_server - INFO - [业务日志] 操作: get_user_info | 用户ID: 18 | 目标: user#18 | 状态: success | IP: 36.27.52.26 | 日志ID: 7 21:46:23 - article_server - INFO - [API响应] GET /api/users/info - IP: 36.27.52.26 - 状态码: 200 21:46:23 - article_server - INFO - [SQL执行] 开始执行查询SQL 21:46:23 - article_server - INFO - [SQL语句] SELECT COUNT(*) as last_month_published FROM ai_article_published_records WHERE enterprise_id = %s AND YEAR(publish_time) = YEAR(DATE_SUB(CURDATE(), INTERVAL 1 MONTH)) AND MONTH(publish_time) = MONTH(DATE_SUB(CURDATE(), INTERVAL 1 MONTH)) 21:46:23 - article_server - INFO - [SQL参数] (1,) 21:46:23 - article_server - INFO - [SQL结果] 查询完成,返回 1 条记录 21:46:23 - article_server - INFO - [SQL数据] 查询结果: [{'last_month_published': 0}] 21:46:23 - article_server - INFO - 获取工作台概览成功 21:46:23 - article_server - INFO - [API响应] GET /api/dashboard/overview - IP: 36.27.52.26 - 状态码: 200 21:46:25 - article_server - INFO - [API访问] GET /api/dashboard/overview - IP: 36.27.52.26 - User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Sa 21:46:25 - article_server - INFO - [Token验证成功] 用户ID: 18 21:46:25 - article_server - INFO - [API访问] GET /api/users/info - IP: 36.27.52.26 - User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Sa 21:46:25 - article_server - INFO - [API访问] GET /api/dashboard/hot-products - IP: 36.27.52.26 - User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Sa 21:46:25 - article_server - INFO - [Token验证成功] 用户ID: 18 21:46:25 - article_server - INFO - [获取用户信息] 开始处理请求, IP: 36.27.52.26 21:46:25 - article_server - INFO - [Token验证成功] 用户ID: 18 21:46:25 - article_server - INFO - [获取用户信息] 用户ID: 18, IP: 36.27.52.26 21:46:25 - article_server - INFO - [API访问] GET /api/dashboard/recent-publishes - IP: 36.27.52.26 - User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Sa 21:46:25 - article_server - INFO - [Token验证成功] 用户ID: 18 21:46:25 - article_server - INFO - [SQL执行] 开始执行查询SQL 21:46:25 - article_server - INFO - [SQL语句] SELECT users_total, products_total, articles_total, published_total FROM ai_enterprises WHERE id = %s 21:46:25 - article_server - INFO - [SQL参数] (1,) 21:46:25 - article_server - INFO - [SQL执行] 开始执行查询SQL 21:46:25 - article_server - INFO - [SQL执行] 开始执行查询SQL 21:46:25 - article_server - INFO - [SQL语句] SELECT r.product_id, p.name as product_name, COUNT(*) as publishes, ROUND(COUNT(*) * 100.0 / (SELECT COUNT(*) FROM ai_article_published_records WHERE enterprise_id = %s), 0) as percentage FROM ai_article_published_records r LEFT JOIN ai_products p ON r.product_id = p.id WHERE r.enterprise_id = %s GROUP BY r.product_id, p.name ORDER BY publishes DESC LIMIT %s 21:46:25 - article_server - INFO - [SQL语句] SELECT id, enterprise_id, enterprise_name, username, real_name, email, phone, wechat_openid, wechat_unionid, xhs_cookie, xhs_phone, xhs_account, is_bound_xhs, bound_at, department, role, status, created_at, updated_at FROM ai_users WHERE id = %s AND status != 'deleted' 21:46:25 - article_server - INFO - [SQL参数] (1, 1, 4) 21:46:25 - article_server - INFO - [SQL参数] (18,) 21:46:25 - article_server - INFO - [SQL执行] 开始执行查询SQL 21:46:25 - article_server - INFO - [SQL语句] SELECT r.id, r.publish_time, u.real_name as employee_name, p.name as product_name, 'success' as status FROM ai_article_published_records r LEFT JOIN ai_users u ON r.created_user_id = u.id LEFT JOIN ai_products p ON r.product_id = p.id WHERE r.enterprise_id = %s ORDER BY r.publish_time DESC LIMIT %s 21:46:25 - article_server - INFO - [SQL参数] (1, 5) 21:46:25 - article_server - INFO - [SQL结果] 查询完成,返回 1 条记录 21:46:25 - article_server - INFO - [SQL数据] 查询结果: [{'users_total': 2, 'products_total': 1, 'articles_total': 12, 'published_total': 0}] 21:46:25 - article_server - INFO - [SQL结果] 查询完成,返回 1 条记录 21:46:25 - article_server - INFO - [SQL数据] 查询结果: [{'id': 18, 'enterprise_id': 1, 'enterprise_name': '测试企业1号', 'username': '15707023967', 'real_name': '测试员工API', 'email': None, 'phone': '15707023967', 'wechat_openid': None, 'wechat_unionid': None, 'xhs_cookie': '[{"domain":"creator.xiaohongshu.com","expires":1765886300.80173,"httpOnly":true,"name":"acw_tc","path":"/","sameSite":"Lax","secure":false,"value":"0a0d09d017658845007813469ec5670285b8340a360cc4c2201c75df086add"},{"domain":".xiaohongshu.com","expires":1797420519,"httpOnly":false,"name":"xsecappid","path":"/","sameSite":"Lax","secure":false,"value":"ugc"},{"domain":".xiaohongshu.com","expires":1797420501,"httpOnly":false,"name":"a1","path":"/","sameSite":"Lax","secure":false,"value":"19b26eb1f5676nwqq68tzsm1efzwnqb8rd8crbo9150000919444"},{"domain":".xiaohongshu.com","expires":1797420501,"httpOnly":false,"name":"webId","path":"/","sameSite":"Lax","secure":false,"value":"334b292408be369dee3e00cd00c02814"},{"domain":"edith.xiaohongshu.com","expires":1765886302.122995,"httpOnly":true,"name":"acw_tc","path":"/","sameSite":"Lax","secure":false,"value":"0a5085af17658845020951798e0db2aa6b1f683c091ed8d263bdc1b3b0c979"},{"domain":"customer.xiaohongshu.com","expires":1765886302.418581,"httpOnly":true,"name":"acw_tc","path":"/","sameSite":"Lax","secure":false,"value":"0a0d0fba17658845023665490e85c24a0b09d80521793f3b775c036091618b"},{"domain":".xiaohongshu.com","expires":1766143702,"httpOnly":false,"name":"websectiga","path":"/","sameSite":"Lax","secure":false,"value":"10f9a40ba454a07755a08f27ef8194c53637eba4551cf9751c009g9afb564467"},{"domain":".xiaohongshu.com","expires":1765885107,"httpOnly":false,"name":"sec_poison_id","path":"/","sameSite":"Lax","secure":false,"value":"6da615cb-087a-4c5a-9bbb-a9d1e0fc9e8a"},{"domain":".xiaohongshu.com","expires":1800444522.755296,"httpOnly":false,"name":"gid","path":"/","sameSite":"Lax","secure":false,"value":"yjDJKdDJdJFSyjDJKdDyifDl2KWKIEAAKY9uYjyM6ydiuS28EIADYF888jyj4448ifjjW8W4"},{"domain":".xiaohongshu.com","expires":1766489317.637236,"httpOnly":true,"name":"customer-sso-sid","path":"/","sameSite":"Lax","secure":false,"value":"68c517584416253487808513dmgvocd9wjabgnkp"},{"domain":".xiaohongshu.com","expires":1800444518.637453,"httpOnly":true,"name":"x-user-id-creator.xiaohongshu.com","path":"/","sameSite":"Lax","secure":false,"value":"68bc3f6e0000000006025a91"},{"domain":".xiaohongshu.com","expires":1800444518.637597,"httpOnly":true,"name":"customerClientId","path":"/","sameSite":"Lax","secure":false,"value":"089912385389949"},{"domain":".xiaohongshu.com","expires":1768476517.637676,"httpOnly":true,"name":"access-token-creator.xiaohongshu.com","path":"/","sameSite":"Lax","secure":false,"value":"customer.creator.AT-68c517584416253487808514asy0vghqougmrdd3"},{"domain":".xiaohongshu.com","expires":1768476518.637759,"httpOnly":true,"name":"galaxy_creator_session_id","path":"/","sameSite":"Lax","secure":false,"value":"8tDSYD75SNh8bbJhJodtab8gPBMlEAbI1jD6"},{"domain":".xiaohongshu.com","expires":1768476518.637825,"httpOnly":true,"name":"galaxy.creator.beaker.session.id","path":"/","sameSite":"Lax","secure":false,"value":"1765884518568024980624"},{"domain":".xiaohongshu.com","expires":1797420519,"httpOnly":false,"name":"loadts","path":"/","sameSite":"Lax","secure":false,"value":"1765884519319"}]', 'xhs_phone': '17710390289', 'xhs_account': '小红书用户', 'is_bound_xhs': 1, 'bound_at': datetime.datetime(2025, 12, 16, 19, 28, 51), 'department': '测试部', 'role': 'admin', 'status': 'active', 'created_at': datetime.datetime(2025, 12, 12, 19, 7, 24), 'updated_at': datetime.datetime(2025, 12, 16, 19, 28, 51)}] 21:46:25 - article_server - INFO - [SQL结果] 查询完成,返回 3 条记录 21:46:25 - article_server - INFO - [SQL数据] 查询结果: [{'product_id': 2, 'product_name': '保湿精华', 'publishes': 1, 'percentage': Decimal('33')}, {'product_id': 4, 'product_name': '口红套装', 'publishes': 1, 'percentage': Decimal('33')}, {'product_id': 5, 'product_name': '洗面奶', 'publishes': 1, 'percentage': Decimal('33')}] 21:46:25 - article_server - INFO - [SQL结果] 查询完成,返回 3 条记录 21:46:25 - article_server - INFO - [SQL数据] 查询结果: [{'id': 7, 'publish_time': datetime.datetime(2025, 12, 16, 19, 32, 25), 'employee_name': '测试员工API', 'product_name': '洗面奶', 'status': 'success'}, {'id': 6, 'publish_time': datetime.datetime(2025, 12, 16, 11, 55, 56), 'employee_name': '测试员工API', 'product_name': '口红套装', 'status': 'success'}, {'id': 5, 'publish_time': datetime.datetime(2025, 12, 16, 10, 17, 8), 'employee_name': '测试员工API', 'product_name': '保湿精华', 'status': 'success'}] 21:46:25 - article_server - INFO - 获取最近发布成功 21:46:25 - article_server - INFO - [获取用户信息] 查询成功, 用户: 15707023967, 角色: admin, 企业: 测试企业1号, IP: 36.27.52.26 21:46:25 - article_server - INFO - [API响应] GET /api/dashboard/recent-publishes - IP: 36.27.52.26 - 状态码: 200 21:46:25 - article_server - INFO - 获取热门产品成功 21:46:25 - article_server - INFO - [API响应] GET /api/dashboard/hot-products - IP: 36.27.52.26 - 状态码: 200 21:46:25 - article_server - INFO - [SQL执行] 开始执行查询SQL 21:46:25 - article_server - INFO - [SQL语句] SELECT COUNT(*) as month_published FROM ai_article_published_records WHERE enterprise_id = %s AND YEAR(publish_time) = YEAR(CURDATE()) AND MONTH(publish_time) = MONTH(CURDATE()) 21:46:25 - article_server - INFO - [SQL参数] (1,) 21:46:25 - article_server - INFO - [SQL执行] 开始执行插入SQL 21:46:25 - article_server - INFO - [SQL语句] INSERT INTO ai_logs (user_id, action, target_type, target_id, description, ip_address, user_agent, request_data, response_data, status, error_message, created_at) VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, NOW()) 21:46:25 - article_server - INFO - [SQL参数] (18, 'get_user_info', 'user', 18, '查询用户信息: 15707023967', '36.27.52.26', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Safari/537.36', None, None, 'success', None) 21:46:25 - article_server - INFO - [SQL结果] 查询完成,返回 1 条记录 21:46:25 - article_server - INFO - [SQL数据] 查询结果: [{'month_published': 3}] 21:46:25 - article_server - INFO - [SQL结果] 插入完成,新记录ID: 8 21:46:25 - article_server - INFO - [业务日志] 操作: get_user_info | 用户ID: 18 | 目标: user#18 | 状态: success | IP: 36.27.52.26 | 日志ID: 8 21:46:25 - article_server - INFO - [API响应] GET /api/users/info - IP: 36.27.52.26 - 状态码: 200 21:46:25 - article_server - INFO - [SQL执行] 开始执行查询SQL 21:46:25 - article_server - INFO - [SQL语句] SELECT COUNT(*) as last_month_published FROM ai_article_published_records WHERE enterprise_id = %s AND YEAR(publish_time) = YEAR(DATE_SUB(CURDATE(), INTERVAL 1 MONTH)) AND MONTH(publish_time) = MONTH(DATE_SUB(CURDATE(), INTERVAL 1 MONTH)) 21:46:25 - article_server - INFO - [SQL参数] (1,) 21:46:25 - article_server - INFO - [SQL结果] 查询完成,返回 1 条记录 21:46:25 - article_server - INFO - [SQL数据] 查询结果: [{'last_month_published': 0}] 21:46:25 - article_server - INFO - 获取工作台概览成功 21:46:25 - article_server - INFO - [API响应] GET /api/dashboard/overview - IP: 36.27.52.26 - 状态码: 200 21:46:35 - article_server - INFO - [API访问] POST /api/auth/login - IP: 36.27.52.26 - User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Sa 21:46:35 - article_server - INFO - [用户登录] 开始处理登录请求, IP: 36.27.52.26 21:46:35 - article_server - INFO - [用户登录] 收到登录请求, 账号: 13621242430, IP: 36.27.52.26 21:46:35 - article_server - INFO - [用户登录] 开始在ai_users表查询用户, 账号: 13621242430 21:46:36 - article_server - INFO - [SQL执行] 开始执行查询SQL 21:46:36 - article_server - INFO - [SQL语句] SELECT id, enterprise_id, enterprise_name, username, phone, password, real_name, role, status, is_bound_xhs, xhs_account FROM ai_users WHERE (phone = %s OR username = %s) AND status = 'active' 21:46:36 - article_server - INFO - [SQL参数] ('13621242430', '13621242430') 21:46:36 - article_server - INFO - [SQL结果] 查询完成,返回 2 条记录 21:46:36 - article_server - INFO - [SQL数据] 查询结果: [{'id': 4, 'enterprise_id': 1, 'enterprise_name': 'rwl企业4号', 'username': 'user004', 'phone': '13621242430', 'password': '256dfd66db93b7ce0d1e260b01971dffaafa1dadca903ed16defc4fba24be83b', 'real_name': '饶文龙', 'role': 'enterprise', 'status': 'active', 'is_bound_xhs': 1, 'xhs_account': '小红书用户4'}, {'id': 10, 'enterprise_id': 10, 'enterprise_name': '测试企业10号', 'username': 'user010', 'phone': '13621242430', 'password': '256dfd66db93b7ce0d1e260b01971dffaafa1dadca903ed16defc4fba24be83b', 'real_name': '测试用户10', 'role': 'admin', 'status': 'active', 'is_bound_xhs': 1, 'xhs_account': '小红书用户'}] 21:46:36 - article_server - INFO - [用户登录] 查询到用户信息, 用户名: user004, 角色: enterprise, 企业: rwl企业4号, 企业ID: 1 21:46:36 - article_server - INFO - [用户登录] 开始验证密码, 账号: 13621242430 21:46:36 - article_server - WARNING - [用户登录失败] 密码错误: 13621242430, 用户名: user004, IP: 36.27.52.26 21:46:36 - article_server - INFO - [API响应] POST /api/auth/login - IP: 36.27.52.26 - 状态码: 401 21:46:36 - article_server - INFO - [API访问] POST /api/auth/employee/login - IP: 36.27.52.26 - User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Sa 21:46:36 - article_server - INFO - [员工登录] 开始处理员工登录请求, IP: 36.27.52.26 21:46:36 - article_server - INFO - [员工登录] 收到登录请求, 手机号: 13621242430, IP: 36.27.52.26 21:46:36 - article_server - INFO - [员工登录] 开始查询员工信息, 手机号: 13621242430 21:46:36 - article_server - INFO - [SQL执行] 开始执行查询SQL 21:46:36 - article_server - INFO - [SQL语句] SELECT u.id, u.enterprise_id, u.real_name, u.phone, u.password, u.role, u.status, u.is_bound_xhs, u.xhs_account, e.name as enterprise_name FROM ai_users u LEFT JOIN ai_enterprises e ON u.enterprise_id = e.id WHERE u.phone = %s 21:46:36 - article_server - INFO - [SQL参数] ('13621242430',) 21:46:36 - article_server - INFO - [SQL结果] 查询完成,返回 2 条记录 21:46:36 - article_server - INFO - [SQL数据] 查询结果: [{'id': 4, 'enterprise_id': 1, 'real_name': '饶文龙', 'phone': '13621242430', 'password': '256dfd66db93b7ce0d1e260b01971dffaafa1dadca903ed16defc4fba24be83b', 'role': 'enterprise', 'status': 'active', 'is_bound_xhs': 1, 'xhs_account': '小红书用户4', 'enterprise_name': '乐航'}, {'id': 10, 'enterprise_id': 10, 'real_name': '测试用户10', 'phone': '13621242430', 'password': '256dfd66db93b7ce0d1e260b01971dffaafa1dadca903ed16defc4fba24be83b', 'role': 'admin', 'status': 'active', 'is_bound_xhs': 1, 'xhs_account': '小红书用户', 'enterprise_name': '测试企业10号'}] 21:46:36 - article_server - INFO - [员工登录] 查询到员工信息, 姓名: 饶文龙, 角色: enterprise, 企业: 乐航, 状态: active, 绑定小红书: 1 21:46:36 - article_server - INFO - [员工登录] 开始验证密码, 手机号: 13621242430, 姓名: 饶文龙 21:46:36 - article_server - WARNING - [员工登录失败] 密码错误: 13621242430, 姓名: 饶文龙, IP: 36.27.52.26 21:46:36 - article_server - INFO - [API响应] POST /api/auth/employee/login - IP: 36.27.52.26 - 状态码: 401 21:47:18 - article_server - INFO - [API访问] POST /api/auth/login - IP: 36.27.52.26 - User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Sa 21:47:18 - article_server - INFO - [用户登录] 开始处理登录请求, IP: 36.27.52.26 21:47:18 - article_server - INFO - [用户登录] 收到登录请求, 账号: 13621242430, IP: 36.27.52.26 21:47:18 - article_server - INFO - [用户登录] 开始在ai_users表查询用户, 账号: 13621242430 21:47:18 - article_server - INFO - [SQL执行] 开始执行查询SQL 21:47:18 - article_server - INFO - [SQL语句] SELECT id, enterprise_id, enterprise_name, username, phone, password, real_name, role, status, is_bound_xhs, xhs_account FROM ai_users WHERE (phone = %s OR username = %s) AND status = 'active' 21:47:18 - article_server - INFO - [SQL参数] ('13621242430', '13621242430') 21:47:18 - article_server - INFO - [SQL结果] 查询完成,返回 2 条记录 21:47:18 - article_server - INFO - [SQL数据] 查询结果: [{'id': 4, 'enterprise_id': 1, 'enterprise_name': 'rwl企业4号', 'username': 'user004', 'phone': '13621242430', 'password': '240be518fabd2724ddb6f04eeb1da5967448d7e831c08c8fa822809f74c720a9', 'real_name': '饶文龙', 'role': 'enterprise', 'status': 'active', 'is_bound_xhs': 1, 'xhs_account': '小红书用户4'}, {'id': 10, 'enterprise_id': 10, 'enterprise_name': '测试企业10号', 'username': 'user010', 'phone': '13621242430', 'password': '256dfd66db93b7ce0d1e260b01971dffaafa1dadca903ed16defc4fba24be83b', 'real_name': '测试用户10', 'role': 'admin', 'status': 'active', 'is_bound_xhs': 1, 'xhs_account': '小红书用户'}] 21:47:18 - article_server - INFO - [用户登录] 查询到用户信息, 用户名: user004, 角色: enterprise, 企业: rwl企业4号, 企业ID: 1 21:47:18 - article_server - INFO - [用户登录] 开始验证密码, 账号: 13621242430 21:47:18 - article_server - INFO - [用户登录] 密码验证成功, 用户名: user004, 角色: enterprise 21:47:18 - article_server - INFO - [用户登录] 检测到企业角色, 开始获取企业详细信息, 企业ID: 1 21:47:18 - article_server - INFO - [SQL执行] 开始执行查询SQL 21:47:18 - article_server - INFO - [SQL语句] SELECT id, enterprise_ID, name, short_name, phone, email, status, users_total, products_total, articles_total, published_total FROM ai_enterprises WHERE id = %s AND status = 'active' 21:47:18 - article_server - INFO - [SQL参数] (1,) 21:47:18 - article_server - INFO - [SQL结果] 查询完成,返回 1 条记录 21:47:18 - article_server - INFO - [SQL数据] 查询结果: [{'id': 1, 'enterprise_ID': 'ENT-2024-0001', 'name': '乐航', 'short_name': '企业1222', 'phone': '13800138001', 'email': 'raowenlong@vizee.cn', 'status': 'active', 'users_total': 2, 'products_total': 1, 'articles_total': 12, 'published_total': 0}] 21:47:18 - article_server - INFO - [用户登录] 获取企业信息成功, 企业名称: 乐航, 企业编号: ENT-2024-0001 21:47:18 - article_server - INFO - [用户登录] 开始生成token, 用户ID: 4, 角色: enterprise 21:47:18 - article_server - INFO - [Token生成] 用户: 13621242430, ID: 4, 角色: enterprise 21:47:18 - article_server - INFO - [用户登录成功] Token生成成功, 用户: user004, 角色: enterprise, 企业: rwl企业4号, IP: 36.27.52.26 21:47:18 - article_server - INFO - [API响应] POST /api/auth/login - IP: 36.27.52.26 - 状态码: 200 21:47:18 - article_server - INFO - [API访问] GET /api/users/info - IP: 36.27.52.26 - User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Sa 21:47:18 - article_server - INFO - [Token验证成功] 用户ID: 4 21:47:18 - article_server - INFO - [获取用户信息] 开始处理请求, IP: 36.27.52.26 21:47:18 - article_server - INFO - [获取用户信息] 用户ID: 4, IP: 36.27.52.26 21:47:18 - article_server - INFO - [API访问] GET /api/dashboard/overview - IP: 36.27.52.26 - User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Sa 21:47:18 - article_server - INFO - [Token验证成功] 用户ID: 4 21:47:18 - article_server - INFO - [API访问] GET /api/dashboard/recent-publishes - IP: 36.27.52.26 - User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Sa 21:47:18 - article_server - INFO - [Token验证成功] 用户ID: 4 21:47:18 - article_server - INFO - [SQL执行] 开始执行查询SQL 21:47:18 - article_server - INFO - [SQL语句] SELECT id, enterprise_id, enterprise_name, username, real_name, email, phone, wechat_openid, wechat_unionid, xhs_cookie, xhs_phone, xhs_account, is_bound_xhs, bound_at, department, role, status, created_at, updated_at FROM ai_users WHERE id = %s AND status != 'deleted' 21:47:18 - article_server - INFO - [SQL参数] (4,) 21:47:19 - article_server - INFO - [SQL执行] 开始执行查询SQL 21:47:19 - article_server - INFO - [SQL语句] SELECT users_total, products_total, articles_total, published_total FROM ai_enterprises WHERE id = %s 21:47:19 - article_server - INFO - [SQL参数] (1,) 21:47:19 - article_server - INFO - [SQL执行] 开始执行查询SQL 21:47:19 - article_server - INFO - [SQL语句] SELECT r.id, r.publish_time, u.real_name as employee_name, p.name as product_name, 'success' as status FROM ai_article_published_records r LEFT JOIN ai_users u ON r.created_user_id = u.id LEFT JOIN ai_products p ON r.product_id = p.id WHERE r.enterprise_id = %s ORDER BY r.publish_time DESC LIMIT %s 21:47:19 - article_server - INFO - [SQL参数] (1, 5) 21:47:19 - article_server - INFO - [SQL结果] 查询完成,返回 1 条记录 21:47:19 - article_server - INFO - [SQL数据] 查询结果: [{'id': 4, 'enterprise_id': 1, 'enterprise_name': 'rwl企业4号', 'username': 'user004', 'real_name': '饶文龙', 'email': None, 'phone': '13621242430', 'wechat_openid': None, 'wechat_unionid': None, 'xhs_cookie': None, 'xhs_phone': '', 'xhs_account': '小红书用户4', 'is_bound_xhs': 1, 'bound_at': None, 'department': '技术部', 'role': 'enterprise', 'status': 'active', 'created_at': datetime.datetime(2025, 12, 12, 16, 58, 22), 'updated_at': datetime.datetime(2025, 12, 16, 13, 47, 4)}] 21:47:19 - article_server - INFO - [SQL结果] 查询完成,返回 1 条记录 21:47:19 - article_server - INFO - [SQL数据] 查询结果: [{'users_total': 2, 'products_total': 1, 'articles_total': 12, 'published_total': 0}] 21:47:19 - article_server - INFO - [SQL结果] 查询完成,返回 3 条记录 21:47:19 - article_server - INFO - [SQL数据] 查询结果: [{'id': 7, 'publish_time': datetime.datetime(2025, 12, 16, 19, 32, 25), 'employee_name': '测试员工API', 'product_name': '洗面奶', 'status': 'success'}, {'id': 6, 'publish_time': datetime.datetime(2025, 12, 16, 11, 55, 56), 'employee_name': '测试员工API', 'product_name': '口红套装', 'status': 'success'}, {'id': 5, 'publish_time': datetime.datetime(2025, 12, 16, 10, 17, 8), 'employee_name': '测试员工API', 'product_name': '保湿精华', 'status': 'success'}] 21:47:19 - article_server - INFO - [获取用户信息] 查询成功, 用户: user004, 角色: enterprise, 企业: rwl企业4号, IP: 36.27.52.26 21:47:19 - article_server - INFO - 获取最近发布成功 21:47:19 - article_server - INFO - [API响应] GET /api/dashboard/recent-publishes - IP: 36.27.52.26 - 状态码: 200 21:47:19 - article_server - INFO - [SQL执行] 开始执行查询SQL 21:47:19 - article_server - INFO - [SQL语句] SELECT COUNT(*) as month_published FROM ai_article_published_records WHERE enterprise_id = %s AND YEAR(publish_time) = YEAR(CURDATE()) AND MONTH(publish_time) = MONTH(CURDATE()) 21:47:19 - article_server - INFO - [SQL参数] (1,) 21:47:19 - article_server - INFO - [API访问] GET /api/dashboard/hot-products - IP: 36.27.52.26 - User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Sa 21:47:19 - article_server - INFO - [SQL执行] 开始执行插入SQL 21:47:19 - article_server - INFO - [Token验证成功] 用户ID: 4 21:47:19 - article_server - INFO - [SQL语句] INSERT INTO ai_logs (user_id, action, target_type, target_id, description, ip_address, user_agent, request_data, response_data, status, error_message, created_at) VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, NOW()) 21:47:19 - article_server - INFO - [SQL参数] (4, 'get_user_info', 'user', 4, '查询用户信息: user004', '36.27.52.26', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Safari/537.36', None, None, 'success', None) 21:47:19 - article_server - INFO - [SQL结果] 查询完成,返回 1 条记录 21:47:19 - article_server - INFO - [SQL数据] 查询结果: [{'month_published': 3}] 21:47:19 - article_server - INFO - [SQL执行] 开始执行查询SQL 21:47:19 - article_server - INFO - [SQL语句] SELECT r.product_id, p.name as product_name, COUNT(*) as publishes, ROUND(COUNT(*) * 100.0 / (SELECT COUNT(*) FROM ai_article_published_records WHERE enterprise_id = %s), 0) as percentage FROM ai_article_published_records r LEFT JOIN ai_products p ON r.product_id = p.id WHERE r.enterprise_id = %s GROUP BY r.product_id, p.name ORDER BY publishes DESC LIMIT %s 21:47:19 - article_server - INFO - [SQL参数] (1, 1, 4) 21:47:19 - article_server - INFO - [SQL结果] 插入完成,新记录ID: 9 21:47:19 - article_server - INFO - [SQL结果] 查询完成,返回 3 条记录 21:47:19 - article_server - INFO - [SQL数据] 查询结果: [{'product_id': 2, 'product_name': '保湿精华', 'publishes': 1, 'percentage': Decimal('33')}, {'product_id': 4, 'product_name': '口红套装', 'publishes': 1, 'percentage': Decimal('33')}, {'product_id': 5, 'product_name': '洗面奶', 'publishes': 1, 'percentage': Decimal('33')}] 21:47:19 - article_server - INFO - [业务日志] 操作: get_user_info | 用户ID: 4 | 目标: user#4 | 状态: success | IP: 36.27.52.26 | 日志ID: 9 21:47:19 - article_server - INFO - [API响应] GET /api/users/info - IP: 36.27.52.26 - 状态码: 200 21:47:19 - article_server - INFO - [SQL执行] 开始执行查询SQL 21:47:19 - article_server - INFO - [SQL语句] SELECT COUNT(*) as last_month_published FROM ai_article_published_records WHERE enterprise_id = %s AND YEAR(publish_time) = YEAR(DATE_SUB(CURDATE(), INTERVAL 1 MONTH)) AND MONTH(publish_time) = MONTH(DATE_SUB(CURDATE(), INTERVAL 1 MONTH)) 21:47:19 - article_server - INFO - [SQL参数] (1,) 21:47:19 - article_server - INFO - 获取热门产品成功 21:47:19 - article_server - INFO - [API响应] GET /api/dashboard/hot-products - IP: 36.27.52.26 - 状态码: 200 21:47:19 - article_server - INFO - [SQL结果] 查询完成,返回 1 条记录 21:47:19 - article_server - INFO - [SQL数据] 查询结果: [{'last_month_published': 0}] 21:47:19 - article_server - INFO - 获取工作台概览成功 21:47:19 - article_server - INFO - [API响应] GET /api/dashboard/overview - IP: 36.27.52.26 - 状态码: 200 21:47:20 - article_server - INFO - [API访问] GET /api/dashboard/recent-publishes - IP: 36.27.52.26 - User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Sa 21:47:20 - article_server - INFO - [API访问] GET /api/dashboard/overview - IP: 36.27.52.26 - User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Sa 21:47:20 - article_server - INFO - [Token验证成功] 用户ID: 4 21:47:20 - article_server - INFO - [Token验证成功] 用户ID: 4 21:47:20 - article_server - INFO - [API访问] GET /api/dashboard/hot-products - IP: 36.27.52.26 - User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Sa 21:47:20 - article_server - INFO - [API访问] GET /api/users/info - IP: 36.27.52.26 - User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Sa 21:47:20 - article_server - INFO - [Token验证成功] 用户ID: 4 21:47:20 - article_server - INFO - [Token验证成功] 用户ID: 4 21:47:20 - article_server - INFO - [获取用户信息] 开始处理请求, IP: 36.27.52.26 21:47:20 - article_server - INFO - [获取用户信息] 用户ID: 4, IP: 36.27.52.26 21:47:20 - article_server - INFO - [SQL执行] 开始执行查询SQL 21:47:20 - article_server - INFO - [SQL语句] SELECT r.id, r.publish_time, u.real_name as employee_name, p.name as product_name, 'success' as status FROM ai_article_published_records r LEFT JOIN ai_users u ON r.created_user_id = u.id LEFT JOIN ai_products p ON r.product_id = p.id WHERE r.enterprise_id = %s ORDER BY r.publish_time DESC LIMIT %s 21:47:20 - article_server - INFO - [SQL参数] (1, 5) 21:47:20 - article_server - INFO - [SQL执行] 开始执行查询SQL 21:47:20 - article_server - INFO - [SQL语句] SELECT users_total, products_total, articles_total, published_total FROM ai_enterprises WHERE id = %s 21:47:20 - article_server - INFO - [SQL参数] (1,) 21:47:20 - article_server - INFO - [SQL执行] 开始执行查询SQL 21:47:20 - article_server - INFO - [SQL语句] SELECT id, enterprise_id, enterprise_name, username, real_name, email, phone, wechat_openid, wechat_unionid, xhs_cookie, xhs_phone, xhs_account, is_bound_xhs, bound_at, department, role, status, created_at, updated_at FROM ai_users WHERE id = %s AND status != 'deleted' 21:47:20 - article_server - INFO - [SQL参数] (4,) 21:47:20 - article_server - INFO - [SQL执行] 开始执行查询SQL 21:47:20 - article_server - INFO - [SQL语句] SELECT r.product_id, p.name as product_name, COUNT(*) as publishes, ROUND(COUNT(*) * 100.0 / (SELECT COUNT(*) FROM ai_article_published_records WHERE enterprise_id = %s), 0) as percentage FROM ai_article_published_records r LEFT JOIN ai_products p ON r.product_id = p.id WHERE r.enterprise_id = %s GROUP BY r.product_id, p.name ORDER BY publishes DESC LIMIT %s 21:47:20 - article_server - INFO - [SQL参数] (1, 1, 4) 21:47:20 - article_server - INFO - [SQL结果] 查询完成,返回 3 条记录 21:47:20 - article_server - INFO - [SQL数据] 查询结果: [{'id': 7, 'publish_time': datetime.datetime(2025, 12, 16, 19, 32, 25), 'employee_name': '测试员工API', 'product_name': '洗面奶', 'status': 'success'}, {'id': 6, 'publish_time': datetime.datetime(2025, 12, 16, 11, 55, 56), 'employee_name': '测试员工API', 'product_name': '口红套装', 'status': 'success'}, {'id': 5, 'publish_time': datetime.datetime(2025, 12, 16, 10, 17, 8), 'employee_name': '测试员工API', 'product_name': '保湿精华', 'status': 'success'}] 21:47:20 - article_server - INFO - [SQL结果] 查询完成,返回 1 条记录 21:47:20 - article_server - INFO - [SQL数据] 查询结果: [{'id': 4, 'enterprise_id': 1, 'enterprise_name': 'rwl企业4号', 'username': 'user004', 'real_name': '饶文龙', 'email': None, 'phone': '13621242430', 'wechat_openid': None, 'wechat_unionid': None, 'xhs_cookie': None, 'xhs_phone': '', 'xhs_account': '小红书用户4', 'is_bound_xhs': 1, 'bound_at': None, 'department': '技术部', 'role': 'enterprise', 'status': 'active', 'created_at': datetime.datetime(2025, 12, 12, 16, 58, 22), 'updated_at': datetime.datetime(2025, 12, 16, 13, 47, 4)}] 21:47:20 - article_server - INFO - [SQL结果] 查询完成,返回 1 条记录 21:47:20 - article_server - INFO - [SQL数据] 查询结果: [{'users_total': 2, 'products_total': 1, 'articles_total': 12, 'published_total': 0}] 21:47:20 - article_server - INFO - [SQL结果] 查询完成,返回 3 条记录 21:47:20 - article_server - INFO - [SQL数据] 查询结果: [{'product_id': 2, 'product_name': '保湿精华', 'publishes': 1, 'percentage': Decimal('33')}, {'product_id': 4, 'product_name': '口红套装', 'publishes': 1, 'percentage': Decimal('33')}, {'product_id': 5, 'product_name': '洗面奶', 'publishes': 1, 'percentage': Decimal('33')}] 21:47:20 - article_server - INFO - [获取用户信息] 查询成功, 用户: user004, 角色: enterprise, 企业: rwl企业4号, IP: 36.27.52.26 21:47:20 - article_server - INFO - 获取最近发布成功 21:47:20 - article_server - INFO - [API响应] GET /api/dashboard/recent-publishes - IP: 36.27.52.26 - 状态码: 200 21:47:21 - article_server - INFO - 获取热门产品成功 21:47:21 - article_server - INFO - [API响应] GET /api/dashboard/hot-products - IP: 36.27.52.26 - 状态码: 200 21:47:21 - article_server - INFO - [SQL执行] 开始执行插入SQL 21:47:21 - article_server - INFO - [SQL语句] INSERT INTO ai_logs (user_id, action, target_type, target_id, description, ip_address, user_agent, request_data, response_data, status, error_message, created_at) VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, NOW()) 21:47:21 - article_server - INFO - [SQL参数] (4, 'get_user_info', 'user', 4, '查询用户信息: user004', '36.27.52.26', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Safari/537.36', None, None, 'success', None) 21:47:21 - article_server - INFO - [SQL执行] 开始执行查询SQL 21:47:21 - article_server - INFO - [SQL语句] SELECT COUNT(*) as month_published FROM ai_article_published_records WHERE enterprise_id = %s AND YEAR(publish_time) = YEAR(CURDATE()) AND MONTH(publish_time) = MONTH(CURDATE()) 21:47:21 - article_server - INFO - [SQL参数] (1,) 21:47:21 - article_server - INFO - [SQL结果] 插入完成,新记录ID: 10 21:47:21 - article_server - INFO - [SQL结果] 查询完成,返回 1 条记录 21:47:21 - article_server - INFO - [SQL数据] 查询结果: [{'month_published': 3}] 21:47:21 - article_server - INFO - [业务日志] 操作: get_user_info | 用户ID: 4 | 目标: user#4 | 状态: success | IP: 36.27.52.26 | 日志ID: 10 21:47:21 - article_server - INFO - [API响应] GET /api/users/info - IP: 36.27.52.26 - 状态码: 200 21:47:21 - article_server - INFO - [SQL执行] 开始执行查询SQL 21:47:21 - article_server - INFO - [SQL语句] SELECT COUNT(*) as last_month_published FROM ai_article_published_records WHERE enterprise_id = %s AND YEAR(publish_time) = YEAR(DATE_SUB(CURDATE(), INTERVAL 1 MONTH)) AND MONTH(publish_time) = MONTH(DATE_SUB(CURDATE(), INTERVAL 1 MONTH)) 21:47:21 - article_server - INFO - [SQL参数] (1,) 21:47:21 - article_server - INFO - [SQL结果] 查询完成,返回 1 条记录 21:47:21 - article_server - INFO - [SQL数据] 查询结果: [{'last_month_published': 0}] 21:47:21 - article_server - INFO - 获取工作台概览成功 21:47:21 - article_server - INFO - [API响应] GET /api/dashboard/overview - IP: 36.27.52.26 - 状态码: 200 21:47:21 - article_server - INFO - [API访问] GET /api/dashboard/overview - IP: 36.27.52.26 - User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Sa 21:47:21 - article_server - INFO - [Token验证成功] 用户ID: 4 21:47:21 - article_server - INFO - [API访问] GET /api/users/info - IP: 36.27.52.26 - User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Sa 21:47:21 - article_server - INFO - [Token验证成功] 用户ID: 4 21:47:21 - article_server - INFO - [获取用户信息] 开始处理请求, IP: 36.27.52.26 21:47:21 - article_server - INFO - [获取用户信息] 用户ID: 4, IP: 36.27.52.26 21:47:21 - article_server - INFO - [API访问] GET /api/dashboard/recent-publishes - IP: 36.27.52.26 - User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Sa 21:47:21 - article_server - INFO - [API访问] GET /api/dashboard/hot-products - IP: 36.27.52.26 - User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Sa 21:47:21 - article_server - INFO - [Token验证成功] 用户ID: 4 21:47:21 - article_server - INFO - [Token验证成功] 用户ID: 4 21:47:21 - article_server - INFO - [SQL执行] 开始执行查询SQL 21:47:21 - article_server - INFO - [SQL语句] SELECT id, enterprise_id, enterprise_name, username, real_name, email, phone, wechat_openid, wechat_unionid, xhs_cookie, xhs_phone, xhs_account, is_bound_xhs, bound_at, department, role, status, created_at, updated_at FROM ai_users WHERE id = %s AND status != 'deleted' 21:47:21 - article_server - INFO - [SQL参数] (4,) 21:47:21 - article_server - INFO - [SQL执行] 开始执行查询SQL 21:47:21 - article_server - INFO - [SQL语句] SELECT users_total, products_total, articles_total, published_total FROM ai_enterprises WHERE id = %s 21:47:21 - article_server - INFO - [SQL参数] (1,) 21:47:21 - article_server - INFO - [SQL执行] 开始执行查询SQL 21:47:21 - article_server - INFO - [SQL语句] SELECT r.product_id, p.name as product_name, COUNT(*) as publishes, ROUND(COUNT(*) * 100.0 / (SELECT COUNT(*) FROM ai_article_published_records WHERE enterprise_id = %s), 0) as percentage FROM ai_article_published_records r LEFT JOIN ai_products p ON r.product_id = p.id WHERE r.enterprise_id = %s GROUP BY r.product_id, p.name ORDER BY publishes DESC LIMIT %s 21:47:21 - article_server - INFO - [SQL参数] (1, 1, 4) 21:47:21 - article_server - INFO - [SQL执行] 开始执行查询SQL 21:47:21 - article_server - INFO - [SQL语句] SELECT r.id, r.publish_time, u.real_name as employee_name, p.name as product_name, 'success' as status FROM ai_article_published_records r LEFT JOIN ai_users u ON r.created_user_id = u.id LEFT JOIN ai_products p ON r.product_id = p.id WHERE r.enterprise_id = %s ORDER BY r.publish_time DESC LIMIT %s 21:47:21 - article_server - INFO - [SQL参数] (1, 5) 21:47:21 - article_server - INFO - [SQL结果] 查询完成,返回 1 条记录 21:47:21 - article_server - INFO - [SQL数据] 查询结果: [{'id': 4, 'enterprise_id': 1, 'enterprise_name': 'rwl企业4号', 'username': 'user004', 'real_name': '饶文龙', 'email': None, 'phone': '13621242430', 'wechat_openid': None, 'wechat_unionid': None, 'xhs_cookie': None, 'xhs_phone': '', 'xhs_account': '小红书用户4', 'is_bound_xhs': 1, 'bound_at': None, 'department': '技术部', 'role': 'enterprise', 'status': 'active', 'created_at': datetime.datetime(2025, 12, 12, 16, 58, 22), 'updated_at': datetime.datetime(2025, 12, 16, 13, 47, 4)}] 21:47:21 - article_server - INFO - [SQL结果] 查询完成,返回 1 条记录 21:47:21 - article_server - INFO - [SQL数据] 查询结果: [{'users_total': 2, 'products_total': 1, 'articles_total': 12, 'published_total': 0}] 21:47:21 - article_server - INFO - [SQL结果] 查询完成,返回 3 条记录 21:47:21 - article_server - INFO - [SQL数据] 查询结果: [{'product_id': 2, 'product_name': '保湿精华', 'publishes': 1, 'percentage': Decimal('33')}, {'product_id': 4, 'product_name': '口红套装', 'publishes': 1, 'percentage': Decimal('33')}, {'product_id': 5, 'product_name': '洗面奶', 'publishes': 1, 'percentage': Decimal('33')}] 21:47:21 - article_server - INFO - [SQL结果] 查询完成,返回 3 条记录 21:47:21 - article_server - INFO - [SQL数据] 查询结果: [{'id': 7, 'publish_time': datetime.datetime(2025, 12, 16, 19, 32, 25), 'employee_name': '测试员工API', 'product_name': '洗面奶', 'status': 'success'}, {'id': 6, 'publish_time': datetime.datetime(2025, 12, 16, 11, 55, 56), 'employee_name': '测试员工API', 'product_name': '口红套装', 'status': 'success'}, {'id': 5, 'publish_time': datetime.datetime(2025, 12, 16, 10, 17, 8), 'employee_name': '测试员工API', 'product_name': '保湿精华', 'status': 'success'}] 21:47:21 - article_server - INFO - [获取用户信息] 查询成功, 用户: user004, 角色: enterprise, 企业: rwl企业4号, IP: 36.27.52.26 21:47:21 - article_server - INFO - 获取热门产品成功 21:47:21 - article_server - INFO - [API响应] GET /api/dashboard/hot-products - IP: 36.27.52.26 - 状态码: 200 21:47:21 - article_server - INFO - [SQL执行] 开始执行插入SQL 21:47:21 - article_server - INFO - [SQL语句] INSERT INTO ai_logs (user_id, action, target_type, target_id, description, ip_address, user_agent, request_data, response_data, status, error_message, created_at) VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, NOW()) 21:47:21 - article_server - INFO - [SQL参数] (4, 'get_user_info', 'user', 4, '查询用户信息: user004', '36.27.52.26', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Safari/537.36', None, None, 'success', None) 21:47:21 - article_server - INFO - 获取最近发布成功 21:47:21 - article_server - INFO - [API响应] GET /api/dashboard/recent-publishes - IP: 36.27.52.26 - 状态码: 200 21:47:21 - article_server - INFO - [SQL执行] 开始执行查询SQL 21:47:21 - article_server - INFO - [SQL语句] SELECT COUNT(*) as month_published FROM ai_article_published_records WHERE enterprise_id = %s AND YEAR(publish_time) = YEAR(CURDATE()) AND MONTH(publish_time) = MONTH(CURDATE()) 21:47:21 - article_server - INFO - [SQL参数] (1,) 21:47:21 - article_server - INFO - [SQL结果] 插入完成,新记录ID: 11 21:47:21 - article_server - INFO - [SQL结果] 查询完成,返回 1 条记录 21:47:21 - article_server - INFO - [SQL数据] 查询结果: [{'month_published': 3}] 21:47:21 - article_server - INFO - [业务日志] 操作: get_user_info | 用户ID: 4 | 目标: user#4 | 状态: success | IP: 36.27.52.26 | 日志ID: 11 21:47:21 - article_server - INFO - [API响应] GET /api/users/info - IP: 36.27.52.26 - 状态码: 200 21:47:21 - article_server - INFO - [SQL执行] 开始执行查询SQL 21:47:21 - article_server - INFO - [SQL语句] SELECT COUNT(*) as last_month_published FROM ai_article_published_records WHERE enterprise_id = %s AND YEAR(publish_time) = YEAR(DATE_SUB(CURDATE(), INTERVAL 1 MONTH)) AND MONTH(publish_time) = MONTH(DATE_SUB(CURDATE(), INTERVAL 1 MONTH)) 21:47:21 - article_server - INFO - [SQL参数] (1,) 21:47:21 - article_server - INFO - [API访问] GET /api/dashboard/overview - IP: 36.27.52.26 - User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Sa 21:47:21 - article_server - INFO - [Token验证成功] 用户ID: 4 21:47:21 - article_server - INFO - [API访问] GET /api/users/info - IP: 36.27.52.26 - User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Sa 21:47:21 - article_server - INFO - [Token验证成功] 用户ID: 4 21:47:21 - article_server - INFO - [获取用户信息] 开始处理请求, IP: 36.27.52.26 21:47:21 - article_server - INFO - [获取用户信息] 用户ID: 4, IP: 36.27.52.26 21:47:21 - article_server - INFO - [SQL执行] 开始执行查询SQL 21:47:21 - article_server - INFO - [SQL语句] SELECT users_total, products_total, articles_total, published_total FROM ai_enterprises WHERE id = %s 21:47:21 - article_server - INFO - [SQL参数] (1,) 21:47:21 - article_server - INFO - [SQL结果] 查询完成,返回 1 条记录 21:47:21 - article_server - INFO - [SQL数据] 查询结果: [{'last_month_published': 0}] 21:47:21 - article_server - INFO - [SQL执行] 开始执行查询SQL 21:47:21 - article_server - INFO - [SQL语句] SELECT id, enterprise_id, enterprise_name, username, real_name, email, phone, wechat_openid, wechat_unionid, xhs_cookie, xhs_phone, xhs_account, is_bound_xhs, bound_at, department, role, status, created_at, updated_at FROM ai_users WHERE id = %s AND status != 'deleted' 21:47:21 - article_server - INFO - [SQL参数] (4,) 21:47:21 - article_server - INFO - [API访问] GET /api/dashboard/hot-products - IP: 36.27.52.26 - User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Sa 21:47:21 - article_server - INFO - [Token验证成功] 用户ID: 4 21:47:21 - article_server - INFO - [API访问] GET /api/dashboard/recent-publishes - IP: 36.27.52.26 - User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Sa 21:47:21 - article_server - INFO - [Token验证成功] 用户ID: 4 21:47:21 - article_server - INFO - [SQL结果] 查询完成,返回 1 条记录 21:47:21 - article_server - INFO - [SQL数据] 查询结果: [{'users_total': 2, 'products_total': 1, 'articles_total': 12, 'published_total': 0}] 21:47:21 - article_server - INFO - 获取工作台概览成功 21:47:21 - article_server - INFO - [API响应] GET /api/dashboard/overview - IP: 36.27.52.26 - 状态码: 200 21:47:21 - article_server - INFO - [SQL结果] 查询完成,返回 1 条记录 21:47:21 - article_server - INFO - [SQL数据] 查询结果: [{'id': 4, 'enterprise_id': 1, 'enterprise_name': 'rwl企业4号', 'username': 'user004', 'real_name': '饶文龙', 'email': None, 'phone': '13621242430', 'wechat_openid': None, 'wechat_unionid': None, 'xhs_cookie': None, 'xhs_phone': '', 'xhs_account': '小红书用户4', 'is_bound_xhs': 1, 'bound_at': None, 'department': '技术部', 'role': 'enterprise', 'status': 'active', 'created_at': datetime.datetime(2025, 12, 12, 16, 58, 22), 'updated_at': datetime.datetime(2025, 12, 16, 13, 47, 4)}] 21:47:21 - article_server - INFO - [SQL执行] 开始执行查询SQL 21:47:21 - article_server - INFO - [SQL语句] SELECT r.id, r.publish_time, u.real_name as employee_name, p.name as product_name, 'success' as status FROM ai_article_published_records r LEFT JOIN ai_users u ON r.created_user_id = u.id LEFT JOIN ai_products p ON r.product_id = p.id WHERE r.enterprise_id = %s ORDER BY r.publish_time DESC LIMIT %s 21:47:21 - article_server - INFO - [SQL参数] (1, 5) 21:47:21 - article_server - INFO - [SQL执行] 开始执行查询SQL 21:47:21 - article_server - INFO - [SQL语句] SELECT r.product_id, p.name as product_name, COUNT(*) as publishes, ROUND(COUNT(*) * 100.0 / (SELECT COUNT(*) FROM ai_article_published_records WHERE enterprise_id = %s), 0) as percentage FROM ai_article_published_records r LEFT JOIN ai_products p ON r.product_id = p.id WHERE r.enterprise_id = %s GROUP BY r.product_id, p.name ORDER BY publishes DESC LIMIT %s 21:47:21 - article_server - INFO - [SQL参数] (1, 1, 4) 21:47:21 - article_server - INFO - [获取用户信息] 查询成功, 用户: user004, 角色: enterprise, 企业: rwl企业4号, IP: 36.27.52.26 21:47:21 - article_server - INFO - [SQL结果] 查询完成,返回 3 条记录 21:47:21 - article_server - INFO - [SQL数据] 查询结果: [{'id': 7, 'publish_time': datetime.datetime(2025, 12, 16, 19, 32, 25), 'employee_name': '测试员工API', 'product_name': '洗面奶', 'status': 'success'}, {'id': 6, 'publish_time': datetime.datetime(2025, 12, 16, 11, 55, 56), 'employee_name': '测试员工API', 'product_name': '口红套装', 'status': 'success'}, {'id': 5, 'publish_time': datetime.datetime(2025, 12, 16, 10, 17, 8), 'employee_name': '测试员工API', 'product_name': '保湿精华', 'status': 'success'}] 21:47:21 - article_server - INFO - [SQL执行] 开始执行查询SQL 21:47:21 - article_server - INFO - [SQL语句] SELECT COUNT(*) as month_published FROM ai_article_published_records WHERE enterprise_id = %s AND YEAR(publish_time) = YEAR(CURDATE()) AND MONTH(publish_time) = MONTH(CURDATE()) 21:47:21 - article_server - INFO - [SQL参数] (1,) 21:47:21 - article_server - INFO - [SQL结果] 查询完成,返回 3 条记录 21:47:21 - article_server - INFO - [SQL数据] 查询结果: [{'product_id': 2, 'product_name': '保湿精华', 'publishes': 1, 'percentage': Decimal('33')}, {'product_id': 4, 'product_name': '口红套装', 'publishes': 1, 'percentage': Decimal('33')}, {'product_id': 5, 'product_name': '洗面奶', 'publishes': 1, 'percentage': Decimal('33')}] 21:47:21 - article_server - INFO - [SQL执行] 开始执行插入SQL 21:47:21 - article_server - INFO - [SQL语句] INSERT INTO ai_logs (user_id, action, target_type, target_id, description, ip_address, user_agent, request_data, response_data, status, error_message, created_at) VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, NOW()) 21:47:21 - article_server - INFO - [SQL参数] (4, 'get_user_info', 'user', 4, '查询用户信息: user004', '36.27.52.26', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Safari/537.36', None, None, 'success', None) 21:47:21 - article_server - INFO - 获取最近发布成功 21:47:21 - article_server - INFO - [API响应] GET /api/dashboard/recent-publishes - IP: 36.27.52.26 - 状态码: 200 21:47:21 - article_server - INFO - [SQL结果] 查询完成,返回 1 条记录 21:47:21 - article_server - INFO - [SQL数据] 查询结果: [{'month_published': 3}] 21:47:21 - article_server - INFO - 获取热门产品成功 21:47:21 - article_server - INFO - [API响应] GET /api/dashboard/hot-products - IP: 36.27.52.26 - 状态码: 200 21:47:21 - article_server - INFO - [SQL结果] 插入完成,新记录ID: 12 21:47:21 - article_server - INFO - [业务日志] 操作: get_user_info | 用户ID: 4 | 目标: user#4 | 状态: success | IP: 36.27.52.26 | 日志ID: 12 21:47:21 - article_server - INFO - [API响应] GET /api/users/info - IP: 36.27.52.26 - 状态码: 200 21:47:21 - article_server - INFO - [SQL执行] 开始执行查询SQL 21:47:21 - article_server - INFO - [SQL语句] SELECT COUNT(*) as last_month_published FROM ai_article_published_records WHERE enterprise_id = %s AND YEAR(publish_time) = YEAR(DATE_SUB(CURDATE(), INTERVAL 1 MONTH)) AND MONTH(publish_time) = MONTH(DATE_SUB(CURDATE(), INTERVAL 1 MONTH)) 21:47:21 - article_server - INFO - [SQL参数] (1,) 21:47:21 - article_server - INFO - [API访问] GET /api/dashboard/recent-publishes - IP: 36.27.52.26 - User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Sa 21:47:21 - article_server - INFO - [Token验证成功] 用户ID: 4 21:47:21 - article_server - INFO - [API访问] GET /api/dashboard/overview - IP: 36.27.52.26 - User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Sa 21:47:21 - article_server - INFO - [Token验证成功] 用户ID: 4 21:47:21 - article_server - INFO - [API访问] GET /api/dashboard/hot-products - IP: 36.27.52.26 - User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Sa 21:47:21 - article_server - INFO - [Token验证成功] 用户ID: 4 21:47:21 - article_server - INFO - [SQL结果] 查询完成,返回 1 条记录 21:47:21 - article_server - INFO - [SQL数据] 查询结果: [{'last_month_published': 0}] 21:47:21 - article_server - INFO - [SQL执行] 开始执行查询SQL 21:47:21 - article_server - INFO - [SQL语句] SELECT users_total, products_total, articles_total, published_total FROM ai_enterprises WHERE id = %s 21:47:21 - article_server - INFO - [SQL参数] (1,) 21:47:21 - article_server - INFO - [SQL执行] 开始执行查询SQL 21:47:21 - article_server - INFO - [SQL语句] SELECT r.product_id, p.name as product_name, COUNT(*) as publishes, ROUND(COUNT(*) * 100.0 / (SELECT COUNT(*) FROM ai_article_published_records WHERE enterprise_id = %s), 0) as percentage FROM ai_article_published_records r LEFT JOIN ai_products p ON r.product_id = p.id WHERE r.enterprise_id = %s GROUP BY r.product_id, p.name ORDER BY publishes DESC LIMIT %s 21:47:21 - article_server - INFO - [SQL参数] (1, 1, 4) 21:47:21 - article_server - INFO - 获取工作台概览成功 21:47:21 - article_server - INFO - [API响应] GET /api/dashboard/overview - IP: 36.27.52.26 - 状态码: 200 21:47:21 - article_server - INFO - [SQL执行] 开始执行查询SQL 21:47:21 - article_server - INFO - [SQL语句] SELECT r.id, r.publish_time, u.real_name as employee_name, p.name as product_name, 'success' as status FROM ai_article_published_records r LEFT JOIN ai_users u ON r.created_user_id = u.id LEFT JOIN ai_products p ON r.product_id = p.id WHERE r.enterprise_id = %s ORDER BY r.publish_time DESC LIMIT %s 21:47:21 - article_server - INFO - [SQL参数] (1, 5) 21:47:21 - article_server - INFO - [SQL结果] 查询完成,返回 1 条记录 21:47:21 - article_server - INFO - [SQL数据] 查询结果: [{'users_total': 2, 'products_total': 1, 'articles_total': 12, 'published_total': 0}] 21:47:21 - article_server - INFO - [SQL结果] 查询完成,返回 3 条记录 21:47:21 - article_server - INFO - [SQL数据] 查询结果: [{'product_id': 2, 'product_name': '保湿精华', 'publishes': 1, 'percentage': Decimal('33')}, {'product_id': 4, 'product_name': '口红套装', 'publishes': 1, 'percentage': Decimal('33')}, {'product_id': 5, 'product_name': '洗面奶', 'publishes': 1, 'percentage': Decimal('33')}] 21:47:21 - article_server - INFO - [SQL结果] 查询完成,返回 3 条记录 21:47:21 - article_server - INFO - [SQL数据] 查询结果: [{'id': 7, 'publish_time': datetime.datetime(2025, 12, 16, 19, 32, 25), 'employee_name': '测试员工API', 'product_name': '洗面奶', 'status': 'success'}, {'id': 6, 'publish_time': datetime.datetime(2025, 12, 16, 11, 55, 56), 'employee_name': '测试员工API', 'product_name': '口红套装', 'status': 'success'}, {'id': 5, 'publish_time': datetime.datetime(2025, 12, 16, 10, 17, 8), 'employee_name': '测试员工API', 'product_name': '保湿精华', 'status': 'success'}] 21:47:21 - article_server - INFO - [API访问] GET /api/users/info - IP: 36.27.52.26 - User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Sa 21:47:21 - article_server - INFO - [Token验证成功] 用户ID: 4 21:47:21 - article_server - INFO - [获取用户信息] 开始处理请求, IP: 36.27.52.26 21:47:21 - article_server - INFO - [获取用户信息] 用户ID: 4, IP: 36.27.52.26 21:47:21 - article_server - INFO - 获取热门产品成功 21:47:21 - article_server - INFO - [API响应] GET /api/dashboard/hot-products - IP: 36.27.52.26 - 状态码: 200 21:47:21 - article_server - INFO - 获取最近发布成功 21:47:21 - article_server - INFO - [API响应] GET /api/dashboard/recent-publishes - IP: 36.27.52.26 - 状态码: 200 21:47:21 - article_server - INFO - [SQL执行] 开始执行查询SQL 21:47:21 - article_server - INFO - [SQL语句] SELECT id, enterprise_id, enterprise_name, username, real_name, email, phone, wechat_openid, wechat_unionid, xhs_cookie, xhs_phone, xhs_account, is_bound_xhs, bound_at, department, role, status, created_at, updated_at FROM ai_users WHERE id = %s AND status != 'deleted' 21:47:21 - article_server - INFO - [SQL参数] (4,) 21:47:21 - article_server - INFO - [SQL执行] 开始执行查询SQL 21:47:21 - article_server - INFO - [SQL语句] SELECT COUNT(*) as month_published FROM ai_article_published_records WHERE enterprise_id = %s AND YEAR(publish_time) = YEAR(CURDATE()) AND MONTH(publish_time) = MONTH(CURDATE()) 21:47:21 - article_server - INFO - [SQL参数] (1,) 21:47:21 - article_server - INFO - [SQL结果] 查询完成,返回 1 条记录 21:47:21 - article_server - INFO - [SQL数据] 查询结果: [{'id': 4, 'enterprise_id': 1, 'enterprise_name': 'rwl企业4号', 'username': 'user004', 'real_name': '饶文龙', 'email': None, 'phone': '13621242430', 'wechat_openid': None, 'wechat_unionid': None, 'xhs_cookie': None, 'xhs_phone': '', 'xhs_account': '小红书用户4', 'is_bound_xhs': 1, 'bound_at': None, 'department': '技术部', 'role': 'enterprise', 'status': 'active', 'created_at': datetime.datetime(2025, 12, 12, 16, 58, 22), 'updated_at': datetime.datetime(2025, 12, 16, 13, 47, 4)}] 21:47:21 - article_server - INFO - [SQL结果] 查询完成,返回 1 条记录 21:47:21 - article_server - INFO - [SQL数据] 查询结果: [{'month_published': 3}] 21:47:22 - article_server - INFO - [获取用户信息] 查询成功, 用户: user004, 角色: enterprise, 企业: rwl企业4号, IP: 36.27.52.26 21:47:22 - article_server - INFO - [SQL执行] 开始执行查询SQL 21:47:22 - article_server - INFO - [SQL语句] SELECT COUNT(*) as last_month_published FROM ai_article_published_records WHERE enterprise_id = %s AND YEAR(publish_time) = YEAR(DATE_SUB(CURDATE(), INTERVAL 1 MONTH)) AND MONTH(publish_time) = MONTH(DATE_SUB(CURDATE(), INTERVAL 1 MONTH)) 21:47:22 - article_server - INFO - [SQL参数] (1,) 21:47:22 - article_server - INFO - [SQL执行] 开始执行插入SQL 21:47:22 - article_server - INFO - [SQL语句] INSERT INTO ai_logs (user_id, action, target_type, target_id, description, ip_address, user_agent, request_data, response_data, status, error_message, created_at) VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, NOW()) 21:47:22 - article_server - INFO - [SQL参数] (4, 'get_user_info', 'user', 4, '查询用户信息: user004', '36.27.52.26', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Safari/537.36', None, None, 'success', None) 21:47:22 - article_server - INFO - [SQL结果] 查询完成,返回 1 条记录 21:47:22 - article_server - INFO - [SQL数据] 查询结果: [{'last_month_published': 0}] 21:47:22 - article_server - INFO - [SQL结果] 插入完成,新记录ID: 13 21:47:22 - article_server - INFO - 获取工作台概览成功 21:47:22 - article_server - INFO - [API响应] GET /api/dashboard/overview - IP: 36.27.52.26 - 状态码: 200 21:47:22 - article_server - INFO - [业务日志] 操作: get_user_info | 用户ID: 4 | 目标: user#4 | 状态: success | IP: 36.27.52.26 | 日志ID: 13 21:47:22 - article_server - INFO - [API响应] GET /api/users/info - IP: 36.27.52.26 - 状态码: 200 21:47:23 - article_server - INFO - [API访问] GET /api/enterprises/list - IP: 36.27.52.26 - User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Sa 21:47:23 - article_server - INFO - [Token验证成功] 用户ID: 4 21:47:23 - article_server - INFO - [获取企业列表] 开始处理请求, IP: 36.27.52.26 21:47:23 - article_server - INFO - [获取企业列表] 查询参数: page=1, pageSize=100, keyword=, status=, IP: 36.27.52.26 21:47:23 - article_server - INFO - [SQL执行] 开始执行查询SQL 21:47:23 - article_server - INFO - [SQL语句] SELECT COUNT(*) as total FROM ai_enterprises WHERE 1=1 21:47:23 - article_server - INFO - [SQL结果] 查询完成,返回 1 条记录 21:47:23 - article_server - INFO - [SQL数据] 查询结果: [{'total': 11}] 21:47:23 - article_server - INFO - [SQL执行] 开始执行查询SQL 21:47:23 - article_server - INFO - [SQL语句] SELECT id, enterprise_ID, name, short_name, phone, email, status, users_total, products_total, articles_total, published_total, created_at, updated_at FROM ai_enterprises WHERE 1=1 ORDER BY created_at DESC LIMIT %s OFFSET %s 21:47:23 - article_server - INFO - [SQL参数] [100, 0] 21:47:23 - article_server - INFO - [SQL结果] 查询完成,返回 11 条记录 21:47:23 - article_server - INFO - [获取企业列表] 查询成功, 总数: 11, 当前页: 1, 每页: 100, 返回数量: 11, IP: 36.27.52.26 21:47:23 - article_server - INFO - [API响应] GET /api/enterprises/list - IP: 36.27.52.26 - 状态码: 200 21:47:28 - article_server - INFO - [API访问] GET /api/enterprises/info - IP: 36.27.52.26 - User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Sa 21:47:28 - article_server - INFO - [Token验证成功] 用户ID: 4 21:47:28 - article_server - INFO - [SQL执行] 开始执行查询SQL 21:47:28 - article_server - INFO - [SQL语句] SELECT id, enterprise_ID, name, short_name, phone, email, status, users_total, products_total, articles_total, published_total, created_at, updated_at FROM ai_enterprises WHERE id = %s 21:47:28 - article_server - INFO - [SQL参数] (1,) 21:47:28 - article_server - INFO - [SQL结果] 查询完成,返回 1 条记录 21:47:28 - article_server - INFO - [SQL数据] 查询结果: [{'id': 1, 'enterprise_ID': 'ENT-2024-0001', 'name': '乐航', 'short_name': '企业1222', 'phone': '13800138001', 'email': 'raowenlong@vizee.cn', 'status': 'active', 'users_total': 2, 'products_total': 1, 'articles_total': 12, 'published_total': 0, 'created_at': datetime.datetime(2025, 12, 12, 16, 58, 22), 'updated_at': datetime.datetime(2025, 12, 13, 9, 39, 53)}] 21:47:28 - article_server - INFO - 获取企业信息成功: ID 1 21:47:28 - article_server - INFO - [API响应] GET /api/enterprises/info - IP: 36.27.52.26 - 状态码: 200 21:47:28 - article_server - INFO - [API访问] GET /api/employees/list - IP: 36.27.52.26 - User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Sa 21:47:28 - article_server - INFO - [Token验证成功] 用户ID: 4 21:47:28 - article_server - INFO - [API访问] GET /api/employees/stats - IP: 36.27.52.26 - User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Sa 21:47:28 - article_server - INFO - [Token验证成功] 用户ID: 4 21:47:28 - article_server - INFO - [SQL执行] 开始执行查询SQL 21:47:28 - article_server - INFO - [SQL语句] SELECT COUNT(*) as total FROM ai_users WHERE enterprise_id = %s AND status != 'deleted' 21:47:28 - article_server - INFO - [SQL参数] [1] 21:47:28 - article_server - INFO - [SQL执行] 开始执行查询SQL 21:47:28 - article_server - INFO - [SQL语句] SELECT COUNT(*) as total_count, SUM(CASE WHEN status = 'active' THEN 1 ELSE 0 END) as active_count, SUM(CASE WHEN is_bound_xhs = 1 THEN 1 ELSE 0 END) as bound_xhs_count FROM ai_users WHERE enterprise_id = %s AND status != 'deleted' 21:47:28 - article_server - INFO - [SQL参数] (1,) 21:47:28 - article_server - INFO - [SQL结果] 查询完成,返回 1 条记录 21:47:28 - article_server - INFO - [SQL数据] 查询结果: [{'total': 5}] 21:47:28 - article_server - INFO - [SQL结果] 查询完成,返回 1 条记录 21:47:28 - article_server - INFO - [SQL数据] 查询结果: [{'total_count': 5, 'active_count': Decimal('5'), 'bound_xhs_count': Decimal('4')}] 21:47:28 - article_server - INFO - 获取员工统计成功 21:47:28 - article_server - INFO - [API响应] GET /api/employees/stats - IP: 36.27.52.26 - 状态码: 200 21:47:29 - article_server - INFO - [SQL执行] 开始执行查询SQL 21:47:29 - article_server - INFO - [SQL语句] SELECT id, enterprise_id, real_name as name, username, phone, role, department, is_bound_xhs, xhs_account, status, created_at, updated_at FROM ai_users WHERE enterprise_id = %s AND status != 'deleted' ORDER BY created_at DESC LIMIT %s OFFSET %s 21:47:29 - article_server - INFO - [SQL参数] [1, 20, 0] 21:47:29 - article_server - INFO - [SQL结果] 查询完成,返回 5 条记录 21:47:29 - article_server - INFO - 获取员工列表成功,总数: 5 21:47:29 - article_server - INFO - [API响应] GET /api/employees/list - IP: 36.27.52.26 - 状态码: 200 21:47:29 - article_server - INFO - [API访问] GET /api/products/list - IP: 36.27.52.26 - User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Sa 21:47:29 - article_server - INFO - [Token验证成功] 用户ID: 4 21:47:29 - article_server - INFO - [获取产品列表] 开始处理请求, IP: 36.27.52.26 21:47:29 - article_server - INFO - [获取产品列表] 用户信息 - 用户ID: 4, 企业ID: 1, IP: 36.27.52.26 21:47:29 - article_server - INFO - [获取产品列表] 查询参数: page=1, pageSize=20, keyword=, type=, status=, 企业ID: 1, IP: 36.27.52.26 21:47:29 - article_server - INFO - [API访问] GET /api/products/types/list - IP: 36.27.52.26 - User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Sa 21:47:29 - article_server - INFO - [Token验证成功] 用户ID: 4 21:47:29 - article_server - INFO - [获取企业产品类型列表] 开始处理请求, IP: 36.27.52.26 21:47:29 - article_server - INFO - [获取企业产品类型列表] 企业ID: 1, IP: 36.27.52.26 21:47:29 - article_server - INFO - [SQL执行] 开始执行查询SQL 21:47:29 - article_server - INFO - [SQL语句] SELECT COUNT(*) as total FROM ai_products WHERE enterprise_id = %s AND status != 'deleted' 21:47:29 - article_server - INFO - [SQL参数] [1] 21:47:29 - article_server - INFO - [SQL执行] 开始执行查询SQL 21:47:29 - article_server - INFO - [SQL语句] SELECT COUNT(*) as total FROM ai_product_types WHERE enterprise_id = %s 21:47:29 - article_server - INFO - [SQL参数] [1] 21:47:29 - article_server - INFO - [SQL结果] 查询完成,返回 1 条记录 21:47:29 - article_server - INFO - [SQL数据] 查询结果: [{'total': 4}] 21:47:29 - article_server - INFO - [SQL结果] 查询完成,返回 1 条记录 21:47:29 - article_server - INFO - [SQL数据] 查询结果: [{'total': 0}] 21:47:29 - article_server - INFO - [SQL执行] 开始执行查询SQL 21:47:29 - article_server - INFO - [SQL语句] SELECT p.id, p.name, p.type_name, p.knowledge, p.status, p.articles_total, p.published_total, p.image_url, p.image_thumbnail_url, p.created_at, p.updated_at FROM ai_products p WHERE enterprise_id = %s AND status != 'deleted' ORDER BY p.created_at DESC LIMIT %s OFFSET %s 21:47:29 - article_server - INFO - [SQL参数] [1, 20, 0] 21:47:29 - article_server - INFO - [SQL执行] 开始执行查询SQL 21:47:29 - article_server - INFO - [SQL语句] SELECT id, type_name, enterprise_id, product_id, created_at FROM ai_product_types WHERE enterprise_id = %s ORDER BY created_at DESC LIMIT %s OFFSET %s 21:47:29 - article_server - INFO - [SQL参数] [1, 100, 0] 21:47:29 - article_server - INFO - [SQL结果] 查询完成,返回 4 条记录 21:47:29 - article_server - INFO - [SQL结果] 查询完成,返回 0 条记录 21:47:29 - article_server - INFO - [获取企业产品类型列表] 查询成功, 企业ID: 1, 总数: 0, 返回: 0, IP: 36.27.52.26 21:47:29 - article_server - INFO - [API响应] GET /api/products/types/list - IP: 36.27.52.26 - 状态码: 200 21:47:29 - article_server - INFO - [SQL执行] 开始执行查询SQL 21:47:29 - article_server - INFO - [SQL语句] SELECT id, tag_name FROM ai_product_tags WHERE product_id = %s 21:47:29 - article_server - INFO - [SQL参数] (13,) 21:47:29 - article_server - INFO - [SQL结果] 查询完成,返回 0 条记录 21:47:29 - article_server - INFO - [SQL执行] 开始执行查询SQL 21:47:29 - article_server - INFO - [SQL语句] SELECT id, tag_name FROM ai_product_tags WHERE product_id = %s 21:47:29 - article_server - INFO - [SQL参数] (12,) 21:47:29 - article_server - INFO - [SQL结果] 查询完成,返回 0 条记录 21:47:29 - article_server - INFO - [SQL执行] 开始执行查询SQL 21:47:29 - article_server - INFO - [SQL语句] SELECT id, tag_name FROM ai_product_tags WHERE product_id = %s 21:47:29 - article_server - INFO - [SQL参数] (11,) 21:47:29 - article_server - INFO - [SQL结果] 查询完成,返回 0 条记录 21:47:29 - article_server - INFO - [SQL执行] 开始执行查询SQL 21:47:29 - article_server - INFO - [SQL语句] SELECT id, tag_name FROM ai_product_tags WHERE product_id = %s 21:47:29 - article_server - INFO - [SQL参数] (1,) 21:47:29 - article_server - INFO - [SQL结果] 查询完成,返回 1 条记录 21:47:29 - article_server - INFO - [SQL数据] 查询结果: [{'id': 1, 'tag_name': '保湿'}] 21:47:29 - article_server - INFO - [API访问] GET /api/images/list - IP: 36.27.52.26 - User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Sa 21:47:29 - article_server - INFO - [Token验证成功] 用户ID: 4 21:47:29 - article_server - INFO - [获取产品列表] 查询成功, 总数: 4, 当前页: 1, 每页: 20, 返回数量: 4, 企业ID: 1, IP: 36.27.52.26 21:47:29 - article_server - INFO - [API响应] GET /api/products/list - IP: 36.27.52.26 - 状态码: 200 21:47:29 - article_server - INFO - [SQL执行] 开始执行查询SQL 21:47:29 - article_server - INFO - [SQL语句] SELECT COUNT(*) as total FROM ai_images WHERE enterprise_id = %s AND status = %s 21:47:29 - article_server - INFO - [SQL参数] [1, 'active'] 21:47:29 - article_server - INFO - [SQL结果] 查询完成,返回 1 条记录 21:47:29 - article_server - INFO - [SQL数据] 查询结果: [{'total': 0}] 21:47:29 - article_server - INFO - [SQL执行] 开始执行查询SQL 21:47:29 - article_server - INFO - [SQL语句] SELECT id, product_id, product_name, image_name, image_url, image_thumb_url, thumbnail_url, image_type_id, image_type_name, department, keywords, size_type, file_size, width, height, status, created_at, updated_at FROM ai_images WHERE enterprise_id = %s AND status = %s ORDER BY created_at DESC LIMIT %s OFFSET %s 21:47:29 - article_server - INFO - [SQL参数] [1, 'active', 100, 0] 21:47:29 - article_server - INFO - [SQL结果] 查询完成,返回 0 条记录 21:47:30 - article_server - INFO - 获取图片列表成功,总数: 0 21:47:30 - article_server - INFO - [API响应] GET /api/images/list - IP: 36.27.52.26 - 状态码: 200 21:47:31 - article_server - INFO - [API访问] GET /api/prompts/tags/list - IP: 36.27.52.26 - User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Sa 21:47:31 - article_server - INFO - [API访问] GET /api/prompts/list - IP: 36.27.52.26 - User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Sa 21:47:31 - article_server - INFO - [Token验证成功] 用户ID: 4 21:47:31 - article_server - INFO - [Token验证成功] 用户ID: 4 21:47:31 - article_server - INFO - [SQL执行] 开始执行查询SQL 21:47:31 - article_server - INFO - [SQL语句] SELECT COUNT(*) as total FROM ai_prompt_tags WHERE enterprise_id = %s 21:47:31 - article_server - INFO - [SQL执行] 开始执行查询SQL 21:47:31 - article_server - INFO - [SQL参数] [1] 21:47:31 - article_server - INFO - [SQL语句] SELECT COUNT(*) as total FROM ai_prompt_workflow WHERE enterprise_id = %s 21:47:31 - article_server - INFO - [SQL参数] (1,) 21:47:31 - article_server - INFO - [SQL结果] 查询完成,返回 1 条记录 21:47:31 - article_server - INFO - [SQL结果] 查询完成,返回 1 条记录 21:47:31 - article_server - INFO - [SQL数据] 查询结果: [{'total': 8}] 21:47:31 - article_server - INFO - [SQL数据] 查询结果: [{'total': 0}] 21:47:31 - article_server - INFO - [SQL执行] 开始执行查询SQL 21:47:31 - article_server - INFO - [SQL语句] SELECT id, tag_name, created_user_id, created_at, updated_at FROM ai_prompt_tags WHERE enterprise_id = %s ORDER BY created_at DESC LIMIT %s OFFSET %s 21:47:31 - article_server - INFO - [SQL执行] 开始执行查询SQL 21:47:31 - article_server - INFO - [SQL参数] [1, 100, 0] 21:47:31 - article_server - INFO - [SQL语句] SELECT id, prompt_workflow_name, workflow_id, content, usage_count, created_at, updated_at FROM ai_prompt_workflow WHERE enterprise_id = %s ORDER BY created_at DESC LIMIT %s OFFSET %s 21:47:31 - article_server - INFO - [SQL参数] (1, 20, 0) 21:47:31 - article_server - INFO - [SQL结果] 查询完成,返回 0 条记录 21:47:31 - article_server - INFO - [SQL结果] 查询完成,返回 8 条记录 21:47:31 - article_server - INFO - 获取标签列表成功,总数: 0 21:47:31 - article_server - INFO - [API响应] GET /api/prompts/tags/list - IP: 36.27.52.26 - 状态码: 200 21:47:31 - article_server - INFO - [SQL执行] 开始执行查询SQL 21:47:31 - article_server - INFO - [SQL语句] SELECT t.id, t.tag_name FROM ai_prompt_tags t INNER JOIN ai_prompt_tags_relation r ON t.id = r.tag_id WHERE r.prompt_workflow_id = %s 21:47:31 - article_server - INFO - [SQL参数] (25,) 21:47:31 - article_server - INFO - [SQL结果] 查询完成,返回 1 条记录 21:47:31 - article_server - INFO - [SQL数据] 查询结果: [{'id': 13, 'tag_name': 'gggggggggggg'}] 21:47:31 - article_server - INFO - [SQL执行] 开始执行查询SQL 21:47:31 - article_server - INFO - [SQL语句] SELECT t.id, t.tag_name FROM ai_prompt_tags t INNER JOIN ai_prompt_tags_relation r ON t.id = r.tag_id WHERE r.prompt_workflow_id = %s 21:47:31 - article_server - INFO - [SQL参数] (16,) 21:47:31 - article_server - INFO - [SQL结果] 查询完成,返回 0 条记录 21:47:31 - article_server - INFO - [API访问] GET /api/articles/list_dashboard - IP: 36.27.52.26 - User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Sa 21:47:31 - article_server - INFO - [API访问] GET /api/articles/list - IP: 36.27.52.26 - User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Sa 21:47:31 - article_server - INFO - [Token验证成功] 用户ID: 4 21:47:31 - article_server - INFO - [文章仪表盘] 开始处理请求, IP: 36.27.52.26 21:47:31 - article_server - INFO - [Token验证成功] 用户ID: 4 21:47:31 - article_server - INFO - [获取文章列表] 开始处理请求, IP: 36.27.52.26 21:47:31 - article_server - INFO - [获取文章列表] 用户信息 - 用户ID: 4, 企业ID: 1, IP: 36.27.52.26 21:47:31 - article_server - INFO - [获取文章列表] 查询参数: page=1, pageSize=20, keyword=, product_id=, status=, 企业ID: 1, IP: 36.27.52.26 21:47:31 - article_server - INFO - [API访问] GET /api/products/list - IP: 36.27.52.26 - User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Sa 21:47:31 - article_server - INFO - [Token验证成功] 用户ID: 4 21:47:31 - article_server - INFO - [获取产品列表] 开始处理请求, IP: 36.27.52.26 21:47:31 - article_server - INFO - [获取产品列表] 用户信息 - 用户ID: 4, 企业ID: 1, IP: 36.27.52.26 21:47:31 - article_server - INFO - [获取产品列表] 查询参数: page=1, pageSize=100, keyword=, type=, status=, 企业ID: 1, IP: 36.27.52.26 21:47:31 - article_server - INFO - [SQL执行] 开始执行查询SQL 21:47:31 - article_server - INFO - [SQL语句] SELECT t.id, t.tag_name FROM ai_prompt_tags t INNER JOIN ai_prompt_tags_relation r ON t.id = r.tag_id WHERE r.prompt_workflow_id = %s 21:47:31 - article_server - INFO - [SQL参数] (15,) 21:47:31 - article_server - INFO - [API访问] GET /api/prompts/list - IP: 36.27.52.26 - User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Sa 21:47:31 - article_server - INFO - [Token验证成功] 用户ID: 4 21:47:31 - article_server - INFO - [SQL执行] 开始执行查询SQL 21:47:31 - article_server - INFO - [SQL语句] SELECT COUNT(*) as total FROM ai_products WHERE enterprise_id = %s AND status != 'deleted' 21:47:31 - article_server - INFO - [SQL参数] [1] 21:47:31 - article_server - INFO - [SQL执行] 开始执行查询SQL 21:47:31 - article_server - INFO - [SQL语句] SELECT COUNT(*) as total FROM ai_articles a WHERE a.enterprise_id = %s 21:47:31 - article_server - INFO - [SQL参数] [1] 21:47:31 - article_server - INFO - [SQL执行] 开始执行查询SQL 21:47:31 - article_server - INFO - [SQL语句] SELECT COUNT(id) as total FROM ai_articles WHERE enterprise_id = %s 21:47:31 - article_server - INFO - [SQL参数] (1,) 21:47:31 - article_server - INFO - [SQL执行] 开始执行查询SQL 21:47:31 - article_server - INFO - [SQL语句] SELECT COUNT(*) as total FROM ai_prompt_workflow WHERE enterprise_id = %s 21:47:31 - article_server - INFO - [SQL参数] (1,) 21:47:31 - article_server - INFO - [SQL结果] 查询完成,返回 0 条记录 21:47:31 - article_server - INFO - [SQL结果] 查询完成,返回 1 条记录 21:47:31 - article_server - INFO - [SQL数据] 查询结果: [{'total': 4}] 21:47:31 - article_server - INFO - [SQL结果] 查询完成,返回 1 条记录 21:47:31 - article_server - INFO - [SQL数据] 查询结果: [{'total': 12}] 21:47:31 - article_server - INFO - [SQL结果] 查询完成,返回 1 条记录 21:47:31 - article_server - INFO - [SQL数据] 查询结果: [{'total': 12}] 21:47:31 - article_server - INFO - [SQL结果] 查询完成,返回 1 条记录 21:47:31 - article_server - INFO - [SQL数据] 查询结果: [{'total': 8}] 21:47:31 - article_server - INFO - [SQL执行] 开始执行查询SQL 21:47:31 - article_server - INFO - [SQL语句] SELECT p.id, p.name, p.type_name, p.knowledge, p.status, p.articles_total, p.published_total, p.image_url, p.image_thumbnail_url, p.created_at, p.updated_at FROM ai_products p WHERE enterprise_id = %s AND status != 'deleted' ORDER BY p.created_at DESC LIMIT %s OFFSET %s 21:47:31 - article_server - INFO - [SQL执行] 开始执行查询SQL 21:47:31 - article_server - INFO - [SQL参数] [1, 100, 0] 21:47:31 - article_server - INFO - [SQL语句] SELECT t.id, t.tag_name FROM ai_prompt_tags t INNER JOIN ai_prompt_tags_relation r ON t.id = r.tag_id WHERE r.prompt_workflow_id = %s 21:47:31 - article_server - INFO - [SQL参数] (14,) 21:47:31 - article_server - INFO - [SQL执行] 开始执行查询SQL 21:47:31 - article_server - INFO - [SQL语句] SELECT a.id, a.batch_id, a.enterprise_id, a.product_id, a.topic_type_id, a.prompt_workflow_id, a.topic, a.title, a.content, a.department, a.departmentids, a.author_id, a.author_name, a.department_id, a.department_name, a.created_user_id, a.review_user_id, a.publish_user_id, a.status, a.channel, a.review_comment, a.publish_time, a.publish_link, a.baijiahao_id, a.baijiahao_status, a.word_count, a.image_count, a.coze_tag, a.created_at, a.updated_at, p.name as product_name, pw.prompt_workflow_name as prompt_name FROM ai_articles a LEFT JOIN ai_products p ON a.product_id = p.id LEFT JOIN ai_prompt_workflow pw ON a.prompt_workflow_id = pw.id WHERE a.enterprise_id = %s ORDER BY a.created_at DESC LIMIT %s OFFSET %s 21:47:31 - article_server - INFO - [SQL参数] [1, 20, 0] 21:47:31 - article_server - INFO - [SQL执行] 开始执行查询SQL 21:47:31 - article_server - INFO - [SQL语句] SELECT id, prompt_workflow_name, workflow_id, content, usage_count, created_at, updated_at FROM ai_prompt_workflow WHERE enterprise_id = %s ORDER BY created_at DESC LIMIT %s OFFSET %s 21:47:31 - article_server - INFO - [SQL参数] (1, 100, 0) 21:47:31 - article_server - INFO - [SQL执行] 开始执行查询SQL 21:47:31 - article_server - INFO - [SQL语句] SELECT COUNT(id) as total FROM ai_articles WHERE enterprise_id = %s AND status = 'published_review' 21:47:31 - article_server - INFO - [SQL参数] (1,) 21:47:31 - article_server - INFO - [SQL结果] 查询完成,返回 4 条记录 21:47:31 - article_server - INFO - [SQL结果] 查询完成,返回 0 条记录 21:47:31 - article_server - INFO - [SQL结果] 查询完成,返回 12 条记录 21:47:31 - article_server - INFO - [SQL结果] 查询完成,返回 8 条记录 21:47:31 - article_server - INFO - [SQL结果] 查询完成,返回 1 条记录 21:47:31 - article_server - INFO - [SQL数据] 查询结果: [{'total': 0}] 21:47:31 - article_server - INFO - [SQL执行] 开始执行查询SQL 21:47:31 - article_server - INFO - [SQL语句] SELECT id, tag_name FROM ai_product_tags WHERE product_id = %s 21:47:31 - article_server - INFO - [SQL参数] (13,) 21:47:31 - article_server - INFO - [SQL执行] 开始执行查询SQL 21:47:31 - article_server - INFO - [SQL语句] SELECT t.id, t.tag_name FROM ai_prompt_tags t INNER JOIN ai_prompt_tags_relation r ON t.id = r.tag_id WHERE r.prompt_workflow_id = %s 21:47:31 - article_server - INFO - [SQL参数] (13,) 21:47:31 - article_server - INFO - [SQL执行] 开始执行查询SQL 21:47:31 - article_server - INFO - [SQL语句] SELECT id, image_id, image_url, image_thumb_url, image_tag_id, sort_order, keywords_id, keywords_name, department_id, department_name, image_source, created_at FROM ai_article_images WHERE article_id = %s ORDER BY sort_order ASC, created_at ASC 21:47:31 - article_server - INFO - [SQL参数] (31,) 21:47:31 - article_server - INFO - [SQL结果] 查询完成,返回 0 条记录 21:47:31 - article_server - INFO - [SQL执行] 开始执行查询SQL 21:47:31 - article_server - INFO - [SQL语句] SELECT t.id, t.tag_name FROM ai_prompt_tags t INNER JOIN ai_prompt_tags_relation r ON t.id = r.tag_id WHERE r.prompt_workflow_id = %s 21:47:31 - article_server - INFO - [SQL参数] (25,) 21:47:31 - article_server - INFO - [SQL执行] 开始执行查询SQL 21:47:31 - article_server - INFO - [SQL语句] SELECT COUNT(id) as total FROM ai_articles WHERE enterprise_id = %s AND status = 'published' 21:47:31 - article_server - INFO - [SQL参数] (1,) 21:47:31 - article_server - INFO - [SQL结果] 查询完成,返回 0 条记录 21:47:31 - article_server - INFO - [SQL结果] 查询完成,返回 0 条记录 21:47:31 - article_server - INFO - [SQL结果] 查询完成,返回 1 条记录 21:47:31 - article_server - INFO - [SQL数据] 查询结果: [{'id': 13, 'tag_name': 'gggggggggggg'}] 21:47:31 - article_server - INFO - [SQL执行] 开始执行查询SQL 21:47:31 - article_server - INFO - [SQL语句] SELECT id, tag_name FROM ai_product_tags WHERE product_id = %s 21:47:31 - article_server - INFO - [SQL参数] (12,) 21:47:31 - article_server - INFO - [SQL结果] 查询完成,返回 1 条记录 21:47:31 - article_server - INFO - [SQL数据] 查询结果: [{'total': 0}] 21:47:31 - article_server - INFO - [SQL结果] 查询完成,返回 0 条记录 21:47:31 - article_server - INFO - [文章仪表盘] 查询成功, 企业ID: 1, 总数: 12, 可发: 0, 已发: 0, IP: 36.27.52.26 21:47:31 - article_server - INFO - [API响应] GET /api/articles/list_dashboard - IP: 36.27.52.26 - 状态码: 200 21:47:31 - article_server - INFO - [SQL执行] 开始执行查询SQL 21:47:31 - article_server - INFO - [SQL语句] SELECT id, coze_tag, created_at FROM ai_article_tags WHERE article_id = %s 21:47:31 - article_server - INFO - [SQL参数] (31,) 21:47:31 - article_server - INFO - [SQL执行] 开始执行查询SQL 21:47:31 - article_server - INFO - [SQL语句] SELECT t.id, t.tag_name FROM ai_prompt_tags t INNER JOIN ai_prompt_tags_relation r ON t.id = r.tag_id WHERE r.prompt_workflow_id = %s 21:47:31 - article_server - INFO - [SQL参数] (12,) 21:47:31 - article_server - INFO - [SQL执行] 开始执行查询SQL 21:47:31 - article_server - INFO - [SQL语句] SELECT t.id, t.tag_name FROM ai_prompt_tags t INNER JOIN ai_prompt_tags_relation r ON t.id = r.tag_id WHERE r.prompt_workflow_id = %s 21:47:31 - article_server - INFO - [SQL参数] (16,) 21:47:31 - article_server - INFO - [SQL结果] 查询完成,返回 0 条记录 21:47:31 - article_server - INFO - [SQL结果] 查询完成,返回 0 条记录 21:47:31 - article_server - INFO - [SQL结果] 查询完成,返回 0 条记录 21:47:31 - article_server - INFO - [SQL执行] 开始执行查询SQL 21:47:31 - article_server - INFO - [SQL语句] SELECT id, tag_name FROM ai_product_tags WHERE product_id = %s 21:47:31 - article_server - INFO - [SQL参数] (11,) 21:47:31 - article_server - INFO - [SQL结果] 查询完成,返回 0 条记录 21:47:31 - article_server - INFO - [SQL执行] 开始执行查询SQL 21:47:31 - article_server - INFO - [SQL语句] SELECT id, image_id, image_url, image_thumb_url, image_tag_id, sort_order, keywords_id, keywords_name, department_id, department_name, image_source, created_at FROM ai_article_images WHERE article_id = %s ORDER BY sort_order ASC, created_at ASC 21:47:31 - article_server - INFO - [SQL参数] (30,) 21:47:31 - article_server - INFO - [API访问] GET /api/statistics/records - IP: 36.27.52.26 - User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Sa 21:47:31 - article_server - INFO - [Token验证成功] 用户ID: 4 21:47:31 - article_server - INFO - [SQL执行] 开始执行查询SQL 21:47:31 - article_server - INFO - [SQL语句] SELECT t.id, t.tag_name FROM ai_prompt_tags t INNER JOIN ai_prompt_tags_relation r ON t.id = r.tag_id WHERE r.prompt_workflow_id = %s 21:47:31 - article_server - INFO - [SQL参数] (15,) 21:47:31 - article_server - INFO - [SQL执行] 开始执行查询SQL 21:47:31 - article_server - INFO - [SQL语句] SELECT t.id, t.tag_name FROM ai_prompt_tags t INNER JOIN ai_prompt_tags_relation r ON t.id = r.tag_id WHERE r.prompt_workflow_id = %s 21:47:31 - article_server - INFO - [SQL参数] (11,) 21:47:31 - article_server - INFO - [SQL结果] 查询完成,返回 0 条记录 21:47:31 - article_server - INFO - [SQL执行] 开始执行查询SQL 21:47:31 - article_server - INFO - [SQL语句] SELECT id, tag_name FROM ai_product_tags WHERE product_id = %s 21:47:31 - article_server - INFO - [SQL参数] (1,) 21:47:31 - article_server - INFO - [SQL执行] 开始执行查询SQL 21:47:31 - article_server - INFO - [SQL语句] SELECT COUNT(*) as total FROM ai_article_published_records r WHERE r.enterprise_id = %s 21:47:31 - article_server - INFO - [SQL参数] [1] 21:47:31 - article_server - INFO - [SQL结果] 查询完成,返回 0 条记录 21:47:31 - article_server - INFO - [SQL结果] 查询完成,返回 0 条记录 21:47:31 - article_server - INFO - [SQL结果] 查询完成,返回 1 条记录 21:47:31 - article_server - INFO - [SQL数据] 查询结果: [{'id': 1, 'tag_name': '保湿'}] 21:47:31 - article_server - INFO - [SQL结果] 查询完成,返回 1 条记录 21:47:31 - article_server - INFO - [SQL数据] 查询结果: [{'total': 3}] 21:47:31 - article_server - INFO - [API访问] GET /api/statistics/overview - IP: 36.27.52.26 - User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Sa 21:47:31 - article_server - INFO - [Token验证成功] 用户ID: 4 21:47:31 - article_server - INFO - [获取产品列表] 查询成功, 总数: 4, 当前页: 1, 每页: 100, 返回数量: 4, 企业ID: 1, IP: 36.27.52.26 21:47:31 - article_server - INFO - [API响应] GET /api/products/list - IP: 36.27.52.26 - 状态码: 200 21:47:31 - article_server - INFO - [SQL执行] 开始执行查询SQL 21:47:31 - article_server - INFO - [SQL语句] SELECT id, coze_tag, created_at FROM ai_article_tags WHERE article_id = %s 21:47:31 - article_server - INFO - [SQL参数] (30,) 21:47:31 - article_server - INFO - [SQL执行] 开始执行查询SQL 21:47:31 - article_server - INFO - [SQL语句] SELECT t.id, t.tag_name FROM ai_prompt_tags t INNER JOIN ai_prompt_tags_relation r ON t.id = r.tag_id WHERE r.prompt_workflow_id = %s 21:47:31 - article_server - INFO - [SQL参数] (14,) 21:47:31 - article_server - INFO - [SQL执行] 开始执行查询SQL 21:47:31 - article_server - INFO - [SQL语句] SELECT COUNT(*) as total FROM ai_article_published_records WHERE enterprise_id = %s 21:47:31 - article_server - INFO - [SQL参数] (1,) 21:47:32 - article_server - INFO - [SQL执行] 开始执行查询SQL 21:47:32 - article_server - INFO - [SQL语句] SELECT t.id, t.tag_name FROM ai_prompt_tags t INNER JOIN ai_prompt_tags_relation r ON t.id = r.tag_id WHERE r.prompt_workflow_id = %s 21:47:32 - article_server - INFO - [SQL参数] (1,) 21:47:32 - article_server - INFO - [SQL结果] 查询完成,返回 0 条记录 21:47:32 - article_server - INFO - [SQL结果] 查询完成,返回 0 条记录 21:47:32 - article_server - INFO - [API访问] GET /api/employees/list - IP: 36.27.52.26 - User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Sa 21:47:32 - article_server - INFO - [Token验证成功] 用户ID: 4 21:47:32 - article_server - INFO - [SQL执行] 开始执行查询SQL 21:47:32 - article_server - INFO - [SQL语句] SELECT r.id, r.publish_time, r.created_user_id, r.product_id, r.article_id, r.publish_link, r.topic, u.real_name as employee_name, p.name as product_name, a.title FROM ai_article_published_records r LEFT JOIN ai_users u ON r.created_user_id = u.id LEFT JOIN ai_products p ON r.product_id = p.id LEFT JOIN ai_articles a ON r.article_id = a.id WHERE r.enterprise_id = %s ORDER BY r.publish_time DESC LIMIT %s OFFSET %s 21:47:32 - article_server - INFO - [SQL参数] [1, 100, 0] 21:47:32 - article_server - INFO - [SQL结果] 查询完成,返回 1 条记录 21:47:32 - article_server - INFO - [SQL数据] 查询结果: [{'total': 3}] 21:47:32 - article_server - INFO - [SQL结果] 查询完成,返回 0 条记录 21:47:32 - article_server - INFO - [SQL执行] 开始执行查询SQL 21:47:32 - article_server - INFO - [SQL语句] SELECT COUNT(*) as total FROM ai_users WHERE enterprise_id = %s AND status != 'deleted' 21:47:32 - article_server - INFO - [SQL参数] [1] 21:47:32 - article_server - INFO - [SQL结果] 查询完成,返回 3 条记录 21:47:32 - article_server - INFO - [SQL数据] 查询结果: [{'id': 7, 'publish_time': datetime.datetime(2025, 12, 16, 19, 32, 25), 'created_user_id': 18, 'product_id': 5, 'article_id': 5, 'publish_link': '', 'topic': '深层清洁', 'employee_name': '测试员工API', 'product_name': '洗面奶', 'title': '🧼洗面奶|深层清洁必备好物分享!'}, {'id': 6, 'publish_time': datetime.datetime(2025, 12, 16, 11, 55, 56), 'created_user_id': 18, 'product_id': 4, 'article_id': 4, 'publish_link': '', 'topic': '日常保养', 'employee_name': '测试员工API', 'product_name': '口红套装', 'title': '💄口红套装|日常保养必备好物分享!'}, {'id': 5, 'publish_time': datetime.datetime(2025, 12, 16, 10, 17, 8), 'created_user_id': 18, 'product_id': 2, 'article_id': 2, 'publish_link': '', 'topic': '夏日防晒', 'employee_name': '测试员工API', 'product_name': '保湿精华', 'title': '☀️保湿精华|夏日防晒必备好物分享!'}] 21:47:32 - article_server - INFO - 获取提示词列表成功,总数: 8 21:47:32 - article_server - INFO - [SQL执行] 开始执行查询SQL 21:47:32 - article_server - INFO - [SQL语句] SELECT id, image_id, image_url, image_thumb_url, image_tag_id, sort_order, keywords_id, keywords_name, department_id, department_name, image_source, created_at FROM ai_article_images WHERE article_id = %s ORDER BY sort_order ASC, created_at ASC 21:47:32 - article_server - INFO - [API响应] GET /api/prompts/list - IP: 36.27.52.26 - 状态码: 200 21:47:32 - article_server - INFO - [SQL参数] (28,) 21:47:32 - article_server - INFO - [SQL结果] 查询完成,返回 1 条记录 21:47:32 - article_server - INFO - [SQL数据] 查询结果: [{'total': 5}] 21:47:32 - article_server - INFO - [SQL执行] 开始执行查询SQL 21:47:32 - article_server - INFO - [SQL语句] SELECT t.id, t.tag_name FROM ai_prompt_tags t INNER JOIN ai_prompt_tags_relation r ON t.id = r.tag_id WHERE r.prompt_workflow_id = %s 21:47:32 - article_server - INFO - [SQL参数] (13,) 21:47:32 - article_server - INFO - [SQL执行] 开始执行查询SQL 21:47:32 - article_server - INFO - [SQL语句] SELECT COUNT(*) as today_count FROM ai_article_published_records WHERE enterprise_id = %s AND DATE(publish_time) = CURDATE() 21:47:32 - article_server - INFO - [SQL参数] (1,) 21:47:32 - article_server - INFO - 获取发布记录列表成功,总数: 3 21:47:32 - article_server - INFO - [API响应] GET /api/statistics/records - IP: 36.27.52.26 - 状态码: 200 21:47:32 - article_server - INFO - [SQL结果] 查询完成,返回 0 条记录 21:47:32 - article_server - INFO - [SQL结果] 查询完成,返回 0 条记录 21:47:32 - article_server - INFO - [API访问] GET /api/products/list - IP: 36.27.52.26 - User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Sa 21:47:32 - article_server - INFO - [Token验证成功] 用户ID: 4 21:47:32 - article_server - INFO - [获取产品列表] 开始处理请求, IP: 36.27.52.26 21:47:32 - article_server - INFO - [获取产品列表] 用户信息 - 用户ID: 4, 企业ID: 1, IP: 36.27.52.26 21:47:32 - article_server - INFO - [获取产品列表] 查询参数: page=1, pageSize=100, keyword=, type=, status=, 企业ID: 1, IP: 36.27.52.26 21:47:32 - article_server - INFO - [SQL执行] 开始执行查询SQL 21:47:32 - article_server - INFO - [SQL语句] SELECT id, enterprise_id, real_name as name, username, phone, role, department, is_bound_xhs, xhs_account, status, created_at, updated_at FROM ai_users WHERE enterprise_id = %s AND status != 'deleted' ORDER BY created_at DESC LIMIT %s OFFSET %s 21:47:32 - article_server - INFO - [SQL参数] [1, 100, 0] 21:47:32 - article_server - INFO - [SQL结果] 查询完成,返回 1 条记录 21:47:32 - article_server - INFO - [SQL数据] 查询结果: [{'today_count': 3}] 21:47:32 - article_server - INFO - [SQL执行] 开始执行查询SQL 21:47:32 - article_server - INFO - [SQL语句] SELECT COUNT(*) as total FROM ai_products WHERE enterprise_id = %s AND status != 'deleted' 21:47:32 - article_server - INFO - [SQL参数] [1] 21:47:32 - article_server - INFO - [SQL结果] 查询完成,返回 5 条记录 21:47:32 - article_server - INFO - [SQL执行] 开始执行查询SQL 21:47:32 - article_server - INFO - [SQL语句] SELECT id, coze_tag, created_at FROM ai_article_tags WHERE article_id = %s 21:47:32 - article_server - INFO - [SQL参数] (28,) 21:47:32 - article_server - INFO - [SQL执行] 开始执行查询SQL 21:47:32 - article_server - INFO - [SQL语句] SELECT t.id, t.tag_name FROM ai_prompt_tags t INNER JOIN ai_prompt_tags_relation r ON t.id = r.tag_id WHERE r.prompt_workflow_id = %s 21:47:32 - article_server - INFO - [SQL参数] (12,) 21:47:32 - article_server - INFO - [SQL结果] 查询完成,返回 1 条记录 21:47:32 - article_server - INFO - [SQL数据] 查询结果: [{'total': 4}] 21:47:32 - article_server - INFO - 获取员工列表成功,总数: 5 21:47:32 - article_server - INFO - [API响应] GET /api/employees/list - IP: 36.27.52.26 - 状态码: 200 21:47:32 - article_server - INFO - [SQL结果] 查询完成,返回 0 条记录 21:47:32 - article_server - INFO - [SQL执行] 开始执行查询SQL 21:47:32 - article_server - INFO - [SQL语句] SELECT COUNT(*) as week_count FROM ai_article_published_records WHERE enterprise_id = %s AND YEARWEEK(publish_time, 1) = YEARWEEK(CURDATE(), 1) 21:47:32 - article_server - INFO - [SQL参数] (1,) 21:47:32 - article_server - INFO - [SQL结果] 查询完成,返回 0 条记录 21:47:32 - article_server - INFO - [SQL结果] 查询完成,返回 1 条记录 21:47:32 - article_server - INFO - [SQL数据] 查询结果: [{'week_count': 3}] 21:47:32 - article_server - INFO - [SQL执行] 开始执行查询SQL 21:47:32 - article_server - INFO - [SQL语句] SELECT p.id, p.name, p.type_name, p.knowledge, p.status, p.articles_total, p.published_total, p.image_url, p.image_thumbnail_url, p.created_at, p.updated_at FROM ai_products p WHERE enterprise_id = %s AND status != 'deleted' ORDER BY p.created_at DESC LIMIT %s OFFSET %s 21:47:32 - article_server - INFO - [SQL参数] [1, 100, 0] 21:47:32 - article_server - INFO - [SQL执行] 开始执行查询SQL 21:47:32 - article_server - INFO - [SQL语句] SELECT id, image_id, image_url, image_thumb_url, image_tag_id, sort_order, keywords_id, keywords_name, department_id, department_name, image_source, created_at FROM ai_article_images WHERE article_id = %s ORDER BY sort_order ASC, created_at ASC 21:47:32 - article_server - INFO - [SQL参数] (26,) 21:47:32 - article_server - INFO - [SQL执行] 开始执行查询SQL 21:47:32 - article_server - INFO - [SQL语句] SELECT t.id, t.tag_name FROM ai_prompt_tags t INNER JOIN ai_prompt_tags_relation r ON t.id = r.tag_id WHERE r.prompt_workflow_id = %s 21:47:32 - article_server - INFO - [SQL参数] (11,) 21:47:32 - article_server - INFO - [SQL结果] 查询完成,返回 4 条记录 21:47:32 - article_server - INFO - [SQL结果] 查询完成,返回 0 条记录 21:47:32 - article_server - INFO - [SQL结果] 查询完成,返回 0 条记录 21:47:32 - article_server - INFO - [SQL执行] 开始执行查询SQL 21:47:32 - article_server - INFO - [SQL语句] SELECT COUNT(*) as month_count FROM ai_article_published_records WHERE enterprise_id = %s AND YEAR(publish_time) = YEAR(CURDATE()) AND MONTH(publish_time) = MONTH(CURDATE()) 21:47:32 - article_server - INFO - [SQL参数] (1,) 21:47:32 - article_server - INFO - [SQL结果] 查询完成,返回 1 条记录 21:47:32 - article_server - INFO - [SQL数据] 查询结果: [{'month_count': 3}] 21:47:32 - article_server - INFO - [SQL执行] 开始执行查询SQL 21:47:32 - article_server - INFO - [SQL语句] SELECT id, coze_tag, created_at FROM ai_article_tags WHERE article_id = %s 21:47:32 - article_server - INFO - [SQL参数] (26,) 21:47:32 - article_server - INFO - [SQL执行] 开始执行查询SQL 21:47:32 - article_server - INFO - [SQL语句] SELECT id, tag_name FROM ai_product_tags WHERE product_id = %s 21:47:32 - article_server - INFO - [SQL参数] (13,) 21:47:32 - article_server - INFO - [SQL执行] 开始执行查询SQL 21:47:32 - article_server - INFO - [SQL语句] SELECT t.id, t.tag_name FROM ai_prompt_tags t INNER JOIN ai_prompt_tags_relation r ON t.id = r.tag_id WHERE r.prompt_workflow_id = %s 21:47:32 - article_server - INFO - [SQL参数] (1,) 21:47:32 - article_server - INFO - [SQL结果] 查询完成,返回 0 条记录 21:47:32 - article_server - INFO - [SQL结果] 查询完成,返回 0 条记录 21:47:32 - article_server - INFO - [SQL结果] 查询完成,返回 0 条记录 21:47:32 - article_server - INFO - [SQL执行] 开始执行查询SQL 21:47:32 - article_server - INFO - [SQL语句] SELECT COUNT(DISTINCT created_user_id) as employee_count FROM ai_article_published_records WHERE enterprise_id = %s 21:47:32 - article_server - INFO - [SQL参数] (1,) 21:47:32 - article_server - INFO - 获取提示词列表成功,总数: 8 21:47:32 - article_server - INFO - [API响应] GET /api/prompts/list - IP: 36.27.52.26 - 状态码: 200 21:47:32 - article_server - INFO - [SQL结果] 查询完成,返回 1 条记录 21:47:32 - article_server - INFO - [SQL数据] 查询结果: [{'employee_count': 1}] 21:47:32 - article_server - INFO - [SQL执行] 开始执行查询SQL 21:47:32 - article_server - INFO - [SQL语句] SELECT id, image_id, image_url, image_thumb_url, image_tag_id, sort_order, keywords_id, keywords_name, department_id, department_name, image_source, created_at FROM ai_article_images WHERE article_id = %s ORDER BY sort_order ASC, created_at ASC 21:47:32 - article_server - INFO - [SQL参数] (24,) 21:47:32 - article_server - INFO - [SQL执行] 开始执行查询SQL 21:47:32 - article_server - INFO - [SQL语句] SELECT id, tag_name FROM ai_product_tags WHERE product_id = %s 21:47:32 - article_server - INFO - [SQL参数] (12,) 21:47:32 - article_server - INFO - 获取统计概览成功 21:47:32 - article_server - INFO - [API响应] GET /api/statistics/overview - IP: 36.27.52.26 - 状态码: 200 21:47:32 - article_server - INFO - [SQL结果] 查询完成,返回 0 条记录 21:47:32 - article_server - INFO - [SQL结果] 查询完成,返回 0 条记录 21:47:32 - article_server - INFO - [API访问] GET /api/statistics/by-product - IP: 36.27.52.26 - User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Sa 21:47:32 - article_server - INFO - [Token验证成功] 用户ID: 4 21:47:32 - article_server - INFO - [SQL执行] 开始执行查询SQL 21:47:32 - article_server - INFO - [SQL语句] SELECT id, coze_tag, created_at FROM ai_article_tags WHERE article_id = %s 21:47:32 - article_server - INFO - [SQL参数] (24,) 21:47:32 - article_server - INFO - [SQL执行] 开始执行查询SQL 21:47:32 - article_server - INFO - [SQL语句] SELECT r.product_id, p.name as product_name, COUNT(*) as count, ROUND(COUNT(*) * 100.0 / (SELECT COUNT(*) FROM ai_article_published_records WHERE r.enterprise_id = %s), 0) as percentage FROM ai_article_published_records r LEFT JOIN ai_products p ON r.product_id = p.id WHERE r.enterprise_id = %s GROUP BY r.product_id, p.name ORDER BY count DESC 21:47:32 - article_server - INFO - [SQL参数] [1, 1] 21:47:32 - article_server - INFO - [SQL执行] 开始执行查询SQL 21:47:32 - article_server - INFO - [SQL语句] SELECT id, tag_name FROM ai_product_tags WHERE product_id = %s 21:47:32 - article_server - INFO - [SQL参数] (11,) 21:47:32 - article_server - INFO - [SQL结果] 查询完成,返回 0 条记录 21:47:32 - article_server - INFO - [SQL结果] 查询完成,返回 3 条记录 21:47:32 - article_server - INFO - [SQL数据] 查询结果: [{'product_id': 2, 'product_name': '保湿精华', 'count': 1, 'percentage': Decimal('14')}, {'product_id': 4, 'product_name': '口红套装', 'count': 1, 'percentage': Decimal('14')}, {'product_id': 5, 'product_name': '洗面奶', 'count': 1, 'percentage': Decimal('14')}] 21:47:32 - article_server - INFO - [SQL结果] 查询完成,返回 0 条记录 21:47:32 - article_server - INFO - 按产品统计成功 21:47:32 - article_server - INFO - [API响应] GET /api/statistics/by-product - IP: 36.27.52.26 - 状态码: 200 21:47:32 - article_server - INFO - [SQL执行] 开始执行查询SQL 21:47:32 - article_server - INFO - [SQL语句] SELECT id, image_id, image_url, image_thumb_url, image_tag_id, sort_order, keywords_id, keywords_name, department_id, department_name, image_source, created_at FROM ai_article_images WHERE article_id = %s ORDER BY sort_order ASC, created_at ASC 21:47:32 - article_server - INFO - [SQL参数] (22,) 21:47:32 - article_server - INFO - [API访问] GET /api/statistics/employee-rank - IP: 36.27.52.26 - User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Sa 21:47:32 - article_server - INFO - [Token验证成功] 用户ID: 4 21:47:32 - article_server - INFO - [SQL结果] 查询完成,返回 0 条记录 21:47:32 - article_server - INFO - [SQL执行] 开始执行查询SQL 21:47:32 - article_server - INFO - [SQL语句] SELECT id, tag_name FROM ai_product_tags WHERE product_id = %s 21:47:32 - article_server - INFO - [SQL参数] (1,) 21:47:32 - article_server - INFO - [SQL执行] 开始执行查询SQL 21:47:32 - article_server - INFO - [SQL语句] SELECT r.created_user_id as employee_id, u.real_name as employee_name, COUNT(*) as count, ROW_NUMBER() OVER (ORDER BY COUNT(*) DESC) as `rank` FROM ai_article_published_records r LEFT JOIN ai_users u ON r.created_user_id = u.id WHERE r.enterprise_id = %s GROUP BY r.created_user_id, u.real_name ORDER BY count DESC LIMIT %s 21:47:32 - article_server - INFO - [SQL参数] [1, 5] 21:47:32 - article_server - INFO - [SQL结果] 查询完成,返回 1 条记录 21:47:32 - article_server - INFO - [SQL数据] 查询结果: [{'employee_id': 18, 'employee_name': '测试员工API', 'count': 3, 'rank': 1}] 21:47:32 - article_server - INFO - [SQL结果] 查询完成,返回 1 条记录 21:47:32 - article_server - INFO - [SQL数据] 查询结果: [{'id': 1, 'tag_name': '保湿'}] 21:47:32 - article_server - INFO - [SQL执行] 开始执行查询SQL 21:47:32 - article_server - INFO - [SQL语句] SELECT id, coze_tag, created_at FROM ai_article_tags WHERE article_id = %s 21:47:32 - article_server - INFO - [SQL参数] (22,) 21:47:32 - article_server - INFO - 获取员工排行成功 21:47:32 - article_server - INFO - [API响应] GET /api/statistics/employee-rank - IP: 36.27.52.26 - 状态码: 200 21:47:32 - article_server - INFO - [获取产品列表] 查询成功, 总数: 4, 当前页: 1, 每页: 100, 返回数量: 4, 企业ID: 1, IP: 36.27.52.26 21:47:32 - article_server - INFO - [API响应] GET /api/products/list - IP: 36.27.52.26 - 状态码: 200 21:47:32 - article_server - INFO - [SQL结果] 查询完成,返回 0 条记录 21:47:32 - article_server - INFO - [SQL执行] 开始执行查询SQL 21:47:32 - article_server - INFO - [SQL语句] SELECT id, image_id, image_url, image_thumb_url, image_tag_id, sort_order, keywords_id, keywords_name, department_id, department_name, image_source, created_at FROM ai_article_images WHERE article_id = %s ORDER BY sort_order ASC, created_at ASC 21:47:32 - article_server - INFO - [SQL参数] (20,) 21:47:32 - article_server - INFO - [SQL结果] 查询完成,返回 0 条记录 21:47:32 - article_server - INFO - [SQL执行] 开始执行查询SQL 21:47:32 - article_server - INFO - [SQL语句] SELECT id, coze_tag, created_at FROM ai_article_tags WHERE article_id = %s 21:47:32 - article_server - INFO - [SQL参数] (20,) 21:47:32 - article_server - INFO - [SQL结果] 查询完成,返回 0 条记录 21:47:32 - article_server - INFO - [SQL执行] 开始执行查询SQL 21:47:32 - article_server - INFO - [SQL语句] SELECT id, image_id, image_url, image_thumb_url, image_tag_id, sort_order, keywords_id, keywords_name, department_id, department_name, image_source, created_at FROM ai_article_images WHERE article_id = %s ORDER BY sort_order ASC, created_at ASC 21:47:32 - article_server - INFO - [SQL参数] (18,) 21:47:32 - article_server - INFO - [SQL结果] 查询完成,返回 0 条记录 21:47:32 - article_server - INFO - [SQL执行] 开始执行查询SQL 21:47:32 - article_server - INFO - [SQL语句] SELECT id, coze_tag, created_at FROM ai_article_tags WHERE article_id = %s 21:47:32 - article_server - INFO - [SQL参数] (18,) 21:47:33 - article_server - INFO - [SQL结果] 查询完成,返回 0 条记录 21:47:33 - article_server - INFO - [SQL执行] 开始执行查询SQL 21:47:33 - article_server - INFO - [SQL语句] SELECT id, image_id, image_url, image_thumb_url, image_tag_id, sort_order, keywords_id, keywords_name, department_id, department_name, image_source, created_at FROM ai_article_images WHERE article_id = %s ORDER BY sort_order ASC, created_at ASC 21:47:33 - article_server - INFO - [SQL参数] (16,) 21:47:33 - article_server - INFO - [SQL结果] 查询完成,返回 0 条记录 21:47:33 - article_server - INFO - [SQL执行] 开始执行查询SQL 21:47:33 - article_server - INFO - [SQL语句] SELECT id, coze_tag, created_at FROM ai_article_tags WHERE article_id = %s 21:47:33 - article_server - INFO - [SQL参数] (16,) 21:47:33 - article_server - INFO - [SQL结果] 查询完成,返回 0 条记录 21:47:33 - article_server - INFO - [SQL执行] 开始执行查询SQL 21:47:33 - article_server - INFO - [SQL语句] SELECT id, image_id, image_url, image_thumb_url, image_tag_id, sort_order, keywords_id, keywords_name, department_id, department_name, image_source, created_at FROM ai_article_images WHERE article_id = %s ORDER BY sort_order ASC, created_at ASC 21:47:33 - article_server - INFO - [SQL参数] (14,) 21:47:33 - article_server - INFO - [SQL结果] 查询完成,返回 0 条记录 21:47:33 - article_server - INFO - [SQL执行] 开始执行查询SQL 21:47:33 - article_server - INFO - [SQL语句] SELECT id, coze_tag, created_at FROM ai_article_tags WHERE article_id = %s 21:47:33 - article_server - INFO - [SQL参数] (14,) 21:47:33 - article_server - INFO - [SQL结果] 查询完成,返回 0 条记录 21:47:33 - article_server - INFO - [SQL执行] 开始执行查询SQL 21:47:33 - article_server - INFO - [SQL语句] SELECT id, image_id, image_url, image_thumb_url, image_tag_id, sort_order, keywords_id, keywords_name, department_id, department_name, image_source, created_at FROM ai_article_images WHERE article_id = %s ORDER BY sort_order ASC, created_at ASC 21:47:33 - article_server - INFO - [SQL参数] (12,) 21:47:33 - article_server - INFO - [SQL结果] 查询完成,返回 0 条记录 21:47:33 - article_server - INFO - [SQL执行] 开始执行查询SQL 21:47:33 - article_server - INFO - [SQL语句] SELECT id, coze_tag, created_at FROM ai_article_tags WHERE article_id = %s 21:47:33 - article_server - INFO - [SQL参数] (12,) 21:47:33 - article_server - INFO - [SQL结果] 查询完成,返回 0 条记录 21:47:33 - article_server - INFO - [SQL执行] 开始执行查询SQL 21:47:33 - article_server - INFO - [SQL语句] SELECT id, image_id, image_url, image_thumb_url, image_tag_id, sort_order, keywords_id, keywords_name, department_id, department_name, image_source, created_at FROM ai_article_images WHERE article_id = %s ORDER BY sort_order ASC, created_at ASC 21:47:33 - article_server - INFO - [SQL参数] (1,) 21:47:33 - article_server - INFO - [SQL结果] 查询完成,返回 0 条记录 21:47:33 - article_server - INFO - [SQL执行] 开始执行查询SQL 21:47:33 - article_server - INFO - [SQL语句] SELECT id, coze_tag, created_at FROM ai_article_tags WHERE article_id = %s 21:47:33 - article_server - INFO - [SQL参数] (1,) 21:47:33 - article_server - INFO - [SQL结果] 查询完成,返回 0 条记录 21:47:33 - article_server - INFO - [获取文章列表] 查询成功, 总数: 12, 当前页: 1, 每页: 20, 返回数量: 12, 企业ID: 1, IP: 36.27.52.26 21:47:33 - article_server - INFO - [API响应] GET /api/articles/list - IP: 36.27.52.26 - 状态码: 200 21:47:34 - article_server - INFO - [API访问] GET /api/dashboard/overview - IP: 36.27.52.26 - User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Sa 21:47:34 - article_server - INFO - [Token验证成功] 用户ID: 4 21:47:34 - article_server - INFO - [API访问] GET /api/dashboard/recent-publishes - IP: 36.27.52.26 - User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Sa 21:47:34 - article_server - INFO - [API访问] GET /api/dashboard/hot-products - IP: 36.27.52.26 - User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Sa 21:47:34 - article_server - INFO - [Token验证成功] 用户ID: 4 21:47:34 - article_server - INFO - [Token验证成功] 用户ID: 4 21:47:34 - article_server - INFO - [SQL执行] 开始执行查询SQL 21:47:34 - article_server - INFO - [SQL语句] SELECT users_total, products_total, articles_total, published_total FROM ai_enterprises WHERE id = %s 21:47:34 - article_server - INFO - [SQL参数] (1,) 21:47:34 - article_server - INFO - [SQL执行] 开始执行查询SQL 21:47:34 - article_server - INFO - [SQL语句] SELECT r.id, r.publish_time, u.real_name as employee_name, p.name as product_name, 'success' as status FROM ai_article_published_records r LEFT JOIN ai_users u ON r.created_user_id = u.id LEFT JOIN ai_products p ON r.product_id = p.id WHERE r.enterprise_id = %s ORDER BY r.publish_time DESC LIMIT %s 21:47:34 - article_server - INFO - [SQL参数] (1, 5) 21:47:34 - article_server - INFO - [SQL执行] 开始执行查询SQL 21:47:34 - article_server - INFO - [SQL语句] SELECT r.product_id, p.name as product_name, COUNT(*) as publishes, ROUND(COUNT(*) * 100.0 / (SELECT COUNT(*) FROM ai_article_published_records WHERE enterprise_id = %s), 0) as percentage FROM ai_article_published_records r LEFT JOIN ai_products p ON r.product_id = p.id WHERE r.enterprise_id = %s GROUP BY r.product_id, p.name ORDER BY publishes DESC LIMIT %s 21:47:34 - article_server - INFO - [SQL参数] (1, 1, 4) 21:47:34 - article_server - INFO - [SQL结果] 查询完成,返回 1 条记录 21:47:34 - article_server - INFO - [SQL数据] 查询结果: [{'users_total': 2, 'products_total': 1, 'articles_total': 12, 'published_total': 0}] 21:47:34 - article_server - INFO - [SQL结果] 查询完成,返回 3 条记录 21:47:34 - article_server - INFO - [SQL数据] 查询结果: [{'id': 7, 'publish_time': datetime.datetime(2025, 12, 16, 19, 32, 25), 'employee_name': '测试员工API', 'product_name': '洗面奶', 'status': 'success'}, {'id': 6, 'publish_time': datetime.datetime(2025, 12, 16, 11, 55, 56), 'employee_name': '测试员工API', 'product_name': '口红套装', 'status': 'success'}, {'id': 5, 'publish_time': datetime.datetime(2025, 12, 16, 10, 17, 8), 'employee_name': '测试员工API', 'product_name': '保湿精华', 'status': 'success'}] 21:47:34 - article_server - INFO - [SQL结果] 查询完成,返回 3 条记录 21:47:34 - article_server - INFO - [SQL数据] 查询结果: [{'product_id': 2, 'product_name': '保湿精华', 'publishes': 1, 'percentage': Decimal('33')}, {'product_id': 4, 'product_name': '口红套装', 'publishes': 1, 'percentage': Decimal('33')}, {'product_id': 5, 'product_name': '洗面奶', 'publishes': 1, 'percentage': Decimal('33')}] 21:47:34 - article_server - INFO - 获取最近发布成功 21:47:34 - article_server - INFO - [API响应] GET /api/dashboard/recent-publishes - IP: 36.27.52.26 - 状态码: 200 21:47:34 - article_server - INFO - 获取热门产品成功 21:47:34 - article_server - INFO - [API响应] GET /api/dashboard/hot-products - IP: 36.27.52.26 - 状态码: 200 21:47:34 - article_server - INFO - [SQL执行] 开始执行查询SQL 21:47:34 - article_server - INFO - [SQL语句] SELECT COUNT(*) as month_published FROM ai_article_published_records WHERE enterprise_id = %s AND YEAR(publish_time) = YEAR(CURDATE()) AND MONTH(publish_time) = MONTH(CURDATE()) 21:47:34 - article_server - INFO - [SQL参数] (1,) 21:47:34 - article_server - INFO - [SQL结果] 查询完成,返回 1 条记录 21:47:34 - article_server - INFO - [SQL数据] 查询结果: [{'month_published': 3}] 21:47:34 - article_server - INFO - [SQL执行] 开始执行查询SQL 21:47:34 - article_server - INFO - [SQL语句] SELECT COUNT(*) as last_month_published FROM ai_article_published_records WHERE enterprise_id = %s AND YEAR(publish_time) = YEAR(DATE_SUB(CURDATE(), INTERVAL 1 MONTH)) AND MONTH(publish_time) = MONTH(DATE_SUB(CURDATE(), INTERVAL 1 MONTH)) 21:47:34 - article_server - INFO - [SQL参数] (1,) 21:47:34 - article_server - INFO - [SQL结果] 查询完成,返回 1 条记录 21:47:34 - article_server - INFO - [SQL数据] 查询结果: [{'last_month_published': 0}] 21:47:34 - article_server - INFO - 获取工作台概览成功 21:47:34 - article_server - INFO - [API响应] GET /api/dashboard/overview - IP: 36.27.52.26 - 状态码: 200 21:47:36 - article_server - INFO - [API访问] GET /api/enterprises/list - IP: 36.27.52.26 - User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Sa 21:47:36 - article_server - INFO - [Token验证成功] 用户ID: 4 21:47:36 - article_server - INFO - [获取企业列表] 开始处理请求, IP: 36.27.52.26 21:47:36 - article_server - INFO - [获取企业列表] 查询参数: page=1, pageSize=100, keyword=, status=, IP: 36.27.52.26 21:47:36 - article_server - INFO - [SQL执行] 开始执行查询SQL 21:47:36 - article_server - INFO - [SQL语句] SELECT COUNT(*) as total FROM ai_enterprises WHERE 1=1 21:47:36 - article_server - INFO - [SQL结果] 查询完成,返回 1 条记录 21:47:36 - article_server - INFO - [SQL数据] 查询结果: [{'total': 11}] 21:47:36 - article_server - INFO - [SQL执行] 开始执行查询SQL 21:47:36 - article_server - INFO - [SQL语句] SELECT id, enterprise_ID, name, short_name, phone, email, status, users_total, products_total, articles_total, published_total, created_at, updated_at FROM ai_enterprises WHERE 1=1 ORDER BY created_at DESC LIMIT %s OFFSET %s 21:47:36 - article_server - INFO - [SQL参数] [100, 0] 21:47:36 - article_server - INFO - [SQL结果] 查询完成,返回 11 条记录 21:47:36 - article_server - INFO - [获取企业列表] 查询成功, 总数: 11, 当前页: 1, 每页: 100, 返回数量: 11, IP: 36.27.52.26 21:47:36 - article_server - INFO - [API响应] GET /api/enterprises/list - IP: 36.27.52.26 - 状态码: 200 21:48:02 - article_server - INFO - [API访问] POST /api/enterprises/create - IP: 36.27.52.26 - User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Sa 21:48:02 - article_server - INFO - [Token验证成功] 用户ID: 4 21:48:02 - article_server - INFO - [创建企业] 开始处理创建企业请求, IP: 36.27.52.26 21:48:02 - article_server - INFO - [创建企业] 收到创建请求, 企业名称: fasdfasdf, 简称: fasdfdsaf, 手机号: 13621242433, IP: 36.27.52.26 21:48:02 - article_server - INFO - [创建企业] 检查ai_enterprises表手机号是否已存在: 13621242433 21:48:02 - article_server - INFO - [SQL执行] 开始执行查询SQL 21:48:02 - article_server - INFO - [SQL语句] SELECT id FROM ai_enterprises WHERE phone = %s 21:48:02 - article_server - INFO - [SQL参数] ('13621242433',) 21:48:02 - article_server - INFO - [SQL结果] 查询完成,返回 0 条记录 21:48:02 - article_server - INFO - [创建企业] 检查ai_users表手机号是否已存在: 13621242433 21:48:02 - article_server - INFO - [SQL执行] 开始执行查询SQL 21:48:02 - article_server - INFO - [SQL语句] SELECT id FROM ai_users WHERE phone = %s 21:48:02 - article_server - INFO - [SQL参数] ('13621242433',) 21:48:02 - article_server - INFO - [SQL结果] 查询完成,返回 0 条记录 21:48:02 - article_server - INFO - [创建企业] 生成企业ID: ENT-20251216-6562C639, 企业名称: fasdfasdf 21:48:02 - article_server - INFO - [创建企业] 开始插入ai_enterprises表, 企业ID: ENT-20251216-6562C639, 名称: fasdfasdf 21:48:02 - article_server - INFO - [SQL执行] 开始执行插入SQL 21:48:02 - article_server - INFO - [SQL语句] INSERT INTO ai_enterprises (enterprise_ID, name, short_name, icon, phone, email, website, address, status, users_total, products_total, published_total, articles_total, released_month_total, linked_to_xhs_num) VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s) 21:48:02 - article_server - INFO - [SQL参数] ('ENT-20251216-6562C639', 'fasdfasdf', 'fasdfdsaf', '', '13621242433', 'raowenlong@baidu.com', '', '', 'active', 0, 0, 0, 0, 0, 0) 21:48:02 - article_server - INFO - [SQL结果] 插入完成,新记录ID: 13 21:48:02 - article_server - INFO - [创建企业] ai_enterprises表插入成功, 数据库ID: 13, 企业ID: ENT-20251216-6562C639 21:48:02 - article_server - INFO - [创建企业] 开始创建企业管理员用户, 手机号: 13621242433, 角色: enterprise 21:48:02 - article_server - INFO - [SQL执行] 开始执行插入SQL 21:48:02 - article_server - INFO - [SQL语句] INSERT INTO ai_users (enterprise_id, enterprise_name, username, password, real_name, email, phone, department, role, status) VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s) 21:48:02 - article_server - INFO - [SQL参数] (13, 'fasdfasdf', '13621242433', '240be518fabd2724ddb6f04eeb1da5967448d7e831c08c8fa822809f74c720a9', 'fasdfdsaf', 'raowenlong@baidu.com', '13621242433', '', 'enterprise', 'active') 21:48:02 - article_server - INFO - [SQL结果] 插入完成,新记录ID: 19 21:48:02 - article_server - INFO - [创建企业] ai_users表插入成功, 用户ID: 19, 用户名: 13621242433, 角色: enterprise 21:48:02 - article_server - INFO - [创建企业] 企业创建成功, 企业DB_ID: 13, 企业ID: ENT-20251216-6562C639, 名称: fasdfasdf, 管理员用户ID: 19, IP: 36.27.52.26 21:48:02 - article_server - INFO - [SQL执行] 开始执行插入SQL 21:48:02 - article_server - INFO - [SQL语句] INSERT INTO ai_logs (user_id, action, target_type, target_id, description, ip_address, user_agent, request_data, response_data, status, error_message, created_at) VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, NOW()) 21:48:02 - article_server - INFO - [SQL参数] (4, 'create_enterprise', 'enterprise', 13, '创建企业: fasdfasdf, 同时创建企业管理员用户', '36.27.52.26', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Safari/537.36', '{"name": "fasdfasdf", "short_name": "fasdfdsaf", "phone": "13621242433", "password": "***", "email": "raowenlong@baidu.com"}', '{"enterprise_id": 13, "enterprise_ID": "ENT-20251216-6562C639", "user_id": 19}', 'success', None) 21:48:02 - article_server - INFO - [SQL结果] 插入完成,新记录ID: 14 21:48:02 - article_server - INFO - [业务日志] 操作: create_enterprise | 用户ID: 4 | 目标: enterprise#13 | 状态: success | IP: 36.27.52.26 | 日志ID: 14 21:48:02 - article_server - INFO - [API响应] POST /api/enterprises/create - IP: 36.27.52.26 - 状态码: 200 21:48:02 - article_server - INFO - [API访问] GET /api/enterprises/list - IP: 36.27.52.26 - User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Sa 21:48:02 - article_server - INFO - [Token验证成功] 用户ID: 4 21:48:02 - article_server - INFO - [获取企业列表] 开始处理请求, IP: 36.27.52.26 21:48:02 - article_server - INFO - [获取企业列表] 查询参数: page=1, pageSize=100, keyword=, status=, IP: 36.27.52.26 21:48:02 - article_server - INFO - [SQL执行] 开始执行查询SQL 21:48:02 - article_server - INFO - [SQL语句] SELECT COUNT(*) as total FROM ai_enterprises WHERE 1=1 21:48:02 - article_server - INFO - [SQL结果] 查询完成,返回 1 条记录 21:48:02 - article_server - INFO - [SQL数据] 查询结果: [{'total': 12}] 21:48:02 - article_server - INFO - [SQL执行] 开始执行查询SQL 21:48:02 - article_server - INFO - [SQL语句] SELECT id, enterprise_ID, name, short_name, phone, email, status, users_total, products_total, articles_total, published_total, created_at, updated_at FROM ai_enterprises WHERE 1=1 ORDER BY created_at DESC LIMIT %s OFFSET %s 21:48:02 - article_server - INFO - [SQL参数] [100, 0] 21:48:02 - article_server - INFO - [SQL结果] 查询完成,返回 12 条记录 21:48:02 - article_server - INFO - [获取企业列表] 查询成功, 总数: 12, 当前页: 1, 每页: 100, 返回数量: 12, IP: 36.27.52.26 21:48:02 - article_server - INFO - [API响应] GET /api/enterprises/list - IP: 36.27.52.26 - 状态码: 200 21:48:06 - article_server - INFO - [API访问] GET /api/enterprises/list - IP: 36.27.52.26 - User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Sa 21:48:06 - article_server - INFO - [Token验证成功] 用户ID: 4 21:48:06 - article_server - INFO - [获取企业列表] 开始处理请求, IP: 36.27.52.26 21:48:06 - article_server - INFO - [获取企业列表] 查询参数: page=1, pageSize=100, keyword=, status=, IP: 36.27.52.26 21:48:06 - article_server - INFO - [API访问] GET /api/users/info - IP: 36.27.52.26 - User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Sa 21:48:06 - article_server - INFO - [Token验证成功] 用户ID: 4 21:48:06 - article_server - INFO - [获取用户信息] 开始处理请求, IP: 36.27.52.26 21:48:06 - article_server - INFO - [获取用户信息] 用户ID: 4, IP: 36.27.52.26 21:48:06 - article_server - INFO - [SQL执行] 开始执行查询SQL 21:48:06 - article_server - INFO - [SQL执行] 开始执行查询SQL 21:48:06 - article_server - INFO - [SQL语句] SELECT id, enterprise_id, enterprise_name, username, real_name, email, phone, wechat_openid, wechat_unionid, xhs_cookie, xhs_phone, xhs_account, is_bound_xhs, bound_at, department, role, status, created_at, updated_at FROM ai_users WHERE id = %s AND status != 'deleted' 21:48:06 - article_server - INFO - [SQL语句] SELECT COUNT(*) as total FROM ai_enterprises WHERE 1=1 21:48:06 - article_server - INFO - [SQL参数] (4,) 21:48:06 - article_server - INFO - [SQL结果] 查询完成,返回 1 条记录 21:48:06 - article_server - INFO - [SQL数据] 查询结果: [{'id': 4, 'enterprise_id': 1, 'enterprise_name': 'rwl企业4号', 'username': 'user004', 'real_name': '饶文龙', 'email': None, 'phone': '13621242430', 'wechat_openid': None, 'wechat_unionid': None, 'xhs_cookie': None, 'xhs_phone': '', 'xhs_account': '小红书用户4', 'is_bound_xhs': 1, 'bound_at': None, 'department': '技术部', 'role': 'enterprise', 'status': 'active', 'created_at': datetime.datetime(2025, 12, 12, 16, 58, 22), 'updated_at': datetime.datetime(2025, 12, 16, 13, 47, 4)}] 21:48:06 - article_server - INFO - [SQL结果] 查询完成,返回 1 条记录 21:48:06 - article_server - INFO - [SQL数据] 查询结果: [{'total': 12}] 21:48:06 - article_server - INFO - [获取用户信息] 查询成功, 用户: user004, 角色: enterprise, 企业: rwl企业4号, IP: 36.27.52.26 21:48:06 - article_server - INFO - [SQL执行] 开始执行插入SQL 21:48:06 - article_server - INFO - [SQL语句] INSERT INTO ai_logs (user_id, action, target_type, target_id, description, ip_address, user_agent, request_data, response_data, status, error_message, created_at) VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, NOW()) 21:48:06 - article_server - INFO - [SQL参数] (4, 'get_user_info', 'user', 4, '查询用户信息: user004', '36.27.52.26', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Safari/537.36', None, None, 'success', None) 21:48:06 - article_server - INFO - [SQL执行] 开始执行查询SQL 21:48:06 - article_server - INFO - [SQL语句] SELECT id, enterprise_ID, name, short_name, phone, email, status, users_total, products_total, articles_total, published_total, created_at, updated_at FROM ai_enterprises WHERE 1=1 ORDER BY created_at DESC LIMIT %s OFFSET %s 21:48:06 - article_server - INFO - [SQL参数] [100, 0] 21:48:06 - article_server - INFO - [SQL结果] 插入完成,新记录ID: 15 21:48:06 - article_server - INFO - [SQL结果] 查询完成,返回 12 条记录 21:48:06 - article_server - INFO - [业务日志] 操作: get_user_info | 用户ID: 4 | 目标: user#4 | 状态: success | IP: 36.27.52.26 | 日志ID: 15 21:48:06 - article_server - INFO - [API响应] GET /api/users/info - IP: 36.27.52.26 - 状态码: 200 21:48:06 - article_server - INFO - [获取企业列表] 查询成功, 总数: 12, 当前页: 1, 每页: 100, 返回数量: 12, IP: 36.27.52.26 21:48:06 - article_server - INFO - [API响应] GET /api/enterprises/list - IP: 36.27.52.26 - 状态码: 200 21:48:34 - article_server - INFO - [API访问] PUT /api/enterprises/13 - IP: 36.27.52.26 - User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Sa 21:48:34 - article_server - INFO - [Token验证成功] 用户ID: 4 21:48:34 - article_server - INFO - [SQL执行] 开始执行查询SQL 21:48:34 - article_server - INFO - [SQL语句] SELECT id FROM ai_enterprises WHERE id = %s 21:48:34 - article_server - INFO - [SQL参数] (13,) 21:48:34 - article_server - INFO - [SQL结果] 查询完成,返回 1 条记录 21:48:34 - article_server - INFO - [SQL数据] 查询结果: [{'id': 13}] 21:48:34 - article_server - INFO - [SQL执行] 开始执行更新SQL 21:48:34 - article_server - INFO - [SQL语句] UPDATE ai_enterprises SET name = %s, short_name = %s, email = %s, password = %s, updated_at = NOW() WHERE id = %s 21:48:34 - article_server - INFO - [SQL参数] ['fasdfasdf1饶', 'fasdfasdf1饶', 'raowenlong@baidu.com', '240be518fabd2724ddb6f04eeb1da5967448d7e831c08c8fa822809f74c720a9', 13] 21:48:34 - article_server - ERROR - 数据库操作失败: (1054, "Unknown column 'password' in 'field list'") 21:48:34 - article_server - ERROR - [SQL执行失败] 更新SQL执行异常: (1054, "Unknown column 'password' in 'field list'") 21:48:34 - article_server - ERROR - [SQL语句] UPDATE ai_enterprises SET name = %s, short_name = %s, email = %s, password = %s, updated_at = NOW() WHERE id = %s 21:48:34 - article_server - ERROR - [SQL参数] ['fasdfasdf1饶', 'fasdfasdf1饶', 'raowenlong@baidu.com', '240be518fabd2724ddb6f04eeb1da5967448d7e831c08c8fa822809f74c720a9', 13] 21:48:34 - article_server - ERROR - [更新企业] 处理请求时发生错误: (1054, "Unknown column 'password' in 'field list'") Traceback (most recent call last): File "/home/work/ai_wht/enterprise_routes.py", line 305, in update_enterprise db_manager.execute_update(sql, params) File "/home/work/ai_wht/database_config.py", line 226, in execute_update return self._execute_with_retry(_update_operation) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/work/ai_wht/database_config.py", line 103, in _execute_with_retry return operation(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/work/ai_wht/database_config.py", line 212, in _update_operation affected_rows = cursor.execute(sql, params) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/work/keyword_crawl/venv/lib/python3.12/site-packages/pymysql/cursors.py", line 153, in execute result = self._query(query) ^^^^^^^^^^^^^^^^^^ File "/home/work/keyword_crawl/venv/lib/python3.12/site-packages/pymysql/cursors.py", line 322, in _query conn.query(q) File "/home/work/keyword_crawl/venv/lib/python3.12/site-packages/pymysql/connections.py", line 563, in query self._affected_rows = self._read_query_result(unbuffered=unbuffered) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/work/keyword_crawl/venv/lib/python3.12/site-packages/pymysql/connections.py", line 825, in _read_query_result result.read() File "/home/work/keyword_crawl/venv/lib/python3.12/site-packages/pymysql/connections.py", line 1199, in read first_packet = self.connection._read_packet() ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/work/keyword_crawl/venv/lib/python3.12/site-packages/pymysql/connections.py", line 775, in _read_packet packet.raise_for_error() File "/home/work/keyword_crawl/venv/lib/python3.12/site-packages/pymysql/protocol.py", line 219, in raise_for_error err.raise_mysql_exception(self._data) File "/home/work/keyword_crawl/venv/lib/python3.12/site-packages/pymysql/err.py", line 150, in raise_mysql_exception raise errorclass(errno, errval) pymysql.err.OperationalError: (1054, "Unknown column 'password' in 'field list'") 21:48:34 - article_server - INFO - [API响应] PUT /api/enterprises/13 - IP: 36.27.52.26 - 状态码: 500 21:48:43 - article_server - INFO - [API访问] PUT /api/enterprises/13 - IP: 36.27.52.26 - User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Sa 21:48:43 - article_server - INFO - [Token验证成功] 用户ID: 4 21:48:43 - article_server - INFO - [SQL执行] 开始执行查询SQL 21:48:43 - article_server - INFO - [SQL语句] SELECT id FROM ai_enterprises WHERE id = %s 21:48:43 - article_server - INFO - [SQL参数] (13,) 21:48:43 - article_server - INFO - [SQL结果] 查询完成,返回 1 条记录 21:48:43 - article_server - INFO - [SQL数据] 查询结果: [{'id': 13}] 21:48:43 - article_server - INFO - [SQL执行] 开始执行更新SQL 21:48:43 - article_server - INFO - [SQL语句] UPDATE ai_enterprises SET name = %s, short_name = %s, email = %s, password = %s, updated_at = NOW() WHERE id = %s 21:48:43 - article_server - INFO - [SQL参数] ['fasdfasdf1饶', 'fasdfasdf1饶', 'raowenlong@baidu.com', '240be518fabd2724ddb6f04eeb1da5967448d7e831c08c8fa822809f74c720a9', 13] 21:48:43 - article_server - ERROR - 数据库操作失败: (1054, "Unknown column 'password' in 'field list'") 21:48:43 - article_server - ERROR - [SQL执行失败] 更新SQL执行异常: (1054, "Unknown column 'password' in 'field list'") 21:48:43 - article_server - ERROR - [SQL语句] UPDATE ai_enterprises SET name = %s, short_name = %s, email = %s, password = %s, updated_at = NOW() WHERE id = %s 21:48:43 - article_server - ERROR - [SQL参数] ['fasdfasdf1饶', 'fasdfasdf1饶', 'raowenlong@baidu.com', '240be518fabd2724ddb6f04eeb1da5967448d7e831c08c8fa822809f74c720a9', 13] 21:48:43 - article_server - ERROR - [更新企业] 处理请求时发生错误: (1054, "Unknown column 'password' in 'field list'") Traceback (most recent call last): File "/home/work/ai_wht/enterprise_routes.py", line 305, in update_enterprise db_manager.execute_update(sql, params) File "/home/work/ai_wht/database_config.py", line 226, in execute_update return self._execute_with_retry(_update_operation) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/work/ai_wht/database_config.py", line 103, in _execute_with_retry return operation(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/work/ai_wht/database_config.py", line 212, in _update_operation affected_rows = cursor.execute(sql, params) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/work/keyword_crawl/venv/lib/python3.12/site-packages/pymysql/cursors.py", line 153, in execute result = self._query(query) ^^^^^^^^^^^^^^^^^^ File "/home/work/keyword_crawl/venv/lib/python3.12/site-packages/pymysql/cursors.py", line 322, in _query conn.query(q) File "/home/work/keyword_crawl/venv/lib/python3.12/site-packages/pymysql/connections.py", line 563, in query self._affected_rows = self._read_query_result(unbuffered=unbuffered) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/work/keyword_crawl/venv/lib/python3.12/site-packages/pymysql/connections.py", line 825, in _read_query_result result.read() File "/home/work/keyword_crawl/venv/lib/python3.12/site-packages/pymysql/connections.py", line 1199, in read first_packet = self.connection._read_packet() ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/work/keyword_crawl/venv/lib/python3.12/site-packages/pymysql/connections.py", line 775, in _read_packet packet.raise_for_error() File "/home/work/keyword_crawl/venv/lib/python3.12/site-packages/pymysql/protocol.py", line 219, in raise_for_error err.raise_mysql_exception(self._data) File "/home/work/keyword_crawl/venv/lib/python3.12/site-packages/pymysql/err.py", line 150, in raise_mysql_exception raise errorclass(errno, errval) pymysql.err.OperationalError: (1054, "Unknown column 'password' in 'field list'") 21:48:43 - article_server - INFO - [API响应] PUT /api/enterprises/13 - IP: 36.27.52.26 - 状态码: 500 21:48:49 - article_server - INFO - [API访问] GET /api/enterprises/list - IP: 36.27.52.26 - User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Sa 21:48:49 - article_server - INFO - [Token验证成功] 用户ID: 4 21:48:49 - article_server - INFO - [获取企业列表] 开始处理请求, IP: 36.27.52.26 21:48:49 - article_server - INFO - [获取企业列表] 查询参数: page=1, pageSize=100, keyword=, status=, IP: 36.27.52.26 21:48:49 - article_server - INFO - [API访问] GET /api/users/info - IP: 36.27.52.26 - User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Sa 21:48:49 - article_server - INFO - [Token验证成功] 用户ID: 4 21:48:49 - article_server - INFO - [获取用户信息] 开始处理请求, IP: 36.27.52.26 21:48:49 - article_server - INFO - [获取用户信息] 用户ID: 4, IP: 36.27.52.26 21:48:49 - article_server - INFO - [SQL执行] 开始执行查询SQL 21:48:49 - article_server - INFO - [SQL语句] SELECT COUNT(*) as total FROM ai_enterprises WHERE 1=1 21:48:49 - article_server - INFO - [SQL执行] 开始执行查询SQL 21:48:49 - article_server - INFO - [SQL语句] SELECT id, enterprise_id, enterprise_name, username, real_name, email, phone, wechat_openid, wechat_unionid, xhs_cookie, xhs_phone, xhs_account, is_bound_xhs, bound_at, department, role, status, created_at, updated_at FROM ai_users WHERE id = %s AND status != 'deleted' 21:48:49 - article_server - INFO - [SQL参数] (4,) 21:48:49 - article_server - INFO - [SQL结果] 查询完成,返回 1 条记录 21:48:49 - article_server - INFO - [SQL数据] 查询结果: [{'total': 12}] 21:48:49 - article_server - INFO - [SQL结果] 查询完成,返回 1 条记录 21:48:49 - article_server - INFO - [SQL数据] 查询结果: [{'id': 4, 'enterprise_id': 1, 'enterprise_name': 'rwl企业4号', 'username': 'user004', 'real_name': '饶文龙', 'email': None, 'phone': '13621242430', 'wechat_openid': None, 'wechat_unionid': None, 'xhs_cookie': None, 'xhs_phone': '', 'xhs_account': '小红书用户4', 'is_bound_xhs': 1, 'bound_at': None, 'department': '技术部', 'role': 'enterprise', 'status': 'active', 'created_at': datetime.datetime(2025, 12, 12, 16, 58, 22), 'updated_at': datetime.datetime(2025, 12, 16, 13, 47, 4)}] 21:48:49 - article_server - INFO - [获取用户信息] 查询成功, 用户: user004, 角色: enterprise, 企业: rwl企业4号, IP: 36.27.52.26 21:48:49 - article_server - INFO - [SQL执行] 开始执行查询SQL 21:48:49 - article_server - INFO - [SQL语句] SELECT id, enterprise_ID, name, short_name, phone, email, status, users_total, products_total, articles_total, published_total, created_at, updated_at FROM ai_enterprises WHERE 1=1 ORDER BY created_at DESC LIMIT %s OFFSET %s 21:48:49 - article_server - INFO - [SQL参数] [100, 0] 21:48:49 - article_server - INFO - [SQL结果] 查询完成,返回 12 条记录 21:48:49 - article_server - INFO - [SQL执行] 开始执行插入SQL 21:48:49 - article_server - INFO - [SQL语句] INSERT INTO ai_logs (user_id, action, target_type, target_id, description, ip_address, user_agent, request_data, response_data, status, error_message, created_at) VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, NOW()) 21:48:49 - article_server - INFO - [SQL参数] (4, 'get_user_info', 'user', 4, '查询用户信息: user004', '36.27.52.26', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Safari/537.36', None, None, 'success', None) 21:48:49 - article_server - INFO - [获取企业列表] 查询成功, 总数: 12, 当前页: 1, 每页: 100, 返回数量: 12, IP: 36.27.52.26 21:48:49 - article_server - INFO - [API响应] GET /api/enterprises/list - IP: 36.27.52.26 - 状态码: 200 21:48:49 - article_server - INFO - [SQL结果] 插入完成,新记录ID: 16 21:48:49 - article_server - INFO - [业务日志] 操作: get_user_info | 用户ID: 4 | 目标: user#4 | 状态: success | IP: 36.27.52.26 | 日志ID: 16 21:48:49 - article_server - INFO - [API响应] GET /api/users/info - IP: 36.27.52.26 - 状态码: 200 21:48:54 - article_server - INFO - [API访问] DELETE /api/enterprises/13 - IP: 36.27.52.26 - User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Sa 21:48:54 - article_server - INFO - [Token验证成功] 用户ID: 4 21:48:54 - article_server - INFO - [SQL执行] 开始执行查询SQL 21:48:54 - article_server - INFO - [SQL语句] SELECT id, name FROM ai_enterprises WHERE id = %s 21:48:54 - article_server - INFO - [SQL参数] (13,) 21:48:54 - article_server - INFO - [SQL结果] 查询完成,返回 1 条记录 21:48:54 - article_server - INFO - [SQL数据] 查询结果: [{'id': 13, 'name': 'fasdfasdf'}] 21:48:54 - article_server - INFO - [SQL执行] 开始执行更新SQL 21:48:54 - article_server - INFO - [SQL语句] DELETE FROM ai_enterprises WHERE id = %s 21:48:54 - article_server - INFO - [SQL参数] (13,) 21:48:54 - article_server - INFO - [SQL结果] 更新完成,影响 1 行 21:48:54 - article_server - INFO - 删除企业成功: fasdfasdf 21:48:54 - article_server - INFO - [SQL执行] 开始执行插入SQL 21:48:54 - article_server - INFO - [SQL语句] INSERT INTO ai_logs (user_id, action, target_type, target_id, description, ip_address, user_agent, request_data, response_data, status, error_message, created_at) VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, NOW()) 21:48:54 - article_server - INFO - [SQL参数] (4, 'delete_enterprise', 'enterprise', 13, '删除企业: fasdfasdf', '36.27.52.26', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Safari/537.36', None, None, 'success', None) 21:48:54 - article_server - INFO - [SQL结果] 插入完成,新记录ID: 17 21:48:54 - article_server - INFO - [业务日志] 操作: delete_enterprise | 用户ID: 4 | 目标: enterprise#13 | 状态: success | IP: 36.27.52.26 | 日志ID: 17 21:48:54 - article_server - INFO - [API响应] DELETE /api/enterprises/13 - IP: 36.27.52.26 - 状态码: 200 21:48:54 - article_server - INFO - [API访问] GET /api/enterprises/list - IP: 36.27.52.26 - User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Sa 21:48:54 - article_server - INFO - [Token验证成功] 用户ID: 4 21:48:54 - article_server - INFO - [获取企业列表] 开始处理请求, IP: 36.27.52.26 21:48:54 - article_server - INFO - [获取企业列表] 查询参数: page=1, pageSize=100, keyword=, status=, IP: 36.27.52.26 21:48:54 - article_server - INFO - [SQL执行] 开始执行查询SQL 21:48:54 - article_server - INFO - [SQL语句] SELECT COUNT(*) as total FROM ai_enterprises WHERE 1=1 21:48:54 - article_server - INFO - [SQL结果] 查询完成,返回 1 条记录 21:48:54 - article_server - INFO - [SQL数据] 查询结果: [{'total': 11}] 21:48:54 - article_server - INFO - [SQL执行] 开始执行查询SQL 21:48:54 - article_server - INFO - [SQL语句] SELECT id, enterprise_ID, name, short_name, phone, email, status, users_total, products_total, articles_total, published_total, created_at, updated_at FROM ai_enterprises WHERE 1=1 ORDER BY created_at DESC LIMIT %s OFFSET %s 21:48:54 - article_server - INFO - [SQL参数] [100, 0] 21:48:54 - article_server - INFO - [SQL结果] 查询完成,返回 11 条记录 21:48:54 - article_server - INFO - [获取企业列表] 查询成功, 总数: 11, 当前页: 1, 每页: 100, 返回数量: 11, IP: 36.27.52.26 21:48:54 - article_server - INFO - [API响应] GET /api/enterprises/list - IP: 36.27.52.26 - 状态码: 200 21:48:56 - article_server - INFO - [API访问] GET /api/enterprises/list - IP: 36.27.52.26 - User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Sa 21:48:56 - article_server - INFO - [Token验证成功] 用户ID: 4 21:48:56 - article_server - INFO - [获取企业列表] 开始处理请求, IP: 36.27.52.26 21:48:56 - article_server - INFO - [获取企业列表] 查询参数: page=1, pageSize=100, keyword=, status=, IP: 36.27.52.26 21:48:56 - article_server - INFO - [API访问] GET /api/users/info - IP: 36.27.52.26 - User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Sa 21:48:56 - article_server - INFO - [Token验证成功] 用户ID: 4 21:48:56 - article_server - INFO - [获取用户信息] 开始处理请求, IP: 36.27.52.26 21:48:56 - article_server - INFO - [获取用户信息] 用户ID: 4, IP: 36.27.52.26 21:48:56 - article_server - INFO - [SQL执行] 开始执行查询SQL 21:48:56 - article_server - INFO - [SQL语句] SELECT COUNT(*) as total FROM ai_enterprises WHERE 1=1 21:48:56 - article_server - INFO - [SQL执行] 开始执行查询SQL 21:48:56 - article_server - INFO - [SQL语句] SELECT id, enterprise_id, enterprise_name, username, real_name, email, phone, wechat_openid, wechat_unionid, xhs_cookie, xhs_phone, xhs_account, is_bound_xhs, bound_at, department, role, status, created_at, updated_at FROM ai_users WHERE id = %s AND status != 'deleted' 21:48:56 - article_server - INFO - [SQL参数] (4,) 21:48:56 - article_server - INFO - [SQL结果] 查询完成,返回 1 条记录 21:48:56 - article_server - INFO - [SQL数据] 查询结果: [{'id': 4, 'enterprise_id': 1, 'enterprise_name': 'rwl企业4号', 'username': 'user004', 'real_name': '饶文龙', 'email': None, 'phone': '13621242430', 'wechat_openid': None, 'wechat_unionid': None, 'xhs_cookie': None, 'xhs_phone': '', 'xhs_account': '小红书用户4', 'is_bound_xhs': 1, 'bound_at': None, 'department': '技术部', 'role': 'enterprise', 'status': 'active', 'created_at': datetime.datetime(2025, 12, 12, 16, 58, 22), 'updated_at': datetime.datetime(2025, 12, 16, 13, 47, 4)}] 21:48:56 - article_server - INFO - [SQL结果] 查询完成,返回 1 条记录 21:48:56 - article_server - INFO - [SQL数据] 查询结果: [{'total': 11}] 21:48:56 - article_server - INFO - [获取用户信息] 查询成功, 用户: user004, 角色: enterprise, 企业: rwl企业4号, IP: 36.27.52.26 21:48:56 - article_server - INFO - [SQL执行] 开始执行插入SQL 21:48:56 - article_server - INFO - [SQL语句] INSERT INTO ai_logs (user_id, action, target_type, target_id, description, ip_address, user_agent, request_data, response_data, status, error_message, created_at) VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, NOW()) 21:48:56 - article_server - INFO - [SQL参数] (4, 'get_user_info', 'user', 4, '查询用户信息: user004', '36.27.52.26', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Safari/537.36', None, None, 'success', None) 21:48:56 - article_server - INFO - [SQL执行] 开始执行查询SQL 21:48:56 - article_server - INFO - [SQL语句] SELECT id, enterprise_ID, name, short_name, phone, email, status, users_total, products_total, articles_total, published_total, created_at, updated_at FROM ai_enterprises WHERE 1=1 ORDER BY created_at DESC LIMIT %s OFFSET %s 21:48:56 - article_server - INFO - [SQL参数] [100, 0] 21:48:56 - article_server - INFO - [SQL结果] 插入完成,新记录ID: 18 21:48:56 - article_server - INFO - [SQL结果] 查询完成,返回 11 条记录 21:48:56 - article_server - INFO - [业务日志] 操作: get_user_info | 用户ID: 4 | 目标: user#4 | 状态: success | IP: 36.27.52.26 | 日志ID: 18 21:48:56 - article_server - INFO - [API响应] GET /api/users/info - IP: 36.27.52.26 - 状态码: 200 21:48:56 - article_server - INFO - [获取企业列表] 查询成功, 总数: 11, 当前页: 1, 每页: 100, 返回数量: 11, IP: 36.27.52.26 21:48:56 - article_server - INFO - [API响应] GET /api/enterprises/list - IP: 36.27.52.26 - 状态码: 200 21:48:59 - article_server - INFO - [API访问] GET /api/enterprises/info - IP: 36.27.52.26 - User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Sa 21:48:59 - article_server - INFO - [Token验证成功] 用户ID: 4 21:48:59 - article_server - INFO - [SQL执行] 开始执行查询SQL 21:48:59 - article_server - INFO - [SQL语句] SELECT id, enterprise_ID, name, short_name, phone, email, status, users_total, products_total, articles_total, published_total, created_at, updated_at FROM ai_enterprises WHERE id = %s 21:48:59 - article_server - INFO - [SQL参数] (1,) 21:48:59 - article_server - INFO - [SQL结果] 查询完成,返回 1 条记录 21:48:59 - article_server - INFO - [SQL数据] 查询结果: [{'id': 1, 'enterprise_ID': 'ENT-2024-0001', 'name': '乐航', 'short_name': '企业1222', 'phone': '13800138001', 'email': 'raowenlong@vizee.cn', 'status': 'active', 'users_total': 2, 'products_total': 1, 'articles_total': 12, 'published_total': 0, 'created_at': datetime.datetime(2025, 12, 12, 16, 58, 22), 'updated_at': datetime.datetime(2025, 12, 13, 9, 39, 53)}] 21:48:59 - article_server - INFO - 获取企业信息成功: ID 1 21:48:59 - article_server - INFO - [API响应] GET /api/enterprises/info - IP: 36.27.52.26 - 状态码: 200 21:49:05 - article_server - INFO - [API访问] PUT /api/enterprises/info - IP: 36.27.52.26 - User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Sa 21:49:05 - article_server - INFO - [Token验证成功] 用户ID: 4 21:49:05 - article_server - INFO - [SQL执行] 开始执行更新SQL 21:49:05 - article_server - INFO - [SQL语句] UPDATE ai_enterprises SET short_name = %s, email = %s, updated_at = NOW() WHERE id = %s 21:49:05 - article_server - INFO - [SQL参数] ['企业1222333', 'raowenlong@vizee.cn', 1] 21:49:05 - article_server - INFO - [SQL结果] 更新完成,影响 1 行 21:49:05 - article_server - INFO - 企业管理员更新企业信息成功: ID 1 21:49:05 - article_server - INFO - [SQL执行] 开始执行插入SQL 21:49:05 - article_server - INFO - [SQL语句] INSERT INTO ai_logs (user_id, action, target_type, target_id, description, ip_address, user_agent, request_data, response_data, status, error_message, created_at) VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, NOW()) 21:49:05 - article_server - INFO - [SQL参数] (4, 'update_enterprise', 'enterprise', 1, '更新企业信息(企业管理员)', '36.27.52.26', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Safari/537.36', '{"short_name": "企业1222333", "email": "raowenlong@vizee.cn"}', None, 'success', None) 21:49:05 - article_server - INFO - [SQL结果] 插入完成,新记录ID: 19 21:49:05 - article_server - INFO - [业务日志] 操作: update_enterprise | 用户ID: 4 | 目标: enterprise#1 | 状态: success | IP: 36.27.52.26 | 日志ID: 19 21:49:05 - article_server - INFO - [API响应] PUT /api/enterprises/info - IP: 36.27.52.26 - 状态码: 200 21:49:08 - article_server - INFO - [API访问] GET /api/enterprises/info - IP: 36.27.52.26 - User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Sa 21:49:08 - article_server - INFO - [Token验证成功] 用户ID: 4 21:49:08 - article_server - INFO - [API访问] GET /api/users/info - IP: 36.27.52.26 - User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Sa 21:49:08 - article_server - INFO - [Token验证成功] 用户ID: 4 21:49:08 - article_server - INFO - [获取用户信息] 开始处理请求, IP: 36.27.52.26 21:49:08 - article_server - INFO - [获取用户信息] 用户ID: 4, IP: 36.27.52.26 21:49:08 - article_server - INFO - [SQL执行] 开始执行查询SQL 21:49:08 - article_server - INFO - [SQL语句] SELECT id, enterprise_id, enterprise_name, username, real_name, email, phone, wechat_openid, wechat_unionid, xhs_cookie, xhs_phone, xhs_account, is_bound_xhs, bound_at, department, role, status, created_at, updated_at FROM ai_users WHERE id = %s AND status != 'deleted' 21:49:08 - article_server - INFO - [SQL参数] (4,) 21:49:08 - article_server - INFO - [SQL执行] 开始执行查询SQL 21:49:08 - article_server - INFO - [SQL语句] SELECT id, enterprise_ID, name, short_name, phone, email, status, users_total, products_total, articles_total, published_total, created_at, updated_at FROM ai_enterprises WHERE id = %s 21:49:08 - article_server - INFO - [SQL参数] (1,) 21:49:08 - article_server - INFO - [SQL结果] 查询完成,返回 1 条记录 21:49:08 - article_server - INFO - [SQL数据] 查询结果: [{'id': 4, 'enterprise_id': 1, 'enterprise_name': 'rwl企业4号', 'username': 'user004', 'real_name': '饶文龙', 'email': None, 'phone': '13621242430', 'wechat_openid': None, 'wechat_unionid': None, 'xhs_cookie': None, 'xhs_phone': '', 'xhs_account': '小红书用户4', 'is_bound_xhs': 1, 'bound_at': None, 'department': '技术部', 'role': 'enterprise', 'status': 'active', 'created_at': datetime.datetime(2025, 12, 12, 16, 58, 22), 'updated_at': datetime.datetime(2025, 12, 16, 13, 47, 4)}] 21:49:08 - article_server - INFO - [SQL结果] 查询完成,返回 1 条记录 21:49:08 - article_server - INFO - [SQL数据] 查询结果: [{'id': 1, 'enterprise_ID': 'ENT-2024-0001', 'name': '乐航', 'short_name': '企业1222333', 'phone': '13800138001', 'email': 'raowenlong@vizee.cn', 'status': 'active', 'users_total': 2, 'products_total': 1, 'articles_total': 12, 'published_total': 0, 'created_at': datetime.datetime(2025, 12, 12, 16, 58, 22), 'updated_at': datetime.datetime(2025, 12, 16, 13, 49, 5)}] 21:49:08 - article_server - INFO - [获取用户信息] 查询成功, 用户: user004, 角色: enterprise, 企业: rwl企业4号, IP: 36.27.52.26 21:49:08 - article_server - INFO - 获取企业信息成功: ID 1 21:49:08 - article_server - INFO - [API响应] GET /api/enterprises/info - IP: 36.27.52.26 - 状态码: 200 21:49:08 - article_server - INFO - [SQL执行] 开始执行插入SQL 21:49:08 - article_server - INFO - [SQL语句] INSERT INTO ai_logs (user_id, action, target_type, target_id, description, ip_address, user_agent, request_data, response_data, status, error_message, created_at) VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, NOW()) 21:49:08 - article_server - INFO - [SQL参数] (4, 'get_user_info', 'user', 4, '查询用户信息: user004', '36.27.52.26', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Safari/537.36', None, None, 'success', None) 21:49:08 - article_server - INFO - [SQL结果] 插入完成,新记录ID: 20 21:49:08 - article_server - INFO - [业务日志] 操作: get_user_info | 用户ID: 4 | 目标: user#4 | 状态: success | IP: 36.27.52.26 | 日志ID: 20 21:49:08 - article_server - INFO - [API响应] GET /api/users/info - IP: 36.27.52.26 - 状态码: 200 21:49:21 - article_server - INFO - [API访问] PUT /api/enterprises/change-password - IP: 36.27.52.26 - User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Sa 21:49:21 - article_server - INFO - [Token验证成功] 用户ID: 4 21:49:21 - article_server - INFO - [SQL执行] 开始执行查询SQL 21:49:21 - article_server - INFO - [SQL语句] SELECT password FROM ai_enterprises WHERE id = %s 21:49:21 - article_server - INFO - [SQL参数] (1,) 21:49:21 - article_server - ERROR - 数据库操作失败: (1054, "Unknown column 'password' in 'field list'") 21:49:21 - article_server - ERROR - [SQL执行失败] 查询SQL执行异常: (1054, "Unknown column 'password' in 'field list'") 21:49:21 - article_server - ERROR - [SQL语句] SELECT password FROM ai_enterprises WHERE id = %s 21:49:21 - article_server - ERROR - [SQL参数] (1,) 21:49:21 - article_server - ERROR - [修改密码] 处理请求时发生错误: (1054, "Unknown column 'password' in 'field list'") Traceback (most recent call last): File "/home/work/ai_wht/enterprise_routes.py", line 641, in change_password result = db_manager.execute_query(sql, (enterprise_id,)) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/work/ai_wht/database_config.py", line 199, in execute_query return self._execute_with_retry(_query_operation) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/work/ai_wht/database_config.py", line 103, in _execute_with_retry return operation(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/work/ai_wht/database_config.py", line 182, in _query_operation cursor.execute(sql, params) File "/home/work/keyword_crawl/venv/lib/python3.12/site-packages/pymysql/cursors.py", line 153, in execute result = self._query(query) ^^^^^^^^^^^^^^^^^^ File "/home/work/keyword_crawl/venv/lib/python3.12/site-packages/pymysql/cursors.py", line 322, in _query conn.query(q) File "/home/work/keyword_crawl/venv/lib/python3.12/site-packages/pymysql/connections.py", line 563, in query self._affected_rows = self._read_query_result(unbuffered=unbuffered) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/work/keyword_crawl/venv/lib/python3.12/site-packages/pymysql/connections.py", line 825, in _read_query_result result.read() File "/home/work/keyword_crawl/venv/lib/python3.12/site-packages/pymysql/connections.py", line 1199, in read first_packet = self.connection._read_packet() ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/work/keyword_crawl/venv/lib/python3.12/site-packages/pymysql/connections.py", line 775, in _read_packet packet.raise_for_error() File "/home/work/keyword_crawl/venv/lib/python3.12/site-packages/pymysql/protocol.py", line 219, in raise_for_error err.raise_mysql_exception(self._data) File "/home/work/keyword_crawl/venv/lib/python3.12/site-packages/pymysql/err.py", line 150, in raise_mysql_exception raise errorclass(errno, errval) pymysql.err.OperationalError: (1054, "Unknown column 'password' in 'field list'") 21:49:21 - article_server - INFO - [API响应] PUT /api/enterprises/change-password - IP: 36.27.52.26 - 状态码: 500 21:49:23 - article_server - INFO - [API访问] PUT /api/enterprises/change-password - IP: 36.27.52.26 - User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Sa 21:49:23 - article_server - INFO - [Token验证成功] 用户ID: 4 21:49:23 - article_server - INFO - [SQL执行] 开始执行查询SQL 21:49:23 - article_server - INFO - [SQL语句] SELECT password FROM ai_enterprises WHERE id = %s 21:49:23 - article_server - INFO - [SQL参数] (1,) 21:49:23 - article_server - ERROR - 数据库操作失败: (1054, "Unknown column 'password' in 'field list'") 21:49:23 - article_server - ERROR - [SQL执行失败] 查询SQL执行异常: (1054, "Unknown column 'password' in 'field list'") 21:49:23 - article_server - ERROR - [SQL语句] SELECT password FROM ai_enterprises WHERE id = %s 21:49:23 - article_server - ERROR - [SQL参数] (1,) 21:49:23 - article_server - ERROR - [修改密码] 处理请求时发生错误: (1054, "Unknown column 'password' in 'field list'") Traceback (most recent call last): File "/home/work/ai_wht/enterprise_routes.py", line 641, in change_password result = db_manager.execute_query(sql, (enterprise_id,)) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/work/ai_wht/database_config.py", line 199, in execute_query return self._execute_with_retry(_query_operation) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/work/ai_wht/database_config.py", line 103, in _execute_with_retry return operation(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/work/ai_wht/database_config.py", line 182, in _query_operation cursor.execute(sql, params) File "/home/work/keyword_crawl/venv/lib/python3.12/site-packages/pymysql/cursors.py", line 153, in execute result = self._query(query) ^^^^^^^^^^^^^^^^^^ File "/home/work/keyword_crawl/venv/lib/python3.12/site-packages/pymysql/cursors.py", line 322, in _query conn.query(q) File "/home/work/keyword_crawl/venv/lib/python3.12/site-packages/pymysql/connections.py", line 563, in query self._affected_rows = self._read_query_result(unbuffered=unbuffered) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/work/keyword_crawl/venv/lib/python3.12/site-packages/pymysql/connections.py", line 825, in _read_query_result result.read() File "/home/work/keyword_crawl/venv/lib/python3.12/site-packages/pymysql/connections.py", line 1199, in read first_packet = self.connection._read_packet() ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/work/keyword_crawl/venv/lib/python3.12/site-packages/pymysql/connections.py", line 775, in _read_packet packet.raise_for_error() File "/home/work/keyword_crawl/venv/lib/python3.12/site-packages/pymysql/protocol.py", line 219, in raise_for_error err.raise_mysql_exception(self._data) File "/home/work/keyword_crawl/venv/lib/python3.12/site-packages/pymysql/err.py", line 150, in raise_mysql_exception raise errorclass(errno, errval) pymysql.err.OperationalError: (1054, "Unknown column 'password' in 'field list'") 21:49:23 - article_server - INFO - [API响应] PUT /api/enterprises/change-password - IP: 36.27.52.26 - 状态码: 500 21:49:23 - article_server - INFO - [API访问] PUT /api/enterprises/change-password - IP: 36.27.52.26 - User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Sa 21:49:23 - article_server - INFO - [Token验证成功] 用户ID: 4 21:49:23 - article_server - INFO - [SQL执行] 开始执行查询SQL 21:49:23 - article_server - INFO - [SQL语句] SELECT password FROM ai_enterprises WHERE id = %s 21:49:23 - article_server - INFO - [SQL参数] (1,) 21:49:23 - article_server - ERROR - 数据库操作失败: (1054, "Unknown column 'password' in 'field list'") 21:49:23 - article_server - ERROR - [SQL执行失败] 查询SQL执行异常: (1054, "Unknown column 'password' in 'field list'") 21:49:23 - article_server - ERROR - [SQL语句] SELECT password FROM ai_enterprises WHERE id = %s 21:49:23 - article_server - ERROR - [SQL参数] (1,) 21:49:23 - article_server - ERROR - [修改密码] 处理请求时发生错误: (1054, "Unknown column 'password' in 'field list'") Traceback (most recent call last): File "/home/work/ai_wht/enterprise_routes.py", line 641, in change_password result = db_manager.execute_query(sql, (enterprise_id,)) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/work/ai_wht/database_config.py", line 199, in execute_query return self._execute_with_retry(_query_operation) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/work/ai_wht/database_config.py", line 103, in _execute_with_retry return operation(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/work/ai_wht/database_config.py", line 182, in _query_operation cursor.execute(sql, params) File "/home/work/keyword_crawl/venv/lib/python3.12/site-packages/pymysql/cursors.py", line 153, in execute result = self._query(query) ^^^^^^^^^^^^^^^^^^ File "/home/work/keyword_crawl/venv/lib/python3.12/site-packages/pymysql/cursors.py", line 322, in _query conn.query(q) File "/home/work/keyword_crawl/venv/lib/python3.12/site-packages/pymysql/connections.py", line 563, in query self._affected_rows = self._read_query_result(unbuffered=unbuffered) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/work/keyword_crawl/venv/lib/python3.12/site-packages/pymysql/connections.py", line 825, in _read_query_result result.read() File "/home/work/keyword_crawl/venv/lib/python3.12/site-packages/pymysql/connections.py", line 1199, in read first_packet = self.connection._read_packet() ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/work/keyword_crawl/venv/lib/python3.12/site-packages/pymysql/connections.py", line 775, in _read_packet packet.raise_for_error() File "/home/work/keyword_crawl/venv/lib/python3.12/site-packages/pymysql/protocol.py", line 219, in raise_for_error err.raise_mysql_exception(self._data) File "/home/work/keyword_crawl/venv/lib/python3.12/site-packages/pymysql/err.py", line 150, in raise_mysql_exception raise errorclass(errno, errval) pymysql.err.OperationalError: (1054, "Unknown column 'password' in 'field list'") 21:49:23 - article_server - INFO - [API响应] PUT /api/enterprises/change-password - IP: 36.27.52.26 - 状态码: 500 21:49:23 - article_server - INFO - [API访问] PUT /api/enterprises/change-password - IP: 36.27.52.26 - User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Sa 21:49:23 - article_server - INFO - [Token验证成功] 用户ID: 4 21:49:23 - article_server - INFO - [SQL执行] 开始执行查询SQL 21:49:23 - article_server - INFO - [SQL语句] SELECT password FROM ai_enterprises WHERE id = %s 21:49:23 - article_server - INFO - [SQL参数] (1,) 21:49:23 - article_server - ERROR - 数据库操作失败: (1054, "Unknown column 'password' in 'field list'") 21:49:23 - article_server - ERROR - [SQL执行失败] 查询SQL执行异常: (1054, "Unknown column 'password' in 'field list'") 21:49:23 - article_server - ERROR - [SQL语句] SELECT password FROM ai_enterprises WHERE id = %s 21:49:23 - article_server - ERROR - [SQL参数] (1,) 21:49:23 - article_server - ERROR - [修改密码] 处理请求时发生错误: (1054, "Unknown column 'password' in 'field list'") Traceback (most recent call last): File "/home/work/ai_wht/enterprise_routes.py", line 641, in change_password result = db_manager.execute_query(sql, (enterprise_id,)) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/work/ai_wht/database_config.py", line 199, in execute_query return self._execute_with_retry(_query_operation) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/work/ai_wht/database_config.py", line 103, in _execute_with_retry return operation(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/work/ai_wht/database_config.py", line 182, in _query_operation cursor.execute(sql, params) File "/home/work/keyword_crawl/venv/lib/python3.12/site-packages/pymysql/cursors.py", line 153, in execute result = self._query(query) ^^^^^^^^^^^^^^^^^^ File "/home/work/keyword_crawl/venv/lib/python3.12/site-packages/pymysql/cursors.py", line 322, in _query conn.query(q) File "/home/work/keyword_crawl/venv/lib/python3.12/site-packages/pymysql/connections.py", line 563, in query self._affected_rows = self._read_query_result(unbuffered=unbuffered) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/work/keyword_crawl/venv/lib/python3.12/site-packages/pymysql/connections.py", line 825, in _read_query_result result.read() File "/home/work/keyword_crawl/venv/lib/python3.12/site-packages/pymysql/connections.py", line 1199, in read first_packet = self.connection._read_packet() ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/work/keyword_crawl/venv/lib/python3.12/site-packages/pymysql/connections.py", line 775, in _read_packet packet.raise_for_error() File "/home/work/keyword_crawl/venv/lib/python3.12/site-packages/pymysql/protocol.py", line 219, in raise_for_error err.raise_mysql_exception(self._data) File "/home/work/keyword_crawl/venv/lib/python3.12/site-packages/pymysql/err.py", line 150, in raise_mysql_exception raise errorclass(errno, errval) pymysql.err.OperationalError: (1054, "Unknown column 'password' in 'field list'") 21:49:23 - article_server - INFO - [API响应] PUT /api/enterprises/change-password - IP: 36.27.52.26 - 状态码: 500 21:49:23 - article_server - INFO - [API访问] PUT /api/enterprises/change-password - IP: 36.27.52.26 - User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Sa 21:49:23 - article_server - INFO - [Token验证成功] 用户ID: 4 21:49:23 - article_server - INFO - [SQL执行] 开始执行查询SQL 21:49:23 - article_server - INFO - [SQL语句] SELECT password FROM ai_enterprises WHERE id = %s 21:49:23 - article_server - INFO - [SQL参数] (1,) 21:49:24 - article_server - ERROR - 数据库操作失败: (1054, "Unknown column 'password' in 'field list'") 21:49:24 - article_server - ERROR - [SQL执行失败] 查询SQL执行异常: (1054, "Unknown column 'password' in 'field list'") 21:49:24 - article_server - ERROR - [SQL语句] SELECT password FROM ai_enterprises WHERE id = %s 21:49:24 - article_server - ERROR - [SQL参数] (1,) 21:49:24 - article_server - ERROR - [修改密码] 处理请求时发生错误: (1054, "Unknown column 'password' in 'field list'") Traceback (most recent call last): File "/home/work/ai_wht/enterprise_routes.py", line 641, in change_password result = db_manager.execute_query(sql, (enterprise_id,)) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/work/ai_wht/database_config.py", line 199, in execute_query return self._execute_with_retry(_query_operation) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/work/ai_wht/database_config.py", line 103, in _execute_with_retry return operation(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/work/ai_wht/database_config.py", line 182, in _query_operation cursor.execute(sql, params) File "/home/work/keyword_crawl/venv/lib/python3.12/site-packages/pymysql/cursors.py", line 153, in execute result = self._query(query) ^^^^^^^^^^^^^^^^^^ File "/home/work/keyword_crawl/venv/lib/python3.12/site-packages/pymysql/cursors.py", line 322, in _query conn.query(q) File "/home/work/keyword_crawl/venv/lib/python3.12/site-packages/pymysql/connections.py", line 563, in query self._affected_rows = self._read_query_result(unbuffered=unbuffered) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/work/keyword_crawl/venv/lib/python3.12/site-packages/pymysql/connections.py", line 825, in _read_query_result result.read() File "/home/work/keyword_crawl/venv/lib/python3.12/site-packages/pymysql/connections.py", line 1199, in read first_packet = self.connection._read_packet() ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/work/keyword_crawl/venv/lib/python3.12/site-packages/pymysql/connections.py", line 775, in _read_packet packet.raise_for_error() File "/home/work/keyword_crawl/venv/lib/python3.12/site-packages/pymysql/protocol.py", line 219, in raise_for_error err.raise_mysql_exception(self._data) File "/home/work/keyword_crawl/venv/lib/python3.12/site-packages/pymysql/err.py", line 150, in raise_mysql_exception raise errorclass(errno, errval) pymysql.err.OperationalError: (1054, "Unknown column 'password' in 'field list'") 21:49:24 - article_server - INFO - [API响应] PUT /api/enterprises/change-password - IP: 36.27.52.26 - 状态码: 500 21:49:24 - article_server - INFO - [API访问] PUT /api/enterprises/change-password - IP: 36.27.52.26 - User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Sa 21:49:24 - article_server - INFO - [Token验证成功] 用户ID: 4 21:49:24 - article_server - INFO - [SQL执行] 开始执行查询SQL 21:49:24 - article_server - INFO - [SQL语句] SELECT password FROM ai_enterprises WHERE id = %s 21:49:24 - article_server - INFO - [SQL参数] (1,) 21:49:24 - article_server - ERROR - 数据库操作失败: (1054, "Unknown column 'password' in 'field list'") 21:49:24 - article_server - ERROR - [SQL执行失败] 查询SQL执行异常: (1054, "Unknown column 'password' in 'field list'") 21:49:24 - article_server - ERROR - [SQL语句] SELECT password FROM ai_enterprises WHERE id = %s 21:49:24 - article_server - ERROR - [SQL参数] (1,) 21:49:24 - article_server - ERROR - [修改密码] 处理请求时发生错误: (1054, "Unknown column 'password' in 'field list'") Traceback (most recent call last): File "/home/work/ai_wht/enterprise_routes.py", line 641, in change_password result = db_manager.execute_query(sql, (enterprise_id,)) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/work/ai_wht/database_config.py", line 199, in execute_query return self._execute_with_retry(_query_operation) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/work/ai_wht/database_config.py", line 103, in _execute_with_retry return operation(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/work/ai_wht/database_config.py", line 182, in _query_operation cursor.execute(sql, params) File "/home/work/keyword_crawl/venv/lib/python3.12/site-packages/pymysql/cursors.py", line 153, in execute result = self._query(query) ^^^^^^^^^^^^^^^^^^ File "/home/work/keyword_crawl/venv/lib/python3.12/site-packages/pymysql/cursors.py", line 322, in _query conn.query(q) File "/home/work/keyword_crawl/venv/lib/python3.12/site-packages/pymysql/connections.py", line 563, in query self._affected_rows = self._read_query_result(unbuffered=unbuffered) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/work/keyword_crawl/venv/lib/python3.12/site-packages/pymysql/connections.py", line 825, in _read_query_result result.read() File "/home/work/keyword_crawl/venv/lib/python3.12/site-packages/pymysql/connections.py", line 1199, in read first_packet = self.connection._read_packet() ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/work/keyword_crawl/venv/lib/python3.12/site-packages/pymysql/connections.py", line 775, in _read_packet packet.raise_for_error() File "/home/work/keyword_crawl/venv/lib/python3.12/site-packages/pymysql/protocol.py", line 219, in raise_for_error err.raise_mysql_exception(self._data) File "/home/work/keyword_crawl/venv/lib/python3.12/site-packages/pymysql/err.py", line 150, in raise_mysql_exception raise errorclass(errno, errval) pymysql.err.OperationalError: (1054, "Unknown column 'password' in 'field list'") 21:49:24 - article_server - INFO - [API响应] PUT /api/enterprises/change-password - IP: 36.27.52.26 - 状态码: 500 21:49:24 - article_server - INFO - [API访问] PUT /api/enterprises/change-password - IP: 36.27.52.26 - User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Sa 21:49:24 - article_server - INFO - [Token验证成功] 用户ID: 4 21:49:24 - article_server - INFO - [SQL执行] 开始执行查询SQL 21:49:24 - article_server - INFO - [SQL语句] SELECT password FROM ai_enterprises WHERE id = %s 21:49:24 - article_server - INFO - [SQL参数] (1,) 21:49:24 - article_server - ERROR - 数据库操作失败: (1054, "Unknown column 'password' in 'field list'") 21:49:24 - article_server - ERROR - [SQL执行失败] 查询SQL执行异常: (1054, "Unknown column 'password' in 'field list'") 21:49:24 - article_server - ERROR - [SQL语句] SELECT password FROM ai_enterprises WHERE id = %s 21:49:24 - article_server - ERROR - [SQL参数] (1,) 21:49:24 - article_server - ERROR - [修改密码] 处理请求时发生错误: (1054, "Unknown column 'password' in 'field list'") Traceback (most recent call last): File "/home/work/ai_wht/enterprise_routes.py", line 641, in change_password result = db_manager.execute_query(sql, (enterprise_id,)) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/work/ai_wht/database_config.py", line 199, in execute_query return self._execute_with_retry(_query_operation) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/work/ai_wht/database_config.py", line 103, in _execute_with_retry return operation(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/work/ai_wht/database_config.py", line 182, in _query_operation cursor.execute(sql, params) File "/home/work/keyword_crawl/venv/lib/python3.12/site-packages/pymysql/cursors.py", line 153, in execute result = self._query(query) ^^^^^^^^^^^^^^^^^^ File "/home/work/keyword_crawl/venv/lib/python3.12/site-packages/pymysql/cursors.py", line 322, in _query conn.query(q) File "/home/work/keyword_crawl/venv/lib/python3.12/site-packages/pymysql/connections.py", line 563, in query self._affected_rows = self._read_query_result(unbuffered=unbuffered) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/work/keyword_crawl/venv/lib/python3.12/site-packages/pymysql/connections.py", line 825, in _read_query_result result.read() File "/home/work/keyword_crawl/venv/lib/python3.12/site-packages/pymysql/connections.py", line 1199, in read first_packet = self.connection._read_packet() ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/work/keyword_crawl/venv/lib/python3.12/site-packages/pymysql/connections.py", line 775, in _read_packet packet.raise_for_error() File "/home/work/keyword_crawl/venv/lib/python3.12/site-packages/pymysql/protocol.py", line 219, in raise_for_error err.raise_mysql_exception(self._data) File "/home/work/keyword_crawl/venv/lib/python3.12/site-packages/pymysql/err.py", line 150, in raise_mysql_exception raise errorclass(errno, errval) pymysql.err.OperationalError: (1054, "Unknown column 'password' in 'field list'") 21:49:24 - article_server - INFO - [API响应] PUT /api/enterprises/change-password - IP: 36.27.52.26 - 状态码: 500 21:49:24 - article_server - INFO - [API访问] PUT /api/enterprises/change-password - IP: 36.27.52.26 - User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Sa 21:49:24 - article_server - INFO - [Token验证成功] 用户ID: 4 21:49:24 - article_server - INFO - [SQL执行] 开始执行查询SQL 21:49:24 - article_server - INFO - [SQL语句] SELECT password FROM ai_enterprises WHERE id = %s 21:49:24 - article_server - INFO - [SQL参数] (1,) 21:49:24 - article_server - ERROR - 数据库操作失败: (1054, "Unknown column 'password' in 'field list'") 21:49:24 - article_server - ERROR - [SQL执行失败] 查询SQL执行异常: (1054, "Unknown column 'password' in 'field list'") 21:49:24 - article_server - ERROR - [SQL语句] SELECT password FROM ai_enterprises WHERE id = %s 21:49:24 - article_server - ERROR - [SQL参数] (1,) 21:49:24 - article_server - ERROR - [修改密码] 处理请求时发生错误: (1054, "Unknown column 'password' in 'field list'") Traceback (most recent call last): File "/home/work/ai_wht/enterprise_routes.py", line 641, in change_password result = db_manager.execute_query(sql, (enterprise_id,)) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/work/ai_wht/database_config.py", line 199, in execute_query return self._execute_with_retry(_query_operation) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/work/ai_wht/database_config.py", line 103, in _execute_with_retry return operation(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/work/ai_wht/database_config.py", line 182, in _query_operation cursor.execute(sql, params) File "/home/work/keyword_crawl/venv/lib/python3.12/site-packages/pymysql/cursors.py", line 153, in execute result = self._query(query) ^^^^^^^^^^^^^^^^^^ File "/home/work/keyword_crawl/venv/lib/python3.12/site-packages/pymysql/cursors.py", line 322, in _query conn.query(q) File "/home/work/keyword_crawl/venv/lib/python3.12/site-packages/pymysql/connections.py", line 563, in query self._affected_rows = self._read_query_result(unbuffered=unbuffered) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/work/keyword_crawl/venv/lib/python3.12/site-packages/pymysql/connections.py", line 825, in _read_query_result result.read() File "/home/work/keyword_crawl/venv/lib/python3.12/site-packages/pymysql/connections.py", line 1199, in read first_packet = self.connection._read_packet() ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/work/keyword_crawl/venv/lib/python3.12/site-packages/pymysql/connections.py", line 775, in _read_packet packet.raise_for_error() File "/home/work/keyword_crawl/venv/lib/python3.12/site-packages/pymysql/protocol.py", line 219, in raise_for_error err.raise_mysql_exception(self._data) File "/home/work/keyword_crawl/venv/lib/python3.12/site-packages/pymysql/err.py", line 150, in raise_mysql_exception raise errorclass(errno, errval) pymysql.err.OperationalError: (1054, "Unknown column 'password' in 'field list'") 21:49:24 - article_server - INFO - [API响应] PUT /api/enterprises/change-password - IP: 36.27.52.26 - 状态码: 500 21:49:24 - article_server - INFO - [API访问] PUT /api/enterprises/change-password - IP: 36.27.52.26 - User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Sa 21:49:24 - article_server - INFO - [Token验证成功] 用户ID: 4 21:49:24 - article_server - INFO - [SQL执行] 开始执行查询SQL 21:49:24 - article_server - INFO - [SQL语句] SELECT password FROM ai_enterprises WHERE id = %s 21:49:24 - article_server - INFO - [SQL参数] (1,) 21:49:24 - article_server - ERROR - 数据库操作失败: (1054, "Unknown column 'password' in 'field list'") 21:49:24 - article_server - ERROR - [SQL执行失败] 查询SQL执行异常: (1054, "Unknown column 'password' in 'field list'") 21:49:24 - article_server - ERROR - [SQL语句] SELECT password FROM ai_enterprises WHERE id = %s 21:49:24 - article_server - ERROR - [SQL参数] (1,) 21:49:24 - article_server - ERROR - [修改密码] 处理请求时发生错误: (1054, "Unknown column 'password' in 'field list'") Traceback (most recent call last): File "/home/work/ai_wht/enterprise_routes.py", line 641, in change_password result = db_manager.execute_query(sql, (enterprise_id,)) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/work/ai_wht/database_config.py", line 199, in execute_query return self._execute_with_retry(_query_operation) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/work/ai_wht/database_config.py", line 103, in _execute_with_retry return operation(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/work/ai_wht/database_config.py", line 182, in _query_operation cursor.execute(sql, params) File "/home/work/keyword_crawl/venv/lib/python3.12/site-packages/pymysql/cursors.py", line 153, in execute result = self._query(query) ^^^^^^^^^^^^^^^^^^ File "/home/work/keyword_crawl/venv/lib/python3.12/site-packages/pymysql/cursors.py", line 322, in _query conn.query(q) File "/home/work/keyword_crawl/venv/lib/python3.12/site-packages/pymysql/connections.py", line 563, in query self._affected_rows = self._read_query_result(unbuffered=unbuffered) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/work/keyword_crawl/venv/lib/python3.12/site-packages/pymysql/connections.py", line 825, in _read_query_result result.read() File "/home/work/keyword_crawl/venv/lib/python3.12/site-packages/pymysql/connections.py", line 1199, in read first_packet = self.connection._read_packet() ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/work/keyword_crawl/venv/lib/python3.12/site-packages/pymysql/connections.py", line 775, in _read_packet packet.raise_for_error() File "/home/work/keyword_crawl/venv/lib/python3.12/site-packages/pymysql/protocol.py", line 219, in raise_for_error err.raise_mysql_exception(self._data) File "/home/work/keyword_crawl/venv/lib/python3.12/site-packages/pymysql/err.py", line 150, in raise_mysql_exception raise errorclass(errno, errval) pymysql.err.OperationalError: (1054, "Unknown column 'password' in 'field list'") 21:49:24 - article_server - INFO - [API响应] PUT /api/enterprises/change-password - IP: 36.27.52.26 - 状态码: 500 21:49:27 - article_server - INFO - [API访问] GET /api/enterprises/info - IP: 36.27.52.26 - User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Sa 21:49:27 - article_server - INFO - [Token验证成功] 用户ID: 4 21:49:27 - article_server - INFO - [API访问] GET /api/users/info - IP: 36.27.52.26 - User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Sa 21:49:27 - article_server - INFO - [Token验证成功] 用户ID: 4 21:49:27 - article_server - INFO - [获取用户信息] 开始处理请求, IP: 36.27.52.26 21:49:27 - article_server - INFO - [获取用户信息] 用户ID: 4, IP: 36.27.52.26 21:49:27 - article_server - INFO - [SQL执行] 开始执行查询SQL 21:49:27 - article_server - INFO - [SQL语句] SELECT id, enterprise_ID, name, short_name, phone, email, status, users_total, products_total, articles_total, published_total, created_at, updated_at FROM ai_enterprises WHERE id = %s 21:49:27 - article_server - INFO - [SQL参数] (1,) 21:49:27 - article_server - INFO - [SQL执行] 开始执行查询SQL 21:49:27 - article_server - INFO - [SQL语句] SELECT id, enterprise_id, enterprise_name, username, real_name, email, phone, wechat_openid, wechat_unionid, xhs_cookie, xhs_phone, xhs_account, is_bound_xhs, bound_at, department, role, status, created_at, updated_at FROM ai_users WHERE id = %s AND status != 'deleted' 21:49:27 - article_server - INFO - [SQL参数] (4,) 21:49:27 - article_server - INFO - [SQL结果] 查询完成,返回 1 条记录 21:49:27 - article_server - INFO - [SQL数据] 查询结果: [{'id': 1, 'enterprise_ID': 'ENT-2024-0001', 'name': '乐航', 'short_name': '企业1222333', 'phone': '13800138001', 'email': 'raowenlong@vizee.cn', 'status': 'active', 'users_total': 2, 'products_total': 1, 'articles_total': 12, 'published_total': 0, 'created_at': datetime.datetime(2025, 12, 12, 16, 58, 22), 'updated_at': datetime.datetime(2025, 12, 16, 13, 49, 5)}] 21:49:27 - article_server - INFO - [SQL结果] 查询完成,返回 1 条记录 21:49:27 - article_server - INFO - [SQL数据] 查询结果: [{'id': 4, 'enterprise_id': 1, 'enterprise_name': 'rwl企业4号', 'username': 'user004', 'real_name': '饶文龙', 'email': None, 'phone': '13621242430', 'wechat_openid': None, 'wechat_unionid': None, 'xhs_cookie': None, 'xhs_phone': '', 'xhs_account': '小红书用户4', 'is_bound_xhs': 1, 'bound_at': None, 'department': '技术部', 'role': 'enterprise', 'status': 'active', 'created_at': datetime.datetime(2025, 12, 12, 16, 58, 22), 'updated_at': datetime.datetime(2025, 12, 16, 13, 47, 4)}] 21:49:27 - article_server - INFO - 获取企业信息成功: ID 1 21:49:27 - article_server - INFO - [API响应] GET /api/enterprises/info - IP: 36.27.52.26 - 状态码: 200 21:49:27 - article_server - INFO - [获取用户信息] 查询成功, 用户: user004, 角色: enterprise, 企业: rwl企业4号, IP: 36.27.52.26 21:49:27 - article_server - INFO - [SQL执行] 开始执行插入SQL 21:49:27 - article_server - INFO - [SQL语句] INSERT INTO ai_logs (user_id, action, target_type, target_id, description, ip_address, user_agent, request_data, response_data, status, error_message, created_at) VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, NOW()) 21:49:27 - article_server - INFO - [SQL参数] (4, 'get_user_info', 'user', 4, '查询用户信息: user004', '36.27.52.26', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Safari/537.36', None, None, 'success', None) 21:49:27 - article_server - INFO - [SQL结果] 插入完成,新记录ID: 21 21:49:27 - article_server - INFO - [业务日志] 操作: get_user_info | 用户ID: 4 | 目标: user#4 | 状态: success | IP: 36.27.52.26 | 日志ID: 21 21:49:27 - article_server - INFO - [API响应] GET /api/users/info - IP: 36.27.52.26 - 状态码: 200 21:49:29 - article_server - INFO - [API访问] GET /api/employees/list - IP: 36.27.52.26 - User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Sa 21:49:29 - article_server - INFO - [API访问] GET /api/employees/stats - IP: 36.27.52.26 - User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Sa 21:49:29 - article_server - INFO - [Token验证成功] 用户ID: 4 21:49:29 - article_server - INFO - [Token验证成功] 用户ID: 4 21:49:29 - article_server - INFO - [SQL执行] 开始执行查询SQL 21:49:29 - article_server - INFO - [SQL语句] SELECT COUNT(*) as total_count, SUM(CASE WHEN status = 'active' THEN 1 ELSE 0 END) as active_count, SUM(CASE WHEN is_bound_xhs = 1 THEN 1 ELSE 0 END) as bound_xhs_count FROM ai_users WHERE enterprise_id = %s AND status != 'deleted' 21:49:29 - article_server - INFO - [SQL参数] (1,) 21:49:29 - article_server - INFO - [SQL执行] 开始执行查询SQL 21:49:29 - article_server - INFO - [SQL语句] SELECT COUNT(*) as total FROM ai_users WHERE enterprise_id = %s AND status != 'deleted' 21:49:29 - article_server - INFO - [SQL参数] [1] 21:49:29 - article_server - INFO - [SQL结果] 查询完成,返回 1 条记录 21:49:29 - article_server - INFO - [SQL数据] 查询结果: [{'total_count': 5, 'active_count': Decimal('5'), 'bound_xhs_count': Decimal('4')}] 21:49:29 - article_server - INFO - [SQL结果] 查询完成,返回 1 条记录 21:49:29 - article_server - INFO - [SQL数据] 查询结果: [{'total': 5}] 21:49:29 - article_server - INFO - 获取员工统计成功 21:49:29 - article_server - INFO - [API响应] GET /api/employees/stats - IP: 36.27.52.26 - 状态码: 200 21:49:29 - article_server - INFO - [SQL执行] 开始执行查询SQL 21:49:29 - article_server - INFO - [SQL语句] SELECT id, enterprise_id, real_name as name, username, phone, role, department, is_bound_xhs, xhs_account, status, created_at, updated_at FROM ai_users WHERE enterprise_id = %s AND status != 'deleted' ORDER BY created_at DESC LIMIT %s OFFSET %s 21:49:29 - article_server - INFO - [SQL参数] [1, 20, 0] 21:49:29 - article_server - INFO - [SQL结果] 查询完成,返回 5 条记录 21:49:29 - article_server - INFO - 获取员工列表成功,总数: 5 21:49:29 - article_server - INFO - [API响应] GET /api/employees/list - IP: 36.27.52.26 - 状态码: 200 21:49:35 - article_server - INFO - [API访问] DELETE /api/employees/18 - IP: 36.27.52.26 - User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Sa 21:49:35 - article_server - INFO - [Token验证成功] 用户ID: 4 21:49:35 - article_server - WARNING - [权限检查失败] 用户角色 enterprise 不在允许的角色 ('enterprise_admin',) 中 21:49:35 - article_server - INFO - [API响应] DELETE /api/employees/18 - IP: 36.27.52.26 - 状态码: 403 21:49:37 - article_server - INFO - [API访问] DELETE /api/employees/18 - IP: 36.27.52.26 - User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Sa 21:49:37 - article_server - INFO - [Token验证成功] 用户ID: 4 21:49:37 - article_server - WARNING - [权限检查失败] 用户角色 enterprise 不在允许的角色 ('enterprise_admin',) 中 21:49:37 - article_server - INFO - [API响应] DELETE /api/employees/18 - IP: 36.27.52.26 - 状态码: 403 21:49:44 - article_server - INFO - [API访问] DELETE /api/employees/18 - IP: 36.27.52.26 - User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Sa 21:49:44 - article_server - INFO - [Token验证成功] 用户ID: 4 21:49:44 - article_server - WARNING - [权限检查失败] 用户角色 enterprise 不在允许的角色 ('enterprise_admin',) 中 21:49:44 - article_server - INFO - [API响应] DELETE /api/employees/18 - IP: 36.27.52.26 - 状态码: 403