Yuzhiran Dev
|
4e10cc95d3
|
清理 tasks.py 死代码
|
2026-05-21 10:21:45 +08:00 |
|
Yuzhiran Dev
|
9178f436b2
|
任务页面全面改版: 模块输入/输出/历史详情抽屉
后端新增:
- GET /api/tasks/modules/{module_id}/detail
每个模块返回: inputs(自动填充的参数)、outputs(格式化产出结果)、
history(今日运行记录)、log_excerpt(日志原文)
前端重构 tasks.html:
- 上半: 定时任务模块卡片网格(与仪表盘风格统一)
- 点击卡片→右侧抽屉展示3个tab:
📥 输入参数: 搜索词/类别/待处理数量等(自动填充)
📤 产出结果: 表格/标签/评分/建议等(按类型格式化)
📋 运行记录: 日志原文+时间轴
- 底部保留创作任务列表(分页/筛选/详情)
- 抽屉底部立即运行按钮
|
2026-05-21 10:18:21 +08:00 |
|
Yuzhiran Dev
|
0dcfda0c80
|
数据新鲜度校验: 所有模块加上日期/时效检查
1. search_cache.json → 添加 _metadata.updated_at 时间戳
web_search.search_from_cache() 跳过超过36h的旧缓存
防止某查询失败时残留旧数据
2. metrics_feedback.json → collector 检查mtime,超过24h不采用
3. trends.json → 已有 date==TODAY 校验(load_trends)
4. collector_ai_advice → DB每日覆盖,时序安全
creator→topic状态位避免重复生成
optimizer→文章状态位避免重复审查
|
2026-05-21 10:09:51 +08:00 |
|
Yuzhiran Dev
|
5037d5d0ed
|
流水线整体前移1.5h,凌晨5点前全部就绪
01:00 search → 01:10 trends → 01:30 collect
→ 02:00 create → 03:00 review
→ 05:00 optimize_sources → 06:00 metrics
各间隔: 10min/20min/30min/60min/2h/1h
采集到创作30min缓冲足够(采集≈5-15min)
|
2026-05-21 10:04:41 +08:00 |
|
Yuzhiran Dev
|
56293a52a2
|
打通流水线闭环: trends+metrics+optimize_sources → collector
三大数据流精准注入采集器:
1. 热点趋势(trends) -> collector
_get_trend_context() 读取 trends.json
热搜注入 LLM 选题 prompt
2. 历史表现(metrics) -> collector
scheduler 同步指标后按field聚合写入 feedback.json
collector 读取后高互动领域获优先级提升
3. AI策略(optimize_sources) -> collector
从 DB SystemConfig 读取 AI 建议注入 prompt
|
2026-05-21 09:48:38 +08:00 |
|
Yuzhiran Dev
|
6b790e77f6
|
全线异步化: 所有手动触发任务不再阻塞uvicorn worker
每个模块提供两个版本:
- run_xxxx() → Popen非阻塞(给API用)
- run_xxxx_blocking() → subprocess.run阻塞(给定时任务用)
API端点全部改为立即返回XX已后台启动,不再等子进程完成
受影响端点:
/generate/run (原30min→12ms)
/review/run (原10min→12ms)
/collect/run (原5min→12ms,已修复)
/optimize-sources/run (原2min→12ms)
/trends/run (原2min→12ms)
/refresh-search-cache/run (原10min→12ms)
/metrics-sync/run (原N×10s→12ms)
同时增加对应GET状态端点:/collect/status,/generate/status,/review/status
|
2026-05-21 09:20:13 +08:00 |
|
Yuzhiran Dev
|
6f81167691
|
联网搜索能力集成: opencode webfetch → 采集器
新增:
- scripts/opencode_search.py: 通过 npx opencode run 调用 webfetch 联网搜索
- 搜索缓存每日 02:30 自动刷新 (scheduler)
- 管理后台「搜索缓存」模块 + 立即运行按钮
- POST /api/system/refresh-search-cache/run 手动触发端点
- 8个分类搜索词从sources.yaml读取,调用AI联网搜索真实内容
机制:
Python脚本 → npx opencode run → AI webfetch → 真实搜索结果 → 写入search_cache.json
→ 采集器读缓存 → LLM基于真实数据生成选题
不再需要API Key,不依赖任何搜索引擎,搜索结果来自AI的webfetch能力
|
2026-05-21 09:01:02 +08:00 |
|
Yuzhiran Dev
|
7d50878c7d
|
搜索缓存: 可追踪的search_cache.json, webfetch预填充26条
新机制:
- web_search.py按优先级: 缓存→Bing API→Bing抓取
- search_cache.json由opencode webfetch手动填充(不依赖搜索引擎)
- 搜索失效不影响采集器(LLM直接生成选题)
- .gitignore移除search_cache.json(应被版本追踪)
|
2026-05-21 08:29:04 +08:00 |
|
Yuzhiran Dev
|
eb1c4205fa
|
重写web_search: Bing API优先+抓取回退+诚实失败
- Bing Web Search API支持(设BING_API_KEY环境变量即可)
- 抓取回退但诚实面对反爬限制
- 搜索为空时采集器正常运行(LLM直接生成选题)
- 降低搜索依赖为可选增强
|
2026-05-21 08:14:47 +08:00 |
|
Yuzhiran Dev
|
a26f0e936e
|
修复采集器流程顺序: 采集→分析→LLM总结
- _generate_topic_with_llm 改名为 _generate_topics_with_llm
- 支持同时接收已分析的案例+搜索结果作为LLM上下文
- run()顺序改为: 采集→RSS提炼案例→LLM基于全部数据生成→降级回退
- LLM现在在流程末尾做总结生成,而非开头替代搜索
|
2026-05-21 08:06:24 +08:00 |
|
Yuzhiran Dev
|
10996ce6ce
|
清理城市农业类别 + 修复采集器LLM直接选题
清理:
- sustainability_cases.json移除GLO-001/CHN-001城市农业案例,替换为循环消费
- initial_cases.json移除case8东京垂直农场/case26城市屋顶农场
- strategy_topics_to_json.py移除B01/B05/D05三个种菜选题
- collector.py移除城市农业→循环消费映射,更新注释
- 删除fix_collector.py/test_image_gen.py/generate_images.py等遗留脚本
- 删除import_topics.py和automation/下旧版生成脚本
修复:
- collector.py _generate_topic_with_llm不再依赖搜索结果,无搜索时LLM直接生成
- run()始终调用LLM,不再要求web_search_results非空
- 替换sources.yaml中已失效的RSS源(澎湃/虎嗅/中新网→36氪/少数派)
|
2026-05-21 08:02:08 +08:00 |
|
Yuzhiran Dev
|
c8bee712d7
|
Phase3: 三平台封面图生成
- cover_generator.py: Pillow生成知乎/微信/小红书封面图(渐变背景+标题)
- 知乎 1200×630 蓝调, 微信 900×500 绿调, 小红书 1080×1440 红调
- creator.py 流水线增加 cover_generator 作为最终回退
- db_helper.py 新增 save_cover_to_article
- main.py 挂载 /automation/images 静态目录
- articles.py preview 接口返回 images 字段
- topics.html 预览dialog展示封面图
|
2026-05-20 19:12:58 +08:00 |
|
Yuzhiran Dev
|
40a77cad2c
|
Phase2: 真实热点数据接入
- trends.py新增百度/微博/知乎实时热搜API抓取,LLM为fallback
- 新增 source 字段标记数据来源
- scheduler.py新增 scheduled_fetch_trends 每日03:00定时刷新
- system.py新增 POST /api/system/trends/run 手动触发端点
- system.py modules/status 加入热点趋势模块
- index.html triggerModule 加入 trends 触发按钮
|
2026-05-20 19:07:35 +08:00 |
|
Yuzhiran Dev
|
09da2f9dc4
|
Phase1: 效果数据真实化
- 替换scheduler.py中假随机数metrics_sync为知乎API自动获取
- 新增 POST /api/metrics/zhihu-fetch 知乎公开数据API端点
- metrics.html新增「数据录入」tab:手动录入表单+已有数据列表+知乎自动获取
- gitignore清理已跟踪的生成文件(outlines/research/images/cache)
|
2026-05-20 19:04:35 +08:00 |
|
Yuzhiran Dev
|
eb800c5acc
|
Ignore generated pipeline artifacts (outlines, research, images, search cache)
|
2026-05-20 18:31:44 +08:00 |
|
Yuzhiran Dev
|
9a328323c0
|
Filter outline markers in writer, add min-height to preview dialog
|
2026-05-20 18:11:32 +08:00 |
|
Yuzhiran Dev
|
bf38125362
|
Fix compliance optimizer timeout: 600s -> 1800s to match other pipeline steps
|
2026-05-20 17:02:36 +08:00 |
|
Yuzhiran Dev
|
2244736318
|
Fix preview: keep article title and tags, adjust scroll height
|
2026-05-20 15:37:26 +08:00 |
|
Yuzhiran Dev
|
63f074e4df
|
Fix preview dialog scroll & preserve HTML structure on edit save
|
2026-05-20 15:18:48 +08:00 |
|
Yuzhiran Dev
|
0a8fbda4fd
|
Fix calendar filter, module triggers, API cleanup, consolidate get_current_admin, fix LLM schema
|
2026-05-20 14:15:00 +08:00 |
|
Yuzhiran Dev
|
498165440f
|
Add platform config website_url, admin tab, fix writer DB config fallback, add trigger endpoints
|
2026-05-20 09:38:56 +08:00 |
|
Yuzhiran Dev
|
55e5f3d166
|
Fix topics mobile card list pagination: use paginatedTopics instead of filteredTopics
|
2026-05-19 08:28:56 +08:00 |
|
Yuzhiran Dev
|
1c78828681
|
Update PROGRESS.md (v16)
|
2026-05-19 07:45:18 +08:00 |
|
Yuzhiran Dev
|
3dce54b359
|
Fix writer max_tokens (500→1000) for titles/tags, fix preview scrollbar height
|
2026-05-19 07:44:56 +08:00 |
|
Yuzhiran Dev
|
0897074d40
|
Update PROGRESS.md with 2026-05-18 work summary (v16)
|
2026-05-18 23:53:49 +08:00 |
|
Yuzhiran Dev
|
671cec58fa
|
Fix preview platform switching, add stale task cleanup on startup
|
2026-05-18 23:38:30 +08:00 |
|
Yuzhiran Dev
|
7b4e52743b
|
Fix pagination: all pages default to 10 per page, add total counts, fix tasks pagination position and use client-side slicing
|
2026-05-18 22:59:03 +08:00 |
|
Yuzhiran Dev
|
894e53caef
|
Add intermediate progress update for running tasks
|
2026-05-18 22:41:31 +08:00 |
|
Yuzhiran Dev
|
f427aea1b3
|
Fix task status stuck at 'running': use new DB session in thread, add frontend auto-polling
|
2026-05-18 22:37:59 +08:00 |
|
Yuzhiran Dev
|
33766a396d
|
Fix topic preview: add missing edit/save methods, fix scrollbar, strip tags from preview body
|
2026-05-18 19:40:26 +08:00 |
|
Yuzhiran Dev
|
a09e7e6671
|
Add pagination to admin management tabs (cases/categories/sources/orgs)
|
2026-05-18 19:18:09 +08:00 |
|
Yuzhiran Dev
|
7169ddb678
|
refactor: writer.py 移除文件系统写入代码,HTML 仅持久化到数据库
删除 RELEASE_DIR、release_dir、out_path.write_text 等文件系统相关代码,
save_html 改为仅调用 save_article() 写入 articles 表。
避免后期维护时文件系统和数据库双源不一致的问题。
|
2026-05-18 08:29:08 +08:00 |
|
Yuzhiran Dev
|
279dc5b894
|
fix: writer.py 生成的 HTML 未写入数据库导致预览和合规优化均取不到内容
save_html 在写文件后新增 save_article() 调用,将 HTML 持久化到 articles 表,
使预览 API 和 compliance_optimizer 能从 DB 正常读取文章内容
|
2026-05-18 08:18:32 +08:00 |
|
Yuzhiran Dev
|
52564ad036
|
fix: 今日新增筛选统计不准 + LLM提示词动态当前日期 + 微信配图按选题生成
topics.html:
- 今日新增筛选时全量拉取 allTopics 用于保持 stats 统计正确,todayTopics
存储服务端日期过滤结果
- filteredTopics 对 'today' 返回 todayTopics,不按不存在的 status 过滤
writer.py/research.py/outline.py:
- 所有 LLM 提示词注入今天的动态年月日(datetime.now)
- 禁用过时数据的年份改为动态 {当前年-1}-{当前年}
- 每个论点必须配真实最新案例+数据来源
writer.py WeChat 配图:
- 从 null placeholder 改为动态 SVG,展示选题标题+领域
- 标题自动换行(24字/行),附蓝色装饰条 + 渐变背景
|
2026-05-18 06:25:47 +08:00 |
|
Yuzhiran Dev
|
bb50d5d925
|
fix: 今日新增筛选filteredTopics未处理'today'导致始终为空,状态筛选改为全量拉取保统计准确
- filteredTopics 对 filterStatus='today' 直接返回 this.topics(服务器已按日期过滤),避免按不存在的 status 再次过滤导致空列表
- fetchTopics 改为只有 'today' 走服务端 ?today=true;其他状态仍然全量拉取后客户端过滤,保证 statusStats 统计按钮数字准确
- 保留 watch 移除(用户能自由清除筛选)
|
2026-05-18 06:14:15 +08:00 |
|
Yuzhiran Dev
|
a46fedabb5
|
fix: 选题页状态过滤器改用服务端过滤,移除watch覆写URL参数导致无法清除筛选的问题
- fetchTopics 根据 filterStatus 发送 status/today 参数到后端,而非全量拉取后客户端过滤
- 移除 watch.topics 处理器,解决 URL 参数反复覆写用户筛选操作的问题
- 今日新增(?today=true)和服务端 status 参数均走 API 过滤
|
2026-05-18 06:08:33 +08:00 |
|
Yuzhiran Dev
|
39719354fb
|
perf: 全链路 LLM 提示词优化 + 微信公众号配图改为 base64 内联
- research.py: 提示词增加热点关联/独特观点储备/市场价值判断/平台搜索趋势
- outline.py: 增加反常识洞察/平台推荐优化/每章市场价值产出要求
- writer.py _expand_section: 增加独特观点/热点时效/专业简洁/平台推荐友好要求
- writer.py _optimize_title: 各平台补充搜索热词利用/情绪感召/参考真实爆款语气
- writer.py wechat配图: placeholder.jpg 改为 base64 内联 SVG(带相机图标+提示文案),预览可渲染,复制即用
|
2026-05-18 05:49:50 +08:00 |
|
Yuzhiran Dev
|
41b0f694ee
|
feat: 平台配置表扩展配图/字数字段,微信公众号正文插入配图,合规检查从DB读规则
- PlatformConfig模型新增requires_image、image_count_min/max、image_width/height、min_words/max_words
- schemas.py同步PlatformConfigBase/Create/Update/Response新字段
- initial_data.py为三大平台填充初始值(微信需配图、字数800-1500等)
- database.py添加新列ALTER TABLE迁移
- platforms.html重写编辑弹窗(正确字段名+配图/字数设置)
- writer.py微信公众号文章正文h1后插入<img>占位
- compliance_checker.py接受platform_config参数,从DB读取规则替代硬编码
- compliance_optimizer.py启动时加载DB平台配置传入checker
|
2026-05-17 23:08:43 +08:00 |
|
Yuzhiran Dev
|
5674114599
|
perf: 多平台文章不再每个平台独立LLM改写,改为生成一篇通用文章后仅做格式排版适配
|
2026-05-17 22:57:11 +08:00 |
|
Yuzhiran Dev
|
dc531460ea
|
fix: 小红书文章无正常内容(LLM推理文本污染)、模块列表不匹配、脚本独立运行缺org_id列迁移
|
2026-05-17 22:52:05 +08:00 |
|
Yuzhiran Dev
|
eb472d232e
|
fix: 仪表盘概览标题颜色过浅改用CSS变量;模块状态列表从3个扩展至6个与定时任务数匹配
|
2026-05-17 17:01:14 +08:00 |
|
Yuzhiran Dev
|
f2d778b5ce
|
fix: 脚本独立运行时缺少init_db(),导致Topic表org_id列不存在,创作按钮点击后生成文章失败
|
2026-05-17 15:37:24 +08:00 |
|
Yuzhiran Dev
|
2b7935b408
|
fix: 补充H5移动端隐藏el-table样式,修复选题/文章页桌面表和移动端卡片同时显示的问题
|
2026-05-17 15:15:11 +08:00 |
|
Yuzhiran Dev
|
2852b6ef06
|
chore: 更新信息源配置(移除失效源,新增web_search和RSS源)及搜索缓存
|
2026-05-17 10:20:42 +08:00 |
|
Yuzhiran Dev
|
d32fc05f4f
|
refactor: 统一CSS设计系统 — 移除各页面重复内联样式,改用theme-modern.css自定义属性
|
2026-05-17 10:09:56 +08:00 |
|
Yuzhiran Dev
|
9c37c9a574
|
feat: Phase 4 多租户隔离 + 四阶段升级测试 + CSS 统一化
Phase 4: org_id 注入 JWT/API 过滤/组织管理 CRUD/前端组织列
测试: tests/test_phase_upgrades.py 97项全覆盖
CSS: theme-modern.css 共享 mobile-card-list/status-dot/search-bar 等模式
修复: initial_data.py LLM配置 NOT NULL 约束, TopicResponse 含 org_id
|
2026-05-17 06:56:53 +08:00 |
|
Yuzhiran Dev
|
301dc3e438
|
feat: 添加 LLM API 并发控制规则 (并发2, ≤60次/分钟)
|
2026-05-16 10:56:58 +08:00 |
|
Yuzhiran Dev
|
fef435cc78
|
feat: 审查流程优化+采集定时调度+全链路LLM提示词升级
- 审查:移除 manual_review,改为迭代LLM修复(最多3次),合规分回写Topic
- 调度:scheduler 新增话题采集定时任务 scheduled_collect (01:30)
- 提示词:全链路8文件≈24个提示词升级,增强SEO/平台推荐/真人感
|
2026-05-14 21:52:02 +08:00 |
|
Yuzhiran Dev
|
1115223066
|
docs: 更新 PROGRESS.md 进度,扩展日志类型下拉
- PROGRESS.md 更新:articles 表迁移、合规审查重构、流水线流程说明
- logs.html 下拉框从 3 种扩展为 9 种日志类型(含研究/大纲/写作/发布/通知/趋势)
|
2026-05-13 18:24:25 +08:00 |
|
Yuzhiran Dev
|
233e23016c
|
feat: 内容数据迁移至数据库,合规审查全链路打通
- 文章 HTML 存储从文件系统迁移至 articles 表,删除 releases 目录
- 合规审查从 DB 读取 HTML,审查结果写回 DB,通过后自动推进至待发布
- 新增 todayCount 筛选按钮,与系统概览统计数据一致
- 全屏预览修复:提升 z-index 超过侧边栏,添加退出全屏/关闭按钮
- 统一 '优化' → '审查' 命名,消除前后端术语不一致
- 调度器创作完成后自动触发审查(生成 → 审查 → 待发布)
- 清理旧备份/调试文件、过期大纲和研究笔记
|
2026-05-13 17:33:56 +08:00 |
|