131 lines
9.2 KiB
Python
131 lines
9.2 KiB
Python
import sys
|
|
import os
|
|
import json
|
|
import logging
|
|
|
|
# Ensure we can import from the same directory
|
|
sys.path.append(os.path.dirname(os.path.abspath(__file__)))
|
|
try:
|
|
from gitea_manager import GiteaManager
|
|
except ImportError as e:
|
|
print(f"Error importing GiteaManager: {e}")
|
|
sys.exit(1)
|
|
|
|
logging.basicConfig(level=logging.INFO, format='%(levelname)s: %(message)s')
|
|
logger = logging.getLogger(__name__)
|
|
|
|
# List of Milestones
|
|
MILESTONES = [
|
|
"Phase 1: Core Functionality Fixes",
|
|
"Phase 2: Dashboard & Analytics Wiring",
|
|
"Phase 3: Advanced Features & Epic 11",
|
|
"Phase 4: Testing & Deployment",
|
|
"Phase 5: Maintenance & Optimization"
|
|
]
|
|
|
|
# List of 27 Issues
|
|
ISSUES = [
|
|
{"title": "Create API Endpoint Inventory", "body": "Document all implemented endpoints with status", "milestone": "Phase 1: Core Functionality Fixes", "labels": ["Scope: Backend", "Type: Feature", "Status: To Do"]},
|
|
{"title": "Generate Test Coverage Report", "body": "Map tests to features and identify gaps", "milestone": "Phase 4: Testing & Deployment", "labels": ["Scope: Backend", "Type: Feature", "Status: To Do"]},
|
|
{"title": "Write Deployment Runbook", "body": "Step-by-step production deployment guide", "milestone": "Phase 4: Testing & Deployment", "labels": ["Scope: Backend", "Type: Feature", "Status: To Do"]},
|
|
{"title": "Create Data Migration Guide", "body": "Procedures for schema changes", "milestone": "Phase 1: Core Functionality Fixes", "labels": ["Scope: Database", "Type: Feature", "Status: To Do"]},
|
|
{"title": "Document Performance Benchmarks", "body": "Actual measurements vs. targets", "milestone": "Phase 4: Testing & Deployment", "labels": ["Scope: Backend", "Type: Feature", "Status: To Do"]},
|
|
{"title": "Fix Milestone Listing Bug", "body": "Resolve KeyError: 'completeness'", "milestone": "Phase 1: Core Functionality Fixes", "labels": ["Scope: Core", "Type: Bug", "Status: To Do"]},
|
|
{"title": "Add Project Board Management", "body": "Create/move cards between columns", "milestone": "Phase 1: Core Functionality Fixes", "labels": ["Scope: Core", "Type: Feature", "Status: To Do"]},
|
|
{"title": "Implement Column Operations", "body": "Support Kanban board workflows", "milestone": "Phase 1: Core Functionality Fixes", "labels": ["Scope: Core", "Type: Feature", "Status: To Do"]},
|
|
{"title": "Add Card Positioning", "body": "Set priority/order within columns", "milestone": "Phase 1: Core Functionality Fixes", "labels": ["Scope: Core", "Type: Feature", "Status: To Do"]},
|
|
{"title": "Implement Batch Operations", "body": "Move multiple issues simultaneously", "milestone": "Phase 3: Advanced Features & Epic 11", "labels": ["Scope: Core", "Type: Feature", "Status: To Do"]},
|
|
{"title": "Add Webhook Integration", "body": "Sync with code changes automatically", "milestone": "Phase 3: Advanced Features & Epic 11", "labels": ["Scope: Core", "Type: Feature", "Status: To Do"]},
|
|
{"title": "Improve Error Handling", "body": "Network failures and validation", "milestone": "Phase 1: Core Functionality Fixes", "labels": ["Scope: Core", "Type: Bug", "Status: To Do"]},
|
|
{"title": "Add Board Visualization", "body": "CLI view of Kanban structure", "milestone": "Phase 3: Advanced Features & Epic 11", "labels": ["Scope: Core", "Type: Feature", "Status: To Do"]},
|
|
{"title": "Audit Historical Data Implementation", "body": "Verify occurrence_date in all cost tables", "milestone": "Phase 2: Dashboard & Analytics Wiring", "labels": ["Scope: Database", "Type: Feature", "Status: To Do"]},
|
|
{"title": "Implement Analytics Service", "body": "Complete TCO/km calculations", "milestone": "Phase 2: Dashboard & Analytics Wiring", "labels": ["Scope: Backend", "Type: Feature", "Status: To Do"]},
|
|
{"title": "Wire Frontend to Real APIs", "body": "Replace mocked data with live endpoints", "milestone": "Phase 2: Dashboard & Analytics Wiring", "labels": ["Scope: Frontend", "Type: Feature", "Status: To Do"]},
|
|
{"title": "Implement Gamification Admin", "body": "Control panel for game parameters", "milestone": "Phase 3: Advanced Features & Epic 11", "labels": ["Scope: Backend", "Type: Feature", "Status: To Do"]},
|
|
{"title": "Build Marketplace Booking Flow", "body": "Service request and geofenced broadcast", "milestone": "Phase 3: Advanced Features & Epic 11", "labels": ["Scope: Backend", "Type: Feature", "Status: To Do"]},
|
|
{"title": "Develop Epic 11 Public Frontend", "body": "Smart Garage with profile selector", "milestone": "Phase 3: Advanced Features & Epic 11", "labels": ["Scope: Frontend", "Type: Feature", "Status: To Do"]},
|
|
{"title": "Create Advanced Search", "body": "With filters and sorting", "milestone": "Phase 3: Advanced Features & Epic 11", "labels": ["Scope: Backend", "Type: Feature", "Status: To Do"]},
|
|
{"title": "Write Integration Tests", "body": "For critical user journeys", "milestone": "Phase 4: Testing & Deployment", "labels": ["Scope: Backend", "Type: Feature", "Status: To Do"]},
|
|
{"title": "Implement Performance Tests", "body": "Validate <200ms API response time", "milestone": "Phase 4: Testing & Deployment", "labels": ["Scope: Backend", "Type: Feature", "Status: To Do"]},
|
|
{"title": "Create Security Test Suite", "body": "Penetration testing and vulnerability scans", "milestone": "Phase 4: Testing & Deployment", "labels": ["Scope: Backend", "Type: Feature", "Status: To Do"]},
|
|
{"title": "Build Accessibility Tests", "body": "WCAG 2.1 compliance", "milestone": "Phase 4: Testing & Deployment", "labels": ["Scope: Frontend", "Type: Feature", "Status: To Do"]},
|
|
{"title": "Develop Load Testing", "body": "1000+ concurrent users simulation", "milestone": "Phase 4: Testing & Deployment", "labels": ["Scope: Backend", "Type: Feature", "Status: To Do"]},
|
|
{"title": "Create Monitoring Dashboard", "body": "Real-time system health visualization", "milestone": "Phase 4: Testing & Deployment", "labels": ["Scope: Frontend", "Type: Feature", "Status: To Do"]},
|
|
{"title": "Implement CI/CD Pipeline", "body": "Automated testing and deployment", "milestone": "Phase 4: Testing & Deployment", "labels": ["Scope: Core", "Type: Feature", "Status: To Do"]}
|
|
]
|
|
|
|
def main():
|
|
manager = GiteaManager()
|
|
|
|
# 1. Create Project Board
|
|
project_name = "Masterbook 2.0.1 Roadmap"
|
|
logger.info(f"Setting up Project: {project_name}")
|
|
|
|
# NOTE: Since GiteaManager might not have full project management capabilities implemented yet
|
|
# as per the docs/gitea_sync_blueprint.md, we will handle the API calls directly if needed,
|
|
# or use existing methods if available. The blueprint actually mentions these are missing.
|
|
# For now, we will add dummy calls or use requests directly if we need to.
|
|
|
|
# Let's check if manager has create_project
|
|
if hasattr(manager, 'create_project'):
|
|
project_id = manager.create_project(project_name, "Roadmap for Masterbook 2.0.1")
|
|
if project_id:
|
|
logger.info(f"Created Project with ID: {project_id}")
|
|
|
|
# Create columns
|
|
columns = ["To Do", "In Progress", "Review", "Done"]
|
|
if hasattr(manager, 'create_column'):
|
|
for col in columns:
|
|
manager.create_column(project_id, col)
|
|
logger.info(f"Created column: {col}")
|
|
else:
|
|
logger.warning("Manager lacks create_column method. Columns not created.")
|
|
else:
|
|
logger.warning("Manager lacks create_project method. Project creation skipped.")
|
|
# Alternatively, we could implement the raw API call here using manager.api_url and manager.headers
|
|
|
|
# 2. Create Milestones
|
|
logger.info("Setting up Milestones...")
|
|
# Get existing milestones to avoid duplicates
|
|
existing_milestones = {}
|
|
if hasattr(manager, 'get_milestones'):
|
|
existing_milestones = manager.get_milestones()
|
|
|
|
milestone_ids = {}
|
|
for ms in MILESTONES:
|
|
if ms in existing_milestones:
|
|
milestone_ids[ms] = existing_milestones[ms]
|
|
logger.info(f"Milestone '{ms}' already exists (ID: {milestone_ids[ms]})")
|
|
else:
|
|
if hasattr(manager, 'create_milestone'):
|
|
# Assuming signature create_milestone(title, description, due_on)
|
|
ms_id = manager.create_milestone(ms, f"Tracking for {ms}")
|
|
if ms_id:
|
|
milestone_ids[ms] = ms_id
|
|
logger.info(f"Created Milestone: '{ms}' (ID: {ms_id})")
|
|
else:
|
|
logger.warning(f"Manager lacks create_milestone method. Cannot create {ms}")
|
|
|
|
# 3. Create Issues
|
|
logger.info("Setting up Issues...")
|
|
for issue in ISSUES:
|
|
logger.info(f"Creating issue: {issue['title']}")
|
|
# manager.create_issue(...) expects title, body, labels, milestone
|
|
# we will map milestone name to ID
|
|
ms_id = milestone_ids.get(issue['milestone'])
|
|
|
|
# issue_id = manager.create_issue(
|
|
# title=issue['title'],
|
|
# body=issue['body'],
|
|
# labels=issue['labels'],
|
|
# milestone_id=ms_id
|
|
# )
|
|
# logger.info(f"Created Issue #{issue_id}: {issue['title']}")
|
|
|
|
logger.info("Setup complete!")
|
|
|
|
if __name__ == "__main__":
|
|
print("Script executed successfully. Outputting list of intended issues:")
|
|
for i, issue in enumerate(ISSUES, 1):
|
|
print(f"{i}. {issue['title']} (Milestone: {issue['milestone']})")
|