openup: doc restructure - template alignment + design sequences (non-PSP)

Align the OpenUP markdown set to the blank templates (process-data repo,
templates/openup/) per BUILD-CHECKLIST 7. Scenario step text unchanged;
the EA model needs no change (brief descriptions already live in the
model's UC/actor notes).

- vision.md: positioning tables, stakeholder summary, user environment,
  needs-and-features table (R1/R2), other product requirements
- use-case-model.md: per-UC specification sections (brief description,
  actor descriptions, named alternative/exception subsections with
  numbered steps, post-conditions, special requirements)
- supplementary-specifications.md: category tables with priority and
  use-case columns + reverse coverage matrix; IDs unchanged
- test/quality-check-procedure.md: migrated from Joplin (single content
  home); stale open items marked resolved (WI-1/WI-2)
- analysis-design/sequences/: 12 PlantUML design sequences (lifelines =
  analysis classes, messages = design elements; per the PlantUML layout
  style guide) + PNG renders; embedded in Architecture Notebook 9.3
- Joplin consolidated: project content notes deleted (all live in
  docs/game + docs/openup); Joplin keeps the status note only
This commit is contained in:
Jan-Peter von Hunnius 2026-10-05 11:22:38 +02:00
parent 93bb034752
commit 193562cbc4
30 changed files with 1200 additions and 124 deletions

View file

@ -0,0 +1,37 @@
@startuml uc-07-trade-at-shop
autonumber
title UC-07 Trade at Shop (design sequence)
actor Player
participant "ShopBoundary\n«/api/characters/{id}/shop»" as boundary <<boundary>>
participant "ShopService\nsb-api::routes::{shop_action,buy,sell}" as control <<control>>
participant "ShopStock\nAppState.shop_stock" as entity <<entity>>
== View ==
Player -> boundary : GET shop
boundary --> Player : always-stocked + rotating stock, inventory
== Buy ==
Player -> boundary : POST buy + item id
boundary -> control : buy_item(character, item)
control -> entity : check stock (non-permanent: decrement)
alt stock exhausted
entity --> control : 0 remaining
control --> boundary : 410 GONE
else gold < price
control --> boundary : 422
else ok
control -> entity : stock -1, gold -price, inventory +item
control --> boundary : {success, message, gold}
boundary --> Player : {success, message, gold}
end
== Sell ==
Player -> boundary : POST sell + item id
boundary -> control : sell_item(character, item)
alt item not owned / unknown action
control --> boundary : 400
else ok
control -> entity : inventory -item, gold +value/2, stock +1 (non-permanent)
boundary --> Player : {success, message, gold}
end
@enduml