JetBrains-Research / JetBrains-Research/Python-Solution-Preference

[006] Family-Friendly Yinzer Venue Finder (MVP)

Ouverte
#6 0 commentaires 0 réactions 0 personnes assignées Voir sur GitHub
Langage dominant
Aucune donnée de langage
Étoiles
2
Forks
0
Métriques de merge des PR
Aucune PR mergée en 30 j

Description

## Overview

Service for discovering family-friendly venues in Pittsburgh. No login required. Read-only data from `assets/data.md` (22 venues).

Build this as a Python backend service with no UI; expose the functionality below through an HTTP API.

**Core Rules:**
- Status: "Open" or "Closed". Any non-Open value in data → Closed.
- Preferences persist until changed or cleared.
- Location fallback: 40.4406° N, 79.9959° W. Indicate when the default location is being used.
- Callers may supply their own coordinates instead of the fallback.

**Distance Formula:**
```
Distance (miles) = √((Δlat × 69)² + (Δlng × 54.6)²)
```

**Distance Display:** < 0.6 mi → feet rounded to nearest 50 ft; ≥ 0.6 mi → miles with 1 decimal.

**Travel Times:** Driving at 22 mph, walking at 3 mph. Both rounded up to whole minutes.

---

## Categories

Two groups: "Food & Dining" | "Places to Visit".

| Food & Dining | Places to Visit |
|---------------|-----------------|
| General Restaurants | Playgrounds & Parks |
| Western Restaurants | Museums & Experience Centers |
| Cafes | Festivals & Events |
| Kids Cafes | Indoor Playgrounds |

Selecting a category → search results for that category.

---

## Preferences

Four sections (multi-select, none selected by default):

| Section | Options |
|---------|---------|
| Cuisine Types | Italian, Mexican, Asian, American, Mediterranean, Steakhouse, Seafood, Vegetarian, Bakery/Dessert |
| Dietary Options | Vegetarian options, Vegan options, Gluten-free, Dairy-free, Nut-free, Organic, Healthy options, Kids menu |
| Facilities | Parking, Play area, High chairs, Kids utensils, Nursing room, Changing station, Spacious seating, Outdoor space |
| Keywords | Highly rated, Good value, Great atmosphere, Romantic, Group friendly, Full bar, Scenic view, Quiet, Clean, Upscale, Casual, Family gathering, Child-friendly, Kids welcome, Entertainment, Activities |

**Keyword Matching Rules:**

| Preference | Matches If |
|------------|------------|
| Highly rated | rating ≥ 4.5 |
| Good value | keyword "good-value" OR price $ or $$ |
| Great atmosphere | keyword in {lively, cozy, beautiful, vibrant, welcoming, elegant, sophisticated, fun} |
| Romantic | keyword "romantic" |
| Group friendly | facility "Spacious seating" OR keyword "family-gatherings" |
| Full bar | facility "Full bar" |
| Scenic view | facility "Scenic view" |
| Quiet | keyword "quiet" |
| Clean | keyword "clean" |
| Upscale | price $$$ or $$$$ OR keyword "upscale" or "elegant" |
| Casual | price $ or $$ OR keyword "casual" |
| Family gathering | keyword "family-gatherings" |
| Child-friendly / Kids welcome | keyword "family-friendly" OR facility in {Play area, High chairs, Kids utensils, Changing station} |
| Entertainment | facility "Entertainment" OR keyword "entertaining" |
| Activities | facility "Play area" OR keyword in {activities, interactive, hands-on} |

Matching is case-insensitive. Hyphens and spaces equivalent (e.g., "good value" matches "good-value").

**Save:** Persists preferences. Preferences can also be cleared (reset all).

---

## Search Results

**Filtering Logic:**
- Venue must match selected category.
- For each preference section with ≥1 selection: venue must match ≥1 selected value from that section.
- Sections with no selections don't filter.

**Sorting:** Distance ascending. Ties: name A–Z.

**Each result includes:** Name, category, address, distance, rating + review count, price range, driving time, walking time, phone, status.

---

## Venue Detail

Individual venues can be retrieved with all venue info plus:

**Keywords:** "What people say" — up to 8 hashtag badges from venue's Keywords field. Format: lowercase with "#" prefix (e.g., "#family-friendly"). Omitted if no keywords.

---
**Provided starting files:** see [`006-venue-finder/assets/`](https://github.com/JetBrains-Research/Python-Solution-Preference/tree/main/006-venue-finder/assets) — these were in the agent's working directory when it solved the task.

Guide de contribution

Aucun guide de contribution indexé pour ce dépôt

Piste de recherche

Start by inspecting 006-venue-finder/assets/ and the referenced assets/data.md to understand the 22 venue records. Then determine the HTTP API entry points and how preferences should persist. Done means a Python backend with no UI implements the specified filtering, matching, sorting, distance, travel-time, detail, and preference behaviors.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Évaluation

Stack technique
python
Domaine
api, backend
Type d'issue
Fonctionnalité
Difficulté
5/5
Temps estimé
Plus d'une semaine
Activité
Calme
Clarté
Plutôt claire
Accessibilité débutants
35/100

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.