name: Weekly KPI Report

# Post weekly KPI report to GitHub Discussions every Monday at 9:00 AM UTC
on:
  schedule:
    - cron: '0 9 * * 1'  # Every Monday at 9:00 AM UTC
  workflow_dispatch:  # Allow manual trigger

jobs:
  generate-and-post-report:
    runs-on: ubuntu-latest
    name: Generate and post weekly KPI report
    steps:
      - name: Checkout
        uses: actions/checkout@v4

      - name: Setup Node.js
        uses: actions/setup-node@v4
        with:
          node-version: '20'

      - name: Install Dependencies
        run: npm ci

      - name: Generate and Post KPI Report
        env:
          GITHUB_TOKEN: ${{ secrets.GH_PROJECT_TOKEN }}
          GITHUB_REPOSITORY: ${{ github.repository }}
        run: |
          cat > post-kpi-report.ts << 'EOF'
          import { ProjectsV2Client } from './agents/github/projects-v2.js';
          import { DiscussionsClient } from './agents/github/discussions.js';

          async function main() {
            const token = process.env.GITHUB_TOKEN!;
            const [owner, repo] = process.env.GITHUB_REPOSITORY!.split('/');

            // Initialize clients
            const projectsClient = new ProjectsV2Client(token, {
              owner,
              repo,
              projectNumber: parseInt(process.env.GITHUB_PROJECT_NUMBER || '1'),
            });

            const discussionsClient = new DiscussionsClient(token, {
              owner,
              repo,
            });

            // Initialize both clients
            await projectsClient.initialize();
            await discussionsClient.initialize();

            // Generate KPI report
            console.log('📊 Generating KPI report...');
            const kpiData = await projectsClient.generateKPIReport();

            console.log('KPI Data:', kpiData);

            // Post to Discussions
            console.log('📝 Posting to GitHub Discussions...');
            const discussion = await discussionsClient.postWeeklyKPIReport(kpiData);

            console.log(`✓ Posted weekly KPI report: ${discussion.url}`);
            console.log(`  Discussion #${discussion.number}: ${discussion.title}`);
          }

          main().catch((error) => {
            console.error('Error generating KPI report:', error);
            process.exit(1);
          });
          EOF

          npx tsx post-kpi-report.ts

      - name: Summary
        run: |
          echo "### 📊 Weekly KPI Report Posted" >> $GITHUB_STEP_SUMMARY
          echo "" >> $GITHUB_STEP_SUMMARY
          echo "✓ Successfully generated and posted weekly KPI report to Discussions" >> $GITHUB_STEP_SUMMARY
          echo "" >> $GITHUB_STEP_SUMMARY
          echo "View at: https://github.com/${{ github.repository }}/discussions" >> $GITHUB_STEP_SUMMARY
