Skip to content

Add IKEA WebHarbor mirror#49

Open
Lxr-max wants to merge 1 commit into
aiming-lab:mainfrom
Lxr-max:add-ikea-site
Open

Add IKEA WebHarbor mirror#49
Lxr-max wants to merge 1 commit into
aiming-lab:mainfrom
Lxr-max:add-ikea-site

Conversation

@Lxr-max

@Lxr-max Lxr-max commented Jun 4, 2026

Copy link
Copy Markdown

Site name: IKEA
Site slug: ikea
Upstream URLs:

Safety note

  • Deterministic demo retail data only.
  • No real payment, no real checkout, no real inventory reservation, no real delivery booking, and no live IKEA API calls.

Implementation summary

  • Added a self-contained Flask + SQLAlchemy + SQLite IKEA retail mirror under sites/ikea/.
  • Implemented product search, room/category browsing, filters, product detail pages, compare, wishlist, cart, room planner bundles, store lookup, support/help search, pickup/delivery mock checkout, account orders, rewards, and order lookup.
  • Added deterministic local SVG product/store/category assets and idempotent seed flows.
  • Registered the site in websyn_start.sh, control_server.py, and Dockerfile.

Seed row counts

  • users: 4
  • categories: 12
  • products: 156
  • stores: 15
  • store_inventory: 2340
  • reviews: 546
  • orders: 60
  • order_items: 120
  • reward_activities: 20
  • wishlist_items: 16
  • compare_items: 12
  • cart_items: 8
  • deals: 18
  • support_articles: 24
  • support_tickets: 8
  • protection_plans: 312
  • pickup_slots: 45
  • payment_mocks: 60

Benchmark users

Task count and categories

  • 18 tasks in sites/ikea/tasks.jsonl
  • Search
  • Category / room browsing
  • Compare flow
  • Wishlist
  • Cart
  • Pickup / delivery checkout
  • Order lookup
  • Account orders / rewards
  • Store amenities
  • Support article lookup
  • Room planner bundle flow

Selected WebSyn port

  • 40015

Key routes

  • /
  • /home
  • /categories
  • /category/<category_slug>
  • /products
  • /product/
  • /deals
  • /stores
  • /stores/<store_slug>
  • /support
  • /search?q=
  • /cart
  • /checkout
  • /checkout/shipping
  • /checkout/pickup
  • /checkout/payment
  • /checkout/review
  • /checkout/confirmation
  • /login
  • /register
  • /logout
  • /account
  • /account/orders
  • /account/rewards
  • /account/wishlist
  • /order-lookup
  • /order/<order_number>
  • /room-planner
  • /compare

Verification commands and results

  • py -3 -m py_compile sites/ikea/app.py sites/ikea/seed_data.py sites/ikea/_health.py -> passed
  • Tasks JSONL validation -> passed (18 tasks, required schema fields present, unique IDs)
  • Additional Flask test-client smoke -> passed for auth, compare, cart, checkout, account, store, and support routes

Docker result

  • docker build -t webharbor:ikea-pr . -> passed
  • docker run -d --name webharbor-ikea-submit -p 8201:8101 -p 41000-41015:40000-40015 webharbor:ikea-pr -> passed
  • GET http://127.0.0.1:8201/health -> all 16 registered sites alive; IKEA served on port 40015

Smoke test result

  • Public routes /, /home, /categories, /products, /search?q=desk, /product/IK-10001, /deals, /stores, /stores/brooklyn-ny, /support, /login -> 200
  • Real HTTP flow passed for login, wishlist, compare, add-to-cart, pickup checkout, confirmation, order lookup, account orders, rewards, wishlist, and support search
  • Example confirmation order generated during smoke: IK-260061

Reset endpoint result

  • POST http://127.0.0.1:8201/reset/ikea -> 200 / ready: true

MD5 result

  • /opt/WebSyn/ikea/instance/ikea.db and /opt/WebSyn/ikea/instance_seed/ikea.db match after reset
  • MD5: 2de50fad32407e799cb8c4659d0a2e19
  • After container restart, homepage remained 200 and the MD5 still matched

Screenshot paths

  • Local review directory prepared: sites/ikea/scraped_data/submission_review
  • Browser capture is currently pending on this machine because npx playwright install chromium failed with ECONNRESET while downloading Chromium

HF asset status

Known limitations

  • Product, category, and store visuals are deterministic local SVG assets rather than copied IKEA-owned imagery.
  • No real payment, no real order placement, no real delivery booking, and no live external runtime calls.
  • Playwright screenshots could not be captured on this machine because the Chromium download failed.

Manual review notes

  • .gitignore runtime ignore lines were corrected so sites/*/instance/ and sites/*/scraped_data/ remain out of commits.
  • The shell entrypoint was normalized to LF so the Docker image boots correctly on Linux.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant