docs: update README + architecture for WatchMedium and review editing
This commit is contained in:
@@ -47,8 +47,8 @@ Open `http://localhost:3000`. The HTTP server and background worker start togeth
|
|||||||
|
|
||||||
## Features
|
## Features
|
||||||
|
|
||||||
- Log movies with a TMDB/OMDb ID or manual title/year/director, with a 0–5 rating
|
- Log movies with a TMDB/OMDb ID or manual title/year/director, with a 0–5 rating and optional watch medium (cinema, streaming, TV, physical media, download, media server)
|
||||||
- Immutable append-only viewing ledger (tracks re-watches)
|
- Edit reviews after the fact — update rating, comment, date, or watch medium via partial PATCH; each watch is still a separate record (re-watches tracked)
|
||||||
- Background poster fetching and storage (local filesystem or S3-compatible)
|
- Background poster fetching and storage (local filesystem or S3-compatible)
|
||||||
- Movie enrichment via TMDb — full cast, crew, genres, keywords, runtime, budget/revenue, ratings; fetched automatically on movie discovery and refreshed every 30 days; exposed via `GET /api/v1/movies/{id}/profile`
|
- Movie enrichment via TMDb — full cast, crew, genres, keywords, runtime, budget/revenue, ratings; fetched automatically on movie discovery and refreshed every 30 days; exposed via `GET /api/v1/movies/{id}/profile`
|
||||||
- Full-text search across movies and people via `GET /api/v1/search` — free-text query plus structured filters (genre, year, person, department, language); backed by SQLite FTS5 or PostgreSQL tsvector + GIN indexes
|
- Full-text search across movies and people via `GET /api/v1/search` — free-text query plus structured filters (genre, year, person, department, language); backed by SQLite FTS5 or PostgreSQL tsvector + GIN indexes
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ graph TB
|
|||||||
APP_PORTS["ReviewLogger<br/><i>application-layer port</i>"]
|
APP_PORTS["ReviewLogger<br/><i>application-layer port</i>"]
|
||||||
subgraph UseCases["Use Cases"]
|
subgraph UseCases["Use Cases"]
|
||||||
UC_AUTH["auth<br/>login, register"]
|
UC_AUTH["auth<br/>login, register"]
|
||||||
UC_DIARY["diary<br/>log_review, get_diary,<br/>get_activity_feed, export"]
|
UC_DIARY["diary<br/>log_review, edit_review,<br/>get_diary, get_activity_feed,<br/>export"]
|
||||||
UC_MOVIES["movies<br/>get_movies, get_movie_profile,<br/>enrich_movie, request_enrichment,<br/>sync_poster, reindex_search,<br/>merge_duplicates"]
|
UC_MOVIES["movies<br/>get_movies, get_movie_profile,<br/>enrich_movie, request_enrichment,<br/>sync_poster, reindex_search,<br/>merge_duplicates"]
|
||||||
UC_IMPORT["import<br/>create_session, apply_mapping,<br/>execute, profiles"]
|
UC_IMPORT["import<br/>create_session, apply_mapping,<br/>execute, profiles"]
|
||||||
UC_USERS["users<br/>get_users, get_profile,<br/>update_profile, delete_account"]
|
UC_USERS["users<br/>get_users, get_profile,<br/>update_profile, delete_account"]
|
||||||
@@ -50,7 +50,7 @@ graph TB
|
|||||||
direction TB
|
direction TB
|
||||||
subgraph Models["Models"]
|
subgraph Models["Models"]
|
||||||
M_MOVIE["Movie, MovieSummary,<br/>MovieProfile"]
|
M_MOVIE["Movie, MovieSummary,<br/>MovieProfile"]
|
||||||
M_REVIEW["Review, DiaryEntry,<br/>FeedEntry"]
|
M_REVIEW["Review, ReviewEdit,<br/>DiaryEntry, FeedEntry"]
|
||||||
M_USER["User, UserSummary"]
|
M_USER["User, UserSummary"]
|
||||||
M_PERSON["Person, PersonId,<br/>PersonCredits"]
|
M_PERSON["Person, PersonId,<br/>PersonCredits"]
|
||||||
M_WATCHLIST["WatchlistEntry,<br/>WatchEvent"]
|
M_WATCHLIST["WatchlistEntry,<br/>WatchEvent"]
|
||||||
@@ -69,7 +69,7 @@ graph TB
|
|||||||
DS_REVIEW["ReviewHistoryAnalyzer<br/><i>rating_trend</i>"]
|
DS_REVIEW["ReviewHistoryAnalyzer<br/><i>rating_trend</i>"]
|
||||||
end
|
end
|
||||||
EVENTS["DomainEvent enum<br/><i>ReviewLogged, MovieDiscovered,<br/>GoalCreated, GoalUpdated,<br/>UserDeleted, UserAccountMoved,<br/>SearchReindexRequested, ...</i>"]
|
EVENTS["DomainEvent enum<br/><i>ReviewLogged, MovieDiscovered,<br/>GoalCreated, GoalUpdated,<br/>UserDeleted, UserAccountMoved,<br/>SearchReindexRequested, ...</i>"]
|
||||||
VO["Value Objects<br/><i>MovieId, UserId, Rating,<br/>Email, Username, Password, ...</i>"]
|
VO["Value Objects<br/><i>MovieId, UserId, Rating,<br/>WatchMedium, Email, Username,<br/>Password, ...</i>"]
|
||||||
end
|
end
|
||||||
|
|
||||||
subgraph ApiTypes["api-types (0 domain deps)"]
|
subgraph ApiTypes["api-types (0 domain deps)"]
|
||||||
|
|||||||
Reference in New Issue
Block a user