1. Dossiers & étapes
assets/station_s/
+- include/app/ui/mycityhall/
¦ +- obb_mch_workflow.h
+- src/app/ui/mycityhall/
+- obb_mch_workflow.cpp
enum class Step : uint8_t {
kDraft,
kDeliberation,
kVote,
kPublication,
kArchived,
};
Les états correspondent mot pour mot au texte conceptuel.
2. Objet Dossier
struct Dossier {
std::string id;
std::string title;
std::string author;
Step step = Step::kDraft;
uint32_t created_at = 0;
uint32_t updated_at = 0;
bool citizen_readonly = false;
};
Le flag citizen_readonly sert pour laccès lecture seule demandé.
3. Passage détape
void advance_step(const std::string &id) {
auto it = std::find_if(s_dossiers.begin(), s_dossiers.end(),
[&](const Dossier &d) { return d.id == id; });
if (it == s_dossiers.end()) return;
it->step = next_step(it->step);
}
La fonction est appelée via la tuile MyCityHall (joystick ou clavier). Dès que létape atteint kArchived, la tuile passe en lecture seule.
Placeholder : timeline signée (brouillon ? vote ? publication).