uto_manager/development_status.md

107 lines
5.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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 |