Repository for fischer user
Go to file
fischer e053be2c3e fix: 修复CLI模板路径解析bug 2026-05-25 10:19:46 +08:00
.github feat: FischerX开发底座初始化提交 2026-05-25 09:50:16 +08:00
.trae/specs/initialize-fischerx-foundation feat: FischerX开发底座初始化提交 2026-05-25 09:50:16 +08:00
apps feat: FischerX开发底座初始化提交 2026-05-25 09:50:16 +08:00
docs feat: FischerX开发底座初始化提交 2026-05-25 09:50:16 +08:00
infra feat: FischerX开发底座初始化提交 2026-05-25 09:50:16 +08:00
packages feat: FischerX开发底座初始化提交 2026-05-25 09:50:16 +08:00
services/api feat: FischerX开发底座初始化提交 2026-05-25 09:50:16 +08:00
tools fix: 修复CLI模板路径解析bug 2026-05-25 10:19:46 +08:00
.editorconfig feat: FischerX开发底座初始化提交 2026-05-25 09:50:16 +08:00
.env.example feat: FischerX开发底座初始化提交 2026-05-25 09:50:16 +08:00
.eslintrc.js feat: FischerX开发底座初始化提交 2026-05-25 09:50:16 +08:00
.gitignore feat: FischerX开发底座初始化提交 2026-05-25 09:50:16 +08:00
.prettierrc feat: FischerX开发底座初始化提交 2026-05-25 09:50:16 +08:00
CHANGELOG.md feat: FischerX开发底座初始化提交 2026-05-25 09:50:16 +08:00
FischerX开发计划.md feat: FischerX开发底座初始化提交 2026-05-25 09:50:16 +08:00
FischerX文档管理规范.md feat: FischerX开发底座初始化提交 2026-05-25 09:50:16 +08:00
FischerX架构设计方案.md feat: FischerX开发底座初始化提交 2026-05-25 09:50:16 +08:00
README.md feat: FischerX开发底座初始化提交 2026-05-25 09:50:16 +08:00
docker-compose.yml feat: FischerX开发底座初始化提交 2026-05-25 09:50:16 +08:00
package.json feat: FischerX开发底座初始化提交 2026-05-25 09:50:16 +08:00
pnpm-lock.yaml feat: FischerX开发底座初始化提交 2026-05-25 09:50:16 +08:00
pnpm-workspace.yaml feat: FischerX开发底座初始化提交 2026-05-25 09:50:16 +08:00
tsconfig.json feat: FischerX开发底座初始化提交 2026-05-25 09:50:16 +08:00
turbo.json feat: FischerX开发底座初始化提交 2026-05-25 09:50:16 +08:00
第二阶段剩余任务实施计划.md feat: FischerX开发底座初始化提交 2026-05-25 09:50:16 +08:00
第二阶段开发进度报告.md feat: FischerX开发底座初始化提交 2026-05-25 09:50:16 +08:00

README.md

FischerX

Fischer公司开发底座 — 适配国内运行环境的全栈Monorepo项目理念对标John Rush的Mars Stack/Mars Foundation。

技术栈

前端

  • 框架: Next.js 14+ (App Router)
  • 语言: TypeScript (严格模式)
  • 样式: Tailwind CSS
  • UI组件: Shadcn UI
  • 状态管理: Zustand + React Query
  • 表单: React Hook Form + Zod
  • 测试: Vitest + Playwright

后端

  • 框架: NestJS
  • ORM: Prisma
  • 数据库: PostgreSQL
  • 缓存: Redis
  • 认证: JWT + Passport
  • 测试: Jest

基础设施

  • 容器化: Docker + Docker Compose
  • 编排: Kubernetes (阿里云ACK)
  • IaC: Terraform
  • CI/CD: GitHub Actions
  • 监控: Prometheus + Grafana + Loki + Jaeger

工具链

  • 包管理: pnpm
  • 构建系统: Turborepo
  • 代码规范: ESLint + Prettier
  • CLI工具: @fischerx/cli

核心模块

模块 说明 状态
用户管理 用户CRUD、头像上传 完成
认证授权 JWT、Session、手机号登录、微信/支付宝OAuth、实名认证、MFA 完成
权限控制 RBAC模型、角色管理、权限分配、装饰器守卫 完成
文件存储 阿里云OSS、腾讯云COS、MinIO、图片处理、CDN 完成
支付系统 支付宝、微信支付、银联适配器、退款、对账 完成
消息通知 邮件、短信、推送、站内信(适配器模式) 完成
内容管理 文章、分类、标签、评论、版本控制 后端完成
监控告警 Prometheus + Grafana + AlertManager + Loki + Jaeger 完成
CLI工具 项目初始化、代码生成、部署命令 完成

快速开始

环境要求

  • Node.js >= 18.0.0
  • pnpm >= 8.0.0
  • Docker & Docker Compose
  • PostgreSQL 15+
  • Redis 7+

安装

# 克隆项目
git clone http://8.153.107.96/fischer/fischerX.git
cd fischerX

# 安装依赖
pnpm install

本地开发

# 1. 启动基础设施PostgreSQL + Redis
docker-compose up -d postgres redis

# 2. 配置环境变量
cp services/api/.env.example services/api/.env
# 编辑 .env 填入数据库连接、Redis连接、JWT密钥等

# 3. 运行数据库迁移
cd services/api
npx prisma migrate dev
cd ../..

# 4. 启动后端API服务
cd services/api
pnpm start:dev

# 5. 启动前端Web应用
cd apps/web
pnpm dev

访问地址

服务 地址
前端Web http://localhost:3000
后端API http://localhost:3001/api/v1/health
Grafana http://localhost:3001 (admin/fischerx123)
Prometheus http://localhost:9090
Jaeger http://localhost:16686

项目结构

FischerX/
├── apps/                        # 应用层
│   ├── web/                     # Web应用 (Next.js)
│   └── admin/                   # 管理后台 (占位)
├── packages/                    # 共享包
│   ├── core/                    # 核心业务逻辑 (@fischerx/core)
│   ├── ui/                      # 共享UI组件 (@fischerx/ui)
│   ├── utils/                   # 工具函数 (@fischerx/utils)
│   ├── types/                   # 类型定义 (@fischerx/types)
│   ├── config/                  # 配置管理 (@fischerx/config)
│   └── constants/               # 常量定义 (@fischerx/constants)
├── services/                    # 后端服务
│   └── api/                     # API服务 (NestJS)
│       ├── prisma/              # 数据库Schema
│       └── src/modules/         # 业务模块
│           ├── auth/            # 认证授权
│           ├── rbac/            # 权限控制
│           ├── user/            # 用户管理
│           ├── file/            # 文件存储
│           ├── payment/         # 支付系统
│           ├── notification/    # 消息通知
│           ├── content/         # 内容管理
│           ├── health/          # 健康检查
│           ├── cache/           # 缓存服务
│           └── monitoring/      # 监控集成
├── infra/                       # 基础设施
│   ├── db/                      # 数据库Docker配置
│   ├── k8s/                     # Kubernetes配置
│   ├── monitoring/              # 监控栈 (Prometheus/Grafana/Loki/Jaeger)
│   ├── terraform/               # 阿里云资源管理
│   └── envs/                    # 多环境配置 (dev/test/prod)
├── tools/                       # 开发工具
│   └── cli/                     # CLI工具 (@fischerx/cli)
├── docs/                        # 文档
│   ├── architecture/            # 架构文档
│   ├── requirements/            # 需求文档
│   ├── design/                  # 设计文档
│   ├── development/             # 开发文档
│   ├── api/                     # API文档
│   ├── testing/                 # 测试文档
│   ├── deployment/              # 部署文档
│   ├── operations/              # 运维文档
│   ├── user/                    # 用户文档
│   └── templates/               # 文档模板
├── .github/workflows/           # CI/CD (8个Workflow)
├── docker-compose.yml           # Docker Compose
├── turbo.json                   # Turborepo配置
├── pnpm-workspace.yaml          # pnpm工作空间
└── package.json                 # 根package.json

API端点

认证授权

方法 路径 说明
POST /api/v1/auth/register 用户注册
POST /api/v1/auth/login 密码登录
POST /api/v1/auth/sms/send 发送验证码
POST /api/v1/auth/sms/login 验证码登录
POST /api/v1/auth/wechat/login 微信OAuth登录
POST /api/v1/auth/alipay/login 支付宝OAuth登录
POST /api/v1/auth/realname/verify 实名认证
POST /api/v1/auth/mfa/enable 启用MFA
POST /api/v1/auth/mfa/verify 验证MFA

用户管理

方法 路径 说明
GET /api/v1/users/me 当前用户信息
PUT /api/v1/users/me 更新用户信息
POST /api/v1/users/me/avatar 上传头像
GET /api/v1/users 用户列表 (管理员)

权限控制

方法 路径 说明
CRUD /api/v1/roles 角色管理
CRUD /api/v1/permissions 权限管理
POST /api/v1/roles/:id/permissions 分配权限
POST /api/v1/users/:id/roles 分配角色

支付系统

方法 路径 说明
POST /api/v1/payment/orders 创建支付订单
GET /api/v1/payment/orders/:id 查询订单
POST /api/v1/payment/refunds 申请退款
POST /api/v1/payment/callback/:channel 支付回调

文件存储

方法 路径 说明
POST /api/v1/files/upload 上传文件
GET /api/v1/files 文件列表
GET /api/v1/files/:id 文件详情
DELETE /api/v1/files/:id 删除文件

消息通知

方法 路径 说明
POST /api/v1/notifications 发送通知
GET /api/v1/notifications 通知列表
PUT /api/v1/notifications/:id/read 标记已读

底座使用方式

方式一Monorepo模式推荐

在FischerX Monorepo中创建新应用自动继承共享包

fischerx create-app my-crm --type=admin

方式二:独立项目模式

从FischerX模板创建独立项目

fischerx init client-project --template=standalone

方式三API服务模式

部署FischerX作为共享服务通过API调用底座功能。

CLI工具

# 安装
cd tools/cli && pnpm install && pnpm build

# 项目管理
fischerx init <project-name>          # 初始化新项目
fischerx create-app <app-name>        # 创建新应用
fischerx create-package <pkg-name>    # 创建新共享包

# 代码生成
fischerx generate page <name>         # 生成页面
fischerx generate component <name>    # 生成组件
fischerx generate api <name>          # 生成API
fischerx generate module <name>       # 生成完整模块

# 部署
fischerx deploy --env dev             # 部署到开发环境
fischerx deploy --env prod            # 部署到生产环境

# 其他
fischerx doctor                       # 检查项目健康
fischerx info                         # 显示项目信息

国内环境适配

维度 适配方案
云服务 阿里云(首选)、腾讯云(备选)、华为云(备选)
认证 手机号验证码、微信OAuth、支付宝OAuth、实名认证
支付 微信支付、支付宝、银联
存储 阿里云OSS、腾讯云COS、MinIO私有化
短信 阿里云短信
邮件 SMTP / 阿里云邮件
监控 Prometheus + Grafana / 阿里云ARMS
日志 Loki / 阿里云SLS
部署 阿里云ACK / 自建K8s
CDN 阿里云CDN

可用脚本

脚本 说明
pnpm install 安装所有依赖
pnpm build 构建所有包和应用
pnpm dev 启动开发服务器
pnpm lint 运行ESLint检查
pnpm test 运行所有测试
pnpm format 使用Prettier格式化代码

待完善功能

优先级 功能 说明
P0 订单系统模块 独立Order模块订单状态机
P0 企业微信通知 WeComChannelService适配器
P0 邮件真实发送 集成Nodemailer/阿里云邮件
P0 短信真实发送 集成阿里云短信SDK
P1 用户管理前端页面 用户列表/编辑/删除
P1 通知中心前端页面 通知列表/设置
P1 订单前端页面 订单列表/详情
P2 支付真实SDK集成 支付宝/微信支付真实SDK
P2 内容审核 阿里云绿网内容安全
P2 @fischerx/client-sdk 客户端SDK包

License

Private - Fischer Company