# Product Task Template

## Basic Info
- Task title:
- Owner:
- Requested by:
- Priority:
- Target release:
- Status:

## Background
- Why are we doing this?
- What problem are we solving?
- Is this a new feature, bug fix, or improvement?

## Goal
- What should be true after this task is completed?

## Users
- Primary user:
- Secondary user:

## Scope
- In scope:
- Out of scope:

## User Story
- As a `[user type]`, I want to `[action]` so that `[benefit]`.

## Page / System Area
- Frontend page(s):
- Backend/API area:
- Database impact:

## Current Behavior
- What happens today?

## Expected Behavior
- What should happen after the change?

## Detailed Requirements
- Requirement 1:
- Requirement 2:
- Requirement 3:

## Edge Cases
- Empty state:
- Invalid input:
- Permission / access:
- Loading / error state:

## Acceptance Criteria
- [ ] User can access the feature/page.
- [ ] Main happy path works end to end.
- [ ] Validation and error messages are clear.
- [ ] No existing flow is broken.

## Design / Content Notes
- Layout notes:
- Copy/text updates:
- Reference links or screenshots:

## Dependencies
- Environment / credentials needed:
- External services involved:
- Related tasks / blockers:

## QA Checklist
- [ ] Tested on desktop
- [ ] Tested on mobile
- [ ] Tested with valid data
- [ ] Tested with invalid data
- [ ] Tested with the correct user role

## Release Notes
- User-facing summary:
- Internal notes:

## Example

### Task title
Partner can register a new opportunity from the portal

### User Story
As a partner, I want to submit an opportunity registration form so that PingCAP can review and track my deal.

### Page / System Area
- Frontend page(s): `/opportunities`, `/opportunities/new`
- Backend/API area: `POST /api/opportunities`
- Database impact: `opportunities` table

### Acceptance Criteria
- [ ] Approved and active partner can open the registration form.
- [ ] Required fields are clearly marked.
- [ ] User can submit the form successfully.
- [ ] Submitted opportunity appears in the opportunities list.
- [ ] User sees an error message if required fields are missing.
