andreagrandi / andreagrandi/draftomen

Represent and persist multi-card logical picks

Abierto
#260 0 comentarios 0 reacciones 0 asignados Ver en GitHub
draftomen enhancement size: L
Lenguaje dominante
Python
Estrellas
0
Forks
0
Merge medio
1 h 21 min
PR fusionados (30 d)
188

Descripción

## Problem

`PickMadeEvent`, `DraftPick`, pool persistence, idempotence, recovery, and completion reconciliation store one `chosen_grp_id`. Pick-Two selects two cards at one pack/pick coordinate, so logical-pick count and selected-card count are different invariants.

## Proposed change

Cleanly replace singular chosen-card contracts with an immutable collection of selected card IDs across events, draft state, and persistence. Migrate every direct caller in the same change. Preserve coordinate-level idempotence and add every selected card to the pool exactly once.

## Acceptance Criteria

- [ ] A logical pick stores one or more selected card IDs and rejects an empty selection.
- [ ] Quick/Premier/Traditional picks store one card; Pick-Two stores two cards at one coordinate.
- [ ] Logical-pick count and selected-card count are explicit and cannot be confused.
- [ ] Duplicate delivery of an identical multi-card pick is idempotent; conflicting replay is rejected consistently.
- [ ] Pending-pack recovery and completion reconciliation preserve every selected card exactly once.
- [ ] Existing persisted Quick Draft state has a tested clean migration or explicit compatibility strategy.
- [ ] All singular call sites are migrated; no deprecated alias remains.
- [ ] Focused pool/state tests and the changelog cover the new contract.

## Scope notes

No human pick-message parsing, ratings changes, or UI presentation.

Guía de contribución

No hay ninguna guía de contribución indexada para este repositorio

Línea de trabajo

Trace PickMadeEvent and DraftPick through pool persistence, pending-pack recovery, and completion reconciliation to map every singular chosen_grp_id caller. Run the focused pool/state tests while checking coordinate idempotence, migration compatibility, and selected-card counts. Done means all acceptance criteria pass and the changelog documents the new contract.

Escrito por el modelo de indexación a partir del texto del issue.

Evaluación

Stack tecnológico
python
Área
backend, database
Tipo de issue
Refactorización
Dificultad
5/5
Tiempo estimado
Más de una semana
Estado de actividad
Activo
Claridad
Bastante claro
Aptitud para principiantes
35/100

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.