5.5 KiB
5.5 KiB
UTO Manager — Development Status
Last Updated: 2026-08-07
Current Branch: feature/phase-1-foundations → merged to main
Active Phase: Phase 1 — Architecture & Data Foundations ✅ COMPLETE
Phase 1 — Architecture & Data Foundations ✅ COMPLETE
Completed Items
| Item | Status | Notes |
|---|---|---|
| Flutter project initialization | ✅ | Multi-platform: Windows, Web (WASM), Android |
| Clean architecture folder structure | ✅ | domain / infrastructure / presentation layers |
pubspec.yaml configuration |
✅ | Drift, Equatable, flutter_bloc, uuid, meta, path_provider |
analysis_options.yaml lint rules |
✅ | very_good_analysis base + project overrides |
Echelon entity |
✅ | Brigade→Team hierarchy, isValidParent, isValidChild, level |
DoctrinalBranch entity |
✅ | Infantry, Medical, Fires, Signal, Cyber/EW, Aviation, Logistics, Engineer |
AuthorizedRank entity |
✅ | E1–E9, W1–W5, O1–O10; payGrade, rankTitle, meetsMinimum, category flags |
UnitNode entity |
✅ | Immutable, Equatable, copyWith, isRoot, isValidParentNode |
PositionSlot entity |
✅ | Immutable, Equatable, copyWith, isVacant, isFilled |
PersonnelRecord entity |
✅ | Immutable, Equatable, copyWith, ReadinessState (FMC/PMC/NMC) |
DutyMos value object |
✅ | Validated MOS codes, @immutable, codesForBranch, isKnown |
domain_entities.dart barrel export |
✅ | Single import for all domain entities |
UnitRepository abstract interface |
✅ | CRUD + subtree + watch streams |
PersonnelRepository abstract interface |
✅ | CRUD + assignment + watch streams |
AppDatabase (Drift) schema |
✅ | Units, PositionSlots, Personnel, Templates tables |
Drift code generation (build_runner) |
✅ | app_database.g.dart generated (94 KB) |
assets/data/mos_dictionary.json |
✅ | 8 branches, 60+ MOS codes, position slot templates |
assets/svg/ directory |
✅ | Reserved for NATO military symbols (Phase 2) |
| GitHub Actions CI/CD pipeline | ✅ | Test + analyze + build (Windows, Web WASM, Android) |
lib/main.dart placeholder scaffold |
✅ | Army-blue Material 3 theme, placeholder UI |
Unit tests — Echelon |
✅ | 17 tests passing |
Unit tests — AuthorizedRank |
✅ | 16 tests passing |
Unit tests — PersonnelRecord |
✅ | 13 tests passing |
Unit tests — UnitNode |
✅ | 15 tests passing |
Unit tests — DutyMos |
✅ | 32 tests passing |
| Widget test — placeholder scaffold | ✅ | 1 test passing |
| Total tests | ✅ | 94 / 94 passing |
flutter analyze |
✅ | No issues found |
Phase 2 — Canvas Engine & Drag-Drop UTO Builder (NEXT)
Planned Items
| Item | Priority | Notes |
|---|---|---|
UnitTreeService domain service |
High | Build/validate unit tree from UnitNode list |
AssignmentService domain service |
High | Assign/unassign soldiers to slots with validation |
| Drift DAO implementations | High | UnitDao, PersonnelDao, PositionSlotDao, TemplateDao |
| Repository concrete implementations | High | Wire DAOs to abstract repository interfaces |
flutter_bloc Cubits/Blocs |
High | UnitTreeCubit, PersonnelCubit, TemplateCubit |
| Three-pane UI shell | High | Left panel (unit tree), center canvas, right panel (personnel) |
| Interactive canvas widget | High | Scrollable/zoomable org chart canvas |
| Drag-and-drop soldier assignment | High | Drag from personnel panel → drop on position slot |
| NATO military symbol SVGs | Medium | Brigade, Battalion, Company, Platoon, Squad, Team symbols |
| Unit node card widget | Medium | Echelon symbol + name + fill rate indicator |
| Position slot card widget | Medium | MOS badge + rank + soldier name or "VACANT" |
| Readiness color coding | Medium | FMC=green, PMC=amber, NMC=red |
| Template save/load | Medium | Serialize unit tree to JSON, persist via Templates table |
Phase 3 — Reporting & Export (PLANNED)
| Item | Priority | Notes |
|---|---|---|
| UTO report generation | High | PDF/HTML export of unit task organization |
| Readiness dashboard | High | Aggregate FMC/PMC/NMC statistics by echelon |
| Personnel roster export | Medium | CSV export of assigned/unassigned soldiers |
| Template library | Medium | Save/load/share UTO templates |
| Multi-BCT support | Low | Support multiple simultaneous BCT configurations |
| Web deployment | Low | Deploy WASM build to internal web server |
Known Issues / Technical Debt
| Issue | Severity | Resolution |
|---|---|---|
lines_longer_than_80_chars disabled |
Low | Dart formatter produces lines > 80 chars for chained method calls; rule disabled in analysis_options.yaml |
| Drift DAOs not yet implemented | Medium | Phase 2 work item — abstract interfaces defined, concrete implementations pending |
| No integration tests | Medium | Phase 2 will add integration tests for repository implementations |
sqlite3_flutter_libs EOL warning |
Low | Will upgrade when drift supports newer version |
Test Coverage Summary
flutter test --coverage
94 tests | 0 failures | 0 skipped
Coverage: domain layer ~95%+ (entities, value objects)
Branch History
| Branch | Merged | Description |
|---|---|---|
feature/phase-1-foundations |
2026-08-07 | Phase 1: Architecture & Data Foundations |