private FallbackParsingStrategy createFallbackStrategy()

in doc-architect/doc-architect-core/src/main/java/com/docarchitect/core/scanner/impl/python/DjangoOrmScanner.java [365:420]


    private FallbackParsingStrategy<EntityResult> createFallbackStrategy() {
        return (file, content) -> {
            List<EntityResult> results = new ArrayList<>();

            // Check if file contains Django patterns
            if (!content.contains("class ") || !content.contains("models.")) {
                return results;
            }

            // Simple regex-based extraction for basic Django models
            java.util.regex.Pattern classPattern = java.util.regex.Pattern.compile(
                "class\\s+(\\w+)\\s*\\([^)]*models\\.Model[^)]*\\):"
            );
            java.util.regex.Matcher classMatcher = classPattern.matcher(content);

            while (classMatcher.find()) {
                String className = classMatcher.group(1);
                String tableName = toSnakeCase(className);

                // Extract simple fields using regex
                List<DataEntity.Field> fields = new ArrayList<>();

                // Add default id field
                fields.add(new DataEntity.Field(DEFAULT_PRIMARY_KEY, FIELD_AUTO, false, null));

                // Simple field pattern: field_name = models.SomeField(...)
                java.util.regex.Pattern fieldPattern = java.util.regex.Pattern.compile(
                    "(\\w+)\\s*=\\s*models\\.(\\w+Field)\\("
                );
                java.util.regex.Matcher fieldMatcher = fieldPattern.matcher(content);
                while (fieldMatcher.find()) {
                    String fieldName = fieldMatcher.group(1);
                    String fieldType = fieldMatcher.group(2);
                    if (!fieldName.startsWith("_")) {
                        String sqlType = mapDjangoFieldToSql(fieldType);
                        fields.add(new DataEntity.Field(fieldName, sqlType, true, null));
                    }
                }

                if (!fields.isEmpty()) {
                    DataEntity entity = new DataEntity(
                        className,
                        tableName,
                        ENTITY_TYPE_TABLE,
                        fields,
                        DEFAULT_PRIMARY_KEY,
                        "Django Model: " + className
                    );
                    results.add(new EntityResult(entity, List.of()));
                    log.debug("Fallback parsing found entity: {} -> {}", className, tableName);
                }
            }

            return results;
        };
    }