docs: consolidate documentation into organized structure

- Move 12 markdown files from root to docs/ subdirectories
- Organize documentation by category:
  • docs/troubleshooting/ (1 file)  - Technical troubleshooting guides
  • docs/deployment/      (4 files) - Deployment and security documentation
  • docs/guides/          (3 files) - Feature-specific guides
  • docs/planning/        (4 files) - Planning and improvement proposals

Root directory cleanup:
- Reduced from 16 to 4 markdown files in root
- Only essential project files remain:
  • CLAUDE.md (AI instructions)
  • README.md (Main project readme)
  • CLEANUP_PLAN.md (Current cleanup plan)
  • SRC_STRUCTURE_IMPROVEMENTS.md (Structure improvements)

This improves:
 Documentation discoverability
 Logical organization by purpose
 Clean root directory
 Better maintainability
This commit is contained in:
2025-10-05 11:05:04 +02:00
parent 887847dde6
commit 5050c7d73a
36686 changed files with 196456 additions and 12398919 deletions

View File

@@ -0,0 +1,46 @@
<?php
declare(strict_types=1);
namespace App\Application\SmartLink\Api;
use App\Domain\SmartLink\Entities\GeoRoutingRule;
use App\Domain\SmartLink\Repositories\GeoRoutingRuleRepository;
use App\Domain\SmartLink\ValueObjects\SmartLinkId;
use App\Framework\Attributes\Route;
use App\Framework\Core\ValueObjects\CountryCode;
use App\Framework\Http\HttpRequest;
use App\Framework\Http\Method;
use App\Framework\Http\Status;
use App\Framework\Router\Result\JsonResult;
final readonly class CreateGeoRoutingRule
{
public function __construct(
private GeoRoutingRuleRepository $geoRoutingRuleRepository
) {}
#[Route(path: '/api/smartlinks/{linkId}/geo-rules', method: Method::POST)]
public function __invoke(HttpRequest $request, string $linkId): JsonResult
{
$data = $request->parsedBody->toArray();
$geoRule = GeoRoutingRule::create(
linkId: SmartLinkId::fromString($linkId),
countryCode: CountryCode::fromString($data['country_code']),
destinationId: $data['destination_id'],
priority: $data['priority'] ?? 0
);
$this->geoRoutingRuleRepository->save($geoRule);
return new JsonResult([
'id' => $geoRule->id->toString(),
'link_id' => $geoRule->linkId->toString(),
'country_code' => $geoRule->countryCode->toString(),
'destination_id' => $geoRule->destinationId,
'priority' => $geoRule->priority,
'created_at' => $geoRule->createdAt->format('Y-m-d H:i:s')
], Status::CREATED);
}
}