feat(m13): cross-resource search + dashboard completion, tests, e2e
- SearchService (cross-resource keyword search across board/chat/todo/file/ event/meeting/milestone/note with type filter, project isolation) - DashboardService (project dashboard: in-progress todos, near-due(7d), latest chat/board/notes/files(5), next meeting, milestones w/ progress, recent activity(10); personal dashboard: my projects, incomplete todos, upcoming meetings, unread notifications, overdue tasks, recent activity) - CalendarRepository.findByProject - APIs: GET /api/projects/:projectId/search, GET /api/dashboard - Screens: complete personal dashboard, complete project overview, search page + SearchForm, ProjectNav 検索 link - Unit tests (SearchService, DashboardService) + e2e dashboard
This commit is contained in:
@ -50,6 +50,14 @@ export interface CreateEventInput {
|
||||
export class CalendarRepository {
|
||||
constructor(private readonly db: SqliteDatabase) {}
|
||||
|
||||
findByProject(projectId: number): CalendarEvent[] {
|
||||
const rows = this.db.query<CalendarEventRow>(
|
||||
'SELECT * FROM calendar_events WHERE project_id = @projectId AND deleted_at IS NULL ORDER BY start_at ASC, id ASC',
|
||||
{ projectId }
|
||||
);
|
||||
return rows.map(mapEvent);
|
||||
}
|
||||
|
||||
findByProjectInRange(
|
||||
projectId: number,
|
||||
from: string,
|
||||
|
||||
Reference in New Issue
Block a user