feat: Phase 4 — module Notes complet
Backend : - schemas/notes.py : NoteCreate/Update/Response + AttachmentResponse - api/notes.py : CRUD + FTS français (plainto_tsquery) + filtres rapides (has_photo/audio/gps/tag/category) + pièces jointes (image/audio) - main.py : enregistrement /api/notes Frontend : - api/notes.ts : fetchNotes/create/update/delete + add/deleteAttachment - NoteForm.tsx : titre, contenu, catégorie, tags CSV, GPS - NotesPage.tsx : liste mobile (chronologique) + grille laptop, FAB +, enregistrement audio inline (MediaRecorder), upload photo, filtres rapides Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,45 @@
|
||||
import uuid
|
||||
from datetime import datetime
|
||||
from decimal import Decimal
|
||||
from pydantic import BaseModel, ConfigDict
|
||||
|
||||
|
||||
class AttachmentResponse(BaseModel):
|
||||
model_config = ConfigDict(from_attributes=True)
|
||||
id: uuid.UUID
|
||||
file_path: str | None
|
||||
thumbnail_path: str | None
|
||||
file_type: str | None
|
||||
original_name: str | None
|
||||
created_at: datetime
|
||||
|
||||
|
||||
class NoteCreate(BaseModel):
|
||||
title: str | None = None
|
||||
content: str
|
||||
category: str | None = None
|
||||
tags: list[str] = []
|
||||
gps_lat: Decimal | None = None
|
||||
gps_lon: Decimal | None = None
|
||||
|
||||
|
||||
class NoteUpdate(BaseModel):
|
||||
title: str | None = None
|
||||
content: str | None = None
|
||||
category: str | None = None
|
||||
tags: list[str] | None = None
|
||||
gps_lat: Decimal | None = None
|
||||
gps_lon: Decimal | None = None
|
||||
|
||||
|
||||
class NoteResponse(BaseModel):
|
||||
model_config = ConfigDict(from_attributes=True)
|
||||
id: uuid.UUID
|
||||
title: str | None
|
||||
content: str
|
||||
category: str | None
|
||||
tags: list[str]
|
||||
gps_lat: Decimal | None
|
||||
gps_lon: Decimal | None
|
||||
created_at: datetime
|
||||
attachments: list[AttachmentResponse]
|
||||
Reference in New Issue
Block a user