docs(09-01): complete batch command parsing plan

Tasks completed: 3/3
- Task 1: Add batch command detection and parsing
- Task 2: Add container name matching with exact-match priority
- Task 3: Wire batch routing and add batch stop confirmation

SUMMARY: .planning/phases/09-batch-operations/09-01-SUMMARY.md
This commit is contained in:
Lucas Berger
2026-02-03 21:24:13 -05:00
parent feea06c4c3
commit 1274eab438
2 changed files with 129 additions and 9 deletions
+13 -9
View File
@@ -5,25 +5,25 @@
See: .planning/PROJECT.md (updated 2026-02-02) See: .planning/PROJECT.md (updated 2026-02-02)
**Core value:** Immediate container control from your phone **Core value:** Immediate container control from your phone
**Current focus:** v1.1 Phase 8 verified — inline keyboard infrastructure fully operational **Current focus:** v1.1 Phase 9 in progress — batch command parsing complete
## Current Position ## Current Position
- **Milestone:** v1.1 — n8n Integration & Polish - **Milestone:** v1.1 — n8n Integration & Polish
- **Phase:** 8 of 11 (Inline Keyboard Infrastructure) - **Phase:** 9 of 11 (Batch Operations)
- **Plan:** 3 of 3 - **Plan:** 1 of 3 complete
- **Status:** Phase complete and verified - **Status:** In progress
- **Last activity:** 2026-02-04 — Completed 08-03 verification, fixed deployment bugs - **Last activity:** 2026-02-04 — Completed 09-01-PLAN.md (batch command parsing)
## Progress ## Progress
``` ```
v1.1: [███████ ] 60% v1.1: [███████ ] 67%
Phase 6: n8n API Access [██████████] Complete Phase 6: n8n API Access [██████████] Complete
Phase 7: Socket Security [██████████] Complete (3/3) Phase 7: Socket Security [██████████] Complete (3/3)
Phase 8: Inline Keyboard Infra [██████████] Complete (3/3) Phase 8: Inline Keyboard Infra [██████████] Complete (3/3)
Phase 9: Batch Operations [ ] Pending Phase 9: Batch Operations [███ ] In Progress (1/3)
Phase 10: Polish & Audit [ ] Pending Phase 10: Polish & Audit [ ] Pending
Phase 11: Documentation Overhaul [ ] Pending Phase 11: Documentation Overhaul [ ] Pending
``` ```
@@ -55,12 +55,16 @@ Phase 11: Documentation Overhaul [ ] Pending
| Timestamp in logs header | Prevents Telegram "message not modified" error on refresh | 08-03 | | Timestamp in logs header | Prevents Telegram "message not modified" error on refresh | 08-03 |
| Image cleanup after callback updates | Matches v1.0 text flow behavior; removes old images | 08-03 | | Image cleanup after callback updates | Matches v1.0 text flow behavior; removes old images | 08-03 |
| Both text and button commands supported | Text commands still work alongside inline keyboard | 08-03 | | Both text and button commands supported | Text commands still work alongside inline keyboard | 08-03 |
| Exact match has absolute priority | User typing exact name expects that container, not similar ones | 09-01 |
| Batch stop requires confirmation | Context specifies fuzzy matching risk for stop operations | 09-01 |
| Comma-separated names in callback | Fits within 64-byte callback_data limit for typical batch sizes | 09-01 |
### Todos ### Todos
- [x] Plan Phase 6 (n8n API Access) - Complete - [x] Plan Phase 6 (n8n API Access) - Complete
- [x] Execute Phase 7 (Socket Security) - Complete - [x] Execute Phase 7 (Socket Security) - Complete
- [x] Execute Phase 8 (Inline Keyboard Infrastructure) - Complete - [x] Execute Phase 8 (Inline Keyboard Infrastructure) - Complete
- [ ] Execute Phase 9 (Batch Operations) - In Progress
### Roadmap Evolution ### Roadmap Evolution
@@ -74,9 +78,9 @@ Phase 11: Documentation Overhaul [ ] Pending
## Session Continuity ## Session Continuity
- **Last session:** 2026-02-04 - **Last session:** 2026-02-04
- **Stopped at:** Phase 8 complete - all verification passed, bugs fixed - **Stopped at:** Completed 09-01-PLAN.md
- **Resume file:** None - **Resume file:** None
- **Next step:** Plan and execute Phase 9 (Batch Operations) - **Next step:** Execute 09-02-PLAN.md (batch execution and progress display)
--- ---
*Auto-maintained by GSD workflow* *Auto-maintained by GSD workflow*
@@ -0,0 +1,116 @@
# Phase 9 Plan 01: Batch Command Parsing Summary
**Completed:** 2026-02-04
**Duration:** ~9 minutes
## One-liner
Batch command detection with exact-match-priority container matching and batch stop confirmation flow.
## What Was Built
### Batch Command Detection
- Added "Detect Batch Command" code node that parses multi-container commands
- Pattern: `{action} {name1} {name2} ...` where action is update/start/stop/restart
- Single container (1 name) routes to existing single-container flow
- Multiple containers (2+ names) routes to new batch processing flow
- "Is Batch Command" IF node for routing decision
### Container Matching with Exact-Match Priority
- Added "Match Batch Containers" code node with sophisticated matching algorithm:
1. **Exact match first**: 'plex' matches 'plex' even when 'jellyplex' exists
2. **Single fuzzy match**: Treated as found (no disambiguation needed)
3. **Multiple fuzzy matches**: Triggers disambiguation with keyboard options
4. **No matches**: Reported as not found with option to proceed with found containers
- "Needs Disambiguation" IF node routes to disambiguation or execution path
### Disambiguation Flow
- "Build Disambiguation Message" code node creates inline keyboard with options
- Each ambiguous input shows matching container names as buttons
- User can select exact container to resolve ambiguity
- Callback format: `bselect:{action}:{containerName}`
### Not Found Handling
- "Build Not Found Message" code node reports missing containers
- If some containers matched, offers to proceed with found containers
- Callback format for proceed: `bexec:{action}:{names}:{timestamp}`
### Batch Stop Confirmation
- "Route Batch Action" switch routes by action type
- Batch stop requires confirmation (per context: fuzzy matching risk)
- "Build Batch Stop Confirmation" shows container list with Confirm/Cancel
- Callback format: `bstop:confirm:{names}:{timestamp}` or `bstop:cancel`
- 30-second timeout validation on confirmation
- Other batch actions (update/start/restart) proceed immediately
### Callback Handling
- Updated "Parse Callback Data" to handle new prefixes: bstop:, bexec:, bselect:
- Added Route Callback outputs for batch operations
- Added callback handler nodes with proper answer/delete flows
## Key Decisions Made
| Decision | Rationale |
|----------|-----------|
| Detect batch after Keyword Router | Minimal change to existing flow, single interception point for all action types |
| Route single action via switch | Clean separation between action types for future extension |
| Exact match has absolute priority | User typing exact name expects that container, not similar ones |
| Single fuzzy match treated as found | Reduces unnecessary confirmation for clear intent |
| Batch stop requires confirmation | Context specifies fuzzy matching risk for stop operations |
| 30-second timeout on confirmations | Consistent with existing single-container confirmation behavior |
| Comma-separated names in callback | Fits within 64-byte callback_data limit for typical batch sizes |
## Technical Details
### New Nodes Added (14 total)
1. Detect Batch Command (code)
2. Is Batch Command (if)
3. Route Single Action (switch)
4. Get Containers for Batch (executeCommand)
5. Match Batch Containers (code)
6. Needs Disambiguation (if)
7. Build Disambiguation Message (code)
8. Send Disambiguation (httpRequest)
9. Has Not Found (if)
10. Build Not Found Message (code)
11. Send Not Found Message (httpRequest)
12. Route Batch Action (switch)
13. Build Batch Stop Confirmation (code)
14. Send Batch Stop Confirmation (httpRequest)
### Callback Handler Nodes (5 total)
1. Answer Batch Stop Confirm
2. Answer Batch Stop Cancel
3. Answer Batch Exec
4. Check Batch Stop Expired
5. Build/Send Batch Stop Expired
### Callback Data Formats
- `bstop:confirm:{comma-names}:{timestamp}` - Batch stop confirmation
- `bstop:cancel` - Batch stop cancellation
- `bexec:{action}:{comma-names}:{timestamp}` - Batch execution
- `bselect:{action}:{containerName}` - Disambiguation selection
## Commits
| Commit | Description |
|--------|-------------|
| 9e7ff2a | Add batch command detection and parsing |
| f02f984 | Add container matching with exact-match priority |
| feea06c | Wire batch routing and add batch stop confirmation |
## Next Phase Readiness
**Ready for Plan 02:** Batch execution and progress display.
The following are now available for Plan 02:
- Parsed batch data structure: `{ action, containerNames, allMatched, chatId, ... }`
- Route Batch Action outputs for update/start/restart ready to connect to execution
- Callback formats defined for batch confirmation and execution
- Container matching resolves names to container objects with Id, Name, State
**Note:** Route Batch Action has empty outputs for update/start/restart - Plan 02 will connect these to batch execution flow.
## Deviations from Plan
None - plan executed exactly as written.