fix(workspace): 使用本地日期生成今日日报

This commit is contained in:
Script Generator
2026-06-26 15:43:31 +08:00
parent 8c3fec221b
commit d9b0236d1c
4 changed files with 23 additions and 3 deletions

View File

@@ -21,7 +21,7 @@ import { TestCaseDetailDrawer } from '@/components/test-case/TestCaseDetailDrawe
import { BugDetailDrawer } from '@/components/bug/BugDetailDrawer'; import { BugDetailDrawer } from '@/components/bug/BugDetailDrawer';
import { BugCreateModal } from '@/components/bug/BugCreateModal'; import { BugCreateModal } from '@/components/bug/BugCreateModal';
import { DEV_TASK_STATUS_LABEL, DEV_TASK_STATUS_COLOR, getEstimateHours, getActualHours } from '@/lib/dev-task'; import { DEV_TASK_STATUS_LABEL, DEV_TASK_STATUS_COLOR, getEstimateHours, getActualHours } from '@/lib/dev-task';
import { formatDateTime } from '@/lib/format'; import { formatDateTime, formatLocalDate } from '@/lib/format';
import { formatShortTime, formatWorkHours } from '@/lib/work-hours'; import { formatShortTime, formatWorkHours } from '@/lib/work-hours';
import { TEST_CASE_STATUS_LABEL, TEST_CASE_STATUS_COLOR } from '@/lib/test-case'; import { TEST_CASE_STATUS_LABEL, TEST_CASE_STATUS_COLOR } from '@/lib/test-case';
import { BUG_STATUS_LABEL, BUG_STATUS_COLOR, BUG_SEVERITY_LABEL, BUG_SEVERITY_COLOR } from '@/lib/bug'; import { BUG_STATUS_LABEL, BUG_STATUS_COLOR, BUG_SEVERITY_LABEL, BUG_SEVERITY_COLOR } from '@/lib/bug';
@@ -118,7 +118,7 @@ export default function WorkspacePage() {
return items.sort((a, b) => (a.completed !== b.completed ? (a.completed ? 1 : -1) : 0)); return items.sort((a, b) => (a.completed !== b.completed ? (a.completed ? 1 : -1) : 0));
}, [workItems, activeTab, showCompleted, selectedVersionId]); }, [workItems, activeTab, showCompleted, selectedVersionId]);
const today = useMemo(() => new Date().toISOString().slice(0, 10), []); const today = useMemo(() => formatLocalDate(), []);
const dailyReport = useMemo(() => const dailyReport = useMemo(() =>
getWorkspaceDailyReport({ getWorkspaceDailyReport({

View File

@@ -5,6 +5,7 @@ import { Plus, Trash2 } from 'lucide-react';
import { useTaskWorklogStore } from '@/stores/useTaskWorklogStore'; import { useTaskWorklogStore } from '@/stores/useTaskWorklogStore';
import { useAuthStore } from '@/stores/useAuthStore'; import { useAuthStore } from '@/stores/useAuthStore';
import { getTaskWorklogs } from '@/lib/task-worklog'; import { getTaskWorklogs } from '@/lib/task-worklog';
import { formatLocalDate } from '@/lib/format';
interface Props { interface Props {
taskId: string; taskId: string;
@@ -17,7 +18,7 @@ export function WorklogPanel({ taskId }: Props) {
const taskLogs = getTaskWorklogs(worklogs, taskId); const taskLogs = getTaskWorklogs(worklogs, taskId);
const totalHours = taskLogs.reduce((sum, w) => sum + w.hours, 0); const totalHours = taskLogs.reduce((sum, w) => sum + w.hours, 0);
const today = new Date().toISOString().slice(0, 10); const today = formatLocalDate();
const [date, setDate] = useState(today); const [date, setDate] = useState(today);
const [hours, setHours] = useState<number>(1); const [hours, setHours] = useState<number>(1);
const [workContent, setWorkContent] = useState(''); const [workContent, setWorkContent] = useState('');

View File

@@ -0,0 +1,12 @@
import test from 'node:test';
import assert from 'node:assert/strict';
import { formatLocalDate } from './format';
test('formatLocalDate formats a local calendar date as YYYY-MM-DD', () => {
assert.equal(formatLocalDate(new Date(2026, 5, 26, 23, 59)), '2026-06-26');
});
test('formatLocalDate pads month and day', () => {
assert.equal(formatLocalDate(new Date(2026, 0, 2, 8, 5)), '2026-01-02');
});

View File

@@ -34,6 +34,13 @@ export function formatDate(iso?: string | null): string {
/** /**
* 格式化为 MM-DD HH:mm紧凑版本地时区 * 格式化为 MM-DD HH:mm紧凑版本地时区
*/ */
export function formatLocalDate(date: Date = new Date()): string {
const yyyy = date.getFullYear();
const mm = String(date.getMonth() + 1).padStart(2, '0');
const dd = String(date.getDate()).padStart(2, '0');
return `${yyyy}-${mm}-${dd}`;
}
export function formatDateTimeShort(iso?: string | null): string { export function formatDateTimeShort(iso?: string | null): string {
if (!iso) return '-'; if (!iso) return '-';
const d = new Date(iso); const d = new Date(iso);