add stat and fix get place

This commit is contained in:
Владимир Фёдоров 2025-12-06 16:50:06 +07:00
parent dad8d1c3a2
commit 0fe8b77d12
13 changed files with 136 additions and 11 deletions

2
.vscode/launch.json vendored
View File

@ -17,7 +17,7 @@
"buildFlags": "-tags local"
},
{
"name": "Local Launch",
"name": "Launch for tests",
"type": "go",
"request": "launch",
"mode": "debug",

View File

@ -11,5 +11,9 @@
"palces",
"qrcode",
"signintech"
],
"makefile.configureOnOpen": false,
"go.testFlags": [
"-count=1",
]
}

33
.vscode/tasks.json vendored Normal file
View File

@ -0,0 +1,33 @@
{
// See https://go.microsoft.com/fwlink/?LinkId=733558
// for the documentation about the tasks.json format
"version": "2.0.0",
"tasks": [
{
"label": "Gen Config",
"type": "shell",
"isBackground": true,
"command": "make generate",
"presentation": {
"reveal": "always",
"panel": "new"
},
"problemMatcher": [
"$go"
]
},
{
"label": "Tests",
"type": "shell",
"isBackground": true,
"command": "make test",
"presentation": {
"reveal": "always",
"panel": "new"
},
"problemMatcher": [
"$go"
]
}
]
}

View File

@ -191,6 +191,8 @@ message GetGraphReq {}
message GetGraphRsp {
repeated Node nodes = 1;
repeated Edge edges = 2;
int32 countNodes = 3;
int32 countEdges = 4;
message Node {
int32 id = 1;

File diff suppressed because one or more lines are too long

View File

@ -183,7 +183,7 @@ func (s *Services) AddTeams(ctx context.Context, req *proto.AddTeamsReq) (*proto
for _, team := range teams {
res = append(res, mapTeamsToTeamFull(team))
}
return &proto.AddTeamsRsp{Teams: res}, err
return &proto.AddTeamsRsp{Teams: res}, nil
}
func (s *Services) DownloadTeamsQrCodesFile(ctx context.Context, req *proto.DownloadTeamsQrCodesFileReq) (*proto.DownloadTeamsQrCodesFileRsp, error) {
@ -218,8 +218,10 @@ func (s *Services) GetGraph(ctx context.Context, req *proto.GetGraphReq) (*proto
})
}
return &proto.GetGraphRsp{
Nodes: nodes,
Edges: edges,
Nodes: nodes,
Edges: edges,
CountNodes: int32(len(nodes)),
CountEdges: int32(len(edges)),
}, nil
}

View File

@ -87,8 +87,13 @@ func (s *StoryService) GetPlace(code string) *Place {
for _, place := range s.story.Places {
if clearCode(place.Code) == code {
re := regexp.MustCompile(`\(\[[a-zA-Zа-яА-Я\d-]+\]\)`)
place.Text = re.ReplaceAllString(place.Text, "")
return place
text := re.ReplaceAllString(place.Text, "")
return &Place{
Code: place.Code,
Name: place.Name,
Text: text,
Applications: place.Applications,
}
}
}
return &Place{

View File

@ -13,7 +13,7 @@ func TestGetApplication(t *testing.T) {
defer close()
createTeamResp, err := createTeam(client, "Тестовая команда")
assert.Nil(t, err, "запрос отправлену спешно")
assert.Nil(t, err, "запрос отправлен успешно")
team := createTeamResp.Teams[0]

View File

@ -79,3 +79,10 @@ func addAction(
_, err := client.AddAction(ctx, req)
assert.Nil(t, err, "запрос отправлен успешно")
}
func getGraph(client pb.EveningDetectiveClient) (*pb.GetGraphRsp, error) {
ctx, cancel := getContext()
defer cancel()
req := &pb.GetGraphReq{}
return client.GetGraph(ctx, req)
}

View File

@ -0,0 +1,18 @@
package tests
import (
"testing"
"github.com/stretchr/testify/assert"
)
func Test_StoryStatistics(t *testing.T) {
client, close := getClient()
defer close()
getGraphResp, err := getGraph(client)
assert.Nil(t, err, "запрос отправлен успешно")
assert.Equal(t, 5, int(getGraphResp.CountNodes))
assert.Equal(t, 3, int(getGraphResp.CountEdges))
}

View File

@ -3,8 +3,32 @@
{
"code": "Т-1",
"name": "Точка 1",
"text": "Текст точки 1",
"text": "Текст точки 1([Т-2])([Т-3])",
"applications": [{ "name": "application 1" }]
},
{
"code": "Т-2",
"name": "Точка 2",
"text": "Текст точки 2([Т-4])",
"applications": [{ "name": "application 2" }]
},
{
"code": "Т-3",
"name": "Точка 3",
"text": "Текст точки 3",
"applications": [{ "name": "application 3" }]
},
{
"code": "Т-4",
"name": "Точка 4",
"text": "Текст точки 4",
"applications": [{ "name": "application 4" }]
},
{
"code": "Т-5",
"name": "Точка 5",
"text": "Текст точки 5",
"applications": [{ "name": "application 5" }]
}
]
}

View File

@ -1290,6 +1290,8 @@ type GetGraphRsp struct {
state protoimpl.MessageState `protogen:"open.v1"`
Nodes []*GetGraphRsp_Node `protobuf:"bytes,1,rep,name=nodes,proto3" json:"nodes,omitempty"`
Edges []*GetGraphRsp_Edge `protobuf:"bytes,2,rep,name=edges,proto3" json:"edges,omitempty"`
CountNodes int32 `protobuf:"varint,3,opt,name=countNodes,proto3" json:"countNodes,omitempty"`
CountEdges int32 `protobuf:"varint,4,opt,name=countEdges,proto3" json:"countEdges,omitempty"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
}
@ -1338,6 +1340,20 @@ func (x *GetGraphRsp) GetEdges() []*GetGraphRsp_Edge {
return nil
}
func (x *GetGraphRsp) GetCountNodes() int32 {
if x != nil {
return x.CountNodes
}
return 0
}
func (x *GetGraphRsp) GetCountEdges() int32 {
if x != nil {
return x.CountEdges
}
return 0
}
type GetGraphRsp_Node struct {
state protoimpl.MessageState `protogen:"open.v1"`
Id int32 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"`
@ -1519,10 +1535,16 @@ const file_main_proto_rawDesc = "" +
"\x1bDownloadTeamsQrCodesFileReq\"5\n" +
"\x1bDownloadTeamsQrCodesFileRsp\x12\x16\n" +
"\x06result\x18\x01 \x01(\fR\x06result\"\r\n" +
"\vGetGraphReq\"\x81\x02\n" +
"\vGetGraphReq\"\xc1\x02\n" +
"\vGetGraphRsp\x12?\n" +
"\x05nodes\x18\x01 \x03(\v2).crabs.evening_detective.GetGraphRsp.NodeR\x05nodes\x12?\n" +
"\x05edges\x18\x02 \x03(\v2).crabs.evening_detective.GetGraphRsp.EdgeR\x05edges\x1a,\n" +
"\x05edges\x18\x02 \x03(\v2).crabs.evening_detective.GetGraphRsp.EdgeR\x05edges\x12\x1e\n" +
"\n" +
"countNodes\x18\x03 \x01(\x05R\n" +
"countNodes\x12\x1e\n" +
"\n" +
"countEdges\x18\x04 \x01(\x05R\n" +
"countEdges\x1a,\n" +
"\x04Node\x12\x0e\n" +
"\x02id\x18\x01 \x01(\x05R\x02id\x12\x14\n" +
"\x05label\x18\x02 \x01(\tR\x05label\x1aB\n" +

View File

@ -487,6 +487,14 @@
"items": {
"$ref": "#/definitions/GetGraphRspEdge"
}
},
"countNodes": {
"type": "integer",
"format": "int32"
},
"countEdges": {
"type": "integer",
"format": "int32"
}
}
},