160 lines
5.5 KiB
Markdown
160 lines
5.5 KiB
Markdown
# gifunavi
|
||
|
||
A new Flutter project.
|
||
|
||
## Getting Started
|
||
|
||
This project is a starting point for a Flutter application.
|
||
|
||
A few resources to get you started if this is your first Flutter project:
|
||
|
||
- [Lab: Write your first Flutter app](https://docs.flutter.dev/get-started/codelab)
|
||
- [Cookbook: Useful Flutter samples](https://docs.flutter.dev/cookbook)
|
||
|
||
For help getting started with Flutter development, view the
|
||
[online documentation](https://docs.flutter.dev/), which offers tutorials,
|
||
samples, guidance on mobile development, and a full API reference.
|
||
|
||
# 更新履歴
|
||
|
||
0. flutter_compass は pub.dev cache で 34 に変更。キャッシュをクリアしたら修正が必要。
|
||
|
||
1. 2024-8-17
|
||
・新規にプロジェクトを作り直し。
|
||
・ユーザー登録で13歳以上でないと登録できない様にした。
|
||
・生年月日の選択カレンダーを導入。
|
||
・エントリーカテゴリはメンバー構成によって自動修正できる様にした。(修正中)
|
||
・イベントの締め切りフィールドを追加し、この日以降のイベントの修正はできない様にした。
|
||
・エントリーに参加し、ゴールしたら、イベントの修正はできない様にする。必然的にチーム構成を変更する際には、エントリーが終了していれば、変更ができない様にして、新規追加を促す。
|
||
2.
|
||
|
||
|
||
#Server
|
||
# API仕様変更案
|
||
|
||
## 1. イベントAPI
|
||
|
||
### GET /api/events
|
||
- 変更点: レスポンスに `deadline_datetime` フィールドを追加
|
||
- レスポンス例:
|
||
```json
|
||
{
|
||
"id": 1,
|
||
"event_name": "サマーマラソン2024",
|
||
"start_datetime": "2024-07-01T09:00:00Z",
|
||
"end_datetime": "2024-07-01T17:00:00Z",
|
||
"deadline_datetime": "2024-06-15T23:59:59Z"
|
||
}
|
||
```
|
||
|
||
### POST /api/events
|
||
- 変更点: リクエストボディに `deadline_datetime` フィールドを追加
|
||
- リクエスト例:
|
||
```json
|
||
{
|
||
"event_name": "ウィンターラン2025",
|
||
"start_datetime": "2025-01-15T08:00:00Z",
|
||
"end_datetime": "2025-01-15T16:00:00Z",
|
||
"deadline_datetime": "2025-01-01T23:59:59Z"
|
||
}
|
||
```
|
||
|
||
## 2. エントリーAPI
|
||
|
||
### PUT /api/entries/{id}
|
||
- 変更点:
|
||
1. エントリー更新前にイベントの締め切り日時をチェック
|
||
2. 締め切りを過ぎている場合、400 Bad Requestを返す
|
||
- エラーレスポンス例:
|
||
```json
|
||
{
|
||
"error": "entry_update_closed",
|
||
"message": "エントリーの締め切りが過ぎているため、更新できません。",
|
||
"deadline": "2024-06-15T23:59:59Z"
|
||
}
|
||
```
|
||
|
||
## 3. チームAPI
|
||
|
||
### GET /api/teams/{id}/entries
|
||
- 新規エンドポイント: 指定されたチームの全エントリーを取得
|
||
- レスポンス例:
|
||
```json
|
||
[
|
||
{
|
||
"id": 1,
|
||
"team_id": 5,
|
||
"event": {
|
||
"id": 1,
|
||
"event_name": "サマーマラソン2024",
|
||
"start_datetime": "2024-07-01T09:00:00Z",
|
||
"end_datetime": "2024-07-01T17:00:00Z",
|
||
"deadline_datetime": "2024-06-15T23:59:59Z"
|
||
},
|
||
"category": {
|
||
"id": 3,
|
||
"category_name": "一般-5時間"
|
||
},
|
||
"date": "2024-07-01T09:00:00Z",
|
||
"zekken_number": "A-123"
|
||
}
|
||
]
|
||
```
|
||
|
||
### PUT /api/teams/{id}
|
||
- 変更点: チーム更新時に関連するエントリーの締め切りをチェック
|
||
- エラーレスポンス例:
|
||
```json
|
||
{
|
||
"error": "team_update_restricted",
|
||
"message": "締め切りを過ぎたエントリーが存在するため、チームの更新が制限されています。",
|
||
"closed_entries": [1, 2, 3]
|
||
}
|
||
```
|
||
|
||
## 4. 共通エラーレスポンス
|
||
|
||
- すべてのエンドポイントで、より詳細なエラー情報を提供
|
||
- エラーレスポンス構造:
|
||
|
||
{
|
||
"error": "error_code",
|
||
"message": "人間が読める詳細なエラーメッセージ",
|
||
"details": {
|
||
## エラーに関する追加情報(オプション)
|
||
}
|
||
}
|
||
|
||
|
||
## 5. 認証・認可
|
||
|
||
- すべてのエンドポイントで適切な認証・認可チェックを実施
|
||
- 権限不足の場合は403 Forbiddenを返す
|
||
|
||
マニュアル編集が必要な部分:
|
||
1. flutter_compass プラグインの build.gradle ファイルを直接編集します:
|
||
ファイルパス: /Volumes/PortableSSD1TB/main/flutter/.pub-cache/hosted/pub.dev/flutter_compass-0.8.0/android/build.gradle
|
||
このファイルを開き、jcenter() を mavenCentral() に置き換えます:
|
||
$ ./gradlew clean
|
||
$ ./gradlew clean build
|
||
2. image_gallery_saver の build.gradle ファイルを編集
|
||
/Volumes/PortableSSD1TB/main/flutter/.pub-cache/git/image_gallery_saver-24fd8207a4491c42ed907060bb5bf40c2430131f/android/build.gradle ファイル
|
||
ext.kotlin_version = '1.8.22' #'1.7.10'
|
||
$ ./gradlew clean
|
||
$ ./gradlew clean build
|
||
3. qr_code_scanner の問題解決:
|
||
/Volumes/PortableSSD1TB/main/flutter/.pub-cache/hosted/pub.dev/qr_code_scanner-[version]/android/build.gradle
|
||
ext.kotlin_version = '1.8.22' //'1.7.10'
|
||
4. flutter_keyboard_visibility:
|
||
vi /Volumes/PortableSSD1TB/main/flutter/.pub-cache/hosted/pub.dev/flutter_keyboard_visibility-6.0.0/android/build.gradle
|
||
minSDK = 21 ,SDKversion=34 にする。
|
||
5. device_info_plus は使用不可
|
||
6. geolocator_android:
|
||
vi /Volumes/PortableSSD1TB/main/flutter/.pub-cache/hosted/pub.dev/geolocator_android-4.6.1/android/build.gradle
|
||
minSdkVersion 21
|
||
|
||
|
||
テスト用位置情報:
|
||
大垣駅: 35.36701369466119, 136.61783662683948
|
||
大垣城: 35.36182698266251, 136.61558088722234
|
||
関ケ原駅:35.36365422752628, 136.47061844402452 |