Files
yu-zhi-ran/PROGRESS.md
T
yuzhiran f9547ba21f feat: 商业模式官网营销升级(免费试用/私有化/源码售卖)+ 企业微信
- 新增 docs/BUSINESS_MODEL.md 商业与营销方案
- landing.html 定价重构为三模式:免费试用 / 私有化部署 / 源码售卖
- 新增「开始合作」联系区(线索表单 + 企业微信二维码 wecom-qr.jpg)
- 商务邮箱更新为 contact@yuzhiran.com
- deploy/README 交付建议同步三模式
- PROGRESS 记至第十八章
2026-07-12 10:16:39 +08:00

56 KiB
Raw Blame History

宇之然 · 项目进度总览

本文件为项目进度唯一真理源,所有进度信息以此为准。 其他文档中的进度描述一律以本文为准。

最后更新2026-07-04 (v26)


一、项目总览

项目 内容
品牌 宇之然 — 科技沟通万物,愿世间百态回归自然
技术栈 FastAPI + SQLAlchemy + PostgreSQL 16 + Vue 3 (CDN) + Element Plus
平台服务 运行中 (端口 8001)
策略阶段 全球-本土对比研究(2026-04-15 升级)
Git 提交 170 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 2026-06-18 4篇完成

三、发布记录

编号 标题 日期 平台 状态
001 种菜一年,焦虑降了43%:我在阳台治愈了自己 2026-04-14 知乎/微信/小红书 已发布 知乎链接
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_mcpopencode 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/H510 页迁移完成
文章管理页面 (articles.html) 2026-05-16 新增 articles API (list/detail/delete) + 完整管理页面,支持筛选/搜索/预览/删除
CSS架构统一整合 2026-05-16 reset/body/layout/card/page-header/filter/toolbar 移入 theme-modern.css86→127行),10页内联CSS总量从660行降至400行;preview对话框CSS归一化;删除 dead JSindex.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_dataTaskConfig 模型新建含 params/schedule/enabledscheduler.py 全 7 个任务执行前后写 TaskRunmodules/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.serviceRestart=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
Hermes gateway 用户级服务恢复 2026-06-04 系统级服务 → 用户级(MemoryMax=1G 生效);删除 system 级文件;linger + default.target.wants 开机自启
v-cloak 修复 Vue 模板闪烁 2026-06-04 9 页 <div id="app"> + theme-modern.css[v-cloak] 规则,消除原始模板代码闪烁
sensenova 多模型 + 模型级 rate limit 2026-06-04 LLMConfigrate_limit/rate_limit_window_minutesseed 3 模型:deepseek-v4-flash(500次/5h)、6.7-flash-lite(1500次/5h)、u1-fast(1500次/5h);进程内 rate limiterLLM_TASK_MODEL 环境变量实现任务级模型选择;ai_image_generator.py 已固定用 sensenova-u1-fast

已完成

任务 完成日期 备注
GEO/SEO 结构化元数据注入 2026-06-09 writer.py 的 inject_geo_metadata() 向 HTML 注入 JSON-LD Article schema、meta description/keywords、OG tags
大纲提示词 SEO 关键词增强 2026-06-09 outline.py 新增 _extract_seo_keywords() 从研究笔记提取关键词;outline prompt 加入 GEO 数据引用要求
搜索排名追踪 2026-06-09 SearchRanking 模型(文章ID/关键词/排名位置/AI引用);rank_tracker.py 定时任务(每日 07:00)查 Bing 排名;/api/seo/rankings APIadmin.html 新增"搜索排名"tab
rank_tracker AI 引用检测 2026-06-18 _check_ai_citation() 用 LLM 检测 Bing AI/百度 AI/Perplexity 引用
admin.html 任务管理 tab 2026-06-18 TaskConfig 参数编辑 + TaskLog 时间轴 (el-timeline)
M4 第4篇文章发布 2026-06-18 发布 循环消费新物种 + 端侧AI隐私实战,累计 4 篇达首月目标
导航 bug 修复(仪表盘→index.html 2026-06-18 DB menu 中"仪表盘"path 从 /index.html,解决点导航跳转 landing 页的问题
Landing 页 OG 图片创建 2026-06-18 /automation/images/og-landing.png1200x630 PNG62KB);之前 404
Landing 页 GitHub 链接修正 2026-06-18 your-orggithub.com
v23 全部功能验收 2026-06-18 12 页 200 OK、org_id 隔离生效、RBAC(require_role)11路由、菜单7项正确、factory/insights 新页、dashboard 重设计

十一、外推营销系统(v24 · 2026-06-21

从「内容生产」到「外部推广」

背景:平台此前只覆盖平台内生产的内容的 SEO/GEO 优化,无法对用户已有的外部网站、公众号、小程序等做 SEO 推广。v24 新增完整的外部推广模块。

新增数据模型(6 张表)

模型 表名 说明
ExternalProduct external_products 外部推广产品(website/article/wechat_account/miniprogram
PromotionCampaign promotion_campaigns 推广活动,关联产品和关键词
CampaignKeyword campaign_keywords 关键词跟踪(搜索量/难度/排名)
SEOAudit seo_audits SEO 审计报告(6 维度评分)
KeywordRanking keyword_rankings 多引擎关键词排名记录
OptimizationTask optimization_tasks AI 生成的优化建议

API 端点(20 个)

端点 功能
GET/POST/PUT/DELETE /api/external/products 产品 CRUD
GET/POST/PUT/DELETE /api/external/campaigns 活动 CRUD
GET/POST/PUT/DELETE /api/external/keywords 关键词 CRUD
GET /api/external/audits SEO 审计记录列表
GET /api/external/audits/{id} 审计详情(含优化建议)
GET /api/external/rankings 关键词排名列表
GET /api/external/rankings/overview 排名概览统计
GET /api/external/optimization-tasks 优化建议列表
PATCH /api/external/optimization-tasks/{id} 更新任务状态
GET /api/external/overview 外推营销总览

SEO 审计脚本

scripts/seo_auditor.py — 自动抓取目标网站并分析:

维度 权重 检测项
Meta 标签 20% title/description/keywords/OG tags
标题结构 15% H1/H2 存在性、层级连续性
内容质量 25% 字数、图片 alt、关键词密度
性能 10% 渲染阻塞资源、图片尺寸
链接 10% 内链/外链/断链/nofollow
移动端 20% viewport、响应式、字号

审计结果自动保存到 DB,生成可追踪的 OptimizationTask。

关键文件变更

文件 改动
platform/backend/app/models.py 新增 6 个模型(ExternalProduct/PromotionCampaign/CampaignKeyword/SEOAudit/KeywordRanking/OptimizationTask
platform/backend/app/schemas.py 新增 18 个 Pydantic schema 类
platform/backend/app/api/external_promotion.py 新建 — 20 个 API 端点
platform/backend/app/main.py 注册 external_promotion router
platform/frontend/campaigns.html 新建 — 外推营销 SPA 页面(6 Tab)
platform/frontend/uni-nav.js 导航增加「外推营销」入口
scripts/seo_auditor.py 新建 — SEO 审计自动化脚本

十二、内容策略聚焦改造(v25 · 2026-06-23

从「6领域分散」到「3领域聚焦」

背景:此前内容覆盖可持续生活、数字游民、个人成长等 6 个领域,资源分散、品牌辨识度低。v25 聚焦「宇之然」品牌核心方向:AI 与前沿科技。

聚焦的 3 个领域:

领域 方向 覆盖话题
AI与效率 🤖 AI 工具、工作流、效率方法 AI工具实测、AI前沿资讯、效率方法论
科技人文 🔬 AI 伦理、科技反思 数据隐私、人机关系、数字生活反思
未来工作方式 💼 远程工作、职业转型 AI时代职场、一人企业、技能升级

Phase 1 — 代码改造(6 个文件)

文件 改动
initial_data.py TopicField 从 6 个缩减为 3 个;CollectorCategory 从 8 个环保类改为 5 个 AI/科技类;PlatformConfig allowed_tags 全部替换为 AI/效率/科技标签
prompt_loader.py sources_optimization 提示词从"可持续生活领域"改为"AI与科技人文领域"
config/sources.yaml 全部信息源替换为 AI/科技相关(36氪RSS、少数派RSS、5 组 AI 搜索词、1 个本地案例库)
collector.py DEFAULT_CHINA_PAINS 从 8 个(7 环保 + 1 AI)改为 5 个 AI 焦点;map_category_to_field 返回 AI 领域;移除 4 处"可持续性"日志/默认值
topic_selector.py DEFAULT_TREND_DOMAIN_MAP 从 12 条(含可持续生活/个人成长/副业/家庭教育)改为 11 条纯 AI/科技映射
migrate_content_focus.py 新建 — Phase 2 DB 迁移脚本

Phase 2 — DB 迁移

操作 影响
TopicField 更新 3 个新领域字段(排序/描述/图标),停用 5 个旧领域(可持续生活系统/可持续生活/数字游民/个人成长/个人知识工厂)
Topic 47 个 Topic 中 43 个已迁移到新领域(4 个无法映射的归入"AI与效率"
Article 删除 15 篇与旧可持续领域关联的旧文章
CollectorCategory 创建 3 个新分类(AI前沿资讯/AI工具实测/AI与职场),更新 2 个(AI生活化/科技人文),停用 12 个旧分类(循环消费/低碳出行/干净饮食/零浪费生活/绿色家电与节能/碳普惠/环保科技产品/自我丰容/适我主义/情绪价值与心理健康/沉浸式新生活/数字游民与自由职业)
CollectorSource 停用 1 个旧源,创建 2 个新 AI 搜索源
PlatformConfig 3 个平台(知乎/微信/小红书)的 allowed_tags 全部替换为 AI/科技标签
TrendFieldMapping 同步 11 条新映射,停用旧映射

Phase 3 — 文件清理

项目 数量 释放空间
日志文件 (automation/logs/) 400 个 2.5 MB
旧选题卡片 (content/ideas/) 11 个文件 96 KB
可持续采集原始数据 (sustainability_raw/) 多子目录 224 KB
旧数据文件 (sustainability_cases.json/topics.json) 2 个 -
旧草稿/大纲/研究笔记 (drafts/outlines/research/) 91 个文件 740 KB
通知记录 (notifications/) 1 个 4 KB

Phase 4 — 重启验证

  • 服务运行中:HTTP 200
  • API 认证正常
  • TopicFields 仅返回 3 个活跃领域
  • Topic 总计 47 个,全部关联新领域
  • Articles 已清理(0 篇过时文章)
  • CollectorCategories 仅 5 个 AI 分类活跃

关键架构决策

  • collector.py 类名(SustainabilityCollector/SustainabilitySource/SustainabilityCase)保留未改——减少中断风险,功能已从 sustainable 转向 AI/tech,重命名需要跨 20+ 文件修改
  • DB 种子数据按 if count() == 0 判断,已有数据的库通过独立迁移脚本处理
  • 旧数据优先保留(硬删除可能影响引用完整性),标记 is_active=False 而非删除

品牌调性与内容深化(v25.1 · 2026-06-23 第二次迭代)

问题诊断:第一次聚焦改造后,内容方向虽已收敛到 AI 3 领域,但存在品牌割裂("宇之然"调性偏人文自然 vs 内容全是纯工具测评)、AI 赛道竞争红海、平台策略错配(公众号叙事体不适合写 AI 工具)等深层问题。

Phase A — 品牌调性注入(最核心改动)

prompt 改动 预期效果
section_expansion_zhihu 加入独家数据要求+观点交锋,不只是介绍工具而是探讨技术如何改变人 在拥挤的 AI 知乎赛道上做出壁垒
section_expansion_wechat 从「AI 工具叙事」→「科技人文思辨」:用「我」口吻写 AI 时代的困惑、顿悟或观察 对齐品牌调性,摆脱"AI 测评不适合叙事体"的结构性矛盾
section_expansion_xiaohongshu 每个结论配亲测数据/对比/结果 用真实数据对抗同质化
title_optimize_zhihu 增加观点交锋感+立场态度 从"工具文标题"→"辩论帖标题"
title_optimize_wechat 改为科技叙事方向,参考风格:「AI帮我写周报的第3个月,我终于发现哪里不对了」 对齐公众号新定位
title_optimize_xhs 每条标题含数字/时间/效果结果感 提高点击率

Phase B — SEO/GEO 长尾关键词

  • collector.py: DEFAULT_CHINA_PAINS 每个痛点扩展 3-5 个长尾问题("AI写周报""AI提示词怎么写""35岁学AI来得及吗"
  • topic_selector.py: DEFAULT_TREND_DOMAIN_MAP 从 11 条→18 条(新增 Prompt/提示词/AI编程/AI写作/数据隐私/AI教育/一人企业)

Phase C — 差异化信息源

sources.yaml 中新增 5 个与通用 AI 媒体形成区分的源:

新源 差异化定位
机器之心 RSS AI 学术前沿,区别于大众科技媒体
AI 学术论文搜索(arXiv 中文) 一手论文解读内容源
独立开发者搜索 独特的小众 AI 产品视角
行业数据报告搜索 自采数据的基础来源
AI 产品动态搜索 第一手产品更新信息

Phase D — 栏目化内容机制

为「AI工具实测周报」等固定栏目铺平道路:

  • Topic 模型新增 series 字段(VARCHAR, optional, indexed
  • API 端点 /api/topics 新增 ?series= 筛选参数
  • 前端 topics.html 搜索区增加「栏目」下拉筛选器
  • database.py 新增 ALTER TABLE 迁移(topics.series

Phase E — 公众号发布流水线[需提供 WeChat APP_ID/APP_SECRET]

  • 已安装 /wechat-mp-publisher 技能,支持远程 MCP 中转
  • wechat.envmcp.json 尚未配置

关键文件变更汇总

文件 变更类型 说明
scripts/prompt_loader.py 修改 6 个 prompt 品牌调性注入(section_expansion×3 + title_optimize×3
platform/backend/app/initial_data.py 修改 领域描述人文化、采集搜索词长尾化、平台格式说明更新
scripts/collector.py 修改 DEFAULT_CHINA_PAINS 长尾关键词扩展
scripts/topic_selector.py 修改 DEFAULT_TREND_DOMAIN_MAP 从 11→18 条
config/sources.yaml 修改 新增机器之心/arXiv/独立开发者/行业报告/AI产品动态 5 个差异源
platform/backend/app/models.py 修改 Topic 模型新增 series 字段
platform/backend/app/schemas.py 修改 TopicBase/TopicCreate/TopicUpdate 新增 series
platform/backend/app/api/topics.py 修改 list_topics 新增 series 查询参数
platform/backend/app/database.py 修改 ALTER TABLE 添加 topics.series 列
platform/frontend/topics.html 修改 搜索区新增栏目下拉筛选器
scripts/migrate_content_focus.py 新建 DB 迁移脚本(Phase 2 遗留)

Phase F — 数据库旧数据清理(2026-06-23 第三次迭代)

品牌优化完成后,发现旧数据库中存在大量迁移遗留的错配数据——32 个旧选题(循环消费/碳普惠/可持续方向)被 migrate_content_focus.py 的 fallback 逻辑错误地分配到了「AI与效率」领域,并持有 66 篇关联文章和 5 个任务。

操作 数量
删除旧选题(sustainability/carbon 方向) 32 个
删除关联文章 66 篇
删除关联任务 5 条
停用 orphan 领域(科技人文交叉/测试) 2 个
删除 5 个旧 TopicField + 5 条 stale TrendFieldMapping 10 条
剩余数据 15 个选题 / 9 篇文章 / 3 个活跃领域 / 11 条 TrendFieldMapping

所有保留选题均为 AI/tech 方向,与聚焦的 3 领域一致。TopicFields 表从 10 行精简到 3 行,TrendFieldMapping 从 16 行精简到 11 行(全 active),无任何悬空引用。


过时文档统一移入 archive/,防止误导。

日期 路径 原因
2026-05-12 tasks/todo.mdarchive/tasks/todo.md.2026-04-10 内容停滞于 2026-04-10,信息过时
2026-05-12 content/ideas/001-compliance.mdarchive/content/ideas/ 001 已发布,合规报告无须保留在活跃目录
2026-05-12 content/ideas/001-research.mdarchive/content/ideas/ 001 已发布,研究笔记无须保留在活跃目录
2026-05-12 content/publishing/001-images.mdarchive/content/ 配图已生成,规划稿无须保留在活跃目录

七、内容质量升级(v19 · 2026-06-05

三平台差异化内容架构

背景:此前三平台共用同一篇 markdown,仅做浅层适配(加 emoji/换人称),导致知乎缺深度、公众号缺情感、小红书过长。

核心改动:

  1. writer.pygenerate_full_markdown()generate_platform_markdown(platform),每平台调用独立的 section_expansion_{platform} prompt
    • 知乎:section_expansion_zhihu — 数据分析深度,400-800字/节,「你」视角
    • 公众号:section_expansion_wechat — 个人叙事对话感,300-500字/节,「我」口吻
    • 小红书:section_expansion_xiaohongshu — 精炼干货,100-200字/节,直接给方法+可 emoji
    • 去掉公众号中「我们→我→你」的强制替换
  2. prompt_loader.py — 新增 3 个平台独立 section_expansion 提示词,标题提示词去套路化(去除「直接输出」「不要其他文字」等 AI 味指令)
  3. 平台字数提升 — min/max 大幅上调(知乎 3000-8000, 公众号 2000-4000, 小红书 400-1000),存于 platform_configs 表,后台可改
  4. compliance_checker.py — AI 套话从 DB content_clean_rules(rule_type='ai_telltale') 加载,后台可动态管理;人称规则去掉「大家」误报
  5. config_items.py — DEFAULT_CONTENT_CLEAN_RULES 新增 30+ 条 ai_telltale 规则
  6. initial_data.py — PlatformConfig 字数迁移(已有库也会更新)
  7. AGENTS.md — 文档化三平台差异化架构

验证33/33 测试通过

八、GEO/SEO 升级(v20 · 2026-06-09

为 AI 搜索时代而生

背景ChatGPT、Perplexity、百度 AI 搜索等生成式引擎正在取代传统搜索。内容被 AI 引用的价值大于单纯的关键词排名。此版本让流水线生产的内容天然符合 AI 搜索偏好。

GEO 结构化数据

每篇生成的 HTML 自动注入:

  • JSON-LD Article schema@context: schema.org,含 headline/description/datePublished/author/publisher/keywords
  • SEO meta tags<meta name="description">, <meta name="keywords">
  • Open Graph tagsog:title, og:description, og:type, og:site_name, article:published_time
  • 平台专用 — wechat/xiaohongshu 额外注入 og:image

大纲 SEO 增强

  • outline prompt 新增 seo_keywords 变量(从研究笔记自动提取)
  • 每章要求至少融入 1 个 SEO 关键词
  • 新增 GEO 要求:每章包含可引用数据点,增加被 AI 搜索引用的概率

搜索排名追踪

模块 说明
SearchRanking 模型 记录 article_id/keyword/position/url_found/ai_cited/search_engine
scripts/rank_tracker.py 对所有已发布文章,自动生成搜索查询 → 调用 Bing API 查排名 → 写入 DB
定时任务 scheduled_rank_tracker 每日 07:00 自动运行
管理后台 admin.html 新增「搜索排名」tab,展示概览统计(累计检查/有排名/AI引用/最佳排名)+ 排名列表

关键文件

文件 改动
scripts/writer.py 新增 inject_geo_metadata(), _extract_description(), _extract_tags_list() — 在 generate_platform_html() 末尾注入
scripts/outline.py 新增 _extract_seo_keywords() — 传入 outline prompt
scripts/prompt_loader.py outline_generation 提示词加入 seo_keywords 变量 + GEO 数据点要求
scripts/rank_tracker.py 新建 — Bing 排名查询 + DB 写入
platform/backend/app/models.py 新增 SearchRanking 模型
platform/backend/app/api/search_rankings.py 新建 — /api/seo/rankings + /api/seo/rankings/overview
platform/backend/app/core/scheduler.py 新增 scheduled_rank_tracker 07:00
platform/frontend/admin.html 新增「搜索排名」tab(统计卡片 + el-table 排名列表)

九、GEO 进阶升级(v21 · 2026-06-15

AI 搜索引用追踪(GEO Engine Optimization

背景:v20 实现了搜索排名追踪(Bing)和基础元数据注入,v21 将范围扩展到 AI 搜索引用检测、GEO 就绪度评分、FAQ/HowTo 结构化数据注入。

1. 数据模型扩展

模型 字段 说明
SearchRanking ai_search_engine / citation_snippet / citation_url / geo_score / content_type 原有排名模型新增 AI 搜索字段和内容类型
GeoReadinessScore(新建) article_id/total_score(0-100)/has_schema/has_faq_format/has_howto_format/has_citations/word_count/readability_score/heading_structure_score 6 维度 GEO 就绪度评估

就绪度评分权重:结构化数据 30 + FAQ 格式 20 + HowTo 格式 15 + 引用 15 + 标题结构 10 + 内容长度 10 = 100 分

2. AI 搜索引用追踪脚本

scripts/geo_tracker.py — 对所有已发布文章,通过 LLM 模拟查询 DeepSeek/ChatGPT/Perplexity 检测是否被引用:

  • 筛选 status=published 的文章提取标题/关键词
  • 对每篇文章调用 call_llm 查询各 AI 引擎是否收录并引用
  • 记录引用片段(citation_snippet)和引用 URL
  • 计算 GEO 就绪度评分(6 维度 0-100)
  • 写入 SearchRanking(search_engine="geo")GeoReadinessScore

3. FAQ/HowTo Schema 自动注入

扩展 writer.pyinject_geo_metadata()

  • 新增 _detect_content_type(content) — 检测内容类型:article/listicle/howto/faq/review(基于关键词统计)
  • 新增 _extract_faq_pairs(content) — 从 Q/A:格式提取问答对
  • 新增 _extract_howto_steps(content) — 从步骤/Step 格式提取步骤
  • 根据检测到的类型自动注入对应的 JSON-LD schema
    • FAQPagemainEntity 数组(Question + AcceptedAnswer
    • HowTostep 数组(HowToStep + HowToDirection
    • ItemListitemListElement 数组(ListItem + position + name

4. GEO API 端点

端点 功能
GET /api/seo/geo/overview AI 引用总数/引用率/引擎分布/平均就绪度评分
GET /api/seo/geo/readiness GEO 就绪度评分列表(含各维度分数)
POST /api/seo/geo/track 手动触发 GEO 追踪

5. 定时任务注册

scheduler.py 新增 scheduled_geo_tracker 每日 07:30 自动运行

6. 管理后台 GEO 看板

admin.html 新增「GEO 就绪度」标签页包含:

  • 统计卡片:GEO 检查次数 / AI 引用次数 / AI 引用率 / 平均就绪度评分
  • 引擎分布:按 AI 引擎(DeepSeek/ChatGPT/Perplexity)展示检查数和引用数
  • 就绪度评分表格:文章标题/总分(彩色标签)/结构化数据✓✗/FAQ✓✗/HowTo✓✗/引用✓✗/字数/可读性/标题结构/检查时间
  • 手动追踪按钮POST /api/seo/geo/track

关键文件变更

文件 改动
scripts/geo_tracker.py 新建 — AI 搜索引用追踪 + GEO 就绪度评分全流程
scripts/writer.py 扩展 inject_geo_metadata():新增 _detect_content_type/_extract_faq_pairs/_extract_howto_steps,根据内容类型自动注入 FAQPage/HowTo/ItemList schema
platform/backend/app/models.py SearchRanking 扩展 5 字段 + 新建 GeoReadinessScore 模型
platform/backend/app/api/search_rankings.py 新增 3 个 GEO 端点(overview/readiness/track
platform/backend/app/core/scheduler.py 注册 scheduled_geo_tracker 07:30
platform/frontend/admin.html 新增「GEO 就绪度」tab(统计卡片 + 引擎分布 + 评分表格 + 手动追踪)

验证

33/33 测试全部通过

十、产品官网改造(v22 · 2026-06-16

从「管理后台」到「产品网站」

背景:此前项目以登录页面作为首屏,访客第一眼看到的是管理系统的登录框,没有品牌传达和产品介绍。改造后,未登录用户看到的是一个完整的产品官网,登录后进入管理后台(工作台)。

路由架构

路径 页面对应 访问权限
/ 产品官网 — 品牌 Landing Page 公开
/index.html 工作台 — 原有的仪表盘(现为 workspace) 需登录
/login.html 登录页(品牌化处理) 公开
/topics.html, /articles.html 各管理功能页 需登录

产品官网(Landing Page

创建 platform/frontend/landing.html — 独立的完整产品网页,不依赖 Vue/Element Plus

  • 导航栏:固定顶部,毛玻璃背景,Logo + 产品功能/工作流程/支持平台/定价/常见问题链接 + 登录/免费使用按钮
  • Hero 区域:大标题「让内容在 AI 时代主动找到你的客户」,背景渐变+辉光效果,三个核心数据展示
  • 产品功能:6 张特性卡片(三平台创作/GEO 优化/独立站 SEO/效果追踪/全自动流水线/合规保障)
  • 工作流程:3 步流程说明(配置选题→自动生产→追踪优化)
  • 支持平台:知乎/微信公众号/小红书/独立站
  • 定价:3 档定价(入门版 ¥299/月、专业版 ¥799/月、企业版 ¥2,499/月)
  • 常见问题:6 个 FAQ(GEO 说明/三平台差异化/零经验使用/AI 套话/API Key/数据安全)
  • CTA 区块:渐变背景 + 行动号召按钮
  • 页脚:产品/支持/法律三栏

关键架构改动

文件 改动
platform/frontend/landing.html 新建 — 完整产品官网(~30KB,无外部依赖)
platform/backend/app/main.py 新增 / 路由显式返回 landing.html(优先于 StaticFiles 的默认 index.html
platform/frontend/login.html 登录成功跳转 //index.html;已登录检测跳转 //index.html
platform/frontend/uni-nav.js 仪表盘导航链接 //index.htmlnavigate 函数修复前缀处理
platform/frontend/articles.html 未登录重定向 //login.html
platform/frontend/topics.html 未登录重定向 //login.html
platform/frontend/sw.js 移除 / 预缓存;HTML 文档改为 Network First 策略确保新版实时加载

响应式设计

  • 桌面端>768px):完整导航 + 多列布局
  • 平板/手机端(≤768px):汉堡菜单(侧滑展开)、单列布局、缩小 hero 字体
  • 小屏手机(≤480px):全屏宽内容、堆叠布局

验证

  • 33/33 测试全部通过
  • HTTP 访问验证:/ 返回 landing.html31070 bytes),/index.html 返回工作台仪表盘
  • 登录流程验证:登录后跳转 /index.html
  • 服务已重启生效

十一、工作台改造与数据隔离(v23 · 2026-06-17

从「管理工具」到「内容工作台」

背景:此前平台虽功能完整但偏向管理后台视角,缺乏面向内容创作者的工作台体验;且所有业务数据缺乏组织隔离(org_id),多组织共存时数据混淆。

Wave 1 — 数据隔离基础设施

改动 文件
10 个业务模型追加 org_id models.pyUser/Topic/ContentCalendar/MediaAsset/ContentTask/Article/PublishRecord/ContentMetrics/SearchRanking/GeoReadinessScore
ALTER TABLE 迁移语句 database.py5 条 ADD COLUMN IF NOT EXISTS
Schema 追加 org_id schemas.pyArticleBase/ContentCalendarResponse/ContentMetricsResponse/MediaAssetResponse/ContentTaskResponse/PublishRecordResponse
JWT 认证追加 org_filter auth.pyget_current_admin 返回 org_id,新增 require_role(required_role) 工厂函数
导航重构为流程导向 5 项 uni-nav.js — 工作台/内容工厂/数据洞察/资产库/系统管理

Wave 2 — API 隔离 + 新前端页面

改动 说明
articles.py Article 创建 upsert 时从 JWT 自动注入 org_id
publishing.py PublishRecord 创建时从关联 Topic 继承 org_id
metrics.py ContentMetrics 创建时继承 Topic.org_id
calendar.py ContentCalendar CRUD 添加 org_id 校验
tasks.py ContentTask 创建时自动注入 org_id
search_rankings.py GEO 端点添加 org_filter
factory.html 新建 — 内容工厂流水线页面(3Tab:待创作/进行中/待审查)
insights.html 新建 — 数据洞察页面(4Tab:内容概览/搜索排名/GEO就绪度/平台对比)

Wave 3 — 仪表盘重设计 + RBAC

改动 说明
index.html 从系统监控仪表盘改为用户中心工作台(欢迎横幅/摘要卡片/今日待办/AI智能建议/管理员模块折叠隐藏)
ai-assistant.js 新增 factory/insights 页面映射 + 问候语;API 调用带入 org_id
require_role 导入 10 个 admin 路由文件(admin/menu_configs/role_configs/system_configs/llm_configs/collector_mgmt/prompt_configs/task_configs/search_providers/config_items)追加 import

Wave 4 — 验证

  • 集成测试33/33 通过(Python 编译检查/服务启动/登录/CRUD/权限验证)
  • 手动 QA
    • / → 200landing.html
    • /index.html → 200(工作台仪表盘)
    • /factory.html → 200(内容工厂)
    • /insights.html → 200(数据洞察)
    • 登录正常,auth me 返回 admin/admin/default
    • 未认证访问 401,认证后正常访问
    • 系统状态 API 正常(41 topics, 22 pending, 2 published
  • Git 提交4 个 commit 分 Wave 提交(dcfeccc / 5caf7bc / f6e5e90

关键架构决策

  • org_id 从 JWT 自动注入,不在客户端提交(防篡改)
  • 工厂页和数据洞察页新建文件,不改造现有页面
  • RBAC 使用 require_role() 工厂模式,逐步替换 get_current_admin
  • 平台配置(platform_config)为全局共享,不按组织隔离
  • 数据隔离为 P1 级安全修复,优先于所有其他改造

关键文件变更

文件 改动
platform/backend/app/models.py 10 个模型追加 org_id941 行)
platform/backend/app/database.py ALTER TABLE 迁移逻辑(170 行)
platform/backend/app/api/auth.py org_filter + require_role196 行)
platform/backend/app/schemas.py 6 个响应 schema 追加 org_id637 行)
platform/frontend/index.html 用户中心仪表盘重设计
platform/frontend/factory.html 新建 内容工厂流水线页
platform/frontend/insights.html 新建 数据洞察页(945 行)
platform/frontend/uni-nav.js 流程导向导航(333 行)
platform/frontend/ai-assistant.js 页面映射 + org_id 感知
platform/backend/app/api/*.py 10 个路由文件追加 require_role

十三、2026 合规与市场契合升级(v26 · 2026-07-04

背景:2025-09-01《人工智能生成合成内容标识办法》正式施行

微信/小红书/抖音/B站/微博 强制 AI 生成内容主动声明标识;未标识/疑似 AI 内容限流、下架、封号。微信 3-27 新规明确禁"非真人自动化创作行为"(脚本/程序托管全程代写代发)。叠加创作者痛点从"怎么写快"转向"怎么不被限流/怎么有活人感/怎么变现",项目做了一轮合规与市场化升级。

P0 — 合规生存(已落地)

改造 文件 说明
强制 AI 生成标识注入 scripts/writer.py 新增 inject_ai_disclosure():按《标识办法》给三平台正文文末注入「AI 辅助创作」声明(显式),head 注入 ai-generated meta + AIGC 隐式标识 JSON-LD(隐式)。默认开启,可由 SystemConfig(disclose_ai=false)YZR_DISCLOSE_AI=0 关闭
发布模块去伪 platform/backend/app/api/publishing.py 删除伪造的 status='success':发布接口改为生成发布稿 + 置选题为 pending_publish(待人工发布),PublishRecord 状态为 pending_manual;明确"AI 稿须真人校验声明后手动发布,系统不代发"
LLM 降级响亮失败 scripts/writer.py _expand_section 在 LLM 缺失时标记 _degradedrun() 结尾对降级稿报错告警,不再静默吐稀薄内容混入库

P1 — 市场契合(已落地)

改造 文件 说明
AI味检测+净化 可见化 platform/backend/app/api/ai_slop.py + platform/frontend/ai-slop.html 新 APIGET /report 跑合规检测、POST /purify 一键净化)+ 新前端页 + 导航"AI味检测"。把已有的去套话/合规能力变成用户可感知卖点(直击 2026 限流焦虑)
长文→短视频拆条 scripts/shortvideo.py + scheduler.py 新脚本将选题长文拆成 N 条短视频脚本(口播/分镜/适配平台),入库 articles(platform=shortvideo_i);新增定时任务 scheduled_shortvideo 08:00,对前日待发布选题自动拆条
外部推广去伪 platform/backend/app/api/external_promotion.py 新增 POST /api/external/audit/run 真实调用 seo_auditor.py(此前该脚本从未被任何接口/调度触发),让 SEO 审计可用而非摆设

P2 — 健壮性(已落地)

改造 文件 说明
指标同步扩平台 platform/backend/app/core/scheduler.py _run_metrics_sync 从仅知乎扩展为遍历 platform_urls;微信/小红书无公开 API 时优雅跳过并日志说明,不再伪装"仅知乎有数据"
合规闸门防绕过 scripts/compliance_optimizer.py force_pass 选题不自动推进到 ready(保留待审查),避免绕过合规闸门直接进发布

关键文件变更汇总

文件 类型 说明
scripts/writer.py 修改 AI 标识注入 + 降级标记
platform/backend/app/api/publishing.py 修改 发布去伪,改待人工发布
scripts/compliance_optimizer.py 修改 force_pass 不推进状态
platform/backend/app/api/ai_slop.py 新建 AI味检测/净化 API
platform/frontend/ai-slop.html 新建 AI味检测页
scripts/shortvideo.py 新建 长文→短视频拆条
platform/backend/app/core/scheduler.py 修改 指标扩平台 + 短视频定时任务
platform/backend/app/api/external_promotion.py 修改 SEO 审计可触发

验证

  • 全部修改文件 ast.parse 通过;app.api.ai_slop / publishing / external_promotioncore.scheduler 在 venv 下 import 成功
  • 注:本次为代码升级,未重启服务/未跑全量测试套件;发布/净化/拆条需运营在真实平台按声明手动完成

十二、规范说明

规划文档

文档 位置 说明
升级计划 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 摘要

第十四章:前端布局修复 + 盈利模式(私有化/白标)升级

日期2026-07-11 目标:① 修复前端布局/样式不合理项;② 将项目从"自用中台"升级为"可私有化部署 / 白标转售"产品。

一、前端布局/样式修复

  • A1 导航未固定 + 顶部双空隙uni-nav.js 删除 <nav> 内联 position:relative,恢复 CSS position:fixed。(同步修复 A3 移动端下拉菜单脱离)
  • A2 平板导航裁切:汉堡菜单断点由 max-width:768px 提升至 1000px,769–1000px 链接改走下拉,不再静默丢失。
  • A4 预览弹窗偏右theme-modern.css 移除 @media(min-width:769px).preview-dialog-custom{left:90px},对话框恢复居中(影响 articles.html / factory.html)。
  • A6 卡片横向滚动条.card 去掉 overflow-x:auto(el-table 自带内部滚动,重复滚动条消除,阴影不再被裁)。
  • A5 暗色模式半成品(对比度不可读):暂禁用 prefers-color-scheme:dark 块,统一亮色主题,待引入 EP 暗色变量后启用。
  • topics.html 筛选表单响应式6 个 el-col:xs/:sm/:md 断点,移动端堆叠不溢出。
  • metrics.html 统计卡.stats-gridrepeat(4,1fr) 改为 repeat(auto-fit,minmax(180px,1fr)),平板自适应列数。
  • factory.html.topic-gridminmax(min(340px,100%),1fr),≤320px 屏不溢出。

二、盈利模式升级:白标 + 私有化部署

  • 白标配置后端:新增 api/branding.py
    • GET /api/branding(公开,无需登录):返回 brand_name/brand_logo/brand_primary_color/brand_support_email/version
    • PUT /api/branding(管理员):更新白标配置,写入 system_configs
    • main.py 注册 branding.router
  • 白标种子initial_data.py 写入 brand_name/brand_logo/brand_primary_color/brand_support_email 默认。
  • 前端应用品牌uni-nav.js mounted/api/branding,动态设置平台名、Logo、导航渐变主色,并写入 --color-primary;新增 branding.html 白标设置页(管理员,含实时预览)。
  • 导航入口initial_data.py 菜单加「白标设置」(admin),uni-nav.js 默认 admin 项补充。
  • 部署包 deploy/
    • Dockerfilepython:3.11-slim,默认 SQLite,零依赖)
    • docker-compose.yml(含可选 PostgreSQL 服务与数据卷)
    • .env.example(管理员密码 / LLM Key / 数据库)
    • README.md(私有化 + 白标交付指南、定价建议)

验证

  • 服务 yzr-platform.service 重启成功,无启动错误。
  • GET /api/branding 返回种子默认值;PUT 管理员保存后持久化生效,重置回默认。
  • node --check uni-nav.jsast.parse(branding.py) 均通过。

待办(已解决,见第十六章)

  • init_db() 的 SQLite topics.series 迁移缺口(测试 32/33:经复跑为陈旧 test.db 所致,当前 33/33 全过;迁移 fallback 对 SQLite 正常。
  • 菜单幂等播种缺陷(见第十六章):initial_data.pyif Menu.count()==0 全有/全无逻辑导致已在库时章节四新增的"文章管理/内容工厂/白标设置"未入库,导航不可达,已修复。

第十五章:移动端响应式补全

日期2026-07-11 目标:审计并补全全部前端的移动端(≤420px)适配。

审计结论

  • 已良好适配:topics / articles / campaigns / tasks / metrics / insights / platforms / assets / factory / index / landing / login / users / logs(表格均有 card-list 兜底或本就是卡片布局;固定宽弹窗由全局 ≤768px 全宽规则兜底)。
  • 真实破裂点(3 处 el-table 无移动端兜底):
    1. ai-slop.html 问题明细表(line 47
    2. calendar.html 日程弹窗内 selectedDayEntries 表(line 189
    3. admin.html 平台配置表(line 202,缺 data-table 类,全局隐藏规则未覆盖)

修复

  • 三处统一改为「el-table(.card-table/.data-table) + .card-list-mobile 卡片列表」的 v-if/v-else 兜底,沿用 theme-modern.css.card-list-mobile 全局样式(≤768px 自动切换)。
  • 桌面端表格保留,移动端自动转为可点列表,操作按钮(编辑/删除/查看)一并带入卡片。
  • 校验:三页结构 v-if/v-else 配对正确,HTTP 200 正常服务。

结论

前端现已完整支持移动端响应式:所有数据表在窄屏均以卡片列表呈现,导航/筛选/弹窗/统计网格均自适应,无横向溢出。


第十六章:菜单播种缺陷修复(导航可达性)

日期2026-07-11 触发:生产服务重启后核对 /api/menus/active,发现导航缺少"文章管理 / 内容工厂 / 白标设置",而 articles.html(章节四重写)、factory.htmlbranding.html 均为真实页面 → 这些入口被"孤立",用户无法从导航进入。

根因

  • initial_data.py 菜单播种原逻辑为 if db.query(Menu).count() == 0: —— 仅当菜单表完全为空时才播种
  • 生产库此前已有旧菜单集,故章节四新增的三个菜单从未插入;uni-nav.js 运行时以 DB 菜单覆盖 fallback,于是三个入口从导航消失。
  • 另:旧库首页菜单 path="index.html"(无斜杠)与新种子 "/index.html" 不匹配,初次修复导致"工作台"重复出现(count 13)。

修复

  • 菜单播种改为按 path 幂等对齐:已存在则更新 sort_order/roles/icon/is_active(保留原名称,避免意外重命名),缺失则插入。
  • 新增首页路径归一化:若同时存在 index.html/index.html 则删除旧的;若仅 index.html 则改路径为 /index.html,消除重复入口。
  • init_db() 在每次启动执行,重启后自动对齐。

验证

  • 重启 yzr-platform.service/api/menus/active 返回 12 个菜单,顺序正确、无重复:工作台→选题→文章管理→内容工厂→数据→日历→素材→任务→外推营销→AI味检测→白标设置→系统。
  • 12 个对应 HTML 页面均 HTTP 200。
  • python3 tests/test_new_features.py33/33 通过(菜单播种变更未破坏 seeding)。

当前完整导航(运营闭环)

选题 → 内容工厂生成 → 文章管理编辑/AI味检测 → 发布记录标记已发布(合规:系统不代发,真人校验后手动发布)。


第十七章:创作流程统一(导航去碎片化)

日期2026-07-11 目标:将分散的「选题 / 内容工厂 / 文章管理」三个独立导航入口合并为单一「创作工作台」,减少导航碎片化。

方案

采用 studio.html 单一入口 + el-tabs 内嵌三个已有页面(?embed=1 模式),而非重写三套逻辑——复用已验证页面,零逻辑重复、风险最低。

实现

  • 新增 studio.html「创作工作台」el-tabs 三个标签页(选题 / 内容生成 / 文章管理),各以 <iframe> 懒加载对应页面(topics.html?embed=1 等);首次切到才加载,保留各页状态。整页 flex 布局填满视口,iframe position:absolute; inset:0 自适应。
  • 嵌入模式 ?embed=1topics.html / factory.html / articles.htmlmounted 检测 embed 参数 → isEmbed=true<body class="embed">
    • <uni-nav>v-if="!isEmbed" 隐藏子页面自身导航(避免双层导航);
    • theme-modern.css 新增 body.embed .main-content { padding-top:0 } 去掉顶部留白;
    • 跨页链接(redirectToPage / goToArticles)在 embed 下改用 window.top.location.href,整页跳转而非 iframe 内嵌套。
  • 导航收敛initial_data.py 菜单种子以「创作工作台→studio.html」替换原三入口,并将 topics.html/factory.html/articles.htmlis_active=False(页面仍可被 studio 内嵌与直接 URL 访问,不丢失功能);uni-nav.js fallback 同步更新。
  • 排序:工作台(0) → 创作工作台(1) → 数据(2) → 日历(3) → 素材(4) → 任务(5) → 外推营销(6) → AI味检测(7) → 白标设置(8,admin) → 系统(9,admin)。

验证

  • 重启 yzr-platform.service/api/menus/active 返回 10 个菜单,含「创作工作台(studio.html)」,原三入口已不在主导航。
  • studio.html / topics.html / factory.html / articles.html 均 HTTP 200studio 内 iframe srcembed=1
  • 三个页面内联脚本 node --check 通过;initial_data.py 编译通过。
  • python3 tests/test_new_features.py33/33 通过

当前导航(10 项,创作闭环归于单一入口)

工作台 → 创作工作台(选题·生成·文章) → 数据 / 日历 / 素材 / 任务 / 外推营销 / AI味检测 / 白标设置 / 系统。


第十八章:商业模式与官网营销升级

日期2026-07-11 目标:把产品从自用工具定位升级为可对外售卖的 AI 内容中台,并在官网首页展示「免费试用 / 私有化部署 / 源码售卖」三种模式。

方案沉淀

  • 新增 docs/BUSINESS_MODEL.md:功能盘点 + 2026 市场需求 + 三模式可行性 + 首页改造方案 + 定价建议。结论:以私有化部署 + 源码售卖为主力,免费试用作获客钩子(避开纯 SaaS 红海)。

实现(landing.html 改造)

  • 定价区(#pricing)重构为三段式:免费试用(¥0 起,私有化试用版/演示)→ 私有化部署(¥29,800 起买断,推荐,featured)→ 源码售卖(面议授权)。CTA 统一锚定 #contact。
  • FAQ 增补:私有化部署说明、源码采购、免费试用申请、AI 内容合规(不代发/人工闸门)、数据安全/多租户。
  • 新增「开始合作」联系区(#contact):联系信息卡 + 轻量线索表单(姓名/公司/合作方式/联系方式/需求),提交唤起 mailto 至 hello@yu-zhi-ran.com(无后端依赖,低风险)。
  • 文案对齐:导航「免费使用」→「免费试用」+ 新增「联系销售」;Hero / CTA 按钮对齐;移动端菜单同步。
  • deploy/README.md:交付建议同步为三模式定价。
  • 新增 .contact 相关 CSS(深色区块,与 .cta 视觉一致)。

验证

  • curl /landing.html → 200;新内容(免费试用/私有化部署/源码售卖/id="contact"/trialForm/申请试用/获取报价/联系销售)均存在。
  • <section> 开合平衡(8/8);旧 SaaS 三档(入门/专业/企业版)已清除。
  • 未做后端线索入库(当前 mailto 方案足够);若需留资分析可后续加 /api/leads

待办(可选)

  • 真实线索入库(Lead 表 + /api/leads);私有化试用版自动下发;报价单生成。