@@ -3,15 +3,23 @@ import { BuilderContext } from 'src/build-system/context';
33import { generateFileArchPrompt } from './prompt' ;
44import { Logger } from '@nestjs/common' ;
55import { extractJsonFromMarkdown } from 'src/build-system/utils/strings' ;
6+ import { VirtualDirectory } from '../../../virtual-dir' ;
7+ import {
8+ buildDependencyGraph ,
9+ validateAgainstVirtualDirectory ,
10+ } from '../../../utils/file_generator_util' ;
611
712export class FileArchGenerateHandler implements BuildHandler < string > {
813 readonly id = 'op:FILE:ARCH' ;
914 private readonly logger : Logger = new Logger ( 'FileArchGenerateHandler' ) ;
15+ private virtualDir : VirtualDirectory ;
1016
1117 // TODO: adding page by page analysis
1218 async run ( context : BuilderContext ) : Promise < BuildResult < string > > {
1319 this . logger . log ( 'Generating File Architecture Document...' ) ;
1420
21+ this . virtualDir = context . virtualDirectory ;
22+
1523 const fileStructure = context . getNodeData ( 'op:FILE:STRUCT' ) ;
1624 // TODO: here should use datamap struct
1725 const datamapDoc = context . getNodeData ( 'op:UX:DATAMAP:DOC' ) ;
@@ -72,6 +80,14 @@ export class FileArchGenerateHandler implements BuildHandler<string> {
7280 this . logger . error ( 'File architecture JSON validation failed' ) ;
7381 continue ;
7482 }
83+ console . log ( jsonData ) ;
84+ // validate with virutual dir
85+ const { graph, nodes, fileInfos } = buildDependencyGraph ( jsonData ) ;
86+ if ( ! validateAgainstVirtualDirectory ( nodes , this . virtualDir ) ) {
87+ retry += 1 ;
88+ this . logger . error ( 'Validate Against Virtual Directory Fail !!!' ) ;
89+ continue ;
90+ }
7591
7692 successBuild = true ;
7793 } catch ( error ) {
0 commit comments