Files
marketplaces/Sprint-9-Product-Engagement-Report.md

3.9 KiB

Sprint 9 - Product Engagement Report

1. Architecture Decisions

  • Product engagement was implemented as a dedicated module under product feature: src/app/features/website/product/engagement/components.
  • ProductFacade remained the single feature entry point for engagement flows:
    • loadRating(productID)
    • loadReviews(productID, query)
    • loadQuestions(productID, query)
    • submitReview(productID, input)
    • submitQuestion(productID, input)
  • No feature component uses HttpClient directly.
  • Data flow remains layered:
    • Feature Container/Components -> ProductFacade -> ProductDataService -> ProductDataProvider (ApiProductDataProvider) -> ApiService.
  • Existing auth/payment/bootstrap initialization flows were not changed.
  • Widget/section/bootstrap runtime architecture was preserved.

2. Reusable Components Added

Product Engagement Atoms

  • StarsComponent
  • StarSelectorComponent
  • ProductTabsComponent
  • RatingSummaryComponent

Reviews

  • ReviewFormComponent
  • ReviewCardComponent
  • ReviewListComponent (includes pagination support)

Questions

  • QuestionFormComponent
  • QuestionCardComponent
  • QuestionListComponent (includes pagination + Ask Question toggle)

Product Page Sections

  • Existing reusable sections kept:
    • Gallery, Product Info, Variant Selector, Delivery, Description, Related Products
  • New/updated reusable sections:
    • ProductSpecificationsComponent
    • ProductWarrantyComponent
    • Reviews section via ReviewListComponent
    • Questions section via QuestionListComponent

3. Domain Models Added

File: src/app/core/products/models/product-engagement.model.ts

  • RatingSummary
  • Review
  • Question
  • Answer
  • Supporting contracts:
    • RatingDistributionEntry
    • EngagementListQuery
    • EngagementListResult<T>
    • SubmitReviewInput
    • SubmitQuestionInput

4. Bootstrap Additions (Feature Config Only)

Added new optional config model:

  • src/app/shared/models/config/product-page-config.model.ts

Added to bootstrap contract:

  • BootstrapConfig.productPage?: ProductPageConfig

Added to mock bootstrap example:

  • src/assets/mock/bootstrap/bootstrap.json now contains productPage with:
    • rating.enabled
    • reviews.enabled/pageSize/showSummary
    • questions.enabled/pageSize
    • tabs.enabled/items
    • relatedProducts.enabled

No review/question domain data was placed in bootstrap.

5. Backend Endpoints Expected

Prepared in docs/contracts as target backend API:

  • GET /products/{id}/rating
  • GET /products/{id}/reviews
  • GET /products/{id}/questions
  • POST /products/{id}/reviews
  • POST /products/{id}/questions

Current runtime uses existing available mock/API item data mapping where applicable, while facade methods and contracts are already prepared for dedicated engagement endpoints.

6. Validation Results

Build

  • npm run build -> PASS

Architecture Rules

  • No HttpClient usage found in feature layer (src/app/features/**).
  • No environment.* usage found in feature layer (src/app/features/**).
  • No DTO imports found in feature layer (src/app/features/**, checked for \bdto\b|\.dto).

Architecture Governance Scripts

  • npm run arch:check:boundaries -> PASS
  • npm run arch:check:cycles -> PASS (No circular dependency found)

7. Documentation Updated

Platform docs:

  • docs/platform/00-bootstrap-example.md
  • docs/platform/02-bootstrap-json-spec.md
  • docs/platform/06-api-contracts.md
  • docs/platform/10-product-domain.md
  • docs/platform/13-backend-requirements.md

Backend docs:

  • docs/backend-platform/business-apis.md

8. Future Extension Points

  • Photo upload support in review form (placeholder is already present in UI).
  • Backend-side moderation and verification flags for reviews/questions.
  • Dedicated seller identity and accepted-answer workflow integration.
  • Server-driven sorting/filtering for reviews and questions.
  • Optional widgetized engagement blocks for dynamic page composition.