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:
+13
-9
@@ -5,25 +5,25 @@
|
||||
See: .planning/PROJECT.md (updated 2026-02-02)
|
||||
|
||||
**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
|
||||
|
||||
- **Milestone:** v1.1 — n8n Integration & Polish
|
||||
- **Phase:** 8 of 11 (Inline Keyboard Infrastructure)
|
||||
- **Plan:** 3 of 3
|
||||
- **Status:** Phase complete and verified
|
||||
- **Last activity:** 2026-02-04 — Completed 08-03 verification, fixed deployment bugs
|
||||
- **Phase:** 9 of 11 (Batch Operations)
|
||||
- **Plan:** 1 of 3 complete
|
||||
- **Status:** In progress
|
||||
- **Last activity:** 2026-02-04 — Completed 09-01-PLAN.md (batch command parsing)
|
||||
|
||||
## Progress
|
||||
|
||||
```
|
||||
v1.1: [███████ ] 60%
|
||||
v1.1: [████████ ] 67%
|
||||
|
||||
Phase 6: n8n API Access [██████████] Complete
|
||||
Phase 7: Socket Security [██████████] 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 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 |
|
||||
| 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 |
|
||||
| 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
|
||||
|
||||
- [x] Plan Phase 6 (n8n API Access) - Complete
|
||||
- [x] Execute Phase 7 (Socket Security) - Complete
|
||||
- [x] Execute Phase 8 (Inline Keyboard Infrastructure) - Complete
|
||||
- [ ] Execute Phase 9 (Batch Operations) - In Progress
|
||||
|
||||
### Roadmap Evolution
|
||||
|
||||
@@ -74,9 +78,9 @@ Phase 11: Documentation Overhaul [ ] Pending
|
||||
## Session Continuity
|
||||
|
||||
- **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
|
||||
- **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*
|
||||
|
||||
@@ -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.
|
||||
Reference in New Issue
Block a user