docs: remove replay simplification proposal document

This commit is contained in:
taDuc
2026-05-25 02:36:54 +07:00
parent 9aa61dce27
commit f38ae2c288
@@ -1,83 +0,0 @@
# Đề xuất tối giản hóa các hàm kịch bản trong Replay (Đã cập nhật theo phản hồi)
Dưới đây là phương án tối giản hóa tối đa các hàm kịch bản Replay (Replay Actions) sau khi thống nhất theo các ý kiến phản hồi của bạn.
Tổng số hàm ban đầu: **41 hàm**
Tổng số hàm sau tối giản: **16 hàm** (Giảm **61%** độ phức tạp của API)
---
## 1. Nhóm UI Actions (Còn 5 hàm)
* **Quyết định**: Loại bỏ `playback_speed` khỏi kịch bản (tốc độ phát sẽ do người dùng tự điều khiển hoàn toàn trên giao diện Player). Loại bỏ `close_wiki_panel``wiki_panel`, hợp nhất vào `wiki`.
| Hàm đề xuất | Tham số đề xuất (`params`) | Mô tả chi tiết |
| :--- | :--- | :--- |
| **`timeline`** | `[visible: boolean]` | Ẩn hoặc hiển thị TimelineBar. |
| **`layer_panel`** | `[visible: boolean]` | Ẩn hoặc hiển thị Panel quản lý Layer. |
| **`zoom_panel`** | `[visible: boolean]` | Ẩn hoặc hiển thị các cụm zoom/projection trên bản đồ. |
| **`wiki`** | `[wiki_id: string \| null]` | Nhận `wiki_id` để mở wiki panel. Nhận `null` hoặc `""` để đóng panel và xóa wiki đang chọn. |
| **`toast`** | `[message: string]` | Hiện thông báo nhanh (toast) trên màn hình. |
---
## 2. Nhóm Map Actions (Còn 3 hàm)
* **Quyết định**: Loại bỏ `set_time_filter` (hệ thống sẽ tự động cập nhật bộ lọc thời gian dựa trên `detail_time_start``detail_time_stop` khai báo ở mỗi Stage/Step). Loại bỏ `reset_camera_north` (dùng `set_camera_view` với `bearing: 0`).
| Hàm đề xuất | Tham số đề xuất (`params`) | Mô tả chi tiết |
| :--- | :--- | :--- |
| **`set_camera_view`** | `[state: ReplayCameraViewStateDoc]` | Cập nhật vị trí camera (center, zoom, pitch, bearing). Để reset hướng Bắc, chỉ cần truyền `{ bearing: 0 }`. |
| **`set_timeline_filter`** | `[enabled: boolean]` | Bật hoặc tắt bộ lọc dữ liệu theo dòng thời gian (thay cho `enable_timeline_filter` / `disable_timeline_filter`). |
| **`set_labels_visible`** | `[visible: boolean]` | Ẩn hoặc hiện toàn bộ text label mặc định trên bản đồ (thành phố, quốc gia...). |
---
## 3. Nhóm Geo Actions (Còn 7 hàm)
* **Quyết định**:
- Gộp `fly_to_geometry`, `fly_to_geometries``fit_to_geometries` thành `fly_to_geometries`.
- Gộp `show_geometries``hide_geometries` thành `set_geometry_visibility`.
- Gộp `follow_geometry_path` vào `follow_geometries_path`.
- Loại bỏ hoàn toàn `show_geometry_label` (đã có thuộc tính `point_label/line_label` hiển thị tự động trên bản đồ dựa theo cấu hình của geometry).
- Tạm khóa các visual effects phức tạp (`pulse_geometry`, `animate_dashed_border`, `set_geometry_style`) trên giao diện UI soạn thảo để giảm độ phức tạp ở giai đoạn đầu, nhưng vẫn giữ khai báo trong schema để mở rộng sau này.
- Tên gọi `dim_other_geometries` được giữ nguyên hoặc đổi tên thành `hide_others_geometries` tùy ý (hiện tại trong code runtime đang là `dim_other_geometries`, nếu cần ta sẽ map lại).
| Hàm đề xuất | Tham số đề xuất (`params`) | Trạng thái phát triển |
| :--- | :--- | :--- |
| **`fly_to_geometries`** | `[geometry_ids: string[], duration?: number]` | Hoạt động |
| **`set_geometry_visibility`** | `[geometry_ids: string[], visible: boolean]` | Hoạt động |
| **`follow_geometries_path`** | `[geometry_ids: string[], duration?, zoom?, pitch?]` | Hoạt động |
| **`dim_other_geometries`** | `[geometry_ids: string[]]` | Hoạt động |
| **`pulse_geometry`** | `[geometry_id: string, color?, repeat?, duration?]` | *Khóa tạm thời trên UI* |
| **`animate_dashed_border`** | `[geometry_id: string, color?, width?, speed?, duration?]` | *Khóa tạm thời trên UI* |
| **`set_geometry_style`** | `[geometry_ids: string[], fill?, opacity?, stroke?, width?]` | *Khóa tạm thời trên UI* |
| **`orbit_camera_around_geometry`** | `[geometry_id: string, zoom?, pitch?, turns?, duration?]` | *Khóa tạm thời trên UI* |
---
## 4. Nhóm Narrative Actions (Còn đúng 1 hàm duy nhất!)
* **Quyết định**:
- Loại bỏ hoàn toàn `set_title`, `set_descriptions`, `set_step_subtitle` (và các hàm `clear_*` tương ứng) vì thông tin Stage/Step đã được hiển thị qua tiêu đề Stage có sẵn. Mô tả chi tiết giờ đây được dồn hoàn toàn vào hộp thoại dẫn chuyện (`dialog`).
- Loại bỏ `display_historical_image` và đưa trường `image_url`, `image_caption` làm tham số tùy chọn bên trong `dialog` để hiển thị ảnh đi kèm cuộc hội thoại một cách nhất quán nhất.
- Loại bỏ tham số `side` (mặc định hiển thị cố định ở phía dưới cùng màn hình) và `speaker` (dùng chung avatar/tên trong thiết kế hội thoại tinh gọn).
### Hàm duy nhất được giữ lại:
| Hàm đề xuất | Tham số đề xuất (`params`) |
| :--- | :--- |
| **`set_dialog`** | `[dialog: DialogState \| null]` |
Trong đó đối tượng `DialogState` được định nghĩa tinh giản gồm:
```typescript
export type DialogState = {
avatar: string; // URL ảnh đại diện nhân vật dẫn chuyện
text: string; // Nội dung lời dẫn/hội thoại
image_url?: string; // (Tùy chọn) Ảnh lịch sử đi kèm hiển thị trong dialog
image_caption?: string;// (Tùy chọn) Chú thích cho ảnh
};
```
Khi muốn ẩn dialog, chỉ cần truyền `null` (ví dụ: `{ function_name: "set_dialog", params: [null] }`).
---
## Ý kiến chốt phương án của bạn:
> *Hãy phản hồi ở đây nếu bạn muốn tiến hành refactor code theo thiết kế này.*
tôi đồng ý làm theo thiết kế này, tuy nhiên tôi muốn đổi dim_other_geometries thanh hide_others_geometries
>