# ====================================================================
# Internationalization Resource File - English (UTF-8)
# ====================================================================

# --------------------------------------------------------------------------------------
# Common Response
# --------------------------------------------------------------------------------------
response.success=Operation successful
response.error=System error
response.invalid.param=Invalid parameter
response.unauthorized=Unauthorized
response.unauthorized.full=Full authentication is required to access this resource
response.forbidden=Access forbidden
response.not.found=Resource not found
response.conflict=Resource conflict

# --------------------------------------------------------------------------------------
# System Exceptions - 1xxx
# --------------------------------------------------------------------------------------
system.optimistic.lock.error=Data has been modified by another user, please refresh and try again
system.pessimistic.lock.error=Data is being operated by another user, please try again later
system.concurrent.update.error=Concurrent update conflict, please try again
system.retry.exceeded.error=Operation retry limit exceeded, please try again later

# --------------------------------------------------------------------------------------
# Dependency Injection - 1100-1199
# --------------------------------------------------------------------------------------
dependency.injection.service.not.found=Cannot find service for entity {0} (tried bean names: {1})
dependency.injection.repository.not.found=Cannot find repository for entity {0}: {1}
dependency.injection.converter.not.found=Cannot find converter for entity {0}: {1}
dependency.injection.entitypath.failed=Failed to initialize EntityPath for entity {0}: {1}

# --------------------------------------------------------------------------------------
# SSH File Operations - 1200-1299
# --------------------------------------------------------------------------------------
ssh.file.connection.failed=SSH connection failed, please check server address, port and network connection
ssh.file.authentication.failed=SSH authentication failed, please check username and password/key
ssh.file.not.found=File not found
ssh.file.directory.not.found=Directory not found
ssh.file.permission.denied=Permission denied
ssh.file.disk.full=Disk space full
ssh.file.invalid.path=Invalid path
ssh.file.already.exists=File already exists
ssh.file.too.large=File too large
ssh.file.unsupported.type=Unsupported file type
ssh.file.io.error=File IO error
ssh.file.timeout=Operation timeout
ssh.file.operation.failed=File operation failed
ssh.file.upload.size.exceeded=File too large, maximum upload size is {0}
ssh.file.upload.cancelled=Upload cancelled by user

# --------------------------------------------------------------------------------------
# Business Exceptions - 2xxx
# --------------------------------------------------------------------------------------

# Common Business Errors (2000-2099)
tenant.not.found=Tenant not found
data.not.found=Cannot find {1} with ID {0}
entity.not.found.id=Cannot find entity with ID {0}
entity.not.found.message={0}
entity.not.found.name.id=Cannot find {0} with ID {1}

# User Related (2000-2099)
user.not.found=User not found
user.username.exists=Username {0} already exists
user.email.exists=Email {0} already exists
user.login.error=Invalid username or password

# Role Related (2100-2199)
role.not.found=Role not found
role.code.exists=Role code {0} already exists
role.name.exists=Role name {0} already exists
role.in.use=Role is in use and cannot be deleted
role.admin.cannot.delete=Cannot delete super admin role
role.admin.cannot.update=Cannot update super admin role
role.tag.name.exists=Tag name already exists
role.tag.not.found=Tag not found
role.tag.in.use=Tag is in use and cannot be deleted

# JWT Related (2200-2299)
jwt.token.expired=Login expired, please login again
jwt.token.invalid=Invalid login credentials
jwt.token.missing=Login credentials not provided

# Department Related (2300-2399)
department.not.found=Department not found
department.code.exists=Department code already exists
department.name.exists=Department name already exists
department.parent.not.found=Parent department not found
department.has.children=Cannot delete department with children

# Permission Related (2400-2499)
permission.not.found=Permission not found
permission.code.exists=Permission code {0} already exists
permission.name.exists=Permission name {0} already exists
permission.already.assigned=Permission already assigned to role
permission.assign.failed=Permission assignment failed

# External System Related (2500-2599)
external.system.name.exists=System name {0} already exists
external.system.type.url.exists=System type and URL combination {0} already exists
external.system.disabled=System is disabled
external.system.sync.failed=System data synchronization failed
external.system.type.not.supported=Unsupported system type
external.system.git.auth.type.error=Git system only supports Token authentication
external.system.git.token.required=Git system requires Token

# Repository Related (2600-2699)
repository.group.not.found=Repository group not found
repository.group.name.exists=Repository group name {0} already exists
repository.group.path.exists=Repository group path {0} already exists
repository.projectGroup.not.found=Repository project not found
repository.projectGroup.name.exists=Repository project name {0} already exists
repository.projectGroup.path.exists=Repository project path {0} already exists
repository.branch.not.found=Branch not found
repository.branch.name.exists=Branch name {0} already exists
repository.sync.in.progress=Repository synchronization in progress
repository.sync.failed=Repository synchronization failed: {0}
repository.sync.history.not.found=Synchronization history not found

# Workflow Definition Related (2700-2749)
workflow.definition.not.found=Workflow definition not found
workflow.definition.code.exists=Workflow definition code {0} already exists
workflow.definition.name.exists=Workflow definition name {0} already exists
workflow.definition.invalid.content=Invalid workflow definition content: {0}
workflow.definition.not.published=Workflow definition not published
workflow.definition.already.published=Workflow definition already published
workflow.definition.cannot.delete=Workflow definition is in use and cannot be deleted
workflow.not.draft=Only draft workflow definitions can be published
workflow.not.published=Workflow not published, please contact deployment administrator for workflow adjustment
workflow.not.disabled=Only disabled workflow definitions can be enabled
workflow.disabled=Workflow is disabled
workflow.invalid.status=Invalid workflow status

# Workflow Instance Related (2750-2769)
workflow.instance.not.found=Workflow instance not found
workflow.instance.cannot.start=Cannot start workflow instance
workflow.instance.cannot.cancel=Cannot cancel workflow instance
workflow.instance.cannot.pause=Cannot pause workflow instance
workflow.instance.cannot.resume=Cannot resume workflow instance
workflow.instance.cannot.retry=Cannot retry workflow instance
workflow.instance.already.completed=Workflow instance already completed
workflow.instance.already.canceled=Workflow instance already canceled
workflow.instance.not.running=Workflow instance is not running
workflow.instance.not.paused=Workflow instance is not paused

# Workflow Node Related (2770-2789)
workflow.node.not.found=Workflow node not found
workflow.node.type.not.supported=Unsupported node type
workflow.node.type.not.found=Node type not found or has been deleted
workflow.node.type.disabled=Node type is disabled and cannot be used
workflow.node.type.code.exists=Node type code already exists
workflow.node.type.invalid.category=Invalid node type category
workflow.node.type.invalid.executor=Invalid executor configuration
workflow.node.config.invalid=Invalid node configuration
workflow.node.config.empty=Node configuration cannot be empty
workflow.node.config.error=Node configuration error
workflow.node.execution.failed=Node execution failed
workflow.node.executor.not.found=Workflow node executor not found: {0}
workflow.node.timeout=Node execution timeout
node.instance.not.found=Node instance not found
node.instance.cannot.retry=Cannot retry node instance
node.instance.cannot.skip=Cannot skip node instance
node.executor.not.found=Node executor not found

# Workflow Configuration Related (2790-2799)
workflow.config.invalid=Invalid workflow configuration
workflow.config.error=Workflow configuration error: {0}
workflow.transition.invalid=Invalid workflow transition configuration
workflow.transition.config.empty=Transition configuration cannot be empty
workflow.condition.invalid=Invalid workflow condition configuration
workflow.form.config.empty=Form configuration cannot be empty
workflow.graph.config.empty=Graph configuration cannot be empty
workflow.variable.not.found=Workflow variable not found
workflow.variable.type.invalid=Invalid workflow variable type
workflow.variable.serialize.error=Workflow variable serialization failed: {0}
workflow.variable.deserialize.error=Workflow variable deserialization failed: {0}
workflow.permission.denied=Permission denied to operate workflow
workflow.approval.required=Approval required
workflow.approval.rejected=Approval rejected
workflow.dependency.not.satisfied=Workflow dependency not satisfied
workflow.circular.dependency=Circular dependency detected in workflow
workflow.schedule.invalid=Invalid workflow schedule configuration
workflow.concurrent.limit.exceeded=Workflow concurrent limit exceeded
workflow.execution.error=Workflow execution error

# Form Management Related (2800-2899)
form.definition.not.found=Form definition not found or has been deleted
form.data.not.found=Form data not found or has been deleted
form.definition.key.exists=Form key {0} already exists, please use a different key
form.definition.key.version.exists=Form key {0} version {1} already exists

# Deploy related error codes (3000-3099)
deploy.config.not.found=Deployment configuration not found
deploy.approval.config.missing=Approval policy not configured, cannot execute deployment
deploy.approver.not.configured=Approval required for this environment, but no approvers configured
deploy.notification.config.missing=Notification channel not configured, cannot send deployment notifications
deploy.jenkins.config.missing=Jenkins build job not configured, cannot execute deployment
deploy.workflow.not.configured=Application deployment workflow not configured
deploy.environment.config.missing=Team environment configuration not found: teamId={0}, environmentId={1}
deploy.application.not.configured=Application not configured for this environment
deploy.already.running=Application deployment already in progress, please wait
deploy.permission.denied=No permission to deploy application in this environment
deploy.environment.locked=Environment is locked, deployment prohibited
deploy.approval.required=Approval required for deployment in this environment
deploy.record.not.found=Deployment record not found

# Notification Template Related (3100-3119)
notification.template.not.found=Notification template not found or has been deleted
notification.template.code.exists=Template code {0} already exists
notification.template.disabled=Notification template is disabled
notification.template.render.error=Template rendering failed: {0}

# Notification Channel Related (3120-3139)
notification.channel.not.found=Notification channel not found or has been deleted
notification.channel.disabled=Notification channel is disabled
notification.channel.config.error=Notification channel configuration error: {0}
notification.send.failed=Notification send failed: {0}

# Jenkins Integration Related (3200-3219)
jenkins.server.not.found=Jenkins server not found: {0}
jenkins.connection.failed=Unable to connect to Jenkins server: {0}
jenkins.auth.failed=Jenkins authentication failed, please check credentials: {0}
jenkins.job.not.found=Jenkins job not found: {0}
jenkins.server.error=Jenkins server error: HTTP {0}
jenkins.queue.timeout=Jenkins build queue timeout, waited more than {0} seconds
jenkins.build.timeout=Jenkins build timeout: job={0}, buildNumber={1}, timeout {2} minutes
jenkins.api.error=Jenkins API call failed: HTTP {0}, {1}
jenkins.response.parse.error=Jenkins response parse error: {0}

# Team Application Related (2920-2939)
team.application.already.exists=Application already configured for this environment
team.application.deploy.job.exists=This Jenkins Job is already used by another application in this environment, please check the configuration
