Merge branch 'noisedestroyers/define-implement'

This commit is contained in:
2025-07-22 11:30:47 -04:00

View File

@@ -170,6 +170,7 @@ graph TB
- **Purpose**: Orchestrate complete publishing workflows - **Purpose**: Orchestrate complete publishing workflows
- **Technology**: ASP.NET Core + Hangfire - **Technology**: ASP.NET Core + Hangfire
- **Responsibilities**: - **Responsibilities**:
- Package creation from successful builds
- Coordinate document generation - Coordinate document generation
- Manage cloud uploads - Manage cloud uploads
- Update help center articles - Update help center articles
@@ -188,6 +189,19 @@ erDiagram
datetime LastLogin datetime LastLogin
} }
Packages {
int Id PK
string Name
string Version
string Description
int SourceBuildId FK
json CloudStorageConfig
json HelpCenterConfig
string Status
datetime CreatedAt
datetime UpdatedAt
}
Projects { Projects {
int Id PK int Id PK
string Name string Name
@@ -206,24 +220,16 @@ erDiagram
datetime StartTime datetime StartTime
datetime EndTime datetime EndTime
string LogPath string LogPath
} string ArtifactPath
Packages {
int Id PK
string Name
int ProjectId FK
json CloudStorageConfig
json HelpCenterConfig
datetime CreatedAt
} }
Publications { Publications {
int Id PK int Id PK
int PackageId FK int PackageId FK
string Version
string Status string Status
datetime PublishedAt datetime PublishedAt
string ReleaseNotesPath string ReleaseNotesPath
json PublicationDetails
} }
StorageProviders { StorageProviders {
@@ -242,24 +248,24 @@ erDiagram
boolean IsActive boolean IsActive
} }
Projects ||--o{ Builds : "has builds" Projects ||--o{ Builds : "produces builds"
Projects ||--o{ Packages : "has packages" Builds ||--o| Packages : "creates package"
Packages ||--o{ Publications : "has publications" Packages ||--o{ Publications : "has publications"
``` ```
#### Core Entities #### Core Entities
```sql ```sql
-- Packages: Top-level finalized software releases
Packages (Id, Name, Version, Description, SourceBuildId, CloudStorageConfig, HelpCenterConfig, Status, CreatedAt, UpdatedAt)
-- Projects from CruiseControl.NET -- Projects from CruiseControl.NET
Projects (Id, Name, Description, CCNetProjectName, Status, CreatedAt, UpdatedAt) Projects (Id, Name, Description, CCNetProjectName, Status, CreatedAt, UpdatedAt)
-- Build information -- Build information
Builds (Id, ProjectId, BuildNumber, Status, StartTime, EndTime, LogPath) Builds (Id, ProjectId, BuildNumber, Status, StartTime, EndTime, LogPath, ArtifactPath)
-- Software packages configuration
Packages (Id, Name, ProjectId, CloudStorageConfig, HelpCenterConfig, CreatedAt)
-- Publishing history -- Publishing history
Publications (Id, PackageId, Version, Status, PublishedAt, ReleaseNotesPath) Publications (Id, PackageId, Status, PublishedAt, ReleaseNotesPath, PublicationDetails)
-- User management -- User management
Users (Id, Username, PasswordHash, Role, CreatedAt, LastLogin) Users (Id, Username, PasswordHash, Role, CreatedAt, LastLogin)
@@ -477,6 +483,14 @@ sequenceDiagram
participant HF as Hangfire participant HF as Hangfire
participant SH as SignalR Hub participant SH as SignalR Hub
Note over User,UI: Package Creation Phase
User->>UI: Select Build & Create Package
UI->>GW: POST /api/packages/create-from-build
GW->>PUB: Create Package from Build
PUB->>SH: Package Created Notification
SH->>UI: Real-time Package Status
Note over User,UI: Publishing Phase
User->>UI: Select Package & Initiate Publishing User->>UI: Select Package & Initiate Publishing
UI->>GW: POST /api/publish/package/{id} UI->>GW: POST /api/publish/package/{id}
GW->>PUB: Queue Publishing Job GW->>PUB: Queue Publishing Job
@@ -494,14 +508,14 @@ sequenceDiagram
HELP-->>HF: Articles Updated HELP-->>HF: Articles Updated
HF->>SH: Notify Completion HF->>SH: Notify Completion
SH->>UI: Real-time Status Update SH->>UI: Real-time Publication Status
UI->>User: Show Completion Status UI->>User: Show Completion Status
``` ```
## Data Flow Architecture ## Data Flow Architecture
```mermaid ```mermaid
flowchart LR flowchart TD
subgraph "External Sources" subgraph "External Sources"
CC[CruiseControl.NET<br/>Build Logs] CC[CruiseControl.NET<br/>Build Logs]
FB[FogBugz/Manuscript<br/>Developer Data] FB[FogBugz/Manuscript<br/>Developer Data]
@@ -512,13 +526,16 @@ flowchart LR
MS[Manuscript Service<br/>API Client] MS[Manuscript Service<br/>API Client]
end end
subgraph "Data Storage" subgraph "Core Data Model"
DB[(PostgreSQL<br/>Centralized Data)] PROJ[Projects<br/>CC.NET Projects]
BUILDS[Builds<br/>From Projects]
PKG[Packages<br/>Finalized Releases]
PUB_DATA[Publications<br/>Publishing History]
end end
subgraph "Processing Layer" subgraph "Processing Layer"
DS[Document Service<br/>PDF Generator] DS[Document Service<br/>PDF Generator]
PUB[Publishing Service<br/>Orchestrator] PUB[Publishing Service<br/>Package Creator & Orchestrator]
end end
subgraph "Output Channels" subgraph "Output Channels"
@@ -527,30 +544,34 @@ flowchart LR
end end
subgraph "User Interface" subgraph "User Interface"
UI[React Frontend<br/>Management Console] UI[React Frontend<br/>Package Management Console]
end end
CC --> PS CC --> PS
FB --> MS FB --> MS
PS --> DB PS --> PROJ
MS --> DB MS --> PROJ
DB --> DS PROJ --> BUILDS
DB --> PUB BUILDS --> PKG
DS --> STOR PKG --> PUB_DATA
UI --> PKG
PKG --> PUB
PUB --> DS
PUB --> STOR PUB --> STOR
PUB --> HELP PUB --> HELP
DB --> UI PUB --> PUB_DATA
classDef external fill:#ffebee classDef external fill:#ffebee
classDef ingestion fill:#e3f2fd classDef ingestion fill:#e3f2fd
classDef storage fill:#f3e5f5 classDef coredata fill:#e8f5e8
classDef processing fill:#e8f5e8 classDef processing fill:#fff3e0
classDef output fill:#fff3e0 classDef output fill:#f3e5f5
classDef ui fill:#fce4ec classDef ui fill:#fce4ec
class CC,FB external class CC,FB external
class PS,MS ingestion class PS,MS ingestion
class DB storage class PROJ,BUILDS,PKG,PUB_DATA coredata
class DS,PUB processing class DS,PUB processing
class STOR,HELP output class STOR,HELP output
class UI ui class UI ui