Skip to content
This repository has been archived by the owner on Aug 7, 2024. It is now read-only.

feat(docs): ドキュメントの仮整備 #52

Draft
wants to merge 1 commit into
base: main
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion LICENSE
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
MIT License

Copyright (c) 2023 Poporon Network & Other Contributors
Copyright (c) 2023-2024 Poporon Network & Other Contributors

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
Expand Down
331 changes: 1 addition & 330 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,44 +3,6 @@
Matz葉がにロボコン 大会運営支援ツール
[フロントエンドはこちら](https://github.com/poporonnet/kcmsf)

## 開発者向け情報

### requires

- [bun](https://bun.sh/) (latest)

### サーバーを動作させる

上記必要なものをインストールしてください.

データ保存用の`data.json`を用意してください.

```json
{
"entry": [],
"match": []
}
```

依存関係のインストール

```bash
bun i
```

サーバーの起動 (プロダクション向け)

```bash
bun run build
bun start
```

サーバーの起動 (開発向け)

```bash
bun dev
```

### Authors/License

| <img src="https://github.com/laminne.png" width="100px"> | <img src="https://github.com/kiharu3112.png" width="100px"> | <img src="https://github.com/tufusa.png" width="100px"> |
Expand All @@ -54,300 +16,9 @@ bun dev
🔧: KCMS/KCMSFの開発
🦀: 書き込みツール開発

(C) 2023 Poporon Network & Other Contributors
(C) 2023-2024 Poporon Network & Other Contributors
MIT License

## Api Reference

### endpoint list

- `POST /entry` エントリー
- `DELETE /entry/{id}` エントリーの取り消し
- `GET /entry` 全エントリーの取得
- `GET /match/{matchType}` 部門の(予選/本選)対戦表
- `POST /match/{matchType}` 部門の対戦表を生成

### `POST /entry`

エントリーします

#### 入力

body: `application/json`

| 項目名 | 型(TS表記) | 説明 | 備考 |
| ----------- | -------------------------------- | ---------------------- | ---------------------------------------- |
| teamName | `string` | チーム名 | 重複するとエラー |
| members | `[string, string]` | メンバーの名前 | 小学生部門: 1 or 2人 / オープン部門: 1人 |
| isMultiWalk | `boolean` | ロボットが多足歩行型か | |
| category | `"Elementary" or "Open"` (union) | 出場する部門 | |

#### 出力

##### `200 OK`

```json
{
"id": "39440930485098",
"teamName": "ニカ.reverse()",
"members": ["木下竹千代", "織田幸村"],
"isMultiWalk": false,
"category": "Elementary"
}
```

##### `400 Bad Request`

- `TOO_MANY_MEMBERS`: メンバー数が多すぎる

```json
{
"error": "TOO_MANY_MEMBERS"
}
```

### `DELETE /entry/{id}`

エントリーを取り消します

#### 入力

パスパラメータ

- `id`: `string`
- 取り消すエントリーのID

body: `application/json`

```json
{}
```

#### 出力

##### `204 No Content`

取り消しました.
※レスポンスボディはありません

### `GET /entry`

全エントリーを取得します

#### 出力

##### `200 OK`

```json
[
{
"id": "39440930485098",
"teamName": "ニカ.reverse()",
"members": ["木下竹千代", "織田幸村"],
"isMultiWalk": false,
"category": "Elementary"
}
]
```

### `GET /match/{matchType}`

各部門の本選、予選対戦表を取得します

#### 入力

パスパラメータ

- `matchType`: `"primary"|"final"`
- 部門名

#### 出力

##### `200 OK`

```jsonc
[
{
// 試合ID
"id": "43945095",
// 試合するチームのID
"teams": [
{
"id": "30495883404",
"teamName": "ニカ.reverse()",
"isMultiWalk": false,
"category": "Elementary"
},
{
"id": "93454093",
"teamName": "カニ.reverse()",
"isMultiWalk": false,
"category": "Elementary"
}
],
// 対戦の種類
"matchType": "primary",
// チームごとの得点 (teamsと同じ順で入る)
"points": [2, 5],
"courseIndex": 1,
// チームごとのゴール時間(秒)
"time": [50, 61],
// 勝利チームのID
"winnerID": "93454093"
}
]
```

##### `404 Not Found`

- `UNKNOWN_CATEGORY`: 存在しないカテゴリ
- `UNKNOWN_MATCH_TYPE`: 存在しない対戦種類

### `POST /match/{matchType}/{category}`

各部門の本選、予選対戦表を生成します
※ 既に生成済みの場合は上書きされます
※ オープン部門の予選対戦表は生成できません(エラーになります)

#### 入力

パスパラメータ

- `matchType`: `"final"|"primary"`
- 部門名
- `category`: `"elementary"|"open"`
- カテゴリ

```json
{}
```

#### 出力

##### `200 OK`

```jsonc
[
{
// 試合ID
"id": "43945095",
// 試合するチームのID
"teams": {
// コート左側チーム
"left": {
"id": "30495883404",
"teamName": "ニカ.reverse()",
"isMultiWalk": false,
"category": "Elementary"
},
// コート右側チーム
"right": {
"id": "93454093",
"teamName": "カニ.reverse()",
"isMultiWalk": false,
"category": "Elementary"
}
},
// 対戦の種類
"matchType": "primary",
// 対戦結果
"results": {
// 左チームの結果
"left": {
"teamID": "30495883404",
"points": 0,
"time": 300
},
// 右チームの結果
"right": {
"teamID": "93454093",
"points": 7,
"time": 60
}
},
// コース番号(0始まり)
"courseIndex": 1,
// 勝利チームのID
"winnerID": "93454093"
}
]
```

##### `404 Not Found`

- `UNKNOWN_CATEGORY`: 存在しないカテゴリ
- `UNKNOWN_MATCH_TYPE`: 存在しない対戦種類

### `PUT /match/{id}`

指定した試合の結果を入力します.

#### 入力

パスパラメータ

- id: `string`
- 試合ID

body: `application/json`

```json
{
"results": {
"left": {
"teamID": "8e28115e-7fa4-4359-8a68-02d1c9f7b8f6",
"points": 0,
"time": 300
},
"right": {
"teamID": "31dface0-a745-43f1-8bd6-375e0082f5b1",
"points": 7,
"time": 60
}
}
}
```

#### 出力

##### `200 OK`

更新しました

```json
{
"id": "8ce4ea11-acd8-4c2d-a13c-09eb24d091fd",
"teams": {
"left": {
"id": "8e28115e-7fa4-4359-8a68-02d1c9f7b8f6",
"teamName": "チーム0",
"isMultiWalk": true,
"category": "Open"
},
"right": {
"id": "31dface0-a745-43f1-8bd6-375e0082f5b1",
"teamName": "チーム1",
"isMultiWalk": true,
"category": "Elementary"
}
},
"matchType": "primary",
"courseIndex": 0,
"results": {
"left": {
"teamID": "8e28115e-7fa4-4359-8a68-02d1c9f7b8f6",
"points": 0,
"time": 300
},
"right": {
"teamID": "31dface0-a745-43f1-8bd6-375e0082f5b1",
"points": 7,
"time": 60
}
}
}
```

## リンク

[書き込みツール フロントエンド](https://github.com/poporonnet/kanicon-writer-front)
Expand Down
Loading
Loading