diff --git a/.github/workflows/quality-metrics.yml b/.github/workflows/quality-metrics.yml deleted file mode 100644 index aec92c802..000000000 --- a/.github/workflows/quality-metrics.yml +++ /dev/null @@ -1,567 +0,0 @@ -name: Comprehensive Quality Metrics - -on: - pull_request: - branches: [ main, master, develop ] - push: - branches: [ main, master ] - workflow_dispatch: - -concurrency: - group: quality-${{ github.ref }} - cancel-in-progress: true - -jobs: - # ============================================================================ - # CODE QUALITY METRICS - # ============================================================================ - code-quality: - name: Code Quality Analysis - runs-on: ubuntu-latest - defaults: - run: - working-directory: frontends/nextjs - steps: - - name: Checkout code - uses: actions/checkout@v4 - with: - fetch-depth: 0 - - - name: Setup Node.js - uses: actions/setup-node@v4 - with: - node-version: '20' - cache: 'npm' - cache-dependency-path: frontends/nextjs/package-lock.json - - - name: Install dependencies - run: npm ci - - - name: Generate Prisma Client - run: npm run db:generate - env: - DATABASE_URL: file:./dev.db - - # Cyclomatic Complexity - - name: Check code complexity - id: complexity - run: | - npm install -D ts-morph @swc/core - npx tsx scripts/check-code-complexity.ts > complexity-report.json - cat complexity-report.json - continue-on-error: true - - # Function metrics - - name: Analyze function metrics - id: metrics - run: npx tsx scripts/analyze-function-metrics.ts > function-metrics.json - continue-on-error: true - - # Maintainability Index - - name: Calculate maintainability index - id: maintainability - run: npx tsx scripts/check-maintainability.ts > maintainability-report.json - continue-on-error: true - - - name: Upload quality reports - uses: actions/upload-artifact@v4 - if: always() - with: - name: code-quality-reports - path: | - complexity-report.json - function-metrics.json - maintainability-report.json - retention-days: 30 - - # ============================================================================ - # TEST COVERAGE METRICS - # ============================================================================ - coverage-metrics: - name: Test Coverage Analysis - runs-on: ubuntu-latest - defaults: - run: - working-directory: frontends/nextjs - steps: - - name: Checkout code - uses: actions/checkout@v4 - - - name: Setup Node.js - uses: actions/setup-node@v4 - with: - node-version: '20' - cache: 'npm' - cache-dependency-path: frontends/nextjs/package-lock.json - - - name: Install dependencies - run: npm ci - - - name: Generate Prisma Client - run: npm run db:generate - env: - DATABASE_URL: file:./dev.db - - - name: Run tests with coverage - run: npm run test:unit:coverage - env: - DATABASE_URL: file:./dev.db - continue-on-error: true - - - name: Generate coverage report - run: npm run test:coverage:report - continue-on-error: true - - - name: Check function test coverage - id: function-coverage - run: npm run test:check-functions > function-coverage.txt 2>&1 - continue-on-error: true - - - name: Extract coverage metrics - id: coverage-extract - run: npx tsx scripts/extract-coverage-metrics.ts - continue-on-error: true - - - name: Upload coverage artifacts - uses: actions/upload-artifact@v4 - if: always() - with: - name: coverage-reports - path: | - coverage/ - FUNCTION_TEST_COVERAGE.md - function-coverage.txt - coverage-metrics.json - retention-days: 30 - - # ============================================================================ - # SECURITY SCANNING - # ============================================================================ - security-scan: - name: Security Vulnerability Scan - runs-on: ubuntu-latest - permissions: - contents: read - security-events: write - steps: - - name: Checkout code - uses: actions/checkout@v4 - - - name: Setup Node.js - uses: actions/setup-node@v4 - with: - node-version: '20' - cache: 'npm' - - - name: Install dependencies - run: npm ci - - # Npm audit for dependencies - - name: NPM Security Audit - id: npm-audit - run: | - npm audit --json > npm-audit.json || true - npx tsx scripts/parse-npm-audit.ts - continue-on-error: true - - # Check for security anti-patterns - - name: Scan for security issues - id: security-scan - run: npx tsx scripts/security-scanner.ts > security-report.json - continue-on-error: true - - # OWASP Dependency Check (if configured) - - name: Run dependency check - uses: dependency-check/Dependency-Check_Action@main - with: - path: '.' - format: 'JSON' - args: > - --scan . - --exclude node_modules - --exclude build - --exclude .git - --exclude dbal/cpp/build - continue-on-error: true - - - name: Upload security reports - uses: actions/upload-artifact@v4 - if: always() - with: - name: security-reports - path: | - npm-audit.json - security-report.json - dependency-check-report.json - retention-days: 30 - - # ============================================================================ - # DOCUMENTATION QUALITY - # ============================================================================ - documentation-quality: - name: Documentation Coverage & Quality - runs-on: ubuntu-latest - steps: - - name: Checkout code - uses: actions/checkout@v4 - with: - fetch-depth: 0 - - - name: Setup Node.js - uses: actions/setup-node@v4 - with: - node-version: '20' - cache: 'npm' - - - name: Install dependencies - run: npm ci - - - name: Check JSDoc coverage - id: jsdoc - run: npx tsx scripts/check-jsdoc-coverage.ts > jsdoc-report.json - continue-on-error: true - - - name: Validate README files - id: readme - run: npx tsx scripts/validate-readme-quality.ts > readme-report.json - continue-on-error: true - - - name: Validate markdown links - id: markdown-links - run: npx tsx scripts/validate-markdown-links.ts > markdown-links-report.json - continue-on-error: true - - - name: Check API documentation - id: api-docs - run: npx tsx scripts/validate-api-docs.ts > api-docs-report.json - continue-on-error: true - - - name: Verify code examples - id: code-examples - run: npx tsx scripts/validate-code-examples.ts > code-examples-report.json - continue-on-error: true - - - name: Upload documentation reports - uses: actions/upload-artifact@v4 - if: always() - with: - name: documentation-reports - path: | - jsdoc-report.json - readme-report.json - markdown-links-report.json - api-docs-report.json - code-examples-report.json - retention-days: 30 - - # ============================================================================ - # PERFORMANCE METRICS - # ============================================================================ - performance-metrics: - name: Performance Analysis - runs-on: ubuntu-latest - steps: - - name: Checkout code - uses: actions/checkout@v4 - - - name: Setup Node.js - uses: actions/setup-node@v4 - with: - node-version: '20' - cache: 'npm' - - - name: Install dependencies - run: npm ci - - - name: Generate Prisma Client - run: npm run db:generate - env: - DATABASE_URL: file:./dev.db - - - name: Build application - run: npm run build - env: - DATABASE_URL: file:./dev.db - - - name: Analyze bundle size - id: bundle - run: npx tsx scripts/analyze-bundle-size.ts > bundle-analysis.json - continue-on-error: true - - - name: Check performance budget - id: perf-budget - run: npx tsx scripts/check-performance-budget.ts > performance-budget.json - continue-on-error: true - - - name: Lighthouse audit - id: lighthouse - run: npx tsx scripts/run-lighthouse-audit.ts > lighthouse-report.json - continue-on-error: true - - - name: Analyze render performance - id: render-perf - run: npx tsx scripts/analyze-render-performance.ts > render-performance.json - continue-on-error: true - - - name: Upload performance reports - uses: actions/upload-artifact@v4 - if: always() - with: - name: performance-reports - path: | - bundle-analysis.json - performance-budget.json - lighthouse-report.json - render-performance.json - retention-days: 30 - - # ============================================================================ - # SIZE & STRUCTURE METRICS - # ============================================================================ - size-metrics: - name: File Size & Architecture Analysis - runs-on: ubuntu-latest - steps: - - name: Checkout code - uses: actions/checkout@v4 - with: - fetch-depth: 0 - - - name: Setup Node.js - uses: actions/setup-node@v4 - with: - node-version: '20' - cache: 'npm' - - - name: Install dependencies - run: npm ci - - - name: Check source file sizes - id: file-sizes - run: npx tsx scripts/check-file-sizes.ts > file-sizes-report.json - continue-on-error: true - - - name: Analyze directory structure - id: dir-structure - run: npx tsx scripts/analyze-directory-structure.ts > directory-structure.json - continue-on-error: true - - - name: Check for code duplication - id: duplication - run: npx tsx scripts/detect-code-duplication.ts > duplication-report.json - continue-on-error: true - - - name: Analyze import chains - id: imports - run: npx tsx scripts/analyze-import-chains.ts > import-analysis.json - continue-on-error: true - - - name: Upload size reports - uses: actions/upload-artifact@v4 - if: always() - with: - name: size-reports - path: | - file-sizes-report.json - directory-structure.json - duplication-report.json - import-analysis.json - retention-days: 30 - - # ============================================================================ - # DEPENDENCY ANALYSIS - # ============================================================================ - dependency-analysis: - name: Dependency Health Check - runs-on: ubuntu-latest - steps: - - name: Checkout code - uses: actions/checkout@v4 - - - name: Setup Node.js - uses: actions/setup-node@v4 - with: - node-version: '20' - cache: 'npm' - - - name: Install dependencies - run: npm ci - - - name: Check outdated dependencies - id: outdated - run: npm outdated --json > outdated-deps.json || true - continue-on-error: true - - - name: License compliance check - id: licenses - run: npx tsx scripts/check-license-compliance.ts > license-report.json - continue-on-error: true - - - name: Analyze dependency tree - id: tree - run: npx tsx scripts/analyze-dependency-tree.ts > dependency-tree.json - continue-on-error: true - - - name: Check for circular dependencies - id: circular - run: npx tsx scripts/detect-circular-dependencies.ts > circular-deps.json - continue-on-error: true - - - name: Upload dependency reports - uses: actions/upload-artifact@v4 - if: always() - with: - name: dependency-reports - path: | - outdated-deps.json - license-report.json - dependency-tree.json - circular-deps.json - retention-days: 30 - - # ============================================================================ - # TYPE SAFETY & LINTING - # ============================================================================ - type-and-lint-metrics: - name: Type Safety & Code Style Metrics - runs-on: ubuntu-latest - steps: - - name: Checkout code - uses: actions/checkout@v4 - with: - fetch-depth: 0 - - - name: Setup Node.js - uses: actions/setup-node@v4 - with: - node-version: '20' - cache: 'npm' - - - name: Install dependencies - run: npm ci - - - name: Generate Prisma Client - run: npm run db:generate - env: - DATABASE_URL: file:./dev.db - - - name: TypeScript strict check - id: ts-strict - run: npx tsx scripts/check-typescript-strict.ts > ts-strict-report.json - continue-on-error: true - - - name: ESLint detailed report - id: eslint - run: | - npx eslint . --format json > eslint-report.json || true - npx tsx scripts/parse-eslint-report.ts - continue-on-error: true - - - name: Check for @ts-ignore usage - id: ts-ignore - run: npx tsx scripts/find-ts-ignores.ts > ts-ignore-report.json - continue-on-error: true - - - name: Check for any types - id: any-types - run: npx tsx scripts/find-any-types.ts > any-types-report.json - continue-on-error: true - - - name: Upload type reports - uses: actions/upload-artifact@v4 - if: always() - with: - name: type-reports - path: | - ts-strict-report.json - eslint-report.json - ts-ignore-report.json - any-types-report.json - retention-days: 30 - - # ============================================================================ - # QUALITY SUMMARY & REPORTING - # ============================================================================ - quality-summary: - name: Quality Metrics Summary - runs-on: ubuntu-latest - needs: [ - code-quality, - coverage-metrics, - security-scan, - documentation-quality, - performance-metrics, - size-metrics, - dependency-analysis, - type-and-lint-metrics - ] - if: always() - permissions: - checks: write - pull-requests: write - contents: read - steps: - - name: Checkout code - uses: actions/checkout@v4 - - - name: Setup Node.js - uses: actions/setup-node@v4 - with: - node-version: '20' - cache: 'npm' - - - name: Install dependencies - run: npm ci - - - name: Download all reports - uses: actions/download-artifact@v4 - with: - path: quality-reports/ - - - name: Generate quality summary - id: summary - run: npx tsx scripts/generate-quality-summary.ts > quality-summary.md - continue-on-error: true - - - name: Post summary as PR comment - if: github.event_name == 'pull_request' - uses: actions/github-script@v7 - with: - script: | - const fs = require('fs'); - const path = require('path'); - - let summaryContent = ''; - if (fs.existsSync('quality-summary.md')) { - summaryContent = fs.readFileSync('quality-summary.md', 'utf8'); - } - - const comment = `## 📊 Quality Metrics Report\n\n${summaryContent}\n\n
📁 Full Reports (click to expand)\n\nAll detailed reports are available as build artifacts.\n
`; - - github.rest.issues.createComment({ - issue_number: context.issue.number, - owner: context.repo.owner, - repo: context.repo.repo, - body: comment - }); - - - name: Create check run with summary - uses: actions/github-script@v7 - if: github.event_name == 'pull_request' - with: - script: | - const fs = require('fs'); - const summary = fs.existsSync('quality-summary.md') - ? fs.readFileSync('quality-summary.md', 'utf8') - : 'Quality metrics report generated.'; - - github.rest.checks.create({ - owner: context.repo.owner, - repo: context.repo.repo, - name: 'Quality Metrics', - head_sha: context.payload.pull_request.head.sha, - status: 'completed', - conclusion: 'success', - summary: 'All quality metrics collected', - text: summary - }); diff --git a/dbal/cpp/include/dbal/client.hpp b/dbal/cpp/include/dbal/client.hpp index 6624e5fee..06d716c53 100644 --- a/dbal/cpp/include/dbal/client.hpp +++ b/dbal/cpp/include/dbal/client.hpp @@ -4,7 +4,6 @@ #include #include #include "types.hpp" -#include "workflow.hpp" #include "errors.hpp" #include "adapters/adapter.hpp" @@ -47,12 +46,6 @@ public: Result deleteWorkflow(const std::string& id); Result> listWorkflows(const ListOptions& options); - Result createWorkflow(const CreateWorkflowInput& input); - Result getWorkflow(const std::string& id); - Result updateWorkflow(const std::string& id, const UpdateWorkflowInput& input); - Result deleteWorkflow(const std::string& id); - Result> listWorkflows(const ListOptions& options); - void close(); private: diff --git a/dbal/cpp/include/dbal/workflow.hpp b/dbal/cpp/include/dbal/workflow.hpp deleted file mode 100644 index bc4858a00..000000000 --- a/dbal/cpp/include/dbal/workflow.hpp +++ /dev/null @@ -1,45 +0,0 @@ -#ifndef DBAL_WORKFLOW_HPP -#define DBAL_WORKFLOW_HPP - -#include -#include -#include "types.hpp" - -namespace dbal { - -struct Workflow { - std::string id; - std::string name; - std::optional description; - std::string trigger; - Json trigger_config; - Json steps; - bool is_active; - std::string created_by; - Timestamp created_at; - Timestamp updated_at; -}; - -struct CreateWorkflowInput { - std::string name; - std::optional description; - std::string trigger; - Json trigger_config; - Json steps; - bool is_active = true; - std::string created_by; -}; - -struct UpdateWorkflowInput { - std::optional name; - std::optional description; - std::optional trigger; - std::optional trigger_config; - std::optional steps; - std::optional is_active; - std::optional created_by; -}; - -} - -#endif