Documentation
¶
Overview ¶
Package browser provides browser automation for Aha! using w3pilot.
Index ¶
- Variables
- type CellConfig
- type Client
- func (c *Client) BaseURL() string
- func (c *Client) Close(ctx context.Context) error
- func (c *Client) CreateStrategicModelTemplate(ctx context.Context, productKey string, config TemplateConfig) (*CreateTemplateResult, error)
- func (c *Client) IsLoggedIn() bool
- func (c *Client) Launch(ctx context.Context) error
- func (c *Client) Login(ctx context.Context) error
- func (c *Client) NavigateTo(ctx context.Context, path string) error
- func (c *Client) Pilot() *w3pilot.Pilot
- func (c *Client) Screenshot(ctx context.Context) ([]byte, error)
- func (c *Client) Title(ctx context.Context) (string, error)
- func (c *Client) URL(ctx context.Context) (string, error)
- type Config
- type CreateTemplateResult
- type RowConfig
- type TemplateConfig
- type TemplateType
Constants ¶
This section is empty.
Variables ¶
var PredefinedTemplates = map[TemplateType]TemplateConfig{ TemplateCapabilityStack: { Name: "Capability Stack", Type: TemplateCapabilityStack, Description: "Map capabilities across layers of your technology or business stack", Rows: []RowConfig{ {Title: "Customer Experience", Columns: []CellConfig{ {Title: "Web Portal"}, {Title: "Mobile App"}, {Title: "API Gateway"}, }}, {Title: "Business Logic", Columns: []CellConfig{ {Title: "Order Management"}, {Title: "Inventory"}, {Title: "Pricing"}, }}, {Title: "Data Layer", Columns: []CellConfig{ {Title: "Customer Data"}, {Title: "Product Catalog"}, {Title: "Analytics"}, }}, {Title: "Infrastructure", Columns: []CellConfig{ {Title: "Cloud Services"}, {Title: "Security"}, {Title: "Monitoring"}, }}, }, }, TemplateMaturityModel: { Name: "Maturity Model", Type: TemplateMaturityModel, Description: "Assess maturity levels across capability dimensions", Rows: []RowConfig{ {Title: "Dimensions", Columns: []CellConfig{ {Title: "Level 1: Initial"}, {Title: "Level 2: Developing"}, {Title: "Level 3: Defined"}, {Title: "Level 4: Managed"}, {Title: "Level 5: Optimizing"}, }}, {Title: "Process", Columns: []CellConfig{ {Title: "Ad-hoc"}, {Title: "Repeatable"}, {Title: "Documented"}, {Title: "Measured"}, {Title: "Continuous"}, }}, {Title: "Technology", Columns: []CellConfig{ {Title: "Manual"}, {Title: "Assisted"}, {Title: "Automated"}, {Title: "Integrated"}, {Title: "Intelligent"}, }}, {Title: "People", Columns: []CellConfig{ {Title: "Aware"}, {Title: "Learning"}, {Title: "Competent"}, {Title: "Proficient"}, {Title: "Expert"}, }}, }, }, TemplateOpportunityPatton: { Name: "Opportunity Canvas (Patton)", Type: TemplateOpportunityPatton, Description: "Jeff Patton's Opportunity Canvas for validating product opportunities", Rows: []RowConfig{ {Title: "Problem Space", Columns: []CellConfig{ {Title: "Problems", Description: "What problems do users have?"}, {Title: "Users & Customers", Description: "Who has these problems?"}, {Title: "Solutions Today", Description: "How do they solve it now?"}, }}, {Title: "Solution Space", Columns: []CellConfig{ {Title: "Value Proposition", Description: "What's your unique value?"}, {Title: "User Value", Description: "Why will users adopt this?"}, {Title: "Business Value", Description: "Why does the business care?"}, }}, {Title: "Validation", Columns: []CellConfig{ {Title: "Assumptions", Description: "What must be true?"}, {Title: "Risks", Description: "What could go wrong?"}, {Title: "Budget & Timeline", Description: "Resources needed?"}, }}, }, }, TemplateFeatureCanvas: { Name: "Feature Canvas", Type: TemplateFeatureCanvas, Description: "Nikita Efimov's Feature Canvas for feature definition (CC BY-SA 4.0)", Rows: []RowConfig{ {Title: "Idea Statement", Columns: []CellConfig{ {Title: "Feature Idea", Description: "What is the feature?", ColSpan: 4}, }}, {Title: "Problem Area", Columns: []CellConfig{ {Title: "Situations", Description: "When/where does the problem occur?"}, {Title: "Problems", Description: "What are the user pain points?"}, {Title: "Value", Description: "What value does solving this create?"}, {Title: "Capabilities", Description: "What must the solution do?"}, }}, {Title: "Constraints", Columns: []CellConfig{ {Title: "Restrictions", Description: "What can't we do?", ColSpan: 2}, {Title: "Limitations", Description: "What resources are limited?", ColSpan: 2}, }}, }, }, TemplateBusinessModel: { Name: "Business Model Canvas", Type: TemplateBusinessModel, Description: "Osterwalder's Business Model Canvas for business design", Rows: []RowConfig{ {Title: "Partners & Activities", Columns: []CellConfig{ {Title: "Key Partners"}, {Title: "Key Activities"}, {Title: "Value Propositions", ColSpan: 2}, {Title: "Customer Relationships"}, {Title: "Customer Segments"}, }}, {Title: "Resources & Channels", Columns: []CellConfig{ {Title: "", ColSpan: 1}, {Title: "Key Resources"}, {Title: "", ColSpan: 2}, {Title: "Channels"}, {Title: "", ColSpan: 1}, }}, {Title: "Finances", Columns: []CellConfig{ {Title: "Cost Structure", ColSpan: 3}, {Title: "Revenue Streams", ColSpan: 3}, }}, }, }, TemplateLeanCanvas: { Name: "Lean Canvas", Type: TemplateLeanCanvas, Description: "Ash Maurya's Lean Canvas for startup/product validation", Rows: []RowConfig{ {Title: "Problem & Solution", Columns: []CellConfig{ {Title: "Problem", Description: "Top 3 problems"}, {Title: "Solution", Description: "Top 3 features"}, {Title: "Unique Value Proposition", ColSpan: 2}, {Title: "Unfair Advantage"}, {Title: "Customer Segments"}, }}, {Title: "Channels & Metrics", Columns: []CellConfig{ {Title: "Existing Alternatives"}, {Title: "Key Metrics"}, {Title: "High-Level Concept", ColSpan: 2}, {Title: "Channels"}, {Title: "Early Adopters"}, }}, {Title: "Finances", Columns: []CellConfig{ {Title: "Cost Structure", ColSpan: 3}, {Title: "Revenue Streams", ColSpan: 3}, }}, }, }, TemplateValueProposition: { Name: "Value Proposition Canvas", Type: TemplateValueProposition, Description: "Osterwalder's Value Proposition Canvas for product-market fit", Rows: []RowConfig{ {Title: "Customer Profile", Columns: []CellConfig{ {Title: "Customer Jobs", Description: "What are they trying to get done?"}, {Title: "Pains", Description: "What frustrates them?"}, {Title: "Gains", Description: "What outcomes do they want?"}, }}, {Title: "Value Map", Columns: []CellConfig{ {Title: "Products & Services", Description: "What do you offer?"}, {Title: "Pain Relievers", Description: "How do you address pains?"}, {Title: "Gain Creators", Description: "How do you create gains?"}, }}, }, }, TemplateOST: { Name: "Opportunity Solution Tree", Type: TemplateOST, Description: "Teresa Torres's OST for continuous discovery", Rows: []RowConfig{ {Title: "Outcome", Columns: []CellConfig{ {Title: "Desired Outcome", Description: "What metric are we trying to move?", ColSpan: 4}, }}, {Title: "Opportunities", Columns: []CellConfig{ {Title: "Opportunity 1"}, {Title: "Opportunity 2"}, {Title: "Opportunity 3"}, {Title: "Opportunity 4"}, }}, {Title: "Solutions", Columns: []CellConfig{ {Title: "Solution A"}, {Title: "Solution B"}, {Title: "Solution C"}, {Title: "Solution D"}, }}, {Title: "Experiments", Columns: []CellConfig{ {Title: "Experiment 1"}, {Title: "Experiment 2"}, {Title: "Experiment 3"}, {Title: "Experiment 4"}, }}, }, }, }
PredefinedTemplates contains ready-to-use template configurations.
Functions ¶
This section is empty.
Types ¶
type CellConfig ¶
type CellConfig struct {
Title string `json:"title"`
Description string `json:"description,omitempty"`
ColSpan int `json:"colSpan,omitempty"`
Color string `json:"color,omitempty"`
}
CellConfig defines a cell in a strategic model row.
type Client ¶
type Client struct {
// contains filtered or unexported fields
}
Client wraps w3pilot for Aha! browser automation.
func (*Client) CreateStrategicModelTemplate ¶
func (c *Client) CreateStrategicModelTemplate(ctx context.Context, productKey string, config TemplateConfig) (*CreateTemplateResult, error)
CreateStrategicModelTemplate creates a strategic model template in Aha! via browser automation.
func (*Client) IsLoggedIn ¶
IsLoggedIn returns whether the client is logged in.
func (*Client) NavigateTo ¶
NavigateTo navigates to a specific URL path within Aha.
func (*Client) Screenshot ¶
Screenshot takes a screenshot and returns PNG bytes.
type Config ¶
type Config struct {
Subdomain string
Email string
Password string
Headless bool
Timeout time.Duration
}
Config holds browser client configuration.
type CreateTemplateResult ¶
type CreateTemplateResult struct {
Success bool `json:"success"`
TemplateID string `json:"template_id,omitempty"`
URL string `json:"url,omitempty"`
Error string `json:"error,omitempty"`
Screenshot []byte `json:"screenshot,omitempty"`
}
CreateTemplateResult contains the result of creating a template.
type RowConfig ¶
type RowConfig struct {
Title string `json:"title"`
Columns []CellConfig `json:"columns"`
}
RowConfig defines a row in a strategic model.
type TemplateConfig ¶
type TemplateConfig struct {
Name string `json:"name"`
Type TemplateType `json:"type"`
Description string `json:"description"`
Rows []RowConfig `json:"rows"`
}
TemplateConfig defines a strategic model template configuration.
func GetPredefinedTemplate ¶
func GetPredefinedTemplate(templateType TemplateType) (TemplateConfig, bool)
GetPredefinedTemplate returns a predefined template by type.
func ListPredefinedTemplates ¶
func ListPredefinedTemplates() []TemplateConfig
ListPredefinedTemplates returns all available predefined templates.
type TemplateType ¶
type TemplateType string
TemplateType represents the type of strategic model template.
const ( TemplateCapabilityStack TemplateType = "capability-stack" TemplateMaturityModel TemplateType = "maturity-model" TemplateOpportunityPatton TemplateType = "opportunity-patton" TemplateFeatureCanvas TemplateType = "feature-canvas" TemplateBusinessModel TemplateType = "business-model" TemplateLeanCanvas TemplateType = "lean-canvas" TemplateValueProposition TemplateType = "value-proposition" TemplateOST TemplateType = "opportunity-solution-tree" )