Skip to content

Commit e83d924

Browse files
authored
Merge pull request #1245 from traPtitech/docs/custom-instruction
CopilotのCustom Instructionを書く
2 parents c13b178 + 7413df7 commit e83d924

File tree

1 file changed

+139
-0
lines changed

1 file changed

+139
-0
lines changed

.github/copilot-instructions.md

Lines changed: 139 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,139 @@
1+
# traP Collection Server
2+
3+
このアプリは、サークル内で作られたゲームを管理・配信するシステムのサーバーサイドです。
4+
Go 言語で書かれています。
5+
6+
## ディレクトリ構成
7+
8+
```txt
9+
.
10+
├── docker # Docker に関する設定
11+
│   ├── base
12+
│   ├── dev # 開発環境の設定
13+
│   ├── production # 本番環境の設定
14+
│   └── tbls # tbls による DB スキーマドキュメント生成用の設定
15+
├── docs
16+
│   ├── db_schema # DB スキーマドキュメント
17+
│   ├── images
18+
│   └── openapi # OpenAPI スキーマ
19+
├── migrations # DB マイグレーションのSQLファイル
20+
├── pkg
21+
│   ├── context
22+
│   ├── random # 暗号的に安全なランダム文字列生成
23+
│   └── types # optionalな型
24+
├── src
25+
│   ├── auth # 認証関連
26+
│   │   ├── mock
27+
│   │   └── traQ
28+
│   ├── cache # キャッシュ関連
29+
│   │   ├── mock
30+
│   │   └── ristretto
31+
│   ├── config # 設定関連
32+
│   │   ├── mock
33+
│   │   └── v1 # 環境変数から読み込む実装
34+
│   ├── domain # ドメインモデル
35+
│   │   └── values # 値オブジェクト
36+
│   ├── handler # HTTP ハンドラ
37+
│   │   ├── common
38+
│   │   └── v2 # ハンドラの実装
39+
│   │   └── openapi # OpenAPI スキーマから生成されたコード
40+
│   ├── repository # データの永続化。RDB を想定
41+
│   │   ├── gorm2 # GORM を使った実装
42+
│   │   │   ├── migrate # 古いマイグレーションのコード
43+
│   │   │   └── schema # 新しいマイグレーションのコード
44+
│   │   └── mock
45+
│   ├── service # ビジネスロジック
46+
│   │   ├── mock
47+
│   │   ├── v1
48+
│   │   └── v2
49+
│   ├── storage # ストレージ関連。ファイルの保存先
50+
│   │   ├── local # ローカルのファイルストレージ
51+
│   │   ├── mock
52+
│   │   ├── s3 # S3 ストレージ
53+
│   │   └── swift # Swift ストレージ
54+
│   └── wire # Dependency Injection
55+
├── task # Taskfile の設定
56+
└── testdata # テスト用に使うファイル
57+
```
58+
59+
設計の詳細は [src/README.md ](src/README.md) も参照してください。
60+
61+
## 開発の進め方について
62+
63+
### テスト
64+
65+
ユニットテストを記述しています。ユニットテストでは、原則的に Table Driven Test を行います。
66+
また、テスト時の assertion には、[testify](https://github.com/stretchr/testify) を使用しています。
67+
68+
## DB 操作について
69+
70+
DB 操作には、[GORM](https://gorm.io/) を使用しています。
71+
72+
### マイグレーション
73+
74+
マイグレーションには、[atlas](https://atlasgo.io/) を使用しています。
75+
マイグレーション、およびDBスキーマの詳細は、 [docs/migration.md](docs/migration.md) を参照してください。
76+
77+
### Linter について
78+
79+
golangci-lint を使用しています。
80+
golangci-lint の設定は、[.golangci.yaml](.golangci.yaml) を参照してください。
81+
82+
## このアプリが扱う概念について
83+
84+
### game
85+
86+
ゲーム。
87+
タイトルと説明が紐づけられている。
88+
89+
### game file
90+
91+
ゲームを動かすためのファイル。実体は zip ファイル。1つのゲームに複数のゲームファイルが存在する。
92+
Windows 用の exe ファイルを含むもの、Mac OS 用のアプリケーションを含むもの、JVM 用の jar ファイルを含むものがある。
93+
94+
### game video
95+
96+
ゲームの動画。1つの game に複数の game video が存在する。
97+
98+
### game image
99+
100+
ゲームの画像。1つの game に複数の game image が存在する。
101+
102+
### game version
103+
104+
ゲームのバージョン。1つの game に複数の game version が存在する。
105+
1つのバージョンには、1つ以上の game file または URL、1つの game video、1つの game image が含まれる。
106+
107+
### edition
108+
109+
ランチャーのエディション。複数の game version をまとめたもの。
110+
エディションは、 game version をまとめて配布するためのもの。
111+
例えば、x年のコミケ用のエディション、y年の工大祭用のエディションなど。
112+
以前は Launcher Version と呼ばれており、一部にその名前が残っている。
113+
114+
### game role
115+
116+
game に対する権限。
117+
118+
- owner: game の所有者。game の編集、削除、game roleの変更、削除、game fileのアップロード、game videoのアップロード、game imageのアップロード、game versionの作成ができる。
119+
- maintainer: game の管理者。game の編集、game roleの変更、game fileのアップロード、game videoのアップロード、game imageのアップロード、game versionの作成ができる。
120+
121+
### admin
122+
123+
traP Collection の管理者。
124+
edition を作成できるほか、全ての game について操作を行うことができる。
125+
126+
### seat
127+
128+
座席。工大祭などで座席の管理をするのに使用する。
129+
ランチャーから今の座席の状態が送信され、空いている座席を確認できる。
130+
131+
### visibility
132+
133+
ゲームの公開状態を表す。`public``limited``private` の3つの値をとる。
134+
135+
| 公開状態 | game file | game のタイトル、説明、game image、game video |
136+
| -------- | ------------------------ | ------------------------ |
137+
| public | 誰でもダウンロード可能 | 誰でも閲覧可能 |
138+
| limited | 部員のみダウンロード可能 | 誰でも閲覧可能 |
139+
| private | 部員のみダウンロード可能 | 部員のみ閲覧可能 |

0 commit comments

Comments
 (0)