# Factory Registry

> **PR-36 Part A**：SF-01 ~ SF-15 Factory 注册中心。

---

## 概述

Factory Registry 是 Software Factory Core 的注册中心，管理全部 15 个 Factory 的元数据。

Registry 本身**不包含 Factory 实现**。每个 Factory 的实现通过 `registerImplementation()` 外部注入，确保松耦合和可测试性。

---

## SF-01 ~ SF-15 Factory 清单

### SF-01 · 产品战略工厂

- **领域**: product-strategy
- **输入**: other
- **输出**: requirement, report
- **描述**: 市场分析、竞品研究、产品定位、战略路线图
- **依赖**: 无

### SF-02 · 需求工程工厂

- **领域**: requirement-engineering
- **输入**: requirement
- **输出**: requirement, prototype
- **描述**: PRD 生成、需求拆解、用例建模、验收标准定义
- **依赖**: SF-01 (data)

### SF-03 · 产品设计工厂

- **领域**: product-design
- **输入**: requirement
- **输出**: design, prototype
- **描述**: 信息架构、交互流程、页面结构、原型设计
- **依赖**: SF-02 (data)

### SF-04 · 视觉设计工厂

- **领域**: visual-design
- **输入**: design, prototype
- **输出**: design
- **描述**: 设计系统、组件库、视觉稿、品牌规范
- **依赖**: SF-03 (data)

### SF-05 · 技术架构工厂

- **领域**: architecture
- **输入**: requirement, design
- **输出**: architecture, code
- **描述**: ADR、技术选型、系统设计、API 设计
- **依赖**: SF-02 (data), SF-03 (soft)

### SF-06 · 平台规划工厂

- **领域**: platform-planning
- **输入**: architecture
- **输出**: architecture, report
- **描述**: 基础设施规划、部署架构、容量规划、成本估算
- **依赖**: SF-05 (data)

### SF-07 · 全栈开发工厂

- **领域**: full-stack-development
- **输入**: architecture, design, requirement
- **输出**: code, test
- **描述**: 前端/后端/数据库/API 全栈开发
- **依赖**: SF-05 (hard), SF-04 (soft), SF-06 (soft)

### SF-08 · Agent 协作工厂

- **领域**: agent-collaboration
- **输入**: requirement, code
- **输出**: code, report
- **描述**: 多 Agent 编排、通信协议、任务分配
- **依赖**: SF-02 (soft)

### SF-09 · 质量治理工厂

- **领域**: quality-governance
- **输入**: code, test, architecture
- **输出**: report, other
- **描述**: 代码审查、质量门禁、合规检查、技术债务管理
- **依赖**: SF-07 (hard)

### SF-10 · 测试工厂

- **领域**: testing
- **输入**: code, architecture
- **输出**: test, report
- **描述**: 单元测试、集成测试、E2E 测试、性能测试、安全测试
- **依赖**: SF-07 (hard), SF-09 (soft)

### SF-11 · 发布工厂

- **领域**: release
- **输入**: code, test, report
- **输出**: release, report
- **描述**: 版本管理、发布流水线、制品管理、部署编排
- **依赖**: SF-09 (hard), SF-10 (hard)

### SF-12 · 运维工厂

- **领域**: operations
- **输入**: release, report
- **输出**: operations, report
- **描述**: 监控告警、日志管理、故障处理、性能优化
- **依赖**: SF-11 (trigger)

### SF-13 · 演进工厂

- **领域**: evolution
- **输入**: operations, report
- **输出**: requirement, report
- **描述**: 产品迭代规划、技术演进、架构升级
- **依赖**: SF-12 (data), SF-01 (soft)

### SF-14 · 增长工厂

- **领域**: growth
- **输入**: operations, report
- **输出**: report, marketing
- **描述**: 数据分析、A/B 测试、用户增长、转化优化
- **依赖**: SF-12 (data)

### SF-15 · 软件公司工厂

- **领域**: software-company
- **输入**: report
- **输出**: report
- **描述**: 项目管理、资源分配、团队协作、财务规划、公司运营
- **依赖**: SF-01 (soft), SF-13 (soft), SF-14 (soft)

---

## 依赖图（完整）

```
SF-01 ──→ SF-02 ──→ SF-03 ──→ SF-04
  │         │                    │
  │         └──→ SF-05 ──→ SF-06  │
  │                    │         │
  │                    ▼         ▼
  │              SF-07 Development
  │               │         │
  │               ▼         ▼
  │           SF-09     SF-10
  │               │         │
  │               └──→ SF-11 ←──┘
  │                       │
  │                       ▼
  │                   SF-12
  │                  │      │
  │                  ▼      ▼
  └──────────→ SF-13     SF-14
                  │        │
                  └──→ SF-15 ←──┘
```

---

## 并行执行批次

基于依赖图分析，可并行执行的批次：

| 批次 | Factory | 说明 |
|------|---------|------|
| 1 | SF-01 | 无依赖，先执行 |
| 2 | SF-02 | 依赖 SF-01 |
| 3 | SF-03, SF-05, SF-08 | 并行 |
| 4 | SF-04, SF-06 | 并行 |
| 5 | SF-07 | 依赖 SF-04/05/06 |
| 6 | SF-09, SF-10 | 并行 |
| 7 | SF-11 | 依赖 SF-09/10 |
| 8 | SF-12 | 依赖 SF-11 |
| 9 | SF-13, SF-14 | 并行 |
| 10 | SF-15 | 依赖 SF-01/13/14 |

---

## Factory 状态

| 状态 | 含义 |
|------|------|
| `registered` | 已注册元数据，待激活（默认） |
| `active` | 已激活，实现了 `registerImplementation()` |
| `deprecated` | 已废弃，不推荐使用 |
| `disabled` | 已禁用 |

---

## 使用

```javascript
import { createFactoryRegistry } from './src/software-factory-core/index.mjs';

const registry = createFactoryRegistry();

// 查询
const sf07 = registry.get("SF-07");

// 依赖分析
const deps = registry.getDependencies("SF-07");
const dependents = registry.getDependents("SF-05");

// 注入实现
registry.registerImplementation("SF-01", myStrategy);

// 执行
registry.execute("SF-01", input);
```

---

*Part of PR-36 Software Factory Core*
