23:46:48 - article_server - INFO - 日志系统已启动 - 记录器: article_server 23:46:48 - article_server - INFO - 主日志文件: logs/article_server.log 23:46:48 - article_server - INFO - 错误日志文件: logs/article_error.log 23:46:48 - article_server - INFO - 日志保留策略: 每天午夜分割,主日志保留3天 23:46:48 - article_server - INFO - 错误日志保留策略: 每天午夜分割,保留9天 23:46:49 - article_server - INFO - 万花筒API服务模块已加载 23:47:14 - article_server - INFO - [API访问] POST /api/auth/login - IP: 104.244.91.212 - User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Sa 23:47:14 - article_server - INFO - [用户登录] 开始处理登录请求, IP: 104.244.91.212 23:47:14 - article_server - INFO - [用户登录] 收到登录请求, 账号: 13621242430, IP: 104.244.91.212 23:47:14 - article_server - INFO - [用户登录] 开始在ai_users表查询用户, 账号: 13621242430 23:47:15 - article_server - INFO - 数据库连接成功,字符集设置完成 23:47:15 - article_server - INFO - [SQL执行] 开始执行查询SQL 23:47:15 - 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' 23:47:15 - article_server - INFO - [SQL参数] ('13621242430', '13621242430') 23:47:15 - article_server - INFO - [SQL结果] 查询完成,返回 2 条记录 23:47:15 - 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': '小红书用户'}] 23:47:15 - article_server - INFO - [用户登录] 查询到用户信息, 用户名: user004, 角色: enterprise, 企业: rwl企业4号, 企业ID: 1 23:47:15 - article_server - INFO - [用户登录] 开始验证密码, 账号: 13621242430 23:47:15 - article_server - INFO - [用户登录] 密码验证成功, 用户名: user004, 角色: enterprise 23:47:15 - article_server - INFO - [用户登录] 检测到企业角色, 开始获取企业详细信息, 企业ID: 1 23:47:15 - article_server - INFO - [SQL执行] 开始执行查询SQL 23:47:15 - 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' 23:47:15 - article_server - INFO - [SQL参数] (1,) 23:47:15 - article_server - INFO - [SQL结果] 查询完成,返回 1 条记录 23:47:15 - 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': 1, 'products_total': 2, 'articles_total': 28, 'published_total': 0}] 23:47:15 - article_server - INFO - [用户登录] 获取企业信息成功, 企业名称: 乐航, 企业编号: ENT-2024-0001 23:47:15 - article_server - INFO - [用户登录] 开始生成token, 用户ID: 4, 角色: enterprise 23:47:15 - article_server - INFO - [Token生成] 用户: 13621242430, ID: 4, 角色: enterprise 23:47:15 - article_server - INFO - [用户登录成功] Token生成成功, 用户: user004, 角色: enterprise, 企业: rwl企业4号, IP: 104.244.91.212 23:47:15 - article_server - INFO - [API响应] POST /api/auth/login - IP: 104.244.91.212 - 状态码: 200 23:47:16 - article_server - INFO - [API访问] GET /api/dashboard/hot-products - IP: 104.244.91.212 - User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Sa 23:47:16 - article_server - INFO - [Token验证成功] 用户ID: 4 23:47:16 - article_server - INFO - [API访问] GET /api/dashboard/overview - IP: 104.244.91.212 - User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Sa 23:47:16 - article_server - INFO - [Token验证成功] 用户ID: 4 23:47:16 - article_server - INFO - [API访问] GET /api/dashboard/recent-publishes - IP: 104.244.91.212 - User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Sa 23:47:16 - article_server - INFO - [Token验证成功] 用户ID: 4 23:47:16 - article_server - INFO - [API访问] GET /api/users/info - IP: 104.244.91.212 - User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Sa 23:47:16 - article_server - INFO - [Token验证成功] 用户ID: 4 23:47:16 - article_server - INFO - [获取用户信息] 开始处理请求, IP: 104.244.91.212 23:47:16 - article_server - INFO - [获取用户信息] 用户ID: 4, IP: 104.244.91.212 23:47:16 - article_server - INFO - [SQL执行] 开始执行查询SQL 23:47:16 - 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 23:47:16 - article_server - INFO - [SQL参数] (1, 1, 4) 23:47:16 - article_server - INFO - [SQL结果] 查询完成,返回 3 条记录 23:47:16 - 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')}] 23:47:16 - article_server - INFO - 获取热门产品成功 23:47:16 - article_server - INFO - [API响应] GET /api/dashboard/hot-products - IP: 104.244.91.212 - 状态码: 200 23:47:16 - article_server - INFO - 数据库连接成功,字符集设置完成 23:47:16 - article_server - INFO - [SQL执行] 开始执行查询SQL 23:47:16 - article_server - INFO - [SQL语句] SELECT users_total, products_total, articles_total, published_total FROM ai_enterprises WHERE id = %s 23:47:16 - article_server - INFO - [SQL参数] (1,) 23:47:16 - article_server - INFO - [SQL结果] 查询完成,返回 1 条记录 23:47:16 - article_server - INFO - [SQL数据] 查询结果: [{'users_total': 1, 'products_total': 2, 'articles_total': 28, 'published_total': 0}] 23:47:16 - article_server - INFO - 数据库连接成功,字符集设置完成 23:47:16 - article_server - INFO - [SQL执行] 开始执行查询SQL 23:47:16 - 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 23:47:16 - article_server - INFO - [SQL参数] (1, 5) 23:47:16 - article_server - INFO - [SQL结果] 查询完成,返回 3 条记录 23:47:16 - 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'}] 23:47:16 - article_server - INFO - 数据库连接成功,字符集设置完成 23:47:16 - article_server - INFO - [SQL执行] 开始执行查询SQL 23:47:16 - 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' 23:47:16 - article_server - INFO - [SQL参数] (4,) 23:47:16 - article_server - INFO - [SQL执行] 开始执行查询SQL 23:47:16 - 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()) 23:47:16 - article_server - INFO - [SQL参数] (1,) 23:47:16 - article_server - INFO - 获取最近发布成功 23:47:16 - article_server - INFO - [API响应] GET /api/dashboard/recent-publishes - IP: 104.244.91.212 - 状态码: 200 23:47:17 - article_server - INFO - [SQL结果] 查询完成,返回 1 条记录 23:47:17 - 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)}] 23:47:17 - article_server - INFO - [SQL结果] 查询完成,返回 1 条记录 23:47:17 - article_server - INFO - [SQL数据] 查询结果: [{'month_published': 3}] 23:47:17 - article_server - INFO - [获取用户信息] 查询成功, 用户: user004, 角色: enterprise, 企业: rwl企业4号, IP: 104.244.91.212 23:47:17 - article_server - INFO - [SQL执行] 开始执行查询SQL 23:47:17 - 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)) 23:47:17 - article_server - INFO - [SQL参数] (1,) 23:47:17 - article_server - INFO - [SQL执行] 开始执行插入SQL 23:47:17 - 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()) 23:47:17 - article_server - INFO - [SQL参数] (4, 'get_user_info', 'user', 4, '查询用户信息: user004', '104.244.91.212', '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) 23:47:17 - article_server - INFO - [SQL结果] 查询完成,返回 1 条记录 23:47:17 - article_server - INFO - [SQL数据] 查询结果: [{'last_month_published': 0}] 23:47:17 - article_server - INFO - 获取工作台概览成功 23:47:17 - article_server - INFO - [API响应] GET /api/dashboard/overview - IP: 104.244.91.212 - 状态码: 200 23:47:17 - article_server - INFO - [SQL结果] 插入完成,新记录ID: 149 23:47:17 - article_server - INFO - [业务日志] 操作: get_user_info | 用户ID: 4 | 目标: user#4 | 状态: success | IP: 104.244.91.212 | 日志ID: 149 23:47:17 - article_server - INFO - [API响应] GET /api/users/info - IP: 104.244.91.212 - 状态码: 200 23:47:24 - article_server - INFO - [API访问] GET /api/articles/list - IP: 104.244.91.212 - User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Sa 23:47:24 - article_server - INFO - [Token验证成功] 用户ID: 4 23:47:24 - article_server - INFO - [获取文章列表] 开始处理请求, IP: 104.244.91.212 23:47:24 - article_server - INFO - [获取文章列表] 用户信息 - 用户ID: 4, 企业ID: 1, IP: 104.244.91.212 23:47:24 - article_server - INFO - [获取文章列表] 查询参数: page=1, pageSize=20, keyword=, product_id=, status=, 企业ID: 1, IP: 104.244.91.212 23:47:24 - article_server - INFO - [API访问] GET /api/prompts/list - IP: 104.244.91.212 - User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Sa 23:47:24 - article_server - INFO - [Token验证成功] 用户ID: 4 23:47:24 - article_server - INFO - [API访问] GET /api/products/list - IP: 104.244.91.212 - User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Sa 23:47:24 - article_server - INFO - [Token验证成功] 用户ID: 4 23:47:24 - article_server - INFO - [获取产品列表] 开始处理请求, IP: 104.244.91.212 23:47:24 - article_server - INFO - [获取产品列表] 用户信息 - 用户ID: 4, 企业ID: 1, IP: 104.244.91.212 23:47:24 - article_server - INFO - [获取产品列表] 查询参数: page=1, pageSize=100, keyword=, type=, status=, 企业ID: 1, IP: 104.244.91.212 23:47:24 - article_server - INFO - [SQL执行] 开始执行查询SQL 23:47:24 - article_server - INFO - [SQL语句] SELECT COUNT(*) as total FROM ai_articles a WHERE a.enterprise_id = %s 23:47:24 - article_server - INFO - [SQL参数] [1] 23:47:24 - article_server - INFO - [API访问] GET /api/articles/list_dashboard - IP: 104.244.91.212 - User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Sa 23:47:24 - article_server - INFO - [Token验证成功] 用户ID: 4 23:47:24 - article_server - INFO - [文章仪表盘] 开始处理请求, IP: 104.244.91.212 23:47:24 - article_server - INFO - [SQL结果] 查询完成,返回 1 条记录 23:47:24 - article_server - INFO - [SQL数据] 查询结果: [{'total': 28}] 23:47:24 - article_server - INFO - [SQL执行] 开始执行查询SQL 23:47:24 - article_server - INFO - [SQL语句] SELECT COUNT(id) as total FROM ai_articles WHERE enterprise_id = %s 23:47:24 - article_server - INFO - [SQL参数] (1,) 23:47:24 - article_server - INFO - [SQL结果] 查询完成,返回 1 条记录 23:47:24 - article_server - INFO - [SQL数据] 查询结果: [{'total': 28}] 23:47:24 - article_server - INFO - [SQL执行] 开始执行查询SQL 23:47:24 - 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 23:47:24 - article_server - INFO - [SQL参数] [1, 20, 0] 23:47:24 - article_server - INFO - [SQL结果] 查询完成,返回 20 条记录 23:47:24 - article_server - INFO - [SQL执行] 开始执行查询SQL 23:47:24 - article_server - INFO - [SQL语句] SELECT COUNT(id) as total FROM ai_articles WHERE enterprise_id = %s AND status = 'published_review' 23:47:24 - article_server - INFO - [SQL参数] (1,) 23:47:24 - article_server - INFO - 数据库连接成功,字符集设置完成 23:47:24 - article_server - INFO - [SQL执行] 开始执行查询SQL 23:47:24 - article_server - INFO - [SQL语句] SELECT COUNT(*) as total FROM ai_prompt_workflow WHERE enterprise_id = %s 23:47:24 - article_server - INFO - [SQL参数] (1,) 23:47:24 - article_server - INFO - [SQL结果] 查询完成,返回 1 条记录 23:47:24 - article_server - INFO - [SQL数据] 查询结果: [{'total': 0}] 23:47:24 - article_server - INFO - [SQL执行] 开始执行查询SQL 23:47:24 - article_server - INFO - [SQL语句] SELECT id, article_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 IN (%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s) ORDER BY article_id, sort_order ASC, created_at ASC 23:47:24 - article_server - INFO - [SQL参数] [45, 46, 47, 42, 43, 44, 37, 38, 39, 40, 41, 32, 33, 34, 35, 36, 31, 30, 28, 26] 23:47:24 - article_server - INFO - 数据库连接成功,字符集设置完成 23:47:24 - article_server - INFO - [SQL执行] 开始执行查询SQL 23:47:24 - article_server - INFO - [SQL语句] SELECT COUNT(*) as total FROM ai_products WHERE enterprise_id = %s AND status != 'deleted' 23:47:24 - article_server - INFO - [SQL参数] [1] 23:47:24 - article_server - INFO - [SQL结果] 查询完成,返回 1 条记录 23:47:24 - article_server - INFO - [SQL数据] 查询结果: [{'total': 3}] 23:47:24 - article_server - INFO - [SQL结果] 查询完成,返回 0 条记录 23:47:24 - article_server - INFO - [SQL结果] 查询完成,返回 1 条记录 23:47:24 - article_server - INFO - [SQL数据] 查询结果: [{'total': 5}] 23:47:24 - article_server - INFO - [SQL执行] 开始执行查询SQL 23:47:24 - article_server - INFO - [SQL语句] SELECT COUNT(id) as total FROM ai_articles WHERE enterprise_id = %s AND status = 'published' 23:47:24 - article_server - INFO - [SQL参数] (1,) 23:47:24 - article_server - INFO - [SQL执行] 开始执行查询SQL 23:47:24 - 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 23:47:24 - article_server - INFO - [SQL参数] (1, 100, 0) 23:47:24 - article_server - INFO - [SQL结果] 查询完成,返回 1 条记录 23:47:24 - article_server - INFO - [SQL数据] 查询结果: [{'total': 0}] 23:47:24 - article_server - INFO - [SQL执行] 开始执行查询SQL 23:47:24 - article_server - INFO - [SQL语句] SELECT id, article_id, coze_tag, created_at FROM ai_article_tags WHERE article_id IN (%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s) 23:47:24 - article_server - INFO - [SQL参数] [45, 46, 47, 42, 43, 44, 37, 38, 39, 40, 41, 32, 33, 34, 35, 36, 31, 30, 28, 26] 23:47:24 - article_server - INFO - [SQL结果] 查询完成,返回 3 条记录 23:47:24 - article_server - INFO - [SQL数据] 查询结果: [{'id': 25, 'prompt_workflow_name': 'Inject基础提示词', 'workflow_id': '7576997068138659846', 'content': '你是一个健康类自媒体的编辑,每天需要撰写健康类内容。我将要给你一个topic,这个topic是一个问句。请你先产生一个段落的回复,然后再段展开回复。每个段落都需要用一个emoji开头。最后,请生成tag。段落与段落之间空一行,保证可读性。\n详细要求如下:\n一、核心要求:\n1.\t目标受众: 普通大众,非专业人士。务必:\n¡\t避免使用专业术语和书面化表达\n¡\t内容安全限制:\n\uf06e\t❌ 禁止提及任何人体私密部位或敏感功能\n\uf06e\t❌ 禁用可能引发恐慌的词汇(如"危险""致命")\n2.\t内容核心: 围绕“主题”,聚焦病症、问题、危害或困扰, 解释原因、原理,介绍症状、类型,提供积极、实用的解决方案、改善建议或注意事项等有价值的内容均可。\n3.\t唯一性与实用性: 生成的内容需确保信息准确(基于常识)且每次生成的内容不应与历史输出重复(针对同一主题多次生成时)。\n二、内容结构及具体要求:\n\uf06c\t【首段提问】 (title):\n¡\t对应内容为{{title}}\n\n\uf06c\t【次段简答】 (short-answer):\n¡\t字数: 60-120字。 \n **内容要求**:\n 1. 第一句话必须直接回答{{title}}的提问,可以拓展1-2句话\n 2. 直接明晰,不要太笼统,禁止罗里吧嗦\n 3. 段前不要emoji表情符号\n \n **✅ 合格示例**:\n 发现HPV16或18阳性,这通常意味着宫颈癌筛查结果显示存在感染。接下来一般会建议做阴道镜检查,再根据检查的具体情况决定治疗方案。\n\n **❌ 不合格示例**:\n • 使用emoji开头\n • 没有直接回答问题\n • 过于笼统泛泛而谈 \n\n\uf06c\t【分段细答】 (contents):\n¡\t数量要求:2-3段。\n¡\t字数要求: 60~100字/段。\n¡\t核心要求:\n\uf06e\t语言口语化、自然流畅。\n\uf06e\t段落内容必须围绕核心观点展开,根据不同情况分类详细阐述问题,可以是具体可行的建议(吃什么、做什么、注意什么等),疾病的科普(主要症状、影响、诱因等),或者其它逻辑合理的内容也可以。\n\uf06e\t内容有一定的逻辑,包括但不限于(首先、其次、最后),(第一,第二,第三),(不仅、而且、还有),(初级、中级、高级)。\n\uf06e\t每段内容均衡,不超过五句话,确保信息全面且易于消化。\n\uf06e\t分段细答部分应当是次段简答部分的延伸,但用词不能和次段简答部分有太多重复,请保持多样性。\n\uf06e\t 在生成回答前,必须执行以下创造性流程:\n\t\t结构性禁令(排除法):行文结构不得是“定义→成因→症状→治疗”或“是什么→为什么→怎么办”及其任何变体。\n\t\t动态自我审视(核心步骤):\n\t\t回顾:主动审视历史内容中,针对相同或相似主题已使用过的所有核心阐述逻辑。\n\t\t规避:明确禁止重复或小幅修改上述任何逻辑。\n\t\t创新:基于当前问题的具体内涵,生成一个在本质上全新的、服务于核心问题的最佳解释路径。该路径必须与所有已回顾的逻辑存在根本性差异。\n\t\t输出确认:最终采用的逻辑结构,应是本次对话上下文中一次独特的、未经使用的创造性表达形式。\n\n\uf06c\t【标签】 (tags):\n¡\t**单个关键词字数:4-8个字。\n¡\t内容:* (1)根据正文内容,生成5个内容强相关tag; (2)标签格式:每个关键词前后都有# (例: #养生小知识# #中医养生##习惯养成# #健康养生#)\n三、变量输入:\n\uf06c\t主题: {{title}}\n四、最终安全规则:\n4.\t全篇禁止出现人体私密部位描述\n5.\t关键安全信息重复出现≥2次\n6.\t每句话≤20字,复合句用逗号分隔\n7、不能出现 "下面就给大家仔细说说",“下面具体讲讲”,话术\n', 'usage_count': 17, 'created_at': datetime.datetime(2025, 12, 12, 20, 53, 9), 'updated_at': datetime.datetime(2025, 12, 18, 12, 36, 57)}, {'id': 14, 'prompt_workflow_name': '测试提示词', 'workflow_id': 'WF-CC8BB759', 'content': '这是一个测试提示词模板...', 'usage_count': 2, 'created_at': datetime.datetime(2025, 12, 12, 17, 41, 22), 'updated_at': datetime.datetime(2025, 12, 12, 17, 51, 54)}, {'id': 1, 'prompt_workflow_name': '种草分享型', 'workflow_id': 'WF-001', 'content': '你是一个小红书种草达人,请根据产品信息写一篇真实、有感染力的种草笔记...', 'usage_count': 0, 'created_at': datetime.datetime(2025, 12, 12, 16, 58, 22), 'updated_at': datetime.datetime(2025, 12, 12, 16, 58, 22)}] 23:47:24 - article_server - INFO - [文章仪表盘] 查询成功, 企业ID: 1, 总数: 28, 可发: 0, 已发: 0, IP: 104.244.91.212 23:47:24 - article_server - INFO - [API响应] GET /api/articles/list_dashboard - IP: 104.244.91.212 - 状态码: 200 23:47:24 - article_server - INFO - [SQL执行] 开始执行查询SQL 23:47:24 - 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 23:47:24 - article_server - INFO - [SQL参数] [1, 100, 0] 23:47:24 - article_server - INFO - [SQL结果] 查询完成,返回 3 条记录 23:47:24 - article_server - INFO - [SQL数据] 查询结果: [{'id': 1, 'article_id': 46, 'coze_tag': '#提肛运动效果# #前列腺增生# #提肛练习方法# #辅助前列腺治疗# #前列腺健康#', 'created_at': datetime.datetime(2025, 12, 18, 12, 40, 2)}, {'id': 2, 'article_id': 47, 'coze_tag': '#前列腺增生# #保守治疗# #手术治疗# #病情判断# #排尿问题#', 'created_at': datetime.datetime(2025, 12, 18, 12, 40, 3)}, {'id': 3, 'article_id': 45, 'coze_tag': '#前列腺增生# #疾病病因# #年龄因素# #激素失衡# #生活习惯#', 'created_at': datetime.datetime(2025, 12, 18, 12, 40, 4)}] 23:47:24 - article_server - INFO - [SQL结果] 查询完成,返回 5 条记录 23:47:24 - article_server - INFO - [获取文章列表] 查询成功, 总数: 28, 当前页: 1, 每页: 20, 返回数量: 20, 企业ID: 1, IP: 104.244.91.212 23:47:24 - article_server - INFO - [API响应] GET /api/articles/list - IP: 104.244.91.212 - 状态码: 200 23:47:24 - article_server - INFO - [SQL执行] 开始执行查询SQL 23:47:24 - 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 23:47:24 - article_server - INFO - [SQL参数] (25,) 23:47:24 - article_server - INFO - [SQL结果] 查询完成,返回 2 条记录 23:47:24 - article_server - INFO - [SQL数据] 查询结果: [{'id': 14, 'tag_name': '去重'}, {'id': 15, 'tag_name': '基础提示词'}] 23:47:24 - article_server - INFO - [SQL执行] 开始执行查询SQL 23:47:24 - article_server - INFO - [SQL语句] SELECT id, tag_name FROM ai_product_tags WHERE product_id = %s 23:47:24 - article_server - INFO - [SQL参数] (25,) 23:47:24 - article_server - INFO - [SQL执行] 开始执行查询SQL 23:47:24 - 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 23:47:24 - article_server - INFO - [SQL参数] (14,) 23:47:24 - article_server - INFO - [SQL结果] 查询完成,返回 0 条记录 23:47:24 - article_server - INFO - [SQL结果] 查询完成,返回 0 条记录 23:47:24 - article_server - INFO - [SQL执行] 开始执行查询SQL 23:47:24 - article_server - INFO - [SQL语句] SELECT id, tag_name FROM ai_product_tags WHERE product_id = %s 23:47:24 - article_server - INFO - [SQL参数] (13,) 23:47:24 - article_server - INFO - [SQL执行] 开始执行查询SQL 23:47:24 - 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 23:47:24 - article_server - INFO - [SQL参数] (1,) 23:47:24 - article_server - INFO - [SQL结果] 查询完成,返回 0 条记录 23:47:24 - article_server - INFO - [SQL结果] 查询完成,返回 0 条记录 23:47:24 - article_server - INFO - 获取提示词列表成功,总数: 3 23:47:24 - article_server - INFO - [API响应] GET /api/prompts/list - IP: 104.244.91.212 - 状态码: 200 23:47:24 - article_server - INFO - [SQL执行] 开始执行查询SQL 23:47:24 - article_server - INFO - [SQL语句] SELECT id, tag_name FROM ai_product_tags WHERE product_id = %s 23:47:24 - article_server - INFO - [SQL参数] (12,) 23:47:24 - article_server - INFO - [SQL结果] 查询完成,返回 0 条记录 23:47:24 - article_server - INFO - [SQL执行] 开始执行查询SQL 23:47:24 - article_server - INFO - [SQL语句] SELECT id, tag_name FROM ai_product_tags WHERE product_id = %s 23:47:24 - article_server - INFO - [SQL参数] (11,) 23:47:24 - article_server - INFO - [SQL结果] 查询完成,返回 0 条记录 23:47:25 - article_server - INFO - [SQL执行] 开始执行查询SQL 23:47:25 - article_server - INFO - [SQL语句] SELECT id, tag_name FROM ai_product_tags WHERE product_id = %s 23:47:25 - article_server - INFO - [SQL参数] (1,) 23:47:25 - article_server - INFO - [SQL结果] 查询完成,返回 1 条记录 23:47:25 - article_server - INFO - [SQL数据] 查询结果: [{'id': 1, 'tag_name': '保湿'}] 23:47:25 - article_server - INFO - [获取产品列表] 查询成功, 总数: 5, 当前页: 1, 每页: 100, 返回数量: 5, 企业ID: 1, IP: 104.244.91.212 23:47:25 - article_server - INFO - [API响应] GET /api/products/list - IP: 104.244.91.212 - 状态码: 200 23:47:30 - article_server - INFO - [API访问] GET /api/prompts/list - IP: 104.244.91.212 - User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Sa 23:47:30 - article_server - INFO - [Token验证成功] 用户ID: 4 23:47:30 - article_server - INFO - [SQL执行] 开始执行查询SQL 23:47:30 - article_server - INFO - [SQL语句] SELECT COUNT(*) as total FROM ai_prompt_workflow WHERE enterprise_id = %s 23:47:30 - article_server - INFO - [SQL参数] (1,) 23:47:30 - article_server - INFO - [SQL结果] 查询完成,返回 1 条记录 23:47:30 - article_server - INFO - [SQL数据] 查询结果: [{'total': 3}] 23:47:30 - article_server - INFO - [API访问] GET /api/prompts/tags/list - IP: 104.244.91.212 - User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Sa 23:47:30 - article_server - INFO - [Token验证成功] 用户ID: 4 23:47:30 - article_server - INFO - [SQL执行] 开始执行查询SQL 23:47:30 - article_server - INFO - [SQL语句] SELECT COUNT(*) as total FROM ai_prompt_tags WHERE enterprise_id = %s 23:47:30 - article_server - INFO - [SQL参数] [1] 23:47:30 - article_server - INFO - [SQL执行] 开始执行查询SQL 23:47:30 - 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 23:47:30 - article_server - INFO - [SQL参数] (1, 20, 0) 23:47:30 - article_server - INFO - [SQL结果] 查询完成,返回 1 条记录 23:47:30 - article_server - INFO - [SQL数据] 查询结果: [{'total': 2}] 23:47:30 - article_server - INFO - [SQL结果] 查询完成,返回 3 条记录 23:47:30 - article_server - INFO - [SQL数据] 查询结果: [{'id': 25, 'prompt_workflow_name': 'Inject基础提示词', 'workflow_id': '7576997068138659846', 'content': '你是一个健康类自媒体的编辑,每天需要撰写健康类内容。我将要给你一个topic,这个topic是一个问句。请你先产生一个段落的回复,然后再段展开回复。每个段落都需要用一个emoji开头。最后,请生成tag。段落与段落之间空一行,保证可读性。\n详细要求如下:\n一、核心要求:\n1.\t目标受众: 普通大众,非专业人士。务必:\n¡\t避免使用专业术语和书面化表达\n¡\t内容安全限制:\n\uf06e\t❌ 禁止提及任何人体私密部位或敏感功能\n\uf06e\t❌ 禁用可能引发恐慌的词汇(如"危险""致命")\n2.\t内容核心: 围绕“主题”,聚焦病症、问题、危害或困扰, 解释原因、原理,介绍症状、类型,提供积极、实用的解决方案、改善建议或注意事项等有价值的内容均可。\n3.\t唯一性与实用性: 生成的内容需确保信息准确(基于常识)且每次生成的内容不应与历史输出重复(针对同一主题多次生成时)。\n二、内容结构及具体要求:\n\uf06c\t【首段提问】 (title):\n¡\t对应内容为{{title}}\n\n\uf06c\t【次段简答】 (short-answer):\n¡\t字数: 60-120字。 \n **内容要求**:\n 1. 第一句话必须直接回答{{title}}的提问,可以拓展1-2句话\n 2. 直接明晰,不要太笼统,禁止罗里吧嗦\n 3. 段前不要emoji表情符号\n \n **✅ 合格示例**:\n 发现HPV16或18阳性,这通常意味着宫颈癌筛查结果显示存在感染。接下来一般会建议做阴道镜检查,再根据检查的具体情况决定治疗方案。\n\n **❌ 不合格示例**:\n • 使用emoji开头\n • 没有直接回答问题\n • 过于笼统泛泛而谈 \n\n\uf06c\t【分段细答】 (contents):\n¡\t数量要求:2-3段。\n¡\t字数要求: 60~100字/段。\n¡\t核心要求:\n\uf06e\t语言口语化、自然流畅。\n\uf06e\t段落内容必须围绕核心观点展开,根据不同情况分类详细阐述问题,可以是具体可行的建议(吃什么、做什么、注意什么等),疾病的科普(主要症状、影响、诱因等),或者其它逻辑合理的内容也可以。\n\uf06e\t内容有一定的逻辑,包括但不限于(首先、其次、最后),(第一,第二,第三),(不仅、而且、还有),(初级、中级、高级)。\n\uf06e\t每段内容均衡,不超过五句话,确保信息全面且易于消化。\n\uf06e\t分段细答部分应当是次段简答部分的延伸,但用词不能和次段简答部分有太多重复,请保持多样性。\n\uf06e\t 在生成回答前,必须执行以下创造性流程:\n\t\t结构性禁令(排除法):行文结构不得是“定义→成因→症状→治疗”或“是什么→为什么→怎么办”及其任何变体。\n\t\t动态自我审视(核心步骤):\n\t\t回顾:主动审视历史内容中,针对相同或相似主题已使用过的所有核心阐述逻辑。\n\t\t规避:明确禁止重复或小幅修改上述任何逻辑。\n\t\t创新:基于当前问题的具体内涵,生成一个在本质上全新的、服务于核心问题的最佳解释路径。该路径必须与所有已回顾的逻辑存在根本性差异。\n\t\t输出确认:最终采用的逻辑结构,应是本次对话上下文中一次独特的、未经使用的创造性表达形式。\n\n\uf06c\t【标签】 (tags):\n¡\t**单个关键词字数:4-8个字。\n¡\t内容:* (1)根据正文内容,生成5个内容强相关tag; (2)标签格式:每个关键词前后都有# (例: #养生小知识# #中医养生##习惯养成# #健康养生#)\n三、变量输入:\n\uf06c\t主题: {{title}}\n四、最终安全规则:\n4.\t全篇禁止出现人体私密部位描述\n5.\t关键安全信息重复出现≥2次\n6.\t每句话≤20字,复合句用逗号分隔\n7、不能出现 "下面就给大家仔细说说",“下面具体讲讲”,话术\n', 'usage_count': 17, 'created_at': datetime.datetime(2025, 12, 12, 20, 53, 9), 'updated_at': datetime.datetime(2025, 12, 18, 12, 36, 57)}, {'id': 14, 'prompt_workflow_name': '测试提示词', 'workflow_id': 'WF-CC8BB759', 'content': '这是一个测试提示词模板...', 'usage_count': 2, 'created_at': datetime.datetime(2025, 12, 12, 17, 41, 22), 'updated_at': datetime.datetime(2025, 12, 12, 17, 51, 54)}, {'id': 1, 'prompt_workflow_name': '种草分享型', 'workflow_id': 'WF-001', 'content': '你是一个小红书种草达人,请根据产品信息写一篇真实、有感染力的种草笔记...', 'usage_count': 0, 'created_at': datetime.datetime(2025, 12, 12, 16, 58, 22), 'updated_at': datetime.datetime(2025, 12, 12, 16, 58, 22)}] 23:47:30 - article_server - INFO - [SQL执行] 开始执行查询SQL 23:47:30 - 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 23:47:30 - article_server - INFO - [SQL参数] [1, 100, 0] 23:47:30 - article_server - INFO - [SQL执行] 开始执行查询SQL 23:47:30 - 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 23:47:30 - article_server - INFO - [SQL参数] (25,) 23:47:30 - article_server - INFO - [SQL结果] 查询完成,返回 2 条记录 23:47:30 - article_server - INFO - [SQL数据] 查询结果: [{'id': 15, 'tag_name': '基础提示词', 'created_user_id': 4, 'created_at': datetime.datetime(2025, 12, 16, 14, 21, 32), 'updated_at': datetime.datetime(2025, 12, 16, 14, 21, 32)}, {'id': 14, 'tag_name': '去重', 'created_user_id': 4, 'created_at': datetime.datetime(2025, 12, 16, 14, 21, 32), 'updated_at': datetime.datetime(2025, 12, 16, 14, 21, 32)}] 23:47:30 - article_server - INFO - [SQL结果] 查询完成,返回 2 条记录 23:47:30 - article_server - INFO - [SQL数据] 查询结果: [{'id': 14, 'tag_name': '去重'}, {'id': 15, 'tag_name': '基础提示词'}] 23:47:30 - article_server - INFO - 获取标签列表成功,总数: 2 23:47:30 - article_server - INFO - [API响应] GET /api/prompts/tags/list - IP: 104.244.91.212 - 状态码: 200 23:47:30 - article_server - INFO - [SQL执行] 开始执行查询SQL 23:47:30 - 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 23:47:30 - article_server - INFO - [SQL参数] (14,) 23:47:30 - article_server - INFO - [SQL结果] 查询完成,返回 0 条记录 23:47:30 - article_server - INFO - [API访问] GET /api/articles/list - IP: 104.244.91.212 - User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Sa 23:47:30 - article_server - INFO - [Token验证成功] 用户ID: 4 23:47:30 - article_server - INFO - [获取文章列表] 开始处理请求, IP: 104.244.91.212 23:47:30 - article_server - INFO - [获取文章列表] 用户信息 - 用户ID: 4, 企业ID: 1, IP: 104.244.91.212 23:47:30 - article_server - INFO - [获取文章列表] 查询参数: page=1, pageSize=20, keyword=, product_id=, status=, 企业ID: 1, IP: 104.244.91.212 23:47:30 - article_server - INFO - [API访问] GET /api/articles/list_dashboard - IP: 104.244.91.212 - User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Sa 23:47:30 - article_server - INFO - [Token验证成功] 用户ID: 4 23:47:30 - article_server - INFO - [文章仪表盘] 开始处理请求, IP: 104.244.91.212 23:47:30 - article_server - INFO - [SQL执行] 开始执行查询SQL 23:47:30 - article_server - INFO - [SQL语句] SELECT COUNT(*) as total FROM ai_articles a WHERE a.enterprise_id = %s 23:47:30 - article_server - INFO - [SQL参数] [1] 23:47:30 - article_server - INFO - [SQL执行] 开始执行查询SQL 23:47:30 - 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 23:47:30 - article_server - INFO - [SQL参数] (1,) 23:47:30 - article_server - INFO - [SQL执行] 开始执行查询SQL 23:47:30 - article_server - INFO - [SQL语句] SELECT COUNT(id) as total FROM ai_articles WHERE enterprise_id = %s 23:47:30 - article_server - INFO - [SQL参数] (1,) 23:47:30 - article_server - INFO - [SQL结果] 查询完成,返回 1 条记录 23:47:30 - article_server - INFO - [SQL数据] 查询结果: [{'total': 28}] 23:47:30 - article_server - INFO - [SQL结果] 查询完成,返回 0 条记录 23:47:30 - article_server - INFO - [SQL结果] 查询完成,返回 1 条记录 23:47:30 - article_server - INFO - [SQL数据] 查询结果: [{'total': 28}] 23:47:30 - article_server - INFO - 获取提示词列表成功,总数: 3 23:47:30 - article_server - INFO - [API响应] GET /api/prompts/list - IP: 104.244.91.212 - 状态码: 200 23:47:30 - article_server - INFO - [SQL执行] 开始执行查询SQL 23:47:30 - 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 23:47:30 - article_server - INFO - [SQL参数] [1, 20, 0] 23:47:30 - article_server - INFO - [SQL执行] 开始执行查询SQL 23:47:30 - article_server - INFO - [SQL语句] SELECT COUNT(id) as total FROM ai_articles WHERE enterprise_id = %s AND status = 'published_review' 23:47:30 - article_server - INFO - [SQL参数] (1,) 23:47:30 - article_server - INFO - [SQL结果] 查询完成,返回 20 条记录 23:47:30 - article_server - INFO - [SQL结果] 查询完成,返回 1 条记录 23:47:30 - article_server - INFO - [SQL数据] 查询结果: [{'total': 0}] 23:47:30 - article_server - INFO - [SQL执行] 开始执行查询SQL 23:47:30 - article_server - INFO - [SQL语句] SELECT id, article_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 IN (%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s) ORDER BY article_id, sort_order ASC, created_at ASC 23:47:30 - article_server - INFO - [SQL参数] [45, 46, 47, 42, 43, 44, 37, 38, 39, 40, 41, 32, 33, 34, 35, 36, 31, 30, 28, 26] 23:47:30 - article_server - INFO - [SQL结果] 查询完成,返回 0 条记录 23:47:30 - article_server - INFO - [SQL执行] 开始执行查询SQL 23:47:30 - article_server - INFO - [SQL语句] SELECT COUNT(id) as total FROM ai_articles WHERE enterprise_id = %s AND status = 'published' 23:47:30 - article_server - INFO - [SQL参数] (1,) 23:47:30 - article_server - INFO - [SQL结果] 查询完成,返回 1 条记录 23:47:30 - article_server - INFO - [SQL数据] 查询结果: [{'total': 0}] 23:47:30 - article_server - INFO - [SQL执行] 开始执行查询SQL 23:47:30 - article_server - INFO - [SQL语句] SELECT id, article_id, coze_tag, created_at FROM ai_article_tags WHERE article_id IN (%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s) 23:47:30 - article_server - INFO - [SQL参数] [45, 46, 47, 42, 43, 44, 37, 38, 39, 40, 41, 32, 33, 34, 35, 36, 31, 30, 28, 26] 23:47:30 - article_server - INFO - [文章仪表盘] 查询成功, 企业ID: 1, 总数: 28, 可发: 0, 已发: 0, IP: 104.244.91.212 23:47:30 - article_server - INFO - [API响应] GET /api/articles/list_dashboard - IP: 104.244.91.212 - 状态码: 200 23:47:30 - article_server - INFO - [SQL结果] 查询完成,返回 3 条记录 23:47:30 - article_server - INFO - [SQL数据] 查询结果: [{'id': 1, 'article_id': 46, 'coze_tag': '#提肛运动效果# #前列腺增生# #提肛练习方法# #辅助前列腺治疗# #前列腺健康#', 'created_at': datetime.datetime(2025, 12, 18, 12, 40, 2)}, {'id': 2, 'article_id': 47, 'coze_tag': '#前列腺增生# #保守治疗# #手术治疗# #病情判断# #排尿问题#', 'created_at': datetime.datetime(2025, 12, 18, 12, 40, 3)}, {'id': 3, 'article_id': 45, 'coze_tag': '#前列腺增生# #疾病病因# #年龄因素# #激素失衡# #生活习惯#', 'created_at': datetime.datetime(2025, 12, 18, 12, 40, 4)}] 23:47:30 - article_server - INFO - [获取文章列表] 查询成功, 总数: 28, 当前页: 1, 每页: 20, 返回数量: 20, 企业ID: 1, IP: 104.244.91.212 23:47:30 - article_server - INFO - [API响应] GET /api/articles/list - IP: 104.244.91.212 - 状态码: 200 23:47:30 - article_server - INFO - [API访问] GET /api/products/list - IP: 104.244.91.212 - User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Sa 23:47:30 - article_server - INFO - [Token验证成功] 用户ID: 4 23:47:30 - article_server - INFO - [获取产品列表] 开始处理请求, IP: 104.244.91.212 23:47:30 - article_server - INFO - [获取产品列表] 用户信息 - 用户ID: 4, 企业ID: 1, IP: 104.244.91.212 23:47:30 - article_server - INFO - [获取产品列表] 查询参数: page=1, pageSize=100, keyword=, type=, status=, 企业ID: 1, IP: 104.244.91.212 23:47:30 - article_server - INFO - [API访问] GET /api/prompts/list - IP: 104.244.91.212 - User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Sa 23:47:30 - article_server - INFO - [Token验证成功] 用户ID: 4 23:47:30 - article_server - INFO - [SQL执行] 开始执行查询SQL 23:47:30 - article_server - INFO - [SQL语句] SELECT COUNT(*) as total FROM ai_products WHERE enterprise_id = %s AND status != 'deleted' 23:47:30 - article_server - INFO - [SQL参数] [1] 23:47:30 - article_server - INFO - [SQL执行] 开始执行查询SQL 23:47:30 - article_server - INFO - [SQL语句] SELECT COUNT(*) as total FROM ai_prompt_workflow WHERE enterprise_id = %s 23:47:30 - article_server - INFO - [SQL参数] (1,) 23:47:30 - article_server - INFO - [SQL结果] 查询完成,返回 1 条记录 23:47:30 - article_server - INFO - [SQL数据] 查询结果: [{'total': 5}] 23:47:30 - article_server - INFO - [SQL结果] 查询完成,返回 1 条记录 23:47:30 - article_server - INFO - [SQL数据] 查询结果: [{'total': 3}] 23:47:30 - article_server - INFO - [SQL执行] 开始执行查询SQL 23:47:30 - 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 23:47:30 - article_server - INFO - [SQL参数] [1, 100, 0] 23:47:30 - article_server - INFO - [SQL结果] 查询完成,返回 5 条记录 23:47:30 - article_server - INFO - [SQL执行] 开始执行查询SQL 23:47:30 - 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 23:47:30 - article_server - INFO - [SQL参数] (1, 100, 0) 23:47:30 - article_server - INFO - [SQL结果] 查询完成,返回 3 条记录 23:47:30 - article_server - INFO - [SQL数据] 查询结果: [{'id': 25, 'prompt_workflow_name': 'Inject基础提示词', 'workflow_id': '7576997068138659846', 'content': '你是一个健康类自媒体的编辑,每天需要撰写健康类内容。我将要给你一个topic,这个topic是一个问句。请你先产生一个段落的回复,然后再段展开回复。每个段落都需要用一个emoji开头。最后,请生成tag。段落与段落之间空一行,保证可读性。\n详细要求如下:\n一、核心要求:\n1.\t目标受众: 普通大众,非专业人士。务必:\n¡\t避免使用专业术语和书面化表达\n¡\t内容安全限制:\n\uf06e\t❌ 禁止提及任何人体私密部位或敏感功能\n\uf06e\t❌ 禁用可能引发恐慌的词汇(如"危险""致命")\n2.\t内容核心: 围绕“主题”,聚焦病症、问题、危害或困扰, 解释原因、原理,介绍症状、类型,提供积极、实用的解决方案、改善建议或注意事项等有价值的内容均可。\n3.\t唯一性与实用性: 生成的内容需确保信息准确(基于常识)且每次生成的内容不应与历史输出重复(针对同一主题多次生成时)。\n二、内容结构及具体要求:\n\uf06c\t【首段提问】 (title):\n¡\t对应内容为{{title}}\n\n\uf06c\t【次段简答】 (short-answer):\n¡\t字数: 60-120字。 \n **内容要求**:\n 1. 第一句话必须直接回答{{title}}的提问,可以拓展1-2句话\n 2. 直接明晰,不要太笼统,禁止罗里吧嗦\n 3. 段前不要emoji表情符号\n \n **✅ 合格示例**:\n 发现HPV16或18阳性,这通常意味着宫颈癌筛查结果显示存在感染。接下来一般会建议做阴道镜检查,再根据检查的具体情况决定治疗方案。\n\n **❌ 不合格示例**:\n • 使用emoji开头\n • 没有直接回答问题\n • 过于笼统泛泛而谈 \n\n\uf06c\t【分段细答】 (contents):\n¡\t数量要求:2-3段。\n¡\t字数要求: 60~100字/段。\n¡\t核心要求:\n\uf06e\t语言口语化、自然流畅。\n\uf06e\t段落内容必须围绕核心观点展开,根据不同情况分类详细阐述问题,可以是具体可行的建议(吃什么、做什么、注意什么等),疾病的科普(主要症状、影响、诱因等),或者其它逻辑合理的内容也可以。\n\uf06e\t内容有一定的逻辑,包括但不限于(首先、其次、最后),(第一,第二,第三),(不仅、而且、还有),(初级、中级、高级)。\n\uf06e\t每段内容均衡,不超过五句话,确保信息全面且易于消化。\n\uf06e\t分段细答部分应当是次段简答部分的延伸,但用词不能和次段简答部分有太多重复,请保持多样性。\n\uf06e\t 在生成回答前,必须执行以下创造性流程:\n\t\t结构性禁令(排除法):行文结构不得是“定义→成因→症状→治疗”或“是什么→为什么→怎么办”及其任何变体。\n\t\t动态自我审视(核心步骤):\n\t\t回顾:主动审视历史内容中,针对相同或相似主题已使用过的所有核心阐述逻辑。\n\t\t规避:明确禁止重复或小幅修改上述任何逻辑。\n\t\t创新:基于当前问题的具体内涵,生成一个在本质上全新的、服务于核心问题的最佳解释路径。该路径必须与所有已回顾的逻辑存在根本性差异。\n\t\t输出确认:最终采用的逻辑结构,应是本次对话上下文中一次独特的、未经使用的创造性表达形式。\n\n\uf06c\t【标签】 (tags):\n¡\t**单个关键词字数:4-8个字。\n¡\t内容:* (1)根据正文内容,生成5个内容强相关tag; (2)标签格式:每个关键词前后都有# (例: #养生小知识# #中医养生##习惯养成# #健康养生#)\n三、变量输入:\n\uf06c\t主题: {{title}}\n四、最终安全规则:\n4.\t全篇禁止出现人体私密部位描述\n5.\t关键安全信息重复出现≥2次\n6.\t每句话≤20字,复合句用逗号分隔\n7、不能出现 "下面就给大家仔细说说",“下面具体讲讲”,话术\n', 'usage_count': 17, 'created_at': datetime.datetime(2025, 12, 12, 20, 53, 9), 'updated_at': datetime.datetime(2025, 12, 18, 12, 36, 57)}, {'id': 14, 'prompt_workflow_name': '测试提示词', 'workflow_id': 'WF-CC8BB759', 'content': '这是一个测试提示词模板...', 'usage_count': 2, 'created_at': datetime.datetime(2025, 12, 12, 17, 41, 22), 'updated_at': datetime.datetime(2025, 12, 12, 17, 51, 54)}, {'id': 1, 'prompt_workflow_name': '种草分享型', 'workflow_id': 'WF-001', 'content': '你是一个小红书种草达人,请根据产品信息写一篇真实、有感染力的种草笔记...', 'usage_count': 0, 'created_at': datetime.datetime(2025, 12, 12, 16, 58, 22), 'updated_at': datetime.datetime(2025, 12, 12, 16, 58, 22)}] 23:47:30 - article_server - INFO - [SQL执行] 开始执行查询SQL 23:47:30 - article_server - INFO - [SQL语句] SELECT id, tag_name FROM ai_product_tags WHERE product_id = %s 23:47:30 - article_server - INFO - [SQL参数] (25,) 23:47:30 - article_server - INFO - [SQL结果] 查询完成,返回 0 条记录 23:47:30 - article_server - INFO - [SQL执行] 开始执行查询SQL 23:47:30 - 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 23:47:30 - article_server - INFO - [SQL参数] (25,) 23:47:30 - article_server - INFO - [SQL结果] 查询完成,返回 2 条记录 23:47:30 - article_server - INFO - [SQL数据] 查询结果: [{'id': 14, 'tag_name': '去重'}, {'id': 15, 'tag_name': '基础提示词'}] 23:47:30 - article_server - INFO - [SQL执行] 开始执行查询SQL 23:47:30 - article_server - INFO - [SQL语句] SELECT id, tag_name FROM ai_product_tags WHERE product_id = %s 23:47:30 - article_server - INFO - [SQL参数] (13,) 23:47:30 - article_server - INFO - [SQL结果] 查询完成,返回 0 条记录 23:47:31 - article_server - INFO - [SQL执行] 开始执行查询SQL 23: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 23:47:31 - article_server - INFO - [SQL参数] (14,) 23:47:31 - article_server - INFO - [SQL执行] 开始执行查询SQL 23:47:31 - article_server - INFO - [SQL语句] SELECT id, tag_name FROM ai_product_tags WHERE product_id = %s 23:47:31 - article_server - INFO - [SQL参数] (12,) 23:47:31 - article_server - INFO - [SQL结果] 查询完成,返回 0 条记录 23:47:31 - article_server - INFO - [SQL结果] 查询完成,返回 0 条记录 23:47:31 - article_server - INFO - [SQL执行] 开始执行查询SQL 23: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 23:47:31 - article_server - INFO - [SQL参数] (1,) 23:47:31 - article_server - INFO - [SQL执行] 开始执行查询SQL 23:47:31 - article_server - INFO - [SQL语句] SELECT id, tag_name FROM ai_product_tags WHERE product_id = %s 23:47:31 - article_server - INFO - [SQL参数] (11,) 23:47:31 - article_server - INFO - [SQL结果] 查询完成,返回 0 条记录 23:47:31 - article_server - INFO - [SQL结果] 查询完成,返回 0 条记录 23:47:31 - article_server - INFO - 获取提示词列表成功,总数: 3 23:47:31 - article_server - INFO - [API响应] GET /api/prompts/list - IP: 104.244.91.212 - 状态码: 200 23:47:31 - article_server - INFO - [SQL执行] 开始执行查询SQL 23:47:31 - article_server - INFO - [SQL语句] SELECT id, tag_name FROM ai_product_tags WHERE product_id = %s 23:47:31 - article_server - INFO - [SQL参数] (1,) 23:47:31 - article_server - INFO - [SQL结果] 查询完成,返回 1 条记录 23:47:31 - article_server - INFO - [SQL数据] 查询结果: [{'id': 1, 'tag_name': '保湿'}] 23:47:31 - article_server - INFO - [获取产品列表] 查询成功, 总数: 5, 当前页: 1, 每页: 100, 返回数量: 5, 企业ID: 1, IP: 104.244.91.212 23:47:31 - article_server - INFO - [API响应] GET /api/products/list - IP: 104.244.91.212 - 状态码: 200 23:48:03 - article_server - INFO - [API访问] POST /api/articles/generate - IP: 104.244.91.212 - User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Sa 23:48:03 - article_server - INFO - [Token验证成功] 用户ID: 4 23:48:03 - article_server - INFO - [生成文案] 开始处理生成文案请求, IP: 104.244.91.212 23:48:03 - article_server - INFO - [生成文案] 用户信息 - 用户ID: 4, 企业ID: 1, IP: 104.244.91.212 23:48:03 - article_server - INFO - [生成文案] 收到生成请求, 产品ID: 25, 提示词ID: 25, 主题数: 3, 企业ID: 1, IP: 104.244.91.212 23:48:03 - article_server - INFO - [生成文案] 验证产品是否存在, 产品ID: 25, 企业ID: 1 23:48:03 - article_server - INFO - [SQL执行] 开始执行查询SQL 23:48:03 - article_server - INFO - [SQL语句] SELECT id, name FROM ai_products WHERE id = %s AND enterprise_id = %s 23:48:03 - article_server - INFO - [SQL参数] (25, 1) 23:48:03 - article_server - INFO - [SQL结果] 查询完成,返回 1 条记录 23:48:03 - article_server - INFO - [SQL数据] 查询结果: [{'id': 25, 'name': '健康类自媒体'}] 23:48:03 - article_server - INFO - [生成文案] 产品验证成功, 产品名称: 健康类自媒体, ID: 25 23:48:03 - article_server - INFO - [生成文案] 验证提示词是否存在, 提示词ID: 25, 企业ID: 1 23:48:03 - article_server - INFO - [SQL执行] 开始执行查询SQL 23:48:03 - article_server - INFO - [SQL语句] SELECT id FROM ai_prompt_workflow WHERE id = %s AND enterprise_id = %s 23:48:03 - article_server - INFO - [SQL参数] (25, 1) 23:48:03 - article_server - INFO - [SQL结果] 查询完成,返回 1 条记录 23:48:03 - article_server - INFO - [SQL数据] 查询结果: [{'id': 25}] 23:48:03 - article_server - INFO - [生成文案] 提示词验证成功, ID: 25 23:48:03 - article_server - INFO - [生成文案] 开始生成文案, 主题数量: 3, 产品: 健康类自媒体, 企业ID: 1 23:48:03 - article_server - INFO - [批量生成文章] 生成batch_id: 1766159283618214, 待处理数据行数: 3 23:48:03 - article_server - INFO - [生成文案] 开始生成主题文案: 包皮炎会传染给女性吗?, 产品: 健康类自媒体 23:48:03 - article_server - INFO - [SQL执行] 开始执行插入SQL 23:48:03 - article_server - INFO - [SQL语句] INSERT INTO ai_articles (enterprise_id, product_id, prompt_workflow_id, title, topic, content, status, batch_id) VALUES (%s, %s, %s, %s, %s, %s, %s, %s) 23:48:03 - article_server - INFO - [SQL参数] (1, 25, 25, '包皮炎会传染给女性吗?', '包皮炎会传染给女性吗?', '', 'generate', '1766159283618214') 23:48:03 - article_server - INFO - [SQL结果] 插入完成,新记录ID: 48 23:48:03 - article_server - INFO - [生成文案] 文案生成成功, 文案ID: 48, 主题: 包皮炎会传染给女性吗?, 标题: 包皮炎会传染给女性吗? 23:48:03 - article_server - INFO - [生成文案] 开始生成主题文案: 得了包皮炎很痒怎么办?, 产品: 健康类自媒体 23:48:03 - article_server - INFO - [SQL执行] 开始执行插入SQL 23:48:03 - article_server - INFO - [SQL语句] INSERT INTO ai_articles (enterprise_id, product_id, prompt_workflow_id, title, topic, content, status, batch_id) VALUES (%s, %s, %s, %s, %s, %s, %s, %s) 23:48:03 - article_server - INFO - [SQL参数] (1, 25, 25, '得了包皮炎很痒怎么办?', '得了包皮炎很痒怎么办?', '', 'generate', '1766159283618214') 23:48:03 - article_server - INFO - [SQL结果] 插入完成,新记录ID: 49 23:48:03 - article_server - INFO - [生成文案] 文案生成成功, 文案ID: 49, 主题: 得了包皮炎很痒怎么办?, 标题: 得了包皮炎很痒怎么办? 23:48:03 - article_server - INFO - [生成文案] 开始生成主题文案: 龟头包皮炎用什么软膏?, 产品: 健康类自媒体 23:48:03 - article_server - INFO - [SQL执行] 开始执行插入SQL 23:48:03 - article_server - INFO - [SQL语句] INSERT INTO ai_articles (enterprise_id, product_id, prompt_workflow_id, title, topic, content, status, batch_id) VALUES (%s, %s, %s, %s, %s, %s, %s, %s) 23:48:03 - article_server - INFO - [SQL参数] (1, 25, 25, '龟头包皮炎用什么软膏?', '龟头包皮炎用什么软膏?', '', 'generate', '1766159283618214') 23:48:03 - article_server - INFO - [SQL结果] 插入完成,新记录ID: 50 23:48:03 - article_server - INFO - [生成文案] 文案生成成功, 文案ID: 50, 主题: 龟头包皮炎用什么软膏?, 标题: 龟头包皮炎用什么软膏? 23:48:03 - article_server - INFO - [SQL执行] 开始执行更新SQL 23:48:03 - article_server - INFO - [SQL语句] UPDATE ai_products SET articles_total = articles_total + %s WHERE id = %s 23:48:03 - article_server - INFO - [SQL参数] (3, 25) 23:48:03 - article_server - INFO - [SQL结果] 更新完成,影响 1 行 23:48:03 - article_server - INFO - [SQL执行] 开始执行更新SQL 23:48:03 - article_server - INFO - [SQL语句] UPDATE ai_enterprises SET articles_total = articles_total + %s WHERE id = %s 23:48:03 - article_server - INFO - [SQL参数] (3, 1) 23:48:03 - article_server - INFO - [SQL结果] 更新完成,影响 1 行 23:48:03 - article_server - INFO - [SQL执行] 开始执行更新SQL 23:48:03 - article_server - INFO - [SQL语句] UPDATE ai_prompt_workflow SET usage_count = usage_count + %s WHERE id = %s 23:48:03 - article_server - INFO - [SQL参数] (3, 25) 23:48:03 - article_server - INFO - [SQL结果] 更新完成,影响 1 行 23:48:03 - article_server - INFO - 生成文案成功: 3篇 23:48:03 - article_server - INFO - [API响应] POST /api/articles/generate - IP: 104.244.91.212 - 状态码: 200 23:48:04 - article_server - INFO - [API访问] GET /api/articles/list_dashboard - IP: 104.244.91.212 - User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Sa 23:48:04 - article_server - INFO - [Token验证成功] 用户ID: 4 23:48:04 - article_server - INFO - [文章仪表盘] 开始处理请求, IP: 104.244.91.212 23:48:04 - article_server - INFO - [API访问] GET /api/articles/list - IP: 104.244.91.212 - User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Sa 23:48:04 - article_server - INFO - [Token验证成功] 用户ID: 4 23:48:04 - article_server - INFO - [获取文章列表] 开始处理请求, IP: 104.244.91.212 23:48:04 - article_server - INFO - [获取文章列表] 用户信息 - 用户ID: 4, 企业ID: 1, IP: 104.244.91.212 23:48:04 - article_server - INFO - [获取文章列表] 查询参数: page=1, pageSize=20, keyword=, product_id=, status=, 企业ID: 1, IP: 104.244.91.212 23:48:04 - article_server - INFO - [SQL执行] 开始执行查询SQL 23:48:04 - article_server - INFO - [SQL语句] SELECT COUNT(id) as total FROM ai_articles WHERE enterprise_id = %s 23:48:04 - article_server - INFO - [SQL参数] (1,) 23:48:04 - article_server - INFO - [SQL执行] 开始执行查询SQL 23:48:04 - article_server - INFO - [SQL语句] SELECT COUNT(*) as total FROM ai_articles a WHERE a.enterprise_id = %s 23:48:04 - article_server - INFO - [SQL参数] [1] 23:48:04 - article_server - INFO - [SQL结果] 查询完成,返回 1 条记录 23:48:04 - article_server - INFO - [SQL数据] 查询结果: [{'total': 31}] 23:48:04 - article_server - INFO - [SQL结果] 查询完成,返回 1 条记录 23:48:04 - article_server - INFO - [SQL数据] 查询结果: [{'total': 31}] 23:48:04 - article_server - INFO - [SQL执行] 开始执行查询SQL 23:48:04 - article_server - INFO - [SQL语句] SELECT COUNT(id) as total FROM ai_articles WHERE enterprise_id = %s AND status = 'published_review' 23:48:04 - article_server - INFO - [SQL参数] (1,) 23:48:04 - article_server - INFO - [SQL执行] 开始执行查询SQL 23:48:04 - 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 23:48:04 - article_server - INFO - [SQL参数] [1, 20, 0] 23:48:04 - article_server - INFO - [SQL结果] 查询完成,返回 1 条记录 23:48:04 - article_server - INFO - [SQL数据] 查询结果: [{'total': 0}] 23:48:04 - article_server - INFO - [SQL结果] 查询完成,返回 20 条记录 23:48:04 - article_server - INFO - [SQL执行] 开始执行查询SQL 23:48:04 - article_server - INFO - [SQL语句] SELECT id, article_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 IN (%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s) ORDER BY article_id, sort_order ASC, created_at ASC 23:48:04 - article_server - INFO - [SQL参数] [48, 49, 50, 45, 46, 47, 42, 43, 44, 37, 38, 39, 40, 41, 32, 33, 34, 35, 36, 31] 23:48:04 - article_server - INFO - [SQL执行] 开始执行查询SQL 23:48:04 - article_server - INFO - [SQL语句] SELECT COUNT(id) as total FROM ai_articles WHERE enterprise_id = %s AND status = 'published' 23:48:04 - article_server - INFO - [SQL参数] (1,) 23:48:04 - article_server - INFO - [SQL结果] 查询完成,返回 0 条记录 23:48:04 - article_server - INFO - [SQL结果] 查询完成,返回 1 条记录 23:48:04 - article_server - INFO - [SQL数据] 查询结果: [{'total': 0}] 23:48:04 - article_server - INFO - [文章仪表盘] 查询成功, 企业ID: 1, 总数: 31, 可发: 0, 已发: 0, IP: 104.244.91.212 23:48:04 - article_server - INFO - [API响应] GET /api/articles/list_dashboard - IP: 104.244.91.212 - 状态码: 200 23:48:04 - article_server - INFO - [SQL执行] 开始执行查询SQL 23:48:04 - article_server - INFO - [SQL语句] SELECT id, article_id, coze_tag, created_at FROM ai_article_tags WHERE article_id IN (%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s) 23:48:04 - article_server - INFO - [SQL参数] [48, 49, 50, 45, 46, 47, 42, 43, 44, 37, 38, 39, 40, 41, 32, 33, 34, 35, 36, 31] 23:48:04 - article_server - INFO - [SQL结果] 查询完成,返回 3 条记录 23:48:04 - article_server - INFO - [SQL数据] 查询结果: [{'id': 1, 'article_id': 46, 'coze_tag': '#提肛运动效果# #前列腺增生# #提肛练习方法# #辅助前列腺治疗# #前列腺健康#', 'created_at': datetime.datetime(2025, 12, 18, 12, 40, 2)}, {'id': 2, 'article_id': 47, 'coze_tag': '#前列腺增生# #保守治疗# #手术治疗# #病情判断# #排尿问题#', 'created_at': datetime.datetime(2025, 12, 18, 12, 40, 3)}, {'id': 3, 'article_id': 45, 'coze_tag': '#前列腺增生# #疾病病因# #年龄因素# #激素失衡# #生活习惯#', 'created_at': datetime.datetime(2025, 12, 18, 12, 40, 4)}] 23:48:04 - article_server - INFO - [获取文章列表] 查询成功, 总数: 31, 当前页: 1, 每页: 20, 返回数量: 20, 企业ID: 1, IP: 104.244.91.212 23:48:04 - article_server - INFO - [API响应] GET /api/articles/list - IP: 104.244.91.212 - 状态码: 200 23:48:10 - article_server - INFO - [API访问] GET /api/products/list - IP: 104.244.91.212 - User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Sa 23:48:10 - article_server - INFO - [Token验证成功] 用户ID: 4 23:48:10 - article_server - INFO - [获取产品列表] 开始处理请求, IP: 104.244.91.212 23:48:10 - article_server - INFO - [获取产品列表] 用户信息 - 用户ID: 4, 企业ID: 1, IP: 104.244.91.212 23:48:10 - article_server - INFO - [获取产品列表] 查询参数: page=1, pageSize=100, keyword=, type=, status=, 企业ID: 1, IP: 104.244.91.212 23:48:10 - article_server - INFO - [API访问] GET /api/users/info - IP: 104.244.91.212 - User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Sa 23:48:10 - article_server - INFO - [Token验证成功] 用户ID: 4 23:48:10 - article_server - INFO - [获取用户信息] 开始处理请求, IP: 104.244.91.212 23:48:10 - article_server - INFO - [获取用户信息] 用户ID: 4, IP: 104.244.91.212 23:48:10 - article_server - INFO - [API访问] GET /api/prompts/list - IP: 104.244.91.212 - User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Sa 23:48:10 - article_server - INFO - [Token验证成功] 用户ID: 4 23:48:10 - article_server - INFO - [API访问] GET /api/articles/list_dashboard - IP: 104.244.91.212 - User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Sa 23:48:10 - article_server - INFO - [Token验证成功] 用户ID: 4 23:48:10 - article_server - INFO - [文章仪表盘] 开始处理请求, IP: 104.244.91.212 23:48:10 - article_server - INFO - [SQL执行] 开始执行查询SQL 23:48:10 - 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' 23:48:10 - article_server - INFO - [SQL参数] (4,) 23:48:10 - article_server - INFO - [API访问] GET /api/articles/list - IP: 104.244.91.212 - User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Sa 23:48:10 - article_server - INFO - [Token验证成功] 用户ID: 4 23:48:10 - article_server - INFO - [获取文章列表] 开始处理请求, IP: 104.244.91.212 23:48:10 - article_server - INFO - [获取文章列表] 用户信息 - 用户ID: 4, 企业ID: 1, IP: 104.244.91.212 23:48:10 - article_server - INFO - [获取文章列表] 查询参数: page=1, pageSize=20, keyword=, product_id=, status=, 企业ID: 1, IP: 104.244.91.212 23:48:10 - article_server - INFO - [SQL执行] 开始执行查询SQL 23:48:10 - article_server - INFO - [SQL语句] SELECT COUNT(*) as total FROM ai_prompt_workflow WHERE enterprise_id = %s 23:48:10 - article_server - INFO - [SQL参数] (1,) 23:48:10 - article_server - INFO - [SQL执行] 开始执行查询SQL 23:48:10 - article_server - INFO - [SQL语句] SELECT COUNT(*) as total FROM ai_products WHERE enterprise_id = %s AND status != 'deleted' 23:48:10 - article_server - INFO - [SQL参数] [1] 23:48:10 - article_server - INFO - [SQL执行] 开始执行查询SQL 23:48:10 - article_server - INFO - [SQL语句] SELECT COUNT(id) as total FROM ai_articles WHERE enterprise_id = %s 23:48:10 - article_server - INFO - [SQL参数] (1,) 23:48:10 - article_server - INFO - [SQL结果] 查询完成,返回 1 条记录 23:48:10 - 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)}] 23:48:10 - article_server - INFO - [SQL执行] 开始执行查询SQL 23:48:10 - article_server - INFO - [SQL语句] SELECT COUNT(*) as total FROM ai_articles a WHERE a.enterprise_id = %s 23:48:10 - article_server - INFO - [SQL参数] [1] 23:48:10 - article_server - INFO - [SQL结果] 查询完成,返回 1 条记录 23:48:10 - article_server - INFO - [SQL数据] 查询结果: [{'total': 3}] 23:48:10 - article_server - INFO - [SQL结果] 查询完成,返回 1 条记录 23:48:10 - article_server - INFO - [SQL数据] 查询结果: [{'total': 5}] 23:48:10 - article_server - INFO - [获取用户信息] 查询成功, 用户: user004, 角色: enterprise, 企业: rwl企业4号, IP: 104.244.91.212 23:48:10 - article_server - INFO - [SQL结果] 查询完成,返回 1 条记录 23:48:10 - article_server - INFO - [SQL数据] 查询结果: [{'total': 31}] 23:48:10 - article_server - INFO - [SQL结果] 查询完成,返回 1 条记录 23:48:10 - article_server - INFO - [SQL数据] 查询结果: [{'total': 31}] 23:48:10 - article_server - INFO - [SQL执行] 开始执行插入SQL 23:48:10 - 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()) 23:48:10 - article_server - INFO - [SQL参数] (4, 'get_user_info', 'user', 4, '查询用户信息: user004', '104.244.91.212', '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) 23:48:10 - article_server - INFO - [SQL执行] 开始执行查询SQL 23:48:10 - 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 23:48:10 - article_server - INFO - [SQL参数] (1, 100, 0) 23:48:10 - article_server - INFO - [SQL执行] 开始执行查询SQL 23:48:10 - 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 23:48:10 - article_server - INFO - [SQL参数] [1, 100, 0] 23:48:10 - article_server - INFO - [SQL执行] 开始执行查询SQL 23:48:10 - 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 23:48:10 - article_server - INFO - [SQL参数] [1, 20, 0] 23:48:10 - article_server - INFO - [SQL结果] 插入完成,新记录ID: 186 23:48:10 - article_server - INFO - [SQL结果] 查询完成,返回 3 条记录 23:48:10 - article_server - INFO - [SQL数据] 查询结果: [{'id': 25, 'prompt_workflow_name': 'Inject基础提示词', 'workflow_id': '7576997068138659846', 'content': '你是一个健康类自媒体的编辑,每天需要撰写健康类内容。我将要给你一个topic,这个topic是一个问句。请你先产生一个段落的回复,然后再段展开回复。每个段落都需要用一个emoji开头。最后,请生成tag。段落与段落之间空一行,保证可读性。\n详细要求如下:\n一、核心要求:\n1.\t目标受众: 普通大众,非专业人士。务必:\n¡\t避免使用专业术语和书面化表达\n¡\t内容安全限制:\n\uf06e\t❌ 禁止提及任何人体私密部位或敏感功能\n\uf06e\t❌ 禁用可能引发恐慌的词汇(如"危险""致命")\n2.\t内容核心: 围绕“主题”,聚焦病症、问题、危害或困扰, 解释原因、原理,介绍症状、类型,提供积极、实用的解决方案、改善建议或注意事项等有价值的内容均可。\n3.\t唯一性与实用性: 生成的内容需确保信息准确(基于常识)且每次生成的内容不应与历史输出重复(针对同一主题多次生成时)。\n二、内容结构及具体要求:\n\uf06c\t【首段提问】 (title):\n¡\t对应内容为{{title}}\n\n\uf06c\t【次段简答】 (short-answer):\n¡\t字数: 60-120字。 \n **内容要求**:\n 1. 第一句话必须直接回答{{title}}的提问,可以拓展1-2句话\n 2. 直接明晰,不要太笼统,禁止罗里吧嗦\n 3. 段前不要emoji表情符号\n \n **✅ 合格示例**:\n 发现HPV16或18阳性,这通常意味着宫颈癌筛查结果显示存在感染。接下来一般会建议做阴道镜检查,再根据检查的具体情况决定治疗方案。\n\n **❌ 不合格示例**:\n • 使用emoji开头\n • 没有直接回答问题\n • 过于笼统泛泛而谈 \n\n\uf06c\t【分段细答】 (contents):\n¡\t数量要求:2-3段。\n¡\t字数要求: 60~100字/段。\n¡\t核心要求:\n\uf06e\t语言口语化、自然流畅。\n\uf06e\t段落内容必须围绕核心观点展开,根据不同情况分类详细阐述问题,可以是具体可行的建议(吃什么、做什么、注意什么等),疾病的科普(主要症状、影响、诱因等),或者其它逻辑合理的内容也可以。\n\uf06e\t内容有一定的逻辑,包括但不限于(首先、其次、最后),(第一,第二,第三),(不仅、而且、还有),(初级、中级、高级)。\n\uf06e\t每段内容均衡,不超过五句话,确保信息全面且易于消化。\n\uf06e\t分段细答部分应当是次段简答部分的延伸,但用词不能和次段简答部分有太多重复,请保持多样性。\n\uf06e\t 在生成回答前,必须执行以下创造性流程:\n\t\t结构性禁令(排除法):行文结构不得是“定义→成因→症状→治疗”或“是什么→为什么→怎么办”及其任何变体。\n\t\t动态自我审视(核心步骤):\n\t\t回顾:主动审视历史内容中,针对相同或相似主题已使用过的所有核心阐述逻辑。\n\t\t规避:明确禁止重复或小幅修改上述任何逻辑。\n\t\t创新:基于当前问题的具体内涵,生成一个在本质上全新的、服务于核心问题的最佳解释路径。该路径必须与所有已回顾的逻辑存在根本性差异。\n\t\t输出确认:最终采用的逻辑结构,应是本次对话上下文中一次独特的、未经使用的创造性表达形式。\n\n\uf06c\t【标签】 (tags):\n¡\t**单个关键词字数:4-8个字。\n¡\t内容:* (1)根据正文内容,生成5个内容强相关tag; (2)标签格式:每个关键词前后都有# (例: #养生小知识# #中医养生##习惯养成# #健康养生#)\n三、变量输入:\n\uf06c\t主题: {{title}}\n四、最终安全规则:\n4.\t全篇禁止出现人体私密部位描述\n5.\t关键安全信息重复出现≥2次\n6.\t每句话≤20字,复合句用逗号分隔\n7、不能出现 "下面就给大家仔细说说",“下面具体讲讲”,话术\n', 'usage_count': 20, 'created_at': datetime.datetime(2025, 12, 12, 20, 53, 9), 'updated_at': datetime.datetime(2025, 12, 19, 15, 48, 3)}, {'id': 14, 'prompt_workflow_name': '测试提示词', 'workflow_id': 'WF-CC8BB759', 'content': '这是一个测试提示词模板...', 'usage_count': 2, 'created_at': datetime.datetime(2025, 12, 12, 17, 41, 22), 'updated_at': datetime.datetime(2025, 12, 12, 17, 51, 54)}, {'id': 1, 'prompt_workflow_name': '种草分享型', 'workflow_id': 'WF-001', 'content': '你是一个小红书种草达人,请根据产品信息写一篇真实、有感染力的种草笔记...', 'usage_count': 0, 'created_at': datetime.datetime(2025, 12, 12, 16, 58, 22), 'updated_at': datetime.datetime(2025, 12, 12, 16, 58, 22)}] 23:48:10 - article_server - INFO - [SQL执行] 开始执行查询SQL 23:48:10 - article_server - INFO - [SQL语句] SELECT COUNT(id) as total FROM ai_articles WHERE enterprise_id = %s AND status = 'published_review' 23:48:10 - article_server - INFO - [SQL参数] (1,) 23:48:10 - article_server - INFO - [SQL结果] 查询完成,返回 5 条记录 23:48:10 - article_server - INFO - [SQL结果] 查询完成,返回 20 条记录 23:48:10 - article_server - INFO - [业务日志] 操作: get_user_info | 用户ID: 4 | 目标: user#4 | 状态: success | IP: 104.244.91.212 | 日志ID: 186 23:48:10 - article_server - INFO - [API响应] GET /api/users/info - IP: 104.244.91.212 - 状态码: 200 23:48:10 - article_server - INFO - [SQL结果] 查询完成,返回 1 条记录 23:48:10 - article_server - INFO - [SQL数据] 查询结果: [{'total': 0}] 23:48:10 - article_server - INFO - [SQL执行] 开始执行查询SQL 23:48:10 - 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 23:48:10 - article_server - INFO - [SQL参数] (25,) 23:48:10 - article_server - INFO - [SQL执行] 开始执行查询SQL 23:48:10 - article_server - INFO - [SQL语句] SELECT id, tag_name FROM ai_product_tags WHERE product_id = %s 23:48:10 - article_server - INFO - [SQL参数] (25,) 23:48:10 - article_server - INFO - [SQL执行] 开始执行查询SQL 23:48:10 - article_server - INFO - [SQL语句] SELECT id, article_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 IN (%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s) ORDER BY article_id, sort_order ASC, created_at ASC 23:48:10 - article_server - INFO - [SQL参数] [48, 49, 50, 45, 46, 47, 42, 43, 44, 37, 38, 39, 40, 41, 32, 33, 34, 35, 36, 31] 23:48:10 - article_server - INFO - [SQL结果] 查询完成,返回 2 条记录 23:48:10 - article_server - INFO - [SQL数据] 查询结果: [{'id': 14, 'tag_name': '去重'}, {'id': 15, 'tag_name': '基础提示词'}] 23:48:10 - article_server - INFO - [SQL结果] 查询完成,返回 0 条记录 23:48:10 - article_server - INFO - [SQL结果] 查询完成,返回 0 条记录 23:48:10 - article_server - INFO - [SQL执行] 开始执行查询SQL 23:48:10 - article_server - INFO - [SQL语句] SELECT COUNT(id) as total FROM ai_articles WHERE enterprise_id = %s AND status = 'published' 23:48:10 - article_server - INFO - [SQL参数] (1,) 23:48:10 - article_server - INFO - [SQL执行] 开始执行查询SQL 23:48:10 - 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 23:48:10 - article_server - INFO - [SQL参数] (14,) 23:48:10 - article_server - INFO - [SQL结果] 查询完成,返回 1 条记录 23:48:10 - article_server - INFO - [SQL数据] 查询结果: [{'total': 0}] 23:48:10 - article_server - INFO - [SQL执行] 开始执行查询SQL 23:48:10 - article_server - INFO - [SQL语句] SELECT id, article_id, coze_tag, created_at FROM ai_article_tags WHERE article_id IN (%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s) 23:48:10 - article_server - INFO - [SQL参数] [48, 49, 50, 45, 46, 47, 42, 43, 44, 37, 38, 39, 40, 41, 32, 33, 34, 35, 36, 31] 23:48:10 - article_server - INFO - [SQL执行] 开始执行查询SQL 23:48:10 - article_server - INFO - [SQL语句] SELECT id, tag_name FROM ai_product_tags WHERE product_id = %s 23:48:10 - article_server - INFO - [SQL参数] (13,) 23:48:10 - article_server - INFO - [SQL结果] 查询完成,返回 0 条记录 23:48:10 - article_server - INFO - [SQL结果] 查询完成,返回 3 条记录 23:48:10 - article_server - INFO - [SQL数据] 查询结果: [{'id': 1, 'article_id': 46, 'coze_tag': '#提肛运动效果# #前列腺增生# #提肛练习方法# #辅助前列腺治疗# #前列腺健康#', 'created_at': datetime.datetime(2025, 12, 18, 12, 40, 2)}, {'id': 2, 'article_id': 47, 'coze_tag': '#前列腺增生# #保守治疗# #手术治疗# #病情判断# #排尿问题#', 'created_at': datetime.datetime(2025, 12, 18, 12, 40, 3)}, {'id': 3, 'article_id': 45, 'coze_tag': '#前列腺增生# #疾病病因# #年龄因素# #激素失衡# #生活习惯#', 'created_at': datetime.datetime(2025, 12, 18, 12, 40, 4)}] 23:48:10 - article_server - INFO - [文章仪表盘] 查询成功, 企业ID: 1, 总数: 31, 可发: 0, 已发: 0, IP: 104.244.91.212 23:48:10 - article_server - INFO - [API响应] GET /api/articles/list_dashboard - IP: 104.244.91.212 - 状态码: 200 23:48:10 - article_server - INFO - [SQL结果] 查询完成,返回 0 条记录 23:48:10 - article_server - INFO - [获取文章列表] 查询成功, 总数: 31, 当前页: 1, 每页: 20, 返回数量: 20, 企业ID: 1, IP: 104.244.91.212 23:48:10 - article_server - INFO - [API响应] GET /api/articles/list - IP: 104.244.91.212 - 状态码: 200 23:48:10 - article_server - INFO - [SQL执行] 开始执行查询SQL 23:48:10 - 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 23:48:10 - article_server - INFO - [SQL参数] (1,) 23:48:10 - article_server - INFO - [SQL结果] 查询完成,返回 0 条记录 23:48:10 - article_server - INFO - [SQL执行] 开始执行查询SQL 23:48:10 - article_server - INFO - [SQL语句] SELECT id, tag_name FROM ai_product_tags WHERE product_id = %s 23:48:10 - article_server - INFO - [SQL参数] (12,) 23:48:10 - article_server - INFO - 获取提示词列表成功,总数: 3 23:48:10 - article_server - INFO - [API响应] GET /api/prompts/list - IP: 104.244.91.212 - 状态码: 200 23:48:10 - article_server - INFO - [SQL结果] 查询完成,返回 0 条记录 23:48:10 - article_server - INFO - [SQL执行] 开始执行查询SQL 23:48:10 - article_server - INFO - [SQL语句] SELECT id, tag_name FROM ai_product_tags WHERE product_id = %s 23:48:10 - article_server - INFO - [SQL参数] (11,) 23:48:10 - article_server - INFO - [SQL结果] 查询完成,返回 0 条记录 23:48:10 - article_server - INFO - [SQL执行] 开始执行查询SQL 23:48:10 - article_server - INFO - [SQL语句] SELECT id, tag_name FROM ai_product_tags WHERE product_id = %s 23:48:10 - article_server - INFO - [SQL参数] (1,) 23:48:10 - article_server - INFO - [SQL结果] 查询完成,返回 1 条记录 23:48:10 - article_server - INFO - [SQL数据] 查询结果: [{'id': 1, 'tag_name': '保湿'}] 23:48:10 - article_server - INFO - [获取产品列表] 查询成功, 总数: 5, 当前页: 1, 每页: 100, 返回数量: 5, 企业ID: 1, IP: 104.244.91.212 23:48:10 - article_server - INFO - [API响应] GET /api/products/list - IP: 104.244.91.212 - 状态码: 200 23:48:29 - article_server - INFO - [API访问] GET /api/users/info - IP: 104.244.91.212 - User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Sa 23:48:29 - article_server - INFO - [Token验证成功] 用户ID: 4 23:48:29 - article_server - INFO - [获取用户信息] 开始处理请求, IP: 104.244.91.212 23:48:29 - article_server - INFO - [获取用户信息] 用户ID: 4, IP: 104.244.91.212 23:48:29 - article_server - INFO - [API访问] GET /api/articles/list_dashboard - IP: 104.244.91.212 - User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Sa 23:48:29 - article_server - INFO - [Token验证成功] 用户ID: 4 23:48:29 - article_server - INFO - [文章仪表盘] 开始处理请求, IP: 104.244.91.212 23:48:29 - article_server - INFO - [API访问] GET /api/products/list - IP: 104.244.91.212 - User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Sa 23:48:29 - article_server - INFO - [Token验证成功] 用户ID: 4 23:48:29 - article_server - INFO - [获取产品列表] 开始处理请求, IP: 104.244.91.212 23:48:29 - article_server - INFO - [获取产品列表] 用户信息 - 用户ID: 4, 企业ID: 1, IP: 104.244.91.212 23:48:29 - article_server - INFO - [获取产品列表] 查询参数: page=1, pageSize=100, keyword=, type=, status=, 企业ID: 1, IP: 104.244.91.212 23:48:29 - article_server - INFO - [API访问] GET /api/prompts/list - IP: 104.244.91.212 - User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Sa 23:48:29 - article_server - INFO - [Token验证成功] 用户ID: 4 23:48:29 - article_server - INFO - [API访问] GET /api/articles/list - IP: 104.244.91.212 - User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Sa 23:48:29 - article_server - INFO - [Token验证成功] 用户ID: 4 23:48:29 - article_server - INFO - [获取文章列表] 开始处理请求, IP: 104.244.91.212 23:48:29 - article_server - INFO - [获取文章列表] 用户信息 - 用户ID: 4, 企业ID: 1, IP: 104.244.91.212 23:48:29 - article_server - INFO - [获取文章列表] 查询参数: page=1, pageSize=20, keyword=, product_id=, status=, 企业ID: 1, IP: 104.244.91.212 23:48:29 - article_server - INFO - [SQL执行] 开始执行查询SQL 23:48:29 - article_server - INFO - [SQL语句] SELECT COUNT(id) as total FROM ai_articles WHERE enterprise_id = %s 23:48:29 - article_server - INFO - [SQL参数] (1,) 23:48:29 - article_server - INFO - [SQL执行] 开始执行查询SQL 23:48:29 - 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' 23:48:29 - article_server - INFO - [SQL参数] (4,) 23:48:29 - article_server - INFO - [SQL执行] 开始执行查询SQL 23:48:29 - article_server - INFO - [SQL语句] SELECT COUNT(*) as total FROM ai_products WHERE enterprise_id = %s AND status != 'deleted' 23:48:29 - article_server - INFO - [SQL参数] [1] 23:48:29 - article_server - INFO - [SQL执行] 开始执行查询SQL 23:48:29 - article_server - INFO - [SQL语句] SELECT COUNT(*) as total FROM ai_prompt_workflow WHERE enterprise_id = %s 23:48:29 - article_server - INFO - [SQL参数] (1,) 23:48:29 - article_server - INFO - [SQL结果] 查询完成,返回 1 条记录 23:48:29 - article_server - INFO - [SQL数据] 查询结果: [{'total': 31}] 23:48:29 - article_server - INFO - [SQL执行] 开始执行查询SQL 23:48:29 - article_server - INFO - [SQL语句] SELECT COUNT(*) as total FROM ai_articles a WHERE a.enterprise_id = %s 23:48:29 - article_server - INFO - [SQL结果] 查询完成,返回 1 条记录 23:48:29 - article_server - INFO - [SQL参数] [1] 23:48:29 - 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)}] 23:48:29 - article_server - INFO - [SQL结果] 查询完成,返回 1 条记录 23:48:29 - article_server - INFO - [SQL数据] 查询结果: [{'total': 3}] 23:48:29 - article_server - INFO - [SQL结果] 查询完成,返回 1 条记录 23:48:29 - article_server - INFO - [SQL数据] 查询结果: [{'total': 5}] 23:48:29 - article_server - INFO - [获取用户信息] 查询成功, 用户: user004, 角色: enterprise, 企业: rwl企业4号, IP: 104.244.91.212 23:48:29 - article_server - INFO - [SQL结果] 查询完成,返回 1 条记录 23:48:29 - article_server - INFO - [SQL数据] 查询结果: [{'total': 31}] 23:48:29 - article_server - INFO - [SQL执行] 开始执行查询SQL 23:48:29 - article_server - INFO - [SQL语句] SELECT COUNT(id) as total FROM ai_articles WHERE enterprise_id = %s AND status = 'published_review' 23:48:29 - article_server - INFO - [SQL参数] (1,) 23:48:29 - article_server - INFO - [SQL执行] 开始执行查询SQL 23:48:29 - 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 23:48:29 - article_server - INFO - [SQL参数] (1, 100, 0) 23:48:29 - article_server - INFO - [SQL执行] 开始执行插入SQL 23:48:29 - 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()) 23:48:29 - article_server - INFO - [SQL参数] (4, 'get_user_info', 'user', 4, '查询用户信息: user004', '104.244.91.212', '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) 23:48:29 - article_server - INFO - [SQL执行] 开始执行查询SQL 23:48: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 23:48:29 - article_server - INFO - [SQL参数] [1, 100, 0] 23:48:29 - article_server - INFO - [SQL结果] 查询完成,返回 1 条记录 23:48:29 - article_server - INFO - [SQL数据] 查询结果: [{'total': 0}] 23:48:29 - article_server - INFO - [SQL结果] 查询完成,返回 3 条记录 23:48:29 - article_server - INFO - [SQL数据] 查询结果: [{'id': 25, 'prompt_workflow_name': 'Inject基础提示词', 'workflow_id': '7576997068138659846', 'content': '你是一个健康类自媒体的编辑,每天需要撰写健康类内容。我将要给你一个topic,这个topic是一个问句。请你先产生一个段落的回复,然后再段展开回复。每个段落都需要用一个emoji开头。最后,请生成tag。段落与段落之间空一行,保证可读性。\n详细要求如下:\n一、核心要求:\n1.\t目标受众: 普通大众,非专业人士。务必:\n¡\t避免使用专业术语和书面化表达\n¡\t内容安全限制:\n\uf06e\t❌ 禁止提及任何人体私密部位或敏感功能\n\uf06e\t❌ 禁用可能引发恐慌的词汇(如"危险""致命")\n2.\t内容核心: 围绕“主题”,聚焦病症、问题、危害或困扰, 解释原因、原理,介绍症状、类型,提供积极、实用的解决方案、改善建议或注意事项等有价值的内容均可。\n3.\t唯一性与实用性: 生成的内容需确保信息准确(基于常识)且每次生成的内容不应与历史输出重复(针对同一主题多次生成时)。\n二、内容结构及具体要求:\n\uf06c\t【首段提问】 (title):\n¡\t对应内容为{{title}}\n\n\uf06c\t【次段简答】 (short-answer):\n¡\t字数: 60-120字。 \n **内容要求**:\n 1. 第一句话必须直接回答{{title}}的提问,可以拓展1-2句话\n 2. 直接明晰,不要太笼统,禁止罗里吧嗦\n 3. 段前不要emoji表情符号\n \n **✅ 合格示例**:\n 发现HPV16或18阳性,这通常意味着宫颈癌筛查结果显示存在感染。接下来一般会建议做阴道镜检查,再根据检查的具体情况决定治疗方案。\n\n **❌ 不合格示例**:\n • 使用emoji开头\n • 没有直接回答问题\n • 过于笼统泛泛而谈 \n\n\uf06c\t【分段细答】 (contents):\n¡\t数量要求:2-3段。\n¡\t字数要求: 60~100字/段。\n¡\t核心要求:\n\uf06e\t语言口语化、自然流畅。\n\uf06e\t段落内容必须围绕核心观点展开,根据不同情况分类详细阐述问题,可以是具体可行的建议(吃什么、做什么、注意什么等),疾病的科普(主要症状、影响、诱因等),或者其它逻辑合理的内容也可以。\n\uf06e\t内容有一定的逻辑,包括但不限于(首先、其次、最后),(第一,第二,第三),(不仅、而且、还有),(初级、中级、高级)。\n\uf06e\t每段内容均衡,不超过五句话,确保信息全面且易于消化。\n\uf06e\t分段细答部分应当是次段简答部分的延伸,但用词不能和次段简答部分有太多重复,请保持多样性。\n\uf06e\t 在生成回答前,必须执行以下创造性流程:\n\t\t结构性禁令(排除法):行文结构不得是“定义→成因→症状→治疗”或“是什么→为什么→怎么办”及其任何变体。\n\t\t动态自我审视(核心步骤):\n\t\t回顾:主动审视历史内容中,针对相同或相似主题已使用过的所有核心阐述逻辑。\n\t\t规避:明确禁止重复或小幅修改上述任何逻辑。\n\t\t创新:基于当前问题的具体内涵,生成一个在本质上全新的、服务于核心问题的最佳解释路径。该路径必须与所有已回顾的逻辑存在根本性差异。\n\t\t输出确认:最终采用的逻辑结构,应是本次对话上下文中一次独特的、未经使用的创造性表达形式。\n\n\uf06c\t【标签】 (tags):\n¡\t**单个关键词字数:4-8个字。\n¡\t内容:* (1)根据正文内容,生成5个内容强相关tag; (2)标签格式:每个关键词前后都有# (例: #养生小知识# #中医养生##习惯养成# #健康养生#)\n三、变量输入:\n\uf06c\t主题: {{title}}\n四、最终安全规则:\n4.\t全篇禁止出现人体私密部位描述\n5.\t关键安全信息重复出现≥2次\n6.\t每句话≤20字,复合句用逗号分隔\n7、不能出现 "下面就给大家仔细说说",“下面具体讲讲”,话术\n', 'usage_count': 20, 'created_at': datetime.datetime(2025, 12, 12, 20, 53, 9), 'updated_at': datetime.datetime(2025, 12, 19, 15, 48, 3)}, {'id': 14, 'prompt_workflow_name': '测试提示词', 'workflow_id': 'WF-CC8BB759', 'content': '这是一个测试提示词模板...', 'usage_count': 2, 'created_at': datetime.datetime(2025, 12, 12, 17, 41, 22), 'updated_at': datetime.datetime(2025, 12, 12, 17, 51, 54)}, {'id': 1, 'prompt_workflow_name': '种草分享型', 'workflow_id': 'WF-001', 'content': '你是一个小红书种草达人,请根据产品信息写一篇真实、有感染力的种草笔记...', 'usage_count': 0, 'created_at': datetime.datetime(2025, 12, 12, 16, 58, 22), 'updated_at': datetime.datetime(2025, 12, 12, 16, 58, 22)}] 23:48:29 - article_server - INFO - [SQL结果] 查询完成,返回 5 条记录 23:48:29 - article_server - INFO - [SQL结果] 插入完成,新记录ID: 215 23:48:29 - article_server - INFO - [SQL执行] 开始执行查询SQL 23:48:29 - 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 23:48:29 - article_server - INFO - [SQL参数] [1, 20, 0] 23:48:29 - article_server - INFO - [业务日志] 操作: get_user_info | 用户ID: 4 | 目标: user#4 | 状态: success | IP: 104.244.91.212 | 日志ID: 215 23:48:29 - article_server - INFO - [API响应] GET /api/users/info - IP: 104.244.91.212 - 状态码: 200 23:48:29 - article_server - INFO - [SQL执行] 开始执行查询SQL 23:48:29 - 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 23:48:29 - article_server - INFO - [SQL参数] (25,) 23:48:29 - article_server - INFO - [SQL执行] 开始执行查询SQL 23:48:29 - article_server - INFO - [SQL语句] SELECT COUNT(id) as total FROM ai_articles WHERE enterprise_id = %s AND status = 'published' 23:48:29 - article_server - INFO - [SQL参数] (1,) 23:48:29 - article_server - INFO - [SQL结果] 查询完成,返回 20 条记录 23:48:29 - article_server - INFO - [SQL执行] 开始执行查询SQL 23:48:29 - article_server - INFO - [SQL语句] SELECT id, tag_name FROM ai_product_tags WHERE product_id = %s 23:48:29 - article_server - INFO - [SQL参数] (25,) 23:48:29 - article_server - INFO - [SQL结果] 查询完成,返回 2 条记录 23:48:29 - article_server - INFO - [SQL数据] 查询结果: [{'id': 14, 'tag_name': '去重'}, {'id': 15, 'tag_name': '基础提示词'}] 23:48:29 - article_server - INFO - [SQL结果] 查询完成,返回 1 条记录 23:48:29 - article_server - INFO - [SQL数据] 查询结果: [{'total': 0}] 23:48:29 - article_server - INFO - [SQL结果] 查询完成,返回 0 条记录 23:48:29 - article_server - INFO - [文章仪表盘] 查询成功, 企业ID: 1, 总数: 31, 可发: 0, 已发: 0, IP: 104.244.91.212 23:48:29 - article_server - INFO - [API响应] GET /api/articles/list_dashboard - IP: 104.244.91.212 - 状态码: 200 23:48:29 - article_server - INFO - [SQL执行] 开始执行查询SQL 23:48:29 - 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 23:48:29 - article_server - INFO - [SQL参数] (14,) 23:48:29 - article_server - INFO - [SQL执行] 开始执行查询SQL 23:48:29 - article_server - INFO - [SQL语句] SELECT id, article_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 IN (%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s) ORDER BY article_id, sort_order ASC, created_at ASC 23:48:29 - article_server - INFO - [SQL参数] [48, 49, 50, 45, 46, 47, 42, 43, 44, 37, 38, 39, 40, 41, 32, 33, 34, 35, 36, 31] 23:48:29 - article_server - INFO - [SQL结果] 查询完成,返回 0 条记录 23:48:29 - article_server - INFO - [SQL执行] 开始执行查询SQL 23:48:29 - article_server - INFO - [SQL语句] SELECT id, tag_name FROM ai_product_tags WHERE product_id = %s 23:48:29 - article_server - INFO - [SQL参数] (13,) 23:48:29 - article_server - INFO - [SQL结果] 查询完成,返回 0 条记录 23:48:29 - article_server - INFO - [SQL结果] 查询完成,返回 0 条记录 23:48:29 - article_server - INFO - [SQL执行] 开始执行查询SQL 23:48:29 - 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 23:48:29 - article_server - INFO - [SQL参数] (1,) 23:48:29 - article_server - INFO - [SQL执行] 开始执行查询SQL 23:48:29 - article_server - INFO - [SQL语句] SELECT id, article_id, coze_tag, created_at FROM ai_article_tags WHERE article_id IN (%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s) 23:48:29 - article_server - INFO - [SQL参数] [48, 49, 50, 45, 46, 47, 42, 43, 44, 37, 38, 39, 40, 41, 32, 33, 34, 35, 36, 31] 23:48:29 - article_server - INFO - [SQL结果] 查询完成,返回 0 条记录 23:48:29 - article_server - INFO - [SQL执行] 开始执行查询SQL 23:48:29 - article_server - INFO - [SQL语句] SELECT id, tag_name FROM ai_product_tags WHERE product_id = %s 23:48:29 - article_server - INFO - [SQL参数] (12,) 23:48:29 - article_server - INFO - 获取提示词列表成功,总数: 3 23:48:29 - article_server - INFO - [API响应] GET /api/prompts/list - IP: 104.244.91.212 - 状态码: 200 23:48:29 - article_server - INFO - [SQL结果] 查询完成,返回 6 条记录 23:48:29 - article_server - INFO - [SQL结果] 查询完成,返回 0 条记录 23:48:29 - article_server - INFO - [获取文章列表] 查询成功, 总数: 31, 当前页: 1, 每页: 20, 返回数量: 20, 企业ID: 1, IP: 104.244.91.212 23:48:29 - article_server - INFO - [API响应] GET /api/articles/list - IP: 104.244.91.212 - 状态码: 200 23:48:29 - article_server - INFO - [SQL执行] 开始执行查询SQL 23:48:29 - article_server - INFO - [SQL语句] SELECT id, tag_name FROM ai_product_tags WHERE product_id = %s 23:48:29 - article_server - INFO - [SQL参数] (11,) 23:48:29 - article_server - INFO - [SQL结果] 查询完成,返回 0 条记录 23:48:29 - article_server - INFO - [SQL执行] 开始执行查询SQL 23:48:29 - article_server - INFO - [SQL语句] SELECT id, tag_name FROM ai_product_tags WHERE product_id = %s 23:48:29 - article_server - INFO - [SQL参数] (1,) 23:48:29 - article_server - INFO - [SQL结果] 查询完成,返回 1 条记录 23:48:29 - article_server - INFO - [SQL数据] 查询结果: [{'id': 1, 'tag_name': '保湿'}] 23:48:29 - article_server - INFO - [获取产品列表] 查询成功, 总数: 5, 当前页: 1, 每页: 100, 返回数量: 5, 企业ID: 1, IP: 104.244.91.212 23:48:29 - article_server - INFO - [API响应] GET /api/products/list - IP: 104.244.91.212 - 状态码: 200 23:51:30 - article_server - INFO - [API访问] POST /api/articles/batch-published-account-cycle - IP: 127.0.0.1 - User-Agent: python-requests/2.32.3 23:51:30 - article_server - INFO - [Token验证成功] 用户ID: 4 23:51:30 - article_server - INFO - [批量发布文章-循环分配] 入参数据: {"article_ids": [47, 46, 45, 50, 49, 48], "author_ids": [1]} 23:51:30 - article_server - INFO - [批量发布文章-循环分配] 排序后文章ID: [45, 46, 47, 48, 49, 50] 23:51:30 - article_server - INFO - [批量发布文章-循环分配] 排序后作者ID: [1] 23:51:30 - article_server - INFO - [SQL执行] 开始执行查询SQL 23:51:30 - article_server - INFO - [SQL语句] SELECT id, app_id, app_token, author_name, department_id, department_name FROM ai_authors WHERE id IN (%s) AND status = 'active' ORDER BY id ASC 23:51:30 - article_server - INFO - [SQL参数] [1] 23:51:30 - article_server - INFO - [SQL结果] 查询完成,返回 1 条记录 23:51:30 - article_server - INFO - [SQL数据] 查询结果: [{'id': 1, 'app_id': '', 'app_token': '', 'author_name': '小红书用户', 'department_id': 1, 'department_name': '雇员'}] 23:51:30 - article_server - INFO - [批量发布文章-循环分配] 查询到作者信息: [{"id": 1, "app_id": "", "app_token": "", "author_name": "小红书用户", "department_id": 1, "department_name": "雇员"}] 23:51:30 - article_server - INFO - [批量发布文章authors_dict] 查询到作者信息: {"1": {"id": 1, "app_id": "", "app_token": "", "author_name": "小红书用户", "department_id": 1, "department_name": "雇员"}} 23:51:30 - article_server - INFO - [批量发布文章-循环分配] 执行SQL查询文章: SELECT id, title, status FROM ai_articles WHERE id IN (%s,%s,%s,%s,%s,%s) AND status = 'pending_review' ORDER BY id ASC - 参数: [45, 46, 47, 48, 49, 50] 23:51:30 - article_server - INFO - [SQL执行] 开始执行查询SQL 23:51:30 - article_server - INFO - [SQL语句] SELECT id, title, status FROM ai_articles WHERE id IN (%s,%s,%s,%s,%s,%s) AND status = 'pending_review' ORDER BY id ASC 23:51:30 - article_server - INFO - [SQL参数] [45, 46, 47, 48, 49, 50] 23:51:30 - article_server - INFO - [SQL结果] 查询完成,返回 6 条记录 23:51:30 - article_server - INFO - [批量发布文章-循环分配] 查询结果: 请求6篇,找到6篇有效文章 23:51:30 - article_server - INFO - [批量发布文章-循环分配] 开始循环分配处理 6 篇文章 23:51:30 - article_server - INFO - [批量发布文章-循环分配] 文章 45 分配给作者 1 (小红书用户) 23:51:30 - article_server - INFO - [批量发布文章-循环分配] 文章 46 分配给作者 1 (小红书用户) 23:51:30 - article_server - INFO - [批量发布文章-循环分配] 文章 47 分配给作者 1 (小红书用户) 23:51:30 - article_server - INFO - [批量发布文章-循环分配] 文章 48 分配给作者 1 (小红书用户) 23:51:30 - article_server - INFO - [批量发布文章-循环分配] 文章 49 分配给作者 1 (小红书用户) 23:51:30 - article_server - INFO - [批量发布文章-循环分配] 文章 50 分配给作者 1 (小红书用户) 23:51:30 - article_server - INFO - [批量发布文章-循环分配] 执行SQL更新: UPDATE ai_articles SET status = 'assign_authors', author_id = %s, author_name = %s, department_name = %s, department_id = %s, publish_user_id = %s, publish_time = NOW(), updated_at = NOW() WHERE id = %s - 参数: (1, '小红书用户', '雇员', 1, 4, 45) 23:51:30 - article_server - INFO - [SQL执行] 开始执行更新SQL 23:51:30 - article_server - INFO - [SQL语句] UPDATE ai_articles SET status = 'assign_authors', author_id = %s, author_name = %s, department_name = %s, department_id = %s, publish_user_id = %s, publish_time = NOW(), updated_at = NOW() WHERE id = %s 23:51:30 - article_server - INFO - [SQL参数] (1, '小红书用户', '雇员', 1, 4, 45) 23:51:30 - article_server - INFO - [SQL结果] 更新完成,影响 1 行 23:51:30 - article_server - INFO - [批量发布文章-循环分配] 更新文章 45 完成,影响行数: 1 23:51:30 - article_server - INFO - [批量发布文章-循环分配] 文章发布成功: ID=45, 标题=前列腺增生症的病因有哪些, 作者=小红书用户, 百家号ID: bjh_45_1766159490 23:51:30 - article_server - INFO - [批量发布文章-循环分配] 执行SQL更新: UPDATE ai_articles SET status = 'assign_authors', author_id = %s, author_name = %s, department_name = %s, department_id = %s, publish_user_id = %s, publish_time = NOW(), updated_at = NOW() WHERE id = %s - 参数: (1, '小红书用户', '雇员', 1, 4, 46) 23:51:30 - article_server - INFO - [SQL执行] 开始执行更新SQL 23:51:30 - article_server - INFO - [SQL语句] UPDATE ai_articles SET status = 'assign_authors', author_id = %s, author_name = %s, department_name = %s, department_id = %s, publish_user_id = %s, publish_time = NOW(), updated_at = NOW() WHERE id = %s 23:51:30 - article_server - INFO - [SQL参数] (1, '小红书用户', '雇员', 1, 4, 46) 23:51:30 - article_server - INFO - [SQL结果] 更新完成,影响 1 行 23:51:30 - article_server - INFO - [批量发布文章-循环分配] 更新文章 46 完成,影响行数: 1 23:51:30 - article_server - INFO - [批量发布文章-循环分配] 文章发布成功: ID=46, 标题=提肛对前列腺增生有效果吗, 作者=小红书用户, 百家号ID: bjh_46_1766159490 23:51:30 - article_server - INFO - [批量发布文章-循环分配] 执行SQL更新: UPDATE ai_articles SET status = 'assign_authors', author_id = %s, author_name = %s, department_name = %s, department_id = %s, publish_user_id = %s, publish_time = NOW(), updated_at = NOW() WHERE id = %s - 参数: (1, '小红书用户', '雇员', 1, 4, 47) 23:51:30 - article_server - INFO - [SQL执行] 开始执行更新SQL 23:51:30 - article_server - INFO - [SQL语句] UPDATE ai_articles SET status = 'assign_authors', author_id = %s, author_name = %s, department_name = %s, department_id = %s, publish_user_id = %s, publish_time = NOW(), updated_at = NOW() WHERE id = %s 23:51:30 - article_server - INFO - [SQL参数] (1, '小红书用户', '雇员', 1, 4, 47) 23:51:30 - article_server - INFO - [SQL结果] 更新完成,影响 1 行 23:51:30 - article_server - INFO - [批量发布文章-循环分配] 更新文章 47 完成,影响行数: 1 23:51:30 - article_server - INFO - [批量发布文章-循环分配] 文章发布成功: ID=47, 标题=前列腺增生必须做手术吗, 作者=小红书用户, 百家号ID: bjh_47_1766159490 23:51:30 - article_server - INFO - [批量发布文章-循环分配] 执行SQL更新: UPDATE ai_articles SET status = 'assign_authors', author_id = %s, author_name = %s, department_name = %s, department_id = %s, publish_user_id = %s, publish_time = NOW(), updated_at = NOW() WHERE id = %s - 参数: (1, '小红书用户', '雇员', 1, 4, 48) 23:51:30 - article_server - INFO - [SQL执行] 开始执行更新SQL 23:51:30 - article_server - INFO - [SQL语句] UPDATE ai_articles SET status = 'assign_authors', author_id = %s, author_name = %s, department_name = %s, department_id = %s, publish_user_id = %s, publish_time = NOW(), updated_at = NOW() WHERE id = %s 23:51:30 - article_server - INFO - [SQL参数] (1, '小红书用户', '雇员', 1, 4, 48) 23:51:30 - article_server - INFO - [SQL结果] 更新完成,影响 1 行 23:51:30 - article_server - INFO - [批量发布文章-循环分配] 更新文章 48 完成,影响行数: 1 23:51:30 - article_server - INFO - [批量发布文章-循环分配] 文章发布成功: ID=48, 标题=包皮炎会传染给女性吗?, 作者=小红书用户, 百家号ID: bjh_48_1766159490 23:51:30 - article_server - INFO - [批量发布文章-循环分配] 执行SQL更新: UPDATE ai_articles SET status = 'assign_authors', author_id = %s, author_name = %s, department_name = %s, department_id = %s, publish_user_id = %s, publish_time = NOW(), updated_at = NOW() WHERE id = %s - 参数: (1, '小红书用户', '雇员', 1, 4, 49) 23:51:30 - article_server - INFO - [SQL执行] 开始执行更新SQL 23:51:30 - article_server - INFO - [SQL语句] UPDATE ai_articles SET status = 'assign_authors', author_id = %s, author_name = %s, department_name = %s, department_id = %s, publish_user_id = %s, publish_time = NOW(), updated_at = NOW() WHERE id = %s 23:51:30 - article_server - INFO - [SQL参数] (1, '小红书用户', '雇员', 1, 4, 49) 23:51:30 - article_server - INFO - [SQL结果] 更新完成,影响 1 行 23:51:30 - article_server - INFO - [批量发布文章-循环分配] 更新文章 49 完成,影响行数: 1 23:51:30 - article_server - INFO - [批量发布文章-循环分配] 文章发布成功: ID=49, 标题=得了包皮炎很痒怎么办?, 作者=小红书用户, 百家号ID: bjh_49_1766159490 23:51:30 - article_server - INFO - [批量发布文章-循环分配] 执行SQL更新: UPDATE ai_articles SET status = 'assign_authors', author_id = %s, author_name = %s, department_name = %s, department_id = %s, publish_user_id = %s, publish_time = NOW(), updated_at = NOW() WHERE id = %s - 参数: (1, '小红书用户', '雇员', 1, 4, 50) 23:51:30 - article_server - INFO - [SQL执行] 开始执行更新SQL 23:51:30 - article_server - INFO - [SQL语句] UPDATE ai_articles SET status = 'assign_authors', author_id = %s, author_name = %s, department_name = %s, department_id = %s, publish_user_id = %s, publish_time = NOW(), updated_at = NOW() WHERE id = %s 23:51:30 - article_server - INFO - [SQL参数] (1, '小红书用户', '雇员', 1, 4, 50) 23:51:30 - article_server - INFO - [SQL结果] 更新完成,影响 1 行 23:51:30 - article_server - INFO - [批量发布文章-循环分配] 更新文章 50 完成,影响行数: 1 23:51:30 - article_server - INFO - [批量发布文章-循环分配] 文章发布成功: ID=50, 标题=龟头包皮炎用什么软膏?, 作者=小红书用户, 百家号ID: bjh_50_1766159490 23:51:30 - article_server - INFO - [批量发布文章-循环分配] 执行SQL插入日志: INSERT INTO ai_logs (user_id, action, target_type, target_id, description, ip_address, user_agent, status) VALUES (%s, %s, %s, %s, %s, %s, %s, %s) - 参数: (4, 'batch_publish_articles_cycle', 'articles', None, '批量发布文章(循环分配),成功: 6,失败: 0,文章ID: 45,46,47,48,49,50,作者ID: 1', '127.0.0.1', 'python-requests/2.32.3', 'success') 23:51:30 - article_server - INFO - [SQL执行] 开始执行插入SQL 23:51:30 - article_server - INFO - [SQL语句] INSERT INTO ai_logs (user_id, action, target_type, target_id, description, ip_address, user_agent, status) VALUES (%s, %s, %s, %s, %s, %s, %s, %s) 23:51:30 - article_server - INFO - [SQL参数] (4, 'batch_publish_articles_cycle', 'articles', None, '批量发布文章(循环分配),成功: 6,失败: 0,文章ID: 45,46,47,48,49,50,作者ID: 1', '127.0.0.1', 'python-requests/2.32.3', 'success') 23:51:30 - article_server - INFO - [SQL结果] 插入完成,新记录ID: 287 23:51:30 - article_server - INFO - [批量发布文章-循环分配] 操作日志记录成功 23:51:30 - article_server - INFO - 批量发布文章(循环分配)完成,成功: 6,失败: 0 23:51:30 - article_server - INFO - [API响应] POST /api/articles/batch-published-account-cycle - IP: 127.0.0.1 - 状态码: 200 23:54:58 - article_server - INFO - [API访问] POST /api/articles/generate - IP: 104.244.91.212 - User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Sa 23:54:58 - article_server - INFO - [Token验证成功] 用户ID: 4 23:54:58 - article_server - INFO - [生成文案] 开始处理生成文案请求, IP: 104.244.91.212 23:54:58 - article_server - INFO - [生成文案] 用户信息 - 用户ID: 4, 企业ID: 1, IP: 104.244.91.212 23:54:58 - article_server - INFO - [生成文案] 收到生成请求, 产品ID: 25, 提示词ID: 25, 主题数: 3, 企业ID: 1, IP: 104.244.91.212 23:54:58 - article_server - INFO - [生成文案] 验证产品是否存在, 产品ID: 25, 企业ID: 1 23:54:58 - article_server - INFO - [SQL执行] 开始执行查询SQL 23:54:58 - article_server - INFO - [SQL语句] SELECT id, name FROM ai_products WHERE id = %s AND enterprise_id = %s 23:54:58 - article_server - INFO - [SQL参数] (25, 1) 23:54:58 - article_server - INFO - [SQL结果] 查询完成,返回 1 条记录 23:54:58 - article_server - INFO - [SQL数据] 查询结果: [{'id': 25, 'name': '健康类自媒体'}] 23:54:58 - article_server - INFO - [生成文案] 产品验证成功, 产品名称: 健康类自媒体, ID: 25 23:54:58 - article_server - INFO - [生成文案] 验证提示词是否存在, 提示词ID: 25, 企业ID: 1 23:54:58 - article_server - INFO - [SQL执行] 开始执行查询SQL 23:54:58 - article_server - INFO - [SQL语句] SELECT id FROM ai_prompt_workflow WHERE id = %s AND enterprise_id = %s 23:54:58 - article_server - INFO - [SQL参数] (25, 1) 23:54:58 - article_server - INFO - [SQL结果] 查询完成,返回 1 条记录 23:54:58 - article_server - INFO - [SQL数据] 查询结果: [{'id': 25}] 23:54:58 - article_server - INFO - [生成文案] 提示词验证成功, ID: 25 23:54:58 - article_server - INFO - [生成文案] 开始生成文案, 主题数量: 3, 产品: 健康类自媒体, 企业ID: 1 23:54:58 - article_server - INFO - [批量生成文章] 生成batch_id: 1766159698392226, 待处理数据行数: 3 23:54:58 - article_server - INFO - [生成文案] 开始生成主题文案: 霉菌性包皮炎怎么治疗?, 产品: 健康类自媒体 23:54:58 - article_server - INFO - [SQL执行] 开始执行插入SQL 23:54:58 - article_server - INFO - [SQL语句] INSERT INTO ai_articles (enterprise_id, product_id, prompt_workflow_id, title, topic, content, status, batch_id) VALUES (%s, %s, %s, %s, %s, %s, %s, %s) 23:54:58 - article_server - INFO - [SQL参数] (1, 25, 25, '霉菌性包皮炎怎么治疗?', '霉菌性包皮炎怎么治疗?', '', 'generate', '1766159698392226') 23:54:58 - article_server - INFO - [SQL结果] 插入完成,新记录ID: 51 23:54:58 - article_server - INFO - [生成文案] 文案生成成功, 文案ID: 51, 主题: 霉菌性包皮炎怎么治疗?, 标题: 霉菌性包皮炎怎么治疗? 23:54:58 - article_server - INFO - [生成文案] 开始生成主题文案: 小孩包皮过长 几岁割比较好, 产品: 健康类自媒体 23:54:58 - article_server - INFO - [SQL执行] 开始执行插入SQL 23:54:58 - article_server - INFO - [SQL语句] INSERT INTO ai_articles (enterprise_id, product_id, prompt_workflow_id, title, topic, content, status, batch_id) VALUES (%s, %s, %s, %s, %s, %s, %s, %s) 23:54:58 - article_server - INFO - [SQL参数] (1, 25, 25, '小孩包皮过长 几岁割比较好', '小孩包皮过长 几岁割比较好', '', 'generate', '1766159698392226') 23:54:58 - article_server - INFO - [SQL结果] 插入完成,新记录ID: 52 23:54:58 - article_server - INFO - [生成文案] 文案生成成功, 文案ID: 52, 主题: 小孩包皮过长 几岁割比较好, 标题: 小孩包皮过长 几岁割比较好 23:54:58 - article_server - INFO - [生成文案] 开始生成主题文案: 如果包皮过长不割会怎么样, 产品: 健康类自媒体 23:54:58 - article_server - INFO - [SQL执行] 开始执行插入SQL 23:54:58 - article_server - INFO - [SQL语句] INSERT INTO ai_articles (enterprise_id, product_id, prompt_workflow_id, title, topic, content, status, batch_id) VALUES (%s, %s, %s, %s, %s, %s, %s, %s) 23:54:58 - article_server - INFO - [SQL参数] (1, 25, 25, '如果包皮过长不割会怎么样', '如果包皮过长不割会怎么样', '', 'generate', '1766159698392226') 23:54:58 - article_server - INFO - [SQL结果] 插入完成,新记录ID: 53 23:54:58 - article_server - INFO - [生成文案] 文案生成成功, 文案ID: 53, 主题: 如果包皮过长不割会怎么样, 标题: 如果包皮过长不割会怎么样 23:54:58 - article_server - INFO - [SQL执行] 开始执行更新SQL 23:54:58 - article_server - INFO - [SQL语句] UPDATE ai_products SET articles_total = articles_total + %s WHERE id = %s 23:54:58 - article_server - INFO - [SQL参数] (3, 25) 23:54:58 - article_server - INFO - [SQL结果] 更新完成,影响 1 行 23:54:58 - article_server - INFO - [SQL执行] 开始执行更新SQL 23:54:58 - article_server - INFO - [SQL语句] UPDATE ai_enterprises SET articles_total = articles_total + %s WHERE id = %s 23:54:58 - article_server - INFO - [SQL参数] (3, 1) 23:54:58 - article_server - INFO - [SQL结果] 更新完成,影响 1 行 23:54:58 - article_server - INFO - [SQL执行] 开始执行更新SQL 23:54:58 - article_server - INFO - [SQL语句] UPDATE ai_prompt_workflow SET usage_count = usage_count + %s WHERE id = %s 23:54:58 - article_server - INFO - [SQL参数] (3, 25) 23:54:58 - article_server - INFO - [SQL结果] 更新完成,影响 1 行 23:54:58 - article_server - INFO - 生成文案成功: 3篇 23:54:58 - article_server - INFO - [API响应] POST /api/articles/generate - IP: 104.244.91.212 - 状态码: 200 23:54:59 - article_server - INFO - [API访问] GET /api/articles/list - IP: 104.244.91.212 - User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Sa 23:54:59 - article_server - INFO - [Token验证成功] 用户ID: 4 23:54:59 - article_server - INFO - [获取文章列表] 开始处理请求, IP: 104.244.91.212 23:54:59 - article_server - INFO - [获取文章列表] 用户信息 - 用户ID: 4, 企业ID: 1, IP: 104.244.91.212 23:54:59 - article_server - INFO - [获取文章列表] 查询参数: page=1, pageSize=20, keyword=, product_id=, status=, 企业ID: 1, IP: 104.244.91.212 23:54:59 - article_server - INFO - [SQL执行] 开始执行查询SQL 23:54:59 - article_server - INFO - [SQL语句] SELECT COUNT(*) as total FROM ai_articles a WHERE a.enterprise_id = %s 23:54:59 - article_server - INFO - [SQL参数] [1] 23:54:59 - article_server - INFO - [SQL结果] 查询完成,返回 1 条记录 23:54:59 - article_server - INFO - [SQL数据] 查询结果: [{'total': 34}] 23:55:00 - article_server - INFO - [SQL执行] 开始执行查询SQL 23:55:00 - 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 23:55:00 - article_server - INFO - [SQL参数] [1, 20, 0] 23:55:00 - article_server - INFO - [SQL结果] 查询完成,返回 20 条记录 23:55:00 - article_server - INFO - [SQL执行] 开始执行查询SQL 23:55:00 - article_server - INFO - [SQL语句] SELECT id, article_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 IN (%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s) ORDER BY article_id, sort_order ASC, created_at ASC 23:55:00 - article_server - INFO - [SQL参数] [51, 52, 53, 48, 49, 50, 45, 46, 47, 42, 43, 44, 37, 38, 39, 40, 41, 32, 33, 34] 23:55:00 - article_server - INFO - [SQL结果] 查询完成,返回 0 条记录 23:55:00 - article_server - INFO - [SQL执行] 开始执行查询SQL 23:55:00 - article_server - INFO - [SQL语句] SELECT id, article_id, coze_tag, created_at FROM ai_article_tags WHERE article_id IN (%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s) 23:55:00 - article_server - INFO - [SQL参数] [51, 52, 53, 48, 49, 50, 45, 46, 47, 42, 43, 44, 37, 38, 39, 40, 41, 32, 33, 34] 23:55:00 - article_server - INFO - [SQL结果] 查询完成,返回 6 条记录 23:55:00 - article_server - INFO - [获取文章列表] 查询成功, 总数: 34, 当前页: 1, 每页: 20, 返回数量: 20, 企业ID: 1, IP: 104.244.91.212 23:55:00 - article_server - INFO - [API响应] GET /api/articles/list - IP: 104.244.91.212 - 状态码: 200 23:55:00 - article_server - INFO - [API访问] GET /api/articles/list_dashboard - IP: 104.244.91.212 - User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Sa 23:55:00 - article_server - INFO - [Token验证成功] 用户ID: 4 23:55:00 - article_server - INFO - [文章仪表盘] 开始处理请求, IP: 104.244.91.212 23:55:00 - article_server - INFO - [SQL执行] 开始执行查询SQL 23:55:00 - article_server - INFO - [SQL语句] SELECT COUNT(id) as total FROM ai_articles WHERE enterprise_id = %s 23:55:00 - article_server - INFO - [SQL参数] (1,) 23:55:00 - article_server - INFO - [SQL结果] 查询完成,返回 1 条记录 23:55:00 - article_server - INFO - [SQL数据] 查询结果: [{'total': 34}] 23:55:00 - article_server - INFO - [SQL执行] 开始执行查询SQL 23:55:00 - article_server - INFO - [SQL语句] SELECT COUNT(id) as total FROM ai_articles WHERE enterprise_id = %s AND status = 'published_review' 23:55:00 - article_server - INFO - [SQL参数] (1,) 23:55:00 - article_server - INFO - [SQL结果] 查询完成,返回 1 条记录 23:55:00 - article_server - INFO - [SQL数据] 查询结果: [{'total': 0}] 23:55:00 - article_server - INFO - [SQL执行] 开始执行查询SQL 23:55:00 - article_server - INFO - [SQL语句] SELECT COUNT(id) as total FROM ai_articles WHERE enterprise_id = %s AND status = 'published' 23:55:00 - article_server - INFO - [SQL参数] (1,) 23:55:00 - article_server - INFO - [SQL结果] 查询完成,返回 1 条记录 23:55:00 - article_server - INFO - [SQL数据] 查询结果: [{'total': 0}] 23:55:00 - article_server - INFO - [文章仪表盘] 查询成功, 企业ID: 1, 总数: 34, 可发: 0, 已发: 0, IP: 104.244.91.212 23:55:00 - article_server - INFO - [API响应] GET /api/articles/list_dashboard - IP: 104.244.91.212 - 状态码: 200 23:55:10 - article_server - INFO - [API访问] POST /api/articles/batch-published-account-cycle - IP: 127.0.0.1 - User-Agent: python-requests/2.32.3 23:55:10 - article_server - INFO - [Token验证成功] 用户ID: 4 23:55:10 - article_server - INFO - [批量发布文章-循环分配] 入参数据: {"article_ids": [53, 51], "author_ids": [1, 2]} 23:55:10 - article_server - INFO - [批量发布文章-循环分配] 排序后文章ID: [51, 53] 23:55:10 - article_server - INFO - [批量发布文章-循环分配] 排序后作者ID: [1, 2] 23:55:10 - article_server - INFO - [SQL执行] 开始执行查询SQL 23:55:10 - article_server - INFO - [SQL语句] SELECT id, app_id, app_token, author_name, department_id, department_name FROM ai_authors WHERE id IN (%s,%s) AND status = 'active' ORDER BY id ASC 23:55:10 - article_server - INFO - [SQL参数] [1, 2] 23:55:10 - article_server - INFO - [SQL结果] 查询完成,返回 2 条记录 23:55:10 - article_server - INFO - [SQL数据] 查询结果: [{'id': 1, 'app_id': '', 'app_token': '', 'author_name': '小红书用户', 'department_id': 1, 'department_name': '雇员'}, {'id': 2, 'app_id': '', 'app_token': '', 'author_name': '小红书用户', 'department_id': 1, 'department_name': '雇员'}] 23:55:10 - article_server - INFO - [批量发布文章-循环分配] 查询到作者信息: [{"id": 1, "app_id": "", "app_token": "", "author_name": "小红书用户", "department_id": 1, "department_name": "雇员"}, {"id": 2, "app_id": "", "app_token": "", "author_name": "小红书用户", "department_id": 1, "department_name": "雇员"}] 23:55:10 - article_server - INFO - [批量发布文章authors_dict] 查询到作者信息: {"1": {"id": 1, "app_id": "", "app_token": "", "author_name": "小红书用户", "department_id": 1, "department_name": "雇员"}, "2": {"id": 2, "app_id": "", "app_token": "", "author_name": "小红书用户", "department_id": 1, "department_name": "雇员"}} 23:55:10 - article_server - INFO - [批量发布文章-循环分配] 执行SQL查询文章: SELECT id, title, status FROM ai_articles WHERE id IN (%s,%s) AND status = 'pending_review' ORDER BY id ASC - 参数: [51, 53] 23:55:10 - article_server - INFO - [SQL执行] 开始执行查询SQL 23:55:10 - article_server - INFO - [SQL语句] SELECT id, title, status FROM ai_articles WHERE id IN (%s,%s) AND status = 'pending_review' ORDER BY id ASC 23:55:10 - article_server - INFO - [SQL参数] [51, 53] 23:55:10 - article_server - INFO - [SQL结果] 查询完成,返回 2 条记录 23:55:10 - article_server - INFO - [SQL数据] 查询结果: [{'id': 51, 'title': '霉菌性包皮炎怎么治疗?', 'status': 'pending_review'}, {'id': 53, 'title': '如果包皮过长不割会怎么样', 'status': 'pending_review'}] 23:55:10 - article_server - INFO - [批量发布文章-循环分配] 查询结果: 请求2篇,找到2篇有效文章 23:55:10 - article_server - INFO - [批量发布文章-循环分配] 开始循环分配处理 2 篇文章 23:55:10 - article_server - INFO - [批量发布文章-循环分配] 文章 51 分配给作者 1 (小红书用户) 23:55:10 - article_server - INFO - [批量发布文章-循环分配] 文章 53 分配给作者 2 (小红书用户) 23:55:10 - article_server - INFO - [批量发布文章-循环分配] 执行SQL更新: UPDATE ai_articles SET status = 'assign_authors', author_id = %s, author_name = %s, department_name = %s, department_id = %s, publish_user_id = %s, publish_time = NOW(), updated_at = NOW() WHERE id = %s - 参数: (1, '小红书用户', '雇员', 1, 4, 51) 23:55:10 - article_server - INFO - [SQL执行] 开始执行更新SQL 23:55:10 - article_server - INFO - [SQL语句] UPDATE ai_articles SET status = 'assign_authors', author_id = %s, author_name = %s, department_name = %s, department_id = %s, publish_user_id = %s, publish_time = NOW(), updated_at = NOW() WHERE id = %s 23:55:10 - article_server - INFO - [SQL参数] (1, '小红书用户', '雇员', 1, 4, 51) 23:55:10 - article_server - INFO - [SQL结果] 更新完成,影响 1 行 23:55:10 - article_server - INFO - [批量发布文章-循环分配] 更新文章 51 完成,影响行数: 1 23:55:10 - article_server - INFO - [批量发布文章-循环分配] 文章发布成功: ID=51, 标题=霉菌性包皮炎怎么治疗?, 作者=小红书用户, 百家号ID: bjh_51_1766159710 23:55:10 - article_server - INFO - [批量发布文章-循环分配] 执行SQL更新: UPDATE ai_articles SET status = 'assign_authors', author_id = %s, author_name = %s, department_name = %s, department_id = %s, publish_user_id = %s, publish_time = NOW(), updated_at = NOW() WHERE id = %s - 参数: (2, '小红书用户', '雇员', 1, 4, 53) 23:55:10 - article_server - INFO - [SQL执行] 开始执行更新SQL 23:55:10 - article_server - INFO - [SQL语句] UPDATE ai_articles SET status = 'assign_authors', author_id = %s, author_name = %s, department_name = %s, department_id = %s, publish_user_id = %s, publish_time = NOW(), updated_at = NOW() WHERE id = %s 23:55:10 - article_server - INFO - [SQL参数] (2, '小红书用户', '雇员', 1, 4, 53) 23:55:10 - article_server - INFO - [SQL结果] 更新完成,影响 1 行 23:55:10 - article_server - INFO - [批量发布文章-循环分配] 更新文章 53 完成,影响行数: 1 23:55:10 - article_server - INFO - [批量发布文章-循环分配] 文章发布成功: ID=53, 标题=如果包皮过长不割会怎么样, 作者=小红书用户, 百家号ID: bjh_53_1766159710 23:55:10 - article_server - INFO - [批量发布文章-循环分配] 执行SQL插入日志: INSERT INTO ai_logs (user_id, action, target_type, target_id, description, ip_address, user_agent, status) VALUES (%s, %s, %s, %s, %s, %s, %s, %s) - 参数: (4, 'batch_publish_articles_cycle', 'articles', None, '批量发布文章(循环分配),成功: 2,失败: 0,文章ID: 51,53,作者ID: 1,2', '127.0.0.1', 'python-requests/2.32.3', 'success') 23:55:10 - article_server - INFO - [SQL执行] 开始执行插入SQL 23:55:10 - article_server - INFO - [SQL语句] INSERT INTO ai_logs (user_id, action, target_type, target_id, description, ip_address, user_agent, status) VALUES (%s, %s, %s, %s, %s, %s, %s, %s) 23:55:10 - article_server - INFO - [SQL参数] (4, 'batch_publish_articles_cycle', 'articles', None, '批量发布文章(循环分配),成功: 2,失败: 0,文章ID: 51,53,作者ID: 1,2', '127.0.0.1', 'python-requests/2.32.3', 'success') 23:55:10 - article_server - INFO - [SQL结果] 插入完成,新记录ID: 403 23:55:10 - article_server - INFO - [批量发布文章-循环分配] 操作日志记录成功 23:55:10 - article_server - INFO - 批量发布文章(循环分配)完成,成功: 2,失败: 0 23:55:10 - article_server - INFO - [API响应] POST /api/articles/batch-published-account-cycle - IP: 127.0.0.1 - 状态码: 200 23:55:21 - article_server - INFO - [API访问] POST /api/articles/batch-published-account-cycle - IP: 127.0.0.1 - User-Agent: python-requests/2.32.3 23:55:21 - article_server - INFO - [Token验证成功] 用户ID: 4 23:55:21 - article_server - INFO - [批量发布文章-循环分配] 入参数据: {"article_ids": [52], "author_ids": [1, 2]} 23:55:21 - article_server - INFO - [批量发布文章-循环分配] 排序后文章ID: [52] 23:55:21 - article_server - INFO - [批量发布文章-循环分配] 排序后作者ID: [1, 2] 23:55:21 - article_server - INFO - [SQL执行] 开始执行查询SQL 23:55:21 - article_server - INFO - [SQL语句] SELECT id, app_id, app_token, author_name, department_id, department_name FROM ai_authors WHERE id IN (%s,%s) AND status = 'active' ORDER BY id ASC 23:55:21 - article_server - INFO - [SQL参数] [1, 2] 23:55:21 - article_server - INFO - [SQL结果] 查询完成,返回 2 条记录 23:55:21 - article_server - INFO - [SQL数据] 查询结果: [{'id': 1, 'app_id': '', 'app_token': '', 'author_name': '小红书用户', 'department_id': 1, 'department_name': '雇员'}, {'id': 2, 'app_id': '', 'app_token': '', 'author_name': '小红书用户', 'department_id': 1, 'department_name': '雇员'}] 23:55:21 - article_server - INFO - [批量发布文章-循环分配] 查询到作者信息: [{"id": 1, "app_id": "", "app_token": "", "author_name": "小红书用户", "department_id": 1, "department_name": "雇员"}, {"id": 2, "app_id": "", "app_token": "", "author_name": "小红书用户", "department_id": 1, "department_name": "雇员"}] 23:55:21 - article_server - INFO - [批量发布文章authors_dict] 查询到作者信息: {"1": {"id": 1, "app_id": "", "app_token": "", "author_name": "小红书用户", "department_id": 1, "department_name": "雇员"}, "2": {"id": 2, "app_id": "", "app_token": "", "author_name": "小红书用户", "department_id": 1, "department_name": "雇员"}} 23:55:21 - article_server - INFO - [批量发布文章-循环分配] 执行SQL查询文章: SELECT id, title, status FROM ai_articles WHERE id IN (%s) AND status = 'pending_review' ORDER BY id ASC - 参数: [52] 23:55:21 - article_server - INFO - [SQL执行] 开始执行查询SQL 23:55:21 - article_server - INFO - [SQL语句] SELECT id, title, status FROM ai_articles WHERE id IN (%s) AND status = 'pending_review' ORDER BY id ASC 23:55:21 - article_server - INFO - [SQL参数] [52] 23:55:21 - article_server - INFO - [SQL结果] 查询完成,返回 1 条记录 23:55:21 - article_server - INFO - [SQL数据] 查询结果: [{'id': 52, 'title': '小孩包皮过长 几岁割比较好', 'status': 'pending_review'}] 23:55:21 - article_server - INFO - [批量发布文章-循环分配] 查询结果: 请求1篇,找到1篇有效文章 23:55:21 - article_server - INFO - [批量发布文章-循环分配] 开始循环分配处理 1 篇文章 23:55:21 - article_server - INFO - [批量发布文章-循环分配] 文章 52 分配给作者 1 (小红书用户) 23:55:21 - article_server - INFO - [批量发布文章-循环分配] 执行SQL更新: UPDATE ai_articles SET status = 'assign_authors', author_id = %s, author_name = %s, department_name = %s, department_id = %s, publish_user_id = %s, publish_time = NOW(), updated_at = NOW() WHERE id = %s - 参数: (1, '小红书用户', '雇员', 1, 4, 52) 23:55:21 - article_server - INFO - [SQL执行] 开始执行更新SQL 23:55:21 - article_server - INFO - [SQL语句] UPDATE ai_articles SET status = 'assign_authors', author_id = %s, author_name = %s, department_name = %s, department_id = %s, publish_user_id = %s, publish_time = NOW(), updated_at = NOW() WHERE id = %s 23:55:21 - article_server - INFO - [SQL参数] (1, '小红书用户', '雇员', 1, 4, 52) 23:55:21 - article_server - INFO - [SQL结果] 更新完成,影响 1 行 23:55:21 - article_server - INFO - [批量发布文章-循环分配] 更新文章 52 完成,影响行数: 1 23:55:21 - article_server - INFO - [批量发布文章-循环分配] 文章发布成功: ID=52, 标题=小孩包皮过长 几岁割比较好, 作者=小红书用户, 百家号ID: bjh_52_1766159721 23:55:21 - article_server - INFO - [批量发布文章-循环分配] 执行SQL插入日志: INSERT INTO ai_logs (user_id, action, target_type, target_id, description, ip_address, user_agent, status) VALUES (%s, %s, %s, %s, %s, %s, %s, %s) - 参数: (4, 'batch_publish_articles_cycle', 'articles', None, '批量发布文章(循环分配),成功: 1,失败: 0,文章ID: 52,作者ID: 1,2', '127.0.0.1', 'python-requests/2.32.3', 'success') 23:55:21 - article_server - INFO - [SQL执行] 开始执行插入SQL 23:55:21 - article_server - INFO - [SQL语句] INSERT INTO ai_logs (user_id, action, target_type, target_id, description, ip_address, user_agent, status) VALUES (%s, %s, %s, %s, %s, %s, %s, %s) 23:55:21 - article_server - INFO - [SQL参数] (4, 'batch_publish_articles_cycle', 'articles', None, '批量发布文章(循环分配),成功: 1,失败: 0,文章ID: 52,作者ID: 1,2', '127.0.0.1', 'python-requests/2.32.3', 'success') 23:55:21 - article_server - INFO - [SQL结果] 插入完成,新记录ID: 418 23:55:21 - article_server - INFO - [批量发布文章-循环分配] 操作日志记录成功 23:55:21 - article_server - INFO - 批量发布文章(循环分配)完成,成功: 1,失败: 0 23:55:21 - article_server - INFO - [API响应] POST /api/articles/batch-published-account-cycle - IP: 127.0.0.1 - 状态码: 200 14:26:24 - article_server - INFO - [API访问] GET /api/dashboard/overview - IP: 125.121.107.252 - User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Sa 14:26:24 - article_server - INFO - [Token验证成功] 用户ID: 4 14:26:24 - article_server - INFO - [API访问] GET /api/dashboard/recent-publishes - IP: 125.121.107.252 - User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Sa 14:26:24 - article_server - INFO - [Token验证成功] 用户ID: 4 14:26:24 - article_server - INFO - [SQL执行] 开始执行查询SQL 14:26:24 - article_server - INFO - [SQL语句] SELECT users_total, products_total, articles_total, published_total FROM ai_enterprises WHERE id = %s 14:26:24 - article_server - INFO - [SQL参数] (1,) 14:26:25 - article_server - INFO - [SQL结果] 查询完成,返回 1 条记录 14:26:25 - article_server - INFO - [SQL数据] 查询结果: [{'users_total': 1, 'products_total': 2, 'articles_total': 34, 'published_total': 0}] 14:26:25 - article_server - INFO - [SQL执行] 开始执行查询SQL 14:26: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 14:26:25 - article_server - INFO - [SQL参数] (1, 5) 14:26:25 - article_server - INFO - [SQL执行] 开始执行查询SQL 14:26: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()) 14:26:25 - article_server - INFO - [SQL参数] (1,) 14:26:25 - article_server - INFO - [SQL结果] 查询完成,返回 4 条记录 14:26:25 - article_server - INFO - [SQL结果] 查询完成,返回 1 条记录 14:26:25 - article_server - INFO - [SQL数据] 查询结果: [{'month_published': 4}] 14:26:25 - article_server - INFO - 获取最近发布成功 14:26:25 - article_server - INFO - [API响应] GET /api/dashboard/recent-publishes - IP: 125.121.107.252 - 状态码: 200 14:26:25 - article_server - INFO - [API访问] GET /api/dashboard/hot-products - IP: 125.121.107.252 - User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Sa 14:26:25 - article_server - INFO - [Token验证成功] 用户ID: 4 14:26:25 - article_server - INFO - [SQL执行] 开始执行查询SQL 14:26: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)) 14:26:25 - article_server - INFO - [SQL参数] (1,) 14:26:25 - article_server - INFO - [SQL执行] 开始执行查询SQL 14:26: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 14:26:25 - article_server - INFO - [SQL参数] (1, 1, 4) 14:26:25 - article_server - INFO - [API访问] GET /api/users/info - IP: 125.121.107.252 - User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Sa 14:26:25 - article_server - INFO - [Token验证成功] 用户ID: 4 14:26:25 - article_server - INFO - [获取用户信息] 开始处理请求, IP: 125.121.107.252 14:26:25 - article_server - INFO - [获取用户信息] 用户ID: 4, IP: 125.121.107.252 14:26:25 - article_server - INFO - [SQL结果] 查询完成,返回 4 条记录 14:26:25 - article_server - INFO - [SQL结果] 查询完成,返回 1 条记录 14:26:25 - article_server - INFO - [SQL数据] 查询结果: [{'last_month_published': 0}] 14:26:25 - article_server - INFO - 获取热门产品成功 14:26:25 - article_server - INFO - [API响应] GET /api/dashboard/hot-products - IP: 125.121.107.252 - 状态码: 200 14:26:25 - article_server - INFO - 获取工作台概览成功 14:26:25 - article_server - INFO - [API响应] GET /api/dashboard/overview - IP: 125.121.107.252 - 状态码: 200 14:26:25 - article_server - INFO - [SQL执行] 开始执行查询SQL 14:26: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' 14:26:25 - article_server - INFO - [SQL参数] (4,) 14:26:25 - article_server - INFO - [SQL结果] 查询完成,返回 1 条记录 14:26:25 - article_server - INFO - [SQL数据] 查询结果: [{'id': 4, 'enterprise_id': 1, 'enterprise_name': 'rwl企业4号', 'username': 'user004', 'real_name': '饶文龙', 'email': '', 'phone': '13621242430', 'wechat_openid': 'ovoJF1z6ejXbXcWUHnvCw5HA0OeA', 'wechat_unionid': None, 'xhs_cookie': '', '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, 20, 10, 4, 10)}] 14:26:25 - article_server - INFO - [获取用户信息] 查询成功, 用户: user004, 角色: enterprise, 企业: rwl企业4号, IP: 125.121.107.252 14:26:25 - article_server - INFO - [SQL执行] 开始执行插入SQL 14:26: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()) 14:26:25 - article_server - INFO - [SQL参数] (4, 'get_user_info', 'user', 4, '查询用户信息: user004', '125.121.107.252', '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) 14:26:25 - article_server - INFO - [SQL结果] 插入完成,新记录ID: 20445 14:26:25 - article_server - INFO - [业务日志] 操作: get_user_info | 用户ID: 4 | 目标: user#4 | 状态: success | IP: 125.121.107.252 | 日志ID: 20445 14:26:25 - article_server - INFO - [API响应] GET /api/users/info - IP: 125.121.107.252 - 状态码: 200 14:26:37 - article_server - INFO - [API访问] GET /api/statistics/overview - IP: 125.121.107.252 - User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Sa 14:26:37 - article_server - INFO - [Token验证成功] 用户ID: 4 14:26:37 - article_server - INFO - [API访问] GET /api/employees/list - IP: 125.121.107.252 - User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Sa 14:26:37 - article_server - INFO - [Token验证成功] 用户ID: 4 14:26:37 - article_server - INFO - [API访问] GET /api/products/list - IP: 125.121.107.252 - User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Sa 14:26:37 - article_server - INFO - [Token验证成功] 用户ID: 4 14:26:37 - article_server - INFO - [获取产品列表] 开始处理请求, IP: 125.121.107.252 14:26:37 - article_server - INFO - [获取产品列表] 用户信息 - 用户ID: 4, 企业ID: 1, IP: 125.121.107.252 14:26:37 - article_server - INFO - [获取产品列表] 查询参数: page=1, pageSize=100, keyword=, type=, status=, 企业ID: 1, IP: 125.121.107.252 14:26:37 - article_server - INFO - [API访问] GET /api/statistics/records - IP: 125.121.107.252 - User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Sa 14:26:37 - article_server - INFO - [Token验证成功] 用户ID: 4 14:26:37 - article_server - INFO - [SQL执行] 开始执行查询SQL 14:26:37 - article_server - INFO - [SQL语句] SELECT COUNT(*) as total FROM ai_article_published_records WHERE enterprise_id = %s 14:26:37 - article_server - INFO - [SQL参数] (1,) 14:26:37 - article_server - INFO - [SQL执行] 开始执行查询SQL 14:26:37 - article_server - INFO - [SQL语句] SELECT COUNT(*) as total FROM ai_users WHERE enterprise_id = %s AND status != 'deleted' 14:26:37 - article_server - INFO - [SQL参数] [1] 14:26:37 - article_server - INFO - [SQL执行] 开始执行查询SQL 14:26:37 - article_server - INFO - [SQL语句] SELECT COUNT(*) as total FROM ai_products WHERE enterprise_id = %s AND status != 'deleted' 14:26:37 - article_server - INFO - [SQL参数] [1] 14:26:37 - article_server - INFO - [SQL结果] 查询完成,返回 1 条记录 14:26:37 - article_server - INFO - [SQL数据] 查询结果: [{'total': 4}] 14:26:37 - article_server - INFO - [SQL结果] 查询完成,返回 1 条记录 14:26:37 - article_server - INFO - [SQL数据] 查询结果: [{'total': 4}] 14:26:37 - article_server - INFO - [SQL结果] 查询完成,返回 1 条记录 14:26:37 - article_server - INFO - [SQL数据] 查询结果: [{'total': 5}] 14:26:37 - article_server - INFO - [SQL执行] 开始执行查询SQL 14:26:37 - article_server - INFO - [SQL语句] SELECT COUNT(*) as today_count FROM ai_article_published_records WHERE enterprise_id = %s AND DATE(publish_time) = CURDATE() 14:26:37 - article_server - INFO - [SQL参数] (1,) 14:26:37 - article_server - INFO - [SQL执行] 开始执行查询SQL 14:26:37 - 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 14:26:37 - article_server - INFO - [SQL参数] [1, 100, 0] 14:26:37 - article_server - INFO - [SQL执行] 开始执行查询SQL 14:26:37 - 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 14:26:37 - article_server - INFO - [SQL参数] [1, 100, 0] 14:26:37 - article_server - INFO - [SQL结果] 查询完成,返回 1 条记录 14:26:37 - article_server - INFO - [SQL数据] 查询结果: [{'today_count': 1}] 14:26:37 - article_server - INFO - [SQL结果] 查询完成,返回 4 条记录 14:26:37 - article_server - INFO - [SQL结果] 查询完成,返回 5 条记录 14:26:37 - article_server - INFO - 获取员工列表成功,总数: 4 14:26:37 - article_server - INFO - [API响应] GET /api/employees/list - IP: 125.121.107.252 - 状态码: 200 14:26:37 - article_server - INFO - [SQL执行] 开始执行查询SQL 14:26:37 - 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) 14:26:37 - article_server - INFO - [SQL参数] (1,) 14:26:37 - article_server - INFO - [SQL执行] 开始执行查询SQL 14:26:37 - article_server - INFO - [SQL语句] SELECT id, tag_name FROM ai_product_tags WHERE product_id = %s 14:26:37 - article_server - INFO - [SQL参数] (25,) 14:26:37 - article_server - INFO - [SQL结果] 查询完成,返回 1 条记录 14:26:37 - article_server - INFO - [SQL数据] 查询结果: [{'week_count': 4}] 14:26:37 - article_server - INFO - [SQL执行] 开始执行查询SQL 14:26:37 - article_server - INFO - [SQL语句] SELECT COUNT(*) as total FROM ai_article_published_records r WHERE r.enterprise_id = %s 14:26:37 - article_server - INFO - [SQL参数] [1] 14:26:37 - article_server - INFO - [SQL结果] 查询完成,返回 0 条记录 14:26:37 - article_server - INFO - [SQL结果] 查询完成,返回 1 条记录 14:26:37 - article_server - INFO - [SQL数据] 查询结果: [{'total': 4}] 14:26:37 - article_server - INFO - [SQL执行] 开始执行查询SQL 14:26:37 - 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()) 14:26:37 - article_server - INFO - [SQL参数] (1,) 14:26:37 - article_server - INFO - [SQL执行] 开始执行查询SQL 14:26:37 - article_server - INFO - [SQL结果] 查询完成,返回 1 条记录 14:26:37 - article_server - INFO - [SQL数据] 查询结果: [{'month_count': 4}] 14:26:37 - article_server - INFO - [SQL语句] SELECT id, tag_name FROM ai_product_tags WHERE product_id = %s 14:26:37 - article_server - INFO - [SQL参数] (13,) 14:26:38 - article_server - INFO - [SQL结果] 查询完成,返回 0 条记录 14:26:38 - article_server - INFO - [SQL执行] 开始执行查询SQL 14:26:38 - 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 14:26:38 - article_server - INFO - [SQL参数] [1, 100, 0] 14:26:38 - article_server - INFO - [SQL执行] 开始执行查询SQL 14:26:38 - article_server - INFO - [SQL语句] SELECT COUNT(DISTINCT created_user_id) as employee_count FROM ai_article_published_records WHERE enterprise_id = %s 14:26:38 - article_server - INFO - [SQL参数] (1,) 14:26:38 - article_server - INFO - [SQL结果] 查询完成,返回 4 条记录 14:26:38 - article_server - INFO - [SQL结果] 查询完成,返回 1 条记录 14:26:38 - article_server - INFO - [SQL数据] 查询结果: [{'employee_count': 2}] 14:26:38 - article_server - INFO - [SQL执行] 开始执行查询SQL 14:26:38 - article_server - INFO - [SQL语句] SELECT id, tag_name FROM ai_product_tags WHERE product_id = %s 14:26:38 - article_server - INFO - [SQL参数] (12,) 14:26:38 - article_server - INFO - 获取发布记录列表成功,总数: 4 14:26:38 - article_server - INFO - [API响应] GET /api/statistics/records - IP: 125.121.107.252 - 状态码: 200 14:26:38 - article_server - INFO - 获取统计概览成功 14:26:38 - article_server - INFO - [API响应] GET /api/statistics/overview - IP: 125.121.107.252 - 状态码: 200 14:26:38 - article_server - INFO - [SQL结果] 查询完成,返回 0 条记录 14:26:38 - article_server - INFO - [API访问] GET /api/statistics/by-product - IP: 125.121.107.252 - User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Sa 14:26:38 - article_server - INFO - [Token验证成功] 用户ID: 4 14:26:38 - article_server - INFO - [SQL执行] 开始执行查询SQL 14:26:38 - article_server - INFO - [SQL语句] SELECT id, tag_name FROM ai_product_tags WHERE product_id = %s 14:26:38 - article_server - INFO - [SQL参数] (11,) 14:26:38 - article_server - INFO - [SQL执行] 开始执行查询SQL 14:26:38 - 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 14:26:38 - article_server - INFO - [SQL参数] [1, 1] 14:26:38 - article_server - INFO - [SQL结果] 查询完成,返回 0 条记录 14:26:38 - article_server - INFO - [SQL结果] 查询完成,返回 4 条记录 14:26:38 - article_server - INFO - 按产品统计成功 14:26:38 - article_server - INFO - [API响应] GET /api/statistics/by-product - IP: 125.121.107.252 - 状态码: 200 14:26:38 - article_server - INFO - [SQL执行] 开始执行查询SQL 14:26:38 - article_server - INFO - [SQL语句] SELECT id, tag_name FROM ai_product_tags WHERE product_id = %s 14:26:38 - article_server - INFO - [SQL参数] (1,) 14:26:38 - article_server - INFO - [SQL结果] 查询完成,返回 1 条记录 14:26:38 - article_server - INFO - [SQL数据] 查询结果: [{'id': 1, 'tag_name': '保湿'}] 14:26:38 - article_server - INFO - [获取产品列表] 查询成功, 总数: 5, 当前页: 1, 每页: 100, 返回数量: 5, 企业ID: 1, IP: 125.121.107.252 14:26:38 - article_server - INFO - [API响应] GET /api/products/list - IP: 125.121.107.252 - 状态码: 200 14:26:38 - article_server - INFO - [API访问] GET /api/statistics/employee-rank - IP: 125.121.107.252 - User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Sa 14:26:38 - article_server - INFO - [Token验证成功] 用户ID: 4 14:26:38 - article_server - INFO - [SQL执行] 开始执行查询SQL 14:26:38 - 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 14:26:38 - article_server - INFO - [SQL参数] [1, 5] 14:26:38 - article_server - INFO - [SQL结果] 查询完成,返回 2 条记录 14:26:38 - article_server - INFO - [SQL数据] 查询结果: [{'employee_id': 18, 'employee_name': '测试员工API', 'count': 3, 'rank': 1}, {'employee_id': 0, 'employee_name': None, 'count': 1, 'rank': 2}] 14:26:38 - article_server - INFO - 获取员工排行成功 14:26:38 - article_server - INFO - [API响应] GET /api/statistics/employee-rank - IP: 125.121.107.252 - 状态码: 200 14:26:39 - article_server - INFO - [API访问] GET /api/articles/list - IP: 125.121.107.252 - User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Sa 14:26:39 - article_server - INFO - [Token验证成功] 用户ID: 4 14:26:39 - article_server - INFO - [获取文章列表] 开始处理请求, IP: 125.121.107.252 14:26:39 - article_server - INFO - [获取文章列表] 用户信息 - 用户ID: 4, 企业ID: 1, IP: 125.121.107.252 14:26:39 - article_server - INFO - [获取文章列表] 查询参数: page=1, pageSize=20, keyword=, product_id=, status=, 企业ID: 1, IP: 125.121.107.252 14:26:39 - article_server - INFO - [API访问] GET /api/products/list - IP: 125.121.107.252 - User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Sa 14:26:39 - article_server - INFO - [Token验证成功] 用户ID: 4 14:26:39 - article_server - INFO - [获取产品列表] 开始处理请求, IP: 125.121.107.252 14:26:39 - article_server - INFO - [API访问] GET /api/prompts/list - IP: 125.121.107.252 - User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Sa 14:26:39 - article_server - INFO - [获取产品列表] 用户信息 - 用户ID: 4, 企业ID: 1, IP: 125.121.107.252 14:26:39 - article_server - INFO - [获取产品列表] 查询参数: page=1, pageSize=100, keyword=, type=, status=, 企业ID: 1, IP: 125.121.107.252 14:26:39 - article_server - INFO - [Token验证成功] 用户ID: 4 14:26:39 - article_server - INFO - [API访问] GET /api/articles/list_dashboard - IP: 125.121.107.252 - User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Sa 14:26:39 - article_server - INFO - [Token验证成功] 用户ID: 4 14:26:39 - article_server - INFO - [文章仪表盘] 开始处理请求, IP: 125.121.107.252 14:26:39 - article_server - INFO - [SQL执行] 开始执行查询SQL 14:26:39 - article_server - INFO - [SQL语句] SELECT COUNT(*) as total FROM ai_prompt_workflow WHERE enterprise_id = %s 14:26:39 - article_server - INFO - [SQL参数] (1,) 14:26:39 - article_server - INFO - [SQL执行] 开始执行查询SQL 14:26:39 - article_server - INFO - [SQL语句] SELECT COUNT(*) as total FROM ai_articles a WHERE a.enterprise_id = %s 14:26:39 - article_server - INFO - [SQL参数] [1] 14:26:39 - article_server - INFO - [SQL执行] 开始执行查询SQL 14:26:39 - article_server - INFO - [SQL语句] SELECT COUNT(*) as total FROM ai_products WHERE enterprise_id = %s AND status != 'deleted' 14:26:39 - article_server - INFO - [SQL参数] [1] 14:26:39 - article_server - INFO - [SQL执行] 开始执行查询SQL 14:26:39 - article_server - INFO - [SQL语句] SELECT COUNT(id) as total FROM ai_articles WHERE enterprise_id = %s 14:26:39 - article_server - INFO - [SQL参数] (1,) 14:26:39 - article_server - INFO - [SQL结果] 查询完成,返回 1 条记录 14:26:39 - article_server - INFO - [SQL数据] 查询结果: [{'total': 3}] 14:26:39 - article_server - INFO - [SQL结果] 查询完成,返回 1 条记录 14:26:39 - article_server - INFO - [SQL数据] 查询结果: [{'total': 34}] 14:26:39 - article_server - INFO - [SQL结果] 查询完成,返回 1 条记录 14:26:39 - article_server - INFO - [SQL数据] 查询结果: [{'total': 34}] 14:26:39 - article_server - INFO - [SQL结果] 查询完成,返回 1 条记录 14:26:39 - article_server - INFO - [SQL数据] 查询结果: [{'total': 5}] 14:26:39 - article_server - INFO - [SQL执行] 开始执行查询SQL 14:26:39 - 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 14:26:39 - article_server - INFO - [SQL参数] (1, 100, 0) 14:26:39 - article_server - INFO - [SQL执行] 开始执行查询SQL 14:26:39 - article_server - INFO - [SQL执行] 开始执行查询SQL 14:26:39 - 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 14:26:39 - article_server - INFO - [SQL语句] SELECT COUNT(id) as total FROM ai_articles WHERE enterprise_id = %s AND status = 'published_review' 14:26:39 - article_server - INFO - [SQL参数] (1,) 14:26:39 - article_server - INFO - [SQL参数] [1, 20, 0] 14:26:39 - article_server - INFO - [SQL结果] 查询完成,返回 3 条记录 14:26:39 - article_server - INFO - [SQL数据] 查询结果: [{'id': 25, 'prompt_workflow_name': 'Inject基础提示词', 'workflow_id': '7576997068138659846', 'content': '你是一个健康类自媒体的编辑,每天需要撰写健康类内容。我将要给你一个topic,这个topic是一个问句。请你先产生一个段落的回复,然后再段展开回复。每个段落都需要用一个emoji开头。最后,请生成tag。段落与段落之间空一行,保证可读性。\n详细要求如下:\n一、核心要求:\n1.\t目标受众: 普通大众,非专业人士。务必:\n¡\t避免使用专业术语和书面化表达\n¡\t内容安全限制:\n\uf06e\t❌ 禁止提及任何人体私密部位或敏感功能\n\uf06e\t❌ 禁用可能引发恐慌的词汇(如"危险""致命")\n2.\t内容核心: 围绕“主题”,聚焦病症、问题、危害或困扰, 解释原因、原理,介绍症状、类型,提供积极、实用的解决方案、改善建议或注意事项等有价值的内容均可。\n3.\t唯一性与实用性: 生成的内容需确保信息准确(基于常识)且每次生成的内容不应与历史输出重复(针对同一主题多次生成时)。\n二、内容结构及具体要求:\n\uf06c\t【首段提问】 (title):\n¡\t对应内容为{{title}}\n\n\uf06c\t【次段简答】 (short-answer):\n¡\t字数: 60-120字。 \n **内容要求**:\n 1. 第一句话必须直接回答{{title}}的提问,可以拓展1-2句话\n 2. 直接明晰,不要太笼统,禁止罗里吧嗦\n 3. 段前不要emoji表情符号\n \n **✅ 合格示例**:\n 发现HPV16或18阳性,这通常意味着宫颈癌筛查结果显示存在感染。接下来一般会建议做阴道镜检查,再根据检查的具体情况决定治疗方案。\n\n **❌ 不合格示例**:\n • 使用emoji开头\n • 没有直接回答问题\n • 过于笼统泛泛而谈 \n\n\uf06c\t【分段细答】 (contents):\n¡\t数量要求:2-3段。\n¡\t字数要求: 60~100字/段。\n¡\t核心要求:\n\uf06e\t语言口语化、自然流畅。\n\uf06e\t段落内容必须围绕核心观点展开,根据不同情况分类详细阐述问题,可以是具体可行的建议(吃什么、做什么、注意什么等),疾病的科普(主要症状、影响、诱因等),或者其它逻辑合理的内容也可以。\n\uf06e\t内容有一定的逻辑,包括但不限于(首先、其次、最后),(第一,第二,第三),(不仅、而且、还有),(初级、中级、高级)。\n\uf06e\t每段内容均衡,不超过五句话,确保信息全面且易于消化。\n\uf06e\t分段细答部分应当是次段简答部分的延伸,但用词不能和次段简答部分有太多重复,请保持多样性。\n\uf06e\t 在生成回答前,必须执行以下创造性流程:\n\t\t结构性禁令(排除法):行文结构不得是“定义→成因→症状→治疗”或“是什么→为什么→怎么办”及其任何变体。\n\t\t动态自我审视(核心步骤):\n\t\t回顾:主动审视历史内容中,针对相同或相似主题已使用过的所有核心阐述逻辑。\n\t\t规避:明确禁止重复或小幅修改上述任何逻辑。\n\t\t创新:基于当前问题的具体内涵,生成一个在本质上全新的、服务于核心问题的最佳解释路径。该路径必须与所有已回顾的逻辑存在根本性差异。\n\t\t输出确认:最终采用的逻辑结构,应是本次对话上下文中一次独特的、未经使用的创造性表达形式。\n\n\uf06c\t【标签】 (tags):\n¡\t**单个关键词字数:4-8个字。\n¡\t内容:* (1)根据正文内容,生成5个内容强相关tag; (2)标签格式:每个关键词前后都有# (例: #养生小知识# #中医养生##习惯养成# #健康养生#)\n三、变量输入:\n\uf06c\t主题: {{title}}\n四、最终安全规则:\n4.\t全篇禁止出现人体私密部位描述\n5.\t关键安全信息重复出现≥2次\n6.\t每句话≤20字,复合句用逗号分隔\n7、不能出现 "下面就给大家仔细说说",“下面具体讲讲”,话术\n', 'usage_count': 23, 'created_at': datetime.datetime(2025, 12, 12, 20, 53, 9), 'updated_at': datetime.datetime(2025, 12, 19, 15, 54, 58)}, {'id': 14, 'prompt_workflow_name': '测试提示词', 'workflow_id': 'WF-CC8BB759', 'content': '这是一个测试提示词模板...', 'usage_count': 2, 'created_at': datetime.datetime(2025, 12, 12, 17, 41, 22), 'updated_at': datetime.datetime(2025, 12, 12, 17, 51, 54)}, {'id': 1, 'prompt_workflow_name': '种草分享型', 'workflow_id': 'WF-001', 'content': '你是一个小红书种草达人,请根据产品信息写一篇真实、有感染力的种草笔记...', 'usage_count': 0, 'created_at': datetime.datetime(2025, 12, 12, 16, 58, 22), 'updated_at': datetime.datetime(2025, 12, 12, 16, 58, 22)}] 14:26:39 - article_server - INFO - [SQL执行] 开始执行查询SQL 14:26:39 - 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 14:26:39 - article_server - INFO - [SQL参数] [1, 100, 0] 14:26:39 - article_server - INFO - [SQL结果] 查询完成,返回 1 条记录 14:26:39 - article_server - INFO - [SQL数据] 查询结果: [{'total': 0}] 14:26:39 - article_server - INFO - [SQL结果] 查询完成,返回 20 条记录 14:26:39 - article_server - INFO - [SQL结果] 查询完成,返回 5 条记录 14:26:39 - article_server - INFO - [SQL执行] 开始执行查询SQL 14:26:39 - 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 14:26:39 - article_server - INFO - [SQL参数] (25,) 14:26:39 - article_server - INFO - [SQL执行] 开始执行查询SQL 14:26:39 - article_server - INFO - [SQL语句] SELECT COUNT(id) as total FROM ai_articles WHERE enterprise_id = %s AND status = 'published' 14:26:39 - article_server - INFO - [SQL参数] (1,) 14:26:39 - article_server - INFO - [SQL执行] 开始执行查询SQL 14:26:39 - article_server - INFO - [SQL语句] SELECT id, article_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 IN (%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s) ORDER BY article_id, sort_order ASC, created_at ASC 14:26:39 - article_server - INFO - [SQL参数] [51, 52, 53, 48, 49, 50, 45, 46, 47, 42, 43, 44, 37, 38, 39, 40, 41, 32, 33, 34] 14:26:39 - article_server - INFO - [SQL结果] 查询完成,返回 2 条记录 14:26:39 - article_server - INFO - [SQL数据] 查询结果: [{'id': 14, 'tag_name': '去重'}, {'id': 15, 'tag_name': '基础提示词'}] 14:26:39 - article_server - INFO - [SQL结果] 查询完成,返回 1 条记录 14:26:39 - article_server - INFO - [SQL数据] 查询结果: [{'total': 0}] 14:26:39 - article_server - INFO - [SQL结果] 查询完成,返回 0 条记录 14:26:39 - article_server - INFO - [SQL执行] 开始执行查询SQL 14:26:39 - article_server - INFO - [SQL语句] SELECT id, tag_name FROM ai_product_tags WHERE product_id = %s 14:26:39 - article_server - INFO - [SQL参数] (25,) 14:26:39 - article_server - INFO - [文章仪表盘] 查询成功, 企业ID: 1, 总数: 34, 可发: 0, 已发: 0, IP: 125.121.107.252 14:26:39 - article_server - INFO - [API响应] GET /api/articles/list_dashboard - IP: 125.121.107.252 - 状态码: 200 14:26:39 - article_server - INFO - [SQL执行] 开始执行查询SQL 14:26:39 - 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 14:26:39 - article_server - INFO - [SQL参数] (14,) 14:26:39 - article_server - INFO - [SQL结果] 查询完成,返回 0 条记录 14:26:39 - article_server - INFO - [SQL执行] 开始执行查询SQL 14:26:39 - article_server - INFO - [SQL语句] SELECT id, article_id, coze_tag, created_at FROM ai_article_tags WHERE article_id IN (%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s) 14:26:39 - article_server - INFO - [SQL参数] [51, 52, 53, 48, 49, 50, 45, 46, 47, 42, 43, 44, 37, 38, 39, 40, 41, 32, 33, 34] 14:26:39 - article_server - INFO - [SQL结果] 查询完成,返回 0 条记录 14:26:39 - article_server - INFO - [SQL结果] 查询完成,返回 9 条记录 14:26:39 - article_server - INFO - [SQL执行] 开始执行查询SQL 14:26:39 - article_server - INFO - [SQL语句] SELECT id, tag_name FROM ai_product_tags WHERE product_id = %s 14:26:39 - article_server - INFO - [SQL参数] (13,) 14:26:39 - article_server - INFO - [SQL执行] 开始执行查询SQL 14:26:39 - 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 14:26:39 - article_server - INFO - [SQL参数] (1,) 14:26:39 - article_server - INFO - [获取文章列表] 查询成功, 总数: 34, 当前页: 1, 每页: 20, 返回数量: 20, 企业ID: 1, IP: 125.121.107.252 14:26:39 - article_server - INFO - [API响应] GET /api/articles/list - IP: 125.121.107.252 - 状态码: 200 14:26:39 - article_server - INFO - [SQL结果] 查询完成,返回 0 条记录 14:26:39 - article_server - INFO - [SQL结果] 查询完成,返回 0 条记录 14:26:39 - article_server - INFO - 获取提示词列表成功,总数: 3 14:26:39 - article_server - INFO - [API响应] GET /api/prompts/list - IP: 125.121.107.252 - 状态码: 200 14:26:39 - article_server - INFO - [SQL执行] 开始执行查询SQL 14:26:39 - article_server - INFO - [SQL语句] SELECT id, tag_name FROM ai_product_tags WHERE product_id = %s 14:26:39 - article_server - INFO - [SQL参数] (12,) 14:26:39 - article_server - INFO - [SQL结果] 查询完成,返回 0 条记录 14:26:39 - article_server - INFO - [SQL执行] 开始执行查询SQL 14:26:39 - article_server - INFO - [SQL语句] SELECT id, tag_name FROM ai_product_tags WHERE product_id = %s 14:26:39 - article_server - INFO - [SQL参数] (11,) 14:26:39 - article_server - INFO - [SQL结果] 查询完成,返回 0 条记录 14:26:39 - article_server - INFO - [SQL执行] 开始执行查询SQL 14:26:39 - article_server - INFO - [SQL语句] SELECT id, tag_name FROM ai_product_tags WHERE product_id = %s 14:26:39 - article_server - INFO - [SQL参数] (1,) 14:26:39 - article_server - INFO - [SQL结果] 查询完成,返回 1 条记录 14:26:39 - article_server - INFO - [SQL数据] 查询结果: [{'id': 1, 'tag_name': '保湿'}] 14:26:39 - article_server - INFO - [获取产品列表] 查询成功, 总数: 5, 当前页: 1, 每页: 100, 返回数量: 5, 企业ID: 1, IP: 125.121.107.252 14:26:39 - article_server - INFO - [API响应] GET /api/products/list - IP: 125.121.107.252 - 状态码: 200 14:26:44 - article_server - INFO - [API访问] GET /api/prompts/list - IP: 125.121.107.252 - User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Sa 14:26:44 - article_server - INFO - [Token验证成功] 用户ID: 4 14:26:44 - article_server - INFO - [SQL执行] 开始执行查询SQL 14:26:44 - article_server - INFO - [SQL语句] SELECT COUNT(*) as total FROM ai_prompt_workflow WHERE enterprise_id = %s 14:26:44 - article_server - INFO - [SQL参数] (1,) 14:26:44 - article_server - INFO - [SQL结果] 查询完成,返回 1 条记录 14:26:44 - article_server - INFO - [SQL数据] 查询结果: [{'total': 3}] 14:26:44 - article_server - INFO - [API访问] GET /api/prompts/tags/list - IP: 125.121.107.252 - User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Sa 14:26:44 - article_server - INFO - [Token验证成功] 用户ID: 4 14:26:44 - article_server - INFO - [SQL执行] 开始执行查询SQL 14:26:44 - article_server - INFO - [SQL语句] SELECT COUNT(*) as total FROM ai_prompt_tags WHERE enterprise_id = %s 14:26:44 - article_server - INFO - [SQL参数] [1] 14:26:44 - article_server - INFO - [SQL执行] 开始执行查询SQL 14:26:44 - 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 14:26:44 - article_server - INFO - [SQL参数] (1, 20, 0) 14:26:44 - article_server - INFO - [SQL结果] 查询完成,返回 1 条记录 14:26:44 - article_server - INFO - [SQL数据] 查询结果: [{'total': 2}] 14:26:44 - article_server - INFO - [SQL结果] 查询完成,返回 3 条记录 14:26:44 - article_server - INFO - [SQL数据] 查询结果: [{'id': 25, 'prompt_workflow_name': 'Inject基础提示词', 'workflow_id': '7576997068138659846', 'content': '你是一个健康类自媒体的编辑,每天需要撰写健康类内容。我将要给你一个topic,这个topic是一个问句。请你先产生一个段落的回复,然后再段展开回复。每个段落都需要用一个emoji开头。最后,请生成tag。段落与段落之间空一行,保证可读性。\n详细要求如下:\n一、核心要求:\n1.\t目标受众: 普通大众,非专业人士。务必:\n¡\t避免使用专业术语和书面化表达\n¡\t内容安全限制:\n\uf06e\t❌ 禁止提及任何人体私密部位或敏感功能\n\uf06e\t❌ 禁用可能引发恐慌的词汇(如"危险""致命")\n2.\t内容核心: 围绕“主题”,聚焦病症、问题、危害或困扰, 解释原因、原理,介绍症状、类型,提供积极、实用的解决方案、改善建议或注意事项等有价值的内容均可。\n3.\t唯一性与实用性: 生成的内容需确保信息准确(基于常识)且每次生成的内容不应与历史输出重复(针对同一主题多次生成时)。\n二、内容结构及具体要求:\n\uf06c\t【首段提问】 (title):\n¡\t对应内容为{{title}}\n\n\uf06c\t【次段简答】 (short-answer):\n¡\t字数: 60-120字。 \n **内容要求**:\n 1. 第一句话必须直接回答{{title}}的提问,可以拓展1-2句话\n 2. 直接明晰,不要太笼统,禁止罗里吧嗦\n 3. 段前不要emoji表情符号\n \n **✅ 合格示例**:\n 发现HPV16或18阳性,这通常意味着宫颈癌筛查结果显示存在感染。接下来一般会建议做阴道镜检查,再根据检查的具体情况决定治疗方案。\n\n **❌ 不合格示例**:\n • 使用emoji开头\n • 没有直接回答问题\n • 过于笼统泛泛而谈 \n\n\uf06c\t【分段细答】 (contents):\n¡\t数量要求:2-3段。\n¡\t字数要求: 60~100字/段。\n¡\t核心要求:\n\uf06e\t语言口语化、自然流畅。\n\uf06e\t段落内容必须围绕核心观点展开,根据不同情况分类详细阐述问题,可以是具体可行的建议(吃什么、做什么、注意什么等),疾病的科普(主要症状、影响、诱因等),或者其它逻辑合理的内容也可以。\n\uf06e\t内容有一定的逻辑,包括但不限于(首先、其次、最后),(第一,第二,第三),(不仅、而且、还有),(初级、中级、高级)。\n\uf06e\t每段内容均衡,不超过五句话,确保信息全面且易于消化。\n\uf06e\t分段细答部分应当是次段简答部分的延伸,但用词不能和次段简答部分有太多重复,请保持多样性。\n\uf06e\t 在生成回答前,必须执行以下创造性流程:\n\t\t结构性禁令(排除法):行文结构不得是“定义→成因→症状→治疗”或“是什么→为什么→怎么办”及其任何变体。\n\t\t动态自我审视(核心步骤):\n\t\t回顾:主动审视历史内容中,针对相同或相似主题已使用过的所有核心阐述逻辑。\n\t\t规避:明确禁止重复或小幅修改上述任何逻辑。\n\t\t创新:基于当前问题的具体内涵,生成一个在本质上全新的、服务于核心问题的最佳解释路径。该路径必须与所有已回顾的逻辑存在根本性差异。\n\t\t输出确认:最终采用的逻辑结构,应是本次对话上下文中一次独特的、未经使用的创造性表达形式。\n\n\uf06c\t【标签】 (tags):\n¡\t**单个关键词字数:4-8个字。\n¡\t内容:* (1)根据正文内容,生成5个内容强相关tag; (2)标签格式:每个关键词前后都有# (例: #养生小知识# #中医养生##习惯养成# #健康养生#)\n三、变量输入:\n\uf06c\t主题: {{title}}\n四、最终安全规则:\n4.\t全篇禁止出现人体私密部位描述\n5.\t关键安全信息重复出现≥2次\n6.\t每句话≤20字,复合句用逗号分隔\n7、不能出现 "下面就给大家仔细说说",“下面具体讲讲”,话术\n', 'usage_count': 23, 'created_at': datetime.datetime(2025, 12, 12, 20, 53, 9), 'updated_at': datetime.datetime(2025, 12, 19, 15, 54, 58)}, {'id': 14, 'prompt_workflow_name': '测试提示词', 'workflow_id': 'WF-CC8BB759', 'content': '这是一个测试提示词模板...', 'usage_count': 2, 'created_at': datetime.datetime(2025, 12, 12, 17, 41, 22), 'updated_at': datetime.datetime(2025, 12, 12, 17, 51, 54)}, {'id': 1, 'prompt_workflow_name': '种草分享型', 'workflow_id': 'WF-001', 'content': '你是一个小红书种草达人,请根据产品信息写一篇真实、有感染力的种草笔记...', 'usage_count': 0, 'created_at': datetime.datetime(2025, 12, 12, 16, 58, 22), 'updated_at': datetime.datetime(2025, 12, 12, 16, 58, 22)}] 14:26:44 - article_server - INFO - [SQL执行] 开始执行查询SQL 14:26:44 - 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 14:26:44 - article_server - INFO - [SQL参数] [1, 100, 0] 14:26:44 - article_server - INFO - [API访问] GET /api/articles/list - IP: 125.121.107.252 - User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Sa 14:26:44 - article_server - INFO - [Token验证成功] 用户ID: 4 14:26:44 - article_server - INFO - [获取文章列表] 开始处理请求, IP: 125.121.107.252 14:26:44 - article_server - INFO - [获取文章列表] 用户信息 - 用户ID: 4, 企业ID: 1, IP: 125.121.107.252 14:26:44 - article_server - INFO - [获取文章列表] 查询参数: page=1, pageSize=20, keyword=, product_id=, status=, 企业ID: 1, IP: 125.121.107.252 14:26:44 - article_server - INFO - [SQL结果] 查询完成,返回 2 条记录 14:26:44 - article_server - INFO - [SQL数据] 查询结果: [{'id': 15, 'tag_name': '基础提示词', 'created_user_id': 4, 'created_at': datetime.datetime(2025, 12, 16, 14, 21, 32), 'updated_at': datetime.datetime(2025, 12, 16, 14, 21, 32)}, {'id': 14, 'tag_name': '去重', 'created_user_id': 4, 'created_at': datetime.datetime(2025, 12, 16, 14, 21, 32), 'updated_at': datetime.datetime(2025, 12, 16, 14, 21, 32)}] 14:26:44 - article_server - INFO - [SQL执行] 开始执行查询SQL 14:26:44 - 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 14:26:44 - article_server - INFO - [SQL参数] (25,) 14:26:44 - article_server - INFO - 获取标签列表成功,总数: 2 14:26:44 - article_server - INFO - [API响应] GET /api/prompts/tags/list - IP: 125.121.107.252 - 状态码: 200 14:26:44 - article_server - INFO - [SQL结果] 查询完成,返回 2 条记录 14:26:44 - article_server - INFO - [SQL数据] 查询结果: [{'id': 14, 'tag_name': '去重'}, {'id': 15, 'tag_name': '基础提示词'}] 14:26:44 - article_server - INFO - [API访问] GET /api/articles/list_dashboard - IP: 125.121.107.252 - User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Sa 14:26:44 - article_server - INFO - [Token验证成功] 用户ID: 4 14:26:44 - article_server - INFO - [文章仪表盘] 开始处理请求, IP: 125.121.107.252 14:26:44 - article_server - INFO - [SQL执行] 开始执行查询SQL 14:26:44 - 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 14:26:44 - article_server - INFO - [SQL执行] 开始执行查询SQL 14:26:44 - article_server - INFO - [SQL参数] (14,) 14:26:44 - article_server - INFO - [SQL语句] SELECT COUNT(id) as total FROM ai_articles WHERE enterprise_id = %s 14:26:44 - article_server - INFO - [SQL参数] (1,) 14:26:44 - article_server - INFO - [SQL执行] 开始执行查询SQL 14:26:44 - article_server - INFO - [SQL语句] SELECT COUNT(*) as total FROM ai_articles a WHERE a.enterprise_id = %s 14:26:44 - article_server - INFO - [SQL参数] [1] 14:26:44 - article_server - INFO - [SQL结果] 查询完成,返回 1 条记录 14:26:44 - article_server - INFO - [SQL数据] 查询结果: [{'total': 34}] 14:26:44 - article_server - INFO - [SQL结果] 查询完成,返回 0 条记录 14:26:44 - article_server - INFO - [SQL结果] 查询完成,返回 1 条记录 14:26:44 - article_server - INFO - [SQL数据] 查询结果: [{'total': 34}] 14:26:44 - article_server - INFO - [SQL执行] 开始执行查询SQL 14:26:44 - article_server - INFO - [SQL语句] SELECT COUNT(id) as total FROM ai_articles WHERE enterprise_id = %s AND status = 'published_review' 14:26:44 - article_server - INFO - [SQL参数] (1,) 14:26:44 - article_server - INFO - [SQL执行] 开始执行查询SQL 14:26:44 - 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 14:26:44 - article_server - INFO - [SQL参数] [1, 20, 0] 14:26:44 - article_server - INFO - [SQL执行] 开始执行查询SQL 14:26:44 - 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 14:26:44 - article_server - INFO - [SQL参数] (1,) 14:26:44 - article_server - INFO - [SQL结果] 查询完成,返回 1 条记录 14:26:44 - article_server - INFO - [SQL数据] 查询结果: [{'total': 0}] 14:26:44 - article_server - INFO - [SQL结果] 查询完成,返回 20 条记录 14:26:44 - article_server - INFO - [SQL结果] 查询完成,返回 0 条记录 14:26:44 - article_server - INFO - [SQL执行] 开始执行查询SQL 14:26:44 - article_server - INFO - [SQL语句] SELECT COUNT(id) as total FROM ai_articles WHERE enterprise_id = %s AND status = 'published' 14:26:44 - article_server - INFO - [SQL参数] (1,) 14:26:44 - article_server - INFO - [SQL执行] 开始执行查询SQL 14:26:44 - article_server - INFO - [SQL语句] SELECT id, article_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 IN (%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s) ORDER BY article_id, sort_order ASC, created_at ASC 14:26:44 - article_server - INFO - [SQL参数] [51, 52, 53, 48, 49, 50, 45, 46, 47, 42, 43, 44, 37, 38, 39, 40, 41, 32, 33, 34] 14:26:44 - article_server - INFO - [API访问] GET /api/products/list - IP: 125.121.107.252 - User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Sa 14:26:44 - article_server - INFO - [Token验证成功] 用户ID: 4 14:26:44 - article_server - INFO - [获取产品列表] 开始处理请求, IP: 125.121.107.252 14:26:44 - article_server - INFO - [获取产品列表] 用户信息 - 用户ID: 4, 企业ID: 1, IP: 125.121.107.252 14:26:44 - article_server - INFO - [获取产品列表] 查询参数: page=1, pageSize=100, keyword=, type=, status=, 企业ID: 1, IP: 125.121.107.252 14:26:44 - article_server - INFO - 获取提示词列表成功,总数: 3 14:26:44 - article_server - INFO - [API响应] GET /api/prompts/list - IP: 125.121.107.252 - 状态码: 200 14:26:44 - article_server - INFO - [SQL结果] 查询完成,返回 1 条记录 14:26:44 - article_server - INFO - [SQL数据] 查询结果: [{'total': 0}] 14:26:44 - article_server - INFO - [SQL结果] 查询完成,返回 0 条记录 14:26:44 - article_server - INFO - [SQL执行] 开始执行查询SQL 14:26:44 - article_server - INFO - [SQL语句] SELECT COUNT(*) as total FROM ai_products WHERE enterprise_id = %s AND status != 'deleted' 14:26:44 - article_server - INFO - [SQL参数] [1] 14:26:44 - article_server - INFO - [API访问] GET /api/prompts/list - IP: 125.121.107.252 - User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Sa 14:26:44 - article_server - INFO - [Token验证成功] 用户ID: 4 14:26:44 - article_server - INFO - [文章仪表盘] 查询成功, 企业ID: 1, 总数: 34, 可发: 0, 已发: 0, IP: 125.121.107.252 14:26:44 - article_server - INFO - [API响应] GET /api/articles/list_dashboard - IP: 125.121.107.252 - 状态码: 200 14:26:44 - article_server - INFO - [SQL执行] 开始执行查询SQL 14:26:44 - article_server - INFO - [SQL语句] SELECT id, article_id, coze_tag, created_at FROM ai_article_tags WHERE article_id IN (%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s) 14:26:44 - article_server - INFO - [SQL参数] [51, 52, 53, 48, 49, 50, 45, 46, 47, 42, 43, 44, 37, 38, 39, 40, 41, 32, 33, 34] 14:26:44 - article_server - INFO - [SQL结果] 查询完成,返回 1 条记录 14:26:44 - article_server - INFO - [SQL数据] 查询结果: [{'total': 5}] 14:26:44 - article_server - INFO - [SQL执行] 开始执行查询SQL 14:26:44 - article_server - INFO - [SQL语句] SELECT COUNT(*) as total FROM ai_prompt_workflow WHERE enterprise_id = %s 14:26:44 - article_server - INFO - [SQL参数] (1,) 14:26:44 - article_server - INFO - [SQL结果] 查询完成,返回 9 条记录 14:26:44 - article_server - INFO - [SQL结果] 查询完成,返回 1 条记录 14:26:44 - article_server - INFO - [SQL数据] 查询结果: [{'total': 3}] 14:26:44 - article_server - INFO - [获取文章列表] 查询成功, 总数: 34, 当前页: 1, 每页: 20, 返回数量: 20, 企业ID: 1, IP: 125.121.107.252 14:26:44 - article_server - INFO - [API响应] GET /api/articles/list - IP: 125.121.107.252 - 状态码: 200 14:26:44 - article_server - INFO - [SQL执行] 开始执行查询SQL 14:26:44 - 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 14:26:44 - article_server - INFO - [SQL参数] [1, 100, 0] 14:26:44 - article_server - INFO - [SQL结果] 查询完成,返回 5 条记录 14:26:44 - article_server - INFO - [SQL执行] 开始执行查询SQL 14:26:44 - 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 14:26:44 - article_server - INFO - [SQL参数] (1, 100, 0) 14:26:44 - article_server - INFO - [SQL结果] 查询完成,返回 3 条记录 14:26:44 - article_server - INFO - [SQL数据] 查询结果: [{'id': 25, 'prompt_workflow_name': 'Inject基础提示词', 'workflow_id': '7576997068138659846', 'content': '你是一个健康类自媒体的编辑,每天需要撰写健康类内容。我将要给你一个topic,这个topic是一个问句。请你先产生一个段落的回复,然后再段展开回复。每个段落都需要用一个emoji开头。最后,请生成tag。段落与段落之间空一行,保证可读性。\n详细要求如下:\n一、核心要求:\n1.\t目标受众: 普通大众,非专业人士。务必:\n¡\t避免使用专业术语和书面化表达\n¡\t内容安全限制:\n\uf06e\t❌ 禁止提及任何人体私密部位或敏感功能\n\uf06e\t❌ 禁用可能引发恐慌的词汇(如"危险""致命")\n2.\t内容核心: 围绕“主题”,聚焦病症、问题、危害或困扰, 解释原因、原理,介绍症状、类型,提供积极、实用的解决方案、改善建议或注意事项等有价值的内容均可。\n3.\t唯一性与实用性: 生成的内容需确保信息准确(基于常识)且每次生成的内容不应与历史输出重复(针对同一主题多次生成时)。\n二、内容结构及具体要求:\n\uf06c\t【首段提问】 (title):\n¡\t对应内容为{{title}}\n\n\uf06c\t【次段简答】 (short-answer):\n¡\t字数: 60-120字。 \n **内容要求**:\n 1. 第一句话必须直接回答{{title}}的提问,可以拓展1-2句话\n 2. 直接明晰,不要太笼统,禁止罗里吧嗦\n 3. 段前不要emoji表情符号\n \n **✅ 合格示例**:\n 发现HPV16或18阳性,这通常意味着宫颈癌筛查结果显示存在感染。接下来一般会建议做阴道镜检查,再根据检查的具体情况决定治疗方案。\n\n **❌ 不合格示例**:\n • 使用emoji开头\n • 没有直接回答问题\n • 过于笼统泛泛而谈 \n\n\uf06c\t【分段细答】 (contents):\n¡\t数量要求:2-3段。\n¡\t字数要求: 60~100字/段。\n¡\t核心要求:\n\uf06e\t语言口语化、自然流畅。\n\uf06e\t段落内容必须围绕核心观点展开,根据不同情况分类详细阐述问题,可以是具体可行的建议(吃什么、做什么、注意什么等),疾病的科普(主要症状、影响、诱因等),或者其它逻辑合理的内容也可以。\n\uf06e\t内容有一定的逻辑,包括但不限于(首先、其次、最后),(第一,第二,第三),(不仅、而且、还有),(初级、中级、高级)。\n\uf06e\t每段内容均衡,不超过五句话,确保信息全面且易于消化。\n\uf06e\t分段细答部分应当是次段简答部分的延伸,但用词不能和次段简答部分有太多重复,请保持多样性。\n\uf06e\t 在生成回答前,必须执行以下创造性流程:\n\t\t结构性禁令(排除法):行文结构不得是“定义→成因→症状→治疗”或“是什么→为什么→怎么办”及其任何变体。\n\t\t动态自我审视(核心步骤):\n\t\t回顾:主动审视历史内容中,针对相同或相似主题已使用过的所有核心阐述逻辑。\n\t\t规避:明确禁止重复或小幅修改上述任何逻辑。\n\t\t创新:基于当前问题的具体内涵,生成一个在本质上全新的、服务于核心问题的最佳解释路径。该路径必须与所有已回顾的逻辑存在根本性差异。\n\t\t输出确认:最终采用的逻辑结构,应是本次对话上下文中一次独特的、未经使用的创造性表达形式。\n\n\uf06c\t【标签】 (tags):\n¡\t**单个关键词字数:4-8个字。\n¡\t内容:* (1)根据正文内容,生成5个内容强相关tag; (2)标签格式:每个关键词前后都有# (例: #养生小知识# #中医养生##习惯养成# #健康养生#)\n三、变量输入:\n\uf06c\t主题: {{title}}\n四、最终安全规则:\n4.\t全篇禁止出现人体私密部位描述\n5.\t关键安全信息重复出现≥2次\n6.\t每句话≤20字,复合句用逗号分隔\n7、不能出现 "下面就给大家仔细说说",“下面具体讲讲”,话术\n', 'usage_count': 23, 'created_at': datetime.datetime(2025, 12, 12, 20, 53, 9), 'updated_at': datetime.datetime(2025, 12, 19, 15, 54, 58)}, {'id': 14, 'prompt_workflow_name': '测试提示词', 'workflow_id': 'WF-CC8BB759', 'content': '这是一个测试提示词模板...', 'usage_count': 2, 'created_at': datetime.datetime(2025, 12, 12, 17, 41, 22), 'updated_at': datetime.datetime(2025, 12, 12, 17, 51, 54)}, {'id': 1, 'prompt_workflow_name': '种草分享型', 'workflow_id': 'WF-001', 'content': '你是一个小红书种草达人,请根据产品信息写一篇真实、有感染力的种草笔记...', 'usage_count': 0, 'created_at': datetime.datetime(2025, 12, 12, 16, 58, 22), 'updated_at': datetime.datetime(2025, 12, 12, 16, 58, 22)}] 14:26:44 - article_server - INFO - [SQL执行] 开始执行查询SQL 14:26:44 - article_server - INFO - [SQL语句] SELECT id, tag_name FROM ai_product_tags WHERE product_id = %s 14:26:44 - article_server - INFO - [SQL参数] (25,) 14:26:44 - article_server - INFO - [SQL执行] 开始执行查询SQL 14:26:44 - 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 14:26:44 - article_server - INFO - [SQL参数] (25,) 14:26:44 - article_server - INFO - [SQL结果] 查询完成,返回 0 条记录 14:26:45 - article_server - INFO - [SQL结果] 查询完成,返回 2 条记录 14:26:45 - article_server - INFO - [SQL数据] 查询结果: [{'id': 14, 'tag_name': '去重'}, {'id': 15, 'tag_name': '基础提示词'}] 14:26:45 - article_server - INFO - [SQL执行] 开始执行查询SQL 14:26:45 - article_server - INFO - [SQL语句] SELECT id, tag_name FROM ai_product_tags WHERE product_id = %s 14:26:45 - article_server - INFO - [SQL参数] (13,) 14:26:45 - article_server - INFO - [SQL执行] 开始执行查询SQL 14:26:45 - 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 14:26:45 - article_server - INFO - [SQL参数] (14,) 14:26:45 - article_server - INFO - [SQL结果] 查询完成,返回 0 条记录 14:26:45 - article_server - INFO - [SQL结果] 查询完成,返回 0 条记录 14:26:45 - article_server - INFO - [SQL执行] 开始执行查询SQL 14:26:45 - article_server - INFO - [SQL语句] SELECT id, tag_name FROM ai_product_tags WHERE product_id = %s 14:26:45 - article_server - INFO - [SQL参数] (12,) 14:26:45 - article_server - INFO - [SQL执行] 开始执行查询SQL 14:26:45 - 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 14:26:45 - article_server - INFO - [SQL参数] (1,) 14:26:45 - article_server - INFO - [SQL结果] 查询完成,返回 0 条记录 14:26:45 - article_server - INFO - [SQL结果] 查询完成,返回 0 条记录 14:26:45 - article_server - INFO - 获取提示词列表成功,总数: 3 14:26:45 - article_server - INFO - [API响应] GET /api/prompts/list - IP: 125.121.107.252 - 状态码: 200 14:26:45 - article_server - INFO - [SQL执行] 开始执行查询SQL 14:26:45 - article_server - INFO - [SQL语句] SELECT id, tag_name FROM ai_product_tags WHERE product_id = %s 14:26:45 - article_server - INFO - [SQL参数] (11,) 14:26:45 - article_server - INFO - [SQL结果] 查询完成,返回 0 条记录 14:26:45 - article_server - INFO - [SQL执行] 开始执行查询SQL 14:26:45 - article_server - INFO - [SQL语句] SELECT id, tag_name FROM ai_product_tags WHERE product_id = %s 14:26:45 - article_server - INFO - [SQL参数] (1,) 14:26:45 - article_server - INFO - [SQL结果] 查询完成,返回 1 条记录 14:26:45 - article_server - INFO - [SQL数据] 查询结果: [{'id': 1, 'tag_name': '保湿'}] 14:26:45 - article_server - INFO - [获取产品列表] 查询成功, 总数: 5, 当前页: 1, 每页: 100, 返回数量: 5, 企业ID: 1, IP: 125.121.107.252 14:26:45 - article_server - INFO - [API响应] GET /api/products/list - IP: 125.121.107.252 - 状态码: 200