fix(programmer): day rows — Delta JSON test + non-assignee row gate

- Add Delta JSON happy-path test case to deltaJsonToPlainText tests
- Fix double-row bug: notes-only assignee rows only when userId == assigneeId
- Remove dead code: tautological taskMap.containsKey check in loop
Co-Authored-By: claude-flow <ruv@ruv.net>
This commit is contained in:
2026-09-27 21:08:30 +08:00
parent f9b8831c71
commit 12842bfa12
2 changed files with 11 additions and 7 deletions
+5 -5
View File
@@ -74,8 +74,6 @@ List<DaySheetRow> buildDayRows({
// Process each task
for (final task in tasks) {
if (!taskMap.containsKey(task.id)) continue;
final assigneeId = task.assigneeId;
// Compute daily seconds for this task
@@ -88,12 +86,14 @@ List<DaySheetRow> buildDayRows({
final userDailySeconds = dailyByAssignee[userId] ?? {};
final assigneeSeconds = userDailySeconds[day] ?? 0;
// Check for assignee row: has seconds that day OR authored notes-only log that day
// Check for assignee row: has seconds that day OR (is assignee AND authored notes-only log that day)
final assigneeLogsKey = '${task.id}:$userId';
final assigneeLogsThisDay = workLogsByTaskAndAuthor[assigneeLogsKey]
final assigneeLogsThisDay = (userId == assigneeId)
? (workLogsByTaskAndAuthor[assigneeLogsKey]
?.where((l) => l.workDate == day && l.minutes == null)
.toList() ??
[];
[])
: [];
if (assigneeSeconds > 0 || assigneeLogsThisDay.isNotEmpty) {
final notes = assigneeLogsThisDay
+4
View File
@@ -24,6 +24,10 @@ void main() {
expect(deltaJsonToPlainText('[{invalid json'), '[{invalid json');
});
test('Delta JSON with insert is converted to plain text', () {
expect(deltaJsonToPlainText('[{"insert":"Hello\\n"}]'), 'Hello');
});
test('Delta JSON arrays starting with [ are attempted to be parsed', () {
// The function attempts to parse JSON that starts with '['
// If parsing fails, it returns the trimmed string