# 00 · 全栈总览与开发 SOP

## 一、核心理念

FmodeStudio 已把「前端 → 后端 → 服务器 → 数据库」整条链路封装为现成能力。用户用自然语言描述需求，你（Claude）负责把需求落地成可运行的项目，**用户全程不需要懂技术细节**。

```
用户用对话描述业务
        │
        ▼
你设计数据模型(Schema) ──► 用 FmodeSchema 自动建表(Parse Server / PostgreSQL)
        │
        ▼
你搭前端模块(优先 Angular + fmode-ng) ──► 增删改查直接走 Parse 前端 SDK
        │
        ├──► 特殊逻辑 ──► Parse Claude Code（cloud/main.js）
        │                 钩子 / 聚合 / 简单的服务端逻辑
        │
        ├──► 即时生效接口 ──► 动态云函数（fmode-functions-api）
        │                    存 DB Function 表，通过 /api/functions 执行
        │
        ├──► 第三方对接 ──► 自定义 API 模块（api/module/*/routes.ts）
        │                    Express Router 挂载到 /api/<feature>
        │
        ▼
构建发布 ──► 模式 A：FmodeStudio 平台一键部署（fmode/studio server）
            模式 B：自建 Express + Parse Server 手动部署（见 rules/08-server.md）
```

## 二、标准目录结构

```
项目根目录/
├── .claude/                   # Claude Code 规则（平台自动生成）
├── .vscode/                   # IDE 配置
│
├── src/                       # 前端 Angular 源码
│   ├── app/
│   │   ├── app.routes.ts      # 路由（懒加载各页面）
│   │   ├── app.config.ts      # 应用配置（初始化 FmodeParse）
│   │   ├── app.ts             # 根组件
│   │   ├── core/              # 核心（单例服务、守卫、类型）
│   │   │   ├── models/        # 全局类型接口
│   │   │   ├── services/      # 全局服务（api / auth / state 等）
│   │   │   └── guards/        # 路由守卫
│   │   ├── shared/            # 共享组件
│   │   ├── layouts/           # 布局组件（Desktop / Mobile）
│   │   └── pages/             # 业务页面（每个页面一个目录）
│   │       ├── login/
│   │       ├── dashboard/
│   │       ├── orders/
│   │       └── <feature>/
│   ├── assets/data/           # Mock 数据 JSON
│   └── styles/                # 全局样式、主题
│
├── public/                    # 静态资源（图片等）
│
├── config.json                # Parse Server 配置（两模式通用）
├── server.ts                  # 模式 B 入口（Express + Parse Server）
│
├── api/                       # 自定义 API 模块接口
│   ├── routes.ts              # 桶文件：汇总所有子模块
│   └── module/
│       └── <feature>/
│           └── routes.ts      # export default Router → /api/<feature>
│
├── cloud/                     # Parse Claude Code
│   └── main.js                # Parse.Cloud.define() 云函数和钩子
│
├── modules/                   # （可选）CDN 可加载模块的本地副本
│
├── docs/                      # 文档
│   └── schema/                # PlantUML 数据范式
│
├── package.json               # 前端依赖
├── angular.json               # Angular 构建配置
└── proxy.conf.json            # 前端 API 代理配置
```

> 划分原则：**一个业务域 = 一个模块**；跨模块复用的放 `shared`。

## 三、开发 SOP（按顺序执行）

1. **理解业务**：把用户的口语需求拆成「实体（表）+ 关系 + 页面/功能」。只在业务语义不清时才追问。
2. **建模 → 建表**：
   - 在 `docs/schema/` 写 PlantUML 数据范式（见 `03-database-schema.md`）。
   - 用 `FmodeSchema` 写建表脚本并执行（`useMasterKey`），完成 Parse Server 建表。
   - 复用预设类：`_User / Company / Department / Profile / Account`，业务表带 `company` + `isDeleted`。
3. **配置后端**：
   - 创建 `config.json`（appId / databaseURI / serverURL 等）
   - 模式 B 时创建 `server.ts`（见 `08-server.md` 模板）
   - 创建 `cloud/main.js`（至少一个占位云函数）
4. **搭前端骨架**：建页面目录、配路由（懒加载）、装 `fmode-ng`、在 `app.config` 初始化 `FmodeParse`。
5. **Mock 先行**：用符合规范的 Mock 数据（保留真实关联）把界面跑起来（`05-mock-data.md`）。
6. **接真实数据**：把 Mock 替换为 `fmode-ng` 的 `Parse.Query / Parse.Object` 调用（`02-fmode-ng.md`）。
7. **特殊逻辑**：
   - 数据钩子 / 简单逻辑 → Parse Claude Code（`cloud/main.js`）
   - 即时生效的用户接口 → 动态云函数（`04-cloud-functions.md`）
   - 第三方对接 / 独立服务 → `api/module/` 自定义路由（`08-server.md`）
8. **发布**：模式 A 平台一键部署；模式 B 手动 PM2 + Nginx（`06-deploy.md`）。

## 四、给用户的沟通风格

- 用业务语言解释「做了什么」，不要堆术语。
- 不要把「建表/连库/配服务器」的复杂度抛给用户——你来做。
- 每完成一个可见里程碑（界面能看、数据能存）就告诉用户。
