Skip to content

Monorepo 多项目管理策略

版本:3.0(简化版)
更新时间:2026-03-16
重要变更:废弃 Git Worktree,酒店智能体采用单分支开发模式

概述

本文档描述 stooland Monorepo 项目的代码管理策略。

核心变更(2026-03-16):

  • ❌ 废弃 Git Worktree:复杂度高,维护成本大
  • ❌ 废弃多分支策略:酒店智能体直接在 master 开发
  • ✅ 采用标准 Monorepo:目录隔离,简单高效
  • ✅ 单分支开发:快速迭代,减少合并冲突

背景与目标

业务背景

战略决策(2026-03-16):

  • 原有系统 (stooland):智能媒体平台,包含分镜创作、AIGC 能力等
  • ** storyboard-web**:通用分镜创作工具(专业创作者使用)
  • hotel-web:酒店垂类 AI 内容智能体(酒店运营人员使用)⭐ 新建

产品定位差异

  • storyboard-web = 专业创作工具(给制作人用)
  • hotel-web = 行业解决方案(给酒店运营人员用)
  • 两者用户画像、使用场景、价值主张完全不同

技术架构调整(2026-03-16):

  • 废弃 Git Worktree:复杂度高,维护成本大,不适合当前场景
  • 采用标准 Monorepo:统一仓库,目录隔离,简单高效
  • 单分支开发:hotel-web 在 master 分支直接开发,无需复杂分支
  • 独立部署:每个前端项目独立构建和部署
  • 共享后端:共用 api/、pybridge/、social-publisher/ 等后端服务

核心目标

  • 简化流程:降低开发复杂度,提升效率
  • 项目隔离:通过目录结构自然隔离,互不干扰
  • 按需共享:后端服务复用,前端代码独立
  • 快速迭代:支持快速开发和部署

目录结构

/Users/mzy/docker/dnmp/www/stooland/          ← Monorepo 根目录
├── api/                       ← 主后端(ThinkPHP 8)
│   ├── app/
│   │   ├── Aigc/             ← AIGC 模块(复用)
│   │   ├── Hotel/            ← 酒店模块(新建)⭐
│   │   └── ...
│   └── ...
├── web/                       ← 管理后台(原有系统)
├── storyboard-web/            ← 分镜工具(原有系统)
├── hotel-web/                 ← 酒店智能体(新建)⭐
│   ├── src/
│   │   ├── views/
│   │   ├── components/
│   │   ├── services/
│   │   └── ...
│   └── ...
├── pybridge/                  ← Python 视频处理服务
├── social-publisher/          ← 社交媒体发布工具
└── muse-engine/               ← AI 引擎

说明

  • 所有项目在同一仓库,通过目录自然隔离
  • 每个前端项目有独立的 package.json 和构建配置
  • 后端服务共享,通过路由前缀区分(/api/aigc/*/api/hotel/*

分支策略

简化分支结构

核心原则:简单优先,避免过度设计

项目开发分支生产分支说明
原有系统developmaster保持现有流程
分镜工具developmaster保持现有流程
酒店智能体master(直接开发)master简化流程,无需 develop 分支

为什么酒店智能体采用单分支?

  1. 新建项目:没有历史包袱,不需要复杂的分支管理
  2. 快速迭代:减少分支合并的复杂度,提升开发效率
  3. 团队精简:初期团队规模小,单分支足够
  4. 部署简单:构建脚本直接指向 hotel-web/ 目录

分支结构图

┌─────────────────────────────────────────────────────────────────┐
│  Monorepo 简化分支策略                                        │
├─────────────────────────────────────────────────────────────────┤
│                                                                 │
│  原有系统 / 分镜工具:                                        │
│    master ◄─── develop(日常开发)                            │
│                                                                 │
│  酒店智能体(新建):                                          │
│    master(直接在 master 开发,简化流程)⭐                   │
│                                                                 │
│  所有项目共享后端服务:                                        │
│    api/、pybridge/、social-publisher/                          │
│                                                                 │
└─────────────────────────────────────────────────────────────────┘

Git 工作流对比

❌ 之前的复杂方案(已废弃)

bash
# Git Worktree + 多分支
cd /Users/mzy/docker/dnmp/www/stooland-hotel
git checkout -b feature/hotel-mvp hotel-develop
# 问题:需要维护 worktree,容易混淆

✅ 现在的简单方案

bash
# 标准 Monorepo + 单分支
cd /Users/mzy/docker/dnmp/www/stooland/hotel-web
# 直接在 master 开发,无需复杂分支
git add src/views/hotel-selector/
git commit -m "feat: 酒店选择器"
git push origin master

日常工作流

酒店智能体开发流程(简化版)

bash
# 1. 进入酒店智能体目录
cd /Users/mzy/docker/dnmp/www/stooland/hotel-web

# 2. 拉取最新代码
git pull origin master

# 3. 开发功能(直接在 master 开发)
# 编辑代码...

# 4. 提交代码
git add .
git commit -m "feat: 酒店选择器 - 酒店搜索功能"

# 5. 推送代码
git push origin master

# 6. 触发自动部署(CI/CD)
# 自动部署到 hotel-test.example.com

说明

  • 直接在 master 分支开发,无需创建功能分支
  • 每次提交自动触发测试和部署
  • 通过 commit message 区分功能模块

原有系统开发流程(保持不变)

bash
# 1. 进入原有系统目录
cd /Users/mzy/docker/dnmp/www/stooland

# 2. 创建功能分支
git checkout -b feature/some-feature develop

# 3. 开发并提交
git add .
git commit -m "feat: 新增某某功能"

# 4. 合并到 develop
git checkout develop
git merge feature/some-feature

分镜工具开发流程(保持不变)

bash
# 1. 进入分镜工具目录
cd /Users/mzy/docker/dnmp/www/stooland/storyboard-web

# 2. 创建功能分支
git checkout -b feature/premium-template develop

# 3. 开发并提交
git add src/views/aigc/
git commit -m "feat: 高级模板市场功能"

# 4. 合并到 develop
git checkout develop
git merge feature/premium-template

代码复用策略

后端服务复用

所有前端项目共享后端服务:

api/
├── app/
│   ├── Aigc/         ← AIGC 能力(所有项目复用)
│   ├── Hotel/        ← 酒店模块(hotel-web 专用)
│   └── ...
└── ...

路由前缀区分:
- /api/aigc/*      ← 通用 AIGC 能力
- /api/hotel/*     ← 酒店特定 API

前端代码复用

可以复用的部分

  • 通用组件:VideoPlayer.vueVoiceSelector.vue
  • 工具函数:utils/ 目录下的通用工具
  • 服务层:API 调用封装

复用方式

javascript
// 方式 1:直接引用(不推荐,耦合度高)
import VideoPlayer from '@/components/VideoPlayer.vue'

// 方式 2:复制到各自项目(推荐,解耦)
// hotel-web/src/components/shared/VideoPlayer.vue
// 基于原有组件优化,适配酒店场景

不建议复用的部分

  • 业务逻辑层(差异太大)
  • UI 布局(风格不同)
  • 状态管理(数据结构不同)

Git Worktree 常用命令

命令说明
git worktree list查看所有 worktree
git worktree add <path> <branch>创建新的 worktree
git worktree remove <path>删除 worktree
git worktree prune清理已删除的 worktree

发布流程

酒店智能体发布(简化)

bash
# 1. 确保代码已提交
cd /Users/mzy/docker/dnmp/www/stooland/hotel-web
git add .
git commit -m "release: 准备发布 v1.0"
git push origin master

# 2. 打标签
git tag -a v1.0 -m "酒店智能体 v1.0 发布"
git push origin v1.0

# 3. 触发自动部署(CI/CD)
# 自动部署到 hotel.example.com

说明

  • 直接在 master 发布,无需创建 release 分支
  • 通过 Git Tag 标记版本
  • CI/CD 自动构建和部署

分镜工具发布(保持不变)

bash
cd /Users/mzy/docker/dnmp/www/stooland/storyboard-web
git checkout master
git merge develop
git tag -a v2.0 -m "分镜工具 v2.0"
git push origin master --tags

原有系统发布(保持不变)

bash
cd /Users/mzy/docker/dnmp/www/stooland
git checkout master
git merge develop
git tag -a v3.0 -m "原有系统 v3.0"
git push origin master --tags

关键原则

原则说明
简单优先能简单就不要复杂,避免过度设计
项目隔离通过目录结构自然隔离,互不干扰
按需共享后端服务复用,前端代码按需复制
快速迭代酒店智能体直接在 master 开发,快速发布
CI/CD 自动化提交自动测试,打标签自动部署

目录与分支对照表

目录当前分支说明
stooland/developmaster原有系统
storyboard-web/developmaster分镜工具
hotel-web/master(直接开发)酒店智能体 ⭐

FAQ

Q: 为什么酒店智能体不采用 develop 分支?

A:

  • 新建项目,没有历史包袱
  • 团队规模小,单分支足够
  • 减少合并冲突,提升开发效率
  • 通过 CI/CD 保证代码质量

Q: 可以在多个目录同时开发吗?

A: 可以,通过目录自然隔离,互不干扰。

Q: 需要重复安装依赖吗?

A: 需要,每个前端项目独立运行 npm install,后端共享 composer install

Q: Monorepo 会占用额外磁盘空间吗?

A: 相比多个独立仓库,Monorepo 更节省空间(共享 .git 目录)。

Q: 如何管理多个前端项目的端口?

A:

  • web/: 5173
  • storyboard-web/: 5173(独立目录,不冲突)
  • hotel-web/: 5174(错开端口)

Q: 后端 API 如何支持多个前端项目?

A: 后端统一提供 API,通过路由前缀区分:

  • /api/aigc/*: 通用 AIGC 能力
  • /api/hotel/*: 酒店特定 API

Q: 如何保证代码质量?

A:

  • ESLint + Prettier 代码规范
  • 提交前自动运行测试
  • CI/CD 自动构建和部署
  • Code Review 机制

Q: 如果酒店智能体做大了,需要改回 develop 分支吗?

A: 可以根据团队规模调整:

  • 团队 < 5 人:保持单分支
  • 团队 > 5 人:考虑引入 develop 分支
  • 灵活调整,不要过度设计

相关文档