Skip to content

Commit 0a49f06

Browse files
committed
docs: add unified user guide with MyST multi-language tabs
1 parent 869db95 commit 0a49f06

1 file changed

Lines changed: 252 additions & 0 deletions

File tree

docs/user/index.md

Lines changed: 252 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,252 @@
1+
---
2+
title: quanttide-project-toolkit 用户指南
3+
---
4+
5+
# quanttide-project-toolkit
6+
7+
一套跨语言的项目管理 SDK,覆盖数据模型、API 路由、UI 组件。
8+
9+
## 安装
10+
11+
::::{tab-set}
12+
:::{tab-item} Python
13+
:sync: python
14+
15+
```bash
16+
pip install quanttide-project
17+
# FastAPI 集成(可选)
18+
pip install fastapi-quanttide-project
19+
```
20+
:::
21+
22+
:::{tab-item} Dart
23+
:sync: dart
24+
25+
```yaml
26+
# pubspec.yaml
27+
dependencies:
28+
quanttide_project: ^0.2.0
29+
```
30+
:::
31+
32+
:::{tab-item} Flutter
33+
:sync: flutter
34+
35+
```yaml
36+
# pubspec.yaml
37+
dependencies:
38+
flutter_quanttide_project: ^0.1.0
39+
```
40+
:::
41+
::::
42+
43+
## 核心概念
44+
45+
数据模型分为 `Project`(项目)和 `Task`(任务)两种资源。
46+
47+
### Project
48+
49+
项目有唯一标识、名称、标题、描述和审计信息。
50+
51+
::::{tab-set}
52+
:::{tab-item} Python
53+
:sync: python
54+
55+
```python
56+
from quanttide_project import Project
57+
58+
p = Project(
59+
id="proj-1",
60+
name="my-project",
61+
title="我的项目",
62+
description="项目描述",
63+
)
64+
```
65+
:::
66+
67+
:::{tab-item} Dart
68+
:sync: dart
69+
70+
```dart
71+
import 'package:quanttide_project/quanttide_project.dart';
72+
73+
final p = Project(
74+
id: 'proj-1',
75+
name: 'my-project',
76+
title: '我的项目',
77+
description: '项目描述',
78+
);
79+
```
80+
:::
81+
::::
82+
83+
### Task
84+
85+
任务比项目多了分类、状态、优先级、负责人和时间计划。
86+
87+
::::{tab-set}
88+
:::{tab-item} Python
89+
:sync: python
90+
91+
```python
92+
from datetime import datetime, timezone
93+
from quanttide_project import Task
94+
95+
t = Task(
96+
id="task-1",
97+
title="实现登录功能",
98+
type="task",
99+
status="in_progress",
100+
priority="high",
101+
assignee="alice",
102+
tags={"module": "auth"},
103+
start_at=datetime(2026, 5, 1, tzinfo=timezone.utc),
104+
end_at=datetime(2026, 5, 15, tzinfo=timezone.utc),
105+
)
106+
```
107+
:::
108+
109+
:::{tab-item} Dart
110+
:sync: dart
111+
112+
```dart
113+
import 'package:quanttide_project/quanttide_project.dart';
114+
115+
final t = Task(
116+
id: 'task-1',
117+
title: '实现登录功能',
118+
type: 'task',
119+
status: 'in_progress',
120+
priority: 'high',
121+
assignee: 'alice',
122+
tags: {'module': 'auth'},
123+
startAt: DateTime.utc(2026, 5, 1),
124+
endAt: DateTime.utc(2026, 5, 15),
125+
);
126+
```
127+
:::
128+
::::
129+
130+
### JSON 序列化
131+
132+
所有模型支持 JSON 序列化和反序列化。
133+
134+
::::{tab-set}
135+
:::{tab-item} Python
136+
:sync: python
137+
138+
```python
139+
# 序列化
140+
data = p.model_dump(mode="json", exclude_none=True)
141+
# 反序列化
142+
p2 = Project.model_validate(data)
143+
```
144+
:::
145+
146+
:::{tab-item} Dart
147+
:sync: dart
148+
149+
```dart
150+
// 序列化
151+
final data = p.toJson();
152+
// 反序列化
153+
final p2 = Project.fromJson(data);
154+
```
155+
:::
156+
::::
157+
158+
### 更新 Task
159+
160+
Task 是不可变模型,通过 `replace`(Python)或 `copyWith`(Dart)创建修改后的新实例。
161+
162+
::::{tab-set}
163+
:::{tab-item} Python
164+
:sync: python
165+
166+
```python
167+
updated = t.replace(status="done", priority="high")
168+
```
169+
:::
170+
171+
:::{tab-item} Dart
172+
:sync: dart
173+
174+
```dart
175+
final updated = t.copyWith(status: 'done', priority: 'high');
176+
```
177+
:::
178+
::::
179+
180+
仅可修改 `type`、`category`、`status`、`priority`、`assigner`、`assignee`、`start_at`、`end_at`,标识和审计字段不可变。
181+
182+
## CRUD API(Python FastAPI)
183+
184+
`fastapi-quanttide-project` 为 Project 和 Task 自动生成标准 CRUD 端点。
185+
186+
```python
187+
from fastapi import FastAPI
188+
from fastapi_quanttide_project import ProjectRouter, TaskRouter
189+
190+
app = FastAPI()
191+
192+
app.include_router(ProjectRouter.build_default())
193+
app.include_router(TaskRouter.build_default())
194+
```
195+
196+
启动后获得:
197+
198+
| 方法 | 路径 | 说明 |
199+
|------|------|------|
200+
| POST | `/projects` | 创建项目 |
201+
| GET | `/projects` | 项目列表 |
202+
| GET | `/projects/{id}` | 项目详情 |
203+
| PATCH | `/projects/{id}` | 更新项目 |
204+
| DELETE | `/projects/{id}` | 删除项目 |
205+
206+
Task 同理,路径为 `/tasks`。
207+
208+
## UI 组件(Flutter)
209+
210+
`flutter_quanttide_project` 提供看板 UI 组件。
211+
212+
```dart
213+
import 'package:flutter_quanttide_project/flutter_quanttide_project.dart';
214+
215+
BoardView(
216+
header: Text('项目看板'),
217+
columns: [
218+
(child: BoardColumn(
219+
title: Text('待办'),
220+
content: ListView(children: [
221+
BoardCard(
222+
title: Text('实现登录'),
223+
onTap: () { /* 点击事件 */ },
224+
),
225+
]),
226+
), flex: 1),
227+
(child: BoardColumn(
228+
title: Text('进行中'),
229+
content: ListView(children: [
230+
BoardCard(
231+
title: Text('编写文档'),
232+
description: Text('完成 API 文档'),
233+
),
234+
]),
235+
), flex: 1),
236+
],
237+
)
238+
```
239+
240+
`BoardView` 自动响应桌面端(横向排列)和移动端(纵向堆叠)。
241+
242+
## 包关系
243+
244+
```text
245+
dart ── 数据模型(参考实现)
246+
247+
├── python ── Pydantic 模型
248+
│ │
249+
│ └── fastapi ── CRUD 路由
250+
251+
└── flutter ── 看板 UI 组件
252+
```

0 commit comments

Comments
 (0)