OpenFlow 架构规范
本文档定义「每个功能唯一实现位置」,防止同功能多实现累积噪声。
新增功能前,先查本文档 + grep 现有 lib/,能复用就不新建。
一、前端资产(唯一实现清单)
| 用途 | 唯一文件 | 说明 |
|------|----------|------|
| 设计 token(配色/间距/圆角) | assets/tokens.css | Open Design 统一,全站唯一 token 源 |
| 组件样式(卡片/按钮/表单等) | assets/modules.css | Open Design 统一组件库 |
| 主页面视觉 | 各 .php 内联 <style> | index/product/capability/courses/about 各自内联 |
| 次级页面样式 | assets/tailwind-build.css | academy/community/docs 等 35 个次级页 |
| 独立页样式 | assets/standalone.css | 问卷/感谢页等 7 个独立页 |
| 次级页面外壳/导航 | assets/site-shell.js | 26 个次级页共用 |
| 首页角色化 | assets/role-content.js + assets/role-switch.js | 仅首页 |
| 埋点注入 | assets/inject.js | 全站 |
| SEO 注入 | assets/seo-inject.js | 主页面 |
| 埋点 SDK | assets/cdp-track.js | 全站 |
探索期的未引用主题变体已经移除;不要恢复未进入当前资产管线的样式和脚本。
二、Markdown 转换(唯一实现)
唯一实现:lib/Markdown.php(Markdown::toHtml / Markdown::extractFrontMatter)
现状存在 4 处重复,需逐步收敛:
- ✅
lib/Markdown.php— 完整实现(标题/加粗/代码块/链接/图片/列表/引用/表格),目前仅api/ingest.php使用 - ❌
docs.php::md_render— 简化版,应改为调用Markdown::toHtml - ❌
bin/import.php::md_to_html— 简化版,同上 - ❌
bin/import-drafts.php::md_to_html— 简化版,同上
三、导航系统(现状 3 套 → 目标 1 套)
| 页面 | 现状 | 目标 |
|------|------|------|
| 首页 index.php | SSR 静态导航(Open Design 重构) | 保留 SSR |
| product/capability/courses/about | 内联 NAV 数组 + renderTabs/renderSidebar | 迁到 site-shell.js |
| 次级页面 26 个 | site-shell.js | 唯一实现 |
四、缓存(唯一实现)
唯一实现:lib/Cache.php(Cache::remember / FileCache / RedisCache)
lib/PageCache.php是页面级缓存封装,内部已用FileCache,保留但不再另起炉灶。
五、数据存储(两套分工明确)
| 存储 | 用途 | 文件 |
|------|------|------|
| JSON 文件 | 内容型数据(文章/课程/社区/配置) | data/*.json |
| SQLite | 关系型/高频写(会员/订单/日志) | data/db/openflow.db |
规则:内容读多写少用 JSON,事务/关系用 SQLite,不混用。
六、站点配置(唯一入口)
唯一入口:lib/SiteConfig.php(site_config_get())
- 品牌名/标语/联系方式等一律走
site_config_get('key') - 不要在页面里硬编码品牌名(历史遗留的硬编码已清理)
七、新增功能规范
grep -rn "关键词" lib/,确认没有现成实现.bak* 文件不入库(已在 .gitignore 排除)qa-check.sh 确认无 0 引用残留八、历史遗留债务(处理进度)
| 债务 | 位置 | 状态 |
|------|------|------|
| flow-community 旧页面名 | config.php、admin/*、data/pages/ | ✅ 已处理:前台按钮改指向 /community,后台页面类型删除 |
| GrowthDriver vs GrowthEngine 命名歧义 | lib/ | ✅ 已处理:GrowthDriver → GrowthFlywheel |
| CdpSystem / CdpInsight / CdpSync 边界 | lib/ | ✅ 已处理:三文件加了三层架构边界注释 |
| FlowSystem / CanvasSystem / AutomationSystem 关系 | lib/ | ✅ 已处理:三文件加了「流程编排三件套」边界注释 |
九、后台页面组件规范(对齐设计稿 openflow-admin.html)
后台视觉契约源:/Users/seveno/Downloads/openflow-admin.html(Open Design 运营台原型)。
后台公共样式全部集中在 admin/config.php 的 <style>,页面内不写零散样式。
| 组件 | class | 说明 |
|------|-------|------|
| 页面头 | .v-head + .v-sub + .v-actions | 页面标题区 |
| KPI 网格 | .kpi-grid + .kpi(.k-label/.k-val/.k-sub) | 指标卡 |
| 面板 | .panels + .panel(.p-head/.p-body) | 双栏/两栏面板 |
| 引擎卡 | .eng + .param-grid + .param | 增长引擎状态 |
| 待办 | .todo-row(.t-ic/.t-b/.t-t/.t-d) | 待办队列 |
| 时间线 | .tl + .tl-item(.ok/.accent/.warn) | 事件流 |
| 状态徽标 | .st + .st-ok/.st-warn/.st-danger/.st-faint/.st-accent | 状态 |
| 筛选 tabs | .ftabs + .ftab.on | 表格筛选 |
| 工具栏 | .toolbar + .tbar-search + .tbar-meta | 搜索/计数 |
| 表格 | .tbl-wrap + .tbl(.t-main/.t-sub/.mono/.num/.r) | 数据表 |
| 批量条 | .batch | 批量操作 |
| 面包屑 | .f-crumb | 功能页头部 |
| 功能 hero | .f-hero(.f-ic/.f-desc/.f-meta/.f-chip) | 功能说明 |
| 同组入口 | .f-kpis + .f-grid + .f-feats + .f-feat | 功能关联 |
| 标签 | .tag / .chips + .chip | 标签 |
| 按钮 | .btn-p(实心)/ .btn-s(描边)/ .btn-ghost / .btn-danger / .btn-sm | 按钮 |
规范:新增/改后台页面时,用上表 class,不在页面内写硬编码 hex 或零散内联样式;表格页面优先用 .tbl-wrap + .tbl。