technical-specification

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

Technical Specification

技术规格说明书

Overview

概述

Create comprehensive technical specifications that define system requirements, architecture, implementation details, and acceptance criteria for software projects.
创建全面的技术规格说明书,定义软件项目的系统需求、架构、实现细节以及验收标准。

When to Use

适用场景

  • Feature specifications
  • System design documents
  • Requirements documentation (PRD)
  • Architecture decision records (ADR)
  • Technical proposals
  • RFC (Request for Comments)
  • API design specs
  • Database schema designs
  • 功能规格说明
  • 系统设计文档
  • 需求文档(PRD)
  • 架构决策记录(ADR)
  • 技术提案
  • 请求评论文档(RFC)
  • API设计规格说明
  • 数据库架构设计

Technical Specification Template

技术规格说明书模板

markdown
undefined
markdown
undefined

Technical Specification: [Feature Name]

技术规格说明书: [功能名称]

Document Status: Draft | Review | Approved | Implemented Version: 1.0 Author: John Doe Date: 2025-01-15 Reviewers: Jane Smith, Bob Johnson Last Updated: 2025-01-15
文档状态: 草稿 | 评审中 | 已批准 | 已实现 版本: 1.0 作者: John Doe 日期: 2025-01-15 评审人: Jane Smith, Bob Johnson 最后更新时间: 2025-01-15

Executive Summary

执行摘要

Brief 2-3 sentence overview of what this spec covers and why it's being built.
Problem: What problem are we solving? Solution: High-level description of the solution Impact: Expected business/user impact

用2-3句话简要概述本规格说明书涵盖的内容以及开发该功能的原因。
问题: 我们要解决什么问题? 解决方案: 解决方案的高层描述 影响: 预期的业务/用户影响

1. Background

1. 背景

Context

上下文

Provide background on why this feature is needed:
  • What's the current situation?
  • What pain points exist?
  • What's driving this change?
说明该功能的需求背景:
  • 当前的现状是什么?
  • 存在哪些痛点?
  • 推动本次变更的因素是什么?

Goals

目标

  • Primary Goal: Main objective of this feature
  • Secondary Goals: Additional benefits
  • Success Metrics: How we'll measure success
    • Metric 1: [Description] - Target: [Value]
    • Metric 2: [Description] - Target: [Value]
  • 主要目标: 该功能的核心目标
  • 次要目标: 额外收益
  • 成功指标: 我们如何衡量成功
    • 指标1: [描述] - 目标值: [数值]
    • 指标2: [描述] - 目标值: [数值]

Non-Goals

非目标

What this specification explicitly does NOT cover:
  • Non-goal 1
  • Non-goal 2
  • Future considerations (out of scope for v1)

本规格说明书明确不涵盖的内容:
  • 非目标1
  • 非目标2
  • 未来考量(v1版本范围外)

2. Requirements

2. 需求

Functional Requirements

功能需求

FR-1: User Authentication

FR-1: 用户认证

Priority: P0 (Must Have) Description: Users must be able to authenticate using email/password
Acceptance Criteria:
  • User can register with email and password
  • User can log in with credentials
  • User receives email verification
  • User can reset forgotten password
  • Session expires after 7 days of inactivity
Dependencies: None
优先级: P0(必须实现) 描述: 用户必须能够使用邮箱/密码进行认证
验收标准:
  • 用户可以使用邮箱和密码注册
  • 用户可以使用凭证登录
  • 用户会收到邮箱验证邮件
  • 用户可以重置遗忘的密码
  • 会话在7天无活动后过期
依赖项:

FR-2: Social Login

FR-2: 社交登录

Priority: P1 (Should Have) Description: Users can authenticate using OAuth providers
Acceptance Criteria:
  • Support Google OAuth
  • Support GitHub OAuth
  • Link social accounts to existing accounts
  • Unlink social accounts
Dependencies: FR-1
优先级: P1(应该实现) 描述: 用户可以使用OAuth提供商进行认证
验收标准:
  • 支持Google OAuth
  • 支持GitHub OAuth
  • 可将社交账号关联至已有账号
  • 可解除社交账号关联
依赖项: FR-1

FR-3: Two-Factor Authentication

FR-3: 双因素认证

Priority: P2 (Nice to Have) Description: Optional 2FA for enhanced security
Acceptance Criteria:
  • Enable/disable 2FA in settings
  • Support TOTP (Google Authenticator, Authy)
  • Backup codes generation
  • Recovery process if device is lost
Dependencies: FR-1
优先级: P2(可选实现) 描述: 可选的2FA以增强安全性
验收标准:
  • 可在设置中启用/禁用2FA
  • 支持TOTP(Google Authenticator、Authy)
  • 生成备份码
  • 设备丢失后的恢复流程
依赖项: FR-1

Non-Functional Requirements

非功能需求

Performance

性能

  • Response Time: API endpoints < 200ms p95
  • Throughput: Support 1000 requests/second
  • Database Queries: < 50ms p95
  • Page Load: First contentful paint < 1.5s
  • 响应时间: API端点p95延迟 < 200ms
  • 吞吐量: 支持1000次请求/秒
  • 数据库查询: p95延迟 < 50ms
  • 页面加载: 首次内容绘制时间 < 1.5s

Scalability

可扩展性

  • Concurrent Users: Support 100,000 simultaneous users
  • Data Growth: Handle 10M user records
  • Horizontal Scaling: Support 10 application instances
  • 并发用户: 支持100,000同时在线用户
  • 数据增长: 可处理1000万条用户记录
  • 水平扩展: 支持10个应用实例

Security

安全性

  • Authentication: JWT-based with refresh tokens
  • Password Hashing: bcrypt with 12 rounds
  • Rate Limiting: 100 requests/hour per IP
  • Data Encryption: AES-256 at rest, TLS 1.3 in transit
  • 认证方式: 基于JWT并搭配刷新令牌
  • 密码哈希: 使用bcrypt算法,12轮迭代
  • 速率限制: 每个IP每小时100次请求
  • 数据加密: 静态数据采用AES-256加密,传输过程采用TLS 1.3

Availability

可用性

  • Uptime: 99.9% SLA
  • Recovery Time: RTO < 4 hours, RPO < 1 hour
  • Backup: Daily automated backups, 30-day retention
  • 可用性: 99.9% SLA
  • 恢复时间: RTO < 4小时,RPO < 1小时
  • 备份: 每日自动备份,保留30天

Compliance

合规性

  • GDPR compliant (data export/deletion)
  • SOC 2 Type II requirements
  • PCI DSS (if handling payments)

  • 符合GDPR(数据导出/删除)
  • 符合SOC 2 Type II要求
  • 符合PCI DSS(若处理支付)

3. System Architecture

3. 系统架构

High-Level Architecture

高层架构

┌─────────────┐
│   Client    │
│ (React App) │
└──────┬──────┘
┌─────────────┐     ┌──────────────┐
│ API Gateway │────▶│ Auth Service │
│  (Express)  │     │   (Node.js)  │
└──────┬──────┘     └──────┬───────┘
       │                   │
       ▼                   ▼
┌─────────────┐     ┌──────────────┐
│User Service │     │   Database   │
│  (Node.js)  │────▶│ (PostgreSQL) │
└─────────────┘     └──────────────┘
┌─────────────┐
│    Cache    │
│   (Redis)   │
└─────────────┘
┌─────────────┐
│   Client    │
│ (React App) │
└──────┬──────┘
┌─────────────┐     ┌──────────────┐
│ API Gateway │────▶│ Auth Service │
│  (Express)  │     │   (Node.js)  │
└──────┬──────┘     └──────┬───────┘
       │                   │
       ▼                   ▼
┌─────────────┐     ┌──────────────┐
│User Service │     │   Database   │
│  (Node.js)  │────▶│ (PostgreSQL) │
└─────────────┘     └──────────────┘
┌─────────────┐
│    Cache    │
│   (Redis)   │
└─────────────┘

Component Diagram

组件图

Frontend (React)

前端(React)

  • Login Page: Email/password and social login
  • Registration Page: User signup with validation
  • Settings Page: Manage 2FA and connected accounts
  • Components: Reusable auth components
  • 登录页面: 邮箱/密码登录和社交登录
  • 注册页面: 用户注册及验证
  • 设置页面: 管理2FA和关联账号
  • 组件: 可复用的认证组件

Backend (Node.js/Express)

后端(Node.js/Express)

  • Auth Controller: Handle authentication requests
  • User Controller: Manage user data
  • Auth Middleware: Validate JWT tokens
  • Rate Limiter: Prevent abuse
  • 认证控制器: 处理认证请求
  • 用户控制器: 管理用户数据
  • 认证中间件: 验证JWT令牌
  • 速率限制器: 防止滥用

Database (PostgreSQL)

数据库(PostgreSQL)

  • users table: User account data
  • sessions table: Active sessions
  • oauth_connections table: Social login links
  • users表: 用户账号数据
  • sessions表: 活跃会话
  • oauth_connections表: 社交登录关联记录

Cache (Redis)

缓存(Redis)

  • Session storage
  • Rate limit counters
  • Temporary tokens (password reset, email verification)

  • 会话存储
  • 速率限制计数器
  • 临时令牌(密码重置、邮箱验证)

4. Data Model

4. 数据模型

Database Schema

数据库架构

sql
-- Users table
CREATE TABLE users (
  id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
  email VARCHAR(255) UNIQUE NOT NULL,
  password_hash VARCHAR(255),
  email_verified BOOLEAN DEFAULT FALSE,
  two_factor_enabled BOOLEAN DEFAULT FALSE,
  two_factor_secret VARCHAR(32),
  created_at TIMESTAMP DEFAULT NOW(),
  updated_at TIMESTAMP DEFAULT NOW(),
  last_login_at TIMESTAMP
);

-- OAuth connections
CREATE TABLE oauth_connections (
  id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
  user_id UUID REFERENCES users(id) ON DELETE CASCADE,
  provider VARCHAR(50) NOT NULL, -- 'google', 'github'
  provider_user_id VARCHAR(255) NOT NULL,
  access_token TEXT,
  refresh_token TEXT,
  created_at TIMESTAMP DEFAULT NOW(),
  UNIQUE(provider, provider_user_id)
);

-- Sessions
CREATE TABLE sessions (
  id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
  user_id UUID REFERENCES users(id) ON DELETE CASCADE,
  token VARCHAR(255) UNIQUE NOT NULL,
  expires_at TIMESTAMP NOT NULL,
  created_at TIMESTAMP DEFAULT NOW(),
  ip_address INET,
  user_agent TEXT
);

-- Indexes
CREATE INDEX idx_users_email ON users(email);
CREATE INDEX idx_sessions_token ON sessions(token);
CREATE INDEX idx_sessions_user_id ON sessions(user_id);
CREATE INDEX idx_oauth_user_id ON oauth_connections(user_id);
sql
-- Users table
CREATE TABLE users (
  id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
  email VARCHAR(255) UNIQUE NOT NULL,
  password_hash VARCHAR(255),
  email_verified BOOLEAN DEFAULT FALSE,
  two_factor_enabled BOOLEAN DEFAULT FALSE,
  two_factor_secret VARCHAR(32),
  created_at TIMESTAMP DEFAULT NOW(),
  updated_at TIMESTAMP DEFAULT NOW(),
  last_login_at TIMESTAMP
);

-- OAuth connections
CREATE TABLE oauth_connections (
  id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
  user_id UUID REFERENCES users(id) ON DELETE CASCADE,
  provider VARCHAR(50) NOT NULL, -- 'google', 'github'
  provider_user_id VARCHAR(255) NOT NULL,
  access_token TEXT,
  refresh_token TEXT,
  created_at TIMESTAMP DEFAULT NOW(),
  UNIQUE(provider, provider_user_id)
);

-- Sessions
CREATE TABLE sessions (
  id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
  user_id UUID REFERENCES users(id) ON DELETE CASCADE,
  token VARCHAR(255) UNIQUE NOT NULL,
  expires_at TIMESTAMP NOT NULL,
  created_at TIMESTAMP DEFAULT NOW(),
  ip_address INET,
  user_agent TEXT
);

-- Indexes
CREATE INDEX idx_users_email ON users(email);
CREATE INDEX idx_sessions_token ON sessions(token);
CREATE INDEX idx_sessions_user_id ON sessions(user_id);
CREATE INDEX idx_oauth_user_id ON oauth_connections(user_id);

API Data Models

API数据模型

typescript
interface User {
  id: string;
  email: string;
  emailVerified: boolean;
  twoFactorEnabled: boolean;
  createdAt: string;
  updatedAt: string;
  lastLoginAt?: string;
}

interface LoginRequest {
  email: string;
  password: string;
  twoFactorCode?: string;
}

interface LoginResponse {
  success: boolean;
  token: string;
  refreshToken: string;
  user: User;
  expiresIn: number;
}

interface RegisterRequest {
  email: string;
  password: string;
  confirmPassword: string;
}

typescript
interface User {
  id: string;
  email: string;
  emailVerified: boolean;
  twoFactorEnabled: boolean;
  createdAt: string;
  updatedAt: string;
  lastLoginAt?: string;
}

interface LoginRequest {
  email: string;
  password: string;
  twoFactorCode?: string;
}

interface LoginResponse {
  success: boolean;
  token: string;
  refreshToken: string;
  user: User;
  expiresIn: number;
}

interface RegisterRequest {
  email: string;
  password: string;
  confirmPassword: string;
}

5. API Design

5. API设计

Authentication Endpoints

认证端点

POST /api/auth/register

POST /api/auth/register

Description: Register a new user account
Request:
json
{
  "email": "user@example.com",
  "password": "SecurePass123!",
  "confirmPassword": "SecurePass123!"
}
Response (201):
json
{
  "success": true,
  "user": {
    "id": "550e8400-e29b-41d4-a716-446655440000",
    "email": "user@example.com",
    "emailVerified": false
  },
  "message": "Verification email sent"
}
Errors:
  • 400: Invalid email format
  • 409: Email already exists
  • 422: Password too weak
描述: 注册新用户账号
请求:
json
{
  "email": "user@example.com",
  "password": "SecurePass123!",
  "confirmPassword": "SecurePass123!"
}
响应(201):
json
{
  "success": true,
  "user": {
    "id": "550e8400-e29b-41d4-a716-446655440000",
    "email": "user@example.com",
    "emailVerified": false
  },
  "message": "验证邮件已发送"
}
错误:
  • 400: 邮箱格式无效
  • 409: 邮箱已存在
  • 422: 密码强度不足

POST /api/auth/login

POST /api/auth/login

Description: Authenticate user and return JWT token
Request:
json
{
  "email": "user@example.com",
  "password": "SecurePass123!",
  "twoFactorCode": "123456"
}
Response (200):
json
{
  "success": true,
  "token": "eyJhbGciOiJIUzI1NiIs...",
  "refreshToken": "eyJhbGciOiJIUzI1NiIs...",
  "user": {
    "id": "550e8400-e29b-41d4-a716-446655440000",
    "email": "user@example.com"
  },
  "expiresIn": 3600
}
Errors:
  • 401: Invalid credentials
  • 403: Account locked
  • 428: 2FA code required
描述: 认证用户并返回JWT令牌
请求:
json
{
  "email": "user@example.com",
  "password": "SecurePass123!",
  "twoFactorCode": "123456"
}
响应(200):
json
{
  "success": true,
  "token": "eyJhbGciOiJIUzI1NiIs...",
  "refreshToken": "eyJhbGciOiJIUzI1NiIs...",
  "user": {
    "id": "550e8400-e29b-41d4-a716-446655440000",
    "email": "user@example.com"
  },
  "expiresIn": 3600
}
错误:
  • 401: 凭证无效
  • 403: 账号被锁定
  • 428: 需要2FA验证码

Rate Limiting

速率限制

EndpointLimitWindow
POST /api/auth/login5 attempts15 minutes
POST /api/auth/register3 attempts1 hour
POST /api/auth/reset-password3 attempts1 hour

端点限制次数时间窗口
POST /api/auth/login5次尝试15分钟
POST /api/auth/register3次尝试1小时
POST /api/auth/reset-password3次尝试1小时

6. Implementation Plan

6. 实施计划

Phase 1: Core Authentication (Week 1-2)

阶段1: 核心认证(第1-2周)

  • Database schema setup
  • User registration endpoint
  • Email/password login
  • JWT token generation
  • Password hashing
  • Basic frontend forms
  • 数据库架构搭建
  • 用户注册端点
  • 邮箱/密码登录
  • JWT令牌生成
  • 密码哈希处理
  • 基础前端表单

Phase 2: Email Verification (Week 3)

阶段2: 邮箱验证(第3周)

  • Email service integration
  • Verification token generation
  • Verification endpoint
  • Email templates
  • Resend verification email
  • 邮件服务集成
  • 验证令牌生成
  • 验证端点
  • 邮件模板
  • 重新发送验证邮件

Phase 3: Social Login (Week 4)

阶段3: 社交登录(第4周)

  • OAuth integration (Google)
  • OAuth integration (GitHub)
  • Account linking
  • Frontend OAuth buttons
  • OAuth集成(Google)
  • OAuth集成(GitHub)
  • 账号关联
  • 前端OAuth按钮

Phase 4: Security Features (Week 5)

阶段4: 安全功能(第5周)

  • Two-factor authentication
  • Password reset flow
  • Rate limiting
  • Session management
  • Security headers
  • 双因素认证
  • 密码重置流程
  • 速率限制
  • 会话管理
  • 安全头

Phase 5: Testing & Polish (Week 6)

阶段5: 测试与优化(第6周)

  • Unit tests
  • Integration tests
  • E2E tests
  • Security audit
  • Performance testing
  • Documentation

  • 单元测试
  • 集成测试
  • 端到端测试
  • 安全审计
  • 性能测试
  • 文档编写

7. Testing Strategy

7. 测试策略

Unit Tests

单元测试

  • Password hashing/verification
  • JWT token generation/validation
  • Input validation
  • Business logic
Coverage Target: 90%
  • 密码哈希/验证
  • JWT令牌生成/验证
  • 输入验证
  • 业务逻辑
覆盖率目标: 90%

Integration Tests

集成测试

  • API endpoint testing
  • Database operations
  • OAuth flow
  • Email sending
Coverage Target: 80%
  • API端点测试
  • 数据库操作
  • OAuth流程
  • 邮件发送
覆盖率目标: 80%

E2E Tests

端到端测试

  • Complete registration flow
  • Login with email/password
  • Social login flow
  • Password reset flow
  • 2FA setup and verification
Coverage Target: Critical paths only
  • 完整注册流程
  • 邮箱/密码登录
  • 社交登录流程
  • 密码重置流程
  • 2FA设置与验证
覆盖率目标: 仅覆盖关键路径

Performance Tests

性能测试

  • Load testing: 1000 concurrent logins
  • Stress testing: Find breaking point
  • Database query performance

  • 负载测试: 1000次并发登录
  • 压力测试: 找出临界点
  • 数据库查询性能

8. Security Considerations

8. 安全考量

Threats

威胁

ThreatMitigation
Brute forceRate limiting, account lockout
SQL injectionParameterized queries, ORM
XSSInput sanitization, CSP headers
CSRFCSRF tokens, SameSite cookies
Session hijackingSecure cookies, HTTPS only
Password leaksbcrypt hashing, password strength
威胁缓解措施
暴力破解速率限制、账号锁定
SQL注入参数化查询、ORM
XSS输入 sanitization、CSP头
CSRFCSRF令牌、SameSite Cookie
会话劫持安全Cookie、仅HTTPS
密码泄露bcrypt哈希、密码强度要求

Security Checklist

安全检查清单

  • HTTPS enforced
  • Security headers configured
  • Rate limiting implemented
  • Input validation on all endpoints
  • SQL injection prevention
  • XSS prevention
  • CSRF protection
  • Secure password storage
  • Audit logging

  • 强制使用HTTPS
  • 配置安全头
  • 实现速率限制
  • 所有端点都有输入验证
  • 防止SQL注入
  • 防止XSS
  • CSRF防护
  • 安全存储密码
  • 审计日志

9. Monitoring & Observability

9. 监控与可观测性

Metrics

指标

  • Authentication success rate
  • Failed login attempts
  • Average login time
  • Active sessions
  • 2FA adoption rate
  • 认证成功率
  • 登录失败次数
  • 平均登录时间
  • 活跃会话数
  • 2FA采用率

Alerts

告警

  • Failed login rate > 10%
  • Database connection errors
  • Email sending failures
  • Rate limit exceeded > 100 times/hour
  • 登录失败率 > 10%
  • 数据库连接错误
  • 邮件发送失败
  • 速率限制触发次数 > 100次/小时

Logging

日志

javascript
// Log structure
{
  "timestamp": "2025-01-15T14:30:00Z",
  "level": "info",
  "event": "user_login",
  "userId": "550e8400-...",
  "ip": "192.168.1.1",
  "userAgent": "Mozilla/5.0...",
  "success": true,
  "duration": 125
}

javascript
// Log structure
{
  "timestamp": "2025-01-15T14:30:00Z",
  "level": "info",
  "event": "user_login",
  "userId": "550e8400-...",
  "ip": "192.168.1.1",
  "userAgent": "Mozilla/5.0...",
  "success": true,
  "duration": 125
}

10. Risks & Mitigation

10. 风险与缓解措施

RiskProbabilityImpactMitigation
OAuth provider downtimeMediumHighFallback to email login
Database migration issuesLowHighTest thoroughly in staging
Performance under loadMediumMediumLoad testing, caching
Security vulnerabilitiesLowCriticalSecurity audit, pen testing

风险概率影响缓解措施
OAuth提供商宕机中等fallback到邮箱登录
数据库迁移问题在预发布环境充分测试
负载下性能问题中等中等负载测试、缓存
安全漏洞严重安全审计、渗透测试

11. Open Questions

11. 待解决问题

  1. Should we support passwordless authentication?
  2. What's the session timeout policy?
  3. Do we need magic link login?
  4. Should we implement remember me functionality?

  1. 我们是否应该支持无密码认证?
  2. 会话超时策略是什么?
  3. 我们是否需要魔法链接登录?
  4. 我们是否应该实现“记住我”功能?

12. Alternatives Considered

12. 备选方案考量

Alternative 1: Use Auth0

方案1: 使用Auth0

Pros: Faster implementation, proven security Cons: Cost, vendor lock-in, less customization Decision: Build in-house for flexibility
优点: 实施更快、安全性经过验证 缺点: 成本高、供应商锁定、定制化程度低 决策: 自研以保证灵活性

Alternative 2: Session-based auth instead of JWT

方案2: 使用基于会话的认证而非JWT

Pros: Simpler revocation, less token size Cons: Harder to scale, CORS issues Decision: Use JWT for stateless scaling

优点: 吊销更简单、令牌体积更小 缺点: 扩展难度大、CORS问题 决策: 使用JWT以实现无状态扩展

13. Success Criteria

13. 成功标准

Launch Criteria

上线标准

  • All P0 requirements implemented
  • Security audit passed
  • Load testing passed (1000 concurrent users)
  • Documentation complete
  • 90% test coverage achieved
  • 所有P0需求已实现
  • 通过安全审计
  • 负载测试通过(1000并发用户)
  • 文档完整
  • 达到90%测试覆盖率

Post-Launch Metrics (Week 1)

上线后指标(第1周)

  • < 1% authentication error rate
  • < 500ms average login time
  • 95% user satisfaction (surveys)
  • Zero security incidents

  • 认证错误率 < 1%
  • 平均登录时间 < 500ms
  • 用户满意度 > 95%(调研)
  • 无安全事件

14. References

14. 参考资料

undefined
undefined

Best Practices

最佳实践

✅ DO

✅ 要做

  • Include acceptance criteria for each requirement
  • Provide architecture diagrams
  • Document API contracts
  • Specify performance requirements
  • List risks and mitigations
  • Include implementation timeline
  • Add success metrics
  • Document security considerations
  • Version your specs
  • Get stakeholder review
  • 为每个需求包含验收标准
  • 提供架构图
  • 记录API契约
  • 指定性能需求
  • 列出风险与缓解措施
  • 包含实施时间线
  • 添加成功指标
  • 记录安全考量
  • 为规格说明书版本化
  • 获取相关方评审

❌ DON'T

❌ 不要做

  • Be vague about requirements
  • Skip non-functional requirements
  • Forget about security
  • Ignore alternatives
  • Skip testing strategy
  • Forget monitoring/observability
  • Leave questions unanswered
  • 需求描述模糊
  • 忽略非功能需求
  • 忘记安全考量
  • 忽略备选方案
  • 跳过测试策略
  • 忘记监控/可观测性
  • 留下未解决的问题

Resources

资源