import {Meta} from '@storybook/addon-docs/blocks'

<Meta title='@dxtmisha/vi/scripts/Classes/DesignTypes - Trình tạo kiểu AI'/>

# Lớp DesignTypes

Lớp `DesignTypes` là một tiện ích chuyên dụng được thiết kế để thu hẹp khoảng cách giữa các định nghĩa kiểu (type definitions) phức tạp trong mã nguồn và các trợ lý lập trình AI. Nó tự động hóa việc trích xuất, làm sạch và nén các tệp khai báo TypeScript (`.d.ts`), sử dụng AI để tạo ra phiên bản cực kỳ tối giản của hệ thống kiểu trong dự án, cung cấp ngữ cảnh tối đa với mức tiêu thụ token tối thiểu.

## Các tính năng chính

- **Khám phá tự động** — Quét đệ quy các thư mục phân phối để tìm các tệp khai báo kiểu có liên quan.
- **Lọc thông minh** — Tự động loại trừ các props constructor nội bộ và các kiểu logic không thiết yếu trong khi vẫn giữ lại các API công khai.
- **Nén dựa trên AI** — Sử dụng các gợi ý LLM để loại bỏ siêu dữ liệu không cần thiết (imports, chú thích tiếng Nga, dòng trống) и hợp nhất các định nghĩa.
- **Đầu ra thống nhất** — Kết hợp nhiều tệp khai báo rời rạc thành một thư viện kiểu gắn kết duy nhất.
- **Tối ưu hóa ngữ cảnh** — Ưu tiên các interfaces, enums và type aliases quan trọng nhất đối với sự hiểu biết của AI.

## Khởi tạo

Khởi tạo trình tạo bằng cách chỉ định thư mục nguồn nơi đặt các tệp khai báo đã biên dịch.

**Tham số:**
- `dir: string` — Đường dẫn đến thư mục đầu vào (mặc định là `'dist'`).

```typescript
import { DesignTypes } from '@dxtmisha/scripts'

const generator = new DesignTypes('packages/core/dist')
generator.make()
```

## Các phương thức

### Điều khiển

- `make(): void` — Bắt đầu toàn bộ quy trình tạo: khám phá, kết hợp, xử lý AI và lưu trữ.

## Các thao tác (Operations)

### Quy trình tạo kiểu (Type Generation Pipeline)

Khi `make()` được thực thi, lớp sẽ điều phối một quy trình làm việc gồm nhiều giai đoạn:
1. **Lọc tệp (`getListByFilter`)**: Động cơ quét thư mục để tìm các tệp `.d.ts`, lọc ra các chi tiết triển khai nội bộ như `props.d.ts` hoặc `types.d.ts` bên trong các thư mục constructor.
2. **Xác thực nội dung (`isContent`)**: Nó xác minh rằng mỗi tệp thực sự chứa các định nghĩa kiểu có ý nghĩa (interfaces, types hoặc enums) trước khi xử lý.
3. **Hợp nhất (`toOneFile`)**: Tất cả nội dung tệp được xác định sẽ được hợp nhất thành một chuỗi lớn duy nhất, được gắn thẻ với đường dẫn tệp gốc để cung cấp ngữ cảnh.
4. **Chuyển đổi AI (`toAiEdit`)**: Nội dung đã hợp nhất được gửi đến trợ lý AI với các hướng dẫn cụ thể để loại bỏ mã mẫu (boilerplate), xóa các chú thích không phải tiếng Anh và tối thiểu hóa cú pháp.
5. **Lưu trữ (`save`)**: Thư viện kiểu mật độ cao cuối cùng được lưu vào đường dẫn đầu ra đã định cấu hình (thường được chỉ định trong `UI_FILE_AI_TYPES`).

### Trường hợp sử dụng: Tiêm ngữ cảnh AI

Mục tiêu chính của lớp này là tạo ra một "kiến thức nhân tạo" có thể được tiêm vào hệ thống prompt của các LLM đang làm việc trong dự án. Bằng cách cung cấp một cái nhìn tổng quan sạch sẽ, cô đọng về tất cả các kiểu và interface có sẵn, AI có thể viết mã an toàn về kiểu (type-safe) và hiểu kiến trúc thành phần với độ chính xác cao hơn đáng kể và chi phí thấp hơn.
