feat(notes): P1 слой данных — Notes API v1 клиент + репозиторий + ETag-кэш + модель
- NotesApiClient: публичный /api/v1 (list exclude=content + If-None-Match, get, create, saveContent с If-Match→412 NoteConflictException, setFavorite/Category/rename, delete) - NotesRepository: сессия→клиент→кэш, offline-first список (304/сеть → кэш) - NotesCache: дисковый ETag-кэш списка (образец CalendarEventsCache) - Note модель + разбор JSON; NoteConflictException (явный выбор, не молчаливая перезапись) - NotesApiClientTest: 7 юнит-тестов через MockWebServer (пишущее — юнитами, не forbion; mail/073) Верифицировано изолированно (worktree на чистом HEAD): compileDebugKotlin + 7/7 tests + detekt OK. Закрывает часть P1 notes.diff.md (слой данных). mail/096/093, план mail/071. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -37,4 +37,6 @@ dependencies {
|
||||
implementation libs.coil.compose
|
||||
implementation libs.coil.svg
|
||||
testImplementation libs.junit
|
||||
testImplementation libs.okhttp
|
||||
testImplementation libs.okhttp.mockwebserver
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user