- 출석 체크 시 데일리 포인트와 주간/월간 보너스를 지급하며, 멱등성 및 클럭 오차 처리를 포함한 로직을 구현했습니다. - 포인트 이력 관리를 위한 `pointLedger` 컬렉션과 잔액 추적 리포지토리를 추가했습니다. - 사용자별 알림 슬롯에 맞춰 FCM 출석 독려 푸시를 발송하는 스케줄러와 설정 API를 도입했습니다. - RTDB의 희소 배열 응답을 7일 기준 배열로 정규화하여 통계 데이터의 일관성을 강화했습니다. - 출석 시스템 전반에 대한 단위 및 통합 테스트를 추가하여 안정성을 확보했습니다.
78 lines
2.0 KiB
JSON
78 lines
2.0 KiB
JSON
{
|
|
// Example (Standard Edition):
|
|
//
|
|
// "indexes": [
|
|
// {
|
|
// "collectionGroup": "widgets",
|
|
// "queryScope": "COLLECTION",
|
|
// "fields": [
|
|
// { "fieldPath": "foo", "arrayConfig": "CONTAINS" },
|
|
// { "fieldPath": "bar", "mode": "DESCENDING" }
|
|
// ]
|
|
// },
|
|
//
|
|
// "fieldOverrides": [
|
|
// {
|
|
// "collectionGroup": "widgets",
|
|
// "fieldPath": "baz",
|
|
// "indexes": [
|
|
// { "order": "ASCENDING", "queryScope": "COLLECTION" }
|
|
// ]
|
|
// },
|
|
// ]
|
|
// ]
|
|
//
|
|
// Example (Enterprise Edition):
|
|
//
|
|
// "indexes": [
|
|
// {
|
|
// "collectionGroup": "reviews",
|
|
// "queryScope": "COLLECTION_GROUP",
|
|
// "apiScope": "MONGODB_COMPATIBLE_API",
|
|
// "density": "DENSE",
|
|
// "multikey": false,
|
|
// "fields": [
|
|
// { "fieldPath": "baz", "mode": "ASCENDING" }
|
|
// ]
|
|
// },
|
|
// {
|
|
// "collectionGroup": "items",
|
|
// "queryScope": "COLLECTION_GROUP",
|
|
// "apiScope": "MONGODB_COMPATIBLE_API",
|
|
// "density": "SPARSE_ANY",
|
|
// "multikey": true,
|
|
// "fields": [
|
|
// { "fieldPath": "baz", "mode": "ASCENDING" }
|
|
// ]
|
|
// },
|
|
// ]
|
|
"indexes": [
|
|
{
|
|
"collectionGroup": "users",
|
|
"queryScope": "COLLECTION",
|
|
"fields": [
|
|
{ "fieldPath": "favoriteTeamCode", "order": "ASCENDING" },
|
|
{ "fieldPath": "tierPoints", "order": "DESCENDING" }
|
|
]
|
|
},
|
|
{
|
|
"collectionGroup": "users",
|
|
"queryScope": "COLLECTION",
|
|
"fields": [
|
|
{ "fieldPath": "favoriteTeamCode", "order": "ASCENDING" },
|
|
{ "fieldPath": "tierPoints", "order": "ASCENDING" },
|
|
{ "fieldPath": "__name__", "order": "ASCENDING" }
|
|
]
|
|
},
|
|
{
|
|
"collectionGroup": "pointLedger",
|
|
"queryScope": "COLLECTION",
|
|
"fields": [
|
|
{ "fieldPath": "createdAt", "order": "DESCENDING" },
|
|
{ "fieldPath": "seq", "order": "DESCENDING" },
|
|
{ "fieldPath": "__name__", "order": "DESCENDING" }
|
|
]
|
|
}
|
|
],
|
|
"fieldOverrides": []
|
|
} |