PRD
你是一位资深B端产品专家,请为“通用企业官网系统”编写一份完整的、可直接用于立项的PRD文档。
【系统概述】
系统包含四端:PC官网、移动端H5(自适应)、管理后台、微信小程序端。产品定位是“配置即上线”的通用企业数字化门户平台,支持独立部署与SaaS多租户两种模式。系统需具备良好的扩展性、易维护性、易部署性,并拥有完善的日志体系。
【核心功能要求】
①站点风格定制:通过后台配置主题色(CSS变量)、LOGO、Banner轮播、导航菜单、底部信息(版权/备案/联系方式),实现站点外观的灵活定制。
②多端适配策略:
- PC官网:桌面端全屏展示,适合复杂信息层级和产品展示
- 移动端H5:响应式设计,在手机浏览器上适配良好,与PC共用同一套后端模板引擎(Blade + Bootstrap 5响应式栅格),通过CSS Media Query适配不同屏幕
- 微信小程序端:独立开发,基于微信小程序原生框架(或uni-app跨端方案),通过调用同一套RESTful API获取数据,UI风格与官网保持一致但交互更符合小程序规范(如底部Tab切换、下拉刷新、分享能力)
- 数据同源:四端共用同一数据库,内容更新后所有端实时生效
③页面模板系统:
- 系统内置5套不同排版和风格的完整模板(含PC+移动端自适应),覆盖科技、商务、简约、创意、传统等主流企业风格。
- 模板需包含完整页面集:首页、关于我们、新闻列表/详情、产品列表/详情、联系我们、招聘列表/详情。
- 站点管理员可一键切换模板,切换后站点内容不丢失,仅页面布局和样式发生变化。
- 支持模板继承与覆盖机制,后期可通过上传模板包(ZIP格式)增加新模板。
④模块化功能裁剪:部署时可通过配置开关控制新闻、产品、留言、招聘、友情链接等模块的启用/禁用,禁用后四端前台对应入口全部隐藏,后台菜单自动消失。
⑤后台权限管理:超级管理员、站点管理员、内容编辑三种角色,支持细粒度权限控制
- 扩展预留:支持后续对接企业LDAP/SSO单点登录
⑥统一API对接能力(四端共用):
- 提供统一的RESTful API供PC/H5/小程序调用
- 开放API支持app_id + app_secret签名认证,供第三方系统获取新闻/产品数据
- 支持配置对接外部CRM/ERP,如客户留言自动同步
⑦Redis缓存可配置开关:
- 支持Redis/File双驱动,通过.env配置一键切换
- 扩展预留:支持后续增加Memcached、Apcu等其他驱动
⑧系统可维护性要求:
- 代码结构清晰,遵循PSR-12编码规范,注释完整
- 后台管理界面提供“系统状态仪表盘”,实时展示:系统运行时间、PHP版本、MySQL状态、Redis连接状态、缓存命中率、磁盘空间使用率
- 提供“系统更新”功能,支持在线检测新版本并一键更新(或提示手动更新步骤)
- 后台提供“计划任务管理”界面,可视化管理所有定时任务(如:静态化生成、数据备份、缓存清理)
- 提供“数据备份与恢复”功能,支持手动/自动备份数据库和附件文件
- 异常发生时,前台用户看到友好的错误提示页面(不暴露系统细节),同时后台记录完整错误上下文
- 支持运维人员通过 .env 配置文件切换“维护模式”(maintenance mode),维护期间前台展示统一维护页面
⑨系统部署要求:
- 支持Docker Compose一键部署(含Nginx + PHP-FPM + MySQL + Redis可选)
- 提供部署脚本(install.sh / deploy.sh),支持交互式配置(数据库连接、管理员账号、站点信息)
- 提供完整的 .env.example 配置文件模板,所有配置项均有详细注释说明
- 支持通过环境变量覆盖所有配置(便于容器化部署和CI/CD流水线)
- 系统初始化时自动运行数据库迁移(Migration)和数据填充(Seeder)
- 提供平滑升级方案:新版本部署时自动运行迁移脚本,不影响正在运行的服务
- 支持多环境配置(开发/测试/生产),不同环境使用不同的配置文件
- 部署后提供健康检查接口(/health),用于容器编排的存活探针和就绪探针
⑩日志功能要求:
- 系统日志分类:
* 操作日志(后台管理员的所有操作:增删改查、配置变更、登录登出)
* 访问日志(API请求日志:请求URL、方法、参数、响应时间、状态码)
* 错误日志(系统异常、数据库错误、第三方服务调用失败)
* 安全日志(登录失败、权限越权尝试、SQL注入拦截、文件上传异常)
* 业务日志(关键业务操作:文章发布/删除、产品上架/下架、留言提交)
- 日志记录规范:
* 所有日志统一格式为JSON结构化日志,便于日志收集和分析(ELK/CLS)
* 每条日志包含:时间戳、日志级别、请求ID(TraceID)、用户ID、IP地址、操作类型、操作内容、执行耗时
* 支持全链路追踪:同一个请求链路上所有日志携带相同的TraceID
- 日志管理功能(后台):
* 提供“日志查看”界面,支持按级别/时间/关键词/操作人筛选查询
* 支持日志导出功能(CSV/JSON格式)
* 支持日志保留策略配置(按天保留,自动清理过期日志)
* 敏感数据脱敏:日志中自动过滤密码、Token、身份证号等敏感信息
- 日志驱动可配置:
* 支持多种日志输出驱动:文件(默认)、数据库、Redis、ELK/Kafka(扩展)
* 通过 .env 配置 LOG_CHANNEL 切换驱动
* 支持同时输出到多个通道(如:同时写入文件和ELK)
- 日志告警:
* 错误日志达到阈值时,支持通过邮件/钉钉/企业微信发送告警通知
* 后台显示“最近异常统计”,便于运维人员快速发现系统问题
【文档输出要求】
请按以下结构输出完整PRD:
1. 产品定位与目标用户
2. 用户角色与用户故事(覆盖四端用户场景)
3. 四端功能矩阵对比表
4. 功能模块详细清单(含优先级、可裁剪标识、扩展性说明)
5. 页面模板规范(5套模板风格定义、页面结构、模板切换逻辑)
6. 扩展性设计专题(业务/端/模块/集成扩展)
7. Redis缓存开关的业务影响说明
8. 可维护性设计专题(系统状态、在线更新、任务管理、备份恢复)
9. 部署方案设计专题(一键部署、环境配置、升级方案、健康检查)
10. 日志体系设计专题(分类、规范、管理、告警、多驱动)
11. 模块依赖关系图
12. 功能裁剪方案
13. 数据权限模型
14. 非功能需求(安全、性能、兼容性、可用性SLA)
15. API接口规划
16. 产品演进路线图
系统架构方案
你是一位资深技术架构师,请基于PHP 8.x + MySQL 8.0 + Redis设计一套完整的系统架构方案,需同时支撑PC官网、移动端H5、管理后台、微信小程序四端。
【技术约束】
- 后端框架:ThinkPHP 8.0(国内企业使用广泛,文档完善,API接口开发高效)
- 前端管理后台:Vue3 + Element Plus(前后端分离)
- 前端官网(PC + H5):使用ThinkPHP的Blade模板引擎 + Bootstrap 5(响应式栅格,一套代码同时适配PC和手机浏览器)
- 小程序端:采用uni-app(基于Vue3)开发,一套代码可编译为微信小程序、百度小程序等多平台,通过调用后端RESTful API获取数据
- 数据库:MySQL 8.0(InnoDB引擎)
- 缓存:Redis 7.0
【架构核心要求】
①多端统一API设计(核心):
- 所有端(PC/H5/小程序)共用同一套RESTful API,避免接口重复开发
- API返回数据格式统一为 JSON: {code, msg, data, timestamp}
- 小程序端使用JWT token认证(通过微信登录获取openid并绑定站点账号体系)
- API版本管理:/api/v1/、/api/v2/ 支持平滑升级
②多站点/多租户隔离:采用单库多表+site_id字段隔离方案,所有业务表均带site_id,全局Scope自动过滤。小程序端请求时通过域名或请求头中的site_code识别当前站点。
③模块化设计:每个功能模块(新闻、产品、招聘、留言等)封装为独立的Composer包,支持通过Composer require/remove进行热插拔安装与卸载。
④功能裁剪实现:通过.env配置文件中的ENABLE_MODULES参数控制模块加载,四端菜单/入口根据加载模块动态渲染。
⑤模板系统架构:
- 模板存储结构:每个模板为一个独立目录,包含template.json配置文件、样式文件、Blade布局文件、静态资源。
- 内置5套模板:系统初始化时自动安装5套完整模板(含PC+移动端自适应视图)。
- 模板切换机制:站点管理员切换模板时,系统将当前站点的模板配置(主题色/LOGO/Banner等)映射到新模板的CSS变量体系,确保站点风格平滑迁移。
- 小程序端UI独立维护:小程序端的UI样式与PC/H5保持视觉统一,但由于小程序组件体系与Web不同,模板切换仅影响PC/H5端,小程序端需单独维护一套UI主题配置(通过接口下发主题色、Banner图片URL等配置数据,小程序端动态渲染)。
⑥高性能方案:
- 首页全量HTML静态化缓存到Redis,内容更新时自动失效
- 列表页使用Redis分页缓存
- 小程序端API数据使用Redis缓存(TTL 5-10分钟),减少数据库压力
- 静态资源(图片/CSS/JS)自动上传至OSS,CDN加速
- MySQL读写分离(主库写、从库读)
⑦部署方案:支持Docker Compose一键编排(Nginx + PHP-FPM + MySQL + Redis + 小程序后端服务)。
⑧安全防护:
- 全局参数过滤(filter_var + 正则白名单)
- ORM参数绑定防SQL注入
- 文件上传MIME+扩展名双重白名单
- 全量操作日志审计(含小程序端用户操作)
- 小程序端接口防重放攻击(timestamp + nonce + sign)
(补充)缓存驱动可开关设计:
①缓存抽象层设计:
- 采用PSR-6/PSR-16缓存接口规范,业务代码通过Cache::get()/set()等统一方法操作缓存
- 底层驱动通过 .env 中的 CACHE_DRIVER 配置项决定(redis 或 file)
- 所有缓存Key带站点前缀(site_id),确保多站点隔离
②Redis开启时的策略:
- 首页全量HTML缓存(Redis String,TTL可配置)
- 列表页分页缓存(Redis Hash,按页存储)
- Session存储(Redis,支持多PHP-FPM实例共享)
- API响应缓存(小程序端接口,TTL 5-10分钟)
- 限流计数器(Redis INCR + EXPIRE,原子操作)
- 队列驱动(Redis Stream,用于异步任务)
③Redis关闭时(文件缓存File驱动)的降级策略:
- 首页HTML缓存:写入 /runtime/cache/pages/ 目录,过期时间通过文件修改时间判断
- 列表页缓存:写入 /runtime/cache/list/ 目录
- Session存储:使用PHP原生文件Session(需配置多实例共享时使用数据库或NFS)
- 限流功能:降级为基于数据库或内存计数(非原子操作,精度略低但可用),或直接关闭限流(通过配置项 LIMIT_ENABLED=false)
- 队列功能:降级为数据库队列(ThinkPHP支持database驱动)
- 缓存清理:无论何种驱动,后台“清空缓存”按钮遍历删除对应存储位置
④缓存驱动切换对业务层透明:
- 封装CacheService层,所有业务调用走该服务层
- 切换驱动时仅需修改.env配置,无需改动任何业务代码
- 启动时自动检测Redis扩展是否加载,若CACHE_DRIVER=redis但扩展未安装,自动降级为file并记录日志告警
【文档输出要求】
请按以下结构输出完整架构文档:
1. 技术选型及理由(含为何选择uni-app开发小程序)
2. 四端系统架构总图(含PC/H5/小程序/管理后台的请求流转路径)
3. 统一API接口设计规范(含URL规范、请求/响应格式、错误码定义、签名算法示例)
4. 核心数据模型设计(ER图及关键表结构字段说明,需包含site_id、template_id、小程序用户关联表等)
5. 小程序端登录鉴权流程设计(微信授权登录 + JWT token颁发与刷新机制)
6. 模板存储结构与加载机制详细设计(PC/H5端)
7. 小程序端配置下发机制(主题色/Banner/导航等配置数据通过API下发,小程序动态渲染)
8. 多租户数据隔离方案
9. 模块化与功能裁剪实现方案
10. 缓存策略详细说明(含四端差异化缓存策略)
11. 部署架构图(Docker Compose编排,含小程序后端服务)
12. 安全防护方案(含Web端与小程序端差异化安全策略)
13. API接口清单(按端分类:PC端、H5端、小程序端、管理后台端)