feat(工作台): 细化计划进展工时证据
关键改动: - 支持需求覆盖和调研方向开始工作记录 - 日报按计划记录开始时间和进度下次开始时间计算证据 - 更新版本编辑校验、项目展示和 workflow 说明 Co-Authored-By: Codex GPT-5 <codex@openai.com>
This commit is contained in:
@@ -1,25 +1,15 @@
|
||||
'use client';
|
||||
import { create } from 'zustand';
|
||||
import { formatLocalDate } from '@/lib/format';
|
||||
import { mergeWorkActivities, type WorkActivity, type WorkActivityDraft, type WorkActivitySourceType } from '@/lib/work-activity';
|
||||
import { mergeWorkActivities, type WorkActivity, type WorkActivityDraft } from '@/lib/work-activity';
|
||||
import { makeProgressNoteActivity, type ProgressNoteActivityInput } from '@/lib/work-activity-factory';
|
||||
import { loadServerData, saveServerData } from '@/lib/server-data';
|
||||
|
||||
interface ProgressNoteInput {
|
||||
actorId: string;
|
||||
sourceType: WorkActivitySourceType;
|
||||
sourceId: string;
|
||||
title: string;
|
||||
note: string;
|
||||
blocker?: string;
|
||||
helperId?: string;
|
||||
delayRisk?: string;
|
||||
}
|
||||
|
||||
interface WorkActivityState {
|
||||
activities: WorkActivity[];
|
||||
fetchActivities: () => Promise<void>;
|
||||
addActivity: (data: WorkActivityDraft) => WorkActivity;
|
||||
addProgressNote: (data: ProgressNoteInput) => WorkActivity;
|
||||
addProgressNote: (data: ProgressNoteActivityInput) => WorkActivity;
|
||||
deleteActivity: (id: string) => void;
|
||||
}
|
||||
|
||||
@@ -76,28 +66,7 @@ export const useWorkActivityStore = create<WorkActivityState>((set, get) => ({
|
||||
},
|
||||
|
||||
addProgressNote: (data) => {
|
||||
const details = [
|
||||
data.note.trim(),
|
||||
data.blocker?.trim() ? `阻塞:${data.blocker.trim()}` : '',
|
||||
data.helperId?.trim() ? `需协助:${data.helperId.trim()}` : '',
|
||||
data.delayRisk?.trim() ? `延期风险:${data.delayRisk.trim()}` : '',
|
||||
].filter(Boolean);
|
||||
|
||||
return get().addActivity({
|
||||
actorId: data.actorId,
|
||||
sourceType: data.sourceType,
|
||||
sourceId: data.sourceId,
|
||||
action: 'progress_note_added',
|
||||
category: data.blocker?.trim() || data.delayRisk?.trim() ? 'risk' : 'note',
|
||||
title: data.title,
|
||||
summary: `补充进展:${details.join(';')}`,
|
||||
metadata: {
|
||||
note: data.note.trim(),
|
||||
blocker: data.blocker?.trim() || undefined,
|
||||
helperId: data.helperId?.trim() || undefined,
|
||||
delayRisk: data.delayRisk?.trim() || undefined,
|
||||
},
|
||||
});
|
||||
return get().addActivity(makeProgressNoteActivity(data));
|
||||
},
|
||||
|
||||
deleteActivity: (id) => {
|
||||
|
||||
Reference in New Issue
Block a user