AI SDD 工具 — 规范开发文档
SDD 调研 · AI 工具调研 · AI 总索引 · 商业
文档定位
本文以 SDD(规格驱动开发)自身形式,定义一款 Web 端 SDD 工具 的完整产品规格。
- 目标场景:0-to-1 项目搭建 / 存量项目重构
- 核心能力:用户在网页上写规格,工具调用 AI 生成首版代码并打包
- 商业模型:¥27 买断制 + 订阅/积分增值
- 本文用途:作为产品开发的”单一事实来源”,直接驱动 AI 生成实现代码
1. 产品概述(Overview)
1.1 一句话定义
一款让用户通过写规格(Spec)而非代码,让 AI 直接生成可用项目骨架的 Web 工具。
1.2 目标用户
| 用户类型 | 核心痛点 | 本工具价值 |
|---|---|---|
| 个人开发者 | 从 0 搭项目骨架耗时(选型/结构/配置) | 10 分钟出首版,可直接开发业务 |
| 中小企业 | 重构旧项目,文档缺失 | 强制写规格,生成新结构 + 迁移建议 |
| 外包团队 | 多项目并行,初始搭建重复 | 一次写规,多项目复用 |
| 学习者 | 不知道完整项目应该长什么样 | 参考生成的骨架学习最佳实践 |
1.3 核心价值主张
传统路径:想法 → 选型 → 搭结构 → 写配置 → 写代码(2-5 天)
本工具:想法 → 写规格(SDD 文档) → 30 秒出首版 → 立即开发业务
2. 场景与流程(Scenarios & Flows)
2.1 两种使用场景
flowchart TD A["用户进入 web"] --> B{"使用场景"} B -->|"0-to-1 新建"| C["空白项目<br/>从需求开始"] B -->|"存量重构"| D["上传现有项目<br/>解析结构"] C --> E["填写 SDD 规格<br/>(项目描述/技术栈/功能清单)"] D --> E E --> F["AI 生成首版代码<br/>服务器端执行"] F --> G["打包 zip"] G --> H["下载"] H --> I{"后续使用"} I -->|"订阅"| J["调用 API<br/>修改/补充代码"] I -->|"积分"| K["按量扣积分<br/>调用 API"]
2.2 详细流程
| 阶段 | 用户动作 | 系统响应 | 耗时 |
|---|---|---|---|
| 1. 注册 | 邮箱/手机注册 | 创建账户,送初始额度 | < 1 min |
| 2. 选场景 | 选”新建”或”重构” | 加载对应模板 | < 10 s |
| 3. 写规格 | 填写 SDD 文档(项目描述/技术栈/功能/约束) | 实时保存,本地缓存 | 5-30 min |
| 4. 触发生成 | 点击”生成首版” | 调用 AI,生成项目骨架 | 30 s - 3 min |
| 5. 预览 | 查看文件树 + 关键文件内容 | 静态展示 | — |
| 6. 下载 | 点击下载 | 服务端打包 zip,返回下载链接 | 10-30 s |
| 7. 后续使用 | 通过 API 调用,持续修改/补充代码 | 返回 diff 或新文件 | 5-30 s |
3. 账户体系(Account System)
3.1 核心账户模型
erDiagram User ||--o{ Subscription : "1对多(历史订单)" User ||--|| Wallet : "1对1(积分钱包)" User ||--o{ Project : "1对多" User ||--o{ GenerationLog : "1对多" User { int id PK string email string phone string password_hash string nickname string avatar_url string language "zh-CN/en-US" string timezone string last_login_ip datetime created_at datetime last_login_at boolean is_banned } Wallet { int id PK int user_id FK int credits_remaining "剩余积分" int credits_total "历史总获得" datetime updated_at } Subscription { int id PK int user_id FK string plan_type "monthly/yearly" string status "active/expired/cancelled" datetime start_at datetime end_at decimal price_paid string payment_channel } Project { int id PK int user_id FK string name string scenario "new/refactor" jsonb spec "SDD 规格全文" text generated_files "生成的文件树(JSON)" string zip_url "打包文件地址" datetime created_at } GenerationLog { int id PK int user_id FK int project_id FK string action "first_generation/api_call/refactor" int credits_used jsonb prompt jsonb response int duration_ms datetime created_at }
3.2 登录与认证
| 方式 | 优先级 | 备注 |
|---|---|---|
| 邮箱 + 密码 | 主推 | bcrypt 哈希,salt rounds=12 |
| 手机 + 短信验证码 | 主推 | 国内用户首选 |
| 微信扫码登录 | 辅助 | 大陆用户偏好 |
| Google/GitHub OAuth | 海外 | 海外用户 |
| 游客模式 | 体验 | 允许试生成 1 次,提示注册 |
认证机制:JWT + Refresh Token,Access Token 有效期 15 min,Refresh Token 30 天。
3.3 语言与地域
- 前端支持:中英文(基于
react-i18next或next-intl) - 默认语言判定(按优先级):
- 用户设置 > 历史选择
- 浏览器
navigator.language - IP 地理位置(调用 IP 库如 MaxMind GeoLite2)
- 默认
zh-CN(国内用户占比预期较高)
- IP 库选择:MaxMind GeoLite2(免费) 或 ipinfo.io($249/月,精度更高)
// 语言判定伪代码
function determineLanguage(user: User, req: Request): 'zh-CN' | 'en-US' {
if (user?.language) return user.language;
if (req.cookies.lang) return req.cookies.lang;
if (req.headers['accept-language']?.startsWith('zh')) return 'zh-CN';
const geo = geoip.lookup(req.ip);
if (geo?.country === 'CN') return 'zh-CN';
return 'en-US';
}4. 商业模型(Commercial Model)
4.1 双轨制:买断 + 订阅
flowchart LR A["用户"] --> B{"首次使用"} B -->|"买断"| C["¥27 一次性<br/>+ 赠送 200 积分"] B -->|"试用"| D["免费 1 次<br/>生成首版"] C --> E["账户有钱包<br/>可调用 API"] D --> F["生成后弹窗<br/>引导付费"] E --> G{"后续使用"} G -->|"订阅 Pro"| H["¥29/月<br/>无限 API 调用"] G -->|"买积分包"| I["¥9.9/100 积分<br/>¥49/600 积分"] G -->|"不再付费"| J["保留买断项目<br/>无法 API 调用"]
4.2 价格表
| 项目 | 价格 | 包含额度 | 适用场景 |
|---|---|---|---|
| 买断版 | ¥27 (一次性) | 200 积分(可生成 1-2 个项目) | 个人尝鲜 |
| Pro 月度 | ¥29/月 | 无限 API 调用 | 重度开发者 |
| Pro 年度 | ¥268/年 | 无限 API 调用 + 早鸟新功能 | 重度开发者(省 ¥80) |
| 积分包 A | ¥9.9 | 100 积分 | 轻度补充 |
| 积分包 B | ¥49 | 600 积分 | 中度补充(单价最低) |
| 企业版 | 议价 | 私有部署 + SLA | 团队 |
4.3 积分消耗规则
| 操作 | 积分消耗 | 说明 |
|---|---|---|
| 首次生成首版 | 100 | 买断赠送的 200 积分可生成 1-2 个项目 |
| 调用 API 改一个文件 | 5 | 小修改 |
| 调用 API 添加一个功能模块 | 30 | 中等 |
| 调用 API 重构整个目录 | 100+ | 大型操作,按规模计费 |
| 解析存量项目 | 50 | 重构场景前置 |
| 失败重试 | 不扣 | 30 分钟内不重复扣费 |
4.4 支付渠道
| 渠道 | 适用地区 | 费率 |
|---|---|---|
| 微信支付 | 大陆 | 0.6% |
| 支付宝 | 大陆 | 0.6% |
| Stripe | 海外 | 2.9% + $0.3 |
| PayPal | 海外 | 3.5% + $0.3 |
收款方案见 全球收款方案
5. 核心功能设计(Core Features)
5.1 SDD 规格编辑器
形式:Web 表单 + Markdown 编辑器混合
结构化字段(对应 SDD 文档模板):
interface ProjectSpec {
// 基础信息
name: string; // 项目名
scenario: 'new' | 'refactor'; // 场景
description: string; // 一句话描述
// 技术栈
frontend: {
framework: 'nextjs' | 'vite-react' | 'nuxt' | 'svelte';
language: 'typescript' | 'javascript';
styling: 'tailwind' | 'css-modules' | 'styled-components';
ui: 'shadcn' | 'antd' | 'mui' | 'none';
};
backend: {
runtime: 'node' | 'python' | 'go' | 'none';
framework: 'express' | 'nestjs' | 'fastapi' | 'none';
database: 'postgres' | 'mysql' | 'sqlite' | 'mongodb' | 'none';
orm: 'prisma' | 'typeorm' | 'drizzle' | 'none';
};
deployment: {
target: 'vercel' | 'docker' | 'pm2' | 'none';
cicd: 'github-actions' | 'none';
};
// 功能清单
features: Array<{
name: string;
description: string;
priority: 'must' | 'should' | 'could';
}>;
// 业务规则
businessRules: string; // 自由文本
// 约束
constraints: {
performance?: string; // "首屏 < 1s"
security?: string; // "需要 HTTPS / CSP"
compatibility?: string; // "兼容 Chrome 90+"
};
// 附加(自由 Markdown)
additionalNotes: string;
}辅助功能:
- AI 助手填空:点击”AI 帮我写”→ 在某个字段调用 GPT 补全
- 模板库:提供 10+ 行业模板(SaaS、电商、博客、API 服务等)
- 导入/导出:JSON 格式,方便复用
5.2 AI 代码生成
生成位置决策:⚠️ 必须在服务器端执行
| 因素 | 客户端 | 服务器端 ✓ |
|---|---|---|
| API Key 安全 | 暴露给用户 | 服务端管理 |
| 大模型调用成本 | 用户承担 | 平台可控 |
| 滥用风险 | 无防护 | 可限流/审核 |
| 离线使用 | 可行 | 不可行 |
| 隐私 | 文件不上传 | 需用户同意 |
架构:
flowchart LR A["前端提交规格"] --> B["API 网关"] B --> C["生成服务"] C --> D{"大模型路由"} D -->|"国内"| E["国产模型<br/>DeepSeek/MiniMax"] D -->|"海外"| F["Claude/GPT"] C --> G["文件树生成<br/>+ 打包"] G --> H["OSS / S3 存储"] H --> I["返回下载链接"]
核心组件:
// 生成服务接口
interface CodeGenerator {
// 首版生成
generateFirstVersion(spec: ProjectSpec): Promise<{
fileTree: FileNode[];
zipUrl: string;
creditsUsed: number;
}>;
// 后续 API 调用(改/补/重构)
callApi(
projectId: number,
action: 'modify' | 'add' | 'refactor',
target: string, // 文件路径
instruction: string
): Promise<{
newContent: string; // 新文件内容
diff?: string; // 差异
creditsUsed: number;
}>;
// 解析存量项目
parseExistingProject(zipUrl: string): Promise<{
spec: Partial<ProjectSpec>; // 自动推断的规格
suggestedImprovements: string[];
}>;
}5.3 下载与打包
打包流程:
flowchart TD A["生成完成"] --> B["拼装文件树"] B --> C["写入临时目录"] C --> D["排除 node_modules/.git 等"] D --> E["tar/zip 压缩"] E --> F["上传到 OSS"] F --> G["生成签名 URL<br/>有效期 24h"] G --> H["返回给前端"]
关键点:
- 下载链接有效期:24 小时(防止滥用)
- 单次最大体积:50MB(超过分卷)
- 存储清理:7 天后自动删除 zip 文件
5.4 后续 API 调用(补充)
用户补充:流程生成一个版本后,后续的使用可以调用 API 生成相应的代码
API 端点设计:
// 续作 API 设计
POST /api/v1/projects/:id/generate
{
"action": "modify" | "add_feature" | "refactor" | "explain",
"target_files": ["src/api/user.ts"], // 涉及文件
"instruction": "给用户 API 加上分页参数,每页 20 条",
"context": { // 可选上下文
"currentSpec": {...}
}
}
Response:
{
"status": "success",
"creditsUsed": 10,
"newFiles": [
{
"path": "src/api/user.ts",
"content": "...",
"diff": "@@ -10,3 +10,15 @@..."
}
],
"explanation": "在 listUsers API 中添加了 page 和 pageSize 参数...",
"remainingCredits": 150
}使用模式:
| 模式 | 描述 | 典型场景 |
|---|---|---|
| 单文件修改 | 改一个文件 | ”把按钮颜色改成蓝色” |
| 多文件功能 | 加一个新功能 | ”加一个用户头像上传功能” |
| 目录重构 | 重构一整个模块 | ”把所有 API 错误处理统一” |
| 代码解释 | 解释一段代码 | ”这段代码做什么” (不扣积分) |
6. 数据库设计(Database)
6.1 主库选型
| 候选 | 推荐度 | 理由 |
|---|---|---|
| PostgreSQL | ⭐⭐⭐⭐⭐ | JSON 字段原生支持,适合 spec 这种半结构化数据;成熟稳定 |
| MySQL | ⭐⭐⭐ | JSON 支持较弱 |
| MongoDB | ⭐⭐⭐ | 灵活但事务弱,不适合金融/积分场景 |
| SQLite | ⭐⭐ | 仅适合本地开发 |
最终选型:PostgreSQL 16+
6.2 表结构(核心 5 张表)
-- 1. 用户表
CREATE TABLE users (
id BIGSERIAL PRIMARY KEY,
email VARCHAR(255) UNIQUE,
phone VARCHAR(20) UNIQUE,
password_hash VARCHAR(255),
nickname VARCHAR(50),
avatar_url TEXT,
language VARCHAR(10) DEFAULT 'zh-CN',
timezone VARCHAR(50) DEFAULT 'Asia/Shanghai',
last_login_ip INET,
oauth_provider VARCHAR(20), -- 'google'/'github'/'wechat'
oauth_id VARCHAR(255),
is_banned BOOLEAN DEFAULT FALSE,
created_at TIMESTAMPTZ DEFAULT NOW(),
updated_at TIMESTAMPTZ DEFAULT NOW()
);
CREATE INDEX idx_users_email ON users(email);
CREATE INDEX idx_users_phone ON users(phone);
-- 2. 钱包/积分表
CREATE TABLE wallets (
id BIGSERIAL PRIMARY KEY,
user_id BIGINT UNIQUE NOT NULL REFERENCES users(id),
credits_remaining INT DEFAULT 0,
credits_total INT DEFAULT 0, -- 历史总获得
credits_used INT DEFAULT 0, -- 历史总消耗
updated_at TIMESTAMPTZ DEFAULT NOW()
);
-- 3. 订阅表
CREATE TABLE subscriptions (
id BIGSERIAL PRIMARY KEY,
user_id BIGINT NOT NULL REFERENCES users(id),
plan_type VARCHAR(20) NOT NULL, -- 'monthly'/'yearly'
status VARCHAR(20) NOT NULL, -- 'active'/'expired'/'cancelled'
start_at TIMESTAMPTZ NOT NULL,
end_at TIMESTAMPTZ NOT NULL,
price_paid DECIMAL(10,2),
payment_channel VARCHAR(20), -- 'wechat'/'alipay'/'stripe'
external_order_id VARCHAR(255), -- 支付平台订单号
created_at TIMESTAMPTZ DEFAULT NOW()
);
CREATE INDEX idx_subs_user_status ON subscriptions(user_id, status);
-- 4. 项目表
CREATE TABLE projects (
id BIGSERIAL PRIMARY KEY,
user_id BIGINT NOT NULL REFERENCES users(id),
name VARCHAR(100) NOT NULL,
scenario VARCHAR(20) NOT NULL, -- 'new'/'refactor'
spec JSONB NOT NULL, -- 完整 SDD 规格
generated_files JSONB, -- 生成的 file tree
zip_url TEXT, -- OSS 下载链接
zip_expires_at TIMESTAMPTZ, -- 链接过期时间
created_at TIMESTAMPTZ DEFAULT NOW(),
updated_at TIMESTAMPTZ DEFAULT NOW()
);
CREATE INDEX idx_projects_user ON projects(user_id, created_at DESC);
-- 5. 生成日志表
CREATE TABLE generation_logs (
id BIGSERIAL PRIMARY KEY,
user_id BIGINT NOT NULL REFERENCES users(id),
project_id BIGINT REFERENCES projects(id),
action VARCHAR(20) NOT NULL, -- 'first_gen'/'api_call'/'refactor'
credits_used INT NOT NULL,
prompt JSONB,
response JSONB,
duration_ms INT,
status VARCHAR(20) DEFAULT 'success', -- 'success'/'failed'
error_message TEXT,
created_at TIMESTAMPTZ DEFAULT NOW()
);
CREATE INDEX idx_logs_user_date ON generation_logs(user_id, created_at DESC);6.3 辅助表
-- 支付订单表
CREATE TABLE payment_orders (
id BIGSERIAL PRIMARY KEY,
user_id BIGINT REFERENCES users(id),
order_type VARCHAR(20) NOT NULL, -- 'buyout'/'subscription'/'credits'
amount DECIMAL(10,2) NOT NULL,
status VARCHAR(20) NOT NULL, -- 'pending'/'paid'/'refunded'
payment_channel VARCHAR(20),
external_order_id VARCHAR(255),
paid_at TIMESTAMPTZ,
created_at TIMESTAMPTZ DEFAULT NOW()
);
-- 积分流水表(对账用)
CREATE TABLE credit_transactions (
id BIGSERIAL PRIMARY KEY,
user_id BIGINT REFERENCES users(id),
delta INT NOT NULL, -- +/- 积分变化
reason VARCHAR(50) NOT NULL, -- 'buyout_bonus'/'subscription'/'consume'/'refund'
related_id BIGINT, -- 关联订单/项目 ID
created_at TIMESTAMPTZ DEFAULT NOW()
);
-- 模板库表
CREATE TABLE spec_templates (
id BIGSERIAL PRIMARY KEY,
name VARCHAR(100),
category VARCHAR(50), -- 'saas'/'ecommerce'/'blog'...
scenario VARCHAR(20), -- 'new'/'refactor'
spec JSONB,
is_public BOOLEAN DEFAULT TRUE,
created_at TIMESTAMPTZ DEFAULT NOW()
);7. 技术栈选型(Tech Stack)
7.1 前端
| 层级 | 选型 | 理由 |
|---|---|---|
| 框架 | Next.js 14+ (App Router) | SSR/SSG 灵活,SEO 友好,生态最成熟 |
| 语言 | TypeScript 5+ | 强类型,SDD 工具的 spec 字段是强类型,前后端共享 |
| UI 组件 | shadcn/ui + Radix UI | 现代可定制,符合 AI 工具审美 |
| 样式 | Tailwind CSS | 配合 shadcn/ui 最佳实践 |
| 状态管理 | Zustand | 轻量,比 Redux 简单,比 Jotai 直观 |
| 表单 | React Hook Form + Zod | 性能好,schema 校验可共享到后端 |
| 国际化 | next-intl | App Router 原生支持,SSR/CSR 一致 |
| 代码编辑器 | Monaco Editor | VSCode 同款,展示生成的代码 |
| Markdown 渲染 | react-markdown + remark-gfm | 显示 SDD 文档预览 |
| HTTP 客户端 | TanStack Query (React Query) | 缓存、重试、乐观更新 |
| 实时通信 | (可选) Socket.io | 实时显示生成进度 |
7.2 后端
| 层级 | 选型 | 理由 |
|---|---|---|
| 运行时 | Node.js 20+ | 与前端同 TS,共享类型 |
| 框架 | NestJS | 企业级,模块化,DI 容器,适合中大型项目 |
| API 风格 | REST + 部分 GraphQL | REST 主,GraphQL 用于复杂查询场景 |
| API 文档 | OpenAPI 3 + Swagger UI | 自动生成,前后端对齐 |
| 认证 | JWT + Refresh Token | 无状态,扩展性好 |
| 校验 | Zod | 与前端共享 schema |
| 任务队列 | BullMQ + Redis | 生成任务异步化 |
| WebSocket | Socket.io | 实时推送生成进度 |
7.3 数据库与存储
| 组件 | 选型 | 理由 |
|---|---|---|
| 主库 | PostgreSQL 16+ | JSONB、事务、成熟 |
| ORM | Prisma | 类型安全,迁移友好 |
| 缓存 | Redis 7+ | Session、积分计数、限流 |
| 对象存储 | 阿里云 OSS / AWS S3 | 存生成的 zip 包 |
| 搜索引擎(可选) | Meilisearch | 模板库搜索 |
7.4 AI 模型集成
// AI 模型路由(国内/海外分开)
interface ModelRouter {
domestic: {
// 中文任务,代码生成质量已足够
default: 'deepseek-v3'; // 最便宜
premium: 'MiniMax-m3'; // 高质量
};
international: {
// 英文任务或高质量要求
default: 'claude-sonnet-5';
premium: 'claude-opus-4-8';
};
}
function selectModel(spec: ProjectSpec, userRegion: string): string {
if (userRegion === 'CN') {
return spec.complexity === 'high' ? 'MiniMax-m3' : 'deepseek-v3';
}
return spec.complexity === 'high' ? 'claude-opus-4-8' : 'claude-sonnet-5';
}API 中转策略:
- 大陆用户 → 走国产模型 API(成本低,无网络问题)
- 海外用户 → 走 Claude/OpenAI(质量高)
- 双层架构见 双版本商业策略
7.5 基础设施
| 组件 | 选型 | 备注 |
|---|---|---|
| 托管 | 阿里云/腾讯云(国内) + Vercel(海外) | 双部署 |
| CDN | 阿里云 CDN / Cloudflare | 全球加速 |
| CI/CD | GitHub Actions | 自动测试+部署 |
| 监控 | Sentry + Prometheus + Grafana | 错误追踪+指标 |
| 日志 | Loki 或 ELK | 集中日志 |
8. 安全设计(Security)
8.1 关键威胁与对策
| 威胁 | 风险等级 | 对策 |
|---|---|---|
| API Key 泄露 | 🔴 高 | 大模型 Key 全部服务端管理,前端零接触 |
| 暴力破解密码 | 🔴 高 | bcrypt + 限流(5 次/分钟/IP) + 验证码 |
| SQL 注入 | 🟡 中 | Prisma 参数化查询 + 输入校验 |
| XSS | 🟡 中 | React 默认转义 + DOMPurify(渲染 Markdown) |
| CSRF | 🟡 中 | SameSite=Strict Cookie + CSRF Token |
| 积分超扣 | 🔴 高 | 事务+乐观锁,扣减前再次校验 |
| 生成结果被滥用 | 🟡 中 | 内容审核(国产模型自带) |
| 支付回调伪造 | 🔴 高 | 签名验证 + 异步确认 |
| 个人信息泄露 | 🟡 中 | 最小化收集 + 加密存储 |
8.2 积分扣减的并发安全
// 关键代码:积分扣减必须用数据库行锁
async function consumeCredits(userId: number, amount: number, reason: string) {
return await prisma.$transaction(async (tx) => {
// 1. 行锁查询
const wallet = await tx.$queryRaw<Wallet[]>`
SELECT * FROM wallets WHERE user_id = ${userId} FOR UPDATE
`;
if (wallet[0].credits_remaining < amount) {
throw new InsufficientCreditsError();
}
// 2. 扣减
await tx.wallets.update({
where: { user_id: userId },
data: { credits_remaining: { decrement: amount } }
});
// 3. 流水记录
await tx.credit_transactions.create({
data: {
user_id: userId,
delta: -amount,
reason,
created_at: new Date()
}
});
});
}9. 前端设计要点(Frontend Design)
9.1 页面结构
/ 首页(产品介绍 + 试用入口)
/login 登录
/register 注册
/dashboard 用户工作台
/projects 项目列表
/projects/new 新建项目(SDD 编辑器)
/projects/:id 单个项目详情
/edit 编辑规格
/api-playground 后续 API 调用
/pricing 订阅/买断价格
/account 账户设置
9.2 关键组件
| 组件 | 功能 |
|---|---|
| SDDFormWizard | 分步表单,渐进式填写规格 |
| SpecPreview | 实时显示规格的 Markdown 预览 |
| CodeTree | 文件树 + 单击查看内容 |
| GenerationProgress | 实时显示生成进度(0% → 100%) |
| DiffViewer | API 调用后展示代码差异 |
| LanguageSwitcher | 中英文切换 |
9.3 TypeScript 类型共享(前后端)
// packages/shared-types/src/index.ts
export interface ProjectSpec {
// ... 完整定义
}
export interface GenerationRequest {
projectId: number;
action: 'modify' | 'add' | 'refactor';
target: string;
instruction: string;
}
export interface GenerationResponse {
status: 'success' | 'failed';
creditsUsed: number;
newFiles: Array<{
path: string;
content: string;
diff?: string;
}>;
explanation: string;
remainingCredits: number;
}通过 monorepo 共享:pnpm workspace + 单一来源。
10. 部署与运维(Deployment)
10.1 推荐架构
flowchart LR A["用户"] --> B["Cloudflare CDN<br/>(海外)"] A --> C["阿里云 CDN<br/>(国内)"] B --> D["Vercel<br/>(Next.js)"] C --> E["阿里云 ECS<br/>(Next.js)"] D --> F["API: 阿里云 ECS<br/>NestJS"] E --> F F --> G["PostgreSQL<br/>(主库)"] F --> H["Redis<br/>(缓存/队列)"] F --> I["阿里云 OSS<br/>(文件)"] F --> J["AI 模型 API<br/>(国产 + 海外)"]
10.2 关键运维指标(SLI/SLO)
| 指标 | 目标 |
|---|---|
| 可用性 | 99.9% (SLO) |
| 首版生成 P95 延迟 | < 3 min |
| API 调用 P95 延迟 | < 30 s |
| 支付成功率 | > 98% |
| 积分扣减一致性 | 100%(强一致) |
11. MVP 实施计划(MVP Roadmap)
11.1 阶段一(2 周):核心闭环
- 用户注册/登录(邮箱)
- SDD 规格表单(简化版 5 字段)
- 单个模板(Next.js + Tailwind 模板)
- 服务器端调用 DeepSeek 生成
- 文件树展示 + 打包下载
- 简单积分扣减(无订阅)
11.2 阶段二(2 周):付费 + 续作
- 微信/支付宝支付接入
- 订阅模式(¥29/月)
- 项目列表 + 详情页
- 后续 API 调用端点
- 积分包销售
11.3 阶段三(2 周):体验优化
- i18n 完整支持(中英文)
- IP 地域自动判定默认语言
- Monaco Editor 显示代码
- Diff Viewer
- 模板库(5+ 模板)
11.4 阶段四(2 周):扩展场景
- 重构场景(解析存量项目)
- GitHub 集成(导入已有仓库)
- 实时协作(多用户编辑同一规格)
- Webhook 通知
12. 风险与未决项(Risks & Open Questions)
12.1 风险
| 风险 | 等级 | 缓解 |
|---|---|---|
| AI 生成代码质量不稳定 | 🟡 中 | 模板化提示词 + 多模型投票 |
| 大模型 API 成本失控 | 🟡 中 | 限流 + 配额 + 按规格大小预估 |
| 大文件生成超时 | 🟡 中 | 异步任务 + 分块生成 |
| 滥用免费试用 | 🟡 中 | 手机号 + 实名 + IP 限频 |
| 支付渠道稳定性 | 🟢 低 | 多渠道备份 |
12.2 未决项(需用户确认)
- 首次生成是否完全免费试用 1 次?已假设”是”,但要确认
- 买断送的 200 积分是否可叠加?比如分享邀请再加 100
- 退款政策:买断后 7 天未生成可退?
- 代码版权:生成代码归用户,平台不主张权利?
- 海外版部署:是否第一版就支持?
- 企业版是否在 v1 范围?
13. 关联主题
- SDD 调研——本文所属调研方向
- SDD 工具深度调研——市面已有工具对比
- 商业——商业模式与收款
- 双版本商业策略——¥9.9 + ¥499 双 SKU 模式可借鉴
- 全球收款方案——支付渠道选型
- 大陆稳定使用 Claude 方案——后端 AI 调用的网络方案
- AI 工具调研——其他 AI 工具调研