feat: add Nextcloud Deck roadmap sync system
- Create discover-deck-ids.sh to find board/stack configuration - Implement sync-roadmap-to-deck.py for roadmap → Deck sync - Parse OPTIMIZATION_MASTER_ROADMAP.md and extract initiatives - Map roadmap status to Deck stacks (eingang/planung/arbeit/erledigt) - Create cards with titles, descriptions, due dates, progress - Support dry-run mode for testing before actual sync - Add comprehensive documentation in NEXTCLOUD_DECK_SYNC.md **Benefits:** - Visual kanban board for roadmap management - Drag & drop to prioritize tasks - Single source of truth (markdown files) - Easy task tracking and status updates - No manual duplication between systems **Initial Sync:** - Created 1 card: Initiative 1 (Signal Quality Optimization) - Placed in 'eingang' (FUTURE status) **Future Work:** - Bidirectional sync (Deck → Roadmap) - Phase-level cards parsing - Manual card creation → roadmap entry - Automated cron sync
This commit is contained in:
70
scripts/discover-deck-ids.sh
Executable file
70
scripts/discover-deck-ids.sh
Executable file
@@ -0,0 +1,70 @@
|
||||
#!/bin/bash
|
||||
# Discover Nextcloud Deck Board and Stack IDs
|
||||
# Usage: ./discover-deck-ids.sh
|
||||
|
||||
set -e
|
||||
|
||||
NEXTCLOUD_URL="${NEXTCLOUD_URL:-http://10.0.0.48:8089}"
|
||||
NEXTCLOUD_USER="${NEXTCLOUD_USER:-robert.wiegand}"
|
||||
NEXTCLOUD_PASSWORD="${NEXTCLOUD_PASSWORD:-November1985**}"
|
||||
|
||||
echo "🔍 Discovering Nextcloud Deck configuration..."
|
||||
echo ""
|
||||
|
||||
# Get all boards
|
||||
echo "📋 Available Boards:"
|
||||
BOARDS=$(curl -sS -X GET "${NEXTCLOUD_URL}/index.php/apps/deck/api/v1.0/boards" \
|
||||
-u "${NEXTCLOUD_USER}:${NEXTCLOUD_PASSWORD}" \
|
||||
-H 'OCS-APIRequest: true' \
|
||||
-k)
|
||||
|
||||
echo "$BOARDS" | jq -r '.[] | " ID: \(.id) - Title: \(.title)"'
|
||||
echo ""
|
||||
|
||||
# Find trader board
|
||||
TRADER_BOARD_ID=$(echo "$BOARDS" | jq -r '.[] | select(.title | test("trader"; "i")) | .id' | head -1)
|
||||
|
||||
if [ -z "$TRADER_BOARD_ID" ]; then
|
||||
echo "❌ No board with 'trader' in title found!"
|
||||
echo "Please create a board called 'trader' in Nextcloud Deck first."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "✅ Found 'trader' board with ID: $TRADER_BOARD_ID"
|
||||
echo ""
|
||||
|
||||
# Get stacks for trader board
|
||||
echo "📚 Stacks in 'trader' board:"
|
||||
STACKS=$(curl -sS -X GET "${NEXTCLOUD_URL}/index.php/apps/deck/api/v1.0/boards/${TRADER_BOARD_ID}/stacks" \
|
||||
-u "${NEXTCLOUD_USER}:${NEXTCLOUD_PASSWORD}" \
|
||||
-H 'OCS-APIRequest: true' \
|
||||
-k)
|
||||
|
||||
echo "$STACKS" | jq -r '.[] | " ID: \(.id) - Title: \(.title) - Order: \(.order)"'
|
||||
echo ""
|
||||
|
||||
# Create config snippet
|
||||
echo "📝 Configuration for sync-roadmap-to-deck.py:"
|
||||
echo ""
|
||||
echo "nextcloud:"
|
||||
echo " url: \"${NEXTCLOUD_URL}\""
|
||||
echo " user: \"${NEXTCLOUD_USER}\""
|
||||
echo " board_id: ${TRADER_BOARD_ID}"
|
||||
echo " stacks:"
|
||||
echo "$STACKS" | jq -r '.[] | " \(.title | ascii_downcase | gsub(" "; "_")): \(.id) # \(.title)"'
|
||||
echo ""
|
||||
|
||||
# Save to temp file for script to use
|
||||
cat > /tmp/deck-config.json <<EOF
|
||||
{
|
||||
"url": "${NEXTCLOUD_URL}",
|
||||
"user": "${NEXTCLOUD_USER}",
|
||||
"password": "${NEXTCLOUD_PASSWORD}",
|
||||
"board_id": ${TRADER_BOARD_ID},
|
||||
"stacks": $(echo "$STACKS" | jq '[.[] | {name: .title, id: .id, order: .order}]')
|
||||
}
|
||||
EOF
|
||||
|
||||
echo "✅ Configuration saved to /tmp/deck-config.json"
|
||||
echo ""
|
||||
echo "Run: python3 scripts/sync-roadmap-to-deck.py --init"
|
||||
Reference in New Issue
Block a user