build: project skeleton (Core / Host / Tests) + MCP SDK
- src/Kompas.Mcp.Core: classlib с ссылками на interop-сборки КОМПАС - src/Kompas.Mcp.Host: console, ModelContextProtocol 1.3.0 + Hosting - tests/Kompas.Mcp.Tests: xUnit, ссылка на Core - все проекты унаследовали net8.0-windows/x64 из Directory.Build.props - docs/OPEN_QUESTIONS.md: журнал спорных решений - .gitignore: добавлен .scratch/ Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
@@ -47,6 +47,9 @@ ehthumbs.db
|
|||||||
Desktop.ini
|
Desktop.ini
|
||||||
.DS_Store
|
.DS_Store
|
||||||
|
|
||||||
|
# ---- Scratch: тестовые документы КОМПАС, снимки рендера --------------------
|
||||||
|
.scratch/
|
||||||
|
|
||||||
# ============================================================================
|
# ============================================================================
|
||||||
# Большие вендорские/генерируемые артефакты — НЕ коммитим
|
# Большие вендорские/генерируемые артефакты — НЕ коммитим
|
||||||
# ============================================================================
|
# ============================================================================
|
||||||
|
|||||||
@@ -1,5 +1,16 @@
|
|||||||
<Solution>
|
<Solution>
|
||||||
<Folder Name="/src/">
|
<Folder Name="/src/">
|
||||||
<Project Path="src/Kompas.Mcp.ConnectSpike/Kompas.Mcp.ConnectSpike.csproj" />
|
<Project Path="src/Kompas.Mcp.ConnectSpike/Kompas.Mcp.ConnectSpike.csproj" />
|
||||||
|
<Project Path="src/Kompas.Mcp.Core/Kompas.Mcp.Core.csproj">
|
||||||
|
<Platform Project="x64" />
|
||||||
|
</Project>
|
||||||
|
<Project Path="src/Kompas.Mcp.Host/Kompas.Mcp.Host.csproj">
|
||||||
|
<Platform Project="x64" />
|
||||||
|
</Project>
|
||||||
|
</Folder>
|
||||||
|
<Folder Name="/tests/">
|
||||||
|
<Project Path="tests/Kompas.Mcp.Tests/Kompas.Mcp.Tests.csproj">
|
||||||
|
<Platform Project="x64" />
|
||||||
|
</Project>
|
||||||
</Folder>
|
</Folder>
|
||||||
</Solution>
|
</Solution>
|
||||||
|
|||||||
@@ -0,0 +1,33 @@
|
|||||||
|
# Открытые вопросы для проработки
|
||||||
|
|
||||||
|
Журнал спорных моментов и решений, принятых автономно (ночная сессия 2026-05-25/26).
|
||||||
|
Помечено: ⚠️ = требует вашего решения; ✅ = решено по умолчанию, можно пересмотреть.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## ⚠️ 1. API5 vs API7 для построения 3D
|
||||||
|
**Контекст.** Примеры SDK строят 3D через **API5** (`ksPart.NewEntity(o3d_*)` →
|
||||||
|
`ksBossExtrusionDefinition` → `Create()`). API7 предлагает `IPart7` → `IModelContainer` →
|
||||||
|
`IExtrusions.Add()`.
|
||||||
|
**Решение по умолчанию (✅ в коде):** в v1 строю 3D через **API5 `ksPart`** (надёжно, повторяет
|
||||||
|
рабочие примеры Step3d1). API7 использую для приложения/документов/версии.
|
||||||
|
**На проработку:** переводить ли операции на чистый API7 позже (плюс — единообразие, минус — риск).
|
||||||
|
|
||||||
|
## ✅ 2. Точка входа подключения — API5
|
||||||
|
Для построения 3D нужен `KompasObject` (API5), а для снимка — `ksDocument3D` (API5).
|
||||||
|
Поэтому `KompasSession` подключается через `KOMPAS.Application.5` → `KompasObject`, затем
|
||||||
|
`ksGetApplication7()` → `IApplication`. Держит обе ссылки. (Ранее в спайке заходили через `.7`.)
|
||||||
|
|
||||||
|
## ✅ 3. Состав проектов v1
|
||||||
|
Вместо 4 проектов (Host/Tools/Core/Interop) сделано компактно: **Core** (COM + сервисы) +
|
||||||
|
**Host** (MCP + определения инструментов) + **Tests**. Interop — вендорские DLL в `libs/`.
|
||||||
|
Разнести на больше проектов можно позже.
|
||||||
|
|
||||||
|
## ✅ 4. Тестовые артефакты
|
||||||
|
Тестовые документы КОМПАС сохраняю в `.scratch/` (gitignore). Снимки рендера — туда же,
|
||||||
|
для визуальной проверки.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Журнал решений по ходу
|
||||||
|
(дополняется автоматически во время работы)
|
||||||
@@ -0,0 +1,33 @@
|
|||||||
|
<Project Sdk="Microsoft.NET.Sdk">
|
||||||
|
|
||||||
|
<!-- TargetFramework (net8.0-windows) и общие свойства — из Directory.Build.props. -->
|
||||||
|
<PropertyGroup>
|
||||||
|
<RootNamespace>Kompas.Mcp.Core</RootNamespace>
|
||||||
|
<AssemblyName>Kompas.Mcp.Core</AssemblyName>
|
||||||
|
</PropertyGroup>
|
||||||
|
|
||||||
|
<!-- Вендорские interop-сборки КОМПАС (libs/kompas-interop). -->
|
||||||
|
<ItemGroup>
|
||||||
|
<Reference Include="KompasAPI7">
|
||||||
|
<HintPath>$(KompasInteropDir)\KompasAPI7.dll</HintPath>
|
||||||
|
<Private>true</Private>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="Kompas6API5">
|
||||||
|
<HintPath>$(KompasInteropDir)\Kompas6API5.dll</HintPath>
|
||||||
|
<Private>true</Private>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="Kompas6Constants">
|
||||||
|
<HintPath>$(KompasInteropDir)\Kompas6Constants.dll</HintPath>
|
||||||
|
<Private>true</Private>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="Kompas6Constants3D">
|
||||||
|
<HintPath>$(KompasInteropDir)\Kompas6Constants3D.dll</HintPath>
|
||||||
|
<Private>true</Private>
|
||||||
|
</Reference>
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<PackageReference Include="Microsoft.Extensions.Logging.Abstractions" Version="8.0.2" />
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
|
</Project>
|
||||||
@@ -0,0 +1,19 @@
|
|||||||
|
<Project Sdk="Microsoft.NET.Sdk">
|
||||||
|
|
||||||
|
<!-- TargetFramework (net8.0-windows) и общие свойства — из Directory.Build.props. -->
|
||||||
|
<PropertyGroup>
|
||||||
|
<OutputType>Exe</OutputType>
|
||||||
|
<AssemblyName>kompas-mcp</AssemblyName>
|
||||||
|
<RootNamespace>Kompas.Mcp.Host</RootNamespace>
|
||||||
|
</PropertyGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<PackageReference Include="ModelContextProtocol" Version="1.3.0" />
|
||||||
|
<PackageReference Include="Microsoft.Extensions.Hosting" Version="8.0.1" />
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<ProjectReference Include="..\Kompas.Mcp.Core\Kompas.Mcp.Core.csproj" />
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
|
</Project>
|
||||||
@@ -0,0 +1,2 @@
|
|||||||
|
// See https://aka.ms/new-console-template for more information
|
||||||
|
Console.WriteLine("Hello, World!");
|
||||||
@@ -0,0 +1,24 @@
|
|||||||
|
<Project Sdk="Microsoft.NET.Sdk">
|
||||||
|
|
||||||
|
<!-- TargetFramework (net8.0-windows) и общие свойства — из Directory.Build.props. -->
|
||||||
|
<PropertyGroup>
|
||||||
|
<IsPackable>false</IsPackable>
|
||||||
|
<RootNamespace>Kompas.Mcp.Tests</RootNamespace>
|
||||||
|
</PropertyGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<PackageReference Include="coverlet.collector" Version="6.0.4" />
|
||||||
|
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.14.1" />
|
||||||
|
<PackageReference Include="xunit" Version="2.9.3" />
|
||||||
|
<PackageReference Include="xunit.runner.visualstudio" Version="3.1.4" />
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<Using Include="Xunit" />
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<ProjectReference Include="..\..\src\Kompas.Mcp.Core\Kompas.Mcp.Core.csproj" />
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
|
</Project>
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
namespace Kompas.Mcp.Tests;
|
||||||
|
|
||||||
|
public class UnitTest1
|
||||||
|
{
|
||||||
|
[Fact]
|
||||||
|
public void Test1()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user