feat(management): client补员工详情/分段接口+时间预设补今日昨日本周上周
Co-Authored-By: Claude Code <noreply@anthropic.com>
This commit is contained in:
@@ -70,3 +70,33 @@ export const getEmployees = (params: Record<string, unknown>) =>
|
||||
export const getEmployeeDrilldown = (userId: string, metricCode: DrilldownCode, start: number, end: number, channel: MgmtChannel, page = 1, pageSize = 20) =>
|
||||
getJson<DrilldownResp>(`/management/employees/${userId}/drilldown`, { metric_code: metricCode, start, end, channel, page, page_size: pageSize })
|
||||
export const getMetricDefs = () => getJson<MetricDefsResp>('/management/metric-definitions')
|
||||
|
||||
// ---- 批次D:员工详情 + 分段指标(契约已真机 8000 抽查核对,见上) ----
|
||||
export interface EmployeeAccount { channel: string; account_id: string; nick_name: string | null; user_name: string | null }
|
||||
export interface ScoreMetricDetail { value: number | null; prev: number | null; baseline: number | null; median: number | null; sample_size: number; sample_status: string; score: number | null; unit: string; name: string }
|
||||
// formula_note 在 dimensions[dim].metrics[code] 上(scoring 维度级明细),不在 metrics_detail
|
||||
export interface EmployeeDetailResp {
|
||||
user_id: string; name: string | null; is_on_job: boolean | null
|
||||
accounts: EmployeeAccount[]
|
||||
metrics: Record<string, number | string | null>
|
||||
score: {
|
||||
total_score: number | null; grade: string | null; score_status: string; trial: boolean
|
||||
dimensions: Record<string, { name: string; weight: number; score: number | null; status: string; metrics?: Record<string, { value: number | null; score: number | null; sample_size: number; sample_status: string; formula_note?: string }> }>
|
||||
metrics_detail: Record<string, ScoreMetricDetail>
|
||||
}
|
||||
anomalies: AnomalyCard[]
|
||||
prev: Record<string, number | string | null> | null
|
||||
baseline: Record<string, number | string | null> | null
|
||||
scope: MgmtScope; data_as_of: number | null; metric_version: string; config_source: 'db' | 'default'
|
||||
}
|
||||
export interface SectionResp {
|
||||
section: string; metrics: Record<string, number | null>
|
||||
trend: Record<string, number | null>[]
|
||||
comparisons: Record<string, { current: number | null; prev: number | null; baseline: number | null; median: number | null }>
|
||||
scope: MgmtScope; data_as_of: number | null; metric_version: string
|
||||
}
|
||||
export type MetricsSection = 'overview' | 'service' | 'customer' | 'workload' | 'calls'
|
||||
export const getEmployeeDetail = (userId: string, channel: MgmtChannel, start: number, end: number) =>
|
||||
getJson<EmployeeDetailResp>(`/management/employees/${userId}`, { channel, start, end })
|
||||
export const getEmployeeMetrics = (userId: string, section: MetricsSection, channel: MgmtChannel, start: number, end: number) =>
|
||||
getJson<SectionResp>(`/management/employees/${userId}/metrics`, { section, channel, start, end })
|
||||
|
||||
Reference in New Issue
Block a user