Releases: 42Statistics/42Stat-Backend
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
v0.6.0
μ κ· κΈ°λ₯ β¨
- Record λ₯Ό λ°ννλ api μΆκ°
getHomeEval {
evalCountRecord {
at
value
}
}
getHomeTeam {
teamCloseRecord {
at
value
}
}
getHomeUser {
blackholedCountRecord {
at
value
}
}
getPersonalEval {
countRecord {
at
value
}
}
getPersonalGeneral {
logtimeRecord {
at
value
}
}
- getTeamInfo μΆκ°
getTeamInfo (id: 4847588) {
name
url
users {
id
login
imgUrl
}
moulinette {
id
finalMark
comment
createdAt
}
status
lockedAt
closedAt
projectPreview {
id
name
url
}
evalLogs {
id
header {
corrector {
id
login
imgUrl
}
beginAt
flag {
id
name
isPositive
}
}
correctorReview {
review
mark
}
correctedsReview {
review
mark
}
}
}
κΈ°μ‘΄ api λ³κ²½ μ¬ν β»οΈ
- Coalition type μ imageUrl, coverUrl, color λ₯Ό κΈ°λ³Έ fallback μ μ 곡νλ λμ , non-nullable νκ² λ³κ²½
- Coalition μ url λ€μ cdn url λ‘ λ³κ²½
- findUserPreview, findProjectPreview λ₯Ό deprecate, getSearchResult λ₯Ό ν΅ν΄ κΈ°μ‘΄ κ²μ κΈ°λ₯μ μ¬μ©ν μ μμ
# input: length(2, 100), limit: length(1, 50, default: 10)
getSearchResult (input: String!, limit: number = 10) {
userPreviews {
id
login
imgUrl
}
projectPreviews {
id
name
url
}
}
μ§μ μ€λ¨ ποΈ
μλ μ ν endpoint λ€μ λ€μ release μ μμ ν μμ μ λλ€.
- getHomeEval
- evalCountByDateTemplate
- averageEvalCountByDateTemplate
- getHomeUser
- blackholedCountByDateTemplate
- getPersonalGeneral
- logtimeByDateTemplate
λ²κ·Έ μμ π
- λνΉ μΊμλ₯Ό μ¬νμ© νμ§ λͺ»νλ κ²½μ° μλͺ»λ κ°μ΄ μΊμ±λλ λ¬Έμ #242
- google κ³μ μ°λ μ μκΈ°λ λ¬Έμ λ€ #244 #246
μΈλΆ λ³κ²½ μ¬ν π
- style: π¨ provider μ readonly μΆκ° by @jpham005 in #238
- refactor β»οΈ stat date by @jpham005 in #241
- fix: π env κ° μ‘΄μ¬νλμ§ κ²μ¬λκ³ μμ§ μλ λ¬Έμ μμ by @jpham005 in #245
- fix π duplicate account by @niamu01 in #249
- refactor β»οΈ lean and throw by @niamu01 in #256
- fix: π throwλ₯Ό μΆκ°νμ§ μμ μκΈ°λ μ»΄νμΌ μ€λ₯ μμ by @niamu01 in #257
- refactor β¨ β»οΈ π ranking cache by @jpham005 in #252
- feat β¨ user api by @jpham005 in #259
- refactor: β»οΈ κΈ°μ‘΄ κ²μ λ‘μ§μ search module λ‘ λΆλ¦¬ by @jpham005 in #260
- feat β¨ project config by @jpham005 in #262
- refactor: β»οΈ project circle μ db μμ κ°μ Έμ€λλ‘ λ³κ²½ by @jpham005 in #264
- refactor β»οΈ check query by @niamu01 in #265
- fix π user cache refresh by @jpham005 in #266
- feat: β¨ team page api by @jpham005 in #268
- Fix/cache by @jpham005 in #269
- feat: β¨ #270 μ λ°λΌ record λ°ννλ endpoint μΆκ° by @jpham005 in #271
- fix: π pageInfo type μ΄ λΆνμνκ² nullable μ΄μλ λ¬Έμ μμ by @jpham005 in #273
- chore π v0.6.0 by @jpham005 in #274
Full Changelog: v0.5.0...v0.6.0