Team
팀 API
전체 팀매칭 목록과 각 팀의 상세 정보를 조회합니다. 응답에는 자신이 속한 팀과 다른 팀들이 모두 포함되며, 각 팀에 대한 참여 상태가 함께 제공됩니다.
List
const team = await client.team.list()
Search
특정 키워드로 팀을 검색하려면 search 옵션을 전달합니다. 검색은 SWMaestro 서버에서 수행되며, 다음 5개의 필드 중 하나를 선택할 수 있습니다.
all(기본값) — 모든 필드team— 팀명member— 연수생명mentor— 멘토명project— 프로젝트명
CLI에서는 mentoring list와 동일한 prefix 문법을 사용합니다.
opensoma team list --search "오픈소마" # 전체 필드 검색
opensoma team list --search "team:오픈소마" # 팀명만 검색
opensoma team list --search "mentor:전수열" # 멘토명 검색
opensoma team list --search "mentor:@me" # 내가 멘토로 속한 팀만
opensoma team list --search "member:@me" # 내가 연수생으로 속한 팀만
opensoma team list --search "project:Previzion" # 프로젝트명 검색
SDK에서는 parseTeamSearchQuery 헬퍼로 쿼리 문자열을 파싱하거나 TeamSearchQuery 객체를 직접 만들 수 있습니다.
import { parseTeamSearchQuery } from 'opensoma/shared/utils/team-params'
const team = await client.team.list({
search: parseTeamSearchQuery('mentor:@me'),
})
@me를 사용하면 현재 로그인한 사용자의 이름이 자동으로 검색어로 치환됩니다.
Response
currentTeams는 현재 참여 중인 팀 수, maxTeams는 최대 참여 가능 팀 수입니다. 각 팀의 joinStatus는 다음 중 하나입니다.
참여— 참여 가능한 팀완료— 팀 구성이 완료되어 더 이상 참여할 수 없는 팀탈퇴— 현재 사용자가 속한 팀 (탈퇴 가능)
interface TeamMember {
name: string
userId: string
}
interface TeamInfo {
teams: Array<{
name: string
projectName: string
ownerId: string
teamId: string
leader: string
members: TeamMember[]
mentors: TeamMember[]
ictCategoryMajor: string
ictCategoryMinor: string
teamCompleted: boolean
mentorCompleted: boolean
joinStatus: string
}>
currentTeams: number
maxTeams: number
}
Example
const team = await client.team.list()
const myTeams = team.teams.filter((t) => t.joinStatus === '탈퇴')
console.log(`참여 중인 팀: ${myTeams.map((t) => t.name).join(', ')}`)
for (const t of team.teams) {
const members = t.members.map((m) => m.name).join(', ')
console.log(`${t.name} (팀장 ${t.leader}, 팀원 ${members}) - ${t.joinStatus}`)
}