7.4 KiB
NoteFlow Application Services
Location
src/noteflow/application/services/
Core Services
MeetingService (meeting/)
Meeting lifecycle, segments, annotations, summaries, state.
Files:
meeting_service.py- Composite class combining all mixins_base.py- Core initialization and dependencies_crud_mixin.py- Create, read, update, delete operations_segments_mixin.py- Segment management_summaries_mixin.py- Summary operations_state_mixin.py- State machine transitions_annotations_mixin.py- Annotation CRUD_types.py,_meeting_types.py- Service-specific TypedDicts
Key Methods:
create_meeting(title, project_id) -> Meetingget_meeting(meeting_id) -> Meetinglist_meetings(filters) -> list[Meeting]stop_meeting(meeting_id) -> Meetingadd_segment(meeting_id, segment_data) -> Segmentadd_annotation(meeting_id, annotation_data) -> Annotationgenerate_summary(meeting_id, template_id) -> Summary
IdentityService (identity/)
User/workspace context, defaults, tenancy scoping.
Files:
identity_service.py- Main service_context_mixin.py- Request context handling_workspace_mixin.py- Workspace operations_defaults_mixin.py- Default user/workspace creation
Key Methods:
get_current_user() -> Userget_current_workspace() -> Workspaceswitch_workspace(workspace_id) -> Workspaceensure_defaults() -> tuple[User, Workspace]
CalendarService (calendar/)
OAuth integration, event fetching, sync management.
Files:
calendar_service.py- Main service_connection_mixin.py- OAuth connection handling_events_mixin.py- Event fetching_oauth_mixin.py- OAuth flow management_oauth_config_mixin.py- OAuth client configuration_service_mixin.py- Provider configuration_errors.py- Calendar-specific errors
Key Methods:
initiate_oauth(provider) -> AuthUrlcomplete_oauth(code, state) -> Integrationlist_events(start, end) -> list[CalendarEvent]get_connection_status() -> ConnectionStatus
SummarizationService (summarization/)
Summary generation, template management, cloud consent.
Files:
summarization_service.py- Main servicetemplate_service.py- Template CRUD_consent_manager.py- Cloud consent flow_template_ops.py- Template operations_provider_registry.py- Provider registration_citation_helper.py- Citation handling
Key Methods:
generate_summary(meeting_id, template_id) -> Summarycreate_template(data) -> SummarizationTemplatelist_templates() -> list[SummarizationTemplate]grant_consent() -> boolrevoke_consent() -> boolhas_consent() -> bool
ProjectService (project_service/)
Project CRUD, member management, roles, rules.
Files:
__init__.py- Main service exportcrud.py- Project CRUD operationsmembers.py- Member managementroles.py- Role-based accessrules.py- Project rules configurationactive.py- Active project tracking_types.py- Service types
Key Methods:
create_project(name, workspace_id) -> Projectadd_member(project_id, user_id, role) -> ProjectMembershipupdate_member_role(project_id, user_id, role) -> ProjectMembershipremove_member(project_id, user_id) -> boolset_active_project(project_id) -> Project
New Services (Strategy B)
AssistantService (assistant/)
AI chat interactions for meeting Q&A.
Files:
assistant_service.py- Main service
Key Methods:
ask(request: AssistantRequest) -> AssistantResponsestream(request: AssistantRequest) -> AsyncIterator[AssistantChunk]
AnalyticsService (analytics/)
Dashboard data aggregation and statistics.
Files:
service.py- Main servicerefresh.py- Analytics refresh logic
Key Methods:
get_overview(workspace_id, date_range) -> AnalyticsOverviewget_speaker_stats(meeting_ids) -> list[SpeakerStat]get_entity_analytics(workspace_id, date_range) -> EntityAnalytics
TaskService (tasks/)
Action item management from meetings.
Files:
service.py- Main service
Key Methods:
list_tasks(filters) -> list[Task]create_task(request) -> Taskupdate_task(task_id, updates) -> Taskcomplete_task(task_id) -> Task
VoiceProfileService (voice_profile/)
Speaker voice enrollment for improved diarization.
Files:
service.py- Main service
Key Methods:
enroll_speaker(audio_data, speaker_name) -> VoiceProfileget_profile(profile_id) -> VoiceProfilelist_profiles(workspace_id) -> list[VoiceProfile]
EmbeddingService (embedding/)
Vector embedding operations for semantic search.
Files:
_embedding.py- Embedding logic
Key Methods:
embed_text(text) -> list[float]embed_segments(segments) -> list[Embedding]
Configuration Services
AsrConfigService (asr_config/)
ASR model configuration and state management.
Files:
service.py- Main servicepersistence.py- Config persistencetypes.py- Config types_engine_manager.py- ASR engine lifecycle_job_manager.py- Background job management
Key Methods:
get_config() -> AsrConfigupdate_config(config) -> AsrConfigget_job_status(job_id) -> AsrJobStatus
StreamingConfigService (streaming_config/)
Audio streaming configuration.
Files:
persistence.py- Config persistence
Key Methods:
get_config() -> StreamingConfigupdate_config(config) -> StreamingConfig
Supporting Services
NerService (ner/)
Named entity extraction wrapper, model loading.
extract_entities(meeting_id) -> list[NamedEntity]is_ready() -> bool_dedupe.py- Deduplication logic
ExportService (export/)
Transcript export (Markdown, HTML, PDF).
export(meeting_id, format) -> ExportResult
WebhookService (webhooks/)
Webhook registration, delivery, retry logic.
register_webhook(config) -> WebhookConfigdeliver_event(event) -> WebhookDelivery
AuthService (auth/)
User authentication, OIDC integration.
Files:
service.py- Main serviceworkflows.py- Auth flow logictoken_exchanger.py- Token exchangeintegration_manager.py- Integration managementtypes.py- Auth typesconstants.py- Auth constants
Key Methods:
initiate_login(provider) -> AuthUrlcomplete_login(code, state) -> Userlogout() -> bool
TriggerService (triggers/)
Calendar/audio/foreground-app trigger detection.
check_triggers() -> list[TriggerSignal]snooze_triggers(duration) -> bool
RetentionService (retention/)
Automatic meeting deletion based on policy.
apply_retention_policy() -> int
RecoveryService (recovery/)
Data recovery (meeting, job, audio).
Files:
recovery_service.py- Main service_meeting_recoverer.py- Meeting recovery_job_recoverer.py- Job recovery_audio_validator.py- Audio validation
Key Methods:
recover_meeting(meeting_id) -> Meetingrecover_job(job_id) -> DiarizationJob
HfTokenService (huggingface/)
Hugging Face token management.
set_token(token) -> boolget_status() -> HfTokenStatusvalidate_token() -> bool
Service Exports (__init__.py)
from noteflow.application.services import (
MeetingService, IdentityService, ProjectService,
SummarizationService, SummarizationTemplateService,
AuthService, ExportService, RetentionService,
TriggerService, RecoveryService,
# ... and related types
)