Skip to content

🎯 IMPLEMENTATION PLAN: Asset Selection (08_14)

📍 UBICACIÓN

Carpeta: 4 - INTEGRATION/08_PLUGINS/08_14_asset_selection/

🤖 PROMPT INICIAL

"Estoy en 08_14_asset_selection. Implementaré sistema de selección de assets para packaging. Leo IMPLEMENTATION_PLAN.md."

📊 FASES (2 prompts, 6-10h)

FASE 1: Packaging Configuration (3-5h)

Tareas: 1. 08_14_00_packaging_config/ 2. AssetInclusionRules.hpp/.cpp - Reglas de inclusión de assets 3. PlatformSpecificAssets.hpp/.cpp - Assets por plataforma 4. InstallerConfiguration.hpp/.cpp - Config de instalador 5. packaging_config.json - Schema JSON 6. Tests de packaging

Checklist: - [ ] Inclusion rules funcionan (wildcards, exclusions) - [ ] Platform-specific assets (Windows/macOS/Linux) - [ ] Installer config completo - [ ] JSON schema validado - [ ] Tests de packaging pasan

FASE 2: Selection Criteria (3-5h)

Tareas: 1. 08_14_01_selection_criteria/ 2. QualityTierSelector.hpp/.cpp - Draft/Pro/Ultra tiers 3. PlatformRequirements.hpp/.cpp - Requirements check 4. LicenseChecker.hpp/.cpp - License compliance 5. AssetInventory.hpp/.cpp - Inventario de assets 6. VersionTracking.hpp/.cpp - Tracking de versiones 7. Tests + Documentación

Checklist: - [ ] Quality tiers seleccionables - [ ] Platform requirements validados - [ ] License checking automático - [ ] Asset inventory completo - [ ] Version tracking funcional - [ ] Docs de uso completas


📝 DETALLES DE IMPLEMENTACIÓN

AssetInclusionRules.hpp

class AssetInclusionRules {
public:
    struct Rule {
        std::string pattern;     // "*.wav", "presets/**/*.json"
        bool include = true;      // true = include, false = exclude
        std::string platform;     // "all", "windows", "macos", "linux"
        std::string tier;         // "all", "draft", "pro", "ultra"
    };

    void addRule(const Rule& rule);
    std::vector<std::string> selectAssets(
        const std::string& basePath,
        const std::string& platform,
        const std::string& tier
    ) const;
};

QualityTierSelector.hpp

enum class QualityTier {
    Draft,   // Minimal assets, fast iteration
    Pro,     // Standard quality
    Ultra    // Maximum quality
};

class QualityTierSelector {
public:
    struct TierAssets {
        std::vector<std::string> requiredAssets;
        std::vector<std::string> optionalAssets;
        size_t estimatedSize;  // bytes
    };

    TierAssets selectAssetsForTier(
        QualityTier tier,
        const std::string& productId
    ) const;
};

packaging_config.json Schema

{
  "product": "TS_Compressor",
  "version": "1.0.0",
  "platforms": {
    "windows": {
      "installer": "NSIS",
      "assets": [
        {
          "pattern": "bin/**/*.dll",
          "tier": "all"
        },
        {
          "pattern": "presets/**/*.json",
          "tier": "all"
        }
      ]
    },
    "macos": {
      "installer": "PKG",
      "assets": [
        {
          "pattern": "*.component",
          "tier": "all"
        }
      ]
    }
  },
  "tiers": {
    "draft": {
      "include": ["bin/**", "presets/factory/*.json"],
      "exclude": ["docs/**", "samples/**"]
    },
    "pro": {
      "include": ["**"]
    },
    "ultra": {
      "include": ["**"],
      "additionalAssets": ["samples/high_quality/**"]
    }
  }
}

🎯 CRITERIOS DE ACEPTACIÓN

Packaging

  • Rules engine selecciona assets correctamente
  • Platform-specific assets separados
  • Installer config genera configs válidos
  • JSON schema completo y validado

Selection

  • Draft tier: Minimal assets (< 10MB)
  • Pro tier: Standard quality (10-50MB)
  • Ultra tier: Maximum quality (> 50MB)
  • Platform requirements chequeados automáticamente
  • License compliance garantizado

Testing

  • Tests con diferentes tiers pasan
  • Tests con diferentes platforms pasan
  • Tests de size estimation precisos (±10%)
  • No assets faltantes en packages

📦 DEPENDENCIAS

Depende de: - ✅ 08_12 (Product Catalog) - Product metadata - ✅ 08_13 (Products) - Actual products to package

Bloqueante para: - Deployment/Release process - Distribution packages


💾 COMMITS RECOMENDADOS

# Fase 1
git commit -m "feat(08_14): add packaging configuration system

- Implement AssetInclusionRules with wildcard support
- Add platform-specific asset handling
- Add installer configuration system
- Include packaging_config.json schema
- Add packaging tests"

# Fase 2
git commit -m "feat(08_14): add asset selection criteria

- Implement QualityTierSelector (Draft/Pro/Ultra)
- Add platform requirements checking
- Add license compliance checker
- Implement asset inventory system
- Add version tracking
- Complete documentation"

Estado: 📝 LISTO PARA IMPLEMENTACIÓN Estimación total: 6-10 horas (2 fases)