# Mod Rating And Review

Task: `TODOS.phase-72.72.14.2.7`

The V2 mod rating and review system accepts 5-star ratings, text reviews, and
helpfulness votes through provider-neutral `V2Modding` runtime types.
`FV2ModRatingSummary` aggregates accepted reviews, average star rating,
moderation counts, helpful votes, not-helpful votes, and validation issues.

## Policy

`BuildDefaultModRatingPolicy` enables:

- 1-to-5 star ratings
- required text reviews
- 2,000 character maximum review text
- moderation queueing for text reviews
- author self-review blocking
- helpfulness vote tracking

Text reviews enter `PendingModeration` by default. The policy can publish valid
reviews immediately by disabling `bQueueTextReviewsForModeration`.

## Reviews

`FV2ModRatingReviewSubmission` records the mod id, reviewer account, author
account, star rating, review text, submission timestamp, and verified-download
state. `EvaluateModRatingReviews` rejects invalid star ratings, empty text
reviews, overlong reviews, duplicate reviewer submissions for the same mod, and
author self reviews.

Accepted reviews receive stable `ModRating.<mod>.<reviewer>.<timestamp>` ids and
become `FV2ModRatingReviewEntry` records.

## Helpfulness

`FV2ModHelpfulnessVote` records a review id, voter account, helpful/not-helpful
choice, and verified-download state. Votes are counted once per voter per
review. Review authors cannot vote on their own review helpfulness.

## Verification

Run:

```bash
python3 V2/ue/Tools/check-v2-mod-rating-review.py
python3 -m json.tool V2/ue/Content/V2/Modding/ModRatingReview_V2_Contract.json
```

The focused checker verifies runtime types, 5-star ratings, text review
validation, moderation queueing, helpfulness votes, duplicate review blocking,
author self-review blocking, automation assertions, docs, CI/Horde wiring, and
TODO evidence for `72.14.2.7`.
