文件
hyb-oa/client/src/api/weeklyReports.ts
T

69 行
1.8 KiB
TypeScript

import { apiRequestData } from "./http";
export type WeeklyReport = {
id: string;
employeeId: string;
weekStart: string;
status: "draft" | "submitted";
highlightsText: string;
blockersText: string;
nextWeekText: string;
needsHelp: boolean;
submittedAt: string | null;
createdAt: string | null;
updatedAt: string | null;
};
export type WeeklyReportTeamItem = {
employee: {
id: string;
employeeNo: string;
name: string;
title: string;
department: { id: string; name: string } | null;
};
report: WeeklyReport | null;
};
export type WeeklyReportTeamSummary = {
totalEmployees: number;
submittedCount: number;
draftCount: number;
missingCount: number;
needsHelpCount: number;
};
export async function fetchMyWeeklyReport(weekStart?: string) {
const suffix = weekStart ? `?weekStart=${encodeURIComponent(weekStart)}` : "";
return apiRequestData<{ item: WeeklyReport }>(`/api/weekly-reports/me${suffix}`);
}
export async function updateMyWeeklyReport(payload: {
weekStart?: string;
highlightsText?: string;
blockersText?: string;
nextWeekText?: string;
needsHelp?: boolean;
}) {
return apiRequestData<{ item: WeeklyReport }>("/api/weekly-reports/me", {
method: "PUT",
body: JSON.stringify(payload),
});
}
export async function submitMyWeeklyReport(payload: { weekStart?: string } = {}) {
return apiRequestData<{ item: WeeklyReport }>("/api/weekly-reports/me/submit", {
method: "POST",
body: JSON.stringify(payload),
});
}
export async function fetchTeamWeeklyReports(weekStart?: string) {
const suffix = weekStart ? `?weekStart=${encodeURIComponent(weekStart)}` : "";
return apiRequestData<{
weekStart: string;
summary: WeeklyReportTeamSummary;
items: WeeklyReportTeamItem[];
}>(`/api/weekly-reports/team${suffix}`);
}