Ngừng sử dụng một trợ lý AI chung chung cho mọi việc. Thiết lập 5 tác nhân chuyên biệt để xây dựng một API hoàn chỉnh: Kiến trúc sư Backend thiết kế hệ thống, Bộ tối ưu hóa cơ sở dữ liệu xem xét lược đồ, Lập trình viên Frontend xây dựng client, Người đánh giá mã kiểm tra bảo mật và Người kiểm tra thực tế xác thực trước khi triển khai.
Bạn cần xây dựng một API nhanh chóng. Sự cám dỗ: yêu cầu một AI làm tất cả mọi thứ. Nó sẽ thiết kế cơ sở dữ liệu, viết các điểm cuối, xây dựng giao diện người dùng, xem xét mã và kiểm tra kết quả.
Đây là những gì sẽ xảy ra: cơ sở dữ liệu thiếu các chỉ mục, các điểm cuối có lỗ hổng bảo mật, giao diện người dùng bỏ qua các trạng thái lỗi và việc kiểm thử chỉ bao gồm "trông có vẻ tốt đối với tôi."
Các tác nhân chuyên biệt sẽ khắc phục điều này. Mỗi tác nhân đều nắm rõ lĩnh vực của mình. Mỗi tác nhân đều có danh sách kiểm tra. Mỗi tác nhân đều tạo ra các sản phẩm cụ thể. Kiến trúc sư Backend suy nghĩ về khả năng mở rộng. Bộ tối ưu hóa cơ sở dữ liệu phát hiện các chỉ mục bị thiếu. Người đánh giá mã tìm ra các lỗ hổng. Người kiểm tra thực tế yêu cầu bằng chứng.
Trong hướng dẫn này, bạn sẽ thiết lập 5 tác nhân từ bộ sưu tập The Agency và chạy một quy trình xây dựng API hoàn chỉnh. Bạn sẽ tích hợp với Apidog để kiểm thử và tài liệu hóa API, đảm bảo các điểm cuối của bạn được xác thực theo thông số kỹ thuật OpenAPI trước khi triển khai.
5 Tác Nhân Bạn Sẽ Sử Dụng
| Tác nhân | Bộ phận | Trách nhiệm |
|---|---|---|
| Kiến trúc sư Backend | Kỹ thuật | Thiết kế API, lược đồ cơ sở dữ liệu, xác thực |
| Bộ tối ưu hóa cơ sở dữ liệu | Kỹ thuật | Đề xuất chỉ mục, tối ưu hóa truy vấn |
| Lập trình viên Frontend | Kỹ thuật | Các thành phần React, client API, quản lý trạng thái |
| Người đánh giá mã | Kỹ thuật | Kiểm toán bảo mật, an toàn kiểu dữ liệu, xử lý lỗi |
| Người kiểm tra thực tế | Kiểm thử | Xác thực dựa trên bằng chứng, bằng chứng ảnh chụp màn hình |
Cài đặt các tác nhân:
# Clone The Agency repo
git clone https://github.com/msitarzewski/agency-agents.git
cd agency-agents
# Copy agents to Claude Code
cp engineering/engineering-backend-architect.md ~/.claude/agents/
cp engineering/engineering-database-optimizer.md ~/.claude/agents/
cp engineering/engineering-frontend-developer.md ~/.claude/agents/
cp engineering/engineering-code-reviewer.md ~/.claude/agents/
cp testing/testing-reality-checker.md ~/.claude/agents/
Bước 1: Kiến Trúc Sư Backend Thiết Kế Hệ Thống
Bắt đầu một phiên Claude Code mới:
Activate Backend Architect mode.
Design a REST API for an e-commerce platform with:
- User authentication (JWT with refresh tokens)
- Product catalog with categories and filtering
- Shopping cart management
- Order processing with status tracking
- Payment webhook integration
Output:
1. OpenAPI 3.0 specification
2. PostgreSQL database schema with relationships
3. Project folder structure (Express.js + TypeScript)
4. Authentication flow diagram
Sản phẩm dự kiến:
Kiến trúc sư Backend sẽ xuất ra:
Thông số kỹ thuật OpenAPI (một phần):
openapi: 3.0.0
info:
title: E-commerce API
version: 1.0.0
paths:
/auth/login:
post:
summary: User login
requestBody:
content:
application/json:
schema:
type: object
properties:
email: { type: string, format: email }
password: { type: string, minLength: 8 }
responses:
'200':
description: JWT tokens
content:
application/json:
schema:
type: object
properties:
accessToken: { type: string }
refreshToken: { type: string }
Lược đồ Cơ sở dữ liệu:
CREATE TABLE users (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
email VARCHAR(255) UNIQUE NOT NULL,
password_hash VARCHAR(255) NOT NULL,
created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(),
updated_at TIMESTAMP WITH TIME ZONE DEFAULT NOW()
);
CREATE TABLE products (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
name VARCHAR(255) NOT NULL,
description TEXT,
price DECIMAL(10, 2) NOT NULL CHECK (price >= 0),
category_id UUID REFERENCES categories(id),
inventory_count INTEGER DEFAULT 0,
created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW()
);
CREATE TABLE orders (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
user_id UUID REFERENCES users(id),
total_amount DECIMAL(10, 2) NOT NULL,
status VARCHAR(50) DEFAULT 'pending',
created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW()
);
Cấu trúc thư mục:
src/
├── controllers/
│ ├── auth.controller.ts
│ ├── products.controller.ts
│ └── orders.controller.ts
├── middleware/
│ ├── auth.middleware.ts
│ └── validation.middleware.ts
├── routes/
│ ├── auth.routes.ts
│ ├── products.routes.ts
│ └── orders.routes.ts
├── services/
│ ├── auth.service.ts
│ ├── products.service.ts
│ └── orders.service.ts
├── models/
│ ├── User.ts
│ ├── Product.ts
│ └── Order.ts
└── index.ts
Lưu kết quả đầu ra. Bạn sẽ chuyển nó cho tác nhân tiếp theo.
Bước 2: Bộ Tối Ưu Hóa Cơ Sở Dữ Liệu Xem Xét Lược Đồ
Mở một phiên mới:
Activate Database Optimizer mode.
Review this PostgreSQL schema for an e-commerce API:
[Paste the schema from Step 1]
Check for:
1. Missing indexes on foreign keys and frequently queried columns
2. Query performance on product search (name, category, price range)
3. Proper constraints for data integrity
4. Missing tables for common e-commerce features (reviews, wishlists)
5. Soft delete patterns for audit trails
Output specific ALTER TABLE statements and new table definitions.
Sản phẩm dự kiến:
Đề xuất Chỉ mục:
-- Add indexes on foreign keys
CREATE INDEX idx_products_category_id ON products(category_id);
CREATE INDEX idx_orders_user_id ON orders(user_id);
-- Add index for product search
CREATE INDEX idx_products_name_search ON products USING gin(to_tsvector('english', name));
CREATE INDEX idx_products_price ON products(price) WHERE inventory_count > 0;
-- Add composite index for category filtering
CREATE INDEX idx_products_category_price ON products(category_id, price);
Bảng bị thiếu:
CREATE TABLE reviews (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
product_id UUID REFERENCES products(id),
user_id UUID REFERENCES users(id),
rating INTEGER CHECK (rating >= 1 AND rating <= 5),
comment TEXT,
created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(),
UNIQUE(product_id, user_id)
);
CREATE TABLE cart_items (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
user_id UUID REFERENCES users(id),
product_id UUID REFERENCES products(id),
quantity INTEGER DEFAULT 1 CHECK (quantity > 0),
created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(),
updated_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(),
UNIQUE(user_id, product_id)
);
Các ràng buộc cần thêm:
-- Email format validation
ALTER TABLE users ADD CONSTRAINT chk_email_format
CHECK (email ~* '^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}$');
-- Soft delete column
ALTER TABLE products ADD COLUMN deleted_at TIMESTAMP WITH TIME ZONE NULL;
CREATE INDEX idx_products_deleted_at ON products(deleted_at) WHERE deleted_at IS NULL;
Áp dụng các đề xuất này vào lược đồ của bạn.
Bước 3: Lập Trình Viên Frontend Xây Dựng Client
Mở một phiên mới:
Activate Frontend Developer mode.
Build a React dashboard for this e-commerce API:
[Paste OpenAPI spec from Step 1]
Requirements:
- TypeScript with strict mode
- React Query for server state management
- Product list with filters (category, price range, search)
- Shopping cart with real-time updates
- Order history with status tracking
- Proper error handling and loading states
- Responsive design (mobile, tablet, desktop)
Output:
1. Project setup (Vite + React + TypeScript)
2. API client with React Query hooks
3. Core components (ProductList, ProductCard, Cart, OrderHistory)
4. Error boundary and loading skeletons
Sản phẩm dự kiến:
Client API:
// src/lib/api-client.ts
import { QueryClient, useQuery, useMutation } from '@tanstack/react-query';
const API_BASE = 'http://localhost:3000/api';
async function fetcher<T>(endpoint: string, options?: RequestInit): Promise<T> {
const response = await fetch(`${API_BASE}${endpoint}`, {
...options,
headers: {
'Content-Type': 'application/json',
...options?.headers,
},
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.message || 'Request failed');
}
return response.json();
}
export function useProducts(filters?: ProductFilters) {
const params = new URLSearchParams(filters as Record<string, string>);
return useQuery({
queryKey: ['products', filters],
queryFn: () => fetcher<Product[]>(`/products?${params}`),
});
}
export function useAddToCart() {
return useMutation({
mutationFn: (item: CartItem) =>
fetcher<CartItem>('/cart', {
method: 'POST',
body: JSON.stringify(item),
}),
});
}
Thành phần Danh sách sản phẩm:
// src/components/ProductList.tsx
import { useProducts } from '@/lib/api-client';
import { ProductCard } from './ProductCard';
import { FilterSidebar } from './FilterSidebar';
import { Skeleton } from './ui/skeleton';
export function ProductList() {
const [filters, setFilters] = useState<ProductFilters>({});
const { data: products, isLoading, error } = useProducts(filters);
if (error) {
return <Alert variant="destructive">{error.message}</Alert>;
}
return (
<div className="flex gap-4">
<FilterSidebar filters={filters} onFilterChange={setFilters} />
<div className="flex-1 grid grid-cols-1 md:grid-cols-3 gap-4">
{isLoading ? (
Array.from({ length: 6 }).map((_, i) => (
<Skeleton key={i} className="h-64" />
))
) : products?.length === 0 ? (
<EmptyState message="No products found" />
) : (
products?.map(product => (
<ProductCard key={product.id} product={product} />
))
)}
</div>
</div>
);
}
Ranh giới lỗi (Error Boundary):
// src/components/ErrorBoundary.tsx
export class ErrorBoundary extends React.Component<
{ children: React.ReactNode },
{ hasError: boolean; error: Error | null }
> {
constructor(props: { children: React.ReactNode }) {
super(props);
this.state = { hasError: false, error: null };
}
static getDerivedStateFromError(error: Error) {
return { hasError: true, error };
}
render() {
if (this.state.hasError) {
return (
<div className="p-4 bg-red-50 border border-red-200 rounded">
<h2 className="text-lg font-semibold text-red-800">Something went wrong</h2>
<p className="text-red-600">{this.state.error?.message}</p>
<Button onClick={() => window.location.reload()} className="mt-2">
Reload
</Button>
</div>
);
}
return this.props.children;
}
}
Bước 4: Người Đánh Giá Mã Kiểm Tra Mọi Thứ
Mở một phiên mới:
Activate Code Reviewer mode.
Review this codebase for:
1. Security vulnerabilities:
- SQL injection risks
- XSS vulnerabilities
- CSRF protection
- Authentication bypass possibilities
2. TypeScript strict mode compliance:
- No implicit any
- Proper type definitions
- Null/undefined handling
3. Error handling gaps:
- Uncaught promise rejections
- Missing try/catch blocks
- Silent failures
[Paste the code from Steps 1-3]
Output a report with severity ratings (Critical, High, Medium, Low) and specific fixes.
Sản phẩm dự kiến:
Báo cáo Bảo mật:
## Các Vấn Đề Nghiêm Trọng
### 1. Lỗi SQL Injection trong Tìm kiếm sản phẩm
**Vị trí:** `src/controllers/products.controller.ts:24`
**Vấn đề:** Dữ liệu đầu vào của người dùng được nối trực tiếp vào truy vấn SQL
```typescript
// VULNERABLE
const query = `SELECT * FROM products WHERE name LIKE '%${search}%'`;
Khắc phục: Sử dụng các truy vấn tham số hóa
const query = 'SELECT * FROM products WHERE name LIKE $1';
await db.query(query, [`%${search}%`]);
Các Vấn Đề Mức Độ Cao
2. Thiếu Bảo Vệ CSRF
Vị trí: src/index.tsVấn đề: Không có middleware CSRF cho các thao tác thay đổi trạng thái Khắc phục: Thêm middleware csurf
import csrf from 'csurf';
app.use(csrf({ cookie: true }));
Các Vấn Đề Trung Bình
3. Kiểu dữ liệu 'any' ngầm định trong phản hồi API
Vị trí: src/lib/api-client.ts:8Vấn đề: Kiểu `any` chung chung cho hàm fetcher Khắc phục: Thêm các ràng buộc kiểu dữ liệu phù hợp
async function fetcher<T extends Record<string, unknown>>(
endpoint: string,
options?: RequestInit
): Promise<T> { ... }
**Báo cáo An toàn kiểu dữ liệu (Type Safety):**
```markdown
## Các vi phạm TypeScript
1. `products.controller.ts:45` - Thiếu chú thích kiểu trả về
2. `auth.middleware.ts:12` - Kiểu 'any' ngầm định trong khối catch
3. `orders.service.ts:78` - Đối tượng có thể không được định nghĩa
Chạy `tsc --noEmit` để xem danh sách đầy đủ. Khắc phục trước khi triển khai.
Áp dụng các bản sửa lỗi trước khi tiếp tục.
Bước 5: Người Kiểm Tra Thực Tế Xác Thực Trước Khi Triển Khai
Mở một phiên mới:
Activate Reality Checker mode.
This e-commerce API is ready for production validation.
Run your mandatory reality check process:
1. Verify files exist
2. Cross-reference claimed features with actual code
3. Require screenshot evidence from Playwright tests
4. Review test-results.json for performance metrics
Project URL: http://localhost:3000
Test results: ./public/qa-screenshots/test-results.json
Output: PASS or NEEDS WORK with specific blocking issues.
Sản phẩm dự kiến:
Lệnh Kiểm Tra Thực Tế:
# 1. Verify files exist
ls -la src/controllers/ src/services/ src/routes/
ls -la src/components/ src/lib/
# 2. Cross-reference claimed features
grep -r "jwt\|jsonwebtoken" . --include="*.ts" || echo "NO JWT FOUND"
grep -r "bcrypt\|argon2" . --include="*.ts" || echo "NO PASSWORD HASHING FOUND"
grep -r "rateLimit\|express-rate-limit" . --include="*.ts" || echo "NO RATE LIMITING FOUND"
# 3. Run Playwright screenshot capture
npx playwright test --config=qa-playwright.config.ts --grep "@screenshot"
# 4. Review test results
cat public/qa-screenshots/test-results.json
Báo cáo Xác thực:
## Kết quả kiểm tra thực tế
### Xác minh tệp: ĐẠT
- Tất cả các tệp controller đều có mặt
- Tất cả các tệp component đều có mặt
### Xác minh tính năng: CẦN SỬA
- Xác thực JWT: ĐÃ TÌM THẤY
- Băm mật khẩu: ĐÃ TÌM THẤY
- Giới hạn tỷ lệ: KHÔNG TÌM THẤY (gây chặn)
### Bằng chứng ảnh chụp màn hình: CẦN SỬA
- Bố cục trên máy tính để bàn: ĐẠT
- Bố cục trên máy tính bảng: ĐẠT
- Bố cục trên điện thoại di động: THẤT BẠI (lưới sản phẩm bị hỏng ở 375px)
### Các chỉ số hiệu suất: CẦN SỬA
- Thời gian tải trung bình: 2.3s (mục tiêu: <1s)
- Lỗi console: 3 (mục tiêu: 0)
- Yêu cầu mạng thất bại: 1 (mục tiêu: 0)
## Trạng thái cuối cùng: CẦN SỬA
### Các vấn đề gây chặn:
1. Giới hạn tỷ lệ chưa được triển khai
2. Bố cục trên điện thoại di động bị hỏng ở danh sách sản phẩm
3. Cần sửa 3 lỗi console
4. Thời gian tải vượt quá mục tiêu 1s
### Không gây chặn:
- Thêm hiệu ứng loading skeletons vào lịch sử đơn hàng
- Cải thiện thông báo lỗi
Khắc phục các vấn đề gây chặn và chạy lại Trình kiểm tra thực tế.
Tóm tắt Quy trình làm việc
┌─────────────────────────────────────────────────────────────────┐
│ Kiến trúc sư Backend │
│ → Thông số kỹ thuật OpenAPI, lược đồ cơ sở dữ liệu, cấu trúc thư mục │
└─────────────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────────────┐
│ Bộ tối ưu hóa cơ sở dữ liệu │
│ → Đề xuất chỉ mục, các bảng bị thiếu, ràng buộc │
└─────────────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────────────┐
│ Lập trình viên Frontend │
│ → Các thành phần React, client API, xử lý lỗi │
└─────────────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────────────┐
│ Người đánh giá mã │
│ → Kiểm toán bảo mật, an toàn kiểu dữ liệu, các lỗ hổng xử lý lỗi │
└─────────────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────────────┐
│ Người kiểm tra thực tế │
│ → Xác thực dựa trên bằng chứng, bằng chứng ảnh chụp màn hình, ĐẠT/KHÔNG ĐẠT │
└─────────────────────────────────────────────────────────────────┘
Thực thi tác nhân song song (Nâng cao)
Chạy các tác nhân song song để giảm tổng thời gian:
# Terminal 1: Kiến trúc sư Backend
claude "Activate Backend Architect. Design e-commerce API..."
# Terminal 2: Bộ tối ưu hóa cơ sở dữ liệu (đợi kết quả lược đồ)
claude "Activate Database Optimizer. Review this schema..."
# Terminal 3: Lập trình viên Frontend (đợi thông số kỹ thuật API)
claude "Activate Frontend Developer. Build React dashboard..."
# Terminal 4: Người đánh giá mã (đợi mã)
claude "Activate Code Reviewer. Review this codebase..."
# Tất cả các terminal: Người kiểm tra thực tế (xác thực cuối cùng)
claude "Activate Reality Checker. Run mandatory checks..."
Với việc thực thi song song, bạn có thể hoàn thành quy trình làm việc trong 2-4 giờ thay vì 6-8 giờ.
Những Gì Bạn Đã Xây Dựng
| Sản phẩm | Tác nhân | Kết quả đầu ra |
|---|---|---|
| Thiết kế API | Kiến trúc sư Backend | Thông số kỹ thuật OpenAPI, lược đồ cơ sở dữ liệu, cấu trúc thư mục |
| Tối ưu hóa lược đồ | Bộ tối ưu hóa cơ sở dữ liệu | Đề xuất chỉ mục, các bảng bổ sung, ràng buộc |
| Giao diện người dùng | Lập trình viên Frontend | Các thành phần React, client API, ranh giới lỗi |
| Kiểm toán bảo mật | Người đánh giá mã | Báo cáo lỗ hổng, sửa lỗi an toàn kiểu dữ liệu |
| Xác thực cuối cùng | Người kiểm tra thực tế | Bằng chứng ảnh chụp màn hình, chứng nhận ĐẠT/KHÔNG ĐẠT |
Các Bước Tiếp Theo
Triển khai API:
- Thiết lập PostgreSQL sản xuất với kết nối nhóm (connection pooling)
- Cấu hình biến môi trường cho các bí mật
- Thêm các điểm cuối kiểm tra sức khỏe (health check endpoints)
- Thiết lập giám sát (Prometheus, Grafana)
Mở rộng quy trình làm việc:
- Thêm tác nhân Performance Benchmarker để kiểm thử tải
- Thêm tác nhân Technical Writer để viết tài liệu
- Thêm tác nhân DevOps Automator cho pipeline CI/CD
Tái sử dụng mẫu:
- Lưu các lời nhắc (prompts) dưới dạng mẫu
- Tạo một script quy trình làm việc để nối chuỗi các phiên tác nhân
- Chia sẻ với nhóm của bạn
Năm tác nhân chuyên biệt. Một API hoàn chỉnh. Không có lời khuyên chung chung.
Đó là sức mạnh của sự chuyên môn hóa. Mỗi tác nhân đều nắm rõ lĩnh vực của mình. Mỗi tác nhân đều có danh sách kiểm tra. Mỗi tác nhân đều tạo ra các sản phẩm cụ thể.
Đến lượt bạn: chọn một dự án, kích hoạt các tác nhân và triển khai nhanh hơn.
Những Điểm Chính
- Các tác nhân chuyên biệt vượt trội hơn các trợ lý chung chung — Mỗi tác nhân có chuyên môn trong lĩnh vực của mình, danh sách kiểm tra và các sản phẩm cụ thể
- Quy trình làm việc tuần tự đảm bảo chất lượng — Kiến trúc sư Backend thiết kế, Bộ tối ưu hóa cơ sở dữ liệu xem xét, Lập trình viên Frontend xây dựng, Người đánh giá mã kiểm toán, Người kiểm tra thực tế xác thực
- Phê duyệt dựa trên bằng chứng ngăn chặn lỗi — Người kiểm tra thực tế yêu cầu bằng chứng ảnh chụp màn hình, kết quả grep và số liệu hiệu suất trước khi cấp chứng nhận ĐẠT
- Thực thi song song giảm tổng thời gian — Chạy 4 terminal cùng lúc để hoàn thành trong 2-4 giờ thay vì 6-8 giờ
- Lưu các lời nhắc dưới dạng mẫu — Tái sử dụng cùng một kích hoạt tác nhân để có kết quả nhất quán trên các dự án
Câu hỏi thường gặp
Tác nhân AI dành cho nhà phát triển là gì?Tác nhân AI là các trợ lý AI chuyên biệt có chuyên môn trong một lĩnh vực. Không giống như các chatbot chung chung, các tác nhân như Kiến trúc sư Backend hoặc Người đánh giá mã có danh sách kiểm tra cụ thể và tạo ra các sản phẩm nhất quán.
Làm cách nào để cài đặt các tác nhân từ The Agency?Sao chép kho lưu trữ tại github.com/msitarzewski/agency-agents, sau đó sao chép các tệp .md vào ~/.claude/agents/ cho Claude Code hoặc sử dụng script cài đặt cho các công cụ khác.
Tác nhân Reality Checker là gì?Reality Checker là một tác nhân QA dựa trên bằng chứng, từ chối phê duyệt công việc nếu không có bằng chứng. Nó yêu cầu ảnh chụp màn hình, kết quả grep và số liệu hiệu suất trước khi cấp chứng nhận ĐẠT.
Tôi có thể chạy nhiều tác nhân song song không?Có. Mở nhiều terminal và kích hoạt các tác nhân khác nhau trong mỗi terminal. Chuyển giao các sản phẩm bằng cách sao chép kết quả đầu ra hoặc sử dụng bộ nhớ MCP để tự động chuyển giao.
Làm cách nào để chuyển ngữ cảnh giữa các tác nhân?Sao chép kết quả đầu ra từ một tác nhân và dán làm đầu vào cho tác nhân tiếp theo. Đối với việc chuyển giao tự động, hãy sử dụng bộ nhớ MCP để lưu trữ các sản phẩm mà tác nhân tiếp theo có thể truy xuất.
Nếu một tác nhân báo CẦN SỬA (NEEDS WORK) thì sao?Khắc phục các vấn đề gây chặn mà tác nhân đã xác định, sau đó chạy lại tác nhân. Trình kiểm tra thực tế liệt kê cụ thể những gì cần sửa trước khi cấp chứng nhận ĐẠT.
Tôi có cần cả 5 tác nhân cho mọi dự án không?Không. Bắt đầu với Kiến trúc sư Backend và Người đánh giá mã cho các dự án API. Thêm Bộ tối ưu hóa cơ sở dữ liệu cho các lược đồ phức tạp, Lập trình viên Frontend cho công việc giao diện người dùng và Người kiểm tra thực tế trước khi triển khai.
