JetBrains-Research / JetBrains-Research/Python-Solution-Preference
[002] Book Journey (MVP)
- 主要语言
- 没有语言数据
- 星标
- 2
- 派生
- 0
- PR 合并指标
- 30 天内没有已合并 PR
描述
## Overview
A multi-user reading journal where users add short "journey checkpoints" to pre-seeded books. Each book publicly exposes its details and all readers' checkpoints.
Build this as a Python backend service with no UI; expose the functionality below through an HTTP API.
Books are loaded from `assets/books.json` (users cannot add or edit books). Each book contains: `id`, `title`, `author`, `year_published`, `synopsis`, `total_chapters`, `genre`.
---
## Authentication (Username Only)
- Users log in with a username only.
- Username rules: required, 3–20 characters, letters/numbers/underscores only, case-sensitive, unique.
- If validation fails: return an error.
- On valid submit:
- If username does not exist: create account and log in.
- If username already exists: log that user in.
---
## Browse Books
- Returns a list of all books with: title, author, year published, genre, and a synopsis preview.
- Search filters by substring match on title or author (case-insensitive).
---
## My Journey
- Lists all books where the logged-in user has at least one checkpoint.
- Shows: title, author, year published for each book.
---
## Book Details
**Book Details**:
- Title, author, year published, genre, full synopsis
- Total chapters
**Your Journey**:
- Whether the requesting user has checkpoints for this book, and their count.
**Reader Checkpoints**:
- All checkpoints from all users for this book.
- Each shows: username, chapter number, note text, mood (if present).
- Ordered by chapter number ascending.
- The requesting user's own checkpoints are identifiable as such.
---
## Checkpoints (Add Only)
Each checkpoint contains: chapter number, note text, mood (optional).
**Validation**:
- Chapter: integer between 1 and `total_chapters` (inclusive).
- Note: required, 1–280 characters after trimming leading/trailing whitespace.
- Mood options: Curious, Confused, Excited, Calm, Sad, Delighted (or none).
**On save**:
- If validation fails: return errors, do not save.
- If valid: save checkpoint. The checkpoint appears in Reader Checkpoints sorted by chapter. If first checkpoint for this book, the book appears in My Journey.
Users cannot edit or delete checkpoints.
---
**Provided starting files:** see [`002-book-journey/assets/`](https://github.com/JetBrains-Research/Python-Solution-Preference/tree/main/002-book-journey/assets) — these were in the agent's working directory when it solved the task.
贡献指南
这个仓库没有索引到贡献指南
调研方向
Start by inspecting the provided files in 002-book-journey/assets/, especially assets/books.json, then map the authentication, browsing, journey, book-details, and checkpoint requirements into an HTTP API. Done means the service supports all listed flows, validates usernames and checkpoints, preserves the add-only rules, and returns the specified book and reader data.
由索引模型根据 Issue 内容生成。
评估
- 技术栈
- python
- 领域
- api, backend
- Issue 类型
- 功能
- 难度
- 5/5
- 预计耗时
- 一周以上
- 活跃度
- 冷清
- 描述清晰度
- 基本清楚
- 新手友好度
- 45/100