@qnote/q-ai-note 1.0.13 → 1.0.15

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,5 +1,6 @@
1
1
  import { Router } from 'express';
2
2
  import { v4 as uuidv4 } from 'uuid';
3
+ import * as XLSX from 'xlsx';
3
4
  import { db } from '../db.js';
4
5
  import { canCreateSandbox, canReadSandbox, canWriteSandbox } from '../accessControl.js';
5
6
  import { forbid, getAccessContextFromResponse, ensurePageAccess } from './accessHelpers.js';
@@ -20,6 +21,254 @@ function isHttpUrl(value) {
20
21
  function toBool(value) {
21
22
  return value === true || value === 1 || value === '1';
22
23
  }
24
+ function safeParseObject(value) {
25
+ if (value && typeof value === 'object')
26
+ return value;
27
+ if (typeof value === 'string' && value.trim()) {
28
+ try {
29
+ const parsed = JSON.parse(value);
30
+ if (parsed && typeof parsed === 'object')
31
+ return parsed;
32
+ }
33
+ catch {
34
+ // Ignore invalid JSON content and fallback to empty object.
35
+ }
36
+ }
37
+ return {};
38
+ }
39
+ function toMarkdownPlainText(value) {
40
+ return String(value || '').replace(/\r\n/g, '\n').trim();
41
+ }
42
+ function parseMarkdownExportWorkItem(row) {
43
+ return {
44
+ id: String(row.id || ''),
45
+ parent_id: row.parent_id === null ? null : String(row.parent_id || ''),
46
+ name: String(row.name || '').trim(),
47
+ description: String(row.description || '').trim(),
48
+ assignee: String(row.assignee || '').trim(),
49
+ status: String(row.status || 'pending').trim() || 'pending',
50
+ priority: String(row.priority || 'medium').trim() || 'medium',
51
+ extra_data: safeParseObject(row.extra_data),
52
+ };
53
+ }
54
+ function sanitizeFileName(rawName) {
55
+ const normalized = String(rawName || '').trim() || 'sandbox';
56
+ return normalized
57
+ .replace(/[\\/:*?"<>|]/g, '-')
58
+ .replace(/\s+/g, '-')
59
+ .replace(/-+/g, '-')
60
+ .replace(/^-|-$/g, '')
61
+ .slice(0, 64) || 'sandbox';
62
+ }
63
+ function toAsciiFilename(rawFileName, fallbackExt = '.txt') {
64
+ const normalized = String(rawFileName || `sandbox${fallbackExt}`)
65
+ .replace(/[^\x20-\x7E]/g, '-')
66
+ .replace(/["\\]/g, '')
67
+ .replace(/\s+/g, '-')
68
+ .replace(/-+/g, '-')
69
+ .replace(/^-|-$/g, '');
70
+ const withExt = normalized.endsWith(fallbackExt) ? normalized : `${normalized}${fallbackExt}`;
71
+ return withExt === fallbackExt ? `sandbox${fallbackExt}` : withExt;
72
+ }
73
+ function buildSandboxMarkdownExport(sandboxId) {
74
+ const sandbox = db.prepare('SELECT * FROM sandboxes WHERE id = ?').get(sandboxId);
75
+ if (!sandbox)
76
+ return null;
77
+ const workItems = db.prepare('SELECT * FROM work_items WHERE sandbox_id = ? ORDER BY created_at ASC').all(sandboxId);
78
+ const parsedItems = workItems.map(parseMarkdownExportWorkItem);
79
+ const nodeEntities = listNodeEntities({ sandbox_id: sandboxId })
80
+ .sort((a, b) => String(a.created_at || '').localeCompare(String(b.created_at || '')));
81
+ const diaries = db.prepare('SELECT * FROM diaries WHERE 1=1 AND sandbox_id = ? ORDER BY created_at ASC').all(sandboxId);
82
+ const childrenByParent = new Map();
83
+ const entitiesByWorkItem = new Map();
84
+ const diariesByWorkItem = new Map();
85
+ const rootKey = '__root__';
86
+ parsedItems.forEach((item) => {
87
+ const key = item.parent_id || rootKey;
88
+ if (!childrenByParent.has(key))
89
+ childrenByParent.set(key, []);
90
+ childrenByParent.get(key)?.push(item);
91
+ });
92
+ nodeEntities.forEach((entity) => {
93
+ const key = String(entity.work_item_id || '');
94
+ if (!key)
95
+ return;
96
+ if (!entitiesByWorkItem.has(key))
97
+ entitiesByWorkItem.set(key, []);
98
+ entitiesByWorkItem.get(key)?.push(entity);
99
+ });
100
+ diaries.forEach((row) => {
101
+ const key = String(row.work_item_id || '').trim();
102
+ if (!key)
103
+ return;
104
+ if (!diariesByWorkItem.has(key))
105
+ diariesByWorkItem.set(key, []);
106
+ diariesByWorkItem.get(key)?.push(row);
107
+ });
108
+ const lines = [];
109
+ if (sandbox.description) {
110
+ lines.push(toMarkdownPlainText(sandbox.description));
111
+ lines.push('');
112
+ }
113
+ const appendItem = (item, depth) => {
114
+ const headingLevel = depth;
115
+ const isDirectoryLevel = depth <= 3;
116
+ const indent = ' '.repeat(Math.max(0, depth - 4));
117
+ const todo = safeParseObject(item.extra_data.todo);
118
+ const todoStart = String(todo.planned_start_date || item.extra_data.planned_start_date || '').trim();
119
+ const todoDue = String(todo.due_date || item.extra_data.due_date || '').trim();
120
+ const metaParts = [
121
+ `状态: ${item.status || '-'}`,
122
+ `优先级: ${item.priority || '-'}`,
123
+ `负责人: ${item.assignee || '-'}`,
124
+ ];
125
+ if (todoStart || todoDue) {
126
+ metaParts.push(`计划启动: ${todoStart || '-'}`);
127
+ metaParts.push(`截止: ${todoDue || '-'}`);
128
+ }
129
+ if (isDirectoryLevel) {
130
+ lines.push(`${'#'.repeat(Math.min(6, headingLevel))} ${item.name || '未命名工作项'}`);
131
+ lines.push('');
132
+ lines.push(`- ${metaParts.join(' | ')}`);
133
+ if (item.description) {
134
+ lines.push(`- 描述: ${toMarkdownPlainText(item.description)}`);
135
+ }
136
+ }
137
+ else {
138
+ lines.push(`${indent}- **${item.name || '未命名工作项'}**(L${depth})`);
139
+ lines.push(`${indent} - ${metaParts.join(' | ')}`);
140
+ if (item.description) {
141
+ lines.push(`${indent} - 描述: ${toMarkdownPlainText(item.description)}`);
142
+ }
143
+ }
144
+ const entities = entitiesByWorkItem.get(item.id) || [];
145
+ if (entities.length) {
146
+ if (isDirectoryLevel) {
147
+ lines.push('- 关联记录:');
148
+ }
149
+ else {
150
+ lines.push(`${indent} - 关联记录:`);
151
+ }
152
+ entities.forEach((entity) => {
153
+ const entityType = String(entity.entity_type || '').trim() || 'record';
154
+ const title = String(entity.title || '').trim() || '未命名记录';
155
+ const status = String(entity.status || '').trim();
156
+ const assignee = String(entity.assignee || '').trim();
157
+ const dueDate = String(entity.due_date || '').trim();
158
+ const details = [status ? `状态 ${status}` : '', assignee ? `负责人 ${assignee}` : '', dueDate ? `截止 ${dueDate}` : '']
159
+ .filter(Boolean)
160
+ .join(' | ');
161
+ const prefix = isDirectoryLevel ? ' ' : `${indent} `;
162
+ lines.push(`${prefix}- [${entityType}] ${title}${details ? `(${details})` : ''}`);
163
+ const contentMd = toMarkdownPlainText(entity.content_md);
164
+ if (contentMd) {
165
+ lines.push(`${prefix} - 内容: ${contentMd}`);
166
+ }
167
+ });
168
+ }
169
+ const itemDiaries = diariesByWorkItem.get(item.id) || [];
170
+ if (itemDiaries.length) {
171
+ if (isDirectoryLevel) {
172
+ lines.push('- 关联日记:');
173
+ }
174
+ else {
175
+ lines.push(`${indent} - 关联日记:`);
176
+ }
177
+ itemDiaries.forEach((row) => {
178
+ const createdAt = String(row.created_at || '').trim();
179
+ const diaryContent = toMarkdownPlainText(row.content);
180
+ const firstLine = diaryContent.split('\n')[0] || '';
181
+ const prefix = isDirectoryLevel ? ' ' : `${indent} `;
182
+ lines.push(`${prefix}- ${createdAt || '-'} ${firstLine}`.trim());
183
+ });
184
+ }
185
+ lines.push('');
186
+ const children = childrenByParent.get(item.id) || [];
187
+ children.forEach((child) => appendItem(child, depth + 1));
188
+ };
189
+ const roots = childrenByParent.get(rootKey) || [];
190
+ roots.forEach((item) => appendItem(item, 1));
191
+ if (!roots.length) {
192
+ lines.push('_当前沙盘暂无工作项_');
193
+ }
194
+ return {
195
+ filename: `${sanitizeFileName(sandbox.name)}.md`,
196
+ content: `${lines.join('\n').trim()}\n`,
197
+ };
198
+ }
199
+ function buildSandboxExcelExport(sandboxId) {
200
+ const sandbox = db.prepare('SELECT * FROM sandboxes WHERE id = ?').get(sandboxId);
201
+ if (!sandbox)
202
+ return null;
203
+ const workItems = db.prepare('SELECT * FROM work_items WHERE sandbox_id = ? ORDER BY created_at ASC').all(sandboxId);
204
+ const parsedItems = workItems.map(parseMarkdownExportWorkItem);
205
+ const nodeEntities = listNodeEntities({ sandbox_id: sandboxId })
206
+ .sort((a, b) => String(a.created_at || '').localeCompare(String(b.created_at || '')));
207
+ const diaries = db.prepare('SELECT * FROM diaries WHERE 1=1 AND sandbox_id = ? ORDER BY created_at ASC').all(sandboxId);
208
+ const childrenByParent = new Map();
209
+ const entitiesByWorkItem = new Map();
210
+ const diariesByWorkItem = new Map();
211
+ const rootKey = '__root__';
212
+ parsedItems.forEach((item) => {
213
+ const key = item.parent_id || rootKey;
214
+ if (!childrenByParent.has(key))
215
+ childrenByParent.set(key, []);
216
+ childrenByParent.get(key)?.push(item);
217
+ });
218
+ nodeEntities.forEach((entity) => {
219
+ const key = String(entity.work_item_id || '');
220
+ if (!key)
221
+ return;
222
+ if (!entitiesByWorkItem.has(key))
223
+ entitiesByWorkItem.set(key, []);
224
+ entitiesByWorkItem.get(key)?.push(entity);
225
+ });
226
+ diaries.forEach((row) => {
227
+ const key = String(row.work_item_id || '').trim();
228
+ if (!key)
229
+ return;
230
+ if (!diariesByWorkItem.has(key))
231
+ diariesByWorkItem.set(key, []);
232
+ diariesByWorkItem.get(key)?.push(row);
233
+ });
234
+ const rows = [];
235
+ rows.push(['层级', '类型', '标题', '状态', '优先级', '负责人', '计划启动', '截止日期', '内容']);
236
+ const appendRow = (level, type, title, status = '', priority = '', assignee = '', plannedStart = '', dueDate = '', content = '') => {
237
+ const indentedTitle = `${' '.repeat(Math.max(0, level - 1))}${title}`;
238
+ rows.push([level, type, indentedTitle, status, priority, assignee, plannedStart, dueDate, content]);
239
+ };
240
+ const appendItem = (item, depth) => {
241
+ const todo = safeParseObject(item.extra_data.todo);
242
+ const plannedStart = String(todo.planned_start_date || item.extra_data.planned_start_date || '').trim();
243
+ const dueDate = String(todo.due_date || item.extra_data.due_date || '').trim();
244
+ appendRow(depth, 'work_item', item.name || '未命名工作项', item.status || '-', item.priority || '-', item.assignee || '-', plannedStart, dueDate, item.description || '');
245
+ const entities = entitiesByWorkItem.get(item.id) || [];
246
+ entities.forEach((entity) => {
247
+ appendRow(depth + 1, String(entity.entity_type || 'record'), String(entity.title || '未命名记录'), String(entity.status || ''), String(entity.priority || ''), String(entity.assignee || ''), '', String(entity.due_date || ''), toMarkdownPlainText(entity.content_md));
248
+ });
249
+ const itemDiaries = diariesByWorkItem.get(item.id) || [];
250
+ itemDiaries.forEach((row) => {
251
+ const createdAt = String(row.created_at || '').trim();
252
+ const diaryContent = toMarkdownPlainText(row.content);
253
+ appendRow(depth + 1, 'diary', createdAt || '日记', '', '', '', '', '', diaryContent);
254
+ });
255
+ const children = childrenByParent.get(item.id) || [];
256
+ children.forEach((child) => appendItem(child, depth + 1));
257
+ };
258
+ const roots = childrenByParent.get(rootKey) || [];
259
+ roots.forEach((item) => appendItem(item, 1));
260
+ if (!roots.length) {
261
+ appendRow(1, 'work_item', '当前沙盘暂无工作项');
262
+ }
263
+ const sheet = XLSX.utils.aoa_to_sheet(rows);
264
+ const workbook = XLSX.utils.book_new();
265
+ XLSX.utils.book_append_sheet(workbook, sheet, 'Sandbox');
266
+ const arrayBuffer = XLSX.write(workbook, { bookType: 'xlsx', type: 'buffer' });
267
+ return {
268
+ filename: `${sanitizeFileName(sandbox.name)}.xlsx`,
269
+ buffer: Buffer.isBuffer(arrayBuffer) ? arrayBuffer : Buffer.from(arrayBuffer),
270
+ };
271
+ }
23
272
  function buildSandboxCopyPayload(sandboxId) {
24
273
  const sandbox = db.prepare('SELECT * FROM sandboxes WHERE id = ?').get(sandboxId);
25
274
  if (!sandbox)
@@ -69,6 +318,7 @@ function buildSandboxCopyPayload(sandboxId) {
69
318
  priority: String(row.priority || ''),
70
319
  assignee: String(row.assignee || ''),
71
320
  capability_type: String(row.capability_type || ''),
321
+ due_date: String(row.due_date || ''),
72
322
  links: Array.isArray(row.links) ? row.links : [],
73
323
  created_at: String(row.created_at || ''),
74
324
  updated_at: String(row.updated_at || ''),
@@ -139,6 +389,7 @@ function importSandboxCopyPayload(input, targetName = '') {
139
389
  priority: String(row.priority || ''),
140
390
  assignee: String(row.assignee || ''),
141
391
  capability_type: String(row.capability_type || ''),
392
+ due_date: String(row.due_date || ''),
142
393
  links: Array.isArray(row.links) ? row.links : [],
143
394
  });
144
395
  });
@@ -191,6 +442,56 @@ router.get('/:id/copy-payload', (req, res) => {
191
442
  res.status(500).json(response);
192
443
  }
193
444
  });
445
+ router.get('/:id/export-markdown', (req, res) => {
446
+ try {
447
+ if (!ensurePageAccess(res, 'sandboxes')) {
448
+ return forbid(res, 'No permission to export sandbox markdown');
449
+ }
450
+ const access = getAccessContextFromResponse(res);
451
+ if (!canReadSandbox(access, req.params.id)) {
452
+ return forbid(res, 'No permission to export sandbox markdown');
453
+ }
454
+ const payload = buildSandboxMarkdownExport(req.params.id);
455
+ if (!payload) {
456
+ const response = { success: false, error: 'Sandbox not found' };
457
+ return res.status(404).json(response);
458
+ }
459
+ const asciiFilename = toAsciiFilename(payload.filename, '.md');
460
+ const encodedUtf8Filename = encodeURIComponent(payload.filename);
461
+ res.setHeader('Content-Type', 'text/markdown; charset=utf-8');
462
+ res.setHeader('Content-Disposition', `attachment; filename="${asciiFilename}"; filename*=UTF-8''${encodedUtf8Filename}`);
463
+ res.send(payload.content);
464
+ }
465
+ catch (error) {
466
+ const response = { success: false, error: String(error) };
467
+ res.status(500).json(response);
468
+ }
469
+ });
470
+ router.get('/:id/export-excel', (req, res) => {
471
+ try {
472
+ if (!ensurePageAccess(res, 'sandboxes')) {
473
+ return forbid(res, 'No permission to export sandbox excel');
474
+ }
475
+ const access = getAccessContextFromResponse(res);
476
+ if (!canReadSandbox(access, req.params.id)) {
477
+ return forbid(res, 'No permission to export sandbox excel');
478
+ }
479
+ const payload = buildSandboxExcelExport(req.params.id);
480
+ if (!payload) {
481
+ const response = { success: false, error: 'Sandbox not found' };
482
+ return res.status(404).json(response);
483
+ }
484
+ const asciiFilename = toAsciiFilename(payload.filename, '.xlsx');
485
+ const encodedUtf8Filename = encodeURIComponent(payload.filename);
486
+ res.setHeader('Content-Type', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
487
+ res.setHeader('Content-Disposition', `attachment; filename="${asciiFilename}"; filename*=UTF-8''${encodedUtf8Filename}`);
488
+ res.send(payload.buffer);
489
+ }
490
+ catch (error) {
491
+ const response = { success: false, error: String(error) };
492
+ res.status(500).json(response);
493
+ }
494
+ });
194
495
  router.post('/:id/copy-link', (req, res) => {
195
496
  try {
196
497
  if (!ensurePageAccess(res, 'sandboxes')) {
@@ -1 +1 @@
1
- {"version":3,"file":"sandbox.js","sourceRoot":"","sources":["../../../src/server/api/sandbox.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sandbox.js","sourceRoot":"","sources":["../../../src/server/api/sandbox.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"workItem.d.ts","sourceRoot":"","sources":["../../../src/server/api/workItem.ts"],"names":[],"mappings":"AAmBA,QAAA,MAAM,MAAM,4CAAgC,CAAC;AAoY7C,eAAe,MAAM,CAAC"}
1
+ {"version":3,"file":"workItem.d.ts","sourceRoot":"","sources":["../../../src/server/api/workItem.ts"],"names":[],"mappings":"AAoBA,QAAA,MAAM,MAAM,4CAAgC,CAAC;AAshB7C,eAAe,MAAM,CAAC"}
@@ -2,6 +2,7 @@ import { Router } from 'express';
2
2
  import { v4 as uuidv4 } from 'uuid';
3
3
  import { db } from '../db.js';
4
4
  import { canReadSandbox } from '../accessControl.js';
5
+ import { listNodeEntities } from '../nodeEntitiesStore.js';
5
6
  import { ensurePageAccess, ensureSandboxReadAccess, ensureSandboxWriteAccess, forbid, getAccessContextFromResponse, getSandboxIdByWorkItemId, getSandboxIdByOperationId, } from './accessHelpers.js';
6
7
  const router = Router({ mergeParams: true });
7
8
  function now() {
@@ -34,6 +35,42 @@ function safeParseJson(value) {
34
35
  return null;
35
36
  }
36
37
  }
38
+ function toDateKey(date) {
39
+ const year = date.getFullYear();
40
+ const month = String(date.getMonth() + 1).padStart(2, '0');
41
+ const day = String(date.getDate()).padStart(2, '0');
42
+ return `${year}-${month}-${day}`;
43
+ }
44
+ function parseDateKey(value) {
45
+ const normalized = String(value || '').trim();
46
+ if (!/^\d{4}-\d{2}-\d{2}$/.test(normalized))
47
+ return null;
48
+ return normalized;
49
+ }
50
+ function startOfWeek(baseDate) {
51
+ const date = new Date(baseDate);
52
+ const day = date.getDay();
53
+ const diff = day === 0 ? -6 : 1 - day;
54
+ date.setDate(date.getDate() + diff);
55
+ date.setHours(0, 0, 0, 0);
56
+ return date;
57
+ }
58
+ function endOfWeek(baseDate) {
59
+ const start = startOfWeek(baseDate);
60
+ const end = new Date(start);
61
+ end.setDate(start.getDate() + 6);
62
+ return end;
63
+ }
64
+ function getTodoDateRange(item) {
65
+ const extraData = item.extra_data || {};
66
+ const todoRaw = extraData.todo;
67
+ const todo = todoRaw && typeof todoRaw === 'object'
68
+ ? todoRaw
69
+ : {};
70
+ const plannedStartDate = parseDateKey(todo.planned_start_date ?? extraData.planned_start_date);
71
+ const dueDate = parseDateKey(todo.due_date ?? extraData.due_date);
72
+ return { plannedStartDate, dueDate };
73
+ }
37
74
  router.get('/', (req, res) => {
38
75
  try {
39
76
  if (!ensurePageAccess(res, 'sandboxes')) {
@@ -53,6 +90,114 @@ router.get('/', (req, res) => {
53
90
  res.status(500).json(response);
54
91
  }
55
92
  });
93
+ router.get('/agenda', (req, res) => {
94
+ try {
95
+ if (!ensurePageAccess(res, 'sandboxes')) {
96
+ return forbid(res, 'No permission to view work item agenda');
97
+ }
98
+ const access = getAccessContextFromResponse(res);
99
+ const periodRaw = String(req.query.period || 'week').trim();
100
+ const period = ['week', 'month', 'quarter', 'all'].includes(periodRaw)
101
+ ? periodRaw
102
+ : 'week';
103
+ const owner = String(req.query.owner || '').trim();
104
+ const nowDate = new Date();
105
+ const rangeStart = period === 'month'
106
+ ? new Date(nowDate.getFullYear(), nowDate.getMonth(), 1)
107
+ : period === 'quarter'
108
+ ? new Date(nowDate.getFullYear(), nowDate.getMonth(), nowDate.getDate())
109
+ : startOfWeek(nowDate);
110
+ const rangeEnd = period === 'month'
111
+ ? new Date(nowDate.getFullYear(), nowDate.getMonth() + 1, 0)
112
+ : period === 'quarter'
113
+ ? new Date(nowDate.getFullYear(), nowDate.getMonth() + 3, nowDate.getDate())
114
+ : endOfWeek(nowDate);
115
+ const startDate = period === 'all' ? '' : toDateKey(rangeStart);
116
+ const endDate = period === 'all' ? '' : toDateKey(rangeEnd);
117
+ const sandboxes = db.prepare('SELECT * FROM sandboxes ORDER BY created_at ASC').all();
118
+ const readableSandboxes = sandboxes.filter((row) => canReadSandbox(access, String(row.id || '')));
119
+ const agendaRows = [];
120
+ for (const sandbox of readableSandboxes) {
121
+ const sandboxId = String(sandbox.id || '');
122
+ const sandboxName = String(sandbox.name || sandboxId);
123
+ const items = db.prepare('SELECT * FROM work_items WHERE sandbox_id = ? ORDER BY created_at ASC').all(sandboxId);
124
+ items.map(parseWorkItem).forEach((item) => {
125
+ const { plannedStartDate, dueDate } = getTodoDateRange(item);
126
+ if (!plannedStartDate && !dueDate)
127
+ return;
128
+ const itemStart = plannedStartDate || dueDate;
129
+ const itemEnd = dueDate || plannedStartDate;
130
+ if (!itemStart || !itemEnd)
131
+ return;
132
+ if (period !== 'all' && !(itemStart <= endDate && itemEnd >= startDate))
133
+ return;
134
+ const assignee = String(item.assignee || '').trim();
135
+ const isMine = !assignee || (owner ? assignee === owner : false);
136
+ agendaRows.push({
137
+ id: item.id,
138
+ record_type: 'todo',
139
+ sandbox_id: sandboxId,
140
+ sandbox_name: sandboxName,
141
+ parent_id: item.parent_id,
142
+ name: item.name,
143
+ status: item.status,
144
+ priority: item.priority,
145
+ assignee,
146
+ planned_start_date: plannedStartDate,
147
+ due_date: dueDate,
148
+ is_mine: isMine,
149
+ });
150
+ });
151
+ const issues = listNodeEntities({ sandbox_id: sandboxId, entity_type: 'issue' });
152
+ issues.forEach((issue) => {
153
+ const issueDueDate = parseDateKey(issue.due_date);
154
+ if (!issueDueDate)
155
+ return;
156
+ if (period !== 'all' && !(issueDueDate >= startDate && issueDueDate <= endDate))
157
+ return;
158
+ const assignee = String(issue.assignee || '').trim();
159
+ const isMine = !assignee || (owner ? assignee === owner : false);
160
+ agendaRows.push({
161
+ id: issue.id,
162
+ record_type: 'issue',
163
+ sandbox_id: sandboxId,
164
+ sandbox_name: sandboxName,
165
+ parent_id: issue.work_item_id,
166
+ name: issue.title,
167
+ status: issue.status || 'open',
168
+ priority: issue.priority || '',
169
+ assignee,
170
+ planned_start_date: '',
171
+ due_date: issueDueDate,
172
+ is_mine: isMine,
173
+ });
174
+ });
175
+ }
176
+ const mine = agendaRows.filter((row) => Boolean(row.is_mine));
177
+ const others = agendaRows.filter((row) => !row.is_mine);
178
+ const response = {
179
+ success: true,
180
+ data: {
181
+ period,
182
+ owner,
183
+ start_date: startDate,
184
+ end_date: endDate,
185
+ mine,
186
+ others,
187
+ counts: {
188
+ mine: mine.length,
189
+ others: others.length,
190
+ total: agendaRows.length,
191
+ },
192
+ },
193
+ };
194
+ res.json(response);
195
+ }
196
+ catch (error) {
197
+ const response = { success: false, error: String(error) };
198
+ res.status(500).json(response);
199
+ }
200
+ });
56
201
  router.get('/:id', (req, res) => {
57
202
  try {
58
203
  if (!ensurePageAccess(res, 'sandboxes')) {