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)
|
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.
|
||||||
Reference in New Issue
Block a user