v4.0.8任务和版本状态增加“已停止”
CI / verify (pull_request) Waiting to run

This commit is contained in:
2026-09-02 06:28:47 +08:00
parent bbb13cfd1a
commit a88fd6c29a
10 changed files with 44 additions and 18 deletions
@@ -0,0 +1,6 @@
-- 开发计划版本/任务增加「已停止」状态
ALTER TABLE `dev_plan_version`
MODIFY COLUMN `status` ENUM('PENDING', 'IN_PROGRESS', 'TESTING', 'RELEASED', 'STOPPED') NOT NULL DEFAULT 'PENDING';
ALTER TABLE `dev_plan_task`
MODIFY COLUMN `status` ENUM('TODO', 'IN_PROGRESS', 'DEVELOPED', 'RELEASED', 'STOPPED') NOT NULL DEFAULT 'TODO';
+2
View File
@@ -129,6 +129,7 @@ enum DevPlanTaskStatus {
IN_PROGRESS
DEVELOPED
RELEASED
STOPPED
}
enum DevPlanVersionStatus {
@@ -136,6 +137,7 @@ enum DevPlanVersionStatus {
IN_PROGRESS
TESTING
RELEASED
STOPPED
}
enum InvoiceTitleType {
@@ -28,9 +28,9 @@ const TOOL_INSTRUCTION = [
'- finance_payout · finance_withdrawal',
'- dev_plan_tasks [状态] · dev_plan_versions [版本号]',
'- dev_plan_task_create <BUG|REQUIREMENT|OPTIMIZATION> <描述>',
'- dev_plan_task_update_status <任务编号> <TODO|IN_PROGRESS|DEVELOPED|RELEASED>',
'- dev_plan_task_update_status <任务编号> <TODO|IN_PROGRESS|DEVELOPED|RELEASED|STOPPED>',
'- dev_plan_version_create <版本号>',
'- dev_plan_version_update_status <版本号> <PENDING|IN_PROGRESS|TESTING|RELEASED>',
'- dev_plan_version_update_status <版本号> <PENDING|IN_PROGRESS|TESTING|RELEASED|STOPPED>',
'- dev_plan_version_link_tasks <版本号> <任务编号1,任务编号2>',
'- server_logs [关键词] · handbook_read [关键词]',
'禁止输出 JSON、api 字段、「请稍等正在检索」等占位话术。',
@@ -117,7 +117,7 @@ export class WecomBotCapabilityService {
) {
const cmds: string[] = [];
if (wecomBotHasPermission(bot, 'dev_plan.task.create')) cmds.push('`新建任务 BUG|需求|优化 <描述>`');
if (wecomBotHasPermission(bot, 'dev_plan.task.update_status')) cmds.push('`修改任务 <编号> TODO|IN_PROGRESS|DEVELOPED|RELEASED`');
if (wecomBotHasPermission(bot, 'dev_plan.task.update_status')) cmds.push('`修改任务 <编号> TODO|IN_PROGRESS|DEVELOPED|RELEASED|STOPPED`');
lines.push('**开发任务管理**', cmds.join(' · '), '');
}
if (
@@ -1234,10 +1234,10 @@ export class WecomBotCapabilityService {
private async updateDevPlanTaskStatus(bot: WecomBotRuntimeConfig, wecomUserId: string, input: string) {
this.requirePerm(bot, 'dev_plan.task.update_status');
const trimmed = input.trim();
if (!trimmed) return '请提供任务编号和状态,格式:`修改任务 STxxx TODO|IN_PROGRESS|DEVELOPED|RELEASED`';
if (!trimmed) return '请提供任务编号和状态,格式:`修改任务 STxxx TODO|IN_PROGRESS|DEVELOPED|RELEASED|STOPPED`';
const parts = trimmed.split(/\s+/).filter(Boolean);
if (parts.length < 2) return '格式:`修改任务 <任务编号> <状态>`\n状态:TODO(待开发)· IN_PROGRESS(开发中)· DEVELOPED(已开发)· RELEASED(已上线)';
if (parts.length < 2) return '格式:`修改任务 <任务编号> <状态>`\n状态:TODO(待开发)· IN_PROGRESS(开发中)· DEVELOPED(已开发)· RELEASED(已上线)· STOPPED(已停止)';
const [taskNo, rawStatus] = parts;
const STATUS_ALIAS: Record<string, string> = {
@@ -1245,9 +1245,10 @@ export class WecomBotCapabilityService {
IN_PROGRESS: 'IN_PROGRESS', in_progress: 'IN_PROGRESS', : 'IN_PROGRESS',
DEVELOPED: 'DEVELOPED', developed: 'DEVELOPED', : 'DEVELOPED',
RELEASED: 'RELEASED', released: 'RELEASED', : 'RELEASED', 线: 'RELEASED',
STOPPED: 'STOPPED', stopped: 'STOPPED', STOPED: 'STOPPED', stoped: 'STOPPED', : 'STOPPED',
};
const status = STATUS_ALIAS[rawStatus];
if (!status) return `未知状态「${rawStatus}」。可用:TODO(待开发)/ IN_PROGRESS(开发中)/ DEVELOPED(已开发)/ RELEASED(已上线)`;
if (!status) return `未知状态「${rawStatus}」。可用:TODO(待开发)/ IN_PROGRESS(开发中)/ DEVELOPED(已开发)/ RELEASED(已上线)/ STOPPED(已停止)`;
const row = await this.prisma.devPlanTask.findFirst({ where: { taskNo } });
if (!row) return `未找到任务「${taskNo}`;
@@ -1271,7 +1272,7 @@ export class WecomBotCapabilityService {
if (!trimmed) return '请提供版本号和状态,格式:`修改版本 v3.6.0 <状态>`';
const parts = trimmed.split(/\s+/).filter(Boolean);
if (parts.length < 2) return '格式:`修改版本 <版本号> <状态>`\n状态:PENDING · IN_PROGRESS · TESTING · RELEASED';
if (parts.length < 2) return '格式:`修改版本 <版本号> <状态>`\n状态:PENDING · IN_PROGRESS · TESTING · RELEASED · STOPPED';
const [versionNo, rawStatus] = parts;
const STATUS_ALIAS: Record<string, string> = {
@@ -1279,9 +1280,10 @@ export class WecomBotCapabilityService {
IN_PROGRESS: 'IN_PROGRESS', in_progress: 'IN_PROGRESS', : 'IN_PROGRESS',
TESTING: 'TESTING', testing: 'TESTING', : 'TESTING',
RELEASED: 'RELEASED', released: 'RELEASED', : 'RELEASED',
STOPPED: 'STOPPED', stopped: 'STOPPED', STOPED: 'STOPPED', stoped: 'STOPPED', : 'STOPPED',
};
const status = STATUS_ALIAS[rawStatus];
if (!status) return `未知状态「${rawStatus}」。可用:PENDING / IN_PROGRESS / TESTING / RELEASED`;
if (!status) return `未知状态「${rawStatus}」。可用:PENDING / IN_PROGRESS / TESTING / RELEASED / STOPPED`;
const row = await this.prisma.devPlanVersion.findUnique({ where: { versionNo } });
if (!row) return `未找到版本「${versionNo}`;
@@ -826,9 +826,9 @@ export class DevPlanService {
versionStatusTimestamps(
existing.status as 'PENDING' | 'IN_PROGRESS' | 'TESTING' | 'RELEASED',
existing.status,
dto.status as 'PENDING' | 'IN_PROGRESS' | 'TESTING' | 'RELEASED',
dto.status as DevPlanVersionStatus,
{