这是一个基于 pnpm workspace 的多应用业务后台仓库,当前采用 Vue 3 + TypeScript 前端、NestJS + Prisma 后端、PostgreSQL 数据库,并通过 qiankun 承载统一主应用与业务子应用。
当前主线已经覆盖三类能力:
- 统一后台基础:登录鉴权、角色权限、平台治理、主应用壳层、主规格与架构约束
- 业务域能力:SCRM 客户/线索/商机/经营闭环,OA 工作台/审批/公告/通讯录/行政申请
- 多租户扩展:租户隔离、租户运营、产品配置、开放平台、通知中心、工作流与企业交付底座
apps/main-web:统一前端主应用,负责登录入口、导航壳层、平台原生页面与 OA/SCRM 子应用承载apps/scrm-web:SCRM 业务前端,覆盖客户、线索、商机、经营看板与系统管理apps/oa-web:OA 业务前端,覆盖工作台、审批、请假、行政申请、公告与通讯录apps/api:共享后端服务,工作区包名为platform-apiapps/api/prisma:数据库 schema、迁移与种子脚本docs/development.md:开发与验证约定openspec/specs:当前主规格openspec/changes/archive:已归档的 OpenSpec 变更记录
前端工作区统一遵循 apps/<domain>-web 命名约定。
- 统一登录、会话续期、主动退出、平台级 RBAC 与数据范围控制
- 主应用统一导航壳层、
/platform/**平台治理域、/workfeed统一待办与通知入口 - 平台治理工作台:部门、员工、角色、跨应用权限、细粒度策略预览
- 多租户基础:显式租户归属、请求租户上下文、仓储层租户收口
- 租户运营控制台:租户生命周期、状态与运营视图
- 产品配置中心:租户菜单、字段、表单与模板配置
- OA 工作台、请假申请、待我审批、我发起的申请
- 报销、出差、采购、用印等行政申请
- 公告通知、公告详情、组织通讯录
- 流程模板、流程节点、流程实例、任务、抄送与审批人解析
- 客户档案、标签、来源、状态、归属管理
- 线索、提醒、分配、转化与跟进
- 商机创建、阶段推进、归属调整、赢单/输单收口
- 赢单后经营闭环:报价、合同、回款计划、回款记录、续费提醒
- 经营看板:漏斗、排行、回款预测、审批时效等视图
- 租户级 Open API、Webhook、身份连接器治理
- 统一通知中心与跨域消息事件
- 审计日志、附件上传下载、批处理任务与基础治理接口
- 企业交付底座:可替换存储、异步任务与基础调度治理
openspec/specs 已同步为当前主规格,主要包含以下能力域:
- 平台基础:
access-control、backoffice-super-app-shell、backoffice-visual-language、codebase-architecture - 平台治理:
platform-governance-workspace、granular-access-governance、system-administration - 多租户平台:
tenant-isolation-foundation、tenant-operations-console、product-configuration-center、open-integration-platform - OA 与流程:
office-automation-workspace、administrative-requests、configurable-workflow-engine、unified-workfeed-center、enterprise-notification-center - SCRM 与经营:
customer-management、lead-followup、sales-opportunity-management、revenue-operations、operations-dashboard - 交付底座:
enterprise-delivery-foundation
最近已归档的重要变更包括:
2026-04-17-stage-2-add-configurable-workflows-and-governance2026-04-18-stage-3-build-multi-tenant-open-platform2026-04-18-fix-multitenant-boundaries-and-microapp-contracts
- Node.js
20.x pnpm 10.x- Docker Desktop 或可用的 Docker daemon
pnpm install仓库当前提供以下模板文件:
.env.exampleapps/api/.env.exampleapps/main-web/.env.exampleapps/oa-web/.env.exampleapps/scrm-web/.env.exampledocs/development.md
核心变量说明:
- 根目录
.env:POSTGRES_DB、POSTGRES_USER、POSTGRES_PASSWORD、POSTGRES_PORT、JWT_SECRET apps/api/.env:PORT、JWT_SECRET、DATABASE_URLapps/main-web/.env:VITE_API_BASE_URL、VITE_OA_ENTRY、VITE_SCRM_ENTRYapps/oa-web/.env:VITE_API_BASE_URLapps/scrm-web/.env:VITE_API_BASE_URL
默认模板口径:
- 数据库默认映射宿主机
5433 - API 默认地址
http://localhost:3000/api - 主应用默认加载
http://localhost:5174的 OA 子应用与http://localhost:5173的 SCRM 子应用
初始化数据库与 Prisma:
pnpm docker:infra
pnpm prisma:generate
pnpm prisma:migrate
pnpm prisma:seed启动本地热更新开发:
pnpm dev:full常用命令:
pnpm dev:apipnpm dev:main-webpnpm dev:oa-webpnpm dev:scrm-webpnpm docker:infra:logspnpm docker:infra:down
默认本地地址:
- 主应用:
http://localhost:5175 - SCRM 前端:
http://localhost:5173 - OA 前端:
http://localhost:5174 - 后端 API:
http://localhost:3000/api - Swagger:
http://localhost:3000/docs - PostgreSQL:
localhost:5433
说明:
pnpm dev:full会并行启动platform-api、main-web、oa-web和scrm-web- 主应用通过
qiankun从 OA 与 SCRM 开发服务加载业务内容 - 日常开发优先使用本地热更新链路,而不是每次都重建容器镜像
当前 docker-compose.yml 启动的是:
postgresapiscrm-web
执行命令:
pnpm docker:up停止容器:
pnpm docker:down查看日志:
pnpm docker:logs当前 Docker 默认地址:
- Docker 前端:
http://localhost:8080 - Docker API:
http://localhost:3000/api - Docker Swagger:
http://localhost:3000/docs - Docker 健康检查:
http://localhost:3000/api/health
说明:
- 现有 Docker 编排主要用于 PostgreSQL、API 与
scrm-web的容器化联调 main-web与oa-web当前仍以本地开发服务联调为主
常用命令:
pnpm prisma:generate
pnpm prisma:migrate
pnpm prisma:seed默认种子账号:
- 用户名:
admin - 密码:
Admin123456!
默认角色:
super-adminsales-managersales-member
oa-web与scrm-web在qiankun宿主模式下,登录失效、主动退出和无权限页返回登录都会统一跳到主应用/login- 主应用与子应用已对齐同一路径的页面权限键,避免宿主菜单与子应用页面权限漂移
- OA、流程与开放平台相关仓储链路已收口到显式租户约束
- 租户级系统管理只保留本租户能力,不直接暴露平台级通知、存储和调度治理配置
- 平台级治理接口不再复用租户级字典权限码
后端主要模块目录:
apps/api/src/modules/authapps/api/src/modules/customersapps/api/src/modules/leadsapps/api/src/modules/sales-opportunitiesapps/api/src/modules/revenue-operationsapps/api/src/modules/office-automationapps/api/src/modules/workflowapps/api/src/modules/unified-workfeedapps/api/src/modules/notification-centerapps/api/src/modules/open-integrationapps/api/src/modules/product-configurationapps/api/src/modules/tenant-operationsapps/api/src/modules/system-governanceapps/api/src/modules/batch-tasksapps/api/src/modules/uploadsapps/api/src/modules/audit-logs
前端主要页面入口:
- 主应用:
apps/main-web/src/pages - OA:
apps/oa-web/src/pages - SCRM:
apps/scrm-web/src/pages
类型检查:
pnpm --filter platform-api lint
pnpm --filter main-web lint
pnpm --filter oa-web lint
pnpm --filter scrm-web lint单元测试:
pnpm --filter platform-api test
pnpm --filter main-web test
pnpm --filter oa-web test
pnpm --filter scrm-web test构建:
pnpm --filter platform-api build
pnpm --filter main-web build
pnpm --filter oa-web build
pnpm --filter scrm-web build仓库级校验:
pnpm prisma:generate
pnpm lint
pnpm test
pnpm buildCI 工作流位于 .github/workflows/ci.yml。
- 当前 README 已按现有仓库结构、OpenSpec 主规格和归档状态更新
openspec/changes当前没有活动 change,最新变更已归档到openspec/changes/archive- 目前唯一保留的仓库级文档入口是
docs/development.md,原 README 中过期的阶段文档链接已移除 - 当前 Docker 编排、开发命令、测试命令与前端工作区列表已与实际
package.json和docker-compose.yml对齐