mirror of
https://github.com/n8n-io/n8n-nodes-starter.git
synced 2025-10-28 22:12:26 -05:00
5.2 KiB
5.2 KiB
Functional and Non-Functional Requirements
1. Functional Requirements (FRs)
The n8n Suno AI node should provide the following functionalities:
FR1: User Authentication
- FR1.1: The system must allow users to authenticate with the Suno AI service using their credentials (email and password).
- FR1.2: Authentication status should be managed (e.g., session token stored and used for subsequent API calls). (Currently mocked)
FR2: Music Generation
- FR2.1: Generate Song from Text Prompt:
- The node must allow users to submit a text prompt.
- The node should allow specifying additional options (e.g., style, mood, instrumental - to be defined based on Suno API capabilities).
- The system should initiate a music generation job via the Suno API.
- The system should return a job identifier and initial status. (Currently mocked job ID and status)
- FR2.2: Upload Track Reference (for generation):
- The node must allow users to specify a file path for an audio track to be used as a reference (e.g., for style transfer or continuation - dependent on Suno API).
- The system should upload this track and return a reference identifier or initiate a job. (Currently mocked)
FR3: Job & Track Management
- FR3.1: Get Track/Job Status:
- The node must allow users to query the status of a specific generation job or track using its ID.
- The system should return the current status (e.g., queued, generating, complete, failed) and progress if available. (Currently mocked with state changes)
- FR3.2: Download Generated Track:
- Once a track is successfully generated, the node must allow users to download the audio file (e.g., MP3, WAV - dependent on Suno API).
- The system should provide the audio data as a binary output. (Currently mocked with dummy binary data)
- FR3.3: List Previous Songs:
- The node must allow users to retrieve a list of their previously generated songs.
- The system should return track details (e.g., ID, title, status, URLs). (Currently mocked)
FR4: Workflow Triggers
- FR4.1: Trigger on Track Generation Complete:
- The system must provide a trigger that activates when a specific music generation job/track is complete.
- The trigger should output details of the completed track. (Currently mocked polling)
- FR4.2: Trigger on New Song Available:
- The system must provide a trigger that activates when a new song becomes available in the user's Suno AI library.
- The trigger should output details of the new song(s). (Currently mocked polling, needs robust new song detection)
FR5: (Placeholder) Other Suno API Features
- (e.g., Select Voice/Style -
selectVoiceis a placeholder insunoApi.ts) - to be defined if Suno API supports these as distinct actions relevant to the n8n node.
2. Non-Functional Requirements (NFRs)
NFR1: Reliability
- NFR1.1: All API interactions must include robust error handling.
- NFR1.2: Clear and informative error messages should be provided to the n8n user in case of failures.
- NFR1.3: Polling triggers should be fault-tolerant (e.g., handle temporary API unavailability gracefully).
- NFR1.4: The node should correctly manage authentication state and attempt re-authentication or token refresh if necessary and feasible (actual mechanism TBD based on Suno API).
NFR2: Maintainability
- NFR2.1: Code must be clean, well-organized, and follow established TypeScript best practices. Module separation should be preserved.
- NFR2.2: Comprehensive JSDoc comments for all functions, classes, interfaces, and type properties.
- NFR2.3: The
docs/dev-log.mdshould be kept up-to-date with significant decisions and progress. - NFR2.4: Configuration and magic strings should be minimized, using constants or configuration variables where appropriate.
NFR3: Usability (n8n User Experience)
- NFR3.1: Node parameters should be clearly named and described in the n8n UI.
- NFR3.2: Operations should be logically grouped and named.
- NFR3.3: Output data from node operations and triggers should be well-structured and useful for downstream n8n nodes.
- NFR3.4: Placeholder text and default values for node parameters should be helpful.
NFR4: Performance
- NFR4.1: API calls should be made efficiently. Avoid unnecessary calls. (Dependent on actual Suno API structure).
- NFR4.2: Mocked API calls (current state) should be lightweight and fast to not hinder development or testing.
- NFR4.3: For operations involving file handling (e.g., download, upload reference), streams should be considered if the actual API supports them and files can be large, to manage memory efficiently.
NFR5: Testability
- NFR5.1: Code should be structured to facilitate unit and integration testing.
- NFR5.2: Key logic, especially in
utils/sunoApi.ts(once it targets a real API), should have good test coverage. - NFR5.3: The existing
tests/checkEndpoints.tsshould be expanded or replaced by a proper test suite.
NFR6: Security
- NFR6.1: Credentials must be handled securely as per n8n standards.
- NFR6.2: No sensitive information should be inadvertently logged (e.g., full tokens, passwords after initial use).