diff --git a/tenant-platform/src/api/update.ts b/tenant-platform/src/api/update.ts index 6de4276..c645895 100644 --- a/tenant-platform/src/api/update.ts +++ b/tenant-platform/src/api/update.ts @@ -83,7 +83,6 @@ export type StoreType = 'HUAWEI' | 'MI' | 'OPPO' | 'VIVO' | 'HONOR' | 'APP_STORE export type StoreReviewState = 'PENDING' | 'SUBMITTING' | 'UNDER_REVIEW' | 'APPROVED' | 'REJECTED' export type PublishMode = 'MANUAL' | 'NOW' | 'SCHEDULED' | 'AUTO_REVIEW' export type GrayMode = 'PERCENT' | 'MEMBERS' -export type GraySelectionSource = 'LOCAL' | 'CALLBACK' export interface PublishConfig { id: string @@ -107,15 +106,15 @@ export interface OperationLog { export interface GrayMember { userId: string - name?: string - groupName?: string - extraJson?: string - updatedAt?: string + name: string + source: 'SYNC' | 'MANUAL' + active: boolean + tags: string[] } -export interface GrayMemberGroup { - groupName: string - members: GrayMember[] +export interface GrayTag { + tagName: string + memberCount: number } export interface StoreConfig { @@ -264,8 +263,8 @@ export const updateAdminApi = { enabled: boolean grayMode: GrayMode percent?: number - memberIds?: string[] - selectionSource?: GraySelectionSource + groupNames?: string[] + extraMemberIds?: string[] }) { return updateClient.post(`/api/v1/updates/app/${id}/gray`, body) }, @@ -298,8 +297,8 @@ export const updateAdminApi = { enabled: boolean grayMode: GrayMode percent?: number - memberIds?: string[] - selectionSource?: GraySelectionSource + groupNames?: string[] + extraMemberIds?: string[] }) { return updateClient.post(`/api/v1/rn/${id}/gray`, body) }, @@ -404,15 +403,47 @@ export const updateAdminApi = { }) }, - listGrayMembers(appKey: string, keyword?: string, groupName?: string) { - return updateClient.get<{ data: GrayMemberGroup[] }>('/api/v1/updates/gray/members', { - params: { appKey, ...(keyword && { keyword }), ...(groupName && { groupName }) }, - }) - }, - - syncGrayMembers(appKey: string) { - return updateClient.post<{ data: GrayMemberGroup[] }>('/api/v1/updates/gray/members/sync', null, { + listGrayMembers(appKey: string) { + return updateClient.get<{ data: GrayMember[] }>('/api/v1/updates/gray/members', { params: { appKey }, }) }, + + addGrayMembers(appKey: string, userIds: string[], name?: string) { + return updateClient.post('/api/v1/updates/gray/members', { appKey, userIds, name }) + }, + + deleteGrayMember(appKey: string, userId: string) { + return updateClient.delete(`/api/v1/updates/gray/members/${userId}`, { params: { appKey } }) + }, + + syncGrayMembers(appKey: string, members: { userId: string; name?: string }[]) { + return updateClient.post<{ data: { added: number; updated: number; removed: number } }>( + '/api/v1/updates/gray/members/sync', { appKey, members }) + }, + + importGrayMembersFromIm(appKey: string) { + return updateClient.post<{ data: { added: number; updated: number; removed: number } }>( + '/api/v1/updates/gray/members/import-im', null, { params: { appKey } }) + }, + + listGrayTags(appKey: string) { + return updateClient.get<{ data: GrayTag[] }>('/api/v1/updates/gray/tags', { params: { appKey } }) + }, + + createGrayTag(appKey: string, tagName: string, userIds: string[]) { + return updateClient.post('/api/v1/updates/gray/tags', { appKey, tagName, userIds }) + }, + + deleteGrayTag(appKey: string, tagName: string) { + return updateClient.delete(`/api/v1/updates/gray/tags/${tagName}`, { params: { appKey } }) + }, + + addMembersToTag(appKey: string, tagName: string, userIds: string[]) { + return updateClient.post(`/api/v1/updates/gray/tags/${tagName}/members`, { appKey, userIds }) + }, + + removeMembersFromTag(appKey: string, tagName: string, userIds: string[]) { + return updateClient.delete(`/api/v1/updates/gray/tags/${tagName}/members`, { data: { appKey, userIds } }) + }, } diff --git a/tenant-platform/src/views/update/VersionManagementView.vue b/tenant-platform/src/views/update/VersionManagementView.vue index 48753aa..cdd651e 100644 --- a/tenant-platform/src/views/update/VersionManagementView.vue +++ b/tenant-platform/src/views/update/VersionManagementView.vue @@ -335,26 +335,11 @@ @@ -417,7 +402,7 @@ - + @@ -429,51 +414,47 @@ -