stefanfeng
|
169e798718
|
fix: 历史文章改为从新到旧顺序翻页,而非随机
修复原因:
- 需求要求从最新文章开始往旧的方向依次互动
- 原实现随机选页,导致每次跳到不同页,无法体现「从新到旧」
- 列表API返回的文章已按 createTime 降序排列(第1页最新)
新Phase 2逻辑:
- 计算总页数(最多10页)
- 用当前小时 % 总页数 决定起始页(同小时内分散到不同页)
- 若起始页为空,顺序往后再折回,直到找到有文章的页
- 在同一页内随机打散,保证同一时段不同用户不总是抢相同文章
- validate_article 校验,不够则从剩余补充
Phase 1(今日新文章)逻辑不变:
- 仍从第1页抓取当天文章,按 createTime 降序(新→旧)排列后校验返回
|
2026-04-07 13:24:42 +08:00 |
|
stefanfeng
|
053d22965c
|
feat: 调度优先今日新文章,无新文章时随机历史翻页
新调度规则:
Phase 1 — 今日新文章优先(从新到旧轮询):
- 从第1页开始拉取(接口返回最新优先)
- 只保留今日发布的文章,按 createTime 降序排列(新→旧)
- 最多扫描3页,发现非今日文章立即停止
- 对今日文章逐篇 validate_article 校验后返回
Phase 2 — 历史兜底(仅今日无新文章时触发):
- 随机翻 1~10 页历史
- 热度+新鲜度加权采样(commentNum×3 + praiseNum×2 + readNum)
- validate_article 校验后返回
两阶段均包含:
- 本人发布文章过滤
- 静态+运行时无效ID过滤
- 文章有效性校验(不可开/正文<100字自动加入缓存黑名单)
|
2026-04-03 11:33:31 +08:00 |
|
stefanfeng
|
e18c241bf0
|
feat: 文章有效性校验,过滤不可开/字数<100的文章
新增 validate_article() 方法:
- 调用 GET /news/{id} 接口验证文章是否存在(code≠0 则无效)
- 去除 HTML 标签后统计正文字数,< 100 字则过滤
- 运行时缓存 _invalid_ids_cache:校验失败的 ID 进程内永久跳过,避免重复 API 调用
静态黑名单更新:
- 新增 1952296583257133058(测试发现的无效文章)
- 静态黑名单与运行时缓存合并使用
get_news_list 流程:
1. 静态黑名单过滤(无 API 开销)
2. 热度+新鲜度加权采样
3. validate_article 逐篇校验
4. 若候选不足,从剩余池补充直到达到 count
|
2026-04-03 11:18:22 +08:00 |
|
stefanfeng
|
f52bc7d147
|
fix: 点赞/收藏/转发同一篇文章每日只触发一次
问题:同一用户对同一篇文章重复点赞、收藏、转发
原因:去重逻辑只针对评论,未覆盖其他互动类型
修复:
- 查询今日所有互动类型的已完成记录(不只是评论)
- 点赞/收藏/转发执行前检查 today_done,已做过则跳过
- 概率控制依然有效(未做过的文章才进入随机概率判断)
- 评论去重逻辑保持不变
|
2026-04-03 10:47:34 +08:00 |
|
stefanfeng
|
4ab8f94663
|
fix: 修复调度器只选前5个用户的bug,改为全量轮转
问题根因:
1. SQL查询加了 .limit(max_concurrent),导致只有数据库前5条用户参与互动
2. 额外的 random.random() < 0.6 过滤进一步减少了执行用户数
修复方案:
- 查询所有已登录用户(去掉 SQL LIMIT)
- 按最后互动时间升序排序,最久未互动的用户优先
- 前1/3名额给最久未互动用户(优先权),其余随机补充
- 每轮最多执行 max_concurrent 个用户,保证公平轮转
|
2026-04-03 10:28:49 +08:00 |
|
stefanfeng
|
7203f04be6
|
feat: 评论去重 + 热度/新鲜度加权选文
评论去重逻辑:
- 查询今日已评论的文章ID,选文时已评论的文章权重降为10%
- 若选中已评论文章:改为回复其他用户的评论(虚拟用户互动链)
- 若选中未评论文章:正常发新评论,评论成功后随机回复他人评论
热度+新鲜度加权选文规则:
- 热度分 = commentNum×3 + praiseNum×2 + readNum×1
- 新鲜度 = 72小时内的新文章获得最高3倍加成,随时间线性衰减
- 综合权重 = (热度分+1) × 新鲜度,确保真实用户互动多的新文章优先被虚拟用户关注
|
2026-04-02 17:33:07 +08:00 |
|
stefanfeng
|
958eaeda8a
|
fix: 多项修复
- main.py: 加 _CNJSONResponse 修复 datetime 序列化时区(+00:00→+08:00)
- schemas/__init__.py: 加 _fmt_dt 函数和 sync_to_platform 字段
- ai_service.py: 评论 max_tokens 从 300 提升到 500 避免截断
- scheduler.py: datetime.utcnow() 全部改为 datetime.now()(北京时间)
- docker-compose.yml: MySQL 容器加 TZ=Asia/Shanghai
- Interactions.vue: 文章标题链接从系统配置读取域名,格式为 {域名}/huihui-h5/#/news/share?id={id}&login=no
|
2026-04-01 18:07:42 +08:00 |
|
stefanfeng
|
cd07776914
|
feat: 多项功能更新
- 日志时间改为北京时间(TZ=Asia/Shanghai)
- 评论达上限后继续执行点赞/收藏/转发
- 用户信息同步改用 PATCH /v2/users/current
- 一键登出全部功能
- 一键登出全部前端按钮
- update.sh 一键更新脚本
|
2026-03-31 10:29:26 +08:00 |
|
stefanfeng
|
3fbccbc2b1
|
chore: 清理多余文件
|
2026-03-31 10:25:00 +08:00 |
|
stefanfeng
|
0cfc9bf9c8
|
feat: AI虚拟用户新闻互动系统 v1.3.0 初始提交
- 虚拟用户管理(昵称/头像/性别/简介/邮箱同步到目标平台)
- AI互动调度(点赞/收藏/评论/转发)
- 日志时间改为北京时间
- 评论达上限后继续执行点赞收藏转发
- 一键登出全部功能
- 浅色主题UI
|
2026-03-31 10:20:57 +08:00 |
|