c6628b22f6
- 任务抽屉产出结果 tab 优先显示 last_message(日志消息), 过滤 result_data 中的 None/空值 - 修复 tasks.py 因 opencode 块删除导致的 SyntaxError - 修复 scheduled_generate 存储 None 值问题 - 清理 DB 中旧 scheduled_refresh_search_cache 的 56 条 TaskLog + 1 条 TaskConfig - 更新 PROGRESS.md
210 lines
15 KiB
Markdown
210 lines
15 KiB
Markdown
# 宇之然 · 项目进度总览
|
||
|
||
> 本文件为项目进度唯一真理源,所有进度信息以此为准。
|
||
> 其他文档中的进度描述一律以本文为准。
|
||
|
||
**最后更新**:2026-06-02 (v18)
|
||
|
||
---
|
||
|
||
## 一、项目总览
|
||
|
||
| 项目 | 内容 |
|
||
|------|------|
|
||
| 品牌 | 宇之然 — 科技沟通万物,愿世间百态回归自然 |
|
||
| 技术栈 | FastAPI + SQLAlchemy + PostgreSQL 16 + Vue 3 (CDN) + Element Plus |
|
||
| 平台服务 | 运行中 (端口 8001) |
|
||
| 策略阶段 | 全球-本土对比研究(2026-04-15 升级) |
|
||
| Git 提交 | 165 commits · 4 tags (v1.0.0~v1.0.4) · main 分支 |
|
||
|
||
---
|
||
|
||
## 二、里程碑完成情况
|
||
|
||
| 里程碑 | 说明 | 计划 | 实际 | 状态 |
|
||
|--------|------|------|------|------|
|
||
| M1 | 项目框架搭建完成 | 2026-04-10 | 2026-04-10 | ✅ |
|
||
| M2 | 首批选题确定 | 2026-04-12 | 2026-04-10 | ✅ |
|
||
| M3 | 首篇文章发布 | 2026-04-14 | 2026-04-14 | ✅ |
|
||
| M4 | 首月发布4篇 | 2026-05-10 | — | ⏳ 3篇完成 |
|
||
|
||
---
|
||
|
||
## 三、发布记录
|
||
|
||
| 编号 | 标题 | 日期 | 平台 | 状态 |
|
||
|------|------|------|------|------|
|
||
| 001 | 种菜一年,焦虑降了43%:我在阳台治愈了自己 | 2026-04-14 | 知乎/微信/小红书 | ✅ 已发布 [知乎链接](https://zhuanlan.zhihu.com/p/2026998296120411553) |
|
||
| TOPIC-BBB1CC | 城市农业新趋势:东京垂直农场与上海阳台种菜对比研究 | 2026-04-21 | 知乎/微信/小红书 | ✅ 已发布 |
|
||
| A01 | 远程工作2026中国指南:从"不可能"到"可行"的路径图 | 2026-04-23 | 知乎/微信/小红书 | ✅ 已发布 |
|
||
|
||
---
|
||
|
||
## 四、模块进度
|
||
|
||
### 4.1 平台系统
|
||
|
||
| 模块 | 状态 | 说明 |
|
||
|------|------|------|
|
||
| 后端 API (auth/topics/articles/publishing/calendar/metrics/assets/tasks/platform_config/admin) | ✅ 完成 | 核心 11 个 API 模块,JWT 认证 |
|
||
| 扩展 API (cases/audit/llm_configs/system_configs/optimizer_logs/task_logs/task_configs) | ✅ 完成 | 新增案例库、审计、LLM配置、任务配置、任务运行记录模块 |
|
||
| 前端页面 (仪表盘/选题/日历/数据/素材/任务/平台/系统管理/用户/日志/文章) | ✅ 完成 | Vue 3 + Element Plus SPA |
|
||
| 数据库 (PostgreSQL 16) | ✅ 运行中 | `yzr_nr` 库 |
|
||
| 服务 | ✅ 运行中 | 端口 8001 |
|
||
| 数据库迁移 (SQLite→PostgreSQL) | ✅ 完成 | 2026-05-08 |
|
||
| PWA 离线支持 | ✅ 完成 | manifest.json + Service Worker + 离线页面 |
|
||
| articles 表 + 数据迁移 | ✅ 完成 | 48 篇文章从文件系统迁入 DB,释放文件已清理 |
|
||
|
||
### 4.2 内容生产
|
||
|
||
| 模块 | 状态 | 说明 |
|
||
|------|------|------|
|
||
| 选题库 | ✅ 完成 | 10 个旧选题 (001~010) + 20 个新选题 (4 大支柱) |
|
||
| 文章草稿 (001 系列) | ✅ 完成 | 大纲/初稿/优化版/微信版 四版齐备 |
|
||
| 配图生产 | ✅ 完成 | 10 张 SVG + 10 张 PNG,含压缩版 |
|
||
| 合规审查 | ✅ 完成 | 评分 9.2/10,引用来源补充完成 |
|
||
| 多平台发布 (001 / BBB1CC / A01) | ✅ 完成 | 知乎/微信/小红书 三平台均已发布 |
|
||
| 银发科技适配指南 | ⏳ 写作中 | drafts 中 302 行初稿 |
|
||
| F01 AI写作实战 | ✅ 已入库 | 三平台文章已存入 articles 表,待审查通过后发布 |
|
||
| F02 平台差异策略 | ✅ 已入库 | 三平台文章已存入 articles 表,待审查通过后发布 |
|
||
|
||
### 4.3 自动化系统
|
||
|
||
| 脚本 | 状态 | 说明 |
|
||
|------|------|------|
|
||
| publish_to_zhihu.sh | ✅ 可用 | 知乎自动发布 |
|
||
| publish_to_wechat_mp.sh | ✅ 可用 | 微信公众号自动发布 |
|
||
| generate_images.py / image_generator.py | ✅ 可用 | SVG + PNG 配图生成 |
|
||
| compliance_checker.py | ✅ 可用 | 合规审查(敏感词/平台规则/品牌规范) |
|
||
| compliance_optimizer.py | ✅ 重构 | 移除 manual_review,改为迭代LLM修复(最多3次),合规分回写入Topic;解硬编码 provider,改从 env 读取;关键词过滤从宽泛改为精准 |
|
||
| creator.py / writer.py / outline.py / research.py | ✅ 优化 | 全链路LLM提示词优化(SEO/平台适配/真人感) |
|
||
| collector.py / collector_db_integration.py | ✅ 可用 | 趋势采集 |
|
||
| wecom_notifier.py | ✅ 可用 | 企业微信通知 |
|
||
| db_helper.py | ✅ 扩展 | update_topic_status 支持保存 compliance_score |
|
||
| search_utils.py | ✅ 重构 | 移除 _call_mcp(opencode MCP),新增 360/搜狗/微信搜索(免 API Key),百度千帆日限提升至 200 |
|
||
| opencode_search.py / mcp_search_server.py | ❌ 已删除 | opencode 搜索配额耗尽,替换为 360/搜狗/微信等免 Key 源 |
|
||
| web_search.py | ✅ 保留 | 本地缓存 + Bing 搜索(闲置备用) |
|
||
|
||
### 4.4 流水线流程
|
||
|
||
| 步骤 | 触发方式 | 说明 |
|
||
|------|---------|------|
|
||
| 内容采集 | 定时 01:30 | 热点趋势采集→生成选题建议→存入选题库 |
|
||
| 内容创作 | 手动点击 / 定时 03:30 (原 02:00) | 研究→大纲→撰写文章→合规审查→存入 articles 表 |
|
||
| 合规审查 | 手动点击 / 定时 04:30 (原 03:00) | 从 articles 表读取 draft→合规检查→LLM迭代修复(最多3次)→状态→待发布 |
|
||
| 信息源优化 | 定时 05:00 | AI评估采集类别与信息源配置,给出调整建议 |
|
||
| 指标同步 | 定时 06:00 | 同步统计数据 |
|
||
| 发布 | 手动点击 | 仅待发布状态可选 |
|
||
|
||
---
|
||
|
||
## 五、当前任务队列
|
||
|
||
### ✅ 已完成
|
||
|
||
| 任务 | 完成日期 | 备注 |
|
||
|------|---------|------|
|
||
| 审查流程优化(移除 manual_review) | 2026-05-14 | 改为迭代LLM修复(最多3次),合规分回写Topic |
|
||
| 内容采集加入定时调度 | 2026-05-14 | scheduler 新增 scheduled_collect 01:30 |
|
||
| 全链路LLM提示词优化 | 2026-05-14 | 覆盖trends/topic_selector/research/outline/writer/nvidia_client/compliance 共8文件≈24个提示词,增强SEO/平台推荐/真人感 |
|
||
| 导航布局重构 | 2026-05-16 | navbar + navigation 合并为 uni-nav,单行 top-bar 自适应 PC/H5,10 页迁移完成 |
|
||
| 文章管理页面 (articles.html) | 2026-05-16 | 新增 articles API (list/detail/delete) + 完整管理页面,支持筛选/搜索/预览/删除 |
|
||
| CSS架构统一整合 | 2026-05-16 | reset/body/layout/card/page-header/filter/toolbar 移入 theme-modern.css(86→127行),10页内联CSS总量从~660行降至~400行;preview对话框CSS归一化;删除 dead JS;index.html双style块合并为单一亮色主题 |
|
||
| Phase 1.1 配图集成到创作流水线 | 2026-05-16 | image_generator.py 支持 --topic-id 参数, DB读写图片路径; Article 新增 images JSON字段+迁移; creator.py 新增配图步骤; API GET /api/articles/{topic_id}/images; 文章页预览显示封面图 |
|
||
| Phase 1.3 统一前端体验 | 2026-05-16 | users.html 补 loading+空状态; index.html 渲染loadingStats+fetchModules错误提示; metrics.html 渲染loadingDashboard |
|
||
| Phase 2.1 发布审批 UI | 2026-05-16 | 后端 MultiPublishRequest 多平台发布 API; 前端发布确认弹窗+平台勾选 |
|
||
| Phase 2.2 日历关联文章状态 | 2026-05-16 | 后端 enrich_entry 添加 topic_status+platform_icon; 前端日历卡片显示平台图标+Topic状态标签; 修复 el-tag 缺少闭合 |
|
||
| emoji 替换为 Element Plus 图标 | 2026-05-16 | icon-components.js 注册 25 个 SVG 图标组件; 11 页 emoji → `<el-icon>` 批量替换 |
|
||
| H5 卡片布局补全 | 2026-05-16 | metrics.html 热门选题/平台对比/选题推荐三表加 H5 卡片视图 |
|
||
| Phase 3.1 平台数据对接 | 2026-05-16 | scripts/sync_metrics.py (估计算法); scheduler 新增 scheduled_metrics_sync 06:00 |
|
||
| Phase 3.2 数据看板增强 | 2026-05-16 | Chart.js 集成: 趋势折线图/状态环形图/平台对比柱状图 |
|
||
| Phase 4 多租户隔离 (JWT+API 层) | 2026-05-16 | org_id 注入 JWT payload; 12 个 API 模块添加 org 过滤; 创建选题自动继承用户 org; 管理端组织 CRUD |
|
||
| Phase 4 前端多租户 | 2026-05-16 | admin.html 新增组织管理标签页 (列表/创建/编辑/删除); users.html 增加组织列+H5卡片显示 |
|
||
| Phase 4 预置数据修复 | 2026-05-16 | initial_data.py 管理员用户添加 org_id; opencode-go LLM config 补全 user_prompt_template |
|
||
| PlatformConfig 模型字段扩展 | 2026-05-17 | 增加 requires_image/image_count_min/image_count_max/image_width/image_height/min_words/max_words; schemas/initial_data/前端表单同步; database.py 迁移 |
|
||
| 微信公众号正文配图 | 2026-05-17 | writer.py wechat 分支在 h1 后插入 `<img>` 占位 |
|
||
| 合规检查从 DB 读平台规则 | 2026-05-17 | compliance_checker.py 接受 platform_config 参数; compliance_optimizer.py 从 DB 加载平台配置传入 checker |
|
||
| 登录页居中修复 | 2026-05-18 | login.html body 添加 login-body 类 |
|
||
| 模块状态重复修复 | 2026-05-18 | system.py 重命名/去重,状态改查 jobs 而非日志文件 |
|
||
| 仪表盘"近期计划"卡片 | 2026-05-18 | index.html 新增日历 7 天预告卡片 |
|
||
| 日志/用户合并到系统管理 | 2026-05-18 | admin.html 增加用户管理+运行日志标签页;uni-nav 10→8 项 |
|
||
| 日历页增强 | 2026-05-18 | 指南横幅/即将到来列表/空状态/操作提示 |
|
||
| 任务页优化+分页 | 2026-05-18 | 6个定时任务/topic_title/STAGE_NAMES/前端分页 |
|
||
| 选题页前端分页 | 2026-05-18 | paginatedTopics computed + el-pagination |
|
||
| 后端 tasks API 改造 | 2026-05-18 | offset 参数 + topic_title 字段 |
|
||
| admin 全标签页分页 | 2026-05-18 | 案例/类别/信息源/组织/用户 5 标签统一分页(10条/页)+总数显示 |
|
||
| 选题预览修复 | 2026-05-18 | 补全 startEdit/cancelEdit/saveContent 方法;修复滚动条;strip .tags |
|
||
| 任务状态卡死修复 | 2026-05-18 | 后台线程改用独立 DB session;前端 5s 自动轮询;中间进度 30% 显示 |
|
||
| 预览平台切换修复 | 2026-05-18 | 补全 switchPlatform 方法 |
|
||
| 超时任务自动清理 | 2026-05-18 | 启动时标记运行>1h 任务为 failed;已清理 21 个卡死任务 |
|
||
| metrics 冗余统计移除 | 2026-05-18 | 删除与仪表盘重复的 4 个概览卡片 |
|
||
| writer max_tokens 提升 | 2026-05-19 | 标题/标签 max_tokens 500→1000,修复推理模型思考链占用导致输出截断 |
|
||
| 预览滚动条修复 | 2026-05-19 | 改用 height:68vh 替代 flex+calc,避免 Element Plus 对话框内滚动冲突 |
|
||
| 定时任务 DB 化 | 2026-05-22 | TaskLog 新增 module_id/error_trace/triggered_by/result_data;TaskConfig 模型新建含 params/schedule/enabled;scheduler.py 全 7 个任务执行前后写 TaskRun;modules/status 从 DB 读取 |
|
||
| 平台配置弹窗修复 | 2026-05-22 | el-dialog 移入 tab 内部(与表格同级)解决响应式问题;表单字段补全 |
|
||
| AI 思考内容清洗 | 2026-05-22 | 新建 content_cleaner.py 集中管理清洗规则;writer.py/compliance_optimizer.py 统一引用;THINKING_PATTERNS 增强;strip_ai_preface 处理代码围栏块 |
|
||
| 复制正文去噪音 | 2026-05-22 | copyContent 只提取 p/h1-h4/li 元素,去 style/svg/script/img |
|
||
| platforms.html 入口合并 | 2026-05-22 | uni-nav 移除"平台"独立入口;admin.html 恢复"平台配置"tab 加启用中/全部筛选 |
|
||
| opencode_search.py 日志 | 2026-05-22 | 补 FileHandler + StreamHandler,解决管理后台显示"从未运行" |
|
||
| scheduler.json 导入修复 | 2026-05-22 | 补 import json,修复 sources(05:00) 执行时报错阻断 metrics(06:00) |
|
||
| Scheduler 日志修复(僵尸行) | 2026-05-28 | _log_task 始终 INSERT 新行,所有 _run_* 保存 log_id 后 UPDATE 同一行,消除重复 running 状态 |
|
||
| Systemd 服务化 | 2026-05-28 | yzr-platform.service(Restart=always,崩溃自动恢复);单 worker(--workers 1)防调度器冲突;Type=exec + KillMode=control-group 防僵尸进程 |
|
||
| LLM 提供商量换 + 任务级模型选择 | 2026-05-28 | opencode-go 换 nvidia qwen3.5-397b-a17b(默认)+ sensenova deepseek-v4-flash(合规审查);llm_configs 加 is_default;所有 _run_* 方法开头调用 _set_task_llm_provider 设置 LLM_TASK_PROVIDER |
|
||
| 合规审查修复 | 2026-05-28 | compliance_optimizer.py 移除硬编码 provider;补 import os(之前导致 NameError);关键词过滤从宽泛改为精准,避免误拦正常内容 |
|
||
| 搜索提供商重构 | 2026-05-28 | 移除 opencode MCP(配额耗尽),新增 360/搜狗/微信搜索(免 Key),百度千帆日限 50→200 |
|
||
| opencode 冗余代码清理 | 2026-06-02 | 删除 opencode_search.py / mcp_search_server.py / _call_mcp / 前后端所有 opencode/MCP 引用;禁用搜索缓存定时任务 |
|
||
| 任务抽屉产出记录优化 | 2026-06-03 | drawer 产出结果 tab 优先显示日志消息(last_message),过滤 None/空值;修复 tasks.py 因 opencode 清理导致的 SyntaxError;清理 DB 中旧搜索缓存的 56 条 TaskLog + 1 条 TaskConfig |
|
||
|
||
### ⏳ 待办
|
||
|
||
| 任务 | 优先级 | 备注 |
|
||
|------|--------|------|
|
||
| admin.html 任务管理 tab(TaskConfig 参数编辑+TaskLog 历史时间轴) | 高 | 刚完成后端 DB 化,需完善前端 UI |
|
||
| M4 第 4 篇文章发布 (首月目标) | 中 | 可用银发科技或 F01 补齐 |
|
||
| 现有文章重新创作(清除 AI 思考内容) | 中 | writer.py 已修复,新文章不会再有;旧文章需重跑 creator.py |
|
||
| 数据追踪接入 (阅读量/互动) | 中 | 需要对接平台 API |
|
||
| 归档 IMPLEMENTATION_PLAN.md | 低 | 内容已过时,与实际架构不符 |
|
||
|
||
---
|
||
|
||
## 六、归档日志
|
||
|
||
> 过时文档统一移入 `archive/`,防止误导。
|
||
|
||
| 日期 | 路径 | 原因 |
|
||
|------|------|------|
|
||
| 2026-05-12 | `tasks/todo.md` → `archive/tasks/todo.md.2026-04-10` | 内容停滞于 2026-04-10,信息过时 |
|
||
| 2026-05-12 | `content/ideas/001-compliance.md` → `archive/content/ideas/` | 001 已发布,合规报告无须保留在活跃目录 |
|
||
| 2026-05-12 | `content/ideas/001-research.md` → `archive/content/ideas/` | 001 已发布,研究笔记无须保留在活跃目录 |
|
||
| 2026-05-12 | `content/publishing/001-images.md` → `archive/content/` | 配图已生成,规划稿无须保留在活跃目录 |
|
||
|
||
---
|
||
|
||
## 七、规范说明
|
||
|
||
### 规划文档
|
||
|
||
| 文档 | 位置 | 说明 |
|
||
|------|------|------|
|
||
| 升级计划 | `docs/upgrade-plan.md` | 分 4 阶段的技术升级路线图 |
|
||
|
||
### 文档管理原则
|
||
|
||
1. **单一真理源**:PROGRESS.md 为唯一进度文档,进度信息不出现于第二个文档中。
|
||
2. **及时归档**:阶段完成后,对应过程文档移入 `archive/`(含日期后缀),避免误导。
|
||
3. **一致性**:README.md 仅引用 PROGRESS.md 摘要,不独立维护进度状态。
|
||
4. **可追溯**:archive 保留完整历史,按 `YYYY-MM-DD` 子目录组织。
|
||
5. **及时更新**:每次新工作结束(或次日开始前)更新 PROGRESS.md,确保最后更新日期与实际同步。
|
||
|
||
### 工作流程
|
||
|
||
```
|
||
梳理需求/任务 → 读取 PROGRESS.md 了解当前状态
|
||
↓
|
||
按 PROGRESS.md 执行开发
|
||
↓
|
||
阶段任务完成 → 更新 PROGRESS.md + 归档冗余文档
|
||
↓
|
||
如需 → 同步 README.md 摘要
|
||
```
|