@@ -523,6 +523,36 @@ export class SidebarProvider implements vscode.WebviewViewProvider {
523523 }
524524
525525 private async _handleCopyBlueprintPrompt ( platform : string , projectDir : string = "" ) : Promise < void > {
526+ const platformNames : Record < string , string > = {
527+ web : "Web" ,
528+ miniprogram : "微信小程序" ,
529+ android : "Android/Flutter" ,
530+ desktop : "Windows桌面" ,
531+ ios : "iOS/SwiftUI" ,
532+ } ;
533+ const pName = platformNames [ platform ] || "Web" ;
534+
535+ const lines : string [ ] = [ ] ;
536+ if ( projectDir ) {
537+ lines . push ( `当前项目路径:${ projectDir . replace ( / \\ / g, "/" ) } ` ) ;
538+ lines . push ( `请直接读取该目录下的源代码生成蓝本,无需再次询问项目路径。` ) ;
539+ lines . push ( `` ) ;
540+ }
541+ lines . push ( `请为当前【${ pName } 】项目生成测试蓝本。` ) ;
542+ lines . push ( `` ) ;
543+ lines . push ( `⚠️ 生成前请先按顺序完成以下步骤(缺一不可):` ) ;
544+ lines . push ( `1. 阅读 AGENTS.md(蓝本通用规则)` ) ;
545+ lines . push ( `2. 阅读 .testpilot/platforms/${ platform } .md(${ pName } 平台专属规则、选择器规范和完整模板)` ) ;
546+ lines . push ( `3. 通读项目源代码,确认已实现的功能列表` ) ;
547+ lines . push ( `4. 按规则要求生成完整蓝本,保存到 testpilot/ 目录` ) ;
548+
549+ const prompt = lines . join ( "\n" ) ;
550+ await vscode . env . clipboard . writeText ( prompt ) ;
551+ vscode . window . showInformationMessage ( `✅ ${ pName } 蓝本提示词已复制!请粘贴给编程AI,它会先读规则文件再生成蓝本。` ) ;
552+ }
553+
554+ // ── 以下为旧版长提示词备份(已废弃,改用短口令模式) ──
555+ private async _handleCopyBlueprintPrompt_LEGACY ( platform : string , projectDir : string = "" ) : Promise < void > {
526556 const commonRules = `══════ 测试设计黄金规则(必须严格遵守) ══════
527557
528558【铁律0:每个项目必须有独立蓝本】
@@ -1119,18 +1149,19 @@ ${commonRules}`;
11191149 <title>TestPilot AI</title>
11201150 <style>
11211151 :root {
1122- --bg: var(--vscode-sideBar-background);
1123- --fg: var(--vscode-sideBar-foreground);
1124- --input-bg: var(--vscode-input-background);
1125- --input-border: var(--vscode-input-border);
1126- --input-fg: var(--vscode-input-foreground);
1127- --btn-bg: var(--vscode-button-background);
1128- --btn-fg: var(--vscode-button-foreground);
1129- --btn-hover: var(--vscode-button-hoverBackground);
1152+ --bg: var(--vscode-sideBar-background, #1e1e1e);
1153+ --fg: var(--vscode-sideBar-foreground, #cccccc);
1154+ --input-bg: var(--vscode-input-background, #3c3c3c);
1155+ --input-border: var(--vscode-input-border, rgba(255,255,255,0.35));
1156+ --input-fg: var(--vscode-input-foreground, #cccccc);
1157+ --btn-bg: var(--vscode-button-background, #0e639c);
1158+ --btn-fg: var(--vscode-button-foreground, #ffffff);
1159+ --btn-hover: var(--vscode-button-hoverBackground, #1177bb);
1160+ --muted: var(--vscode-descriptionForeground, rgba(204,204,204,0.55));
11301161 --success: #4ec9b0;
11311162 --error: #f44747;
11321163 --warn: #cca700;
1133- --info: var(--vscode-descriptionForeground);
1164+ --info: var(--vscode-descriptionForeground, #9d9d9d );
11341165 }
11351166 * { margin: 0; padding: 0; box-sizing: border-box; }
11361167 body { font-family: var(--vscode-font-family); font-size: 13px; color: var(--fg); padding: 12px; }
@@ -1155,11 +1186,12 @@ ${commonRules}`;
11551186 button {
11561187 width: 100%; padding: 7px; margin-top: 8px; font-size: 13px; font-weight: 600;
11571188 background: var(--btn-bg); color: var(--btn-fg);
1158- border: none ; border-radius: 3px; cursor: pointer;
1189+ border: 1px solid rgba(255,255,255,0.55) ; border-radius: 3px; cursor: pointer;
11591190 }
1160- button:hover { background: var(--btn-hover); }
1191+ button:hover { background: var(--btn-hover); border-color: rgba(255,255,255,0.85); }
11611192 button:disabled { opacity: 0.5; cursor: not-allowed; }
1162- .btn-secondary { background: transparent; border: 1px solid var(--input-border); color: var(--fg); }
1193+ .btn-secondary { background: rgba(255,255,255,0.08); border: 1px solid rgba(255,255,255,0.6); color: var(--fg); }
1194+ .btn-secondary:hover { background: rgba(255,255,255,0.15); border-color: rgba(255,255,255,0.85); }
11631195 .btn-row { display: flex; gap: 6px; margin-top: 8px; }
11641196 .btn-row button { flex: 1; margin-top: 0; }
11651197 .btn-danger { background: var(--error); }
0 commit comments