635a130f0b
Build and Push Docker Images / detect-changes (push) Successful in 11s
Build and Push Docker Images / build-auth-api (push) Successful in 1m0s
Build and Push Docker Images / build-employee-api (push) Successful in 1m2s
Build and Push Docker Images / build-transit-api (push) Successful in 1m1s
Build and Push Docker Images / build-error-log-api (push) Successful in 1m5s
Build and Push Docker Images / build-admin-ui (push) Successful in 1m13s
Build and Push Docker Images / build-monitoring-ui (push) Successful in 1m15s
Build and Push Docker Images / deploy-test-node (push) Successful in 3s
### Summary of Changes
1. Documentation Consolidation:
• Relocated the docs/ folder and all repository .md files (README.md, DEPLOYMENT.md, DOCKER_README.md,
DOMAINS_README.md, GETTING_STARTED.md, CI_CD_PORTAINER_GUIDE.md, ADMIN_DEPLOYMENT_SUMMARY.md,
SECURITY_PRIVATE_FILES.md, handoff.md, azure-project-plan.md, plus service-specific READMEs) into .
• Updated document links in README.md.
2. AI Agent Project Map:
• Created PROJECT_MAP.md in the project root containing complete architecture diagrams, service specs, ports, DB
schemas, environment variables, and developer workflows.
• Added PROJECT_MAP.md to .gitignore.
3. Monitoring UI & Infrastructure Integration:
• Added monitoring_ui service to docker-compose.yml (port 5175).
• Configured Gitea workflow docker-build.yml for monitoring_ui builds.
• Added CORS middleware headers in index.js.
• Added nginx.conf copy step in Dockerfile.
──────
### Recommended Commit Message
docs: consolidate project documentation into monitoring_ui and add agent project map
- Move all markdown documentation files and docs/ folder into monitoring_ui/docs/
- Update documentation hub index (monitoring_ui/docs/README.md) with relative paths
- Generate comprehensive AI agent reference map (PROJECT_MAP.md) in repository root
- Add PROJECT_MAP.md and monitoring_ui build output/env overrides to .gitignore
- Integrate monitoring_ui service into docker-compose.yml and Gitea CI workflow
- Configure CORS handling in employee_api for monitoring dashboard access
──────
### Alternative Short Commit Message
refactor(docs): move docs to monitoring_ui and create AI agent PROJECT_MAP.md
152 lines
5.5 KiB
TypeScript
152 lines
5.5 KiB
TypeScript
/*---------------------------------------------------------------------------------------------
|
|
* Copyright (c) Microsoft Corporation. All rights reserved.
|
|
* Licensed under the MIT License. See LICENSE.md in the project root for license information.
|
|
*--------------------------------------------------------------------------------------------*/
|
|
|
|
/**
|
|
* Context + shared TypeScript interfaces for AppOnboard session artifacts:
|
|
* context.json, active-session.json, and shared types used across all phases.
|
|
*
|
|
* Per-phase schemas (each phase has its own in its references/ folder):
|
|
* - azure-app-onboard-prereq/references/prereq-schemas.ts — prereq-output.json
|
|
* - prepare/references/prepare-schemas.ts — prepare-plan.json
|
|
* - scaffold/references/scaffold-schemas.ts — scaffold-manifest.json
|
|
* - deploy/references/deploy-schemas.ts — deploy-result.json
|
|
*
|
|
* Source of truth for JSON artifacts in `.copilot-azure/sessions/{session-id}/`.
|
|
*/
|
|
|
|
// ─── shared types (used across all phases) ───────────────────────────────────
|
|
|
|
export interface AppOnboardComponentStack {
|
|
language: string;
|
|
framework: string;
|
|
version: string;
|
|
}
|
|
|
|
export type ReadinessStatus = "ready" | "fixesApplied" | "needsFixes" | "unknown";
|
|
|
|
export interface AppOnboardComponentReadiness {
|
|
status: ReadinessStatus;
|
|
fixes: string[];
|
|
}
|
|
|
|
export type VerdictLevel = "PASS" | "WARN" | "FAIL" | "SKIPPED";
|
|
|
|
export interface AppOnboardComponentVerdicts {
|
|
build: VerdictLevel;
|
|
completeness: Exclude<VerdictLevel, "SKIPPED">;
|
|
deployability: Exclude<VerdictLevel, "SKIPPED">;
|
|
}
|
|
|
|
export interface AppOnboardComponentFinding {
|
|
category: "build" | "completeness" | "deployability";
|
|
verdict: VerdictLevel;
|
|
summary: string;
|
|
fix: string | null;
|
|
}
|
|
|
|
export interface AppOnboardComponent {
|
|
name: string;
|
|
path: string;
|
|
stack: AppOnboardComponentStack;
|
|
readiness: AppOnboardComponentReadiness;
|
|
verdicts?: AppOnboardComponentVerdicts;
|
|
findings?: readonly AppOnboardComponentFinding[];
|
|
}
|
|
|
|
export interface AppOnboardAzureTarget {
|
|
subscriptionId: string;
|
|
/** Display name of the subscription (from `az account show --query name`).
|
|
* Shown at both approval gates so the user can verify the target. */
|
|
subscriptionName: string;
|
|
resourceGroup: string;
|
|
region: string;
|
|
}
|
|
|
|
export interface AppOnboardRepoInfo {
|
|
remote: string | null;
|
|
}
|
|
|
|
export interface AppOnboardOverride {
|
|
key: string;
|
|
value: string;
|
|
reason: string;
|
|
}
|
|
|
|
export interface AppOnboardAppInfo {
|
|
name: string;
|
|
}
|
|
|
|
export interface PostDeployRecommendation {
|
|
title: string;
|
|
reason: string;
|
|
effort: "low" | "medium" | "high";
|
|
services?: string[];
|
|
}
|
|
|
|
export interface DetectedService {
|
|
type: string;
|
|
version?: string;
|
|
source: "compose" | "config" | "code";
|
|
}
|
|
|
|
// ─── context.json ─────────────────────────────────────────────────────────────
|
|
|
|
export interface AppOnboardIntent {
|
|
userPrompt: string;
|
|
description: string;
|
|
users?: string;
|
|
auth?: string;
|
|
scale?: string;
|
|
budget?: string;
|
|
/** Set to true after prereq scan refines intent */
|
|
refinedFromScan?: boolean;
|
|
/** Facts discovered by the prereq scan */
|
|
scanDiscoveredFacts?: string[];
|
|
}
|
|
|
|
export type AppOnboardPhase = "info" | "prereq" | "prepare" | "scaffold" | "deploy" | "cicd" | "observe";
|
|
|
|
export interface AppOnboardContext {
|
|
sessionId: string;
|
|
createdUtc: string;
|
|
lastModifiedUtc: string;
|
|
currentPhase: AppOnboardPhase | null;
|
|
completedPhases: readonly AppOnboardPhase[];
|
|
/** Human-readable 1-line summary of where the session stands, updated at each phase exit.
|
|
* Displayed in the session picker when the user resumes or switches sessions. */
|
|
statusSummary?: string;
|
|
intent: AppOnboardIntent;
|
|
components: AppOnboardComponent[];
|
|
azure: AppOnboardAzureTarget;
|
|
repo: AppOnboardRepoInfo;
|
|
app?: AppOnboardAppInfo;
|
|
/** Infrastructure file types detected in repo: dockerfile, terraform, bicep, azure-yaml, github-actions */
|
|
detectedInfra: readonly string[];
|
|
/** Cloud provider targeted by detected IaC. Only populated when `.tf` or `.bicep` files found.
|
|
* Used by scaffold to distinguish "existing Azure IaC" (halt) from "non-Azure IaC" (generate Azure TF alongside). */
|
|
detectedInfraProvider?: {
|
|
terraform?: "azure" | "gcp" | "aws" | "multi" | "unknown";
|
|
};
|
|
/** Service dependencies parsed from docker-compose, config files, or code imports */
|
|
detectedServices: readonly DetectedService[];
|
|
overrides: AppOnboardOverride[];
|
|
/** Set when a phase routes the pipeline to another agent — e.g. "azure-cloud-migrate"
|
|
* (non-Azure cloud SDK deps) or "azure-prepare" (existing azd template). Presence halts
|
|
* the greenfield pipeline; the resume path in session-protocol.md clears it and re-runs prereq. */
|
|
routeToSkill?: string;
|
|
/** Human-readable reason paired with `routeToSkill` (e.g. "existing-azd-template"). */
|
|
routeReason?: string;
|
|
}
|
|
|
|
// ─── active-session.json ─────────────────────────────────────────────────────
|
|
|
|
/** Pointer file at `.copilot-azure/sessions/active-session.json`.
|
|
* Avoids scanning all session folders on startup — read this one file
|
|
* to find the active session, then read that session's context.json. */
|
|
export interface ActiveSessionPointer {
|
|
activeSessionId: string;
|
|
}
|
|
|
|
// PrereqOutput, BuildRequirements → see azure-app-onboard-prereq/references/prereq-schemas.ts
|