cursor-init/prd/星撰-工程设计.md
expressgy 2518986557 feat(docs): 完成星撰平台M2基础用户系统完整设计文档体系
 新增功能设计文档:
- M2基础用户系统数据库设计(12个核心表,RBAC权限模型)
- M2基础用户系统接口设计(41个API接口,含排序功能)
- 完整的项目需求文档和开发计划

📚 核心文档结构:
- 数据库设计:支持树形结构、软删除、审计日志的完整用户权限体系
- 接口设计:包含认证、用户管理、角色权限、组织架构、字典标签等9大模块
- 排序功能:新增7个排序接口,支持拖拽和批量操作
- 项目规划:从MVP到完整生态的4阶段开发计划

🔧 技术栈确定:
- 后端:Elysia + Bun.js + MySQL + Redis + Elasticsearch
- 前端:Vue.js/React + TypeScript
- 部署:Docker + Docker Compose
- 测试:Vitest + 完整测试规范

📋 设计亮点:
- 无外键约束设计,应用层维护数据完整性
- 树形结构支持(path、level字段优化查询)
- 完整的权限继承机制和权限快照
- 支持root超级管理员和多级角色体系
- 标签系统和智能推荐功能
- 统一的响应格式和错误码规范

🎯 覆盖功能:
- 用户认证与管理(注册、登录、权限控制)
- RBAC角色权限体系(树形角色、权限继承)
- 组织架构管理(多级组织、人员分配)
- 数据字典与标签系统
- 完整的排序和数据导入导出功能

📈 文档规模:
- 数据库设计:38KB,922行
- 接口设计:55KB,3024行
- 总计:约100KB的详细技术文档

🔄 配套更新:
- 更新Elysia后端开发规范
- 完善健康检查控制器
- 统一项目代码规范和注释规范
2025-06-29 03:11:35 +08:00

13 KiB
Raw Blame History

星撰个人综合平台 - 项目工程设计文档


0. 引言

本文档旨在为"星撰"个人综合平台项目提供全面的工程设计与规划。基于已确定的产品需求文档PRD本文档从软件工程和工程控制论的视角出发深入分析项目的技术指标、可行性、技术选型、未来展望及各项核心系统属性为项目的顺利开发、部署和长期演进提供一份结构化的工程蓝图。

项目代号: 星撰 (StarWriter)

核心愿景: 构建一个高度集成、数据私有、体验优秀的个人数字化中枢,统一管理知识、生活与工具。


1. 技术指标 (Technical Specifications)

为确保项目质量,我们设定以下可量化的关键技术指标:

类别 指标项 目标值 备注
性能 API 平均响应时间 < 200ms (95th percentile) 针对核心数据读写操作
复杂查询/搜索响应时间 < 800ms 如全文搜索、聚合分析
页面首次内容绘制 (FCP) < 1.5s 核心页面的加载性能
并发 MVP 阶段并发用户数 100+ 系统可稳定支持的并发会话数
长期目标并发用户数 1000+
可用性 系统年可用性 (Uptime) 99.9% 相当于每年停机时间不超过 8.76 小时
稳定性 核心 API 成功率 > 99.95%
数据备份恢复点目标 (RPO) 24 小时 每日自动备份,最多丢失 24 小时数据
数据备份恢复时间目标 (RTO) < 2 小时 从灾难发生到恢复服务所需时间
安全性 安全漏洞响应 遵循 OWASP Top 10 防御原则0 高危漏洞 使用自动化工具扫描并定期审查
敏感数据处理 密码、密钥等使用非对称加密或强哈希算法存储
代码质量 核心模块单元测试覆盖率 > 90% 确保业务逻辑的稳定可靠
CI/CD 流水线单次执行时间 < 10 分钟 从代码提交到构建部署完成

2. 可行性分析 (Feasibility Analysis)

  • 技术可行性:

    • 技术栈成熟度: 项目选用的 Elysia.js, Bun, Vue/React, MySQL, Redis 等技术均为成熟或高速发展的开源技术,拥有活跃的社区和丰富的文档,技术风险可控。
    • 实现复杂度: 项目功能虽多但采用模块化、分阶段MVP的开发策略可将复杂系统分解为多个可管理的小模块降低了单次开发的复杂度。
    • 团队技能: 核心开发人员具备所需的全栈技术能力,能够驾驭该技术栈。
  • 经济可行性:

    • 初期成本: 主要成本为服务器托管费用。初期可利用云服务商的免费套餐或低成本VPS成本极低。所有核心软件均为开源无授权费用。
    • 长期成本: 随着用户量和数据量的增长,服务器和存储成本会线性增加,但成本模型清晰可控。
    • 开发成本: 作为个人项目,主要为时间成本,无直接的人力资源开销。
  • 操作与维护可行性:

    • 部署: 采用 Docker 和 Docker Compose 进行容器化部署,实现了环境的标准化和一键部署,极大降低了操作和维护的复杂性。
    • 监控: 规划了完善的日志和监控体系,能够主动发现和定位问题,提升了系统的可维护性。
    • 开发流程: 明确的 PRD 和工程设计文档,结合 CI/CD 自动化流程,保障了开发过程的规范性和高效性。

3. 技术选型与论证 (Technology Stack Selection & Justification)

领域 技术选型 选型论证
后端运行时 Bun.js 极高的执行效率,内置打包器、测试器、包管理器,提供了现代、一体化的开发体验,与 Elysia.js 完美契合。
后端框架 Elysia.js 基于 Bun 设计性能卓越。提供端到端的类型安全Type-Safe开发体验极佳插件生态丰富非常适合构建高性能、类型健壮的 API 服务。
前端框架 Vue.js / React 两者均为业界领先的声明式 UI 框架拥有强大的生态系统和组件库。选择其一可快速构建复杂、交互丰富的单页应用SPA。最终选择可根据个人偏好决定。
数据库 MySQL (主) + Redis (缓存) + Elasticsearch (搜索) MySQL: 成熟可靠的关系型数据库,提供事务支持和数据一致性,适合存储结构化的核心业务数据。Redis: 高性能内存数据库,用于缓存、会话管理、消息队列等场景,能极大提升系统响应速度。Elasticsearch: 强大的全文搜索引擎,为笔记、博客等内容提供毫秒级的复杂搜索能力,是内容驱动型平台的关键组件。
部署方案 Docker + Docker Compose 实现开发、测试、生产环境的一致性,简化部署流程,便于服务的水平扩展和管理。

4. 前沿技术展望 (Future Technology Outlook)

本项目在设计上保持开放,为未来集成前沿技术预留了接口:

  • 深度 AI 集成 (LLM/RAG): 当前规划的 AI 功能是基础。未来可引入基于私有数据笔记、文档的检索增强生成RAG技术将平台打造成一个真正个性化的智能问答和创作助手。
  • 去中心化身份与存储 (DID/IPFS): 探索使用去中心化身份标识DID进行用户认证增强用户的自主权。核心的、不可变的笔记或博客可选择性地发布到 IPFS/Arweave 等去中心化存储网络,实现数据的永久保存和抗审查。
  • 边缘计算 (Edge Computing): 对于静态资源和一些低延迟要求的 API可以利用边缘计算节点进行分发和计算为全球用户提供更快的访问速度。
  • WebAssembly (WASM): 对于前端的性能敏感模块,如富文本编辑器、思维导图、在线画板的核心引擎,未来可采用 Rust/C++ 编写并通过 WASM 在浏览器中运行,以获得接近原生的性能。

5. 实用性分析 (Utility Analysis)

本项目的核心实用价值在于 "终极整合""数据主权"

  • 解决的核心痛点: 现代人的数字信息散落在各个孤立的平台笔记在A应用书签在B浏览器密码在C工具博客在D平台。"星撰"旨在通过一个统一的平台整合这些功能,消除切换成本,构建个人数据的内在联系。
  • 为用户创造的价值:
    1. 数据所有权: 用户数据完全存储在自己的服务器上,彻底摆脱对商业平台的依赖和隐私泄露的担忧。
    2. 高度可定制: 作为一个自建项目,可以根据个人需求无限扩展和定制功能,不受商业产品的限制。
    3. 效率提升: 将多种高频工具集成,减少了跨应用的操作,提升了日常工作和学习的效率。

6. 商用性分析 (Commercial Viability Analysis)

尽管项目初衷为个人使用,但其架构和功能具备一定的商用潜力。

  • 潜在市场: 面向注重数据隐私、有极客精神、需要高度定制化解决方案的个人开发者、知识工作者、内容创作者。
  • 商业模式探索:
    1. SaaS 订阅服务: 提供托管服务用户无需自行部署。可通过免费增值模式Freemium吸引用户高级功能如无限AI调用、团队协作、更大存储空间收费。
    2. 开源+付费支持/高级版: 项目核心开源,吸引社区贡献。提供付费的企业级支持、高级插件或一键部署的商业版。
    3. 模板/插件市场: 建立一个生态,允许开发者创建和销售主题模板、功能插件。
  • 核心竞争力: 与 Notion, Obsidian 等产品的竞争中,其核心优势是 开源、可自托管、高度集成。这对于目标市场中的特定群体具有强大吸引力。

7. 稳定性与可靠性设计 (Stability & Reliability Design)

  • 冗余与备份: 数据库采用主从复制Read Replicas实现读写分离和高可用。实施每日全量备份和增量备份策略并定期进行恢复演练。
    • 无状态服务: 后端 API 设计为无状态,所有会话信息存储在 Redis 中。这使得服务可以轻松地进行水平扩展和故障切换。
  • 优雅降级: 当 Elasticsearch 或 Redis 等非核心依赖出现故障时,系统应能自动降级服务(如暂时关闭搜索功能、使用数据库替代缓存),保证核心功能(如读写笔记)不受影响。
  • 健康检查: 对外提供健康检查 API (/health),供负载均衡和监控系统调用,实现故障节点的自动摘除。
  • 配置中心: 所有配置(数据库连接、密钥等)通过环境变量或配置中心管理,实现配置与代码分离,增强安全性与灵活性。

8. 可拓展性设计 (Scalability & Extensibility Design)

  • 水平扩展 (Scale Out): 无状态的后端服务设计,使其可以轻易地在负载均衡器后部署多个实例,以应对增长的流量。
  • 垂直扩展 (Scale Up): 系统也可以通过增加单个服务器的 CPU 和内存来提升处理能力。
  • 数据库扩展: 初期采用读写分离。未来若数据量巨大可根据业务模块进行垂直拆分如用户库、内容库或对超大表进行水平分片Sharding
  • 功能扩展 (Extensibility):
    • 模块化架构: src 目录下的 controllers, services, plugins 结构清晰,新增功能模块不会影响现有逻辑。
    • 插件化设计: 核心功能稳定后,可设计一套正式的插件机制,允许社区或自己以插件形式开发新功能(如新的编辑器、新的同步工具),实现真正的"热插拔"式扩展。
    • 事件驱动: 通过引入消息队列,采用事件驱动模式解耦核心业务和附加业务(如发送邮件、生成通知、索引文档),提高系统的响应能力和可扩展性。

9. 结论

"星撰"项目不仅在产品功能上满足了现代数字生活的需求,其工程设计也遵循了高标准。项目技术上可行,经济上低成本,且在稳定性、可扩展性方面进行了深思熟虑的规划。本文档将作为指导,确保项目沿着一条稳健、高效、可持续的道路前进。