Releases: 42Statistics/42Stat-Backend
v0.10.5
μ κ· κΈ°λ₯ β¨
κΈ°μ‘΄ κΈ°λ₯ λ³κ²½ μ¬ν β»οΈ
-
wallet, correction point ranking μμ transfer μ§νν μ μ λ μ μΈ
-
github action μμ AWS OIDC idp λ₯Ό μ¬μ©νλλ‘ λ³κ²½
-
local νκ²½μμ aws μ κ·Όνμ§ μλλ‘ μμ , aws νκ²½μμ instance metadata μ μ¬μ©μ λͺ μμ μΌλ‘ λ³κ²½
λ²κ·Έ μμ π
μ§μ μ€λ¨ ποΈ
μμ π₯
μΈλΆ λ³κ²½ μ¬ν π
Full Changelog: v0.10.4...v0.10.5
v0.10.4
μ κ· κΈ°λ₯ β¨
κΈ°μ‘΄ api λ³κ²½ μ¬ν β»οΈ
λ²κ·Έ μμ π
- νλ μ€μΈ μ μ μλ₯Ό κ³μ°ν λ μ μ μκ° 0λͺ μΈ κ²½μ° μ΄μ λ¬μ νλ μ μ μλ₯Ό μ¬μ©νλ λ¬Έμ μμ
μ§μ μ€λ¨ ποΈ
μμ π₯
μΈλΆ λ³κ²½ μ¬ν π
- fix: π activeUserCount λ ν΄λΉ μμ λ°μ΄ν°κ° μλ κ²½μ° 0λͺ μΌλ‘ μ²λ¦¬νλλ‘ μμ by @jpham005 in #421
Full Changelog: v0.10.3...v0.10.4
v0.10.3
μ κ· κΈ°λ₯ β¨
- monthlyActiveUserCount μΆκ°
κΈ°μ‘΄ api λ³κ²½ μ¬ν β»οΈ
λ²κ·Έ μμ π
- daily logtime λ°μ΄ν° μ€λ₯ λμ λ‘μ§ λλ½λ λΆλΆ μΆκ°
μ§μ μ€λ¨ ποΈ
μμ π₯
μΈλΆ λ³κ²½ μ¬ν π
Full Changelog: v0.10.2...v0.10.3
v0.10.2
μ κ· κΈ°λ₯ β¨
κΈ°μ‘΄ api λ³κ²½ μ¬ν β»οΈ
λ²κ·Έ μμ π
- daily logtime λ°μ΄ν° μ€λ₯ λμ λ‘μ§ μΆκ°
- daily activity μ netwhat μμΈ μ²λ¦¬ μΆκ°
- team info μμ last event time μ΄ μ¬λ°λ₯΄μ§ μλ λ¬Έμ μμ
μ§μ μ€λ¨ ποΈ
μμ π₯
μΈλΆ λ³κ²½ μ¬ν π
- fix: π dailyLogtime κ³μ° λ‘μ§ μμ by @niamu01 in #410
- fix: π netwhat μ΄λ¦μ μ°Ύλλ‘ conditionalProjectName μΆκ° by @niamu01 in #411
Full Changelog: v0.10.1...v0.10.2
v0.10.1
μ κ· κΈ°λ₯ β¨
κΈ°μ‘΄ api λ³κ²½ μ¬ν β»οΈ
- getHomeUser μ aliveUserCountRecords λ₯Ό μμ, λ μ§μ λΆν° κ°μ Έμ¬ μ μλλ‘ λ³κ²½
- getHomeUser μ aliveUserCountRecords λ₯Ό daily -> monthly λ‘ λ³κ²½
λ²κ·Έ μμ π
μ§μ μ€λ¨ ποΈ
μμ π₯
μΈλΆ λ³κ²½ μ¬ν π
- refactor: β»οΈ κΈ°μ‘΄ dailyAliveUserCountRecords λ₯Ό monthly from start, end, byDate λ‘ λ³κ²½ by @jpham005 in #403
- v0.10.1 by @jpham005 in #404
Full Changelog: v0.10.0...v0.10.1
v0.10.0
μ κ· κΈ°λ₯ β¨
- getPersonalGeneral μ dailyActivities μΆκ°
enum DailyActivityType {
CORRECTOR
CORRECTED
EVENT
LOGTIME
}
type DailyLogtimeRecord {
type: DailyActivityType.LOGTIME!
value: Int! # ν΄λΉ μΌ μμ΄λ§₯μ μ μν μκ° ms
}
type DailyDefaultRecord {
type: DailyActivityType!
id: Int!
at: Date! # record κ° λ°μν μ νν μκ°
}
type DailyActivity {
date: Date! # records λ€μ λ°μ μΌ 00μ 00λΆ
records: [(DailyLogtimeRecord! | DailyDefaultRecord!)]!
}
- last λ―Έμ§μ endpoint λ€μ last μΆκ°, κΈ°μ‘΄μ μ§μνλ endpoint λ€μ λ²μ μ¦κ° λ° λ¨μ μΈλΆν
κΈ°μ‘΄ api λ³κ²½ μ¬ν β»οΈ
λ²κ·Έ μμ π
μ§μ μ€λ¨ ποΈ
μμ π₯
μΈλΆ λ³κ²½ μ¬ν π
v0.9.0
μ κ· κΈ°λ₯ β¨
- LeaderboardMetadata μ coalitionList λ₯Ό μΆκ°νμ΅λλ€.
type LeaderboardMetadata {
# ...
coalitionList: [Coalition!]!
}
- λͺ¨λ Leaderboard resolver μμ coalitionId λ₯Ό μΈμλ‘ λ°μμ μ²λ¦¬ν μ μλλ‘ νμ΅λλ€.
query LeaderboardQuery {
getLeaderboardXXX (coalitionId: Int) {
# ...
}
}
- GetEvalLogArgs μ imperfectOnly λ₯Ό μΆκ°νμ΅λλ€.
type GetEvalLogArgs {
# ...
imperfectOnly: Boolean
}
- MyInfo μ level, beginAt μ μΆκ°νμ΅λλ€.
type MyInfo {
# ...
level: Float
beginAt: DateTime
}
κΈ°μ‘΄ api λ³κ²½ μ¬ν β»οΈ
- /lambda μμ μλ΅μ λ¨Όμ 보λ΄κ³ caching μ μ§ννλλ‘ λ³κ²½νμ΅λλ€.
- MyInfo μμ κΈ°μ‘΄μ μ¬μ©μμ μ΅κ·Ό νλ μ 보μ λν field λ€μ myRecentActivity λ‘ λ¬Άμμ΅λλ€.
type MyRecentActivity {
isNewMember: Boolean!
lastValidatedTeam: UserTeam
blackholedAt: DateTime
experienceRank: Int
scoreRank: Int
evalCountRank: Int
}
type MyInfo {
myRecentActivity: MyRecentActivity
}
- Coalition type μ μ¬μ©νμ§ μλ field μ μ§μμ μ€λ¨νκ³ , λ€λ₯Έ type κ³Ό μΌκ΄μ± μκ² μ¬μ©ν μ μλλ‘ field μ΄λ¦μ μμ νμ΅λλ€.
type Coalition {
id: Int!
name: String!
imgUrl: String!
coverUrl: String!
color: String!
# λλ¨Έμ§λ μ§μ μ€λ¨
}
λ²κ·Έ μμ π
- getSpotlight μμ limit μΈμκ° μ μμ μΌλ‘ μ μ©λμ§ μλ λ¬Έμ λ₯Ό μμ νμ΅λλ€. #364
- getPersonalGeneral μ scoreInfo μμ 곡λ μμκ° λ°μλμ§ μλ λ¬Έμ λ₯Ό μμ νμ΅λλ€. #381
μ§μ μ€λ¨ ποΈ
- MyInfo μμ myRecentActivity μ ν¬ν¨λμ΄ μλ field λ€μ λ€μ minor release μμ μμ λ μμ μ λλ€.
type MyInfo {
# Deprecated: deprecated at v0.9.0, myRecentActivity λ₯Ό μ¬μ©νμΈμ
isNewMember: Boolean!
# Deprecated: deprecated at v0.9.0, myRecentActivity λ₯Ό μ¬μ©νμΈμ
lastValidatedTeam: UserTeam
# Deprecated: deprecated at v0.9.0, myRecentActivity λ₯Ό μ¬μ©νμΈμ
blackholedAt: DateTime
# Deprecated: deprecated at v0.9.0, myRecentActivity λ₯Ό μ¬μ©νμΈμ
experienceRank: Int
# Deprecated: deprecated at v0.9.0, myRecentActivity λ₯Ό μ¬μ©νμΈμ
scoreRank: Int
# Deprecated: deprecated at v0.9.0, myRecentActivity λ₯Ό μ¬μ©νμΈμ
evalCountRank: Int
}
- Coalition μμ μ¬μ©νμ§ μλ field λ€μ λ€μ minor release μμ μμ λ μμ μ λλ€.
type Coalition {
# deprecated at v0.9.0
slug: String!
# deprecated at v0.9.0, imgUrl μ μ¬μ©νμΈμ.
imageUrl: String!
# deprecated at v0.9.0
score: Int!
# deprecated at v0.9.0
userId: Int!
}
μμ π₯
μΈλΆ λ³κ²½ μ¬ν π
- fix π dockerfile by @jpham005 in #369
- refactor β»οΈ ft client secret by aws secrets manager by @jpham005 in #371
- fix π handle google login fail by @jpham005 in #373
- fix π search limit error by @jpham005 in #374
- refactor: β»οΈ lambda update response λ₯Ό μ¦μ 보λ΄λλ‘ λ³κ²½ by @jpham005 in #375
- feat: β¨ getMyInfo μ beginAt, level, recentActivity μΆκ° by @jpham005 in #376
- feat β¨ coalition ranking by @jpham005 in #382
- fix: π personal general μ score info μμ 곡λ μμμ λν μ²λ¦¬κ° μλ λ¬Έμ by @jpham005 in #383
- feat: β¨ getEvalLogArgs μ imperfectOnly μΆκ° by @jpham005 in #380
- release π v0.9.0 by @jpham005 in #385
- chore π v0.9.0 by @jpham005 in #386
Full Changelog: v0.8.1...v0.9.0
v0.8.1
μ κ· κΈ°λ₯ β¨
κΈ°μ‘΄ api λ³κ²½ μ¬ν β»οΈ
λ²κ·Έ μμ π
- getPersonalGeneral μ scoreInfo μμ rankInCoalition μ΄ λ¬΄μ‘°κ±΄ 1 λ‘ λ°νλλ λ¬Έμ
μ§μ μ€λ¨ ποΈ
μμ π₯
μΈλΆ λ³κ²½ μ¬ν π
Full Changelog: v0.8.0...v0.8.1
v0.8.0
μ κ· κΈ°λ₯ β¨
- Project μ pdfUrl μΆκ°
type Project {
pdfUrl: String
# ...
}
- ProjectPreview μ difficulty μΆκ°
type ProjectPreview {
difficulty: Int
# ...
}
- getHomeCoalition μ winCountPerCoalition μΆκ°
query {
getHomeCoalition {
winCountPerCoalition: IntPerCoalitionDateRanged!
}
}
- λͺ¨λ LeaderboardElement λ₯Ό λ°ννλ Query μ promoList μΆκ°
type Promo {
promo: Int!
beginAt: DateTime!
userCount: Int!
}
query {
getLeaderboardSomething {
promoList: [Promo!]!
}
- λͺ¨λ LeaderboardElement λ₯Ό λ°ννλ Query μ promo μΈμ μΆκ°
type GetLeaderboardElementArgs {
promo: Int
# ...
}
query {
getLeaderboardSomething {
byDateTemplate (promo: 1) {
# ...
}
}
}
- getLeaderboardComment μΆκ°
query {
getLeaderboardComment {
promoList: [Promo!]!
byDateTemplate: LeaderboardElementDateRanged!
}
}
κΈ°μ‘΄ api λ³κ²½ μ¬ν β»οΈ
- getHomeTeam μ teamCloseRecords μ λ°ν κ°μμ exam μ μ μΈ
λ²κ·Έ μμ π
- 42 μμΈ νμμ΄ μλλ©΄ λ‘κ·ΈμΈμ ν μ μλ λ¬Έμ μμ
- Internship λ± νκ°μλ₯Ό νΉμ ν μ μλ κ²½μ° μκΈ°λ λ¬Έμ μμ
- getPersonalEval μ destinyUserRanking μμ νκ°μμ νμ μ¬μ΄μ μ μ μ§κ³κ° μ λλ‘ μ΄λ£¨μ΄μ§μ§ μλ λ¬Έμ μμ
- getHomeCoalition μ scoreRecordsPerCoalition μμ νλν μ½μ리μ μ μκ° μλ κ²½μ° ν΄λΉ μμ λν κΈ°λ‘μ΄ λ°νλμ§ μλ λ¬Έμ μμ
μ§μ μ€λ¨ ποΈ
μμ π₯
μΈλΆ λ³κ²½ μ¬ν π
- fix π dayone by @jpham005 in #301
- build: ποΈ prod λͺ¨λ λΆλ¦¬ by @niamu01 in #303
- build: β»οΈ github action μμ by @niamu01 in #304
- Hotfix π config by @jpham005 in #345
Full Changelog: v0.7.0...v0.8.0
v0.7.0
μ κ· κΈ°λ₯ β¨
- teamInfo μ createdAt, lastEventTime, μΆκ° user μ 보 μ 곡
getTeamInfo (id: 1234) {
...
lastEventTime
createdAt
users {
id
login
imgUrl
isLeader
occurrence
}
}
κΈ°μ‘΄ api λ³κ²½ μ¬ν β»οΈ
- getHomeCoalitionScore μ coalitionScoreRecord κ° νμ¬ μ§ν μ€μΈ λ¬μ score λ₯Ό κ°μ΄ λ°ννλλ‘ λ²μ μ‘°μ
- getHomeTeam μ recentExamResult μΈμ μ΄λ¦μ after => skip μΌλ‘ λ³κ²½
getHomeTeam {
recentExamResult (skip: Int! = 0) {
...
}
}
- getPersonalGeneral μ teamInfo μμ, μ΅κ·Ό λ±λ‘ / ν΅κ³Ό ν νμ λν μ 보 μ 체λ₯Ό μ 곡νλλ‘ λ³κ²½
getPersonalGeneral {
lastRegistered: UserTeam
lastPassed: UserTeam
teams: [UserTeam!]!
}
λ²κ·Έ μμ π
- record λ°ννλ endpoint μμ λΉ κ° (0) μ΄ λ°νλμ§ μλ λ¬Έμ μμ #275
- getHomeUser μ aliveUserCount κ° 12 κ°κ° μλ 13κ°μ κ°μ λ°ννλ λ¬Έμ μμ #288
- project circle field κ° nullable νμ§ μμλ λ¬Έμ μμ #277
- coalition κ΄λ ¨ μ΄λ―Έμ§μ cdn url μ΄ μλͺ» λμ΄μλ λ¬Έμ μμ #287
- getEvalLog μμ project λ₯Ό regex κ²μνμ§ μλ λ¬Έμ μμ #291
μ§μ μ€λ¨ ποΈ
첫 μΆμλ₯Ό μν΄ ν΄λΉ release μμ deprecate λ κ² λ€λ λ°λ‘ μμ νμμ΅λλ€.
μμ π₯
- findUserPreview
- findProjectPreview
- getHomeEval
- evalCountByDateTemplate
- averageEvalCountByDateTemplate
- getHomeUser
- blackholedCountByDateTemplate
- getPersonalGeneral
- logtimeByDateTemplate
- getSearchResult
μΈλΆ λ³κ²½ μ¬ν π
- fix π record zero value by @jpham005 in #276
- feat: β¨ team info μ user μΆκ° μ 보, finalMark μΆκ° by @jpham005 in #279
- feat: β¨ team info μμ last event time μ μΆκ° by @jpham005 in #283
- fix: π project info μμ circle μ gql schema κ° nullable νμ§ μλ λ¬Έμ μμ by @jpham005 in #284
- refactor: β»οΈ coalition score record κ° μ΄λ² λ¬ μ μλ₯Ό ν¬ν¨ν΄μ λ°ννλλ‘ λ³κ²½ by @jpham005 in #285
- fix: π coalition cdn url μ μ€νκ° μλ λ¬Έμ μμ by @jpham005 in #287
- refactor: β»οΈ search module => page/spotlight, lib/regexFind λ‘ λΆλ¦¬, user κ²μ μ μλ¬Έμ μλλ³ν μΆκ° by @jpham005 in #292
- style: π¨ recentExamResult μ μΈμ μ΄λ¦μ after => skip μΌλ‘ λ³κ²½ by @jpham005 in #294
- chore π v0.7.0 by @jpham005 in #297
Full Changelog: v0.6.0...v0.7.0