feat: import and export tickets as CSV
Every ticket of a project can be downloaded as CSV, and a CSV exported from TaskStream or from Jira can be imported: types, statuses, priorities and people are matched by id or name, the rest falls back with a warning, and parents are rebuilt. The settings page previews an import before it creates anything. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -191,6 +191,17 @@ export interface Webhook {
|
||||
lastDelivery: WebhookDelivery | null;
|
||||
}
|
||||
|
||||
/** What an import did (or, as a preview, would do). */
|
||||
export interface ImportReport {
|
||||
format: 'taskstream' | 'jira';
|
||||
dryRun: boolean;
|
||||
rows: number;
|
||||
created: number;
|
||||
keys: string[];
|
||||
skipped: { line: number; reason?: string }[];
|
||||
warnings: { line: number; message?: string }[];
|
||||
}
|
||||
|
||||
/** The project's webhook for GitHub, Gitea or GitLab. */
|
||||
export interface GitIntegration {
|
||||
enabled: boolean;
|
||||
|
||||
@@ -6,6 +6,7 @@ import {
|
||||
Comment,
|
||||
Epic,
|
||||
GitIntegration,
|
||||
ImportReport,
|
||||
Webhook,
|
||||
WebhookDelivery,
|
||||
SavedFilter,
|
||||
@@ -133,6 +134,17 @@ export abstract class IssuesGateway {
|
||||
): Observable<CommandResult>;
|
||||
}
|
||||
|
||||
/** Tickets in and out as CSV. */
|
||||
export abstract class TransferGateway {
|
||||
abstract exportCsv(projectId: string): Observable<Blob>;
|
||||
/** `dryRun`: only tell what would be created. */
|
||||
abstract importCsv(
|
||||
projectId: string,
|
||||
file: File,
|
||||
dryRun: boolean,
|
||||
): Observable<ImportReport>;
|
||||
}
|
||||
|
||||
/** The project's outgoing webhooks (owners and admins). */
|
||||
export abstract class WebhooksGateway {
|
||||
abstract list(projectId: string): Observable<Webhook[]>;
|
||||
|
||||
Reference in New Issue
Block a user