code_repo_wiki/model/
document.rs1use serde::{Deserialize, Serialize};
2
3#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
5pub enum DocumentKind {
6 KnowledgeCard,
8 WikiPage,
10 ArchitectureOverview,
12 ProjectOverview,
18 TableOfContents,
20 ApiReference,
22 DatabaseSchema,
24}
25
26#[derive(Debug, Clone, Serialize, Deserialize)]
28pub struct WikiDocument {
29 pub title: String,
30 pub kind: DocumentKind,
31 pub content: String,
32 pub language: String,
34 pub module_path: Vec<String>,
35 pub references: Vec<Reference>,
37 pub last_updated: String,
39 pub based_on_commit: Option<String>,
48 pub fingerprint: Option<String>,
50}
51
52#[derive(Debug, Clone, Serialize, Deserialize)]
54pub struct Reference {
55 pub target_title: String,
56 pub target_path: String,
57 pub relation: String,
58}
59
60#[derive(Debug, Clone, Serialize, Deserialize)]
62pub struct KnowledgeCard {
63 pub module_name: String,
64 pub module_type: String,
65 pub summary: String,
66 pub key_entities: Vec<EntitySummary>,
67 pub dependencies: Vec<String>,
68 pub dependents: Vec<String>,
69 pub design_patterns: Vec<String>,
70 pub todo_notes: Vec<String>,
71 #[serde(default)]
73 pub related_files: Vec<String>,
74 #[serde(default)]
76 pub coding_spec: Option<String>,
77 #[serde(default)]
79 pub tech_stack: Vec<String>,
80 #[serde(default)]
82 pub architecture: Option<String>,
83 #[serde(default)]
86 pub pending_manual_edits: Vec<String>,
87 #[serde(default)]
90 pub features: Vec<String>,
91}
92
93#[derive(Debug, Clone, Serialize, Deserialize)]
95pub struct EntitySummary {
96 pub name: String,
97 pub kind: String,
98 pub visibility: String,
99 pub doc: Option<String>,
100 #[serde(default)]
103 pub source: Option<String>,
104}