fdeb747f38
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>
46 lines
1.1 KiB
Python
46 lines
1.1 KiB
Python
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]
|