713 lines
15 KiB
YAML
713 lines
15 KiB
YAML
dependency_graph:
|
|
design_version: 1
|
|
workflow_version: v001
|
|
generated_at: '2025-12-19T06:08:12.130212'
|
|
generator: validate_design.py
|
|
stats:
|
|
total_entities: 41
|
|
total_layers: 5
|
|
max_parallelism: 14
|
|
critical_path_length: 5
|
|
external_dependencies: 0
|
|
external_dependencies: {}
|
|
layers:
|
|
- layer: 1
|
|
name: Data Layer
|
|
description: Database models - no external dependencies
|
|
items:
|
|
- id: api_logout_user
|
|
type: api
|
|
name: Logout user
|
|
depends_on: []
|
|
task_id: task_create_api_logout_user
|
|
agent: backend
|
|
complexity: medium
|
|
- id: component_app_card
|
|
type: component
|
|
name: AppCard
|
|
depends_on: []
|
|
task_id: task_create_component_app_card
|
|
agent: frontend
|
|
complexity: medium
|
|
- id: component_app_iframe_viewer
|
|
type: component
|
|
name: AppIframeViewer
|
|
depends_on: []
|
|
task_id: task_create_component_app_iframe_viewer
|
|
agent: frontend
|
|
complexity: medium
|
|
- id: component_audio_player
|
|
type: component
|
|
name: AudioPlayer
|
|
depends_on: []
|
|
task_id: task_create_component_audio_player
|
|
agent: frontend
|
|
complexity: medium
|
|
- id: component_features
|
|
type: component
|
|
name: Features
|
|
depends_on: []
|
|
task_id: task_create_component_features
|
|
agent: frontend
|
|
complexity: medium
|
|
- id: component_header
|
|
type: component
|
|
name: Header
|
|
depends_on: []
|
|
task_id: task_create_component_header
|
|
agent: frontend
|
|
complexity: medium
|
|
- id: component_hero
|
|
type: component
|
|
name: Hero
|
|
depends_on: []
|
|
task_id: task_create_component_hero
|
|
agent: frontend
|
|
complexity: medium
|
|
- id: component_record_button
|
|
type: component
|
|
name: RecordButton
|
|
depends_on: []
|
|
task_id: task_create_component_record_button
|
|
agent: frontend
|
|
complexity: medium
|
|
- id: component_recording_card
|
|
type: component
|
|
name: RecordingCard
|
|
depends_on: []
|
|
task_id: task_create_component_recording_card
|
|
agent: frontend
|
|
complexity: medium
|
|
- id: component_sidebar
|
|
type: component
|
|
name: Sidebar
|
|
depends_on: []
|
|
task_id: task_create_component_sidebar
|
|
agent: frontend
|
|
complexity: medium
|
|
- id: component_summary_display
|
|
type: component
|
|
name: SummaryDisplay
|
|
depends_on: []
|
|
task_id: task_create_component_summary_display
|
|
agent: frontend
|
|
complexity: medium
|
|
- id: component_transcript_viewer
|
|
type: component
|
|
name: TranscriptViewer
|
|
depends_on: []
|
|
task_id: task_create_component_transcript_viewer
|
|
agent: frontend
|
|
complexity: medium
|
|
- id: component_wake_word_indicator
|
|
type: component
|
|
name: WakeWordIndicator
|
|
depends_on: []
|
|
task_id: task_create_component_wake_word_indicator
|
|
agent: frontend
|
|
complexity: medium
|
|
- id: model_user
|
|
type: model
|
|
name: User
|
|
depends_on: []
|
|
task_id: task_create_model_user
|
|
agent: backend
|
|
complexity: medium
|
|
requires_layers: []
|
|
parallel_count: 14
|
|
- layer: 2
|
|
name: API Layer
|
|
description: REST endpoints - depend on models
|
|
items:
|
|
- id: api_get_current_user
|
|
type: api
|
|
name: Get current user
|
|
depends_on:
|
|
- model_user
|
|
task_id: task_create_api_get_current_user
|
|
agent: backend
|
|
complexity: medium
|
|
- id: api_login_user
|
|
type: api
|
|
name: Login user
|
|
depends_on:
|
|
- model_user
|
|
task_id: task_create_api_login_user
|
|
agent: backend
|
|
complexity: medium
|
|
- id: api_register_user
|
|
type: api
|
|
name: Register a new user
|
|
depends_on:
|
|
- model_user
|
|
task_id: task_create_api_register_user
|
|
agent: backend
|
|
complexity: medium
|
|
- id: component_app_gallery
|
|
type: component
|
|
name: AppGallery
|
|
depends_on:
|
|
- component_app_card
|
|
task_id: task_create_component_app_gallery
|
|
agent: frontend
|
|
complexity: medium
|
|
- id: component_recording_list
|
|
type: component
|
|
name: RecordingList
|
|
depends_on:
|
|
- component_recording_card
|
|
task_id: task_create_component_recording_list
|
|
agent: frontend
|
|
complexity: medium
|
|
- id: model_recording
|
|
type: model
|
|
name: Recording
|
|
depends_on:
|
|
- model_user
|
|
task_id: task_create_model_recording
|
|
agent: backend
|
|
complexity: medium
|
|
- id: page_home
|
|
type: page
|
|
name: Home
|
|
depends_on:
|
|
- component_features
|
|
- component_header
|
|
- component_hero
|
|
task_id: task_create_page_home
|
|
agent: frontend
|
|
complexity: medium
|
|
requires_layers:
|
|
- 1
|
|
parallel_count: 7
|
|
- layer: 3
|
|
name: UI Layer
|
|
description: Pages and components - depend on APIs
|
|
items:
|
|
- id: api_create_recording
|
|
type: api
|
|
name: Create new recording
|
|
depends_on:
|
|
- model_recording
|
|
task_id: task_create_api_create_recording
|
|
agent: backend
|
|
complexity: medium
|
|
- id: api_delete_recording
|
|
type: api
|
|
name: Delete recording
|
|
depends_on:
|
|
- model_recording
|
|
task_id: task_create_api_delete_recording
|
|
agent: backend
|
|
complexity: medium
|
|
- id: api_get_recording
|
|
type: api
|
|
name: Get single recording
|
|
depends_on:
|
|
- model_recording
|
|
task_id: task_create_api_get_recording
|
|
agent: backend
|
|
complexity: medium
|
|
- id: api_list_recordings
|
|
type: api
|
|
name: List user recordings
|
|
depends_on:
|
|
- model_recording
|
|
task_id: task_create_api_list_recordings
|
|
agent: backend
|
|
complexity: medium
|
|
- id: api_transcribe_recording
|
|
type: api
|
|
name: Transcribe recording
|
|
depends_on:
|
|
- model_recording
|
|
task_id: task_create_api_transcribe_recording
|
|
agent: backend
|
|
complexity: medium
|
|
- id: component_login_form
|
|
type: component
|
|
name: LoginForm
|
|
depends_on:
|
|
- api_login_user
|
|
task_id: task_create_component_login_form
|
|
agent: frontend
|
|
complexity: medium
|
|
- id: component_register_form
|
|
type: component
|
|
name: RegisterForm
|
|
depends_on:
|
|
- api_register_user
|
|
task_id: task_create_component_register_form
|
|
agent: frontend
|
|
complexity: medium
|
|
- id: model_generated_app
|
|
type: model
|
|
name: GeneratedApp
|
|
depends_on:
|
|
- model_user
|
|
- model_recording
|
|
task_id: task_create_model_generated_app
|
|
agent: backend
|
|
complexity: medium
|
|
requires_layers:
|
|
- 1
|
|
- 2
|
|
parallel_count: 8
|
|
- layer: 4
|
|
name: Layer 4
|
|
description: Entities with 3 levels of dependencies
|
|
items:
|
|
- id: api_delete_app
|
|
type: api
|
|
name: Delete generated app
|
|
depends_on:
|
|
- model_generated_app
|
|
task_id: task_create_api_delete_app
|
|
agent: backend
|
|
complexity: medium
|
|
- id: api_get_app
|
|
type: api
|
|
name: Get single generated app
|
|
depends_on:
|
|
- model_generated_app
|
|
task_id: task_create_api_get_app
|
|
agent: backend
|
|
complexity: medium
|
|
- id: api_list_apps
|
|
type: api
|
|
name: List generated apps
|
|
depends_on:
|
|
- model_generated_app
|
|
task_id: task_create_api_list_apps
|
|
agent: backend
|
|
complexity: medium
|
|
- id: api_summarize_recording
|
|
type: api
|
|
name: Summarize recording
|
|
depends_on:
|
|
- api_transcribe_recording
|
|
- model_recording
|
|
task_id: task_create_api_summarize_recording
|
|
agent: backend
|
|
complexity: medium
|
|
- id: page_dashboard
|
|
type: page
|
|
name: Dashboard
|
|
depends_on:
|
|
- component_recording_list
|
|
- api_list_recordings
|
|
- component_record_button
|
|
- api_get_current_user
|
|
- component_wake_word_indicator
|
|
- component_header
|
|
- component_sidebar
|
|
task_id: task_create_page_dashboard
|
|
agent: frontend
|
|
complexity: medium
|
|
- id: page_login
|
|
type: page
|
|
name: Login
|
|
depends_on:
|
|
- component_login_form
|
|
task_id: task_create_page_login
|
|
agent: frontend
|
|
complexity: medium
|
|
- id: page_recording_detail
|
|
type: page
|
|
name: Recording Detail
|
|
depends_on:
|
|
- component_transcript_viewer
|
|
- component_summary_display
|
|
- api_get_recording
|
|
- component_audio_player
|
|
- component_header
|
|
- component_sidebar
|
|
task_id: task_create_page_recording_detail
|
|
agent: frontend
|
|
complexity: medium
|
|
- id: page_recordings
|
|
type: page
|
|
name: Recordings
|
|
depends_on:
|
|
- api_list_recordings
|
|
- component_header
|
|
- component_recording_list
|
|
- component_recording_card
|
|
- component_sidebar
|
|
task_id: task_create_page_recordings
|
|
agent: frontend
|
|
complexity: medium
|
|
- id: page_register
|
|
type: page
|
|
name: Register
|
|
depends_on:
|
|
- component_register_form
|
|
task_id: task_create_page_register
|
|
agent: frontend
|
|
complexity: medium
|
|
requires_layers:
|
|
- 1
|
|
- 2
|
|
- 3
|
|
parallel_count: 9
|
|
- layer: 5
|
|
name: Layer 5
|
|
description: Entities with 4 levels of dependencies
|
|
items:
|
|
- id: api_generate_app
|
|
type: api
|
|
name: Generate app from recording
|
|
depends_on:
|
|
- api_summarize_recording
|
|
- model_generated_app
|
|
- model_recording
|
|
task_id: task_create_api_generate_app
|
|
agent: backend
|
|
complexity: medium
|
|
- id: page_app_detail
|
|
type: page
|
|
name: App Preview
|
|
depends_on:
|
|
- component_header
|
|
- component_app_iframe_viewer
|
|
- api_get_app
|
|
- component_sidebar
|
|
task_id: task_create_page_app_detail
|
|
agent: frontend
|
|
complexity: medium
|
|
- id: page_apps
|
|
type: page
|
|
name: Generated Apps
|
|
depends_on:
|
|
- api_list_apps
|
|
- component_app_card
|
|
- component_app_gallery
|
|
- component_header
|
|
- component_sidebar
|
|
task_id: task_create_page_apps
|
|
agent: frontend
|
|
complexity: medium
|
|
requires_layers:
|
|
- 1
|
|
- 2
|
|
- 3
|
|
- 4
|
|
parallel_count: 3
|
|
dependency_map:
|
|
model_user:
|
|
type: model
|
|
layer: 1
|
|
depends_on: []
|
|
depended_by:
|
|
- model_recording
|
|
- api_get_current_user
|
|
- model_generated_app
|
|
- api_login_user
|
|
- api_register_user
|
|
model_recording:
|
|
type: model
|
|
layer: 2
|
|
depends_on:
|
|
- model_user
|
|
depended_by:
|
|
- api_list_recordings
|
|
- api_create_recording
|
|
- api_transcribe_recording
|
|
- api_summarize_recording
|
|
- model_generated_app
|
|
- api_get_recording
|
|
- api_generate_app
|
|
- api_delete_recording
|
|
model_generated_app:
|
|
type: model
|
|
layer: 3
|
|
depends_on:
|
|
- model_user
|
|
- model_recording
|
|
depended_by:
|
|
- api_delete_app
|
|
- api_get_app
|
|
- api_list_apps
|
|
- api_generate_app
|
|
api_register_user:
|
|
type: api
|
|
layer: 2
|
|
depends_on:
|
|
- model_user
|
|
depended_by:
|
|
- component_register_form
|
|
api_login_user:
|
|
type: api
|
|
layer: 2
|
|
depends_on:
|
|
- model_user
|
|
depended_by:
|
|
- component_login_form
|
|
api_logout_user:
|
|
type: api
|
|
layer: 1
|
|
depends_on: []
|
|
depended_by: []
|
|
api_get_current_user:
|
|
type: api
|
|
layer: 2
|
|
depends_on:
|
|
- model_user
|
|
depended_by:
|
|
- page_dashboard
|
|
api_list_recordings:
|
|
type: api
|
|
layer: 3
|
|
depends_on:
|
|
- model_recording
|
|
depended_by:
|
|
- page_dashboard
|
|
- page_recordings
|
|
api_create_recording:
|
|
type: api
|
|
layer: 3
|
|
depends_on:
|
|
- model_recording
|
|
depended_by: []
|
|
api_get_recording:
|
|
type: api
|
|
layer: 3
|
|
depends_on:
|
|
- model_recording
|
|
depended_by:
|
|
- page_recording_detail
|
|
api_delete_recording:
|
|
type: api
|
|
layer: 3
|
|
depends_on:
|
|
- model_recording
|
|
depended_by: []
|
|
api_transcribe_recording:
|
|
type: api
|
|
layer: 3
|
|
depends_on:
|
|
- model_recording
|
|
depended_by:
|
|
- api_summarize_recording
|
|
api_summarize_recording:
|
|
type: api
|
|
layer: 4
|
|
depends_on:
|
|
- api_transcribe_recording
|
|
- model_recording
|
|
depended_by:
|
|
- api_generate_app
|
|
api_list_apps:
|
|
type: api
|
|
layer: 4
|
|
depends_on:
|
|
- model_generated_app
|
|
depended_by:
|
|
- page_apps
|
|
api_generate_app:
|
|
type: api
|
|
layer: 5
|
|
depends_on:
|
|
- api_summarize_recording
|
|
- model_generated_app
|
|
- model_recording
|
|
depended_by: []
|
|
api_get_app:
|
|
type: api
|
|
layer: 4
|
|
depends_on:
|
|
- model_generated_app
|
|
depended_by:
|
|
- page_app_detail
|
|
api_delete_app:
|
|
type: api
|
|
layer: 4
|
|
depends_on:
|
|
- model_generated_app
|
|
depended_by: []
|
|
page_home:
|
|
type: page
|
|
layer: 2
|
|
depends_on:
|
|
- component_features
|
|
- component_header
|
|
- component_hero
|
|
depended_by: []
|
|
page_login:
|
|
type: page
|
|
layer: 4
|
|
depends_on:
|
|
- component_login_form
|
|
depended_by: []
|
|
page_register:
|
|
type: page
|
|
layer: 4
|
|
depends_on:
|
|
- component_register_form
|
|
depended_by: []
|
|
page_dashboard:
|
|
type: page
|
|
layer: 4
|
|
depends_on:
|
|
- component_recording_list
|
|
- api_list_recordings
|
|
- component_record_button
|
|
- api_get_current_user
|
|
- component_wake_word_indicator
|
|
- component_header
|
|
- component_sidebar
|
|
depended_by: []
|
|
page_recordings:
|
|
type: page
|
|
layer: 4
|
|
depends_on:
|
|
- api_list_recordings
|
|
- component_header
|
|
- component_recording_list
|
|
- component_recording_card
|
|
- component_sidebar
|
|
depended_by: []
|
|
page_recording_detail:
|
|
type: page
|
|
layer: 4
|
|
depends_on:
|
|
- component_transcript_viewer
|
|
- component_summary_display
|
|
- api_get_recording
|
|
- component_audio_player
|
|
- component_header
|
|
- component_sidebar
|
|
depended_by: []
|
|
page_apps:
|
|
type: page
|
|
layer: 5
|
|
depends_on:
|
|
- api_list_apps
|
|
- component_app_card
|
|
- component_app_gallery
|
|
- component_header
|
|
- component_sidebar
|
|
depended_by: []
|
|
page_app_detail:
|
|
type: page
|
|
layer: 5
|
|
depends_on:
|
|
- component_header
|
|
- component_app_iframe_viewer
|
|
- api_get_app
|
|
- component_sidebar
|
|
depended_by: []
|
|
component_header:
|
|
type: component
|
|
layer: 1
|
|
depends_on: []
|
|
depended_by:
|
|
- page_app_detail
|
|
- page_home
|
|
- page_apps
|
|
- page_recordings
|
|
- page_recording_detail
|
|
- page_dashboard
|
|
component_sidebar:
|
|
type: component
|
|
layer: 1
|
|
depends_on: []
|
|
depended_by:
|
|
- page_app_detail
|
|
- page_apps
|
|
- page_recordings
|
|
- page_recording_detail
|
|
- page_dashboard
|
|
component_hero:
|
|
type: component
|
|
layer: 1
|
|
depends_on: []
|
|
depended_by:
|
|
- page_home
|
|
component_features:
|
|
type: component
|
|
layer: 1
|
|
depends_on: []
|
|
depended_by:
|
|
- page_home
|
|
component_login_form:
|
|
type: component
|
|
layer: 3
|
|
depends_on:
|
|
- api_login_user
|
|
depended_by:
|
|
- page_login
|
|
component_register_form:
|
|
type: component
|
|
layer: 3
|
|
depends_on:
|
|
- api_register_user
|
|
depended_by:
|
|
- page_register
|
|
component_record_button:
|
|
type: component
|
|
layer: 1
|
|
depends_on: []
|
|
depended_by:
|
|
- page_dashboard
|
|
component_wake_word_indicator:
|
|
type: component
|
|
layer: 1
|
|
depends_on: []
|
|
depended_by:
|
|
- page_dashboard
|
|
component_recording_list:
|
|
type: component
|
|
layer: 2
|
|
depends_on:
|
|
- component_recording_card
|
|
depended_by:
|
|
- page_dashboard
|
|
- page_recordings
|
|
component_recording_card:
|
|
type: component
|
|
layer: 1
|
|
depends_on: []
|
|
depended_by:
|
|
- component_recording_list
|
|
- page_recordings
|
|
component_audio_player:
|
|
type: component
|
|
layer: 1
|
|
depends_on: []
|
|
depended_by:
|
|
- page_recording_detail
|
|
component_transcript_viewer:
|
|
type: component
|
|
layer: 1
|
|
depends_on: []
|
|
depended_by:
|
|
- page_recording_detail
|
|
component_summary_display:
|
|
type: component
|
|
layer: 1
|
|
depends_on: []
|
|
depended_by:
|
|
- page_recording_detail
|
|
component_app_gallery:
|
|
type: component
|
|
layer: 2
|
|
depends_on:
|
|
- component_app_card
|
|
depended_by:
|
|
- page_apps
|
|
component_app_card:
|
|
type: component
|
|
layer: 1
|
|
depends_on: []
|
|
depended_by:
|
|
- page_apps
|
|
- component_app_gallery
|
|
component_app_iframe_viewer:
|
|
type: component
|
|
layer: 1
|
|
depends_on: []
|
|
depended_by:
|
|
- page_app_detail
|
|
task_map: []
|